)]}'
{
  "log": [
    {
      "commit": "a06381fec77bf88ec6c5eb6324457cb04e9ffd69",
      "tree": "0762df31cf5e20cc52705cf7960b065922eeb1f3",
      "parents": [
        "b2510b1696730307e7a388ea04132236ab45ac20"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Jun 23 11:48:40 2007 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Jun 24 12:08:53 2007 -0700"
      },
      "message": "FUTEX: Restore the dropped ERSCH fix\n\nThe return value of futex_find_get_task() needs to be -ESRCH in case\nthat the search fails.  This was part of the original futex fixes and\ngot accidentally dropped, when the futex-tidy-up patch was split out.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Stable Team \u003cstable@kernel.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7b018b2888b32284e09bba9cccb5cd2e12199feb",
      "tree": "040d543d736dffb9b548a9508a0768e041ccb203",
      "parents": [
        "266f5aa0970409bf1ebdf9fc4e65a1186eeed3c2"
      ],
      "author": {
        "name": "Tony Jones",
        "email": "tonyj@suse.de",
        "time": "Sat Jun 23 17:16:47 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Jun 24 08:59:12 2007 -0700"
      },
      "message": "audit: fix oops removing watch if audit disabled\n\nRemoving a watched file will oops if audit is disabled (auditctl -e 0).\n\nTo reproduce:\n- auditctl -e 1\n- touch /tmp/foo\n- auditctl -w /tmp/foo\n- auditctl -e 0\n- rm /tmp/foo (or mv)\n\nSigned-off-by: Tony Jones \u003ctonyj@suse.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "92c4ca5c3a5e180e9762438db235f41d192cb955",
      "tree": "814af0cfd84986f75e1e581f854eeb4f6ab42c35",
      "parents": [
        "849663430268db63a9c3c7467984e4e530ded901"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sat Jun 23 17:16:33 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Jun 24 08:59:11 2007 -0700"
      },
      "message": "sched: fix next_interval determination in idle_balance()\n\nThe intervals of domains that do not have SD_BALANCE_NEWIDLE must be\nconsidered for the calculation of the time of the next balance.  Otherwise\nwe may defer rebalancing forever.\n\nSiddha also spotted that the conversion of the balance interval\nto jiffies is missing. Fix that to.\n\nFrom: Srivatsa Vaddagiri \u003cvatsa@linux.vnet.ibm.com\u003e\n\nalso continue the loop if !(sd-\u003eflags \u0026 SD_LOAD_BALANCE).\n\nTested-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n\nIt did in fact trigger under all three of mainline, CFS, and -rt including CFS\n-- see below for a couple of emails from last Friday giving results for these\nthree on the AMD box (where it happened) and on a single-quad NUMA-Q system\n(where it did not, at least not with such severity).\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4e71e474c784dc274f28ec8bb22a5dbabc6dc7c5",
      "tree": "2a14a2d1efe99fe2a8e9c01ba851d6c28ddbef23",
      "parents": [
        "6d79af701d334777541136e914a9c0969b2ad307"
      ],
      "author": {
        "name": "Cedric Le Goater",
        "email": "clg@fr.ibm.com",
        "time": "Sat Jun 23 17:16:25 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Jun 24 08:59:10 2007 -0700"
      },
      "message": "fix refcounting of nsproxy object when unshared\n\nWhen a namespace is unshared, a refcount on the previous nsproxy is\nabusively taken, leading to a memory leak of nsproxy objects.\n\nSigned-off-by: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "58229a18994215bbfe0bcd1c99d2e039f30b076b",
      "tree": "c910efcef828d1bc5dd3e43a9575a8164504779c",
      "parents": [
        "b9bae3402572dc50a1e084c5b1ae5117918ef0f0"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Jun 21 20:45:15 2007 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jun 21 15:57:04 2007 -0700"
      },
      "message": "posix-timers: Prevent softirq starvation by small intervals and SIG_IGN\n\nposix-timers which deliver an ignored signal are currently rearmed in\nthe timer softirq: This is necessary because the timer needs to be\ndelivered again when SIG_IGN is removed. This is not a problem, when\nthe interval is reasonable.\n\nWith high resolution timers enabled one might arm a posix timer with a\nvery small interval and ignore the signal. This might lead to a\nsoftirq starvation when the interval is so small that the timer is\nrequeued onto the softirq pending list right away.\n\nThis problem was pointed out by Jan Kiszka. Thanks Jan !\n\nThe correct solution would be to stop the timer, when the signal is\nignored and rearm it when SIG_IGN is removed. Unfortunately this\nrequires modification in sigaction and involves non trivial sighand\nlocking. It\u0027s too late in the release cycle for such a change.\n\nFor now we just keep the timer running and enforce that the timer only\nfires every jiffie. This does not break anything as we keep the\noverrun counter correct. It adds a little inaccuracy to the\ntimer_gettime() interface, but...\n\nThe more complex change is necessary anyway to fix another short\ncoming of the current implementation, which I discovered while looking\nat this problem: A pending signal is discarded when SIG_IGN is set. In\ncase that a posixtimer signal is pending then it is discarded as well,\nbut when SIG_IGN is removed later nothing rearms the timer. This is\nnot new, it\u0027s that way since posix timers have been merged. So nothing\nto worry about right now.\n\nI have a working solution to fix all of this, but the impact is too\nlarge for both stable and 2.6.22. I\u0027m going to send it out for review\nin the next days.\n\nThis should go into 2.6.21.stable as well.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Jan Kiszka \u003cjan.kiszka@web.de\u003e\nCc: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nCc: Stable Team \u003cstable@kernel.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fa490cfd15d7ce0900097cc4e60cfd7a76381138",
      "tree": "37c0294ed6f6f9e0362db974c4136979a37d9ecd",
      "parents": [
        "a0f98a1cb7d27c656de450ba56efd31bdc59065e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 18 09:34:40 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jun 18 11:52:55 2007 -0700"
      },
      "message": "Fix possible runqueue lock starvation in wait_task_inactive()\n\nMiklos Szeredi reported very long pauses (several seconds, sometimes\nmore) on his T60 (with a Core2Duo) which he managed to track down to\nwait_task_inactive()\u0027s open-coded busy-loop.\n\nHe observed that an interrupt on one core tries to acquire the\nrunqueue-lock but does not succeed in doing so for a very long time -\nwhile wait_task_inactive() on the other core loops waiting for the first\ncore to deschedule a task (which it wont do while spinning in an\ninterrupt handler).\n\nThis rewrites wait_task_inactive() to do all its waiting optimistically\nwithout any locks taken at all, and then just double-check the end\nresult with the proper runqueue lock held over just a very short\nsection.  If there were races in the optimistic wait, of a preemption\nevent scheduled the process away, we simply re-synchronize, and start\nover.\n\nSo the code now looks like this:\n\n\trepeat:\n\t\t/* Unlocked, optimistic looping! */\n\t\trq \u003d task_rq(p);\n\t\twhile (task_running(rq, p))\n\t\t\tcpu_relax();\n\n\t\t/* Get the *real* values */\n\t\trq \u003d task_rq_lock(p, \u0026flags);\n\t\trunning \u003d task_running(rq, p);\n\t\tarray \u003d p-\u003earray;\n\t\ttask_rq_unlock(rq, \u0026flags);\n\n\t\t/* Check them.. */\n\t\tif (unlikely(running)) {\n\t\t\tcpu_relax();\n\t\t\tgoto repeat;\n\t\t}\n\n\t\t/* Preempted away? Yield if so.. */\n\t\tif (unlikely(array)) {\n\t\t\tyield();\n\t\t\tgoto repeat;\n\t\t}\n\nBasically, that first \"while()\" loop is done entirely without any\nlocking at all (and doesn\u0027t check for the case where the target process\nmight have been preempted away), and so it\u0027s possibly \"incorrect\", but\nwe don\u0027t really care.  Both the runqueue used, and the \"task_running()\"\ncheck might be the wrong tests, but they won\u0027t oops - they just mean\nthat we could possibly get the wrong results due to lack of locking and\nexit the loop early in the case of a race condition.\n\nSo once we\u0027ve exited the loop, we then get the proper (and careful) rq\nlock, and check the running/runnable state _safely_.  And if it turns\nout that our quick-and-dirty and unsafe loop was wrong after all, we\njust go back and try it all again.\n\n(The patch also adds a lot of comments, which is the actual bulk of it\nall, to make it more obvious why we can do these things without holding\nthe locks).\n\nThanks to Miklos for all the testing and tracking it down.\n\nTested-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a0f98a1cb7d27c656de450ba56efd31bdc59065e",
      "tree": "8ff6c211cd190aa6152e8ef4bd9f142277ed4a9f",
      "parents": [
        "4cc21505a09354ade787de368bd697a1bba3b213"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jun 17 18:37:45 2007 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jun 18 11:52:55 2007 -0700"
      },
      "message": "sched: fix SysRq-N (normalize RT tasks)\n\nGene Heskett reported the following problem while testing CFS: SysRq-N\nis not always effective in normalizing tasks back to SCHED_OTHER.\n\nThe reason for that turns out to be the following bug:\n\n - normalize_rt_tasks() uses for_each_process() to iterate through all\n   tasks in the system.  The problem is, this method does not iterate\n   through all tasks, it iterates through all thread groups.\n\nThe proper mechanism to enumerate over all threads is to use a\ndo_each_thread() + while_each_thread() loop.\n\nReported-by: Gene Heskett \u003cgene.heskett@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "caec4e8dc85e0644ec24aeb36285e1ba02da58cc",
      "tree": "c40510afdc1676f268d14ecb8bfe2ab887cf0b0f",
      "parents": [
        "bd197234b0a616c8f04f6b682326a5a24b33ca92"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Tue Jun 12 08:16:18 2007 +1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jun 18 10:18:32 2007 -0700"
      },
      "message": "Fix signalfd interaction with thread-private signals\n\nDon\u0027t let signalfd dequeue private signals off other threads (in the\ncase of things like SIGILL or SIGSEGV, trying to do so would result\nin undefined behaviour on who actually gets the signal, since they\nare force unblocked).\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bd197234b0a616c8f04f6b682326a5a24b33ca92",
      "tree": "1c31f8934b0d5472c9038c042ff27d08b52ffdc6",
      "parents": [
        "188e1f81ba31af1b65a2f3611df4c670b092bbac"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Jun 17 21:11:10 2007 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jun 18 09:48:41 2007 -0700"
      },
      "message": "Revert \"futex_requeue_pi optimization\"\n\nThis reverts commit d0aa7a70bf03b9de9e995ab272293be1f7937822.\n\nIt not only introduced user space visible changes to the futex syscall,\nit is also non-functional and there is no way to fix it proper before\nthe 2.6.22 release.\n\nThe breakage report ( http://lkml.org/lkml/2007/5/12/17 ) went\nunanswered, and unfortunately it turned out that the concept is not\nfeasible at all.  It violates the rtmutex semantics badly by introducing\na virtual owner, which hacks around the coupling of the user-space\npi_futex and the kernel internal rt_mutex representation.\n\nAt the moment the only safe option is to remove it fully as it contains\nuser-space visible changes to broken kernel code, which we do not want\nto expose in the 2.6.22 release.\n\nThe patch reverts the original patch mostly 1:1, but contains a couple\nof trivial manual cleanups which were necessary due to patches, which\ntouched the same area of code later.\n\nVerified against the glibc tests and my own PI futex tests.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nCc: Pierre Peiffer \u003cpierre.peiffer@bull.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2f41dddbbd7193fb5cdae0a24db4d378d56885fd",
      "tree": "df51902d5e2e3f8f0429349b9a6abcac201c73cc",
      "parents": [
        "b1d93de3e4633c4cbfd622a3564d8268a116a46a"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sat Jun 16 10:16:03 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Jun 16 13:16:15 2007 -0700"
      },
      "message": "swsusp: Fix userland interface\n\nFix oops caused by \u0027cat /dev/snapshot\u0027, reported by Arkadiusz Miskiewicz,\nand make it impossible to thaw tasks with the help of the swsusp userland\ninterface while there is a snapshot image ready to save.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3e903e7b1605aff88d7f89a96fab5e43081b914f",
      "tree": "ae35423c1643689f27734005f39cebe52773962d",
      "parents": [
        "d6f8bb1310d4745ff1d0c74eeacae31e2a3eeff1"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Sat Jun 16 10:16:01 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Jun 16 13:16:15 2007 -0700"
      },
      "message": "cpuset: zero malloc - fix for old cpusets\n\nThe cpuset code to present a list of tasks using a cpuset to user space could\nwrite to an array that it had kmalloc\u0027d, after a kmalloc request of zero size.\n\nThe problem was that the code didn\u0027t check for writes past the allocated end\nof the array until -after- the first write.\n\nThis is a race condition that is likely rare -- it would only show up if a\ncpuset went from being empty to having a task in it, during the brief time\nbetween the allocation and the first write.\n\nPrior to roughly 2.6.22 kernels, this was also a benign problem, because a\nzero kmalloc returned a few usable bytes anyway, and no harm was done with the\nbogus write.\n\nWith the 2.6.22 kernel changes to make issue a warning if code tries to write\nto the location returned from a zero size allocation, this problem is no\nlonger benign.  This cpuset code would occassionally trigger that warning.\n\nThe fix is trivial -- check before storing into the array, not after, whether\nthe array is big enough to hold the store.\n\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: \"Serge E. Hallyn\" \u003cserue@us.ibm.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: Kirill Korotaev \u003cdev@openvz.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Srivatsa Vaddagiri \u003cvatsa@in.ibm.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "778e9a9c3e7193ea9f434f382947155ffb59c755",
      "tree": "2ceb8c7ce1d55124982b77966dcd65cee5cc623b",
      "parents": [
        "1a539a87280b3032fd12bc93a4a82f1d8aa97ca8"
      ],
      "author": {
        "name": "Alexey Kuznetsov",
        "email": "kuznet@ms2.inr.ac.ru",
        "time": "Fri Jun 08 13:47:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jun 08 17:23:34 2007 -0700"
      },
      "message": "pi-futex: fix exit races and locking problems\n\n1. New entries can be added to tsk-\u003epi_state_list after task completed\n   exit_pi_state_list(). The result is memory leakage and deadlocks.\n\n2. handle_mm_fault() is called under spinlock. The result is obvious.\n\n3. results in self-inflicted deadlock inside glibc.\n   Sometimes futex_lock_pi returns -ESRCH, when it is not expected\n   and glibc enters to for(;;) sleep() to simulate deadlock. This problem\n   is quite obvious and I think the patch is right. Though it looks like\n   each \"if\" in futex_lock_pi() got some stupid special case \"else if\". :-)\n\n4. sometimes futex_lock_pi() returns -EDEADLK,\n   when nobody has the lock. The reason is also obvious (see comment\n   in the patch), but correct fix is far beyond my comprehension.\n   I guess someone already saw this, the chunk:\n\n                        if (rt_mutex_trylock(\u0026q.pi_state-\u003epi_mutex))\n                                ret \u003d 0;\n\n   is obviously from the same opera. But it does not work, because the\n   rtmutex is really taken at this point: wake_futex_pi() of previous\n   owner reassigned it to us. My fix works. But it looks very stupid.\n   I would think about removal of shift of ownership in wake_futex_pi()\n   and making all the work in context of process taking lock.\n\nFrom: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\nFix 1) Avoid the tasklist lock variant of the exit race fix by adding\n    an additional state transition to the exit code.\n\n    This fixes also the issue, when a task with recursive segfaults\n    is not able to release the futexes.\n\nFix 2) Cleanup the lookup_pi_state() failure path and solve the -ESRCH\n    problem finally.\n\nFix 3) Solve the fixup_pi_state_owner() problem which needs to do the fixup\n    in the lock protected section by using the in_atomic userspace access\n    functions.\n\n    This removes also the ugly lock drop / unqueue inside of fixup_pi_state()\n\nFix 4) Fix a stale lock in the error path of futex_wake_pi()\n\nAdded some error checks for verification.\n\nThe -EDEADLK problem is solved by the rtmutex fixups.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1a539a87280b3032fd12bc93a4a82f1d8aa97ca8",
      "tree": "6dea1610ba5ff54f0e3f845d83bfc68ffc162e31",
      "parents": [
        "c0d1d2bf5a28f78def7b68ca1eb5ba31aafd43a1"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Jun 08 13:46:58 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jun 08 17:23:34 2007 -0700"
      },
      "message": "rt-mutex: fix chain walk early wakeup bug\n\nAlexey Kuznetsov found some problems in the pi-futex code.\n\nOne of the root causes is:\n\nWhen a wakeup happens, we do not to stop the chain walk so we follow a not\nlonger relevant locking chain.\n\nDrop out when this happens.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Alexey Kuznetsov \u003ckuznet@ms2.inr.ac.ru\u003e\nCc: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c0d1d2bf5a28f78def7b68ca1eb5ba31aafd43a1",
      "tree": "c51260793d12005dcc244a1304193ce9898ed9cc",
      "parents": [
        "51b94d2a5a90d4800e74d7348bcde098a28f4fb3"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Jun 08 13:46:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jun 08 17:23:34 2007 -0700"
      },
      "message": "rt-mutex: fix stale return value\n\nAlexey Kuznetsov found some problems in the pi-futex code.\n\nThe major problem is a stale return value in rt_mutex_slowlock():\n\nWhen the pi chain walk returns -EDEADLK, but the waiter was woken up during\nthe phases where the locks were dropped, the rtmutex could be acquired, but\ndue to the stale return value -EDEADLK returned to the caller.\n\nReset the return value in the retry path.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Alexey Kuznetsov \u003ckuznet@ms2.inr.ac.ru\u003e\nCc: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b74d0deb968e1f85942f17080eace015ce3c332c",
      "tree": "7db612ba2931ef22ff7166f51dcb0fd1fe1d7ee1",
      "parents": [
        "8381e04b90ce9e7669a2d20aa7aaff3be910e447"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Wed Jun 06 03:59:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jun 07 08:52:15 2007 -0700"
      },
      "message": "Restrict clearing TIF_SIGPENDING\n\nThis patch should get a few birds.  It prevents sigaction calls from\nclearing TIF_SIGPENDING in other threads, which could leak -ERESTART*.\nAnd It fixes ptrace_stop not to clear it, which done at the syscall exit\nstop could leak -ERESTART*.  It probably removes the harm from signalfd,\nat least assuming it never calls dequeue_signal on kernel threads that\nmight have used block_all_signals.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Satoru Takeuchi \u003ctakeuchi_satoru@jp.fujitsu.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c1a834dc704763673df10282995257f2de93cbe9",
      "tree": "66a0bc5ffbf6732eaa5fc6f554c13b235005c4cd",
      "parents": [
        "9fcc15ec3c1c287a781a4620e52522b6186f26f6"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 01 00:47:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jun 01 08:18:30 2007 -0700"
      },
      "message": "timer stats: speedups\n\nMake timer-stats have almost zero overhead when enabled in the config but\nnot used.  (this way distros can enable it more easily)\n\nAlso update the documentation about overhead of timer_stats - it was\nwritten for the first version which had a global lock and a linear list\nwalk based lookup ;-)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: 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": "9fcc15ec3c1c287a781a4620e52522b6186f26f6",
      "tree": "86a0214fc404c0ca6e0ca283c83f22bd15aa2eb4",
      "parents": [
        "c79d9c9e9ace5eeae54f484f62fbd86bf27a344a"
      ],
      "author": {
        "name": "Bjorn Steinbrink",
        "email": "B.Steinbrink@gmx.de",
        "time": "Fri Jun 01 00:47:15 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jun 01 08:18:30 2007 -0700"
      },
      "message": "timer statistics: fix race\n\nFix two races in the timer stats lookup code.  One by ensuring that the\ninitialization of a new entry is finished upon insertion of that entry.\nThe other by cleaning up the hash table when the entries array is cleared,\nso that we don\u0027t have any \"pre-inserted\" entries.\n\nThanks to Eric Dumazet for reminding me of the memory barriers.\n\nSigned-off-by: Bjorn Steinbrink \u003cB.Steinbrink@gmx.de\u003e\nSigned-off-by: Ian Kumlien \u003cpomac@vapor.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: 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": "f0ede66fca23cfee4ee80b48298007d930f49bbe",
      "tree": "2deb9337847d472fe776d00bc4f53c7a82d0aea9",
      "parents": [
        "b9e82af823c10d8f981072e0d7c3a8a31f73e0bd"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Fri Jun 01 00:46:41 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jun 01 08:18:28 2007 -0700"
      },
      "message": "fix compat futex code for private futexes\n\nWhen the private futex support was added the compat code wasn\u0027t changed.\nThe result is that code using compat code which fail, e.g., because the\ntimeout values are not correctly passed.  The following patch should fix\nthat.\n\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\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": "7a74fc4925067c2102175baef73f9b07ab519b71",
      "tree": "652b0a4cd513ff7ce126e452b21ec7233f26bc4d",
      "parents": [
        "b927b3e2c9bc39b7eeeaca91e4cd6c3ed59f165a"
      ],
      "author": {
        "name": "Kyle McMartin",
        "email": "kyle@parisc-linux.org",
        "time": "Wed May 30 02:43:16 2007 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 30 10:51:38 2007 -0700"
      },
      "message": "fix possible null ptr deref in kallsyms_lookup\n\nugh, this function gets called by our unwinder. recursive backtrace for\nthe win... bisection to find this one was \"fun.\"\n\nSigned-off-by: Kyle McMartin \u003ckyle@parisc-linux.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "eaad084bb0f3a6259e56400cd45d061dbf040600",
      "tree": "34a5f5c3e1a849b035510ee28d5aaffd42a36dcc",
      "parents": [
        "6e98ee75c3ab99db48ecc0615c2246dc193111a9"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue May 29 23:47:39 2007 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 29 18:11:10 2007 -0700"
      },
      "message": "NOHZ: prevent multiplication overflow - stop timer for huge timeouts\n\nget_next_timer_interrupt() returns a delta of (LONG_MAX \u003e 1) in case\nthere is no timer pending. On 64 bit machines this results in a\nmultiplication overflow in tick_nohz_stop_sched_tick().\n\nReported by: Dave Miller \u003cdavem@davemloft.net\u003e\n\nMake the return value a constant and limit the return value to a 32 bit\nvalue.\n\nWhen the max timeout value is returned, we can safely stop the tick\ntimer device. The max jiffies delta results in a 12 days timeout for\nHZ\u003d1000.\n\nIn the long term the get_next_timer_interrupt() code needs to be\nreworked to return ktime instead of jiffies, but we have to wait until\nthe last users of the original NO_IDLE_HZ code are converted.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "92ea77275b5345c1300433f28689493dc4163f24",
      "tree": "8813e2453b081d700ae32b7dc6f056f2eba8ebe7",
      "parents": [
        "db2668fdbeb2e3c95ebadf95856c9e31a8a8d569"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu May 24 08:37:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu May 24 08:37:14 2007 -0700"
      },
      "message": "Fix crash with irqpoll due to the IRQF_IRQPOLL flag testing\n\nWith irqpoll enabled, trying to test the IRQF_IRQPOLL flag in the\nactions would cause a NULL pointer dereference if no action was\ninstalled (for example, the driver might have been unloaded with\ninterrupts still pending).\n\nSo be a bit more careful about testing the flag by making sure to test\nfor that case.\n\n(The actual _change_ is trivial, the patch is more than a one-liner\nbecause I rewrote the testing to also be much more readable.\n\nOriginal (discarded) bugfix by Bernhard Walle.\n\nCc: Bernhard Walle \u003cbwalle@suse.de\u003e\nTested-by: Vivek Goyal \u003cvgoyal@in.ibm.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "98d8256739f2c6c636fa2da359f5949c739ae839",
      "tree": "e2f92238779ff3012b47a8dd93d57b86b6949793",
      "parents": [
        "40acc095302aee380491df5f58d98945243468ec"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 23 13:58:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 23 20:14:15 2007 -0700"
      },
      "message": "Prevent going idle with softirq pending\n\nThe NOHZ patch contains a check for softirqs pending when a CPU goes idle.\nThe BUG is unrelated to NOHZ, it just was made visible by the NOHZ patch.\nThe BUG showed up mainly on P4 / hyperthreading enabled machines which lead\nthe investigations into the wrong direction in the first place.  The real\ncause is in cond_resched_softirq():\n\ncond_resched_softirq() is enabling softirqs without invoking the softirq\ndaemon when softirqs are pending.  This leads to the warning message in the\nNOHZ idle code:\n\nt1 runs softirq disabled code on CPU#0\ninterrupt happens, softirq is raised, but deferred (softirqs disabled)\nt1 calls cond_resched_softirq()\n\tenables softirqs via _local_bh_enable()\n\tcalls schedule()\nt2 runs\nt1 is migrated to CPU#1\nt2 is done and invokes idle()\nNOHZ detects the pending softirq\n\nFix: change _local_bh_enable() to local_bh_enable() so the softirq\ndaemon is invoked.\n\nThanks to Anant Nitya for debugging this with great patience !\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6373da1fb719f167c775c96015b0553507c34a18",
      "tree": "6695873a3a78aa9c5f82a56428ca0dc375f13877",
      "parents": [
        "c8511f94908a92337b80f0c12342b9051232054f"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Wed May 23 13:58:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 23 20:14:14 2007 -0700"
      },
      "message": "power: Fix sizeof(PAGE_SIZE) typo\n\nFix sizeof(PAGE_SIZE) typo.  It should be just PAGE_SIZE for zeroing the\nswsusp_header.\n\nSigned-off-by: OGAWA Hirofumi \u003chogawa@miraclelinux.com\u003e\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "14441960e8c27a64487e0b455b323e784f33583f",
      "tree": "bc224f965db3951edbbee7e776e334187b5a32d6",
      "parents": [
        "3fcbc72965f767bb5c4518aef754c28f45fc6147"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 23 13:57:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 23 20:14:13 2007 -0700"
      },
      "message": "simplify cleanup_workqueue_thread()\n\ncleanup_workqueue_thread() and cwq_should_stop() are overcomplicated.\n\nConvert the code to use kthread_should_stop/kthread_stop as was\nsuggested by Gautham and Srivatsa.\n\nIn particular this patch removes the (unlikely) busy-wait loop from the\nexit path, it was a temporary and ugly kludge (if not a bug).\n\nNote: the current code was designed to solve another old problem:\nwork-\u003efunc can\u0027t share locks with hotplug callbacks.  I think this could\nbe done, see\n\n\thttp://marc.info/?l\u003dlinux-kernel\u0026m\u003d116905366428633\n\nbut this needs some more complications to preserve CPU affinity of\ncwq-\u003ethread during cpu_up().  A freezer-based hotplug looks more\nappealing.\n\n[akpm@linux-foundation.org: make it more tolerant of gcc borkenness]\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Zilvinas Valinskas \u003czilvinas@wilibox.com\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Srivatsa Vaddagiri \u003cvatsa@in.ibm.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7bb44adef39ad3bda2be40bb34686bc56bd563a5",
      "tree": "1e9eecbd03877c7ac8b00a8cb1d4ae54ebec3bb1",
      "parents": [
        "3c6df2a9177c010bf811c361149069e4bfd9bb11"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Wed May 23 13:57:44 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 23 20:14:12 2007 -0700"
      },
      "message": "recalc_sigpending_tsk fixes\n\nSteve Hawkes discovered a problem where recalc_sigpending_tsk was called in\ndo_sigaction but no signal_wake_up call was made, preventing later signals\nfrom waking up blocked threads with TIF_SIGPENDING already set.\n\nIn fact, the few other calls to recalc_sigpending_tsk outside the signals\ncode are also subject to this problem in other race conditions.\n\nThis change makes recalc_sigpending_tsk private to the signals code.  It\nchanges the outside calls, as well as do_sigaction, to use the new\nrecalc_sigpending_and_wake instead.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: \u003cSteve.Hawkes@motorola.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "352823160613b65fdaa558be486720a71f75ed86",
      "tree": "772f0aa4c31c26f3c762baae41a288b72ce7dee7",
      "parents": [
        "43d4f961a87509b4ea5c1d6f02751aef360a632f"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 23 13:57:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 23 20:14:11 2007 -0700"
      },
      "message": "NOHZ: Rate limit the local softirq pending warning output\n\nThe warning in the NOHZ code, which triggers when a CPU goes idle with\nsoftirqs pending can fill up the logs quite quickly.  Rate limit the output\nuntil we found the root cause of that problem.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "72fcde966252abd17d70e4e216a0411a34523a8f",
      "tree": "26980418ed1a6d6f528ca7681f420d48e2cb7842",
      "parents": [
        "88f18ba028b5939bb6f77bd690e5ad8d01bb24cc"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 23 13:57:30 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 23 20:14:11 2007 -0700"
      },
      "message": "Ignore bogus ACPI info for offline CPUs\n\nBooting a SMP kernel with maxcpus\u003d1 on a SMP system leads to a hard hang,\nbecause ACPI ignores the maxcpus setting and sends timer broadcast info for\nthe offline CPUs.  This results in a stuck for ever call to\nsmp_call_function_single() on an offline CPU.\n\nIgnore the bogus information and print a kernel error to remind ACPI\nfolks to fix it.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "88f18ba028b5939bb6f77bd690e5ad8d01bb24cc",
      "tree": "eea3f79f5098f7b45723f842208b44f860f0fb71",
      "parents": [
        "5fcc57f2d5d558056668159f9153bf21d2c53d16"
      ],
      "author": {
        "name": "Gautham R Shenoy",
        "email": "ego@in.ibm.com",
        "time": "Wed May 23 13:57:29 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 23 20:14:11 2007 -0700"
      },
      "message": "freezer: move frozen_process() to kernel/power/process.c\n\nOther than refrigerator, no one else calls frozen_process().  So move it from\ninclude/linux/freezer.h to kernel/power/process.c.\n\nAlso, since a task can be marked as frozen by itself, we don\u0027t need to pass\nthe (struct task_struct *p) parameter to frozen_process().\n\nSigned-off-by: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a076e4bca2fdabb9e45d86722cc72c0944da5f94",
      "tree": "b11684f4b39dabb84584773f1b7811b5207e7f01",
      "parents": [
        "49b12d4f5e274517b8bc032d507abf31cc2f4150"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 23 13:57:27 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 23 20:14:11 2007 -0700"
      },
      "message": "freezer: fix kthread_create vs freezer theoretical race\n\nkthread() sleeps in TASK_INTERRUPTIBLE state waiting for the first wakeup.  In\ntheory, this wakeup may come from freeze_process()-\u003esignal_wake_up(), so the\ntask can disappear even before kthread_create() sets its -\u003ecomm.\n\nChange kthread() to use TASK_UNINTERRUPTIBLE.\n\n[akpm@linux-foundation.org: s/BUG_ON/WARN_ON+recover]\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "49b12d4f5e274517b8bc032d507abf31cc2f4150",
      "tree": "4663d224a86ea848742716f6f4ec708e9a3c04b3",
      "parents": [
        "ba96a0c88098697a63e80157718b7440414ed24d"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed May 23 13:57:26 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 23 20:14:11 2007 -0700"
      },
      "message": "freezer: take kernel_execve into consideration\n\nKernel threads can become userland processes by calling kernel_execve().\n\nIn particular, this may happen right after the try_to_freeze_tasks()\ncalled with FREEZER_USER_SPACE has returned, so try_to_freeze_tasks()\nneeds to take userspace processes into consideration even if it is\ncalled with FREEZER_KERNEL_THREADS.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ba96a0c88098697a63e80157718b7440414ed24d",
      "tree": "bdd999761eed452cc162f5b63166d1014aaf2e3e",
      "parents": [
        "33e1c288da62a6a5aa9077a6b7bfa690b1b02cf4"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed May 23 13:57:25 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 23 20:14:11 2007 -0700"
      },
      "message": "freezer: fix vfork problem\n\nCurrently try_to_freeze_tasks() has to wait until all of the vforked processes\nexit and for this reason every user can make it fail.  To fix this problem we\ncan introduce the additional process flag PF_FREEZER_SKIP to be used by tasks\nthat do not want to be counted as freezable by the freezer and want to have\nTIF_FREEZE set nevertheless.  Then, this flag can be set by tasks using\nsys_vfork() before they call wait_for_completion(\u0026vfork) and cleared after\nthey have woken up.  After clearing it, the tasks should call try_to_freeze()\nas soon as possible.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "33e1c288da62a6a5aa9077a6b7bfa690b1b02cf4",
      "tree": "68837483316db1fa08bcb2b444cabae75d31a5b2",
      "parents": [
        "585a2858b970cb6e2e5ca4877eefd18b4dba8ed4"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed May 23 13:57:24 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 23 20:14:10 2007 -0700"
      },
      "message": "freezer: close potential race between refrigerator and thaw_tasks\n\nIf the freezing of tasks fails and a task is preempted in refrigerator()\nbefore calling frozen_process(), then thaw_tasks() may run before this task is\nfrozen.  In that case the task will freeze and no one will thaw it.\n\nTo fix this race we can call freezing(current) in refrigerator() along with\nfrozen_process(current) under the task_lock() which also should be taken in\nthe error path of try_to_freeze_tasks() as well as in thaw_process().\nMoreover, if thaw_process() additionally clears TIF_FREEZE for tasks that are\nnot frozen, we can be sure that all tasks are thawed and there are no pending\n\"freeze\" requests after thaw_tasks() has run.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e8edc6e03a5c8562dc70a6d969f732bdb355a7e7",
      "tree": "fc86c863655128a7041dfe613d14393d761fa7b9",
      "parents": [
        "ff1be9ad61e3e17ba83702d8ed0b534e5b8ee15c"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon May 21 01:22:52 2007 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 21 09:18:19 2007 -0700"
      },
      "message": "Detach sched.h from mm.h\n\nFirst thing mm.h does is including sched.h solely for can_do_mlock() inline\nfunction which has \"current\" dereference inside. By dealing with can_do_mlock()\nmm.h can be detached from sched.h which is good. See below, why.\n\nThis patch\na) removes unconditional inclusion of sched.h from mm.h\nb) makes can_do_mlock() normal function in mm/mlock.c\nc) exports can_do_mlock() to not break compilation\nd) adds sched.h inclusions back to files that were getting it indirectly.\ne) adds less bloated headers to some files (asm/signal.h, jiffies.h) that were\n   getting them indirectly\n\nNet result is:\na) mm.h users would get less code to open, read, preprocess, parse, ... if\n   they don\u0027t need sched.h\nb) sched.h stops being dependency for significant number of files:\n   on x86_64 allmodconfig touching sched.h results in recompile of 4083 files,\n   after patch it\u0027s only 3744 (-8.3%).\n\nCross-compile tested on\n\n\tall arm defconfigs, all mips defconfigs, all powerpc defconfigs,\n\talpha alpha-up\n\tarm\n\ti386 i386-up i386-defconfig i386-allnoconfig\n\tia64 ia64-up\n\tm68k\n\tmips\n\tparisc parisc-up\n\tpowerpc powerpc-up\n\ts390 s390-up\n\tsparc sparc-up\n\tsparc64 sparc64-up\n\tum-x86_64\n\tx86_64 x86_64-up x86_64-defconfig x86_64-allnoconfig\n\nas well as my two usual configs.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8d98a690f58e0d6ecf424b7ca84488475cf87bd9",
      "tree": "09adca50773f465b75fc04682377bfaa40c72876",
      "parents": [
        "7925409e202a41176b729671eab6e610a54153cd"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed May 16 22:11:19 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu May 17 05:23:05 2007 -0700"
      },
      "message": "swsusp: fix sysfs interface\n\nThe sysfs files /sys/power/disk and /sys/power/state do not work as\ndocumented, since they allow the user to write only a few initial\ncharacters of the input string to trigger the option (eg.  \u0027echo pl \u003e\n/sys/power/disk\u0027 activates the platform mode of hibernation).  Fix it.\n\nSpecial thanks to Peter Moulder \u003cPeter.Moulder@infotech.monash.edu.au\u003e for\npointing out the problem.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "71ce92f3fa442069670a52fa6230a6064c4517b3",
      "tree": "30fec3491b9655040d90c810785ce7e843a90f93",
      "parents": [
        "bc88d5d4e18add7283770ead2734b601c50b3e2a"
      ],
      "author": {
        "name": "Dan Aloni",
        "email": "da-x@monatomic.org",
        "time": "Wed May 16 22:11:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu May 17 05:23:05 2007 -0700"
      },
      "message": "make sysctl/kernel/core_pattern and fs/exec.c agree on maximum core filename size\n\nMake sysctl/kernel/core_pattern and fs/exec.c agree on maximum core\nfilename size and change it to 128, so that extensive patterns such as\n\u0027/local/cores/%e-%h-%s-%t-%p.core\u0027 won\u0027t result in truncated filename\ngeneration.\n\nSigned-off-by: Dan Aloni \u003cda-x@monatomic.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a35afb830f8d71ec211531aeb9a621b09a2efb39",
      "tree": "198280081e1f8b2f6c450742a5075cc7904a3d58",
      "parents": [
        "5577bd8a85c8b7643a241789b14fafa9c8a6c7db"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 16 22:10:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu May 17 05:23:04 2007 -0700"
      },
      "message": "Remove SLAB_CTOR_CONSTRUCTOR\n\nSLAB_CTOR_CONSTRUCTOR is always specified. No point in checking it.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nCc: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Dave Kleikamp \u003cshaggy@austin.ibm.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nCc: David Chinner \u003cdgc@sgi.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "52ade9b3b97fd3bea42842a056fe0786c28d0555",
      "tree": "70ae152f573b5d0f5078e2506830c3b804ab6816",
      "parents": [
        "7b104bcb8e460e45a1aebe3da9b86aacdb4cab12"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 16 15:28:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 16 15:33:19 2007 -0700"
      },
      "message": "Fix ACPI suspend / device suspend ordering problem\n\nIn commit e3c7db621bed4afb8e231cb005057f2feb5db557 we fixed the resume\nordering, so that the ACPI low-level resume code was called before the\nactual driver resume was called. However, that broke the nesting logic\nof suspend and resume, and we continued to suspend the devices _after_\nwe the ACPI device suspend code was called.\n\nThat resulted in us saving PCI state for devices that had already been\nchanged by ACPI, and in some cases disabled entirely (causing the PCI\nsave_state to be all-ones).  Which in turn caused the wrong state to be\nwritten back on resume.\n\nThis moves the ACPI device suspend to after the device model per-device\nsuspend() calls. This fixes the bogus state save.\n\nThanks to Lukáš Hejtmánek for testing.\n\nAcked-by: Lukas Hejtmanek \u003cxhejtman@ics.muni.cz\u003e\nAcked-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Len Brown \u003clen.brown@intel.com\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "327b9eebbf2b7ce632e93a9c1386d944af0dadf4",
      "tree": "00e790015e0f2b37527e866c1ff6e90ea44d15f9",
      "parents": [
        "b4e1ded3cf6e13c122f019532cb60347d6c88c8c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Tue May 15 20:37:10 2007 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 15 18:56:37 2007 -0700"
      },
      "message": "audit_match_signal() and friends are used only if CONFIG_AUDITSYSCALL is set\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8f89441b37536fea92b1ed7004e5e2dda011473d",
      "tree": "7587c859ea62fb3905613fc4265a8120b5384516",
      "parents": [
        "3c46bdcaec53eda069a8a9cd60621c7431aa7842"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue May 15 01:41:32 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 15 08:54:00 2007 -0700"
      },
      "message": "clocksource: fix lock order in the resume path\n\nlockdep complains about the lock nesting of clocksource and watchdog lock\nin the resume path.\n\nChange the resume marker to a bit operation and remove the lock from this\npath.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d10ff3fb62bd38415c0f7be3d75d107e1f67e59a",
      "tree": "402df109059cb64f88fb26c0cf5eb86b8c9fdae3",
      "parents": [
        "705962ccc9d21a08b74b6b6e1d3cf10f98968a67"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon May 14 11:10:02 2007 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 14 12:13:11 2007 -0700"
      },
      "message": "timekeeping fix patch got mis-applied\n\nThe time keeping code move to kernel/time/timekeeping.c broke the\nclocksource resume logic patch, which got applied to the old file by a\nfuzzy application.  Fix it up and move the clocksource_resume() call to\nthe appropriate place.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n[ tssk, tssk, everybody should use --fuzz\u003d0 ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8df767dd759c1390f604814ee5b2d1489f9a59f7",
      "tree": "438fdca637bc0e07e9e86b7f2bbf68a9eed05435",
      "parents": [
        "10fb62e5b72c2485c3e0efd8b103254c0d087676"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Sat May 12 10:37:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat May 12 10:55:40 2007 -0700"
      },
      "message": "compat signalfd and timerfd are cond syscalls\n\nAdd missing cond_syscall statements for compat_sys_signalfd and\ncompat_sys_timerfd.\n\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2a383c63ff933a496f19d6559ab54ac14871b7f3",
      "tree": "b0f4a4fbc4d882c7fea7c6b8f69924284abff76d",
      "parents": [
        "8bd994815987dda0947bd9afd887b1410713d4f7",
        "2bd62a40f63bd628c43a2f3637b252d0967659b0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 11 12:53:21 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 11 12:53:21 2007 -0700"
      },
      "message": "Merge branch \u0027release\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6\n\n* \u0027release\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:\n  [IA64] Quicklist support for IA64\n  [IA64] fix Kprobes reentrancy\n  [IA64] SN: validate smp_affinity mask on intr redirect\n  [IA64] drivers/char/snsc_event.c:206: warning: unused variable `p\u0027\n  [IA64] mca.c:121: warning: \u0027cpe_poll_timer\u0027 defined but not used\n  [IA64] Fix - Section mismatch: reference to .init.data:mvec_name\n  [IA64] more warning cleanups\n  [IA64] Wire up epoll_pwait and utimensat\n  [IA64] Fix warnings resulting from type-checking in dev_dbg()\n  [IA64] typo s/kenrel/kernel/\n"
    },
    {
      "commit": "853da0022023c046e0a5ccc51d427745f0c94de7",
      "tree": "bc36f80f00aa11c3c239a80ecf04ba8238219ce8",
      "parents": [
        "5884c40668a928bba017eaf54e2eb3c01c8a98e6",
        "0a4ff8c2598b72f2fa9d50aae9e1809e684dbf41"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 11 09:57:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 11 09:57:16 2007 -0700"
      },
      "message": "Merge branch \u0027audit.b38\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current\n\n* \u0027audit.b38\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current:\n  [PATCH] Abnormal End of Processes\n  [PATCH] match audit name data\n  [PATCH] complete message queue auditing\n  [PATCH] audit inode for all xattr syscalls\n  [PATCH] initialize name osid\n  [PATCH] audit signal recipients\n  [PATCH] add SIGNAL syscall class (v3)\n  [PATCH] auditing ptrace\n"
    },
    {
      "commit": "25d61578daae697c4a0eb817f42a868af9824f82",
      "tree": "ec4ac10132f0b12a822dba6a53d05bab78ec3760",
      "parents": [
        "3e3d32770204ea24cf71919a90d9ccfc2bd407dd"
      ],
      "author": {
        "name": "John Keller",
        "email": "jpk@sgi.com",
        "time": "Thu May 10 22:42:44 2007 -0700"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Fri May 11 09:35:38 2007 -0700"
      },
      "message": "[IA64] SN: validate smp_affinity mask on intr redirect\n\nOn SN, only allow one bit to be set in the smp_affinty mask when\nredirecting an interrupt.  Currently setting multiple bits is allowed, but\nonly the first bit is used in determining the CPU to redirect to.  This has\ncaused confusion among some customers.\n\n[akpm@linux-foundation.org: fixes]\nSigned-off-by: John Keller \u003cjpk@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "e1ad7468c77ddb94b0615d5f50fa255525fde0f0",
      "tree": "856be1a028fece7e1fa10b7b585096839913fe2e",
      "parents": [
        "83f5d1266926c75890f1bc4678e49d79483cb573"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Thu May 10 22:23:19 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 11 08:29:36 2007 -0700"
      },
      "message": "signal/timer/event: eventfd core\n\nThis is a very simple and light file descriptor, that can be used as event\nwait/dispatch by userspace (both wait and dispatch) and by the kernel\n(dispatch only).  It can be used instead of pipe(2) in all cases where those\nwould simply be used to signal events.  Their kernel overhead is much lower\nthan pipes, and they do not consume two fds.  When used in the kernel, it can\noffer an fd-bridge to enable, for example, functionalities like KAIO or\nsyslets/threadlets to signal to an fd the completion of certain operations.\nBut more in general, an eventfd can be used by the kernel to signal readiness,\nin a POSIX poll/select way, of interfaces that would otherwise be incompatible\nwith it.  The API is:\n\nint eventfd(unsigned int count);\n\nThe eventfd API accepts an initial \"count\" parameter, and returns an eventfd\nfd.  It supports poll(2) (POLLIN, POLLOUT, POLLERR), read(2) and write(2).\n\nThe POLLIN flag is raised when the internal counter is greater than zero.\n\nThe POLLOUT flag is raised when at least a value of \"1\" can be written to the\ninternal counter.\n\nThe POLLERR flag is raised when an overflow in the counter value is detected.\n\nThe write(2) operation can never overflow the counter, since it blocks (unless\nO_NONBLOCK is set, in which case -EAGAIN is returned).\n\nBut the eventfd_signal() function can do it, since it\u0027s supposed to not sleep\nduring its operation.\n\nThe read(2) function reads the __u64 counter value, and reset the internal\nvalue to zero.  If the value read is equal to (__u64) -1, an overflow happened\non the internal counter (due to 2^64 eventfd_signal() posts that has never\nbeen retired - unlickely, but possible).\n\nThe write(2) call writes an __u64 count value, and adds it to the current\ncounter.  The eventfd fd supports O_NONBLOCK also.\n\nOn the kernel side, we have:\n\nstruct file *eventfd_fget(int fd);\nint eventfd_signal(struct file *file, unsigned int n);\n\nThe eventfd_fget() should be called to get a struct file* from an eventfd fd\n(this is an fget() + check of f_op being an eventfd fops pointer).\n\nThe kernel can then call eventfd_signal() every time it wants to post an event\nto userspace.  The eventfd_signal() function can be called from any context.\nAn eventfd() simple test and bench is available here:\n\nhttp://www.xmailserver.org/eventfd-bench.c\n\nThis is the eventfd-based version of pipetest-4 (pipe(2) based):\n\nhttp://www.xmailserver.org/pipetest-4.c\n\nNot that performance matters much in the eventfd case, but eventfd-bench\nshows almost as double as performance than pipetest-4.\n\n[akpm@linux-foundation.org: fix i386 build]\n[akpm@linux-foundation.org: add sys_eventfd to sys_ni.c]\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "83f5d1266926c75890f1bc4678e49d79483cb573",
      "tree": "ae97719503b7fe3688413655d89772bb8b644312",
      "parents": [
        "57ac8898508638ca6d15ecd8b911a431d673ff30"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Thu May 10 22:23:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 11 08:29:36 2007 -0700"
      },
      "message": "signal/timer/event: timerfd compat code\n\nThis patch implements the necessary compat code for the timerfd system call.\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b215e283992899650c4271e7385c79e26fb9a88e",
      "tree": "3f950814510422606821f1b0b373d65e4d9ed303",
      "parents": [
        "6d18c9220965b437287c3a7e803725c24992ceac"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Thu May 10 22:23:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 11 08:29:36 2007 -0700"
      },
      "message": "signal/timer/event: timerfd core\n\nThis patch introduces a new system call for timers events delivered though\nfile descriptors.  This allows timer event to be used with standard POSIX\npoll(2), select(2) and read(2).  As a consequence of supporting the Linux\nf_op-\u003epoll subsystem, they can be used with epoll(2) too.\n\nThe system call is defined as:\n\nint timerfd(int ufd, int clockid, int flags, const struct itimerspec *utmr);\n\nThe \"ufd\" parameter allows for re-use (re-programming) of an existing timerfd\nw/out going through the close/open cycle (same as signalfd).  If \"ufd\" is -1,\ns new file descriptor will be created, otherwise the existing \"ufd\" will be\nre-programmed.\n\nThe \"clockid\" parameter is either CLOCK_MONOTONIC or CLOCK_REALTIME.  The time\nspecified in the \"utmr-\u003eit_value\" parameter is the expiry time for the timer.\n\nIf the TFD_TIMER_ABSTIME flag is set in \"flags\", this is an absolute time,\notherwise it\u0027s a relative time.\n\nIf the time specified in the \"utmr-\u003eit_interval\" is not zero (.tv_sec \u003d\u003d 0,\ntv_nsec \u003d\u003d 0), this is the period at which the following ticks should be\ngenerated.\n\nThe \"utmr-\u003eit_interval\" should be set to zero if only one tick is requested.\nSetting the \"utmr-\u003eit_value\" to zero will disable the timer, or will create a\ntimerfd without the timer enabled.\n\nThe function returns the new (or same, in case \"ufd\" is a valid timerfd\ndescriptor) file, or -1 in case of error.\n\nAs stated before, the timerfd file descriptor supports poll(2), select(2) and\nepoll(2).  When a timer event happened on the timerfd, a POLLIN mask will be\nreturned.\n\nThe read(2) call can be used, and it will return a u32 variable holding the\nnumber of \"ticks\" that happened on the interface since the last call to\nread(2).  The read(2) call supportes the O_NONBLOCK flag too, and EAGAIN will\nbe returned if no ticks happened.\n\nA quick test program, shows timerfd working correctly on my amd64 box:\n\nhttp://www.xmailserver.org/timerfd-test.c\n\n[akpm@linux-foundation.org: add sys_timerfd to sys_ni.c]\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fba2afaaec790dc5ab4ae8827972f342211bbb86",
      "tree": "2694d4cd8c6b7d69a5569b92151d61a3d4af39b7",
      "parents": [
        "5dc8bf8132d59c03fe2562bce165c2f03f021687"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Thu May 10 22:23:13 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 11 08:29:36 2007 -0700"
      },
      "message": "signal/timer/event: signalfd core\n\nThis patch series implements the new signalfd() system call.\n\nI took part of the original Linus code (and you know how badly it can be\nbroken :), and I added even more breakage ;) Signals are fetched from the same\nsignal queue used by the process, so signalfd will compete with standard\nkernel delivery in dequeue_signal().  If you want to reliably fetch signals on\nthe signalfd file, you need to block them with sigprocmask(SIG_BLOCK).  This\nseems to be working fine on my Dual Opteron machine.  I made a quick test\nprogram for it:\n\nhttp://www.xmailserver.org/signafd-test.c\n\nThe signalfd() system call implements signal delivery into a file descriptor\nreceiver.  The signalfd file descriptor if created with the following API:\n\nint signalfd(int ufd, const sigset_t *mask, size_t masksize);\n\nThe \"ufd\" parameter allows to change an existing signalfd sigmask, w/out going\nto close/create cycle (Linus idea).  Use \"ufd\" \u003d\u003d -1 if you want a brand new\nsignalfd file.\n\nThe \"mask\" allows to specify the signal mask of signals that we are interested\nin.  The \"masksize\" parameter is the size of \"mask\".\n\nThe signalfd fd supports the poll(2) and read(2) system calls.  The poll(2)\nwill return POLLIN when signals are available to be dequeued.  As a direct\nconsequence of supporting the Linux poll subsystem, the signalfd fd can use\nused together with epoll(2) too.\n\nThe read(2) system call will return a \"struct signalfd_siginfo\" structure in\nthe userspace supplied buffer.  The return value is the number of bytes copied\nin the supplied buffer, or -1 in case of error.  The read(2) call can also\nreturn 0, in case the sighand structure to which the signalfd was attached,\nhas been orphaned.  The O_NONBLOCK flag is also supported, and read(2) will\nreturn -EAGAIN in case no signal is available.\n\nIf the size of the buffer passed to read(2) is lower than sizeof(struct\nsignalfd_siginfo), -EINVAL is returned.  A read from the signalfd can also\nreturn -ERESTARTSYS in case a signal hits the process.  The format of the\nstruct signalfd_siginfo is, and the valid fields depends of the (-\u003ecode \u0026\n__SI_MASK) value, in the same way a struct siginfo would:\n\nstruct signalfd_siginfo {\n\t__u32 signo;\t/* si_signo */\n\t__s32 err;\t/* si_errno */\n\t__s32 code;\t/* si_code */\n\t__u32 pid;\t/* si_pid */\n\t__u32 uid;\t/* si_uid */\n\t__s32 fd;\t/* si_fd */\n\t__u32 tid;\t/* si_fd */\n\t__u32 band;\t/* si_band */\n\t__u32 overrun;\t/* si_overrun */\n\t__u32 trapno;\t/* si_trapno */\n\t__s32 status;\t/* si_status */\n\t__s32 svint;\t/* si_int */\n\t__u64 svptr;\t/* si_ptr */\n\t__u64 utime;\t/* si_utime */\n\t__u64 stime;\t/* si_stime */\n\t__u64 addr;\t/* si_addr */\n};\n\n[akpm@linux-foundation.org: fix signalfd_copyinfo() on i386]\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0800d30832ddecf2d9dc40068fed9df95930a8f1",
      "tree": "fa4aa77d9cd95818b4ba32ced6bbb096c19b1bfb",
      "parents": [
        "85868995d9d82de5b0de38d695559daddffef893"
      ],
      "author": {
        "name": "Sukadev Bhattiprolu",
        "email": "sukadev@us.ibm.com",
        "time": "Thu May 10 22:23:04 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 11 08:29:36 2007 -0700"
      },
      "message": "Use task_pgrp() task_session() in copy_process()\n\nUse task_pgrp() and task_session() in copy_process(), and avoid find_pid()\ncall when attaching the task to its process group and session.\n\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nCc: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: \u003ccontainers@lists.osdl.org\u003e\nAcked-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "85868995d9d82de5b0de38d695559daddffef893",
      "tree": "d66d265a14739e2c622c8e3ce507e09ffc5200fb",
      "parents": [
        "0e29b24aa6b3eb6c161cbb9e42fc20b47e67a7c6"
      ],
      "author": {
        "name": "Sukadev Bhattiprolu",
        "email": "sukadev@us.ibm.com",
        "time": "Thu May 10 22:23:03 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 11 08:29:35 2007 -0700"
      },
      "message": "Use struct pid parameter in copy_process()\n\nModify copy_process() to take a struct pid * parameter instead of a pid_t.\nThis simplifies the code a bit and also avoids having to call find_pid() to\nconvert the pid_t to a struct pid.\n\nChangelog:\n\t- Fixed Badari Pulavarty\u0027s comments and passed in \u0026init_struct_pid\n\t  from fork_idle().\n\t- Fixed Eric Biederman\u0027s comments and simplified this patch and\n\t  used a new patch to remove the likely(pid) check.\n\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nCc: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Eric Biederman \u003cebiederm@xmission.com\u003e\nCc: \u003ccontainers@lists.osdl.org\u003e\nAcked-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "820e45db2380eb1545fa2bc5d34b8b2f2933faeb",
      "tree": "426e89e9205e44559d949d9cdf8bf1035bdc3710",
      "parents": [
        "e713d0dab21a68500720e222fa02567fc7dfb14b"
      ],
      "author": {
        "name": "Sukadev Bhattiprolu",
        "email": "sukadev@us.ibm.com",
        "time": "Thu May 10 22:23:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 11 08:29:35 2007 -0700"
      },
      "message": "statically initialize struct pid for swapper\n\nStatically initialize a struct pid for the swapper process (pid_t \u003d\u003d 0) and\nattach it to init_task.  This is needed so task_pid(), task_pgrp() and\ntask_session() interfaces work on the swapper process also.\n\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nCc: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Eric Biederman \u003cebiederm@xmission.com\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: \u003ccontainers@lists.osdl.org\u003e\nAcked-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e713d0dab21a68500720e222fa02567fc7dfb14b",
      "tree": "a56f90ce94d9287b73da6db72ed0e73542a70a07",
      "parents": [
        "4ac24b3ba9016881b11646114bb5cd12cf23edd9"
      ],
      "author": {
        "name": "Sukadev Bhattiprolu",
        "email": "sukadev@us.ibm.com",
        "time": "Thu May 10 22:22:58 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 11 08:29:35 2007 -0700"
      },
      "message": "attach_pid() with struct pid parameter\n\nattach_pid() currently takes a pid_t and then uses find_pid() to find the\ncorresponding struct pid.  Sometimes we already have the struct pid.  We can\nthen skip find_pid() if attach_pid() were to take a struct pid parameter.\n\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nCc: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: \u003ccontainers@lists.osdl.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3e88c553db938ad016026375f0545304b9030b42",
      "tree": "bbf9f04dea6f70e6a93a7b26e13db4778c9f3221",
      "parents": [
        "00b8fd236764e3d5bc1d30dc65e256e283de4c3d"
      ],
      "author": {
        "name": "Daniel Walker",
        "email": "dwalker@mvista.com",
        "time": "Thu May 10 22:22:53 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 11 08:29:35 2007 -0700"
      },
      "message": "use defines in sys_getpriority/sys_setpriority\n\nSwitch to the defines for these two checks, instead of hard coding the\nvalues.\n\n[akpm@linux-foundation.org: add missing include]\nSigned-off-by: Daniel Walker \u003cdwalker@mvista.com\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": "a12bb44471b819c7f33d8a83044e7116c124e3d5",
      "tree": "cdf3fee16c535d70659fd343d11b3578941f3596",
      "parents": [
        "2d3fbbb391e280724f7f7804ab00ff61cf1b6a4c"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Thu May 10 22:22:47 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 11 08:29:34 2007 -0700"
      },
      "message": "stop_machine() now uses hard_irq_disable\n\nAdd a call to hard_irq_disable() to stop_machine so that we make sure IRQs are\nreally disabled and not only lazy-disabled on archs like powerpc as some users\nof stop_machine() may rely on that.\n\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6eaeeaba39e5fa3d52a0bb8de15e995516ae251a",
      "tree": "5b4052fabfe107ad5332cb758ad8d86ea5a87848",
      "parents": [
        "02239c29967418284c05d58971894d658575e78c"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Thu May 10 22:22:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 11 08:29:34 2007 -0700"
      },
      "message": "getrusage(): fill ru_inblock and ru_oublock fields if possible\n\nIf CONFIG_TASK_IO_ACCOUNTING is defined, we update io accounting counters for\neach task.\n\nThis patch permits reporting of values using the well known getrusage()\nsyscall, filling ru_inblock and ru_oublock instead of null values.\n\nAs TASK_IO_ACCOUNTING currently counts bytes counts, we approximate blocks\ncount doing : nr_blocks \u003d nr_bytes / 512\n\nExample of use :\n----------------------\nAfter patch is applied, /usr/bin/time command can now give a good\napproximation of IO that the process had to do.\n\n$ /usr/bin/time grep tototo /usr/include/*\nCommand exited with non-zero status 1\n0.00user 0.02system 0:02.11elapsed 1%CPU (0avgtext+0avgdata 0maxresident)k\n24288inputs+0outputs (0major+259minor)pagefaults 0swaps\n\n$ /usr/bin/time dd if\u003d/dev/zero of\u003d/tmp/testfile count\u003d1000\n1000+0 enregistrements lus\n1000+0 enregistrements écrits\n512000 octets (512 kB) copiés, 0,00326601 seconde, 157 MB/s\n0.00user 0.00system 0:00.00elapsed 80%CPU (0avgtext+0avgdata 0maxresident)k\n0inputs+3000outputs (0major+299minor)pagefaults 0swaps\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0a4ff8c2598b72f2fa9d50aae9e1809e684dbf41",
      "tree": "309f2b2b5874692302862534cd9052a1d96018ba",
      "parents": [
        "5712e88f2b0f626a4857c24128810bbf8ce09537"
      ],
      "author": {
        "name": "Steve Grubb",
        "email": "sgrubb@redhat.com",
        "time": "Thu Apr 19 10:28:21 2007 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 11 05:38:26 2007 -0400"
      },
      "message": "[PATCH] Abnormal End of Processes\n\nHi,\n\nI have been working on some code that detects abnormal events based on audit\nsystem events. One kind of event that we currently have no visibility for is\nwhen a program terminates due to segfault - which should never happen on a\nproduction machine. And if it did, you\u0027d want to investigate it. Attached is a\npatch that collects these events and sends them into the audit system.\n\nSigned-off-by: Steve Grubb \u003csgrubb@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5712e88f2b0f626a4857c24128810bbf8ce09537",
      "tree": "1285a3e632e6c3d6dfecc2c3445770a559c712ca",
      "parents": [
        "4fc03b9beb2314f3adb9e72b7935a80c577954d1"
      ],
      "author": {
        "name": "Amy Griffis",
        "email": "amy.griffis@hp.com",
        "time": "Tue Feb 13 14:15:22 2007 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 11 05:38:26 2007 -0400"
      },
      "message": "[PATCH] match audit name data\n\nMake more effort to detect previously collected names, so we don\u0027t log\nmultiple PATH records for a single filesystem object. Add\naudit_inc_name_count() to reduce duplicate code.\n\nSigned-off-by: Amy Griffis \u003camy.griffis@hp.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4fc03b9beb2314f3adb9e72b7935a80c577954d1",
      "tree": "81e04534c582923fcdc8212497d1487ddae412a8",
      "parents": [
        "510f4006e7a82b37b53c17bbe64ec20f3a59302b"
      ],
      "author": {
        "name": "Amy Griffis",
        "email": "amy.griffis@hp.com",
        "time": "Tue Feb 13 14:15:01 2007 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 11 05:38:26 2007 -0400"
      },
      "message": "[PATCH] complete message queue auditing\n\nHandle the edge cases for POSIX message queue auditing. Collect inode\ninfo when opening an existing mq, and for send/receive operations. Remove\naudit_inode_update() as it has really evolved into the equivalent of\naudit_inode().\n\nSigned-off-by: Amy Griffis \u003camy.griffis@hp.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e41e8bde43026d5d2e41464e6105a50b31e34102",
      "tree": "1ba5c647ce69db81d327b0024294445a449cf1c0",
      "parents": [
        "e54dc2431d740a79a6bd013babade99d71b1714f"
      ],
      "author": {
        "name": "Amy Griffis",
        "email": "amy.griffis@hp.com",
        "time": "Tue Feb 13 14:14:09 2007 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 11 05:38:25 2007 -0400"
      },
      "message": "[PATCH] initialize name osid\n\nAudit contexts can be reused, so initialize a name\u0027s osid to the\ndefault in audit_getname(). This ensures we don\u0027t log a bogus object\nlabel when no inode data is collected for a name.\n\nSigned-off-by: Amy Griffis \u003camy.griffis@hp.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e54dc2431d740a79a6bd013babade99d71b1714f",
      "tree": "16b0990d5c16946239a17b332f54b5918fb03305",
      "parents": [
        "7f13da40e36c84d0d046b7adbd060af7d3717250"
      ],
      "author": {
        "name": "Amy Griffis",
        "email": "amy.griffis@hp.com",
        "time": "Thu Mar 29 18:01:04 2007 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 11 05:38:25 2007 -0400"
      },
      "message": "[PATCH] audit signal recipients\n\nWhen auditing syscalls that send signals, log the pid and security\ncontext for each target process. Optimize the data collection by\nadding a counter for signal-related rules, and avoiding allocating an\naux struct unless we have more than one target process. For process\ngroups, collect pid/context data in blocks of 16. Move the\naudit_signal_info() hook up in check_kill_permission() so we audit\nattempts where permission is denied.\n\nSigned-off-by: Amy Griffis \u003camy.griffis@hp.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a5cb013da773a67ee48d1c19e96436c22a73a7eb",
      "tree": "8832d105c4742674423bd50352b8a4805c44fecc",
      "parents": [
        "129a84de2347002f09721cda3155ccfd19fade40"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 13:58:35 2007 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 11 05:38:25 2007 -0400"
      },
      "message": "[PATCH] auditing ptrace\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e9910846fdb19f7c5810cbe4c95e4ca6dab6a00f",
      "tree": "dbfea7352c38b615d92c9c207980e9640a8a5e84",
      "parents": [
        "c91e23c63f77a7643d857a082248cf2cdb71b67c"
      ],
      "author": {
        "name": "akpm@linux-foundation.org",
        "email": "akpm@linux-foundation.org",
        "time": "Thu May 10 03:16:01 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu May 10 09:26:53 2007 -0700"
      },
      "message": "timer: revert parenthesis fix in tbase_get_deferrable() etc\n\nOn 09-05-2007 21:10, Pallipadi, Venkatesh wrote:\n...\n\u003e On a 64 bit system, converting pointer to int causes unnecessary\n\u003e compiler warning, and intermediate long conversion was to avoid that.\n\u003e I will have to rephrase my comment to remove 32 bit value and use int,\n\u003e as that is what the function returns.\n\nSo, this patch reverts all changes done by my previous patch.\n\nI apologize for my wrong comment about \"logical error\" here.\n\nCc: \"Pallipadi, Venkatesh\" \u003cvenkatesh.pallipadi@intel.com\u003e\nCc: Satyam Sharma \u003csatyam.sharma@gmail.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Jarek Poplawski \u003cjarkao2@o2.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "aabded9c3aab5160ae2ca3dd1fa0fa37f3d510e4",
      "tree": "8544d546735bcb975b8dec296eb9b6dc6531fb2a",
      "parents": [
        "9a9136e270af14da506f66bcafcc506b86a86498",
        "f1a1eb299a8422c3e8d41753095bec44b2493398"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:56:01 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:56:01 2007 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc\n\n* \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc:\n  [POWERPC] Further fixes for the removal of 4level-fixup hack from ppc32\n  [POWERPC] EEH: log all PCI-X and PCI-E AER registers\n  [POWERPC] EEH: capture and log pci state on error\n  [POWERPC] EEH: Split up long error msg\n  [POWERPC] EEH: log error only after driver notification.\n  [POWERPC] fsl_soc: Make mac_addr const in fs_enet_of_init().\n  [POWERPC] Don\u0027t use SLAB/SLUB for PTE pages\n  [POWERPC] Spufs support for 64K LS mappings on 4K kernels\n  [POWERPC] Add ability to 4K kernel to hash in 64K pages\n  [POWERPC] Introduce address space \"slices\"\n  [POWERPC] Small fixes \u0026 cleanups in segment page size demotion\n  [POWERPC] iSeries: Make HVC_ISERIES the default\n  [POWERPC] iSeries: suppress build warning in lparmap.c\n  [POWERPC] Mark pages that don\u0027t exist as nosave\n  [POWERPC] swsusp: Introduce register_nosave_region_late\n"
    },
    {
      "commit": "9a9136e270af14da506f66bcafcc506b86a86498",
      "tree": "b4d0a6877d92635134b7a944d0032fbc43227fd2",
      "parents": [
        "3960208f9ca0cf6bdb31c21c59ac0526303f8b34",
        "7bb2acb76e8168ca5d0bde5a5a56585a11b3525a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:54:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:54:17 2007 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial: (25 commits)\n  sound: convert \"sound\" subdirectory to UTF-8\n  MAINTAINERS: Add cxacru website/mailing list\n  include files: convert \"include\" subdirectory to UTF-8\n  general: convert \"kernel\" subdirectory to UTF-8\n  documentation: convert the Documentation directory to UTF-8\n  Convert the toplevel files CREDITS and MAINTAINERS to UTF-8.\n  remove broken URLs from net drivers\u0027 output\n  Magic number prefix consistency change to Documentation/magic-number.txt\n  trivial: s/i_sem /i_mutex/\n  fix file specification in comments\n  drivers/base/platform.c: fix small typo in doc\n  misc doc and kconfig typos\n  Remove obsolete fat_cvf help text\n  Fix occurrences of \"the the \"\n  Fix minor typoes in kernel/module.c\n  Kconfig: Remove reference to external mqueue library\n  Kconfig: A couple of grammatical fixes in arch/i386/Kconfig\n  Correct comments in genrtc.c to refer to correct /proc file.\n  Fix more \"deprecated\" spellos.\n  Fix \"deprecated\" typoes.\n  ...\n\nFix trivial comment conflict in kernel/relay.c.\n"
    },
    {
      "commit": "f7e4217b007d1f73e7e3cf10ba4fea4a608c603f",
      "tree": "9c3932bb871d4b6727dc588e4d6c9987637aaee5",
      "parents": [
        "c9f4f06d3191bd91c1a081b54a6c8e913e7b8a83"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Wed May 09 02:35:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "rename thread_info to stack\n\nThis finally renames the thread_info field in task structure to stack, so that\nthe assumptions about this field are gone and archs have more freedom about\nplacing the thread_info structure.\n\nNonbroken archs which have a proper thread pointer can do the access to both\ncurrent thread and task structure via a single pointer.\n\nIt\u0027ll allow for a few more cleanups of the fork code, from which e.g.  ia64\ncould benefit.\n\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\n[akpm@linux-foundation.org: build fix]\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Ian Molton \u003cspyro@f2s.com\u003e\nCc: Haavard Skinnemoen \u003chskinnemoen@atmel.com\u003e\nCc: Mikael Starvik \u003cstarvik@axis.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Yoshinori Sato \u003cysato@users.sourceforge.jp\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Hirokazu Takata \u003ctakata@linux-m32r.org\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: Greg Ungerer \u003cgerg@uclinux.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Kazumoto Kojima \u003ckkojima@rr.iij4u.or.jp\u003e\nCc: Richard Curnow \u003crc@rc0.org.uk\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Paolo \u0027Blaisorblade\u0027 Giarrusso \u003cblaisorblade@yahoo.it\u003e\nCc: Miles Bader \u003cuclinux-v850@lsi.nec.co.jp\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nCc: Chris Zankel \u003cchris@zankel.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c9f4f06d3191bd91c1a081b54a6c8e913e7b8a83",
      "tree": "fe6bb926f612e67b1e57c6a448c7e5d41dd69dad",
      "parents": [
        "e61a1c1c4f240cec61300c8f27518c3e47570fd4"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Wed May 09 02:35:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "wrap access to thread_info\n\nRecently a few direct accesses to the thread_info in the task structure snuck\nback, so this wraps them with the appropriate wrapper.\n\nSigned-off-by: 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": "b52f52a093bb1e841e014c2087b5bee7162da413",
      "tree": "7b7135897195fc9d14473d3ab824d59a4b65e5ad",
      "parents": [
        "4037d452202e34214e8a939fa5621b2b3bbb45b7"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 09 02:35:15 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "clocksource: fix resume logic\n\nWe need to make sure that the clocksources are resumed, when timekeeping is\nresumed.  The current resume logic does not guarantee this.\n\nAdd a resume function pointer to the clocksource struct, so clocksource\ndrivers which need to reinitialize the clocksource can provide a resume\nfunction.\n\nAdd a resume function, which calls the maybe available clocksource resume\nfunctions and resets the watchdog function, so a stable TSC can be used\naccross suspend/resume.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "77461ab33229d48614402decfb1b2eaa6d446861",
      "tree": "d2675ff079e887645ed25ae5f793aa907d53c66a",
      "parents": [
        "d1187ed21026fd512b87851d0ca26d9ae16f9059"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 09 02:35:13 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "Make vm statistics update interval configurable\n\nMake it configurable.  Code in mm makes the vm statistics intervals\nindependent from the cache reaper use that opportunity to make it\nconfigurable.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "455c017ae3934797653549704c286e7bcc3a9397",
      "tree": "7b5b67916b064e3ce7868082e0915f37b437aeb8",
      "parents": [
        "8bb7844286fb8c9fce6f65d8288aeb09d03a5e0d"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed May 09 02:35:11 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "microcode: use suspend-related CPU hotplug notifications\n\nMake the microcode driver use the suspend-related CPU hotplug notifications\nto handle the CPU hotplug events occuring during system-wide suspend and\nresume transitions.  Remove the global variable suspend_cpu_hotplug\npreviously used for this purpose.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8bb7844286fb8c9fce6f65d8288aeb09d03a5e0d",
      "tree": "f4e305edaedbde05774bb1e4acd89a9475661d2e",
      "parents": [
        "f37bc2712b54ec641e0c0c8634f1a4b61d9956c0"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed May 09 02:35:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "Add suspend-related notifications for CPU hotplug\n\nSince nonboot CPUs are now disabled after tasks and devices have been\nfrozen and the CPU hotplug infrastructure is used for this purpose, we need\nspecial CPU hotplug notifications that will help the CPU-hotplug-aware\nsubsystems distinguish normal CPU hotplug events from CPU hotplug events\nrelated to a system-wide suspend or resume operation in progress.  This\npatch introduces such notifications and causes them to be used during\nsuspend and resume transitions.  It also changes all of the\nCPU-hotplug-aware subsystems to take these notifications into consideration\n(for now they are handled in the same way as the corresponding \"normal\"\nones).\n\n[oleg@tv-sign.ru: cleanups]\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "38a23e311b6cd389b9d8af2ea6c28c8cffbe581c",
      "tree": "742b2d0e5e6f7015afe92dfa87ed22964082b8cb",
      "parents": [
        "34f01cc1f512fa783302982776895c73714ebbc2"
      ],
      "author": {
        "name": "Jarek Poplawski",
        "email": "jarkao2@o2.pl",
        "time": "Wed May 09 02:35:05 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:55 2007 -0700"
      },
      "message": "timer: parenthesis fix in tbase_get_deferrable() etc\n\nSigned-off-by: Jarek Poplawski \u003cjarkao2@o2.pl\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": "34f01cc1f512fa783302982776895c73714ebbc2",
      "tree": "776b50ee9592803853b3b4c1845f8ba527b868b9",
      "parents": [
        "d0aa7a70bf03b9de9e995ab272293be1f7937822"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Wed May 09 02:35:04 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:55 2007 -0700"
      },
      "message": "FUTEX: new PRIVATE futexes\n\n  Analysis of current linux futex code :\n  --------------------------------------\n\nA central hash table futex_queues[] holds all contexts (futex_q) of waiting\nthreads.\n\nEach futex_wait()/futex_wait() has to obtain a spinlock on a hash slot to\nperform lookups or insert/deletion of a futex_q.\n\nWhen a futex_wait() is done, calling thread has to :\n\n1) - Obtain a read lock on mmap_sem to be able to validate the user pointer\n     (calling find_vma()). This validation tells us if the futex uses\n     an inode based store (mapped file), or mm based store (anonymous mem)\n\n2) - compute a hash key\n\n3) - Atomic increment of reference counter on an inode or a mm_struct\n\n4) - lock part of futex_queues[] hash table\n\n5) - perform the test on value of futex.\n\t(rollback is value !\u003d expected_value, returns EWOULDBLOCK)\n\t(various loops if test triggers mm faults)\n\n6) queue the context into hash table, release the lock got in 4)\n\n7) - release the read_lock on mmap_sem\n\n   \u003cblock\u003e\n\n8) Eventually unqueue the context (but rarely, as this part  may be done\n   by the futex_wake())\n\nFutexes were designed to improve scalability but current implementation has\nvarious problems :\n\n- Central hashtable :\n\n  This means scalability problems if many processes/threads want to use\n  futexes at the same time.\n  This means NUMA unbalance because this hashtable is located on one node.\n\n- Using mmap_sem on every futex() syscall :\n\n  Even if mmap_sem is a rw_semaphore, up_read()/down_read() are doing atomic\n  ops on mmap_sem, dirtying cache line :\n    - lot of cache line ping pongs on SMP configurations.\n\n  mmap_sem is also extensively used by mm code (page faults, mmap()/munmap())\n  Highly threaded processes might suffer from mmap_sem contention.\n\n  mmap_sem is also used by oprofile code. Enabling oprofile hurts threaded\n  programs because of contention on the mmap_sem cache line.\n\n- Using an atomic_inc()/atomic_dec() on inode ref counter or mm ref counter:\n  It\u0027s also a cache line ping pong on SMP. It also increases mmap_sem hold time\n  because of cache misses.\n\nMost of these scalability problems come from the fact that futexes are in\none global namespace.  As we use a central hash table, we must make sure\nthey are all using the same reference (given by the mm subsystem).  We\nchose to force all futexes be \u0027shared\u0027.  This has a cost.\n\nBut fact is POSIX defined PRIVATE and SHARED, allowing clear separation,\nand optimal performance if carefuly implemented.  Time has come for linux\nto have better threading performance.\n\nThe goal is to permit new futex commands to avoid :\n - Taking the mmap_sem semaphore, conflicting with other subsystems.\n - Modifying a ref_count on mm or an inode, still conflicting with mm or fs.\n\nThis is possible because, for one process using PTHREAD_PROCESS_PRIVATE\nfutexes, we only need to distinguish futexes by their virtual address, no\nmatter the underlying mm storage is.\n\nIf glibc wants to exploit this new infrastructure, it should use new\n_PRIVATE futex subcommands for PTHREAD_PROCESS_PRIVATE futexes.  And be\nprepared to fallback on old subcommands for old kernels.  Using one global\nvariable with the FUTEX_PRIVATE_FLAG or 0 value should be OK.\n\nPTHREAD_PROCESS_SHARED futexes should still use the old subcommands.\n\nCompatibility with old applications is preserved, they still hit the\nscalability problems, but new applications can fly :)\n\nNote : the same SHARED futex (mapped on a file) can be used by old binaries\n*and* new binaries, because both binaries will use the old subcommands.\n\nNote : Vast majority of futexes should be using PROCESS_PRIVATE semantic,\nas this is the default semantic. Almost all applications should benefit\nof this changes (new kernel and updated libc)\n\nSome bench results on a Pentium M 1.6 GHz (SMP kernel on a UP machine)\n\n/* calling futex_wait(addr, value) with value !\u003d *addr */\n433 cycles per futex(FUTEX_WAIT) call (mixing 2 futexes)\n424 cycles per futex(FUTEX_WAIT) call (using one futex)\n334 cycles per futex(FUTEX_WAIT_PRIVATE) call (mixing 2 futexes)\n334 cycles per futex(FUTEX_WAIT_PRIVATE) call (using one futex)\nFor reference :\n187 cycles per getppid() call\n188 cycles per umask() call\n181 cycles per ni_syscall() call\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nPierre Peiffer \u003cpierre.peiffer@bull.net\u003e\nCc: \"Ulrich Drepper\" \u003cdrepper@gmail.com\u003e\nCc: \"Nick Piggin\" \u003cnickpiggin@yahoo.com.au\u003e\nCc: \"Ingo Molnar\" \u003cmingo@elte.hu\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d0aa7a70bf03b9de9e995ab272293be1f7937822",
      "tree": "194b30b7b8374b946f166996cb99fb95eb3b7819",
      "parents": [
        "c19384b5b296905d4988c7c684ff540a0f9d65be"
      ],
      "author": {
        "name": "Pierre Peiffer",
        "email": "pierre.peiffer@bull.net",
        "time": "Wed May 09 02:35:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:55 2007 -0700"
      },
      "message": "futex_requeue_pi optimization\n\nThis patch provides the futex_requeue_pi functionality, which allows some\nthreads waiting on a normal futex to be requeued on the wait-queue of a\nPI-futex.\n\nThis provides an optimization, already used for (normal) futexes, to be used\nwith the PI-futexes.\n\nThis optimization is currently used by the glibc in pthread_broadcast, when\nusing \"normal\" mutexes.  With futex_requeue_pi, it can be used with\nPRIO_INHERIT mutexes too.\n\nSigned-off-by: Pierre Peiffer \u003cpierre.peiffer@bull.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c19384b5b296905d4988c7c684ff540a0f9d65be",
      "tree": "071cfe0855d409d63de80ec1b9b663738efb09de",
      "parents": [
        "ec92d08292d3e9b0823eba138a4564d2d39f25c7"
      ],
      "author": {
        "name": "Pierre Peiffer",
        "email": "pierre.peiffer@bull.net",
        "time": "Wed May 09 02:35:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:55 2007 -0700"
      },
      "message": "Make futex_wait() use an hrtimer for timeout\n\nThis patch modifies futex_wait() to use an hrtimer + schedule() in place of\nschedule_timeout().\n\nschedule_timeout() is tick based, therefore the timeout granularity is the\ntick (1 ms, 4 ms or 10 ms depending on HZ).  By using a high resolution timer\nfor timeout wakeup, we can attain a much finer timeout granularity (in the\nmicrosecond range).  This parallels what is already done for futex_lock_pi().\n\nThe timeout passed to the syscall is no longer converted to jiffies and is\ntherefore passed to do_futex() and futex_wait() as an absolute ktime_t\ntherefore keeping nanosecond resolution.\n\nAlso this removes the need to pass the nanoseconds timeout part to\nfutex_lock_pi() in val2.\n\nIn futex_wait(), if there is no timeout then a regular schedule() is\nperformed.  Otherwise, an hrtimer is fired before schedule() is called.\n\n[akpm@linux-foundation.org: fix `make headers_check\u0027]\nSigned-off-by: Sebastien Dugue \u003csebastien.dugue@bull.net\u003e\nSigned-off-by: Pierre Peiffer \u003cpierre.peiffer@bull.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ec92d08292d3e9b0823eba138a4564d2d39f25c7",
      "tree": "4dc94792e83d51b036d52e92e8d4f137a2efce97",
      "parents": [
        "f34c506b0385b43abd25c490335036ecbb173aed"
      ],
      "author": {
        "name": "Pierre Peiffer",
        "email": "pierre.peiffer@bull.net",
        "time": "Wed May 09 02:35:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:55 2007 -0700"
      },
      "message": "futex priority based wakeup\n\nToday, all threads waiting for a given futex are woken in FIFO order (first\nwaiter woken first) instead of priority order.\n\nThis patch makes use of plist (pirotity ordered lists) instead of simple list\nin futex_hash_bucket.\n\nAll non-RT threads are stored with priority MAX_RT_PRIO, causing them to be\nwoken last, in FIFO order (RT-threads are woken first, in priority order).\n\nSigned-off-by: Sebastien Dugue \u003csebastien.dugue@bull.net\u003e\nSigned-off-by: Pierre Peiffer \u003cpierre.peiffer@bull.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6e84d644b5929789398914b0ccf447355dec6fb0",
      "tree": "0de4bd0c8d3bf4cd764275f02d56d8576f376ae5",
      "parents": [
        "7b0834c26fd796c79dfcc3939ed2b9122b75246f"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:46 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "make cancel_rearming_delayed_work() reliable\n\nThanks to Jarek Poplawski for the ideas and for spotting the bug in the\ninitial draft patch.\n\ncancel_rearming_delayed_work() currently has many limitations, because it\nrequires that dwork always re-arms itself via queue_delayed_work().  So it\nhangs forever if dwork doesn\u0027t do this, or cancel_rearming_delayed_work/\ncancel_delayed_work was already called.  It uses flush_workqueue() in a\nloop, so it can\u0027t be used if workqueue was freezed, and it is potentially\nlive- lockable on busy system if delay is small.\n\nWith this patch cancel_rearming_delayed_work() doesn\u0027t make any assumptions\nabout dwork, it can re-arm itself via queue_delayed_work(), or\nqueue_work(), or do nothing.\n\nAs a \"side effect\", cancel_work_sync() was changed to handle re-arming works\nas well.\n\nDisadvantages:\n\n\t- this patch adds wmb() to insert_work().\n\n\t- slowdowns the fast path (when del_timer() succeeds on entry) of\n\t  cancel_rearming_delayed_work(), because wait_on_work() is called\n\t  unconditionally. In that case, compared to the old version, we are\n\t  doing \"unneeded\" lock/unlock for each online CPU.\n\n\t  On the other hand, this means we don\u0027t need to use cancel_work_sync()\n\t  after cancel_rearming_delayed_work().\n\n\t- complicates the code (.text grows by 130 bytes).\n\n[akpm@linux-foundation.org: fix speling]\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: David Chinner \u003cdgc@sgi.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Gautham Shenoy \u003cego@in.ibm.com\u003e\nAcked-by: Jarek Poplawski \u003cjarkao2@o2.pl\u003e\nCc: Srivatsa Vaddagiri \u003cvatsa@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7b0834c26fd796c79dfcc3939ed2b9122b75246f",
      "tree": "870eb42cd02b9012fd0ab06d7efb5e7596376bad",
      "parents": [
        "10ab825bdef8df510f99c703a5a2d9b13a4e31a5"
      ],
      "author": {
        "name": "Gautham R Shenoy",
        "email": "ego@in.ibm.com",
        "time": "Wed May 09 02:34:41 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "Remove kthread_bind() call from _cpu_down()\n\nWe are anyway kthread_stop()ping other per-cpu kernel threads after\nmove_task_off_dead_cpu(), so we can do it with the stop_machine_run thread\nas well.\n\nI just checked with Vatsa if there was any subtle reason why they\nhad put in the kthread_bind() in cpu.c. Vatsa cannot seem to recollect\nany and I can\u0027t see any. So let us just remove the kthread_bind.\n\nSigned-off-by: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "10ab825bdef8df510f99c703a5a2d9b13a4e31a5",
      "tree": "e4db81f26c03ba5a5bff43ed44646a4ed4509d67",
      "parents": [
        "5de18d169739293e27e0cf9acfc75a2d2f4aa572"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "change kernel threads to ignore signals instead of blocking them\n\nCurrently kernel threads use sigprocmask(SIG_BLOCK) to protect against\nsignals.  This doesn\u0027t prevent the signal delivery, this only blocks\nsignal_wake_up().  Every \"killall -33 kthreadd\" means a \"struct siginfo\"\nleak.\n\nChange kthreadd_setup() to set all handlers to SIG_IGN instead of blocking\nthem (make a new helper ignore_signals() for that).  If the kernel thread\nneeds some signal, it should use allow_signal() anyway, and in that case it\nshould not use CLONE_SIGHAND.\n\nNote that we can\u0027t change daemonize() (should die!) in the same way,\nbecause it can be used along with CLONE_SIGHAND.  This means that\nallow_signal() still should unblock the signal to work correctly with\ndaemonize()ed threads.\n\nHowever, disallow_signal() doesn\u0027t block the signal any longer but ignores\nit.\n\nNOTE: with or without this patch the kernel threads are not protected from\nhandle_stop_signal(), this seems harmless, but not good.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5de18d169739293e27e0cf9acfc75a2d2f4aa572",
      "tree": "3360a4235a92d787fb7e48fccfc945fa0ee15758",
      "parents": [
        "90cce03d9bfcb28600a56efef6b0a5a4fbf6c2b1"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:36 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "worker_thread: don\u0027t play with SIGCHLD and numa policy\n\nworker_thread() inherits ignored SIGCHLD and numa_default_policy() from its\nparent, kthreadd.  No need to setup this again.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "90cce03d9bfcb28600a56efef6b0a5a4fbf6c2b1",
      "tree": "f0b1909311fe5662eeac7923bd7830a9811ac2aa",
      "parents": [
        "b8a124da9261873e3e3541898d5c46d273afee34"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:36 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "wait_for_helper: remove unneeded do_sigaction()\n\nallow_signal(SIGCHLD) does all necessary job, no need to call do_sigaction()\nprior to.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "49d769d52e16efabd3ad47b7995522fff771371d",
      "tree": "cf6ec2c39ae671c3f4cae34daf9d0558ca4fcf49",
      "parents": [
        "73c279927f89561ecb45b2dfdf9314bafcfd9f67"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed May 09 02:34:33 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "Change reparent_to_init to reparent_to_kthreadd\n\nWhen a kernel thread calls daemonize, instead of reparenting the thread to\ninit reparent the thread to kthreadd next to the threads created by\nkthread_create.\n\nThis is really just a stop gap until daemonize goes away, but it does\nensure no kernel threads are under init and they are all in one place that\nis easy to find.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "73c279927f89561ecb45b2dfdf9314bafcfd9f67",
      "tree": "2186e28c92c6f8229ea20eb9856714186bf77a4c",
      "parents": [
        "c93465181fed0f8f5942a41108943dadea0aa345"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed May 09 02:34:32 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "kthread: don\u0027t depend on work queues\n\nCurrently there is a circular reference between work queue initialization\nand kthread initialization.  This prevents the kthread infrastructure from\ninitializing until after work queues have been initialized.\n\nWe want the properties of tasks created with kthread_create to be as close\nas possible to the init_task and to not be contaminated by user processes.\nThe later we start our kthreadd that creates these tasks the harder it is\nto avoid contamination from user processes and the more of a mess we have\nto clean up because the defaults have changed on us.\n\nSo this patch modifies the kthread support to not use work queues but to\ninstead use a simple list of structures, and to have kthreadd start from\ninit_task immediately after our kernel thread that execs /sbin/init.\n\nBy being a true child of init_task we only have to change those process\nsettings that we want to have different from init_task, such as our process\nname, the cpus that are allowed, blocking all signals and setting SIGCHLD\nto SIG_IGN so that all of our children are reaped automatically.\n\nBy being a true child of init_task we also naturally get our ppid set to 0\nand do not wind up as a child of PID \u003d\u003d 1.  Ensuring that tasks generated\nby kthread_create will not slow down the functioning of the wait family of\nfunctions.\n\n[akpm@linux-foundation.org: use interruptible sleeps]\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c93465181fed0f8f5942a41108943dadea0aa345",
      "tree": "a2c1a8fe514b97c31bd3832136894933c3f28fee",
      "parents": [
        "28e53bddf814485699a4142bc056fd37d4e11dd4"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:23 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "____call_usermodehelper: don\u0027t flush_signals()\n\n____call_usermodehelper() has no reason for flush_signals().  It is a fresh\nforked process which is going to exec a user-space application or exit on\nfailure.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "28e53bddf814485699a4142bc056fd37d4e11dd4",
      "tree": "5182090c4cc2186eedbda3cb90ed82a2836f6ff6",
      "parents": [
        "5830c5902138f80b0a097b797200c739466beedd"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:22 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "unify flush_work/flush_work_keventd and rename it to cancel_work_sync\n\nflush_work(wq, work) doesn\u0027t need the first parameter, we can use cwq-\u003ewq\n(this was possible from the very beginnig, I missed this).  So we can unify\nflush_work_keventd and flush_work.\n\nAlso, rename flush_work() to cancel_work_sync() and fix all callers.\nPerhaps this is not the best name, but \"flush_work\" is really bad.\n\n(akpm: this is why the earlier patches bypassed maintainers)\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Jeff Garzik \u003cjeff@garzik.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Auke Kok \u003cauke-jan.h.kok@intel.com\u003e,\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a4798833d26b293fd18b7bf102991426aa0b56fd",
      "tree": "a564a45ee791e8418692c4171ed018dc90734238",
      "parents": [
        "85f4186af944c1240c84934a9ab578743df2d69b"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:21 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "zap_other_threads: remove unneeded -\u003eexit_signal change\n\nWe already depend on fact that all sub-threads have -\u003eexit_signal \u003d\u003d -1, no\nneed to set it in zap_other_threads().\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "85f4186af944c1240c84934a9ab578743df2d69b",
      "tree": "743d6a619538cda98495aaaac67a86246d3007e4",
      "parents": [
        "b9aac8e0d32499217417ff0b494731811f185b18"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "worker_thread: fix racy try_to_freeze() usage\n\nworker_thread() can miss freeze_process()-\u003esignal_wake_up() if it happens\nbetween try_to_freeze() and prepare_to_wait().  We should check freezing()\nbefore entering schedule().\n\nThis race was introduced by me in\n\n\t[PATCH 1/1] workqueue: don\u0027t migrate pending works from the dead CPU\n\nLooks like mm/vmscan.c:kswapd() has the same race.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b9aac8e0d32499217417ff0b494731811f185b18",
      "tree": "1cd79adb88431d3ebe6b9dd253b8ed1bbd4f9e07",
      "parents": [
        "23b2e5991afde5af91a1a661d7f47ee56120759e"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "worker_thread: don\u0027t play with signals\n\nworker_thread() doesn\u0027t need to \"Block and flush all signals\", this was\nalready done by its caller, kthread().\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "23b2e5991afde5af91a1a661d7f47ee56120759e",
      "tree": "d4b8e5bc1a311abd6b6de469f862a8b53c5f9f36",
      "parents": [
        "c214b2cc5f9be7c236f9b91acf524688ff0e3e72"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:19 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueue: kill NOAUTOREL works\n\nWe don\u0027t have any users, and it is not so trivial to use NOAUTOREL works\ncorrectly.  It is better to simplify API.\n\nDelete NOAUTOREL support and rename work_release to work_clear_pending to\navoid a confusion.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1634c48f8b85dcb05101f1eb2eab9af40b5976da",
      "tree": "143aa0fbf21e712a5258806b37f2024ba432b522",
      "parents": [
        "a848e3b67c07ed79374bd0f9b82f9ce45a419643"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "make cancel_rearming_delayed_work() work on any workqueue, not just keventd_wq\n\ncancel_rearming_delayed_workqueue(wq, dwork) doesn\u0027t need the first\nparameter.  We don\u0027t hang on un-queued dwork any longer, and work-\u003edata\ndoesn\u0027t change its type.  This means we can always figure out \"wq\" from\ndwork when it is needed.\n\nRemove this parameter, and rename the function to\ncancel_rearming_delayed_work().  Re-create an inline \"obsolete\"\ncancel_rearming_delayed_workqueue(wq) which just calls\ncancel_rearming_delayed_work().\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a848e3b67c07ed79374bd0f9b82f9ce45a419643",
      "tree": "72f4385e12310bf8e1b959d4d90d32f05c10cd61",
      "parents": [
        "63bc0362521cbaae3ed17b8de7b094f9492453f0"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueue: introduce wq_per_cpu() helper\n\nCleanup.  A number of per_cpu_ptr(wq-\u003ecpu_wq, cpu) users have to check that\ncpu is valid for this wq.  Make a simple helper.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "63bc0362521cbaae3ed17b8de7b094f9492453f0",
      "tree": "2a1bee6651fe00b76828cf75742bbff221188990",
      "parents": [
        "ed7c0feede39d70092d048ec30f59bb1df69eec6"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "unify queue_delayed_work() and queue_delayed_work_on()\n\nChange queue_delayed_work() to use queue_delayed_work_on() to avoid the code\nduplication (saves 133 bytes).\n\nQ: queue_delayed_work() enqueues \u0026dwork-\u003ework directly when delay \u003d\u003d 0, why?\n\n[jirislaby@gmail.com: oops fix]\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Jiri Slaby \u003cjirislaby@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ed7c0feede39d70092d048ec30f59bb1df69eec6",
      "tree": "67ff89df1a5db2037da34ddf17002b4c7ff218df",
      "parents": [
        "06ba38a9a0f6ceffe70343f684c5a690e3710ef4"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "make queue_delayed_work() friendly to flush_fork()\n\nCurrently typeof(delayed_work-\u003ework.data) is\n\n\t\"struct workqueue_struct\" when the timer is pending\n\n\t\"struct cpu_workqueue_struct\" whe the work is queued\n\nThis makes impossible to use flush_fork(delayed_work-\u003ework) in addition\nto cancel_delayed_work/cancel_rearming_delayed_work, not good.\n\nChange queue_delayed_work/delayed_work_timer_fn to use cwq, not wq. This\ncomplicates (and uglifies) these functions a little bit, but alows us to\nuse flush_fork(dwork) and imho makes the whole code more consistent.\n\nAlso, document the fact that cancel_rearming_delayed_work() doesn\u0027t garantee\nthe completion of work-\u003efunc() upon return.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "06ba38a9a0f6ceffe70343f684c5a690e3710ef4",
      "tree": "500f4d8a3be212ececa80ead44d9658c8b7a4ce1",
      "parents": [
        "c12920d19078eb8fd99560ec232a6e05c6ff1aa8"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:15 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueues: shift kthread_bind() from CPU_UP_PREPARE to CPU_ONLINE\n\nCPU_UP_PREPARE binds cwq-\u003ethread to the new CPU.  So CPU_UP_CANCELED tries to\nwake up the task which is bound to the failed CPU.\n\nWith this patch we don\u0027t bind cwq-\u003ethread until CPU becomes online.  The first\nwake_up() after kthread_create() is a bit special, make a simple helper for\nthat.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c12920d19078eb8fd99560ec232a6e05c6ff1aa8",
      "tree": "614d7acbb8393bc3ae16d41c5a7f69a0abb4c9c1",
      "parents": [
        "cce1a1656c9a3fdc6c6c1029b576e4ab6ecaac37"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueue: make init_workqueues() __init\n\nThe only caller of init_workqueues() is do_basic_setup().\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "cce1a1656c9a3fdc6c6c1029b576e4ab6ecaac37",
      "tree": "016a79e653156e32766f17bd801ffd0e4dd3a79f",
      "parents": [
        "b1f4ec172f75bc2f5cc4f4be69b5587660a955d2"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:13 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueue: introduce workqueue_struct-\u003esinglethread\n\nAdd explicit workqueue_struct-\u003esinglethread flag.  This lessens .text a\nlittle, but most importantly this allows us to manipulate wq-\u003elist without\nchangine the meaning of is_single_threaded().\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "b1f4ec172f75bc2f5cc4f4be69b5587660a955d2",
      "tree": "41a96f3996246d1f8667b9b84705a800f03d7c49",
      "parents": [
        "dfb4b82e1c631b1a6057e77212996a890aa515b7"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueue: introduce cpu_singlethread_map\n\nThe code like\n\n\tif (is_single_threaded(wq))\n\t\tdo_something(singlethread_cpu);\n\telse {\n\t\tfor_each_cpu_mask(cpu, cpu_populated_map)\n\t\t\tdo_something(cpu);\n\t}\n\nlooks very annoying. We can add \"static cpumask_t cpu_singlethread_map\" and\nsimplify the code. Lessens .text a bit, and imho makes the code more readable.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "dfb4b82e1c631b1a6057e77212996a890aa515b7",
      "tree": "9e2fcd9ff6bd990740b3f0a48fc4194f2e64d89f",
      "parents": [
        "f293ea92007419e4f9c52db0cf57af17f45b9f94"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:11 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueue: make cancel_rearming_delayed_workqueue() work on idle dwork\n\ncancel_rearming_delayed_workqueue(dwork) will hang forever if dwork was not\nscheduled, because in that case cancel_delayed_work()-\u003edel_timer_sync() never\nreturns true.\n\nI don\u0027t know if there are any callers which may have problems, but this is not\nso convenient, and the fix is very simple.\n\nQ: looks like we don\u0027t need \"struct workqueue_struct *wq\" parameter.  If the\ntimer was aborted successfully, get_wq_data() \u003d\u003d wq.  Is it worth to add the\nnew function?\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "f293ea92007419e4f9c52db0cf57af17f45b9f94",
      "tree": "829d06499c1d9004ca530e5f23de43df27d3baa4",
      "parents": [
        "7097a87afe937a5879528d52880c2d95f089e96c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueue: don\u0027t save interrupts in run_workqueue()\n\nwork-\u003efunc() may sleep, it\u0027s a bug to call run_workqueue() with irqs disabled.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "7097a87afe937a5879528d52880c2d95f089e96c",
      "tree": "f06090c0f6ed327ee2894deb8ac7c588ab55bf4e",
      "parents": [
        "3af24433efac62f451bfdb1cf1edb7181fb73645"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueue: kill run_scheduled_work()\n\nBecause it has no callers.\n\nActually, I think the whole idea of run_scheduled_work() was not right, not\ngood to mix \"unqueue this work and execute its -\u003efunc()\" in one function.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "3af24433efac62f451bfdb1cf1edb7181fb73645",
      "tree": "330353b50a88615ef6e99440e8412667ae0a855e",
      "parents": [
        "36aa9dfc39bf473780439f5629c30f59d677e793"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:09 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueue: don\u0027t migrate pending works from the dead CPU\n\nCurrently CPU_DEAD uses kthread_stop() to stop cwq-\u003ethread and then\ntransfers cwq-\u003eworklist to another CPU.  However, it is very unlikely that\nworker_thread() will notice kthread_should_stop() before flushing\ncwq-\u003eworklist.  It is only possible if worker_thread() was preempted after\nrun_workqueue(cwq), a new work_struct was added, and CPU_DEAD happened\nbefore cwq-\u003ethread has a chance to run.\n\nThis means that take_over_work() mostly adds unneeded complications.  Note\nalso that kthread_stop() is not good per se, wake_up_process() may confuse\nwork-\u003efunc() if it sleeps waiting for some event.\n\nRemove take_over_work() and migrate_sequence complications.  CPU_DEAD sets\nthe cwq-\u003eshould_stop flag (introduced by this patch) and waits for\ncwq-\u003ethread to flush cwq-\u003eworklist and exit.  Because the dead CPU is not\non cpu_online_map, no more works can be added to that cwq.\n\ncpu_populated_map was introduced to optimize for_each_possible_cpu(), it is\nnot strictly needed, and it is more a documentation in fact.\n\nSaves 418 bytes.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Srivatsa Vaddagiri \u003cvatsa@in.ibm.com\u003e\nCc: \"Pallipadi, Venkatesh\" \u003cvenkatesh.pallipadi@intel.com\u003e\nCc: Gautham shenoy \u003cego@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "36aa9dfc39bf473780439f5629c30f59d677e793"
}
