)]}'
{
  "log": [
    {
      "commit": "94d6a5f7341ebaff53d4e41cc81fab37f0d9fbed",
      "tree": "07b4a016a50f1cc42c6295ec387a26d1a4481381",
      "parents": [
        "7657d90497f98426af17f0ac633a9b335bb7a8fb"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serue@us.ibm.com",
        "time": "Mon Dec 08 15:52:21 2008 -0600"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Dec 09 09:25:53 2008 +1100"
      },
      "message": "user namespaces: document CFS behavior\n\nDocumented the currently bogus state of support for CFS user groups with\nuser namespaces.  In particular, all users in a user namespace should be\nchildren of the user which created the user namespace.  This is yet to\nbe implemented.\n\nSigned-off-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nAcked-by: Dhaval Giani \u003cdhaval@linux.vnet.ibm.com\u003e\n\nSigned-off-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "7657d90497f98426af17f0ac633a9b335bb7a8fb",
      "tree": "6344dc4715a85383f6492a4102ae406c6b86d79d",
      "parents": [
        "c37bbb0fdcc01610fd55604eb6927210a1d20044"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serue@us.ibm.com",
        "time": "Wed Dec 03 13:17:33 2008 -0600"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Mon Dec 08 09:16:27 2008 +1100"
      },
      "message": "user namespaces: require cap_set{ug}id for CLONE_NEWUSER\n\nWhile ideally CLONE_NEWUSER will eventually require no\nprivilege, the required permission checks are currently\nnot there.  As a result, CLONE_NEWUSER has the same effect\nas a setuid(0)+setgroups(1,\"0\").  While we already require\nCAP_SYS_ADMIN, requiring CAP_SETUID and CAP_SETGID seems\nappropriate.\n\nSigned-off-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "c37bbb0fdcc01610fd55604eb6927210a1d20044",
      "tree": "41b53e385d947c568b237f5eb3690098d2efd8f6",
      "parents": [
        "ec98ce480ada787f2cfbd696980ff3564415505b"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serue@us.ibm.com",
        "time": "Wed Dec 03 13:17:06 2008 -0600"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Mon Dec 08 09:16:22 2008 +1100"
      },
      "message": "user namespaces: let user_ns be cloned with fairsched\n\n(These two patches are in the next-unacked branch of\ngit://git.kernel.org/pub/scm/linux/kernel/git/sergeh/userns-2.6.\nIf they get some ACKs, then I hope to feed this into security-next.\nAfter these two, I think we\u0027re ready to tackle userns+capabilities)\n\nFairsched creates a per-uid directory under /sys/kernel/uids/.\nSo when you clone(CLONE_NEWUSER), it tries to create\n/sys/kernel/uids/0, which already exists, and you get back\n-ENOMEM.\n\nThis was supposed to be fixed by sysfs tagging, but that\nwas postponed (ok, rejected until sysfs locking is fixed).\nSo, just as with network namespaces, we just don\u0027t create\nthose directories for user namespaces other than the init.\n\nSigned-off-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "ec98ce480ada787f2cfbd696980ff3564415505b",
      "tree": "1a4d644b38f9f1e4b4e086fde0b195df4a92cf84",
      "parents": [
        "3496f92beb9aa99ef21fccc154a36c7698e9c538",
        "feaf3848a813a106f163013af6fcf6c4bfec92d9"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Thu Dec 04 17:16:36 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Thu Dec 04 17:16:36 2008 +1100"
      },
      "message": "Merge branch \u0027master\u0027 into next\n\nConflicts:\n\tfs/nfsd/nfs4recover.c\n\nManually fixed above to use new creds API functions, e.g.\nnfs4_save_creds().\n\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "a8005992836434cab6182c6147993d21442184c1",
      "tree": "d1fec47b2a2febf700d6d7a1f09c3d695a945bf9",
      "parents": [
        "c4c6fa9891f3d1bcaae4f39fb751d5302965b566"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Mon Dec 01 13:14:00 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 01 19:55:24 2008 -0800"
      },
      "message": "taint: add missing comment\n\nThe description for \u0027D\u0027 was missing in the comment...  (causing me a\nminute of WTF followed by looking at more of the code)\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.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": "7ef9964e6d1b911b78709f144000aacadd0ebc21",
      "tree": "30667d0a2f8e53973ff48d2c02df48bbc6fe74aa",
      "parents": [
        "b7d271df873c5121a4ca1c70dea126b5920ec2f1"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Mon Dec 01 13:13:55 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 01 19:55:24 2008 -0800"
      },
      "message": "epoll: introduce resource usage limits\n\nIt has been thought that the per-user file descriptors limit would also\nlimit the resources that a normal user can request via the epoll\ninterface.  Vegard Nossum reported a very simple program (a modified\nversion attached) that can make a normal user to request a pretty large\namount of kernel memory, well within the its maximum number of fds.  To\nsolve such problem, default limits are now imposed, and /proc based\nconfiguration has been introduced.  A new directory has been created,\nnamed /proc/sys/fs/epoll/ and inside there, there are two configuration\npoints:\n\n  max_user_instances \u003d Maximum number of devices - per user\n\n  max_user_watches   \u003d Maximum number of \"watched\" fds - per user\n\nThe current default for \"max_user_watches\" limits the memory used by epoll\nto store \"watches\", to 1/32 of the amount of the low RAM.  As example, a\n256MB 32bit machine, will have \"max_user_watches\" set to roughly 90000.\nThat should be enough to not break existing heavy epoll users.  The\ndefault value for \"max_user_instances\" is set to 128, that should be\nenough too.\n\nThis also changes the userspace, because a new error code can now come out\nfrom EPOLL_CTL_ADD (-ENOSPC).  The EMFILE from epoll_create() was already\nlisted, so that should be ok.\n\n[akpm@linux-foundation.org: use get_current_user()]\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@gmail.com\u003e\nCc: \u003cstable@kernel.org\u003e\nCc: Cyrill Gorcunov \u003cgorcunov@gmail.com\u003e\nReported-by: Vegard Nossum \u003cvegardno@ifi.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9bd062d9eaf9e790330f37d9f4518e1b95131f6c",
      "tree": "a209a707eddf645bdeed3e9c82603ead64eea515",
      "parents": [
        "72244c0e68dd664b894adb34a8772a6e4673b4c1",
        "af6d596fd603219b054c1c90fb16672a9fd441bd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 30 13:06:47 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 30 13:06:47 2008 -0800"
      },
      "message": "Merge branch \u0027sched-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027sched-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  sched: prevent divide by zero error in cpu_avg_load_per_task, update\n  sched, cpusets: fix warning in kernel/cpuset.c\n  sched: prevent divide by zero error in cpu_avg_load_per_task\n"
    },
    {
      "commit": "72244c0e68dd664b894adb34a8772a6e4673b4c1",
      "tree": "5fa5bd9ff7b3d52f9b89898c0f12cfe163b72987",
      "parents": [
        "93b10052f9146eab4e848b474baf10c2ea22acb3",
        "2ed1cdcf9a83205d1343f29b630abff232eaa72c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 30 13:06:20 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 30 13:06:20 2008 -0800"
      },
      "message": "Merge branch \u0027irq-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027irq-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  irq.h: fix missing/extra kernel-doc\n  genirq: __irq_set_trigger: change pr_warning to pr_debug\n  irq: fix typo\n  x86: apic honour irq affinity which was set in early boot\n  genirq: fix the affinity setting in setup_irq\n  genirq: keep affinities set from userspace across free/request_irq()\n"
    },
    {
      "commit": "93b10052f9146eab4e848b474baf10c2ea22acb3",
      "tree": "d7286d6c2ee0bb233524771bac7934275d4bb8ee",
      "parents": [
        "7bbc67fbf60b698b43692fc6ea16c526bf1c5e26",
        "b0788caf7af773b6c2374590dabd3a205f0918a8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 30 13:05:46 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 30 13:05:46 2008 -0800"
      },
      "message": "Merge branch \u0027core-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  lockdep: consistent alignement for lockdep info\n"
    },
    {
      "commit": "7bbc67fbf60b698b43692fc6ea16c526bf1c5e26",
      "tree": "35b4c929ecea3d3fc54f221501a25c136bd6b1a6",
      "parents": [
        "66a45cc4cc1c1f7d1ccae4d0fee261eab5560682",
        "4f5a7f40ddbae98569acbb99118a98570315579c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 30 13:05:31 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 30 13:05:31 2008 -0800"
      },
      "message": "Merge branch \u0027tracing-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027tracing-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  ftrace: prevent recursion\n  tracing, doc: update mmiotrace documentation\n  x86, mmiotrace: fix buffer overrun detection\n  function tracing: fix wrong position computing of stack_trace\n"
    },
    {
      "commit": "96b8936a9ed08746e47081458a5eb9e43a751e24",
      "tree": "d1a738fdd95dda182f99c90fe3079283e0b07307",
      "parents": [
        "16799c6a4d5156c6ee185b51b7586cca1aae0800"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Nov 25 08:10:03 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 30 11:00:15 2008 -0800"
      },
      "message": "remove __ARCH_WANT_COMPAT_SYS_PTRACE\n\nAll architectures now use the generic compat_sys_ptrace, as should every\nnew architecture that needs 32bit compat (if we\u0027ll ever get another).\n\nRemove the now superflous __ARCH_WANT_COMPAT_SYS_PTRACE define, and also\nkill a comment about __ARCH_SYS_PTRACE that was added after\n__ARCH_SYS_PTRACE was already gone.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8419641450edc838a6ce7cdf0f99d262bf0af2d5",
      "tree": "1a396f0bafecd6ebcf15db23ca89b0cb8e33bda0",
      "parents": [
        "b0385146bcdd24b0390c2b60fd05a083888835db"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Sat Nov 22 17:36:44 2008 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 30 10:03:37 2008 -0800"
      },
      "message": "cpuinit fixes in kernel/*\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "af6d596fd603219b054c1c90fb16672a9fd441bd",
      "tree": "e3e5a85532079aedc9b0b194a319ec084b8a4449",
      "parents": [
        "1583715ddb61f822041807a0f18b3b4845e88c76"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Nov 29 20:45:15 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Nov 29 20:45:15 2008 +0100"
      },
      "message": "sched: prevent divide by zero error in cpu_avg_load_per_task, update\n\nRegarding the bug addressed in:\n\n  4cd4262: sched: prevent divide by zero error in cpu_avg_load_per_task\n\nLinus points out that the fix is not complete:\n\n\u003e There\u0027s nothing that keeps gcc from deciding not to reload\n\u003e rq-\u003enr_running.\n\u003e\n\u003e Of course, in _practice_, I don\u0027t think gcc ever will (if it decides\n\u003e that it will spill, gcc is likely going to decide that it will\n\u003e literally spill the local variable to the stack rather than decide to\n\u003e reload off the pointer), but it\u0027s a valid compiler optimization, and\n\u003e it even has a name (rematerialization).\n\u003e\n\u003e So I suspect that your patch does fix the bug, but it still leaves the\n\u003e fairly unlikely _potential_ for it to re-appear at some point.\n\u003e\n\u003e We have ACCESS_ONCE() as a macro to guarantee that the compiler\n\u003e doesn\u0027t rematerialize a pointer access. That also would clarify\n\u003e the fact that we access something unsafe outside a lock.\n\nSo make sure our nr_running value is immutable and cannot change\nafter we check it for nonzero.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1583715ddb61f822041807a0f18b3b4845e88c76",
      "tree": "cdc54eb7c0105197560641745059db7c20166eec",
      "parents": [
        "4cd4262034849da01eb88659af677b69f8169f06"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 25 10:27:49 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Nov 29 20:39:29 2008 +0100"
      },
      "message": "sched, cpusets: fix warning in kernel/cpuset.c\n\nthis warning:\n\n  kernel/cpuset.c: In function ‘generate_sched_domains’:\n  kernel/cpuset.c:588: warning: ‘ndoms’ may be used uninitialized in this function\n\ntriggers because GCC does not recognize that ndoms stays uninitialized\nonly if doms is NULL - but that flow is covered at the end of\ngenerate_sched_domains().\n\nHelp out GCC by initializing this variable to 0. (that\u0027s prudent anyway)\n\nAlso, this function needs a splitup and code flow simplification:\nwith 160 lines length it\u0027s clearly too long.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4cd4262034849da01eb88659af677b69f8169f06",
      "tree": "eaab94e7fd4a436bcead7efd6684405252f336c4",
      "parents": [
        "ee2f6cc7f9ea2542ad46070ed62ba7aa04d08871"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Nov 26 21:04:24 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Nov 27 10:29:52 2008 +0100"
      },
      "message": "sched: prevent divide by zero error in cpu_avg_load_per_task\n\nImpact: fix divide by zero crash in scheduler rebalance irq\n\nWhile testing the branch profiler, I hit this crash:\n\ndivide error: 0000 [#1] PREEMPT SMP\n[...]\nRIP: 0010:[\u003cffffffff8024a008\u003e]  [\u003cffffffff8024a008\u003e] cpu_avg_load_per_task+0x50/0x7f\n[...]\nCall Trace:\n \u003cIRQ\u003e \u003c0\u003e [\u003cffffffff8024fd43\u003e] find_busiest_group+0x3e5/0xcaa\n [\u003cffffffff8025da75\u003e] rebalance_domains+0x2da/0xa21\n [\u003cffffffff80478769\u003e] ? find_next_bit+0x1b2/0x1e6\n [\u003cffffffff8025e2ce\u003e] run_rebalance_domains+0x112/0x19f\n [\u003cffffffff8026d7c2\u003e] __do_softirq+0xa8/0x232\n [\u003cffffffff8020ea7c\u003e] call_softirq+0x1c/0x3e\n [\u003cffffffff8021047a\u003e] do_softirq+0x94/0x1cd\n [\u003cffffffff8026d5eb\u003e] irq_exit+0x6b/0x10e\n [\u003cffffffff8022e6ec\u003e] smp_apic_timer_interrupt+0xd3/0xff\n [\u003cffffffff8020e4b3\u003e] apic_timer_interrupt+0x13/0x20\n\nThe code for cpu_avg_load_per_task has:\n\n\tif (rq-\u003enr_running)\n\t\trq-\u003eavg_load_per_task \u003d rq-\u003eload.weight / rq-\u003enr_running;\n\nThe runqueue lock is not held here, and there is nothing that prevents\nthe rq-\u003enr_running from going to zero after it passes the if condition.\n\nThe branch profiler simply made the race window bigger.\n\nThis patch saves off the rq-\u003enr_running to a local variable and uses that\nfor both the condition and the division.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nPeter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4f5a7f40ddbae98569acbb99118a98570315579c",
      "tree": "82eca15746f525acc19fd9e3f33cb08c6c8bc3e6",
      "parents": [
        "fb91ee6cf5b8be5360acec577458e29ec7e97e5e"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Thu Nov 27 10:21:46 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Nov 27 10:11:53 2008 +0100"
      },
      "message": "ftrace: prevent recursion\n\nImpact: prevent unnecessary stack recursion\n\nif the resched flag was set before we entered, then don\u0027t reschedule.\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6ded6ab9be4f6164aef1c527407c1b94f0929799",
      "tree": "3a3f1275ffb0226e573fd1012db41de1861bc789",
      "parents": [
        "18b6e0414e42d95183f07d8177e3ff0241abd825"
      ],
      "author": {
        "name": "Serge Hallyn",
        "email": "serue@us.ibm.com",
        "time": "Mon Nov 24 16:24:10 2008 -0500"
      },
      "committer": {
        "name": "Serge E. Hallyn",
        "email": "serue@us.ibm.com",
        "time": "Mon Nov 24 18:57:46 2008 -0500"
      },
      "message": "User namespaces: use the current_user_ns() macro\n\nFix up the last current_user()-\u003euser_ns instance to use\ncurrent_user_ns().\n\nSigned-off-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\n"
    },
    {
      "commit": "18b6e0414e42d95183f07d8177e3ff0241abd825",
      "tree": "91ca2f2d442055e31eb7bb551bf7060f3f4c4cc7",
      "parents": [
        "9789cfe22e5d7bc10cad841a4ea96ecedb34b267"
      ],
      "author": {
        "name": "Serge Hallyn",
        "email": "serue@us.ibm.com",
        "time": "Wed Oct 15 16:38:45 2008 -0500"
      },
      "committer": {
        "name": "Serge E. Hallyn",
        "email": "serue@us.ibm.com",
        "time": "Mon Nov 24 18:57:41 2008 -0500"
      },
      "message": "User namespaces: set of cleanups (v2)\n\nThe user_ns is moved from nsproxy to user_struct, so that a struct\ncred by itself is sufficient to determine access (which it otherwise\nwould not be).  Corresponding ecryptfs fixes (by David Howells) are\nhere as well.\n\nFix refcounting.  The following rules now apply:\n        1. The task pins the user struct.\n        2. The user struct pins its user namespace.\n        3. The user namespace pins the struct user which created it.\n\nUser namespaces are cloned during copy_creds().  Unsharing a new user_ns\nis no longer possible.  (We could re-add that, but it\u0027ll cause code\nduplication and doesn\u0027t seem useful if PAM doesn\u0027t need to clone user\nnamespaces).\n\nWhen a user namespace is created, its first user (uid 0) gets empty\nkeyrings and a clean group_info.\n\nThis incorporates a previous patch by David Howells.  Here\nis his original patch description:\n\n\u003eI suggest adding the attached incremental patch.  It makes the following\n\u003echanges:\n\u003e\n\u003e (1) Provides a current_user_ns() macro to wrap accesses to current\u0027s user\n\u003e     namespace.\n\u003e\n\u003e (2) Fixes eCryptFS.\n\u003e\n\u003e (3) Renames create_new_userns() to create_user_ns() to be more consistent\n\u003e     with the other associated functions and because the \u0027new\u0027 in the name is\n\u003e     superfluous.\n\u003e\n\u003e (4) Moves the argument and permission checks made for CLONE_NEWUSER to the\n\u003e     beginning of do_fork() so that they\u0027re done prior to making any attempts\n\u003e     at allocation.\n\u003e\n\u003e (5) Calls create_user_ns() after prepare_creds(), and gives it the new creds\n\u003e     to fill in rather than have it return the new root user.  I don\u0027t imagine\n\u003e     the new root user being used for anything other than filling in a cred\n\u003e     struct.\n\u003e\n\u003e     This also permits me to get rid of a get_uid() and a free_uid(), as the\n\u003e     reference the creds were holding on the old user_struct can just be\n\u003e     transferred to the new namespace\u0027s creator pointer.\n\u003e\n\u003e (6) Makes create_user_ns() reset the UIDs and GIDs of the creds under\n\u003e     preparation rather than doing it in copy_creds().\n\u003e\n\u003eDavid\n\n\u003eSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\n\nChangelog:\n\tOct 20: integrate dhowells comments\n\t\t1. leave thread_keyring alone\n\t\t2. use current_user_ns() in set_user()\n\nSigned-off-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\n"
    },
    {
      "commit": "7ee1768ddb3075ae3a0801cc2d0ea4195530a7db",
      "tree": "403dea91103838cbe56bca586a8f41a470e7a1e4",
      "parents": [
        "522a110b42b306d696cf84e34c677ed0e7080194"
      ],
      "author": {
        "name": "Pekka Paalanen",
        "email": "pq@iki.fi",
        "time": "Sun Nov 23 21:24:30 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 23 20:33:23 2008 +0100"
      },
      "message": "x86, mmiotrace: fix buffer overrun detection\n\nImpact: fix mmiotrace overrun tracing\n\nWhen ftrace framework moved to use the ring buffer facility, the buffer\noverrun detection was broken after 2.6.27 by commit\n\n| commit 3928a8a2d98081d1bc3c0a84a2d70e29b90ecf1c\n| Author: Steven Rostedt \u003crostedt@goodmis.org\u003e\n| Date:   Mon Sep 29 23:02:41 2008 -0400\n|\n|     ftrace: make work with new ring buffer\n|\n|     This patch ports ftrace over to the new ring buffer.\n\nThe detection is now fixed by using the ring buffer API.\n\nWhen mmiotrace detects a buffer overrun, it will report the number of\nlost events. People reading an mmiotrace log must know if something was\nmissed, otherwise the data may not make sense.\n\nSigned-off-by: Pekka Paalanen \u003cpq@iki.fi\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9f1441644213e5f6faa150206399fe511eba2eb6",
      "tree": "e59d4e6475aa84f7e821a8c607deb56b85e19e95",
      "parents": [
        "3ff68a6a106c362a6811d3e51bced58e6fc87de7",
        "13d428afc007fcfcd6deeb215618f54cf9c0cae6"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 23 10:52:33 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 23 10:52:33 2008 +0100"
      },
      "message": "Merge commit \u0027v2.6.28-rc6\u0027 into irq/urgent\n"
    },
    {
      "commit": "b0788caf7af773b6c2374590dabd3a205f0918a8",
      "tree": "d98fec3093b87aa72b3484c994f90956da6e5905",
      "parents": [
        "13d428afc007fcfcd6deeb215618f54cf9c0cae6"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Nov 21 15:57:32 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Nov 21 08:59:40 2008 +0100"
      },
      "message": "lockdep: consistent alignement for lockdep info\n\nImpact: prettify /proc/lockdep_info\n\nJust feel odd that not all lines of lockdep info are aligned.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "522a110b42b306d696cf84e34c677ed0e7080194",
      "tree": "a77d238aed14185cb5662daae5f01f0da405a834",
      "parents": [
        "ed313489badef16d700f5a3be50e8fd8f8294bc8"
      ],
      "author": {
        "name": "Liming Wang",
        "email": "liming.wang@windriver.com",
        "time": "Fri Nov 21 11:00:18 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Nov 21 08:49:52 2008 +0100"
      },
      "message": "function tracing: fix wrong position computing of stack_trace\n\nImpact: make output of stack_trace complete if buffer overruns\n\nWhen read buffer overruns, the output of stack_trace isn\u0027t complete.\n\nWhen printing records with seq_printf in t_show, if the read buffer\nhas overruned by the current record, then this record won\u0027t be\nprinted to user space through read buffer, it will just be dropped in\nthis printing.\n\nWhen next printing, t_start should return the \"*pos\"th record, which\nis the one dropped by previous printing, but it just returns\n(m-\u003eprivate + *pos)th record.\n\nHere we use a more sane method to implement seq_operations which can\nbe found in kernel code. Thus we needn\u0027t initialize m-\u003eprivate.\n\nAbout testing, it\u0027s not easy to overrun read buffer, but we can use\nseq_printf to print more padding bytes in t_show, then it\u0027s easy to\ncheck whether or not records are lost.\n\nThis commit has been tested on both condition of overrun and non\noverrun.\n\nSigned-off-by: Liming Wang \u003climing.wang@windriver.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "95763dd52b4b9b3578d3428001ece1e11b016ffc",
      "tree": "fae1b9baa31810dcf45aa2fe2ab38a8fdbbd1a43",
      "parents": [
        "0260da162fa12c899b4377e71c243a631438c148",
        "6d5b43a67accf6793ed259f6534b4bd53b1e5696"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 20 13:11:21 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 20 13:11:21 2008 -0800"
      },
      "message": "Merge branch \u0027tracing-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027tracing-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  ftrace: fix dyn ftrace filter selection\n  ftrace: make filtered functions effective on setting\n  ftrace: fix set_ftrace_filter\n  trace: introduce missing mutex_unlock()\n  tracing: kernel/trace/trace.c: introduce missing kfree()\n"
    },
    {
      "commit": "33d283bef23132c48195eafc21449f8ba88fce6b",
      "tree": "e4a04851127f2f46122cb96fc13e8da71a7bcf10",
      "parents": [
        "ea7e743e49b94749fc739baaf160809ed279aeda"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Nov 19 15:36:48 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 19 18:50:00 2008 -0800"
      },
      "message": "cgroups: fix a serious bug in cgroupstats\n\nTry this, and you\u0027ll get oops immediately:\n # cd Documentation/accounting/\n # gcc -o getdelays getdelays.c\n # mount -t cgroup -o debug xxx /mnt\n # ./getdelays -C /mnt/tasks\n\nBecause a normal file\u0027s dentry-\u003ed_fsdata is a pointer to struct cftype,\nnot struct cgroup.\n\nAfter the patch, it returns EINVAL if we try to get cgroupstats\nfrom a normal file.\n\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Paul Menage \u003cmenage@google.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.25.x, 2.6.26.x, 2.6.27.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "966c8c12dc9e77f931e2281ba25d2f0244b06949",
      "tree": "8914c842252f6872cca006b482d32ee7a12da808",
      "parents": [
        "3fa59dfbc3b223f02c26593be69ce6fc9a940405"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Wed Nov 19 15:36:36 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 19 18:49:58 2008 -0800"
      },
      "message": "sprint_symbol(): use less stack\n\nsprint_symbol(), itself used when dumping stacks, has been wasting 128\nbytes of stack: lookup the symbol directly into the buffer supplied by the\ncaller, instead of using a locally declared namebuf.\n\nI believe the name !\u003d buffer strcpy() is obsolete: the design here dates\nfrom when module symbol lookup pointed into a supposedly const but sadly\nvolatile table; nowadays it copies, but an uncalled strcpy() looks better\nhere than the risk of a recursive BUG_ON().\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3fa59dfbc3b223f02c26593be69ce6fc9a940405",
      "tree": "d3d9df521342b49abc636e1ee465b704858b3e0d",
      "parents": [
        "0ae15132a4f5c758a6ffcde74495641dc3f62ba1"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Nov 19 15:36:34 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 19 18:49:58 2008 -0800"
      },
      "message": "cgroup: fix potential deadlock in pre_destroy\n\nAs Balbir pointed out, memcg\u0027s pre_destroy handler has potential deadlock.\n\nIt has following lock sequence.\n\n\tcgroup_mutex (cgroup_rmdir)\n\t    -\u003e pre_destroy -\u003e mem_cgroup_pre_destroy-\u003e force_empty\n\t\t-\u003e cpu_hotplug.lock. (lru_add_drain_all-\u003e\n\t\t\t\t      schedule_work-\u003e\n                                      get_online_cpus)\n\nBut, cpuset has following.\n\tcpu_hotplug.lock (call notifier)\n\t\t-\u003e cgroup_mutex. (within notifier)\n\nThen, this lock sequence should be fixed.\n\nConsidering how pre_destroy works, it\u0027s not necessary to holding\ncgroup_mutex() while calling it.\n\nAs a side effect, we don\u0027t have to wait at this mutex while memcg\u0027s\nforce_empty works.(it can be long when there are tons of pages.)\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f481891fdc49d3d1b8a9674a1825d183069a805f",
      "tree": "4f027a1321dcd06165394d0a23e49df51c8befc1",
      "parents": [
        "ac97b9f9a2d0b83488e0bbcb8517b229d5c9b142"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Nov 19 15:36:30 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 19 18:49:58 2008 -0800"
      },
      "message": "cpuset: update top cpuset\u0027s mems after adding a node\n\nAfter adding a node into the machine, top cpuset\u0027s mems isn\u0027t updated.\n\nBy reviewing the code, we found that the update function\n\n  cpuset_track_online_nodes()\n\nwas invoked after node_states[N_ONLINE] changes.  It is wrong because\nN_ONLINE just means node has pgdat, and if node has/added memory, we use\nN_HIGH_MEMORY.  So, We should invoke the update function after\nnode_states[N_HIGH_MEMORY] changes, just like its commit says.\n\nThis patch fixes it.  And we use notifier of memory hotplug instead of\ndirect calling of cpuset_track_online_nodes().\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nAcked-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Paul Menage \u003cmenage@google.com\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "de11defebf00007677fb7ee91d9b089b78786fbb",
      "tree": "8219faf1b7992be77a612e778c2573c55f56cf19",
      "parents": [
        "cf7ee554f3a324e98181b0ea249d9d5be3a0acb8"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Wed Nov 19 15:36:14 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 19 18:49:57 2008 -0800"
      },
      "message": "reintroduce accept4\n\nIntroduce a new accept4() system call.  The addition of this system call\nmatches analogous changes in 2.6.27 (dup3(), evenfd2(), signalfd4(),\ninotify_init1(), epoll_create1(), pipe2()) which added new system calls\nthat differed from analogous traditional system calls in adding a flags\nargument that can be used to access additional functionality.\n\nThe accept4() system call is exactly the same as accept(), except that\nit adds a flags bit-mask argument.  Two flags are initially implemented.\n(Most of the new system calls in 2.6.27 also had both of these flags.)\n\nSOCK_CLOEXEC causes the close-on-exec (FD_CLOEXEC) flag to be enabled\nfor the new file descriptor returned by accept4().  This is a useful\nsecurity feature to avoid leaking information in a multithreaded\nprogram where one thread is doing an accept() at the same time as\nanother thread is doing a fork() plus exec().  More details here:\nhttp://udrepper.livejournal.com/20407.html \"Secure File Descriptor Handling\",\nUlrich Drepper).\n\nThe other flag is SOCK_NONBLOCK, which causes the O_NONBLOCK flag\nto be enabled on the new open file description created by accept4().\n(This flag is merely a convenience, saving the use of additional calls\nfcntl(F_GETFL) and fcntl (F_SETFL) to achieve the same result.\n\nHere\u0027s a test program.  Works on x86-32.  Should work on x86-64, but\nI (mtk) don\u0027t have a system to hand to test with.\n\nIt tests accept4() with each of the four possible combinations of\nSOCK_CLOEXEC and SOCK_NONBLOCK set/clear in \u0027flags\u0027, and verifies\nthat the appropriate flags are set on the file descriptor/open file\ndescription returned by accept4().\n\nI tested Ulrich\u0027s patch in this thread by applying against 2.6.28-rc2,\nand it passes according to my test program.\n\n/* test_accept4.c\n\n  Copyright (C) 2008, Linux Foundation, written by Michael Kerrisk\n       \u003cmtk.manpages@gmail.com\u003e\n\n  Licensed under the GNU GPLv2 or later.\n*/\n#define _GNU_SOURCE\n#include \u003cunistd.h\u003e\n#include \u003csys/syscall.h\u003e\n#include \u003csys/socket.h\u003e\n#include \u003cnetinet/in.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cfcntl.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cstring.h\u003e\n\n#define PORT_NUM 33333\n\n#define die(msg) do { perror(msg); exit(EXIT_FAILURE); } while (0)\n\n/**********************************************************************/\n\n/* The following is what we need until glibc gets a wrapper for\n  accept4() */\n\n/* Flags for socket(), socketpair(), accept4() */\n#ifndef SOCK_CLOEXEC\n#define SOCK_CLOEXEC    O_CLOEXEC\n#endif\n#ifndef SOCK_NONBLOCK\n#define SOCK_NONBLOCK   O_NONBLOCK\n#endif\n\n#ifdef __x86_64__\n#define SYS_accept4 288\n#elif __i386__\n#define USE_SOCKETCALL 1\n#define SYS_ACCEPT4 18\n#else\n#error \"Sorry -- don\u0027t know the syscall # on this architecture\"\n#endif\n\nstatic int\naccept4(int fd, struct sockaddr *sockaddr, socklen_t *addrlen, int flags)\n{\n   printf(\"Calling accept4(): flags \u003d %x\", flags);\n   if (flags !\u003d 0) {\n       printf(\" (\");\n       if (flags \u0026 SOCK_CLOEXEC)\n           printf(\"SOCK_CLOEXEC\");\n       if ((flags \u0026 SOCK_CLOEXEC) \u0026\u0026 (flags \u0026 SOCK_NONBLOCK))\n           printf(\" \");\n       if (flags \u0026 SOCK_NONBLOCK)\n           printf(\"SOCK_NONBLOCK\");\n       printf(\")\");\n   }\n   printf(\"\\n\");\n\n#if USE_SOCKETCALL\n   long args[6];\n\n   args[0] \u003d fd;\n   args[1] \u003d (long) sockaddr;\n   args[2] \u003d (long) addrlen;\n   args[3] \u003d flags;\n\n   return syscall(SYS_socketcall, SYS_ACCEPT4, args);\n#else\n   return syscall(SYS_accept4, fd, sockaddr, addrlen, flags);\n#endif\n}\n\n/**********************************************************************/\n\nstatic int\ndo_test(int lfd, struct sockaddr_in *conn_addr,\n       int closeonexec_flag, int nonblock_flag)\n{\n   int connfd, acceptfd;\n   int fdf, flf, fdf_pass, flf_pass;\n   struct sockaddr_in claddr;\n   socklen_t addrlen;\n\n   printf(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\\n\");\n\n   connfd \u003d socket(AF_INET, SOCK_STREAM, 0);\n   if (connfd \u003d\u003d -1)\n       die(\"socket\");\n   if (connect(connfd, (struct sockaddr *) conn_addr,\n               sizeof(struct sockaddr_in)) \u003d\u003d -1)\n       die(\"connect\");\n\n   addrlen \u003d sizeof(struct sockaddr_in);\n   acceptfd \u003d accept4(lfd, (struct sockaddr *) \u0026claddr, \u0026addrlen,\n                      closeonexec_flag | nonblock_flag);\n   if (acceptfd \u003d\u003d -1) {\n       perror(\"accept4()\");\n       close(connfd);\n       return 0;\n   }\n\n   fdf \u003d fcntl(acceptfd, F_GETFD);\n   if (fdf \u003d\u003d -1)\n       die(\"fcntl:F_GETFD\");\n   fdf_pass \u003d ((fdf \u0026 FD_CLOEXEC) !\u003d 0) \u003d\u003d\n              ((closeonexec_flag \u0026 SOCK_CLOEXEC) !\u003d 0);\n   printf(\"Close-on-exec flag is %sset (%s); \",\n           (fdf \u0026 FD_CLOEXEC) ? \"\" : \"not \",\n           fdf_pass ? \"OK\" : \"failed\");\n\n   flf \u003d fcntl(acceptfd, F_GETFL);\n   if (flf \u003d\u003d -1)\n       die(\"fcntl:F_GETFD\");\n   flf_pass \u003d ((flf \u0026 O_NONBLOCK) !\u003d 0) \u003d\u003d\n              ((nonblock_flag \u0026 SOCK_NONBLOCK) !\u003d0);\n   printf(\"nonblock flag is %sset (%s)\\n\",\n           (flf \u0026 O_NONBLOCK) ? \"\" : \"not \",\n           flf_pass ? \"OK\" : \"failed\");\n\n   close(acceptfd);\n   close(connfd);\n\n   printf(\"Test result: %s\\n\", (fdf_pass \u0026\u0026 flf_pass) ? \"PASS\" : \"FAIL\");\n   return fdf_pass \u0026\u0026 flf_pass;\n}\n\nstatic int\ncreate_listening_socket(int port_num)\n{\n   struct sockaddr_in svaddr;\n   int lfd;\n   int optval;\n\n   memset(\u0026svaddr, 0, sizeof(struct sockaddr_in));\n   svaddr.sin_family \u003d AF_INET;\n   svaddr.sin_addr.s_addr \u003d htonl(INADDR_ANY);\n   svaddr.sin_port \u003d htons(port_num);\n\n   lfd \u003d socket(AF_INET, SOCK_STREAM, 0);\n   if (lfd \u003d\u003d -1)\n       die(\"socket\");\n\n   optval \u003d 1;\n   if (setsockopt(lfd, SOL_SOCKET, SO_REUSEADDR, \u0026optval,\n                  sizeof(optval)) \u003d\u003d -1)\n       die(\"setsockopt\");\n\n   if (bind(lfd, (struct sockaddr *) \u0026svaddr,\n            sizeof(struct sockaddr_in)) \u003d\u003d -1)\n       die(\"bind\");\n\n   if (listen(lfd, 5) \u003d\u003d -1)\n       die(\"listen\");\n\n   return lfd;\n}\n\nint\nmain(int argc, char *argv[])\n{\n   struct sockaddr_in conn_addr;\n   int lfd;\n   int port_num;\n   int passed;\n\n   passed \u003d 1;\n\n   port_num \u003d (argc \u003e 1) ? atoi(argv[1]) : PORT_NUM;\n\n   memset(\u0026conn_addr, 0, sizeof(struct sockaddr_in));\n   conn_addr.sin_family \u003d AF_INET;\n   conn_addr.sin_addr.s_addr \u003d htonl(INADDR_LOOPBACK);\n   conn_addr.sin_port \u003d htons(port_num);\n\n   lfd \u003d create_listening_socket(port_num);\n\n   if (!do_test(lfd, \u0026conn_addr, 0, 0))\n       passed \u003d 0;\n   if (!do_test(lfd, \u0026conn_addr, SOCK_CLOEXEC, 0))\n       passed \u003d 0;\n   if (!do_test(lfd, \u0026conn_addr, 0, SOCK_NONBLOCK))\n       passed \u003d 0;\n   if (!do_test(lfd, \u0026conn_addr, SOCK_CLOEXEC, SOCK_NONBLOCK))\n       passed \u003d 0;\n\n   close(lfd);\n\n   exit(passed ? EXIT_SUCCESS : EXIT_FAILURE);\n}\n\n[mtk.manpages@gmail.com: rewrote changelog, updated test program]\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nTested-by: Michael Kerrisk \u003cmtk.manpages@gmail.com\u003e\nAcked-by: Michael Kerrisk \u003cmtk.manpages@gmail.com\u003e\nCc: \u003clinux-api@vger.kernel.org\u003e\nCc: \u003clinux-arch@vger.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": "6d5b43a67accf6793ed259f6534b4bd53b1e5696",
      "tree": "b22f2b7dc929b523faf63d2734d8b22b5fd4a843",
      "parents": [
        "641d2f63cfe24539e154efa2f932937934c27dde",
        "32464779a1b8c15e9aa9aa0306b2f735080df9d8"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 19 09:00:50 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 19 09:00:50 2008 +0100"
      },
      "message": "Merge branch \u0027tip/urgent\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent\n"
    },
    {
      "commit": "32464779a1b8c15e9aa9aa0306b2f735080df9d8",
      "tree": "c26673645d5695f29b15a743476b76ce44048218",
      "parents": [
        "820432783190b4096499e38a4a4d7095c511913d"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Nov 18 20:33:02 2008 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Nov 19 00:19:47 2008 -0500"
      },
      "message": "ftrace: fix dyn ftrace filter selection\n\nImpact: clean up and fix for dyn ftrace filter selection\n\nThe previous logic of the dynamic ftrace selection of enabling\nor disabling functions was complex and incorrect. This patch simplifies\nthe code and corrects the usage. This simplification also makes the\ncode more robust.\n\nHere is the correct logic:\n\n  Given a function that can be traced by dynamic ftrace:\n\n  If the function is not to be traced, disable it if it was enabled.\n  (this is if the function is in the set_ftrace_notrace file)\n\n  (filter is on if there exists any functions in set_ftrace_filter file)\n\n  If the filter is on, and we are enabling functions:\n    If the function is in set_ftrace_filter, enable it if it is not\n      already enabled.\n    If the function is not in set_ftrace_filter, disable it if it is not\n      already disabled.\n\n  Otherwise, if the filter is off and we are enabling function tracing:\n    Enable the function if it is not already enabled.\n\n  Otherwise, if we are disabling function tracing:\n    Disable the function if it is not already disabled.\n\nThis code now sets or clears the ENABLED flag in the record, and at the\nend it will enable the function if the flag is set, or disable the function\nif the flag is cleared.\n\nThe parameters for the function that does the above logic is also\nsimplified. Instead of passing in confusing \"new\" and \"old\" where\nthey might be swapped if the \"enabled\" flag is not set. The old logic\neven had one of the above always NULL and had to be filled in. The new\nlogic simply passes in one parameter called \"nop\". A \"call\" is calculated\nin the code, and at the end of the logic, when we know we need to either\ndisable or enable the function, we can then use the \"nop\" and \"call\"\nproperly.\n\nThis code is more robust than the previous version.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "820432783190b4096499e38a4a4d7095c511913d",
      "tree": "d8300e0853c44fbc157625a1b57f55c7162d01c9",
      "parents": [
        "f10ed36ec1118c6f9523cd7e53cb0aadb53efe9f"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Nov 18 23:57:14 2008 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Nov 19 00:18:54 2008 -0500"
      },
      "message": "ftrace: make filtered functions effective on setting\n\nImpact: fix filter selection to apply when set\n\nIt can be confusing when the set_filter_functions is set (or cleared)\nand the functions being recorded by the dynamic tracer does not\nmatch.\n\nThis patch causes the code to be updated if the function tracer is\nenabled and the filter is changed.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f10ed36ec1118c6f9523cd7e53cb0aadb53efe9f",
      "tree": "d3f801ab1c8ab58642b04a0f5a51b25741261667",
      "parents": [
        "1e74f3000b86969de421ca0da08f42e7d21cbd99"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Nov 07 22:36:02 2008 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Nov 19 00:17:45 2008 -0500"
      },
      "message": "ftrace: fix set_ftrace_filter\n\nImpact: fix of output of set_ftrace_filter\n\nThe commit \"ftrace: do not show freed records in\n             available_filter_functions\"\n\nRemoved a bit too much from the set_ftrace_filter code, where we now see\nall functions in the set_ftrace_filter file even when we set a filter.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "641d2f63cfe24539e154efa2f932937934c27dde",
      "tree": "fdd8dce64b14efecffb062480ad02bf2e57ac041",
      "parents": [
        "5177dc3f2b3220b2dcfcf35eb9e6ec53ee818231"
      ],
      "author": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Tue Nov 18 19:22:13 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 18 21:37:15 2008 +0100"
      },
      "message": "trace: introduce missing mutex_unlock()\n\nImpact: fix tracing buffer mutex leak in case of allocation failure\n\nThis error was spotted by this semantic patch:\n\n  http://www.emn.fr/x-info/coccinelle/mut.html\n\nIt looks correct as far as I can tell. Please review.\n\nSigned-off-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5177dc3f2b3220b2dcfcf35eb9e6ec53ee818231",
      "tree": "29dd80a7b33426d0890aa07b5864224557c62af7",
      "parents": [
        "0bb943c7a2136716757a263f604d26309fd98042",
        "7f0f598a0069d1ab072375965a4b69137233169c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 18 21:37:07 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 18 21:37:07 2008 +0100"
      },
      "message": "Merge branch \u0027linus\u0027 into tracing/urgent\n"
    },
    {
      "commit": "7f0f598a0069d1ab072375965a4b69137233169c",
      "tree": "00cb9320e0caef179d6075b54fa611de6551e3e2",
      "parents": [
        "a6a0c4ca7edb378a8a7332501f097089cb1051c4",
        "c26156b2534c75bb3cdedf76f6ad1340971cf5bd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 18 08:07:51 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 18 08:07:51 2008 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block:\n  block: hold extra reference to bio in blk_rq_map_user_iov()\n  relay: fix cpu offline problem\n  Release old elevator on change elevator\n  block: fix boot failure with CONFIG_DEBUG_BLOCK_EXT_DEVT\u003dy and nash\n  block/md: fix md autodetection\n  block: make add_partition() return pointer to hd_struct\n  block: fix add_partition() error path\n"
    },
    {
      "commit": "a6a0c4ca7edb378a8a7332501f097089cb1051c4",
      "tree": "afc4bd95482576e7dfd0685d1cb2bed6cac65db9",
      "parents": [
        "72b51a6b4d803381f16d819df392dd1efd1c7181"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Tue Nov 18 06:56:51 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 18 08:07:36 2008 -0800"
      },
      "message": "suspend: use WARN not WARN_ON to print the message\n\nBy using WARN(), kerneloops.org can collect which component is causing\nthe delay and make statistics about that. suspend_test_finish() is\ncurrently the number 2 item but unless we can collect who\u0027s causing\nit we\u0027re not going to be able to fix the hot topic ones..\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "72b51a6b4d803381f16d819df392dd1efd1c7181",
      "tree": "7e27a03c10cb2f5e6593dd599b3c8b0bcd0f9ee9",
      "parents": [
        "8c60bfb0666952728b3be73ef9bc133d686aebba",
        "e270219f4372b58bd3eeac12bd9f7edc592b8f6b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 18 08:06:35 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 18 08:06:35 2008 -0800"
      },
      "message": "Merge branch \u0027tracing-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027tracing-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  kernel/profile.c: fix section mismatch warning\n  function tracing: fix wrong pos computing when read buffer has been fulfilled\n  tracing: fix mmiotrace resizing crash\n  ring-buffer: no preempt for sched_clock()\n  ring-buffer: buffer record on/off switch\n"
    },
    {
      "commit": "8c60bfb0666952728b3be73ef9bc133d686aebba",
      "tree": "d532c12f7e414ee3ce6ed3bda912fa145e96de29",
      "parents": [
        "b6584065ee833dcec20683be7fc25da3f2268cee",
        "700018e0a77b4113172257fcdaa1c58e27a5074f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 18 08:06:21 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 18 08:06:21 2008 -0800"
      },
      "message": "Merge branch \u0027sched-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027sched-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  cpuset: fix regression when failed to generate sched domains\n  sched, signals: fix the racy usage of -\u003esignal in account_group_xxx/run_posix_cpu_timers\n  sched: fix kernel warning on /proc/sched_debug access\n  sched: correct sched-rt-group.txt pathname in init/Kconfig\n"
    },
    {
      "commit": "0bb943c7a2136716757a263f604d26309fd98042",
      "tree": "80af655ff3272a820a9090e6fa08c9e6472f0bed",
      "parents": [
        "e270219f4372b58bd3eeac12bd9f7edc592b8f6b"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Fri Nov 14 19:05:31 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 18 16:59:58 2008 +0100"
      },
      "message": "tracing: kernel/trace/trace.c: introduce missing kfree()\n\nImpact: fix memory leak\n\nError handling code following a kzalloc should free the allocated data.\n\nThe semantic match that finds the problem is as follows:\n(http://www.emn.fr/x-info/coccinelle/)\n\n// \u003csmpl\u003e\n@r exists@\nlocal idexpression x;\nstatement S;\nexpression E;\nidentifier f,l;\nposition p1,p2;\nexpression *ptr !\u003d NULL;\n@@\n\n(\nif ((x@p1 \u003d \\(kmalloc\\|kzalloc\\|kcalloc\\)(...)) \u003d\u003d NULL) S\n|\nx@p1 \u003d \\(kmalloc\\|kzalloc\\|kcalloc\\)(...);\n...\nif (x \u003d\u003d NULL) S\n)\n\u003c... when !\u003d x\n     when !\u003d if (...) { \u003c+...x...+\u003e }\nx-\u003ef \u003d E\n...\u003e\n(\n return \\(0\\|\u003c+...x...+\u003e\\|ptr\\);\n|\n return@p2 ...;\n)\n\n@script:python@\np1 \u003c\u003c r.p1;\np2 \u003c\u003c r.p2;\n@@\n\nprint \"* file: %s kmalloc %s return %s\" % (p1[0].file,p1[0].line,p2[0].line)\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "98ba4031ab2adc8b394295e68aa4c8fe9d5060db",
      "tree": "893ac2f6e4efddf79c192e4bae512e3a3f864baa",
      "parents": [
        "68aee07f9bad2c830a898cf6d6bfc11ea24efc40"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Fri Nov 14 10:44:59 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Nov 18 15:08:56 2008 +0100"
      },
      "message": "relay: fix cpu offline problem\n\nrelay_open() will close allocated buffers when failed.\nbut if cpu offlined, some buffer will not be closed.\nthis patch fixed it.\n\nand did cleanup for relay_reset() too.\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "f3a5c547012a09f38f7c27b17a8e3150b69cd259",
      "tree": "4d1d47382a4a445fc7ef7431bcf5d06b7cca8539",
      "parents": [
        "e50a906e0200084f04f8f3b7c3a14b0442d1347f",
        "4e14e833ac3b97a4aa8803eea49f899adc5bb5f4"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Nov 18 18:52:37 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Nov 18 18:52:37 2008 +1100"
      },
      "message": "Merge branch \u0027master\u0027 into next\n\nConflicts:\n\tfs/cifs/misc.c\n\nMerge to resolve above, per the patch below.\n\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n\ndiff --cc fs/cifs/misc.c\nindex ec36410,addd1dc..0000000\n--- a/fs/cifs/misc.c\n+++ b/fs/cifs/misc.c\n@@@ -347,13 -338,13 +338,13 @@@ header_assemble(struct smb_hdr *buffer\n  \t\t/*  BB Add support for establishing new tCon and SMB Session  */\n  \t\t/*      with userid/password pairs found on the smb session   */\n  \t\t/*\tfor other target tcp/ip addresses \t\tBB    */\n -\t\t\t\tif (current-\u003efsuid !\u003d treeCon-\u003eses-\u003elinux_uid) {\n +\t\t\t\tif (current_fsuid() !\u003d treeCon-\u003eses-\u003elinux_uid) {\n  \t\t\t\t\tcFYI(1, (\"Multiuser mode and UID \"\n  \t\t\t\t\t\t \"did not match tcon uid\"));\n- \t\t\t\t\tread_lock(\u0026GlobalSMBSeslock);\n- \t\t\t\t\tlist_for_each(temp_item, \u0026GlobalSMBSessionList) {\n- \t\t\t\t\t\tses \u003d list_entry(temp_item, struct cifsSesInfo, cifsSessionList);\n+ \t\t\t\t\tread_lock(\u0026cifs_tcp_ses_lock);\n+ \t\t\t\t\tlist_for_each(temp_item, \u0026treeCon-\u003eses-\u003eserver-\u003esmb_ses_list) {\n+ \t\t\t\t\t\tses \u003d list_entry(temp_item, struct cifsSesInfo, smb_ses_list);\n -\t\t\t\t\t\tif (ses-\u003elinux_uid \u003d\u003d current-\u003efsuid) {\n +\t\t\t\t\t\tif (ses-\u003elinux_uid \u003d\u003d current_fsuid()) {\n  \t\t\t\t\t\t\tif (ses-\u003eserver \u003d\u003d treeCon-\u003eses-\u003eserver) {\n  \t\t\t\t\t\t\t\tcFYI(1, (\"found matching uid substitute right smb_uid\"));\n  \t\t\t\t\t\t\t\tbuffer-\u003eUid \u003d ses-\u003eSuid;\n"
    },
    {
      "commit": "e270219f4372b58bd3eeac12bd9f7edc592b8f6b",
      "tree": "0b7a2eafcc19d20e0fdd05b4525ea8b8684e73f5",
      "parents": [
        "5821e1b74f0d08952cb5da4bfd2d9a388d8df58e"
      ],
      "author": {
        "name": "Rakib Mullick",
        "email": "rakib.mullick@gmail.com",
        "time": "Tue Nov 18 10:15:24 2008 +0600"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 18 08:49:24 2008 +0100"
      },
      "message": "kernel/profile.c: fix section mismatch warning\n\nImpact: fix section mismatch warning in kernel/profile.c\n\nHere, profile_nop function has been called from a non-init function\ncreate_hash_tables(void). Which generetes a section mismatch warning.\nPreviously, create_hash_tables(void) was a init function. So, removing\n__init from create_hash_tables(void) requires profile_nop to be\nnon-init.\n\nThis patch makes profile_nop function inline and fixes the\nfollowing warning:\n\n WARNING: vmlinux.o(.text+0x6ebb6): Section mismatch in reference from\n the function create_hash_tables() to the function\n .init.text:profile_nop()\n The function create_hash_tables() references\n the function __init profile_nop().\n This is often because create_hash_tables lacks a __init\n annotation or the annotation of profile_nop is wrong.\n\nSigned-off-by: Rakib Mullick \u003crakib.mullick@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "700018e0a77b4113172257fcdaa1c58e27a5074f",
      "tree": "60ea1cc7682b19203e1caab15ebb2285153eeee7",
      "parents": [
        "ad133ba3dc283300e5b62b5b7211d2f39fbf6ee7"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Nov 18 14:02:03 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 18 08:44:51 2008 +0100"
      },
      "message": "cpuset: fix regression when failed to generate sched domains\n\nImpact: properly rebuild sched-domains on kmalloc() failure\n\nWhen cpuset failed to generate sched domains due to kmalloc()\nfailure, the scheduler should fallback to the single partition\n\u0027fallback_doms\u0027 and rebuild sched domains, but now it only\ndestroys but not rebuilds sched domains.\n\nThe regression was introduced by:\n\n| commit dfb512ec4834116124da61d6c1ee10fd0aa32bd6\n| Author: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\n| Date:   Fri Aug 29 13:11:41 2008 -0700\n|\n|    sched: arch_reinit_sched_domains() must destroy domains to force rebuild\n\nAfter the above commit, partition_sched_domains(0, NULL, NULL) will\nonly destroy sched domains and partition_sched_domains(1, NULL, NULL)\nwill create the default sched domain.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "65ecc14a30ad21bed9aabdfd6a2ae1a1aaaa6a00",
      "tree": "0245f08c672b54a914df9bbb54dff98ed685a3c7",
      "parents": [
        "e77a20e8ef6784586cfd66f4346af88ddb11173f"
      ],
      "author": {
        "name": "Kumar Gala",
        "email": "galak@kernel.crashing.org",
        "time": "Sat Nov 15 12:02:34 2008 -0600"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 17 13:24:35 2008 -0800"
      },
      "message": "Remove -mno-spe flags as they dont belong\n\nFor some unknown reason at Steven Rostedt added in disabling of the SPE\ninstruction generation for e500 based PPC cores in commit\n6ec562328fda585be2d7f472cfac99d3b44d362a.\n\nWe are removing it because:\n\n1. It generates e500 kernels that don\u0027t work\n2. its not the correct set of flags to do this\n3. we handle this in the arch/powerpc/Makefile already\n4. its unknown in talking to Steven why he did this\n\nSigned-off-by: Kumar Gala \u003cgalak@kernel.crashing.org\u003e\nTested-and-Acked-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ad133ba3dc283300e5b62b5b7211d2f39fbf6ee7",
      "tree": "4762492d6c564e0ac1ec47122a0d0d49b0d41e90",
      "parents": [
        "29d7b90c15035741d15421b36000509212b3e135"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Nov 17 15:39:47 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Nov 17 16:49:35 2008 +0100"
      },
      "message": "sched, signals: fix the racy usage of -\u003esignal in account_group_xxx/run_posix_cpu_timers\n\nImpact: fix potential NULL dereference\n\nContrary to ad474caca3e2a0550b7ce0706527ad5ab389a4d4 changelog, other\nacct_group_xxx() helpers can be called after exit_notify() by timer tick.\nThanks to Roland for pointing out this. Somehow I missed this simple fact\nwhen I read the original patch, and I am afraid I confused Frank during\nthe discussion. Sorry.\n\nFortunately, these helpers work with current, we can check -\u003eexit_state\nto ensure that -\u003esignal can\u0027t go away under us.\n\nAlso, add the comment and compiler barrier to account_group_exec_runtime(),\nto make sure we load -\u003esignal only once.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e14c8bf86350f6c39186a139c5c584a6111b2f01",
      "tree": "c1e0b08fc5b8efff001aecf5e6fb803423bd1c71",
      "parents": [
        "5c06fe772da43db63b053addcd2c267f76d0be91"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Nov 17 08:22:18 2008 +1030"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 16 15:09:52 2008 -0800"
      },
      "message": "stop_machine: fix race with return value (fixes Bug #11989)\n\nBug #11989: Suspend failure on NForce4-based boards due to chanes in\nstop_machine\n\nWe should not access active.fnret outside the lock; in theory the next\nstop_machine could overwrite it.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nTested-by: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5821e1b74f0d08952cb5da4bfd2d9a388d8df58e",
      "tree": "e7bade7c500b2d4cd4d8c811a26c844c6f529366",
      "parents": [
        "ee51a1de7e3837577412be269e0100038068e691"
      ],
      "author": {
        "name": "walimis",
        "email": "walimisdev@gmail.com",
        "time": "Sat Nov 15 15:19:06 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 16 08:32:05 2008 +0100"
      },
      "message": "function tracing: fix wrong pos computing when read buffer has been fulfilled\n\nImpact: make output of available_filter_functions complete\n\nphenomenon:\n\nThe first value of dyn_ftrace_total_info is not equal with\n`cat available_filter_functions | wc -l`, but they should be equal.\n\nroot cause:\n\nWhen printing functions with seq_printf in t_show, if the read buffer\nis just overflowed by current function record, then this function\nwon\u0027t be printed to user space through read buffer, it will\njust be dropped. So we can\u0027t see this function printing.\n\nSo, every time the last function to fill the read buffer, if overflowed,\nwill be dropped.\n\nThis also applies to set_ftrace_filter if set_ftrace_filter has\nmore bytes than read buffer.\n\nfix:\n\nThrough checking return value of seq_printf, if less than 0, we know\nthis function doesn\u0027t be printed. Then we decrease position to force\nthis function to be printed next time, in next read buffer.\n\nAnother little fix is to show correct allocating pages count.\n\nSigned-off-by: walimis \u003cwalimisdev@gmail.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "29d7b90c15035741d15421b36000509212b3e135",
      "tree": "a9978411950af9c4dbebcc82a944fef35a58f209",
      "parents": [
        "2fe401e38602e853e01376cdb670b0bc4d526a6d"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 16 08:07:15 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 16 08:07:15 2008 +0100"
      },
      "message": "sched: fix kernel warning on /proc/sched_debug access\n\nLuis Henriques reported that with CONFIG_PREEMPT\u003dy + CONFIG_PREEMPT_DEBUG\u003dy +\nCONFIG_SCHED_DEBUG\u003dy + CONFIG_LATENCYTOP\u003dy enabled, the following warning\ntriggers when using latencytop:\n\n\u003e [  775.663239] BUG: using smp_processor_id() in preemptible [00000000] code: latencytop/6585\n\u003e [  775.663303] caller is native_sched_clock+0x3a/0x80\n\u003e [  775.663314] Pid: 6585, comm: latencytop Tainted: G        W 2.6.28-rc4-00355-g9c7c354 #1\n\u003e [  775.663322] Call Trace:\n\u003e [  775.663343]  [\u003cffffffff803a94e4\u003e] debug_smp_processor_id+0xe4/0xf0\n\u003e [  775.663356]  [\u003cffffffff80213f7a\u003e] native_sched_clock+0x3a/0x80\n\u003e [  775.663368]  [\u003cffffffff80213e19\u003e] sched_clock+0x9/0x10\n\u003e [  775.663381]  [\u003cffffffff8024550d\u003e] proc_sched_show_task+0x8bd/0x10e0\n\u003e [  775.663395]  [\u003cffffffff8034466e\u003e] sched_show+0x3e/0x80\n\u003e [  775.663408]  [\u003cffffffff8031039b\u003e] seq_read+0xdb/0x350\n\u003e [  775.663421]  [\u003cffffffff80368776\u003e] ? security_file_permission+0x16/0x20\n\u003e [  775.663435]  [\u003cffffffff802f4198\u003e] vfs_read+0xc8/0x170\n\u003e [  775.663447]  [\u003cffffffff802f4335\u003e] sys_read+0x55/0x90\n\u003e [  775.663460]  [\u003cffffffff8020c67a\u003e] system_call_fastpath+0x16/0x1b\n\u003e ...\n\nThis breakage was caused by me via:\n\n  7cbaef9: sched: optimize sched_clock() a bit\n\nChange the calls to cpu_clock().\n\nReported-by: Luis Henriques \u003chenrix@sapo.pt\u003e\n"
    },
    {
      "commit": "8f7b0ba1c853919b85b54774775f567f30006107",
      "tree": "1acd2b7ed5ed0de3eecfff9da5da4e779731f8a8",
      "parents": [
        "0d3b71009737511ea937ac405205fd8214b898bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Sat Nov 15 01:15:43 2008 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Nov 15 12:26:44 2008 -0800"
      },
      "message": "Fix inotify watch removal/umount races\n\nInotify watch removals suck violently.\n\nTo kick the watch out we need (in this order) inode-\u003einotify_mutex and\nih-\u003emutex.  That\u0027s fine if we have a hold on inode; however, for all\nother cases we need to make damn sure we don\u0027t race with umount.  We can\n*NOT* just grab a reference to a watch - inotify_unmount_inodes() will\nhappily sail past it and we\u0027ll end with reference to inode potentially\noutliving its superblock.\n\nIdeally we just want to grab an active reference to superblock if we\ncan; that will make sure we won\u0027t go into inotify_umount_inodes() until\nwe are done.  Cleanup is just deactivate_super().\n\nHowever, that leaves a messy case - what if we *are* racing with\numount() and active references to superblock can\u0027t be acquired anymore?\nWe can bump -\u003es_count, grab -\u003es_umount, which will almost certainly wait\nuntil the superblock is shut down and the watch in question is pining\nfor fjords.  That\u0027s fine, but there is a problem - we might have hit the\nwindow between -\u003es_active getting to 0 / -\u003es_count - below S_BIAS (i.e.\nthe moment when superblock is past the point of no return and is heading\nfor shutdown) and the moment when deactivate_super() acquires\n-\u003es_umount.\n\nWe could just do drop_super() yield() and retry, but that\u0027s rather\nantisocial and this stuff is luser-triggerable.  OTOH, having grabbed\n-\u003es_umount and having found that we\u0027d got there first (i.e.  that\n-\u003es_root is non-NULL) we know that we won\u0027t race with\ninotify_umount_inodes().\n\nSo we could grab a reference to watch and do the rest as above, just\nwith drop_super() instead of deactivate_super(), right? Wrong.  We had\nto drop ih-\u003emutex before we could grab -\u003es_umount.  So the watch\ncould\u0027ve been gone already.\n\nThat still can be dealt with - we need to save watch-\u003ewd, do idr_find()\nand compare its result with our pointer.  If they match, we either have\nthe damn thing still alive or we\u0027d lost not one but two races at once,\nthe watch had been killed and a new one got created with the same -\u003ewd\nat the same address.  That couldn\u0027t have happened in inotify_destroy(),\nbut inotify_rm_wd() could run into that.  Still, \"new one got created\"\nis not a problem - we have every right to kill it or leave it alone,\nwhatever\u0027s more convenient.\n\nSo we can use idr_find(...) \u003d\u003d watch \u0026\u0026 watch-\u003einode-\u003ei_sb \u003d\u003d sb as\n\"grab it and kill it\" check.  If it\u0027s been our original watch, we are\nfine, if it\u0027s a newcomer - nevermind, just pretend that we\u0027d won the\nrace and kill the fscker anyway; we are safe since we know that its\nsuperblock won\u0027t be going away.\n\nAnd yes, this is far beyond mere \"not very pretty\"; so\u0027s the entire\nconcept of inotify to start with.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nAcked-by: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8141c7f3e7aee618312fa1c15109e1219de784a7",
      "tree": "25513fc1c260af053fb9facf92df5b59bfe74c3a",
      "parents": [
        "9c7c354645535555785eb937dd46388b55e690d0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Nov 15 10:20:36 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Nov 15 10:20:36 2008 -0800"
      },
      "message": "Move \"exit_robust_list\" into mm_release()\n\nWe don\u0027t want to get rid of the futexes just at exit() time, we want to\ndrop them when doing an execve() too, since that gets rid of the\nprevious VM image too.\n\nDoing it at mm_release() time means that we automatically always do it\nwhen we disassociate a VM map from the task.\n\nReported-by: pageexec@freemail.hu\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Brad Spengler \u003cspender@grsecurity.net\u003e\nCc: Alex Efros \u003cpowerman@powerman.name\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2b828925652340277a889cbc11b2d0637f7cdaf7",
      "tree": "32fcb3d3e466fc419fad2d3717956a5b5ad3d35a",
      "parents": [
        "3a3b7ce9336952ea7b9564d976d068a238976c9d",
        "58e20d8d344b0ee083febb18c2b021d2427e56ca"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 11:29:12 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 11:29:12 2008 +1100"
      },
      "message": "Merge branch \u0027master\u0027 into next\n\nConflicts:\n\tsecurity/keys/internal.h\n\tsecurity/keys/process_keys.c\n\tsecurity/keys/request_key.c\n\nFixed conflicts above by using the non \u0027tsk\u0027 versions.\n\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "3a3b7ce9336952ea7b9564d976d068a238976c9d",
      "tree": "3f0a3be33022492161f534636a20a4b1059f8236",
      "parents": [
        "1bfdc75ae077d60a01572a7781ec6264d55ab1b9"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:28 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:28 2008 +1100"
      },
      "message": "CRED: Allow kernel services to override LSM settings for task actions\n\nAllow kernel services to override LSM settings appropriate to the actions\nperformed by a task by duplicating a set of credentials, modifying it and then\nusing task_struct::cred to point to it when performing operations on behalf of\na task.\n\nThis is used, for example, by CacheFiles which has to transparently access the\ncache on behalf of a process that thinks it is doing, say, NFS accesses with a\npotentially inappropriate (with respect to accessing the cache) set of\ncredentials.\n\nThis patch provides two LSM hooks for modifying a task security record:\n\n (*) security_kernel_act_as() which allows modification of the security datum\n     with which a task acts on other objects (most notably files).\n\n (*) security_kernel_create_files_as() which allows modification of the\n     security datum that is used to initialise the security data on a file that\n     a task creates.\n\nThe patch also provides four new credentials handling functions, which wrap the\nLSM functions:\n\n (1) prepare_kernel_cred()\n\n     Prepare a set of credentials for a kernel service to use, based either on\n     a daemon\u0027s credentials or on init_cred.  All the keyrings are cleared.\n\n (2) set_security_override()\n\n     Set the LSM security ID in a set of credentials to a specific security\n     context, assuming permission from the LSM policy.\n\n (3) set_security_override_from_ctx()\n\n     As (2), but takes the security context as a string.\n\n (4) set_create_files_as()\n\n     Set the file creation LSM security ID in a set of credentials to be the\n     same as that on a particular inode.\n\nSigned-off-by: Casey Schaufler \u003ccasey@schaufler-ca.com\u003e [Smack changes]\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "3b11a1decef07c19443d24ae926982bc8ec9f4c0",
      "tree": "b6555f0e5b07f4b2badd332a0a900b974920c49d",
      "parents": [
        "98870ab0a5a3f1822aee681d2997017e1c87d026"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:26 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:26 2008 +1100"
      },
      "message": "CRED: Differentiate objective and effective subjective credentials on a task\n\nDifferentiate the objective and real subjective credentials from the effective\nsubjective credentials on a task by introducing a second credentials pointer\ninto the task_struct.\n\ntask_struct::real_cred then refers to the objective and apparent real\nsubjective credentials of a task, as perceived by the other tasks in the\nsystem.\n\ntask_struct::cred then refers to the effective subjective credentials of a\ntask, as used by that task when it\u0027s actually running.  These are not visible\nto the other tasks in the system.\n\n__task_cred(task) then refers to the objective/real credentials of the task in\nquestion.\n\ncurrent_cred() refers to the effective subjective credentials of the current\ntask.\n\nprepare_creds() uses the objective creds as a base and commit_creds() changes\nboth pointers in the task_struct (indeed commit_creds() requires them to be the\nsame).\n\noverride_creds() and revert_creds() change the subjective creds pointer only,\nand the former returns the old subjective creds.  These are used by NFSD,\nfaccessat() and do_coredump(), and will by used by CacheFiles.\n\nIn SELinux, current_has_perm() is provided as an alternative to\ntask_has_perm().  This uses the effective subjective context of current,\nwhereas task_has_perm() uses the objective/real context of the subject.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "98870ab0a5a3f1822aee681d2997017e1c87d026",
      "tree": "4f28b9732777b114d5ef2f1647289a48e00a6fda",
      "parents": [
        "d76b0d9b2d87cfc95686e148767cbf7d0e22bdc0"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:26 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:26 2008 +1100"
      },
      "message": "CRED: Documentation\n\nDocument credentials and the new credentials API.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "a6f76f23d297f70e2a6b3ec607f7aeeea9e37e8d",
      "tree": "8f95617996d0974507f176163459212a7def8b9a",
      "parents": [
        "d84f4f992cbd76e8f39c488cf0c5d123843923b1"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:24 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:24 2008 +1100"
      },
      "message": "CRED: Make execve() take advantage of copy-on-write credentials\n\nMake execve() take advantage of copy-on-write credentials, allowing it to set\nup the credentials in advance, and then commit the whole lot after the point\nof no return.\n\nThis patch and the preceding patches have been tested with the LTP SELinux\ntestsuite.\n\nThis patch makes several logical sets of alteration:\n\n (1) execve().\n\n     The credential bits from struct linux_binprm are, for the most part,\n     replaced with a single credentials pointer (bprm-\u003ecred).  This means that\n     all the creds can be calculated in advance and then applied at the point\n     of no return with no possibility of failure.\n\n     I would like to replace bprm-\u003ecap_effective with:\n\n\tcap_isclear(bprm-\u003ecap_effective)\n\n     but this seems impossible due to special behaviour for processes of pid 1\n     (they always retain their parent\u0027s capability masks where normally they\u0027d\n     be changed - see cap_bprm_set_creds()).\n\n     The following sequence of events now happens:\n\n     (a) At the start of do_execve, the current task\u0027s cred_exec_mutex is\n     \t locked to prevent PTRACE_ATTACH from obsoleting the calculation of\n     \t creds that we make.\n\n     (a) prepare_exec_creds() is then called to make a copy of the current\n     \t task\u0027s credentials and prepare it.  This copy is then assigned to\n     \t bprm-\u003ecred.\n\n  \t This renders security_bprm_alloc() and security_bprm_free()\n     \t unnecessary, and so they\u0027ve been removed.\n\n     (b) The determination of unsafe execution is now performed immediately\n     \t after (a) rather than later on in the code.  The result is stored in\n     \t bprm-\u003eunsafe for future reference.\n\n     (c) prepare_binprm() is called, possibly multiple times.\n\n     \t (i) This applies the result of set[ug]id binaries to the new creds\n     \t     attached to bprm-\u003ecred.  Personality bit clearance is recorded,\n     \t     but now deferred on the basis that the exec procedure may yet\n     \t     fail.\n\n         (ii) This then calls the new security_bprm_set_creds().  This should\n\t     calculate the new LSM and capability credentials into *bprm-\u003ecred.\n\n\t     This folds together security_bprm_set() and parts of\n\t     security_bprm_apply_creds() (these two have been removed).\n\t     Anything that might fail must be done at this point.\n\n         (iii) bprm-\u003ecred_prepared is set to 1.\n\n\t     bprm-\u003ecred_prepared is 0 on the first pass of the security\n\t     calculations, and 1 on all subsequent passes.  This allows SELinux\n\t     in (ii) to base its calculations only on the initial script and\n\t     not on the interpreter.\n\n     (d) flush_old_exec() is called to commit the task to execution.  This\n     \t performs the following steps with regard to credentials:\n\n\t (i) Clear pdeath_signal and set dumpable on certain circumstances that\n\t     may not be covered by commit_creds().\n\n         (ii) Clear any bits in current-\u003epersonality that were deferred from\n             (c.i).\n\n     (e) install_exec_creds() [compute_creds() as was] is called to install the\n     \t new credentials.  This performs the following steps with regard to\n     \t credentials:\n\n         (i) Calls security_bprm_committing_creds() to apply any security\n             requirements, such as flushing unauthorised files in SELinux, that\n             must be done before the credentials are changed.\n\n\t     This is made up of bits of security_bprm_apply_creds() and\n\t     security_bprm_post_apply_creds(), both of which have been removed.\n\t     This function is not allowed to fail; anything that might fail\n\t     must have been done in (c.ii).\n\n         (ii) Calls commit_creds() to apply the new credentials in a single\n             assignment (more or less).  Possibly pdeath_signal and dumpable\n             should be part of struct creds.\n\n\t (iii) Unlocks the task\u0027s cred_replace_mutex, thus allowing\n\t     PTRACE_ATTACH to take place.\n\n         (iv) Clears The bprm-\u003ecred pointer as the credentials it was holding\n             are now immutable.\n\n         (v) Calls security_bprm_committed_creds() to apply any security\n             alterations that must be done after the creds have been changed.\n             SELinux uses this to flush signals and signal handlers.\n\n     (f) If an error occurs before (d.i), bprm_free() will call abort_creds()\n     \t to destroy the proposed new credentials and will then unlock\n     \t cred_replace_mutex.  No changes to the credentials will have been\n     \t made.\n\n (2) LSM interface.\n\n     A number of functions have been changed, added or removed:\n\n     (*) security_bprm_alloc(), -\u003ebprm_alloc_security()\n     (*) security_bprm_free(), -\u003ebprm_free_security()\n\n     \t Removed in favour of preparing new credentials and modifying those.\n\n     (*) security_bprm_apply_creds(), -\u003ebprm_apply_creds()\n     (*) security_bprm_post_apply_creds(), -\u003ebprm_post_apply_creds()\n\n     \t Removed; split between security_bprm_set_creds(),\n     \t security_bprm_committing_creds() and security_bprm_committed_creds().\n\n     (*) security_bprm_set(), -\u003ebprm_set_security()\n\n     \t Removed; folded into security_bprm_set_creds().\n\n     (*) security_bprm_set_creds(), -\u003ebprm_set_creds()\n\n     \t New.  The new credentials in bprm-\u003ecreds should be checked and set up\n     \t as appropriate.  bprm-\u003ecred_prepared is 0 on the first call, 1 on the\n     \t second and subsequent calls.\n\n     (*) security_bprm_committing_creds(), -\u003ebprm_committing_creds()\n     (*) security_bprm_committed_creds(), -\u003ebprm_committed_creds()\n\n     \t New.  Apply the security effects of the new credentials.  This\n     \t includes closing unauthorised files in SELinux.  This function may not\n     \t fail.  When the former is called, the creds haven\u0027t yet been applied\n     \t to the process; when the latter is called, they have.\n\n \t The former may access bprm-\u003ecred, the latter may not.\n\n (3) SELinux.\n\n     SELinux has a number of changes, in addition to those to support the LSM\n     interface changes mentioned above:\n\n     (a) The bprm_security_struct struct has been removed in favour of using\n     \t the credentials-under-construction approach.\n\n     (c) flush_unauthorized_files() now takes a cred pointer and passes it on\n     \t to inode_has_perm(), file_has_perm() and dentry_open().\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "d84f4f992cbd76e8f39c488cf0c5d123843923b1",
      "tree": "fc4a0349c42995715b93d0f7a3c78e9ea9b3f36e",
      "parents": [
        "745ca2475a6ac596e3d8d37c2759c0fbe2586227"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:23 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:23 2008 +1100"
      },
      "message": "CRED: Inaugurate COW credentials\n\nInaugurate copy-on-write credentials management.  This uses RCU to manage the\ncredentials pointer in the task_struct with respect to accesses by other tasks.\nA process may only modify its own credentials, and so does not need locking to\naccess or modify its own credentials.\n\nA mutex (cred_replace_mutex) is added to the task_struct to control the effect\nof PTRACE_ATTACHED on credential calculations, particularly with respect to\nexecve().\n\nWith this patch, the contents of an active credentials struct may not be\nchanged directly; rather a new set of credentials must be prepared, modified\nand committed using something like the following sequence of events:\n\n\tstruct cred *new \u003d prepare_creds();\n\tint ret \u003d blah(new);\n\tif (ret \u003c 0) {\n\t\tabort_creds(new);\n\t\treturn ret;\n\t}\n\treturn commit_creds(new);\n\nThere are some exceptions to this rule: the keyrings pointed to by the active\ncredentials may be instantiated - keyrings violate the COW rule as managing\nCOW keyrings is tricky, given that it is possible for a task to directly alter\nthe keys in a keyring in use by another task.\n\nTo help enforce this, various pointers to sets of credentials, such as those in\nthe task_struct, are declared const.  The purpose of this is compile-time\ndiscouragement of altering credentials through those pointers.  Once a set of\ncredentials has been made public through one of these pointers, it may not be\nmodified, except under special circumstances:\n\n  (1) Its reference count may incremented and decremented.\n\n  (2) The keyrings to which it points may be modified, but not replaced.\n\nThe only safe way to modify anything else is to create a replacement and commit\nusing the functions described in Documentation/credentials.txt (which will be\nadded by a later patch).\n\nThis patch and the preceding patches have been tested with the LTP SELinux\ntestsuite.\n\nThis patch makes several logical sets of alteration:\n\n (1) execve().\n\n     This now prepares and commits credentials in various places in the\n     security code rather than altering the current creds directly.\n\n (2) Temporary credential overrides.\n\n     do_coredump() and sys_faccessat() now prepare their own credentials and\n     temporarily override the ones currently on the acting thread, whilst\n     preventing interference from other threads by holding cred_replace_mutex\n     on the thread being dumped.\n\n     This will be replaced in a future patch by something that hands down the\n     credentials directly to the functions being called, rather than altering\n     the task\u0027s objective credentials.\n\n (3) LSM interface.\n\n     A number of functions have been changed, added or removed:\n\n     (*) security_capset_check(), -\u003ecapset_check()\n     (*) security_capset_set(), -\u003ecapset_set()\n\n     \t Removed in favour of security_capset().\n\n     (*) security_capset(), -\u003ecapset()\n\n     \t New.  This is passed a pointer to the new creds, a pointer to the old\n     \t creds and the proposed capability sets.  It should fill in the new\n     \t creds or return an error.  All pointers, barring the pointer to the\n     \t new creds, are now const.\n\n     (*) security_bprm_apply_creds(), -\u003ebprm_apply_creds()\n\n     \t Changed; now returns a value, which will cause the process to be\n     \t killed if it\u0027s an error.\n\n     (*) security_task_alloc(), -\u003etask_alloc_security()\n\n     \t Removed in favour of security_prepare_creds().\n\n     (*) security_cred_free(), -\u003ecred_free()\n\n     \t New.  Free security data attached to cred-\u003esecurity.\n\n     (*) security_prepare_creds(), -\u003ecred_prepare()\n\n     \t New. Duplicate any security data attached to cred-\u003esecurity.\n\n     (*) security_commit_creds(), -\u003ecred_commit()\n\n     \t New. Apply any security effects for the upcoming installation of new\n     \t security by commit_creds().\n\n     (*) security_task_post_setuid(), -\u003etask_post_setuid()\n\n     \t Removed in favour of security_task_fix_setuid().\n\n     (*) security_task_fix_setuid(), -\u003etask_fix_setuid()\n\n     \t Fix up the proposed new credentials for setuid().  This is used by\n     \t cap_set_fix_setuid() to implicitly adjust capabilities in line with\n     \t setuid() changes.  Changes are made to the new credentials, rather\n     \t than the task itself as in security_task_post_setuid().\n\n     (*) security_task_reparent_to_init(), -\u003etask_reparent_to_init()\n\n     \t Removed.  Instead the task being reparented to init is referred\n     \t directly to init\u0027s credentials.\n\n\t NOTE!  This results in the loss of some state: SELinux\u0027s osid no\n\t longer records the sid of the thread that forked it.\n\n     (*) security_key_alloc(), -\u003ekey_alloc()\n     (*) security_key_permission(), -\u003ekey_permission()\n\n     \t Changed.  These now take cred pointers rather than task pointers to\n     \t refer to the security context.\n\n (4) sys_capset().\n\n     This has been simplified and uses less locking.  The LSM functions it\n     calls have been merged.\n\n (5) reparent_to_kthreadd().\n\n     This gives the current thread the same credentials as init by simply using\n     commit_thread() to point that way.\n\n (6) __sigqueue_alloc() and switch_uid()\n\n     __sigqueue_alloc() can\u0027t stop the target task from changing its creds\n     beneath it, so this function gets a reference to the currently applicable\n     user_struct which it then passes into the sigqueue struct it returns if\n     successful.\n\n     switch_uid() is now called from commit_creds(), and possibly should be\n     folded into that.  commit_creds() should take care of protecting\n     __sigqueue_alloc().\n\n (7) [sg]et[ug]id() and co and [sg]et_current_groups.\n\n     The set functions now all use prepare_creds(), commit_creds() and\n     abort_creds() to build and check a new set of credentials before applying\n     it.\n\n     security_task_set[ug]id() is called inside the prepared section.  This\n     guarantees that nothing else will affect the creds until we\u0027ve finished.\n\n     The calling of set_dumpable() has been moved into commit_creds().\n\n     Much of the functionality of set_user() has been moved into\n     commit_creds().\n\n     The get functions all simply access the data directly.\n\n (8) security_task_prctl() and cap_task_prctl().\n\n     security_task_prctl() has been modified to return -ENOSYS if it doesn\u0027t\n     want to handle a function, or otherwise return the return value directly\n     rather than through an argument.\n\n     Additionally, cap_task_prctl() now prepares a new set of credentials, even\n     if it doesn\u0027t end up using it.\n\n (9) Keyrings.\n\n     A number of changes have been made to the keyrings code:\n\n     (a) switch_uid_keyring(), copy_keys(), exit_keys() and suid_keys() have\n     \t all been dropped and built in to the credentials functions directly.\n     \t They may want separating out again later.\n\n     (b) key_alloc() and search_process_keyrings() now take a cred pointer\n     \t rather than a task pointer to specify the security context.\n\n     (c) copy_creds() gives a new thread within the same thread group a new\n     \t thread keyring if its parent had one, otherwise it discards the thread\n     \t keyring.\n\n     (d) The authorisation key now points directly to the credentials to extend\n     \t the search into rather pointing to the task that carries them.\n\n     (e) Installing thread, process or session keyrings causes a new set of\n     \t credentials to be created, even though it\u0027s not strictly necessary for\n     \t process or session keyrings (they\u0027re shared).\n\n(10) Usermode helper.\n\n     The usermode helper code now carries a cred struct pointer in its\n     subprocess_info struct instead of a new session keyring pointer.  This set\n     of credentials is derived from init_cred and installed on the new process\n     after it has been cloned.\n\n     call_usermodehelper_setup() allocates the new credentials and\n     call_usermodehelper_freeinfo() discards them if they haven\u0027t been used.  A\n     special cred function (prepare_usermodeinfo_creds()) is provided\n     specifically for call_usermodehelper_setup() to call.\n\n     call_usermodehelper_setkeys() adjusts the credentials to sport the\n     supplied keyring as the new session keyring.\n\n(11) SELinux.\n\n     SELinux has a number of changes, in addition to those to support the LSM\n     interface changes mentioned above:\n\n     (a) selinux_setprocattr() no longer does its check for whether the\n     \t current ptracer can access processes with the new SID inside the lock\n     \t that covers getting the ptracer\u0027s SID.  Whilst this lock ensures that\n     \t the check is done with the ptracer pinned, the result is only valid\n     \t until the lock is released, so there\u0027s no point doing it inside the\n     \t lock.\n\n(12) is_single_threaded().\n\n     This function has been extracted from selinux_setprocattr() and put into\n     a file of its own in the lib/ directory as join_session_keyring() now\n     wants to use it too.\n\n     The code in SELinux just checked to see whether a task shared mm_structs\n     with other tasks (CLONE_VM), but that isn\u0027t good enough.  We really want\n     to know if they\u0027re part of the same thread group (CLONE_THREAD).\n\n(13) nfsd.\n\n     The NFS server daemon now has to use the COW credentials to set the\n     credentials it is going to use.  It really needs to pass the credentials\n     down to the functions it calls, but it can\u0027t do that until other patches\n     in this series have been applied.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "6cc88bc45ce8043171089c9592da223dfab91823",
      "tree": "f89bf8162895a5eb89ea7969098876e08a8999d8",
      "parents": [
        "bb952bb98a7e479262c7eb25d5592545a3af147d"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:21 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:21 2008 +1100"
      },
      "message": "CRED: Rename is_single_threaded() to is_wq_single_threaded()\n\nRename is_single_threaded() to is_wq_single_threaded() so that a new\nis_single_threaded() can be created that refers to tasks rather than\nwaitqueues.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "bb952bb98a7e479262c7eb25d5592545a3af147d",
      "tree": "9a2158c07a22a5fbddcec412944d2e7534eecc8f",
      "parents": [
        "275bb41e9d058fbb327e7642f077e1beaeac162e"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:20 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:20 2008 +1100"
      },
      "message": "CRED: Separate per-task-group keyrings from signal_struct\n\nSeparate per-task-group keyrings from signal_struct and dangle their anchor\nfrom the cred struct rather than the signal_struct.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "c69e8d9c01db2adc503464993c358901c9af9de4",
      "tree": "bed94aaa9aeb7a7834d1c880f72b62a11a752c78",
      "parents": [
        "86a264abe542cfececb4df129bc45a0338d8cdb9"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:19 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:19 2008 +1100"
      },
      "message": "CRED: Use RCU to access another task\u0027s creds and to release a task\u0027s own creds\n\nUse RCU to access another task\u0027s creds and to release a task\u0027s own creds.\nThis means that it will be possible for the credentials of a task to be\nreplaced without another task (a) requiring a full lock to read them, and (b)\nseeing deallocated memory.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "86a264abe542cfececb4df129bc45a0338d8cdb9",
      "tree": "30152f04ba847f311028d5ca697f864c16c7ebb3",
      "parents": [
        "f1752eec6145c97163dbce62d17cf5d928e28a27"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:18 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:18 2008 +1100"
      },
      "message": "CRED: Wrap current-\u003ecred and a few other accessors\n\nWrap current-\u003ecred and a few other accessors to hide their actual\nimplementation.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "f1752eec6145c97163dbce62d17cf5d928e28a27",
      "tree": "16bc51166d38815092de36a461b845b0b4b522f9",
      "parents": [
        "b6dff3ec5e116e3af6f537d4caedcad6b9e5082a"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:17 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:17 2008 +1100"
      },
      "message": "CRED: Detach the credentials from task_struct\n\nDetach the credentials from task_struct, duplicating them in copy_process()\nand releasing them in __put_task_struct().\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "b6dff3ec5e116e3af6f537d4caedcad6b9e5082a",
      "tree": "9e76f972eb7ce9b84e0146c8e4126a3f86acb428",
      "parents": [
        "15a2460ed0af7538ca8e6c610fe607a2cd9da142"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:16 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:16 2008 +1100"
      },
      "message": "CRED: Separate task security context from task_struct\n\nSeparate the task security context from task_struct.  At this point, the\nsecurity data is temporarily embedded in the task_struct with two pointers\npointing to it.\n\nNote that the Alpha arch is altered as it refers to (E)UID and (E)GID in\nentry.S via asm-offsets.\n\nWith comment fixes Signed-off-by: Marc Dionne \u003cmarc.c.dionne@gmail.com\u003e\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "1cdcbec1a3372c0c49c59d292e708fd07b509f18",
      "tree": "d1bd302c8d66862da45b494cbc766fb4caa5e23e",
      "parents": [
        "8bbf4976b59fc9fc2861e79cab7beb3f6d647640"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:14 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:14 2008 +1100"
      },
      "message": "CRED: Neuter sys_capset()\n\nTake away the ability for sys_capset() to affect processes other than current.\n\nThis means that current will not need to lock its own credentials when reading\nthem against interference by other processes.\n\nThis has effectively been the case for a while anyway, since:\n\n (1) Without LSM enabled, sys_capset() is disallowed.\n\n (2) With file-based capabilities, sys_capset() is neutered.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nAcked-by: Andrew G. Morgan \u003cmorgan@kernel.org\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "8bbf4976b59fc9fc2861e79cab7beb3f6d647640",
      "tree": "9bd621217cbdfcf94aca5b220de7363254d7fc23",
      "parents": [
        "e9e349b051d98799b743ebf248cc2d986fedf090"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:14 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:14 2008 +1100"
      },
      "message": "KEYS: Alter use of key instantiation link-to-keyring argument\n\nAlter the use of the key instantiation and negation functions\u0027 link-to-keyring\narguments.  Currently this specifies a keyring in the target process to link\nthe key into, creating the keyring if it doesn\u0027t exist.  This, however, can be\na problem for copy-on-write credentials as it means that the instantiating\nprocess can alter the credentials of the requesting process.\n\nThis patch alters the behaviour such that:\n\n (1) If keyctl_instantiate_key() or keyctl_negate_key() are given a specific\n     keyring by ID (ringid \u003e\u003d 0), then that keyring will be used.\n\n (2) If keyctl_instantiate_key() or keyctl_negate_key() are given one of the\n     special constants that refer to the requesting process\u0027s keyrings\n     (KEY_SPEC_*_KEYRING, all \u003c\u003d 0), then:\n\n     (a) If sys_request_key() was given a keyring to use (destringid) then the\n     \t key will be attached to that keyring.\n\n     (b) If sys_request_key() was given a NULL keyring, then the key being\n     \t instantiated will be attached to the default keyring as set by\n     \t keyctl_set_reqkey_keyring().\n\n (3) No extra link will be made.\n\nDecision point (1) follows current behaviour, and allows those instantiators\nwho\u0027ve searched for a specifically named keyring in the requestor\u0027s keyring so\nas to partition the keys by type to still have their named keyrings.\n\nDecision point (2) allows the requestor to make sure that the key or keys that\nget produced by request_key() go where they want, whilst allowing the\ninstantiator to request that the key is retained.  This is mainly useful for\nsituations where the instantiator makes a secondary request, the key for which\nshould be retained by the initial requestor:\n\n\t+-----------+        +--------------+        +--------------+\n\t|           |        |              |        |              |\n\t| Requestor |-------\u003e| Instantiator |-------\u003e| Instantiator |\n\t|           |        |              |        |              |\n\t+-----------+        +--------------+        +--------------+\n\t           request_key()           request_key()\n\nThis might be useful, for example, in Kerberos, where the requestor requests a\nticket, and then the ticket instantiator requests the TGT, which someone else\nthen has to go and fetch.  The TGT, however, should be retained in the\nkeyrings of the requestor, not the first instantiator.  To make this explict\nan extra special keyring constant is also added.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "76aac0e9a17742e60d408be1a706e9aaad370891",
      "tree": "e873a000d9c96209726e0958e311f005c13b2ed5",
      "parents": [
        "b103c59883f1ec6e4d548b25054608cb5724453c"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:12 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:12 2008 +1100"
      },
      "message": "CRED: Wrap task credential accesses in the core kernel\n\nWrap access to task credentials so that they can be separated more easily from\nthe task_struct during the introduction of COW creds.\n\nChange most current-\u003e(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id().\n\nChange some task-\u003ee?[ug]id to task_e?[ug]id().  In some places it makes more\nsense to use RCU directly rather than a convenient wrapper; these will be\naddressed by later patches.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: linux-audit@redhat.com\nCc: containers@lists.linux-foundation.org\nCc: linux-mm@kvack.org\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "ee51a1de7e3837577412be269e0100038068e691",
      "tree": "a93d6dfeec829b61d6a74b5a9c841bcfeaeeb31d",
      "parents": [
        "47e74f2ba8fbf9fb1378e2524e6cfdc2fb37f160"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Nov 13 14:58:31 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Nov 13 14:58:31 2008 +0100"
      },
      "message": "tracing: fix mmiotrace resizing crash\n\nPekka reported a crash when resizing the mmiotrace tracer (if only\nmmiotrace is enabled).\n\nThis happens because in that case we do not allocate the max buffer,\nbut we try to use it.\n\nMake ring_buffer_resize() idempotent against NULL buffers.\n\nReported-by: Pekka Paalanen \u003cpq@iki.fi\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3ff68a6a106c362a6811d3e51bced58e6fc87de7",
      "tree": "9a0a10ff49f7453d26afcced211307c818fd9fa9",
      "parents": [
        "f131e2436ddbac2527bb2d6297a823aae4b024f8"
      ],
      "author": {
        "name": "Mark Nelson",
        "email": "markn@au1.ibm.com",
        "time": "Thu Nov 13 21:37:41 2008 +1100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Nov 13 11:59:48 2008 +0100"
      },
      "message": "genirq: __irq_set_trigger: change pr_warning to pr_debug\n\nCommit 0c5d1eb77a8be917b638344a22afe1398236482b (genirq: record trigger\ntype) caused powerpc platforms that had no set_type() function in their\nstruct irq_chip to spew out warnings about \"No set_type function for\nIRQ...\". This warning isn\u0027t necessarily justified though because the\ngeneric powerpc platform code calls set_irq_type() (which in turn calls\n__irq_set_trigger) with information from the device tree to establish\nthe interrupt mappings, regardless of whether the PIC can actually set\na type.\n\nA platform\u0027s irq_chip might not have a set_type function for a variety\nof reasons, for example: the platform may have the type essentially\nhard-coded, or as in the case for Cell interrupts are just messages\npast around that have no real concept of type, or the platform\ncould even have a virtual PIC as on the PS3.\n\nSigned-off-by: Mark Nelson \u003cmarkn@au1.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4ffaf869c7780bbdfc11291e5fd4b61dde662b1c",
      "tree": "bdd513a1dba0c7fc99645453aef5bc7bb7343a0e",
      "parents": [
        "65131cd52b9e7c5814298e05c3b7843f13e78d24",
        "5cbd54ef470d880fc37fbe4b21eb514806d51e0d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 12 17:22:44 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 12 17:22:44 2008 -0800"
      },
      "message": "Merge branch \u0027sched-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027sched-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  sched: fix init_idle()\u0027s use of sched_clock()\n  sched: fix stale value in average load per task\n"
    },
    {
      "commit": "7e036d040a28bf95255d7eb9faf0ffbba3677e99",
      "tree": "98203974c15ae4fc5aee5723b385b0f45c331ec7",
      "parents": [
        "084c304980f05833bc8a91b856af7dc7a7bb7d60"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Wed Nov 12 13:26:57 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 12 17:17:17 2008 -0800"
      },
      "message": "kernel/kprobes.c: don\u0027t pad kretprobe_table_locks[] on uniprocessor builds\n\nWe only need the cacheline padding on SMP kernels.  Saves 6k:\n\n   text    data     bss     dec     hex filename\n   5713     388    8840   14941    3a5d kernel/kprobes.o\n   5713     388    2632    8733    221d kernel/kprobes.o\n\nAcked-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@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": "a189d0350f387786b1fb5a5d19e3a5ab0bc0cceb",
      "tree": "d6133d035e0d23a8271f12204e53338f8f343351",
      "parents": [
        "3b1b3f6e57064aa8f91c290fe51cda4c74642902"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "mhiramat@redhat.com",
        "time": "Wed Nov 12 13:26:51 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 12 17:17:16 2008 -0800"
      },
      "message": "kprobes: disable preempt for module_text_address() and kernel_text_address()\n\n__register_kprobe() can be preempted after checking probing address but\nbefore module_text_address() or try_module_get(), and in this interval\nthe module can be unloaded.  In that case, try_module_get(probed_mod)\nwill access to invalid address, or kprobe will probe invalid address.\n\nThis patch uses preempt_disable() to protect it and uses\n__module_text_address() and __kernel_text_address().\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Hiroshi Shimamoto \u003ch-shimamoto@ct.jp.nec.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3b1b3f6e57064aa8f91c290fe51cda4c74642902",
      "tree": "2cf60a7bae5f184acbea4bff859be4e4132f9794",
      "parents": [
        "687446760bd008df96655cb8c5900f8e48a7118c"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Nov 12 13:26:50 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 12 17:17:16 2008 -0800"
      },
      "message": "freezer_cg: disable writing freezer.state of root cgroup\n\nWith this change, control file \u0027freezer.state\u0027 doesn\u0027t exist in root\ncgroup, making root cgroup unfreezable.\n\nI think it\u0027s reasonable to disallow freeze tasks in the root cgroup.  And\nthen we can avoid fork overhead when freezer subsystem is compiled but not\nused.\n\nAlso make writing invalid value to freezer.state returns EINVAL rather\nthan EIO.  This is more consistent with other cgroup subsystem.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Paul Menage \u003cmenage@google.com\u003e\nCc: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: \"Serge E. Hallyn\" \u003cserue@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": "687446760bd008df96655cb8c5900f8e48a7118c",
      "tree": "b4834a1e88d98234cfad90a0880b54ba1cc3cc59",
      "parents": [
        "0bcb6069a6e1af5c114a2a8873ec43ada8933596"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Nov 12 13:26:49 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 12 17:17:16 2008 -0800"
      },
      "message": "freezer_cg: remove task_lock from freezer_fork()\n\nIn theory the task can be moved to another cgroup and the freezer will be\nfreed right after task_lock is dropped, so the lock results in zero\nprotection.\n\nBut in the case of freezer_fork() no lock is needed, since the task is not\nin tasklist yet so it won\u0027t be moved to another cgroup, so task-\u003ecgroups\nwon\u0027t be changed or invalidated.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: \"Serge E. Hallyn\" \u003cserue@us.ibm.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5cbd54ef470d880fc37fbe4b21eb514806d51e0d",
      "tree": "db9a73e605e0a2e7cfa13bd9697a113b5f6649eb",
      "parents": [
        "a2d477778e82a60a0b7114cefdb70aa43af28782"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 12 20:05:50 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 12 20:05:50 2008 +0100"
      },
      "message": "sched: fix init_idle()\u0027s use of sched_clock()\n\nMaciej Rutecki reported:\n\n\u003e I have this bug during suspend to disk:\n\u003e\n\u003e [  188.592151] Enabling non-boot CPUs ...\n\u003e [  188.592151] SMP alternatives: switching to SMP code\n\u003e [  188.666058] BUG: using smp_processor_id() in preemptible\n\u003e [00000000]\n\u003e code: suspend_to_disk/2934\n\u003e [  188.666064] caller is native_sched_clock+0x2b/0x80\n\nWhich, as noted by Linus, was caused by me, via:\n\n  7cbaef9c \"sched: optimize sched_clock() a bit\"\n\nMove the rq locking a bit earlier in the initialization sequence,\nthat will make the sched_clock() call in init_idle() non-preemptible.\n\nReported-by: Maciej Rutecki \u003cmaciej.rutecki@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a2d477778e82a60a0b7114cefdb70aa43af28782",
      "tree": "52fb05ee2d63765ddddcf4a2e06f310510607735",
      "parents": [
        "f21f237cf55494c3a4209de323281a3b0528da10"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Wed Nov 12 16:19:00 2008 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 12 12:33:50 2008 +0100"
      },
      "message": "sched: fix stale value in average load per task\n\nImpact: fix load balancer load average calculation accuracy\n\ncpu_avg_load_per_task() returns a stale value when nr_running is 0.\nIt returns an older stale (caculated when nr_running was non zero) value.\n\nThis patch returns and sets rq-\u003eavg_load_per_task to zero when nr_running\nis 0.\n\nCompile and boot tested on a x86_64 box.\n\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "47e74f2ba8fbf9fb1378e2524e6cfdc2fb37f160",
      "tree": "7d49bf91e5409c432b259c26fcadff0450dffe43",
      "parents": [
        "c1e7abbc7afc97367cd77c8f2895c2169a8f9c87"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Nov 12 00:01:27 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 12 11:23:36 2008 +0100"
      },
      "message": "ring-buffer: no preempt for sched_clock()\n\nImpact: disable preemption when calling sched_clock()\n\nThe ring_buffer_time_stamp still uses sched_clock as its counter.\nBut it is a bug to call it with preemption enabled. This requirement\nshould not be pushed to the ring_buffer_time_stamp callers, so\nthe ring_buffer_time_stamp needs to disable preemption when calling\nsched_clock.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "621a0d5207c18012cb39932f2d9830a11a6cb03d",
      "tree": "0e18c30c91620108b413197f9bc153ceb6e430ec",
      "parents": [
        "f21f237cf55494c3a4209de323281a3b0528da10"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Nov 12 09:36:35 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 12 09:54:40 2008 +0100"
      },
      "message": "hrtimer: clean up unused callback modes\n\nImpact: cleanup\n\ngit grep HRTIMER_CB_IRQSAFE revealed half the callback modes are actually\nunused.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c1e7abbc7afc97367cd77c8f2895c2169a8f9c87",
      "tree": "826aa8fff448bc3dcd167d3623fbcc311a768c1f",
      "parents": [
        "f21f237cf55494c3a4209de323281a3b0528da10",
        "a358324466b171e145df20bdb74fe81759906de6"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 11 21:34:07 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 11 21:34:07 2008 +0100"
      },
      "message": "Merge branch \u0027devel\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent\n"
    },
    {
      "commit": "a358324466b171e145df20bdb74fe81759906de6",
      "tree": "50b2b0b72ff40da6be232eb85d33a203612f3164",
      "parents": [
        "4143c5cb36331155a1823af8b3a8c761a59fed71"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Nov 11 15:01:42 2008 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Nov 11 15:02:04 2008 -0500"
      },
      "message": "ring-buffer: buffer record on/off switch\n\nImpact: enable/disable ring buffer recording API added\n\nSeveral kernel developers have requested that there be a way to stop\nrecording into the ring buffers with a simple switch that can also\nbe enabled from userspace. This patch addes a new kernel API to the\nring buffers called:\n\n tracing_on()\n tracing_off()\n\nWhen tracing_off() is called, all ring buffers will not be able to record\ninto their buffers.\n\ntracing_on() will enable the ring buffers again.\n\nThese two act like an on/off switch. That is, there is no counting of the\nnumber of times tracing_off or tracing_on has been called.\n\nA new file is added to the debugfs/tracing directory called\n\n  tracing_on\n\nThis allows for userspace applications to also flip the switch.\n\n  echo 0 \u003e debugfs/tracing/tracing_on\n\ndisables the tracing.\n\n  echo 1 \u003e /debugfs/tracing/tracing_on\n\nenables it.\n\nNote, this does not disable or enable any tracers. It only sets or clears\na flag that needs to be set in order for the ring buffers to write to\ntheir buffers. It is a global flag, and affects all ring buffers.\n\nThe buffers start out with tracing_on enabled.\n\nThere are now three flags that control recording into the buffers:\n\n tracing_on: which affects all ring buffer tracers.\n\n buffer-\u003erecord_disabled: which affects an allocated buffer, which may be set\n     if an anomaly is detected, and tracing is disabled.\n\n cpu_buffer-\u003erecord_disabled: which is set by tracing_stop() or if an\n     anomaly is detected. tracing_start can not reenable this if\n     an anomaly occurred.\n\nThe userspace debugfs/tracing/tracing_enabled is implemented with\ntracing_stop() but the user space code can not enable it if the kernel\ncalled tracing_stop().\n\nUserspace can enable the tracing_on even if the kernel disabled it.\nIt is just a switch used to stop tracing if a condition was hit.\ntracing_on is not for protecting critical areas in the kernel nor is\nit for stopping tracing if an anomaly occurred. This is because userspace\ncan reenable it at any time.\n\nSide effect: With this patch, I discovered a dead variable in ftrace.c\n  called tracing_on. This patch removes it.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "f21f237cf55494c3a4209de323281a3b0528da10",
      "tree": "40ebad408aebbc5bf4e54bd51a7c0077ad04508b",
      "parents": [
        "2f96cb57cde9957bac0991c712068d29364b2ac9",
        "5d5254f0d3b9bebc47d97e357374c0ad0c291a7d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 11 10:53:50 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 11 10:53:50 2008 -0800"
      },
      "message": "Merge branch \u0027timers-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  timers: handle HRTIMER_CB_IRQSAFE_UNLOCKED correctly from softirq context\n  nohz: disable tick_nohz_kick_tick() for now\n  irq: call __irq_enter() before calling the tick_idle_check\n  x86: HPET: enter hpet_interrupt_handler with interrupts disabled\n  x86: HPET: read from HPET_Tn_CMP() not HPET_T0_CMP\n  x86: HPET: convert WARN_ON to WARN_ON_ONCE\n"
    },
    {
      "commit": "2f96cb57cde9957bac0991c712068d29364b2ac9",
      "tree": "60e3f985b9e865f3a1fdda131599fa84159cc73e",
      "parents": [
        "09eb3b5b1bcab7b25e9dd57e90ee9753adf7afe2",
        "2002c69595a092518107f7e3c1294c9710bc92ae"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 11 10:52:25 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 11 10:52:25 2008 -0800"
      },
      "message": "Merge branch \u0027sched-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027sched-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  sched: release buddies on yield\n  fix for account_group_exec_runtime(), make sure -\u003esignal can\u0027t be freed under rq-\u003elock\n  sched: clean up debug info\n"
    },
    {
      "commit": "637d32dc720897616e8a1a4f9e9609e29d431800",
      "tree": "6b9e500f4f9fa624da3b6bd28d6d161a615a3a63",
      "parents": [
        "e68b75a027bb94066576139ee33676264f867b87"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Oct 29 15:42:12 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Nov 11 22:01:24 2008 +1100"
      },
      "message": "Capabilities: BUG when an invalid capability is requested\n\nIf an invalid (large) capability is requested the capabilities system\nmay panic as it is dereferencing an array of fixed (short) length.  Its\npossible (and actually often happens) that the capability system\naccidentally stumbled into a valid memory region but it also regularly\nhappens that it hits invalid memory and BUGs.  If such an operation does\nget past cap_capable then the selinux system is sure to have problems as\nit already does a (simple) validity check and BUG.  This is known to\nhappen by the broken and buggy firegl driver.\n\nThis patch cleanly checks all capable calls and BUG if a call is for an\ninvalid capability.  This will likely break the firegl driver for some\nsituations, but it is the right thing to do.  Garbage into a security\nsystem gets you killed/bugged\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nAcked-by: Andrew G. Morgan \u003cmorgan@kernel.org\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "2002c69595a092518107f7e3c1294c9710bc92ae",
      "tree": "5935add4d4cd426b5b824474b7ec2ffea48d2951",
      "parents": [
        "ad474caca3e2a0550b7ce0706527ad5ab389a4d4"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Tue Nov 11 11:52:33 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 11 11:57:22 2008 +0100"
      },
      "message": "sched: release buddies on yield\n\nClear buddies on yield, so that the buddy rules don\u0027t schedule them\ndespite them being placed right-most.\n\nThis fixed a performance regression with yield-happy binary JVMs.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nTested-by: Lin Ming \u003cming.m.lin@intel.com\u003e\n"
    },
    {
      "commit": "e68b75a027bb94066576139ee33676264f867b87",
      "tree": "2c31f59a4abe9d7bb3cb75fdf3b57772feeeb6f6",
      "parents": [
        "3fc689e96c0c90b6fede5946d6c31075e9464f69"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Nov 11 21:48:22 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Nov 11 21:48:22 2008 +1100"
      },
      "message": "When the capset syscall is used it is not possible for audit to record the\nactual capbilities being added/removed.  This patch adds a new record type\nwhich emits the target pid and the eff, inh, and perm cap sets.\n\nexample output if you audit capset syscalls would be:\n\ntype\u003dSYSCALL msg\u003daudit(1225743140.465:76): arch\u003dc000003e syscall\u003d126 success\u003dyes exit\u003d0 a0\u003d17f2014 a1\u003d17f201c a2\u003d80000000 a3\u003d7fff2ab7f060 items\u003d0 ppid\u003d2160 pid\u003d2223 auid\u003d0 uid\u003d0 gid\u003d0 euid\u003d0 suid\u003d0 fsuid\u003d0 egid\u003d0 sgid\u003d0 fsgid\u003d0 tty\u003dpts0 ses\u003d1 comm\u003d\"setcap\" exe\u003d\"/usr/sbin/setcap\" subj\u003dunconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key\u003d(null)\ntype\u003dUNKNOWN[1322] msg\u003daudit(1225743140.465:76): pid\u003d0 cap_pi\u003dffffffffffffffff cap_pp\u003dffffffffffffffff cap_pe\u003dffffffffffffffff\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "3fc689e96c0c90b6fede5946d6c31075e9464f69",
      "tree": "5e59b6c607eb595ababa74bad18787cfa49b16e9",
      "parents": [
        "851f7ff56d9c21272f289dd85fb3f1b6cf7a6e10"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Nov 11 21:48:18 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Nov 11 21:48:18 2008 +1100"
      },
      "message": "Any time fcaps or a setuid app under SECURE_NOROOT is used to result in a\nnon-zero pE we will crate a new audit record which contains the entire set\nof known information about the executable in question, fP, fI, fE, fversion\nand includes the process\u0027s pE, pI, pP.  Before and after the bprm capability\nare applied.  This record type will only be emitted from execve syscalls.\n\nan example of making ping use fcaps instead of setuid:\n\nsetcap \"cat_net_raw+pe\" /bin/ping\n\ntype\u003dSYSCALL msg\u003daudit(1225742021.015:236): arch\u003dc000003e syscall\u003d59 success\u003dyes exit\u003d0 a0\u003d1457f30 a1\u003d14606b0 a2\u003d1463940 a3\u003d321b770a70 items\u003d2 ppid\u003d2929 pid\u003d2963 auid\u003d0 uid\u003d500 gid\u003d500 euid\u003d500 suid\u003d500 fsuid\u003d500 egid\u003d500 sgid\u003d500 fsgid\u003d500 tty\u003dpts0 ses\u003d3 comm\u003d\"ping\" exe\u003d\"/bin/ping\" subj\u003dunconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key\u003d(null)\ntype\u003dUNKNOWN[1321] msg\u003daudit(1225742021.015:236): fver\u003d2 fp\u003d0000000000002000 fi\u003d0000000000000000 fe\u003d1 old_pp\u003d0000000000000000 old_pi\u003d0000000000000000 old_pe\u003d0000000000000000 new_pp\u003d0000000000002000 new_pi\u003d0000000000000000 new_pe\u003d0000000000002000\ntype\u003dEXECVE msg\u003daudit(1225742021.015:236): argc\u003d2 a0\u003d\"ping\" a1\u003d\"127.0.0.1\"\ntype\u003dCWD msg\u003daudit(1225742021.015:236):  cwd\u003d\"/home/test\"\ntype\u003dPATH msg\u003daudit(1225742021.015:236): item\u003d0 name\u003d\"/bin/ping\" inode\u003d49256 dev\u003dfd:00 mode\u003d0100755 ouid\u003d0 ogid\u003d0 rdev\u003d00:00 obj\u003dsystem_u:object_r:ping_exec_t:s0 cap_fp\u003d0000000000002000 cap_fe\u003d1 cap_fver\u003d2\ntype\u003dPATH msg\u003daudit(1225742021.015:236): item\u003d1 name\u003d(null) inode\u003d507915 dev\u003dfd:00 mode\u003d0100755 ouid\u003d0 ogid\u003d0 rdev\u003d00:00 obj\u003dsystem_u:object_r:ld_so_t:s0\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "851f7ff56d9c21272f289dd85fb3f1b6cf7a6e10",
      "tree": "42c72104230d93bf785a4cdda1e1ea5895339db0",
      "parents": [
        "c0b004413a46a0a5744e6d2b85220fe9d2c33d48"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Nov 11 21:48:14 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Nov 11 21:48:14 2008 +1100"
      },
      "message": "This patch will print cap_permitted and cap_inheritable data in the PATH\nrecords of any file that has file capabilities set.  Files which do not\nhave fcaps set will not have different PATH records.\n\nAn example audit record if you run:\nsetcap \"cap_net_admin+pie\" /bin/bash\n/bin/bash\n\ntype\u003dSYSCALL msg\u003daudit(1225741937.363:230): arch\u003dc000003e syscall\u003d59 success\u003dyes exit\u003d0 a0\u003d2119230 a1\u003d210da30 a2\u003d20ee290 a3\u003d8 items\u003d2 ppid\u003d2149 pid\u003d2923 auid\u003d0 uid\u003d0 gid\u003d0 euid\u003d0 suid\u003d0 fsuid\u003d0 egid\u003d0 sgid\u003d0 fsgid\u003d0 tty\u003dpts0 ses\u003d3 comm\u003d\"ping\" exe\u003d\"/bin/ping\" subj\u003dunconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key\u003d(null)\ntype\u003dEXECVE msg\u003daudit(1225741937.363:230): argc\u003d2 a0\u003d\"ping\" a1\u003d\"www.google.com\"\ntype\u003dCWD msg\u003daudit(1225741937.363:230):  cwd\u003d\"/root\"\ntype\u003dPATH msg\u003daudit(1225741937.363:230): item\u003d0 name\u003d\"/bin/ping\" inode\u003d49256 dev\u003dfd:00 mode\u003d0104755 ouid\u003d0 ogid\u003d0 rdev\u003d00:00 obj\u003dsystem_u:object_r:ping_exec_t:s0 cap_fp\u003d0000000000002000 cap_fi\u003d0000000000002000 cap_fe\u003d1 cap_fver\u003d2\ntype\u003dPATH msg\u003daudit(1225741937.363:230): item\u003d1 name\u003d(null) inode\u003d507915 dev\u003dfd:00 mode\u003d0100755 ouid\u003d0 ogid\u003d0 rdev\u003d00:00 obj\u003dsystem_u:object_r:ld_so_t:s0\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "5d5254f0d3b9bebc47d97e357374c0ad0c291a7d",
      "tree": "fea216db5914228fe80139f5e31621de86cc9e5d",
      "parents": [
        "ae99286b4f1be7788f2d6947c66a91dbd6351eec"
      ],
      "author": {
        "name": "Gautham R Shenoy",
        "email": "ego@in.ibm.com",
        "time": "Sat Oct 25 10:22:38 2008 +0530"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Nov 11 10:46:42 2008 +0100"
      },
      "message": "timers: handle HRTIMER_CB_IRQSAFE_UNLOCKED correctly from softirq context\n\nImpact: fix incorrect locking triggered during hotplug-intense stress-tests\n\nWhile migrating the the CB_IRQSAFE_UNLOCKED timers during a cpu-offline,\nwe queue them on the cb_pending list, so that they won\u0027t go\nstale.\n\nThus, when the callbacks of the timers run from the softirq context,\nthey could run into potential deadlocks, since these callbacks\nassume that they\u0027re running with irq\u0027s disabled, thereby annoying\nlockdep!\n\nFix this by emulating hardirq context while running these callbacks from\nthe hrtimer softirq.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: inconsistent lock state ]\n2.6.27 #2\n--------------------------------\ninconsistent {in-hardirq-W} -\u003e {hardirq-on-W} usage.\nksoftirqd/0/4 [HC0[0]:SC1[1]:HE1:SE0] takes:\n (\u0026rq-\u003elock){++..}, at: [\u003cc011db84\u003e] sched_rt_period_timer+0x9e/0x1fc\n{in-hardirq-W} state was registered at:\n  [\u003cc014103c\u003e] __lock_acquire+0x549/0x121e\n  [\u003cc0107890\u003e] native_sched_clock+0x88/0x99\n  [\u003cc013aa12\u003e] clocksource_get_next+0x39/0x3f\n  [\u003cc0139abc\u003e] update_wall_time+0x616/0x7df\n  [\u003cc0141d6b\u003e] lock_acquire+0x5a/0x74\n  [\u003cc0121724\u003e] scheduler_tick+0x3a/0x18d\n  [\u003cc047ed45\u003e] _spin_lock+0x1c/0x45\n  [\u003cc0121724\u003e] scheduler_tick+0x3a/0x18d\n  [\u003cc0121724\u003e] scheduler_tick+0x3a/0x18d\n  [\u003cc012c436\u003e] update_process_times+0x3a/0x44\n  [\u003cc013c044\u003e] tick_periodic+0x63/0x6d\n  [\u003cc013c062\u003e] tick_handle_periodic+0x14/0x5e\n  [\u003cc010568c\u003e] timer_interrupt+0x44/0x4a\n  [\u003cc0150c9f\u003e] handle_IRQ_event+0x13/0x3d\n  [\u003cc0151c14\u003e] handle_level_irq+0x79/0xbd\n  [\u003cc0105634\u003e] do_IRQ+0x69/0x7d\n  [\u003cc01041e4\u003e] common_interrupt+0x28/0x30\n  [\u003cc047007b\u003e] aac_probe_one+0x1a3/0x3f3\n  [\u003cc047ec2d\u003e] _spin_unlock_irqrestore+0x36/0x39\n  [\u003cc01512b4\u003e] setup_irq+0x1be/0x1f9\n  [\u003cc065d70b\u003e] start_kernel+0x259/0x2c5\n  [\u003cffffffff\u003e] 0xffffffff\nirq event stamp: 50102\nhardirqs last  enabled at (50102): [\u003cc047ebf4\u003e] _spin_unlock_irq+0x20/0x23\nhardirqs last disabled at (50101): [\u003cc047edc2\u003e] _spin_lock_irq+0xa/0x4b\nsoftirqs last  enabled at (50088): [\u003cc0128ba6\u003e] do_softirq+0x37/0x4d\nsoftirqs last disabled at (50099): [\u003cc0128ba6\u003e] do_softirq+0x37/0x4d\n\nother info that might help us debug this:\nno locks held by ksoftirqd/0/4.\n\nstack backtrace:\nPid: 4, comm: ksoftirqd/0 Not tainted 2.6.27 #2\n [\u003cc013f6cb\u003e] print_usage_bug+0x13e/0x147\n [\u003cc013fef5\u003e] mark_lock+0x493/0x797\n [\u003cc01410b1\u003e] __lock_acquire+0x5be/0x121e\n [\u003cc0141d6b\u003e] lock_acquire+0x5a/0x74\n [\u003cc011db84\u003e] sched_rt_period_timer+0x9e/0x1fc\n [\u003cc047ed45\u003e] _spin_lock+0x1c/0x45\n [\u003cc011db84\u003e] sched_rt_period_timer+0x9e/0x1fc\n [\u003cc011db84\u003e] sched_rt_period_timer+0x9e/0x1fc\n [\u003cc01210fd\u003e] finish_task_switch+0x41/0xbd\n [\u003cc0107890\u003e] native_sched_clock+0x88/0x99\n [\u003cc011dae6\u003e] sched_rt_period_timer+0x0/0x1fc\n [\u003cc0136dda\u003e] run_hrtimer_pending+0x54/0xe5\n [\u003cc011dae6\u003e] sched_rt_period_timer+0x0/0x1fc\n [\u003cc0128afb\u003e] __do_softirq+0x7b/0xef\n [\u003cc0128ba6\u003e] do_softirq+0x37/0x4d\n [\u003cc0128c12\u003e] ksoftirqd+0x56/0xc5\n [\u003cc0128bbc\u003e] ksoftirqd+0x0/0xc5\n [\u003cc0134649\u003e] kthread+0x38/0x5d\n [\u003cc0134611\u003e] kthread+0x0/0x5d\n [\u003cc0104477\u003e] kernel_thread_helper+0x7/0x10\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "45b86a96f17cb2900f291129b0e67287400e45b2",
      "tree": "f7968bf36e3947ee42251f7eebc6ea5f24aca202",
      "parents": [
        "072ba49838b42c873c496d72c91bb237914cf3b6",
        "4143c5cb36331155a1823af8b3a8c761a59fed71"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 11 09:16:20 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 11 09:16:20 2008 +0100"
      },
      "message": "Merge branch \u0027devel\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent\n"
    },
    {
      "commit": "ad474caca3e2a0550b7ce0706527ad5ab389a4d4",
      "tree": "6d4e5cbcee3a85230317a33d66655ece0c873f5c",
      "parents": [
        "5ac5c4d604bf894ef672a7971d03fefdc7ea7e49"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Nov 10 15:39:30 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 11 08:01:43 2008 +0100"
      },
      "message": "fix for account_group_exec_runtime(), make sure -\u003esignal can\u0027t be freed under rq-\u003elock\n\nImpact: fix hang/crash on ia64 under high load\n\nThis is ugly, but the simplest patch by far.\n\nUnlike other similar routines, account_group_exec_runtime() could be\ncalled \"implicitly\" from within scheduler after exit_notify(). This\nmeans we can race with the parent doing release_task(), we can\u0027t just\ncheck -\u003esignal !\u003d NULL.\n\nChange __exit_signal() to do spin_unlock_wait(\u0026task_rq(tsk)-\u003elock)\nbefore __cleanup_signal() to make sure -\u003esignal can\u0027t be freed under\ntask_rq(tsk)-\u003elock. Note that task_rq_unlock_wait() doesn\u0027t care\nabout the case when tsk changes cpu/rq under us, this should be OK.\n\nThanks to Ingo who nacked my previous buggy patch.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nReported-by: Doug Chapman \u003cdoug.chapman@hp.com\u003e\n"
    },
    {
      "commit": "4143c5cb36331155a1823af8b3a8c761a59fed71",
      "tree": "14ba50cd2a0acb5f18d7c657f08eaa586827fe27",
      "parents": [
        "bf5e6519b85b3853f2d0bb4f17a4e2eaeffeb574"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon Nov 10 21:46:01 2008 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon Nov 10 21:47:37 2008 -0500"
      },
      "message": "ring-buffer: prevent infinite looping on time stamping\n\nImpact: removal of unnecessary looping\n\nThe lockless part of the ring buffer allows for reentry into the code\nfrom interrupts. A timestamp is taken, a test is preformed and if it\ndetects that an interrupt occurred that did tracing, it tries again.\n\nThe problem arises if the timestamp code itself causes a trace.\nThe detection will detect this and loop again. The difference between\nthis and an interrupt doing tracing, is that this will fail every time,\nand cause an infinite loop.\n\nCurrently, we test if the loop happens 1000 times, and if so, it will\nproduce a warning and disable the ring buffer.\n\nThe problem with this approach is that it makes it difficult to perform\nsome types of tracing (tracing the timestamp code itself).\n\nEach trace entry has a delta timestamp from the previous entry.\nIf a trace entry is reserved but and interrupt occurs and traces before\nthe previous entry is commited, the delta timestamp for that entry will\nbe zero. This actually makes sense in terms of tracing, because the\ninterrupt entry happened before the preempted entry was commited, so\none may consider the two happening at the same time. The order is\nstill preserved in the buffer.\n\nWith this idea, instead of trying to get a new timestamp if an interrupt\nmade it in between the timestamp and the test, the entry could simply\nmake the delta zero and continue. This will prevent interrupts or\ntracers in the timer code from causing the above loop.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "bf5e6519b85b3853f2d0bb4f17a4e2eaeffeb574",
      "tree": "d5560a28100aed24e3bb09e68c17a0ea1fbde07b",
      "parents": [
        "3ad4f597058301c97f362e500a32f63f5c950a45"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon Nov 10 21:46:00 2008 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon Nov 10 21:47:35 2008 -0500"
      },
      "message": "ftrace: disable tracing on resize\n\nImpact: fix for bug on resize\n\nThis patch addresses the bug found here:\n\n http://bugzilla.kernel.org/show_bug.cgi?id\u003d11996\n\nWhen ftrace converted to the new unified trace buffer, the resizing of\nthe buffer was not protected as much as it was originally. If tracing\nis performed while the resize occurs, then the buffer can be corrupted.\n\nThis patch disables all ftrace buffer modifications before a resize\ntakes place.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "ae99286b4f1be7788f2d6947c66a91dbd6351eec",
      "tree": "a403ffaeaad1cb38afa79e2cca40ecc00ea694ab",
      "parents": [
        "ee5f80a993539490a07477ff2526bf62c503fbb4"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Nov 10 13:20:23 2008 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@apollo.(none)",
        "time": "Mon Nov 10 22:39:27 2008 +0100"
      },
      "message": "nohz: disable tick_nohz_kick_tick() for now\n\nImpact: nohz powersavings and wakeup regression\n\ncommit fb02fbc14d17837b4b7b02dbb36142c16a7bf208 (NOHZ: restart tick\ndevice from irq_enter()) causes a serious wakeup regression.\n\nWhile the patch is correct it does not take into account that spurious\nwakeups happen on x86. A fix for this issue is available, but we just\nrevert to the .27 behaviour and let long running softirqs screw\nthemself.\n\nDisable it for now.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "ee5f80a993539490a07477ff2526bf62c503fbb4",
      "tree": "4c23450fb35f9dfdb491506a3864647aae7e8e78",
      "parents": [
        "5ceb1a04187553e08c6ab60d30cee7c454ee139a"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Nov 07 11:06:00 2008 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@apollo.(none)",
        "time": "Mon Nov 10 22:36:39 2008 +0100"
      },
      "message": "irq: call __irq_enter() before calling the tick_idle_check\n\nImpact: avoid spurious ksoftirqd wakeups\n\nThe tick idle check which is called from irq_enter() was run before\nthe call to __irq_enter() which did not set the in_interrupt() bits in\npreempt_count. That way the raise of a softirq woke up softirqd for\nnothing as the softirq was handled on return from interrupt.\n\nCall __irq_enter() before calling into the tick idle check code.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5ac5c4d604bf894ef672a7971d03fefdc7ea7e49",
      "tree": "ee7b71de46c0c71dec9e9ebb0efd2e66ce1c7a6d",
      "parents": [
        "f7160c7573615ec82c691e294cf80d920b5d588d"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Nov 10 10:46:32 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Nov 10 10:51:51 2008 +0100"
      },
      "message": "sched: clean up debug info\n\nImpact: clean up and fix debug info printout\n\nWhile looking over the sched_debug code I noticed that we printed the rq\nschedstats for every cfs_rq, ammend this.\n\nAlso change nr_spead_over into an int, and fix a little buglet in\nmin_vruntime printing.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f131e2436ddbac2527bb2d6297a823aae4b024f8",
      "tree": "c200eb82c6e9924f19261e4fc2a7281a80346900",
      "parents": [
        "6c2e94033df5ca11149e52dd179b8dde3172e9bf"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Nov 08 09:57:40 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 09 22:26:45 2008 +0100"
      },
      "message": "irq: fix typo\n\nImpact: build fix\n\nfix build failure on UP.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "612e3684c1b7752d2890510e4f90115fd1eb2afb",
      "tree": "77d8b8de0a4ae3805cb38bfe60ed2b107fc87cad",
      "parents": [
        "f6d87f4bd259cf33e092cd1a8fde05f291c47af1"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Nov 07 13:58:46 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 09 22:23:54 2008 +0100"
      },
      "message": "genirq: fix the affinity setting in setup_irq\n\nThe affinity setting in setup irq is called before the NO_BALANCING\nflag is checked and might therefore override affinity settings from the\ncalling code with the default setting.\n\nMove the NO_BALANCING flag check before the call to the affinity\nsetting.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f6d87f4bd259cf33e092cd1a8fde05f291c47af1",
      "tree": "abaa66af3c80fb18a20004b8d97261c680551792",
      "parents": [
        "8b805ef617cf0e02f6d18b891f8deb6246421b01"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Nov 07 13:18:30 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 09 22:23:49 2008 +0100"
      },
      "message": "genirq: keep affinities set from userspace across free/request_irq()\n\nImpact: preserve user-modified affinities on interrupts\n\nKumar Galak noticed that commit\n18404756765c713a0be4eb1082920c04822ce588 (genirq: Expose default irq\naffinity mask (take 3))\n\noverrides an already set affinity setting across a free /\nrequest_irq(). Happens e.g. with ifdown/ifup of a network device.\n\nChange the logic to mark the affinities as set and keep them\nintact. This also fixes the unlocked access to irq_desc in\nirq_select_affinity() when called from irq_affinity_proc_write()\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cb56d98e2a7530615899597551db685d68a2e852",
      "tree": "458a2dc64385f35799c55971ea7b3fe1a2ec218f",
      "parents": [
        "6209344f5a3795d34b7f2c0061f49802283b6bdd",
        "984f2f377fdfd098f5ae58d09ee04d5e29e6112b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 09 12:20:56 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 09 12:20:56 2008 -0800"
      },
      "message": "Merge branch \u0027cpus4096\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027cpus4096\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  cpumask: introduce new API, without changing anything, v3\n  cpumask: new API, v2\n  cpumask: introduce new API, without changing anything\n"
    },
    {
      "commit": "ca3273f9646694e0419cfb9d6c12deb1c9aff27c",
      "tree": "53e0b28edddd5c29691c9ccc8a7f3c8c11ee9c83",
      "parents": [
        "f29c9b1ccb52904ee442a933cf3dee628f9f4e62"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Nov 07 14:47:21 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Nov 07 08:29:58 2008 +0100"
      },
      "message": "sched: fix memory leak in a failure path\n\nImpact: fix rare memory leak in the sched-domains manual reconfiguration code\n\nIn the failure path, rd is not attached to a sched domain,\nso it causes a leak.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f29c9b1ccb52904ee442a933cf3dee628f9f4e62",
      "tree": "836b4383a89a5aac64e50afd752a48b4bb0c167a",
      "parents": [
        "4bab0ea1d42dd1927af9df6fbf0003fc00617c50"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Nov 06 09:45:16 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Nov 07 08:29:57 2008 +0100"
      },
      "message": "sched: fix a bug in sched domain degenerate\n\nImpact: re-add incorrectly eliminated sched domain layers\n\n(1) on i386 with SCHED_SMT and SCHED_MC enabled\n\t# mount -t cgroup -o cpuset xxx /mnt\n\t# echo 0 \u003e /mnt/cpuset.sched_load_balance\n\t# mkdir /mnt/0\n\t# echo 0 \u003e /mnt/0/cpuset.cpus\n\t# dmesg\n\tCPU0 attaching sched-domain:\n\t domain 0: span 0 level CPU\n\t  groups: 0\n\n(2) on i386 with SCHED_MC enabled but SCHED_SMT disabled\n\t# same with (1)\n\t# dmesg\n\tCPU0 attaching NULL sched-domain.\n\nThe bug is that some sched domains may be skipped unintentionally when\ndegenerating (optimizing) sched domains.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e252f4db187ef02d06c8551069d944d327b8bb9a",
      "tree": "0e704cc34161fc839ef203fbf71106de52e19a7d",
      "parents": [
        "2e93960c4d712096902c16fe5511fc91502c2527",
        "7838c15b8dd18e78a523513749e5b54bda07b0cb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 06 15:53:47 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 06 15:53:47 2008 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block:\n  Block: use round_jiffies_up()\n  Add round_jiffies_up and related routines\n  block: fix __blkdev_get() for removable devices\n  generic-ipi: fix the smp_mb() placement\n  blk: move blk_delete_timer call in end_that_request_last\n  block: add timer on blkdev_dequeue_request() not elv_next_request()\n  bio: define __BIOVEC_PHYS_MERGEABLE\n  block: remove unused ll_new_mergeable()\n"
    }
  ],
  "next": "067ab19923673e3d8c982d877bedb9d65c976c22"
}
