)]}'
{
  "log": [
    {
      "commit": "58e57fbd1c7e8833314459555e337364fe5521f3",
      "tree": "242a3859387588889c9dcc45915b0dec951f84c3",
      "parents": [
        "8a0382f6fceaf0c6479e582e1054f36333ea3d24",
        "0f78ab9899e9d6acb09d5465def618704255963b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 04 12:39:14 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 04 12:39:14 2009 -0700"
      },
      "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: (41 commits)\n  Revert \"Seperate read and write statistics of in_flight requests\"\n  cfq-iosched: don\u0027t delay async queue if it hasn\u0027t dispatched at all\n  block: Topology ioctls\n  cfq-iosched: use assigned slice sync value, not default\n  cfq-iosched: rename \u0027desktop\u0027 sysfs entry to \u0027low_latency\u0027\n  cfq-iosched: implement slower async initiate and queue ramp up\n  cfq-iosched: delay async IO dispatch, if sync IO was just done\n  cfq-iosched: add a knob for desktop interactiveness\n  Add a tracepoint for block request remapping\n  block: allow large discard requests\n  block: use normal I/O path for discard requests\n  swapfile: avoid NULL pointer dereference in swapon when s_bdev is NULL\n  fs/bio.c: move EXPORT* macros to line after function\n  Add missing blk_trace_remove_sysfs to be in pair with blk_trace_init_sysfs\n  cciss: fix build when !PROC_FS\n  block: Do not clamp max_hw_sectors for stacking devices\n  block: Set max_sectors correctly for stacking devices\n  cciss: cciss_host_attr_groups should be const\n  cciss: Dynamically allocate the drive_info_struct for each logical drive.\n  cciss: Add usage_count attribute to each logical drive in /sys\n  ...\n"
    },
    {
      "commit": "4e649152cbaa1aedd01821d200ab9d597fe469e4",
      "tree": "635fa7d75acda929e81b8b0db7e641b7d4e07b35",
      "parents": [
        "3dece8347df6a16239fab10dadb370854f1c969c"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Oct 01 15:44:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 01 16:11:13 2009 -0700"
      },
      "message": "memcg: some modification to softlimit under hierarchical memory reclaim.\n\nThis patch clean up/fixes for memcg\u0027s uncharge soft limit path.\n\nProblems:\n  Now, res_counter_charge()/uncharge() handles softlimit information at\n  charge/uncharge and softlimit-check is done when event counter per memcg\n  goes over limit. Now, event counter per memcg is updated only when\n  memory usage is over soft limit. Here, considering hierarchical memcg\n  management, ancesotors should be taken care of.\n\n  Now, ancerstors(hierarchy) are handled in charge() but not in uncharge().\n  This is not good.\n\n  Prolems:\n  1. memcg\u0027s event counter incremented only when softlimit hits. That\u0027s bad.\n     It makes event counter hard to be reused for other purpose.\n\n  2. At uncharge, only the lowest level rescounter is handled. This is bug.\n     Because ancesotor\u0027s event counter is not incremented, children should\n     take care of them.\n\n  3. res_counter_uncharge()\u0027s 3rd argument is NULL in most case.\n     ops under res_counter-\u003elock should be small. No \"if\" sentense is better.\n\nFixes:\n  * Removed soft_limit_xx poitner and checks in charge and uncharge.\n    Do-check-only-when-necessary scheme works enough well without them.\n\n  * make event-counter of memcg incremented at every charge/uncharge.\n    (per-cpu area will be accessed soon anyway)\n\n  * All ancestors are checked at soft-limit-check. This is necessary because\n    ancesotor\u0027s event counter may never be modified. Then, they should be\n    checked at the same time.\n\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@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": "3dece8347df6a16239fab10dadb370854f1c969c",
      "tree": "23a93cdb0dfacd4b89b42c192a6247be84d105bf",
      "parents": [
        "26251eaf98e26dc2ce2dc26d63bc502700760704"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Oct 01 15:44:09 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 01 16:11:12 2009 -0700"
      },
      "message": "cgroup: catch bad css refcnt at css_put\n\n__css_put() doesn\u0027t check a bug as refcnt goes to minus.\nI think it should be caught. This patch adds a check for it.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.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": "828c09509b9695271bcbdc53e9fc9a6a737148d2",
      "tree": "072ffad6f02db7bf4095e07e2b90247cfa042998",
      "parents": [
        "1c4115e595dec42aa0e81ba47ef46e35b34ed428"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 01 15:43:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 01 16:11:11 2009 -0700"
      },
      "message": "const: constify remaining file_operations\n\n[akpm@linux-foundation.org: fix KVM]\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3ae91c21dd29e413f4111978152c14061f0984b0",
      "tree": "64b4867e2ee81180661c287fa38d068975d1d37f",
      "parents": [
        "817b33d38f81c8736d39283c35c886ae4668f1af"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Thu Oct 01 15:43:54 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 01 16:11:11 2009 -0700"
      },
      "message": "module: fix up CONFIG_KALLSYMS\u003dn build.\n\nStarting from commit 4a4962263f07d14660849ec134ee42b63e95ea9a \"reduce\nsymbol table for loaded modules (v2)\", the kernel/module.c build is broken\nwith CONFIG_KALLSYMS disabled.\n\n  CC      kernel/module.o\nkernel/module.c:1995: warning: type defaults to \u0027int\u0027 in declaration of \u0027Elf_Hdr\u0027\nkernel/module.c:1995: error: expected \u0027;\u0027, \u0027,\u0027 or \u0027)\u0027 before \u0027*\u0027 token\nkernel/module.c: In function \u0027load_module\u0027:\nkernel/module.c:2203: error: \u0027strmap\u0027 undeclared (first use in this function)\nkernel/module.c:2203: error: (Each undeclared identifier is reported only once\nkernel/module.c:2203: error: for each function it appears in.)\nkernel/module.c:2239: error: \u0027symoffs\u0027 undeclared (first use in this function)\nkernel/module.c:2239: error: implicit declaration of function \u0027layout_symtab\u0027\nkernel/module.c:2240: error: \u0027stroffs\u0027 undeclared (first use in this function)\nmake[1]: *** [kernel/module.o] Error 1\nmake: *** [kernel/module.o] Error 2\n\nThere are three different issues:\n\n    - layout_symtab() takes a const Elf_Ehdr\n\n    - layout_symtab() needs to return a value\n\n    - symoffs/stroffs/strmap are referenced by the load_module() code\n      despite being ifdefed out, which seems unnecessary given the noop\n      behaviour of layout_symtab()/add_kallsyms() in the case of\n      CONFIG_KALLSYMS\u003dn.\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nAcked-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b0da3f0dada78832c9da03ad2152ae76bd9a2496",
      "tree": "58380f5d8f3c313fbb9fd0310509a408b38a0399",
      "parents": [
        "67efc9258010da35b27b3854d0880c7e193004ed"
      ],
      "author": {
        "name": "Jun\u0027ichi Nomura",
        "email": "j-nomura@ce.jp.nec.com",
        "time": "Thu Oct 01 21:16:13 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 01 21:19:34 2009 +0200"
      },
      "message": "Add a tracepoint for block request remapping\n\nSince 2.6.31 now has request-based device-mapper, it\u0027s useful to have\na tracepoint for request-remapping as well as bio-remapping.\nThis patch adds a tracepoint for request-remapping, trace_block_rq_remap().\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "48c0d4d4c04dd520c55e0fd756fa4e7c83de3d13",
      "tree": "24994d5202e9cbe7ffcedf0f826a827e78d4e146",
      "parents": [
        "1e6f2dc11984b81c6438ff6cd45cdf15a02e3dfd"
      ],
      "author": {
        "name": "Zdenek Kabelac",
        "email": "zdenek.kabelac@gmail.com",
        "time": "Fri Sep 25 06:19:26 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 01 21:15:46 2009 +0200"
      },
      "message": "Add missing blk_trace_remove_sysfs to be in pair with blk_trace_init_sysfs\n\nAdd missing blk_trace_remove_sysfs to be in pair with blk_trace_init_sysfs\nintroduced in commit 1d54ad6da9192fed5dd3b60224d9f2dfea0dcd82.\nRelease kobject also in case the request_fn is NULL.\n\nProblem was noticed via kmemleak backtrace when some sysfs entries were\nnote properly destroyed during  device removal:\n\nunreferenced object 0xffff88001aa76640 (size 80):\n  comm \"lvcreate\", pid 2120, jiffies 4294885144\n  hex dump (first 32 bytes):\n    01 00 00 00 00 00 00 00 f0 65 a7 1a 00 88 ff ff  .........e......\n    90 66 a7 1a 00 88 ff ff 86 1d 53 81 ff ff ff ff  .f........S.....\n  backtrace:\n    [\u003cffffffff813f9cc6\u003e] kmemleak_alloc+0x26/0x60\n    [\u003cffffffff8111d693\u003e] kmem_cache_alloc+0x133/0x1c0\n    [\u003cffffffff81195891\u003e] sysfs_new_dirent+0x41/0x120\n    [\u003cffffffff81194b0c\u003e] sysfs_add_file_mode+0x3c/0xb0\n    [\u003cffffffff81197c81\u003e] internal_create_group+0xc1/0x1a0\n    [\u003cffffffff81197d93\u003e] sysfs_create_group+0x13/0x20\n    [\u003cffffffff810d8004\u003e] blk_trace_init_sysfs+0x14/0x20\n    [\u003cffffffff8123f45c\u003e] blk_register_queue+0x3c/0xf0\n    [\u003cffffffff812447e4\u003e] add_disk+0x94/0x160\n    [\u003cffffffffa00d8b08\u003e] dm_create+0x598/0x6e0 [dm_mod]\n    [\u003cffffffffa00de951\u003e] dev_create+0x51/0x350 [dm_mod]\n    [\u003cffffffffa00de823\u003e] ctl_ioctl+0x1a3/0x240 [dm_mod]\n    [\u003cffffffffa00de8f2\u003e] dm_compat_ctl_ioctl+0x12/0x20 [dm_mod]\n    [\u003cffffffff81177bfd\u003e] compat_sys_ioctl+0xcd/0x4f0\n    [\u003cffffffff81036ed8\u003e] sysenter_dispatch+0x7/0x2c\n    [\u003cffffffffffffffff\u003e] 0xffffffffffffffff\n\nSigned-off-by: Zdenek Kabelac \u003czkabelac@redhat.com\u003e\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "152f9d0710a62708710161bce1b29fa8292c8c11",
      "tree": "1a9fb02d236a0328a711eccdef9e29112e216ff7",
      "parents": [
        "79e1dd05d1a22e95ab6d54d21836f478b3b56976"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Sep 30 20:36:19 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Sep 30 22:56:10 2009 +0200"
      },
      "message": "sched_clock: Fix atomicity/continuity bug by using cmpxchg64()\n\nCommit def0a9b2573 (sched_clock: Make it NMI safe) assumed\ncmpxchg() of 64bit values was available on X86_32.\n\nThat is not so - and causes some subtle scheduler misbehavior due\nto incorrect timestamps off to up by ~4 seconds.\n\nTwo symptoms are known right now:\n\n - interactivity problems seen by Arjan: up to 600 msecs\n   latencies instead of the expected 20-40 msecs. These\n   latencies are very visible on the desktop.\n\n - incorrect CPU stats: occasionally too high percentages in \u0027top\u0027,\n   and crazy CPU usage stats.\n\nReported-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c20090930170754.0886ff2e@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f0f37e2f77731b3473fa6bd5ee53255d9a9cdb40",
      "tree": "3c26d3ed1a453156e9c208ccb5567a8954dba064",
      "parents": [
        "6f5071020d5ec89b5d095aa488db604adb921aec"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sun Sep 27 22:29:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Sep 27 11:39:25 2009 -0700"
      },
      "message": "const: mark struct vm_struct_operations\n\n* mark struct vm_area_struct::vm_ops as const\n* mark vm_ops in AGP code\n\nBut leave TTM code alone, something is fishy there with global vm_ops\nbeing used.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6f5071020d5ec89b5d095aa488db604adb921aec",
      "tree": "8d70c104b436d1ab6bdadf4cd618386802c37316",
      "parents": [
        "73964f6bc8e378715887592abe8a512f403db6a8",
        "7403f41f19574d6805197e9b97dfa7592003be10"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Sep 27 10:39:04 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Sep 27 10:39:04 2009 -0700"
      },
      "message": "Merge branch \u0027timers-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  hrtimer: Eliminate needless reprogramming of clock events device\n"
    },
    {
      "commit": "3b383767c41be070cae24875789d97b42a3e71a8",
      "tree": "414a2c3aa750fd25b84f477e2b9cdca17086602a",
      "parents": [
        "49e70dda359660f20fa21d03bfae132e15c78195",
        "9beba3c54dd180a26a1da2027cfbe9edfaf9c40e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 26 10:15:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 26 10:15:53 2009 -0700"
      },
      "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  futex: Add memory barrier commentary to futex_wait_queue_me()\n  futex: Fix wakeup race by setting TASK_INTERRUPTIBLE before queue_me()\n  futex: Correct futex_q woken state commentary\n  futex: Make function kernel-doc commentary consistent\n  futex: Correct queue_me and unqueue_me commentary\n  futex: Correct futex_wait_requeue_pi() commentary\n"
    },
    {
      "commit": "179b9145d58eb7158d4053a8308b9fc4608a6d6b",
      "tree": "6f63a64c2811135e6edca885f5a2c79f50ba7465",
      "parents": [
        "4187e7e9f1294afdcb3be5d00aa74412a1c2ded8",
        "89133f93508137231251543d1732da638e6022e1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 26 10:14:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 26 10:14:41 2009 -0700"
      },
      "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  clocksource: Resume clocksource without taking the clocksource mutex\n"
    },
    {
      "commit": "4187e7e9f1294afdcb3be5d00aa74412a1c2ded8",
      "tree": "1d4b3447cb2a7407d97e51ee5c48069d6b92c9e3",
      "parents": [
        "5bb241b325d7d91bc4ec0b394f31dffb17fe7978",
        "115e8a288252ef748f34f8b7c1115c563d702eda"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 26 10:13:54 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 26 10:13:54 2009 -0700"
      },
      "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  modules, tracing: Remove stale struct marker signature from module_layout()\n  tracing/workqueue: Use %pf in workqueue trace events\n  tracing: Fix a comment and a trivial format issue in tracepoint.h\n  tracing: Fix failure path in ftrace_regex_open()\n  tracing: Fix failure path in ftrace_graph_write()\n  tracing: Check the return value of trace_get_user()\n  tracing: Fix off-by-one in trace_get_user()\n"
    },
    {
      "commit": "8b3f6af86378d0a10ca2f1ded1da124aef13b62c",
      "tree": "de6ca90295730343c495be8d98be8efa322140ef",
      "parents": [
        "139d6065c83071d5f66cd013a274a43699f8e2c1",
        "94e0fb086fc5663c38bbc0fe86d698be8314f82f"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 24 15:13:11 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 24 15:13:11 2009 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of /home/davem/src/GIT/linux-2.6/\n\nConflicts:\n\tdrivers/staging/Kconfig\n\tdrivers/staging/Makefile\n\tdrivers/staging/cpc-usb/TODO\n\tdrivers/staging/cpc-usb/cpc-usb_drv.c\n\tdrivers/staging/cpc-usb/cpc.h\n\tdrivers/staging/cpc-usb/cpc_int.h\n\tdrivers/staging/cpc-usb/cpcusb.h\n"
    },
    {
      "commit": "89133f93508137231251543d1732da638e6022e1",
      "tree": "8f94df8c650bbe2ec765de89ce70b9e762a5ba2f",
      "parents": [
        "94a8d5caba74211ec76dac80fc6e2d5c391530df"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Thu Sep 24 17:29:52 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Sep 24 22:37:53 2009 +0200"
      },
      "message": "clocksource: Resume clocksource without taking the clocksource mutex\n\ngit commit 75c5158f70c065b9 converted the clocksource spinlock to a\nmutex. This causes the following BUG:\n\nBUG: sleeping function called from invalid context at\nkernel/mutex.c:280 in_atomic(): 0, irqs_disabled(): 1, pid: 2473,\nname: pm-suspend 2 locks held by pm-suspend/2473:\n #0:  (\u0026buffer-\u003emutex){......}, at: [\u003cffffffff8115ab13\u003e]\nsysfs_write_file+0x3c/0x137\n #1:  (pm_mutex){......}, at: [\u003cffffffff810865b5\u003e]\nenter_state+0x39/0x130 Pid: 2473, comm: pm-suspend Not tainted 2.6.31\n#1 Call Trace:\n [\u003cffffffff810792f0\u003e] ? __debug_show_held_locks+0x22/0x24\n [\u003cffffffff8104a2ef\u003e] __might_sleep+0x107/0x10b\n [\u003cffffffff8141fca9\u003e] mutex_lock_nested+0x25/0x43\n [\u003cffffffff81073537\u003e] clocksource_resume+0x1c/0x60\n [\u003cffffffff81072902\u003e] timekeeping_resume+0x1e/0x1c8\n [\u003cffffffff812aee62\u003e] __sysdev_resume+0x25/0xcf\n [\u003cffffffff812aef79\u003e] sysdev_resume+0x6d/0xae\n [\u003cffffffff810864f8\u003e] suspend_devices_and_enter+0x12b/0x1af\n [\u003cffffffff8108665b\u003e] enter_state+0xdf/0x130\n [\u003cffffffff81085dc3\u003e] state_store+0xb6/0xd3\n [\u003cffffffff81204c73\u003e] kobj_attr_store+0x17/0x19\n [\u003cffffffff8115abd2\u003e] sysfs_write_file+0xfb/0x137\n [\u003cffffffff811057d2\u003e] vfs_write+0xae/0x10b\n [\u003cffffffff81208392\u003e] ? __up_read+0x1a/0x7f\n [\u003cffffffff811058ef\u003e] sys_write+0x4a/0x6e\n [\u003cffffffff81011b82\u003e] system_call_fastpath+0x16/0x1b\n\nclocksource_resume is called early in the resume process, there is\nonly one cpu, no processes are running and the interrupts are\ndisabled. It is therefore possible to resume the clocksources\nwithout taking the clocksource mutex.\n\nReported-by: Xiaotian Feng \u003cxtfeng@gmail.com\u003e\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nTested-by: Michal Schmidt \u003cmschmidt@redhat.com\u003e\nCc: Xiaotian Feng \u003cxtfeng@gmail.com\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nLKML-Reference: \u003c20090924172952.49697825@mschwide.boeblingen.de.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9beba3c54dd180a26a1da2027cfbe9edfaf9c40e",
      "tree": "b7ede0a88beb7ee195adf40a7a03140e77ba43ee",
      "parents": [
        "0729e196147692d84d4c099fcff056eba2ed61d8"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Thu Sep 24 11:54:47 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Sep 24 22:30:10 2009 +0200"
      },
      "message": "futex: Add memory barrier commentary to futex_wait_queue_me()\n\nThe memory barrier semantics of futex_wait_queue_me() are\nnon-obvious. Add some commentary to try and clarify it.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Dinakar Guniguntala \u003cdino@in.ibm.com\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nLKML-Reference: \u003c20090924185447.694.38948.stgit@Aeon\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a6b49cb210f878709bdc0bddc16a853f18790d02",
      "tree": "6147078ef0ce584cb6a8dae7468f060ef5838d12",
      "parents": [
        "2c9871de0ae89a0e2c365ea6e277135fe031d8b4",
        "bfc8125858d777bd5bdba03a091c07cc2e0e17c0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 09:01:44 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 09:01:44 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.monstr.eu/linux-2.6-microblaze\n\n* \u0027for-linus\u0027 of git://git.monstr.eu/linux-2.6-microblaze: (24 commits)\n  microblaze: Disable heartbeat/enable emaclite in defconfigs\n  microblaze: Support simpleImage.dts make target\n  microblaze: Fix _start symbol to physical address\n  microblaze: Use LOAD_OFFSET macro to get correct LMA for all sections\n  microblaze: Create the LOAD_OFFSET macro used to compute VMA vs LMA offsets\n  microblaze: Copy ppc asm-compat.h for clean handling of constants in asm and C\n  microblaze: Actually show KiB rather than pages in \"Freeing initrd memory:\"\n  microblaze: Support ptrace syscall tracing.\n  microblaze: Updated CPU version and FPGA family codes in PVR\n  microblaze: Generate correct signal and siginfo for integer div-by-zero\n  microblaze: Don\u0027t be noisy when userspace causes hardware exceptions\n  microblaze: Remove ipc.h file which points to non-existing asm-generic file\n  microblaze: Clear sticky FSR register after generating exception signals\n  microblaze: Ensure CPU usermode is set on new userspace processes\n  microblaze: Use correct kbuild variable KBUILD_CFLAGS\n  microblaze: Save and restore msr in hw exception\n  microblaze: Add architectural support for USB EHCI host controllers\n  microblaze: Implement include/asm/syscall.h.\n  microblaze: Improve checking mechanism for MSR instruction\n  microblaze: Add checking mechanism for MSR instruction\n  ...\n"
    },
    {
      "commit": "2c9871de0ae89a0e2c365ea6e277135fe031d8b4",
      "tree": "1b5a05333f53c9eebb4d89924944201ec6e1f400",
      "parents": [
        "dc2af6a6bcf3abdf44ac545759a6547dfe12070e",
        "ffa9f12a41ec117207e8d953f90b9c179546c8d7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 09:01:05 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 09:01:05 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus:\n  module: don\u0027t call percpu_modfree on NULL pointer.\n  module: fix memory leak when load fails after srcversion/version allocated\n  module: preferred way to use MODULE_AUTHOR\n  param: allow whitespace as kernel parameter separator\n  module: reduce string table for loaded modules (v2)\n  module: reduce symbol table for loaded modules (v2)\n"
    },
    {
      "commit": "6d39b27f0ac7e805ae3bd9efa51d7da04bec0360",
      "tree": "21a9cd29a07dd1afe70fe88f1343a0fa0fb0ed26",
      "parents": [
        "a487b6705a811087c182c8cab7e3b5845dfa6ccb",
        "d81165919ebf6e1cb9eeb612150f9287ad414659"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 08:31:04 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 08:31:04 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current:\n  lsm: Use a compressed IPv6 string format in audit events\n  Audit: send signal info if selinux is disabled\n  Audit: rearrange audit_context to save 16 bytes per struct\n  Audit: reorganize struct audit_watch to save 8 bytes\n"
    },
    {
      "commit": "ffa9f12a41ec117207e8d953f90b9c179546c8d7",
      "tree": "c587166a485b631bc8645caec4eff6f2e9f295fe",
      "parents": [
        "a263f7763c364015f92e7c097fa46c6673f6fcb0"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Sep 25 00:32:59 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Sep 25 00:32:59 2009 +0930"
      },
      "message": "module: don\u0027t call percpu_modfree on NULL pointer.\n\nThe general one handles NULL, the static obsolescent\n(CONFIG_HAVE_LEGACY_PER_CPU_AREA) one in module.c doesn\u0027t; Eric\u0027s\ncommit 720eba31 assumed it did, and various frobbings since then kept\nthat assumption.\n\nAll other callers in module.c all protect it with an if; this effectively\ndoes the same as free_init is only goto if we fail percpu_modalloc().\n\nReported-by: Kamalesh Babulal \u003ckamalesh@linux.vnet.ibm.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nCc: Américo Wang \u003cxiyou.wangcong@gmail.com\u003e\nTested-by: Kamalesh Babulal \u003ckamalesh@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "a263f7763c364015f92e7c097fa46c6673f6fcb0",
      "tree": "3fecc1a81f60ef71bc59c751f298496f9b0b1da6",
      "parents": [
        "1d7015caa082d465faeae5d6fd1be077ee6dfa87"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Sep 25 00:32:58 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Sep 25 00:32:59 2009 +0930"
      },
      "message": "module: fix memory leak when load fails after srcversion/version allocated\n\nNormally the twisty paths of sysfs will free the attributes, but not if\nwe fail before we hook it into sysfs (which is the last thing we do in\nload_module).\n\n(This sysfs code is a turd, no doubt there are other issues lurking too).\n\nReported-by: Tetsuo Handa \u003cpenguin-kernel@i-love.sakura.ne.jp\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nTested-by: Tetsuo Handa \u003cpenguin-kernel@i-love.sakura.ne.jp\u003e\n"
    },
    {
      "commit": "26d052bfce799ef0e7262695b46e3525ca4d381d",
      "tree": "4244565b8a687f52fa2b7375cc8435fd1bb41e98",
      "parents": [
        "554bdfe5acf3715e87c8d5e25a4f9a896ac9f014"
      ],
      "author": {
        "name": "Peter Oberparleiter",
        "email": "oberpar@linux.vnet.ibm.com",
        "time": "Mon Jul 06 17:11:22 2009 +0200"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Sep 25 00:32:58 2009 +0930"
      },
      "message": "param: allow whitespace as kernel parameter separator\n\nSome boot mechanisms require that kernel parameters are stored in a\nseparate file which is loaded to memory without further processing\n(e.g. the \"Load from FTP\" method on s390). When such a file contains\nnewline characters, the kernel parameter preceding the newline might\nnot be correctly parsed (due to the newline being stuck to the end of\nthe actual parameter value) which can lead to boot failures.\n\nThis patch improves kernel command line usability in such a situation\nby allowing generic whitespace characters as separators between kernel\nparameters.\n\nSigned-off-by: Peter Oberparleiter \u003coberpar@linux.vnet.ibm.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "554bdfe5acf3715e87c8d5e25a4f9a896ac9f014",
      "tree": "8a03f9799114c8100a3e54d230d9e31703248f7a",
      "parents": [
        "4a4962263f07d14660849ec134ee42b63e95ea9a"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "JBeulich@novell.com",
        "time": "Mon Jul 06 14:51:44 2009 +0100"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Sep 25 00:32:57 2009 +0930"
      },
      "message": "module: reduce string table for loaded modules (v2)\n\nAlso remove all parts of the string table (referenced by the symbol\ntable) that are not needed for kallsyms use (i.e. which were only\nreferenced by symbols discarded by the previous patch, or not\nreferenced at all for whatever reason).\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "4a4962263f07d14660849ec134ee42b63e95ea9a",
      "tree": "0edfe694167c224a6d9e48901743edd478a71c29",
      "parents": [
        "94a8d5caba74211ec76dac80fc6e2d5c391530df"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "JBeulich@novell.com",
        "time": "Mon Jul 06 14:50:42 2009 +0100"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Sep 25 00:32:57 2009 +0930"
      },
      "message": "module: reduce symbol table for loaded modules (v2)\n\nDiscard all symbols not interesting for kallsyms use: absolute,\nsection, and in the common case (!KALLSYMS_ALL) data ones.\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "db16826367fefcb0ddb93d76b66adc52eb4e6339",
      "tree": "626224c1eb1eb79c522714591f208b4fdbdcd9d4",
      "parents": [
        "cd6045138ed1bb5d8773e940d51c34318eef3ef2",
        "465fdd97cbe16ef8727221857e96ef62dd352017"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:53:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:53:22 2009 -0700"
      },
      "message": "Merge branch \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6\n\n* \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6: (21 commits)\n  HWPOISON: Enable error_remove_page on btrfs\n  HWPOISON: Add simple debugfs interface to inject hwpoison on arbitary PFNs\n  HWPOISON: Add madvise() based injector for hardware poisoned pages v4\n  HWPOISON: Enable error_remove_page for NFS\n  HWPOISON: Enable .remove_error_page for migration aware file systems\n  HWPOISON: The high level memory error handler in the VM v7\n  HWPOISON: Add PR_MCE_KILL prctl to control early kill behaviour per process\n  HWPOISON: shmem: call set_page_dirty() with locked page\n  HWPOISON: Define a new error_remove_page address space op for async truncation\n  HWPOISON: Add invalidate_inode_page\n  HWPOISON: Refactor truncate to allow direct truncating of page v2\n  HWPOISON: check and isolate corrupted free pages v2\n  HWPOISON: Handle hardware poisoned pages in try_to_unmap\n  HWPOISON: Use bitmask/action code for try_to_unmap behaviour\n  HWPOISON: x86: Add VM_FAULT_HWPOISON handling to x86 page fault handler v2\n  HWPOISON: Add poison check to page fault handling\n  HWPOISON: Add basic support for poisoned pages in fault handler v3\n  HWPOISON: Add new SIGBUS error codes for hardware poison signals\n  HWPOISON: Add support for poison swap entries v2\n  HWPOISON: Export some rmap vma locking to outside world\n  ...\n"
    },
    {
      "commit": "801460d0cf5c5288153b722565773059b0f44348",
      "tree": "ff2542903572a546ac59e92f295e9a18e718afa0",
      "parents": [
        "2fa4341074cd02fb39aa23410740764948755635"
      ],
      "author": {
        "name": "Hiroshi Shimamoto",
        "email": "h-shimamoto@ct.jp.nec.com",
        "time": "Wed Sep 23 15:57:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:05 2009 -0700"
      },
      "message": "task_struct cleanup: move binfmt field to mm_struct\n\nBecause the binfmt is not different between threads in the same process,\nit can be moved from task_struct to mm_struct.  And binfmt moudle is\nhandled per mm_struct instead of task_struct.\n\nSigned-off-by: Hiroshi Shimamoto \u003ch-shimamoto@ct.jp.nec.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "858f09930b32c11b40fd0c5c467982ba09b10894",
      "tree": "43972de84d69d61904f4f24ff78f99a3a82c2ff3",
      "parents": [
        "b873c2f34ecd4a5a69b41b852cbc365694541c5f"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Sep 23 15:57:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:05 2009 -0700"
      },
      "message": "aio: ifdef fields in mm_struct\n\n-\u003eioctx_lock and -\u003eioctx_list are used only under CONFIG_AIO.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e5a4738699d6eca408dcb225bd350413927701e2",
      "tree": "1a24e5d7d5eb85affbaf435dbe626ba0a401bb62",
      "parents": [
        "123be07b0b399670a7cc3d82fef0cb4f93ef885c"
      ],
      "author": {
        "name": "Sukadev Bhattiprolu",
        "email": "sukadev@linux.vnet.ibm.com",
        "time": "Wed Sep 23 15:57:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:04 2009 -0700"
      },
      "message": "pidns: deny CLONE_PARENT|CLONE_NEWPID combination\n\nCLONE_PARENT was used to implement an older threading model.  For\nconsistency with the CLONE_THREAD check in copy_pid_ns(), disable\nCLONE_PARENT with CLONE_NEWPID, at least until the required semantics of\npid namespaces are clear.\n\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Oren Laadan \u003corenl@cs.columbia.edu\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "123be07b0b399670a7cc3d82fef0cb4f93ef885c",
      "tree": "b6edc440be85cf312f7c35ad7b01c7ce7d9241a7",
      "parents": [
        "8d65af789f3e2cf4cfbdbf71a0f7a61ebcd41d38"
      ],
      "author": {
        "name": "Sukadev Bhattiprolu",
        "email": "sukadev@linux.vnet.ibm.com",
        "time": "Wed Sep 23 15:57:20 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:04 2009 -0700"
      },
      "message": "fork(): disable CLONE_PARENT for init\n\nWhen global or container-init processes use CLONE_PARENT, they create a\nmulti-rooted process tree.  Besides siblings of global init remain as\nzombies on exit since they are not reaped by their parent (swapper).  So\nprevent global and container-inits from creating siblings.\n\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nAcked-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Oren Laadan \u003corenl@cs.columbia.edu\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Serge 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": "8d65af789f3e2cf4cfbdbf71a0f7a61ebcd41d38",
      "tree": "121df3bfffc7853ac6d2c514ad514d4a748a0933",
      "parents": [
        "c0d0787b6d47d9f4d5e8bd321921104e854a9135"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Sep 23 15:57:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:04 2009 -0700"
      },
      "message": "sysctl: remove \"struct file *\" argument of -\u003eproc_handler\n\nIt\u0027s unused.\n\nIt isn\u0027t needed -- read or write flag is already passed and sysctl\nshouldn\u0027t care about the rest.\n\nIt _was_ used in two places at arch/frv for some reason.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d9588725e52650e82989707f8fd2feb67ad2dc8e",
      "tree": "39a9f9f5e8ba6a6e008b9ada310347e24ede400e",
      "parents": [
        "ba0a6c9f6fceed11c6a99e8326f0477fe383e6b5"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Wed Sep 23 15:57:04 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:01 2009 -0700"
      },
      "message": "signals: inline __fatal_signal_pending\n\n__fatal_signal_pending inlines to one instruction on x86, probably two\ninstructions on other machines.  It takes two longer x86 instructions just\nto call it and test its return value, not to mention the function itself.\n\nOn my random x86_64 config, this saved 70 bytes of text (59 of those being\n__fatal_signal_pending itself).\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4a30debfb778240a4b1767d4b0c5a5b25ab97160",
      "tree": "bc4fed4ebb8368ebbfa719a004b15101b0a71d53",
      "parents": [
        "964ee7df90d799e38fb1556c57cd5c45fc736436"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Sep 23 15:57:00 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:01 2009 -0700"
      },
      "message": "signals: introduce do_send_sig_info() helper\n\nIntroduce do_send_sig_info() and convert group_send_sig_info(),\nsend_sig_info(), do_send_specific() to use this helper.\n\nHopefully it will have more users soon, it allows to specify\nspecific/group behaviour via \"bool group\" argument.\n\nShaves 80 bytes from .text.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: stephane eranian \u003ceranian@googlemail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a293980c2e261bd5b0d2a77340dd04f684caff58",
      "tree": "69f2b2747548deafb146c18953ebce21ae1f02d4",
      "parents": [
        "725eae32df7754044809973034429a47e6035158"
      ],
      "author": {
        "name": "Neil Horman",
        "email": "nhorman@tuxdriver.com",
        "time": "Wed Sep 23 15:56:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:00 2009 -0700"
      },
      "message": "exec: let do_coredump() limit the number of concurrent dumps to pipes\n\nIntroduce core pipe limiting sysctl.\n\nSince we can dump cores to pipe, rather than directly to the filesystem,\nwe create a condition in which a user can create a very high load on the\nsystem simply by running bad applications.\n\nIf the pipe reader specified in core_pattern is poorly written, we can\nhave lots of ourstandig resources and processes in the system.\n\nThis sysctl introduces an ability to limit that resource consumption.\ncore_pipe_limit defines how many in-flight dumps may be run in parallel,\ndumps beyond this value are skipped and a note is made in the kernel log.\nA special value of 0 in core_pipe_limit denotes unlimited core dumps may\nbe handled (this is the default value).\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nReported-by: Earl Chew \u003cearl_chew@agilent.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ae6d2ed7bb3877ff35b9569402025f40ea2e1803",
      "tree": "80527061ab7615cd890236b777b2be6e909a1573",
      "parents": [
        "b6fe2d117e98805ee76352e6468f87d494a97292"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Wed Sep 23 15:56:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:00 2009 -0700"
      },
      "message": "signals: tracehook_notify_jctl change\n\nThis changes tracehook_notify_jctl() so it\u0027s called with the siglock held,\nand changes its argument and return value definition.  These clean-ups\nmake it a better fit for what new tracing hooks need to check.\n\nTracing needs the siglock here, held from the time TASK_STOPPED was set,\nto avoid potential SIGCONT races if it wants to allow any blocking in its\ntracing hooks.\n\nThis also folds the finish_stop() function into its caller\ndo_signal_stop().  The function is short, called only once and only\nunconditionally.  It aids readability to fold it in.\n\n[oleg@redhat.com: do not call tracehook_notify_jctl() in TASK_STOPPED state]\n[oleg@redhat.com: introduce tracehook_finish_jctl() helper]\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b6fe2d117e98805ee76352e6468f87d494a97292",
      "tree": "3de99eb7652647000b53bca1f6ea740c926ccfca",
      "parents": [
        "dfe16dfa4ac178d9a10b489a73d535c6976e48d2"
      ],
      "author": {
        "name": "Vitaly Mayatskikh",
        "email": "v.mayatskih@gmail.com",
        "time": "Wed Sep 23 15:56:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:00 2009 -0700"
      },
      "message": "wait_noreap_copyout(): check for -\u003ewo_info !\u003d NULL\n\nCurrent behaviour of sys_waitid() looks odd.  If user passes infop \u003d\u003d\nNULL, sys_waitid() returns success.  When user additionally specifies flag\nWNOWAIT, sys_waitid() returns -EFAULT on the same conditions.  When user\ncombines WNOWAIT with WCONTINUED, sys_waitid() again returns success.\n\nThis patch adds check for -\u003ewo_info in wait_noreap_copyout().\n\nUser-visible change: starting from this commit, sys_waitid() always checks\ninfop !\u003d NULL and does not fail if it is NULL.\n\nSigned-off-by: Vitaly Mayatskikh \u003cv.mayatskih@gmail.com\u003e\nReviewed-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dfe16dfa4ac178d9a10b489a73d535c6976e48d2",
      "tree": "0ebd7bddf7e99915baed4955faeed2af5bba4203",
      "parents": [
        "b6e763f07fba6243d2a553ed9a4f3e10a789932a"
      ],
      "author": {
        "name": "Vitaly Mayatskikh",
        "email": "v.mayatskih@gmail.com",
        "time": "Wed Sep 23 15:56:51 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:00 2009 -0700"
      },
      "message": "do_wait: fix sys_waitid()-specific behaviour\n\ndo_wait() checks -\u003ewo_info to figure out who is the caller.  If it\u0027s not\nNULL the caller should be sys_waitid(), in that case do_wait() fixes up\nthe retval or zeros -\u003ewo_info, depending on retval from underlying\nfunction.\n\nThis is bug: user can pass -\u003ewo_info \u003d\u003d NULL and sys_waitid() will return\nincorrect value.\n\nman 2 waitid says:\n\n\twaitid(): returns 0 on success\n\nTest-case:\n\n\tint main(void)\n\t{\n\t\tif (fork())\n\t\t\tassert(waitid(P_ALL, 0, NULL, WEXITED) \u003d\u003d 0);\n\n\t\treturn 0;\n\t}\n\nResult:\n\n\tAssertion `waitid(P_ALL, 0, ((void *)0), 4) \u003d\u003d 0\u0027 failed.\n\nMove that code to sys_waitid().\n\nUser-visible change: sys_waitid() will return 0 on success, either\ninfop is set or not.\n\nNote, there\u0027s another bug in wait_noreap_copyout() which affects\nreturn value of sys_waitid(). It will be fixed in next patch.\n\nSigned-off-by: Vitaly Mayatskikh \u003cv.mayatskih@gmail.com\u003e\nReviewed-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b6e763f07fba6243d2a553ed9a4f3e10a789932a",
      "tree": "10f2f4c8dc44400eb8e1ac1d4875b517f02f4f17",
      "parents": [
        "989264f4645c183331a1279d513f4b1ddc06e1f5"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Sep 23 15:56:50 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:00 2009 -0700"
      },
      "message": "wait_consider_task: kill \"parent\" argument\n\nKill the unused \"parent\" argument in wait_consider_task(), it was never used.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Ratan Nalumasu \u003crnalumasu@gmail.com\u003e\nCc: Vitaly Mayatskikh \u003cvmayatsk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "989264f4645c183331a1279d513f4b1ddc06e1f5",
      "tree": "44dc1d6ae0ba66229a6b9e85ac22a3edc87a4b8d",
      "parents": [
        "5c01ba49e6647d86bc7576105f82027200d1f303"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Sep 23 15:56:49 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:00 2009 -0700"
      },
      "message": "do_wait-wakeup-optimization: simplify task_pid_type()\n\ntask_pid_type() is only used by eligible_pid() which has to check wo_type\n!\u003d PIDTYPE_MAX anyway.  Remove this check from task_pid_type() and factor\nout -\u003epids[type] access, this shrinks .text a bit and simplifies the code.\n\nThe matches the behaviour of other similar helpers, say get_task_pid().\nThe caller must ensure that pid_type is valid, not the callee.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5c01ba49e6647d86bc7576105f82027200d1f303",
      "tree": "700aa5dbda7c726e8b60803225587a1bc4fdbdb5",
      "parents": [
        "b4fe51823d797d6959b2eee7868023e61606daa9"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Sep 23 15:56:48 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:00 2009 -0700"
      },
      "message": "do_wait-wakeup-optimization: fix child_wait_callback()-\u003eeligible_child() usage\n\nchild_wait_callback()-\u003eeligible_child() is not right, we can miss the\nwakeup if the task was detached before __wake_up_parent() and the caller\nof do_wait() didn\u0027t use __WALL.\n\nMove -\u003ewo_pid checks from eligible_child() to the new helper,\neligible_pid(), and change child_wait_callback() to use it instead of\neligible_child().\n\nNote: actually I think it would be better to fix the __WCLONE check in\neligible_child(), it doesn\u0027t look exactly right.  But it is not clear what\nis the supposed behaviour, and any change is user-visible.\n\nReported-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nTested-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b4fe51823d797d6959b2eee7868023e61606daa9",
      "tree": "e078feaa1cdfbbdc98b5f5f668fecc37c1907b2e",
      "parents": [
        "0b7570e77f7c3abd43107dabc47ea89daf9a1cba"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Sep 23 15:56:47 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:00 2009 -0700"
      },
      "message": "do_wait() wakeup optimization: child_wait_callback: check __WNOTHREAD case\n\nSuggested by Roland.\n\ndo_wait(__WNOTHREAD) can only succeed if the caller is either ptracer, or\nit is -\u003ereal_parent and the child is not traced. IOW, caller \u003d\u003d p-\u003eparent\notherwise we should not wake up.\n\nChange child_wait_callback() to check this. Ratan reports the workload with\nCPU load \u003e99% caused by unnecessary wakeups, should be fixed by this patch.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Ratan Nalumasu \u003crnalumasu@gmail.com\u003e\nCc: Vitaly Mayatskikh \u003cvmayatsk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0b7570e77f7c3abd43107dabc47ea89daf9a1cba",
      "tree": "8dd93b4a189b4e98384d4470a289ecfb7818cc26",
      "parents": [
        "a2322e1d272938d192d8c24cdacf57c0c7a2683f"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Sep 23 15:56:46 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:59 2009 -0700"
      },
      "message": "do_wait() wakeup optimization: change __wake_up_parent() to use filtered wakeup\n\nRatan Nalumasu reported that in a process with many threads doing\nunnecessary wakeups.  Every waiting thread in the process wakes up to loop\nthrough the children and see that the only ones it cares about are still\nnot ready.\n\nNow that we have struct wait_opts we can change do_wait/__wake_up_parent\nto use filtered wakeups.\n\nWe can make child_wait_callback() more clever later, right now it only\nchecks eligible_child().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Ratan Nalumasu \u003crnalumasu@gmail.com\u003e\nCc: Vitaly Mayatskikh \u003cvmayatsk@redhat.com\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nTested-by: Valdis Kletnieks \u003cvaldis.kletnieks@vt.edu\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a2322e1d272938d192d8c24cdacf57c0c7a2683f",
      "tree": "f53bbed32d44a190df42cddc9f3635371272e329",
      "parents": [
        "a7f0765edfd53aed09cb7b0e15863688b39447de"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Sep 23 15:56:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:59 2009 -0700"
      },
      "message": "do_wait() wakeup optimization: shift security_task_wait() from eligible_child() to wait_consider_task()\n\nPreparation, no functional changes.\n\neligible_child() has a single caller, wait_consider_task(). We can move\nsecurity_task_wait() out from eligible_child(), this allows us to use it\nfor filtered wake_up().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Ratan Nalumasu \u003crnalumasu@gmail.com\u003e\nCc: Vitaly Mayatskikh \u003cvmayatsk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a7f0765edfd53aed09cb7b0e15863688b39447de",
      "tree": "c89adfe418f9988ad4044e0f22827458bdf6b155",
      "parents": [
        "1dd3a27326d307952f8ad2499478c84dc7311517"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Sep 23 15:56:44 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:59 2009 -0700"
      },
      "message": "ptrace: __ptrace_detach: do __wake_up_parent() if we reap the tracee\n\nThe bug is old, it wasn\u0027t cause by recent changes.\n\nTest case:\n\n\tstatic void *tfunc(void *arg)\n\t{\n\t\tint pid \u003d (long)arg;\n\n\t\tassert(ptrace(PTRACE_ATTACH, pid, NULL, NULL) \u003d\u003d 0);\n\t\tkill(pid, SIGKILL);\n\n\t\tsleep(1);\n\t\treturn NULL;\n\t}\n\n\tint main(void)\n\t{\n\t\tpthread_t th;\n\t\tlong pid \u003d fork();\n\n\t\tif (!pid)\n\t\t\tpause();\n\n\t\tsignal(SIGCHLD, SIG_IGN);\n\t\tassert(pthread_create(\u0026th, NULL, tfunc, (void*)pid) \u003d\u003d 0);\n\n\t\tint r \u003d waitpid(-1, NULL, __WNOTHREAD);\n\t\tprintf(\"waitpid: %d %m\\n\", r);\n\n\t\treturn 0;\n\t}\n\nBefore the patch this program hangs, after this patch waitpid() correctly\nfails with errno \u003d\u003d -ECHILD.\n\nThe problem is, __ptrace_detach() reaps the EXIT_ZOMBIE tracee if its\n-\u003ereal_parent is our sub-thread and we ignore SIGCHLD.  But in this case\nwe should wake up other threads which can sleep in do_wait().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Vitaly Mayatskikh \u003cvmayatsk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f64c3f54940d6929a2b6dcffaab942bd62be2e66",
      "tree": "7b3587700b08639970580be6c87f36df80ca8c74",
      "parents": [
        "296c81d89f4f14269f7346f81442910158c0a83a"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Wed Sep 23 15:56:37 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:59 2009 -0700"
      },
      "message": "memory controller: soft limit organize cgroups\n\nOrganize cgroups over soft limit in a RB-Tree\n\nIntroduce an RB-Tree for storing memory cgroups that are over their soft\nlimit.  The overall goal is to\n\n1. Add a memory cgroup to the RB-Tree when the soft limit is exceeded.\n   We are careful about updates, updates take place only after a particular\n   time interval has passed\n2. We remove the node from the RB-Tree when the usage goes below the soft\n   limit\n\nThe next set of patches will exploit the RB-Tree to get the group that is\nover its soft limit by the largest amount and reclaim from it, when we\nface memory contention.\n\n[hugh.dickins@tiscali.co.uk: CONFIG_CGROUP_MEM_RES_CTLR\u003dy CONFIG_PREEMPT\u003dy fails to boot]\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Jiri Slaby \u003cjirislaby@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "296c81d89f4f14269f7346f81442910158c0a83a",
      "tree": "cf0e1facd1fed8282c1885bc4126e7bca1928712",
      "parents": [
        "a6df63615b943dbef22df04c19f4506330fe835e"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Wed Sep 23 15:56:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:59 2009 -0700"
      },
      "message": "memory controller: soft limit interface\n\nAdd an interface to allow get/set of soft limits.  Soft limits for memory\nplus swap controller (memsw) is currently not supported.  Resource\ncounters have been enhanced to support soft limits and new type\nRES_SOFT_LIMIT has been added.  Unlike hard limits, soft limits can be\ndirectly set and do not need any reclaim or checks before setting them to\na newer value.\n\nKamezawa-San raised a question as to whether soft limit should belong to\nres_counter.  Since all resources understand the basic concepts of hard\nand soft limits, it is justified to add soft limits here.  Soft limits are\na generic resource usage feature, even file system quotas support soft\nlimits.\n\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "be367d09927023d081f9199665c8500f69f14d22",
      "tree": "f0c5b9da037506da3c5890cf11b51b39a7d3c427",
      "parents": [
        "c378369d8b4fa516ff2b1e79c3eded4e0e955ebb"
      ],
      "author": {
        "name": "Ben Blum",
        "email": "bblum@google.com",
        "time": "Wed Sep 23 15:56:31 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:58 2009 -0700"
      },
      "message": "cgroups: let ss-\u003ecan_attach and ss-\u003eattach do whole threadgroups at a time\n\nAlter the ss-\u003ecan_attach and ss-\u003eattach functions to be able to deal with\na whole threadgroup at a time, for use in cgroup_attach_proc.  (This is a\npre-patch to cgroup-procs-writable.patch.)\n\nCurrently, new mode of the attach function can only tell the subsystem\nabout the old cgroup of the threadgroup leader.  No subsystem currently\nneeds that information for each thread that\u0027s being moved, but if one were\nto be added (for example, one that counts tasks within a group) this bit\nwould need to be reworked a bit to tell the subsystem the right\ninformation.\n\n[hidave.darkstar@gmail.com: fix build]\nSigned-off-by: Ben Blum \u003cbblum@google.com\u003e\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nAcked-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nReviewed-by: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Dave Young \u003chidave.darkstar@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c378369d8b4fa516ff2b1e79c3eded4e0e955ebb",
      "tree": "33dff6fa14c5b70cf25368b1bde57e5610a308b3",
      "parents": [
        "d1d9fd3308fdef6b4bf564fa3d6cfe35b68b50bc"
      ],
      "author": {
        "name": "Ben Blum",
        "email": "bblum@google.com",
        "time": "Wed Sep 23 15:56:29 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:58 2009 -0700"
      },
      "message": "cgroups: change css_set freeing mechanism to be under RCU\n\nChanges css_set freeing mechanism to be under RCU\n\nThis is a prepatch for making the procs file writable. In order to free the\nold css_sets for each task to be moved as they\u0027re being moved, the freeing\nmechanism must be RCU-protected, or else we would have to have a call to\nsynchronize_rcu() for each task before freeing its old css_set.\n\nSigned-off-by: Ben Blum \u003cbblum@google.com\u003e\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nAcked-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d1d9fd3308fdef6b4bf564fa3d6cfe35b68b50bc",
      "tree": "8de392166f2edb696950a90e468ef27f043be509",
      "parents": [
        "72a8cb30d10d4041c455a7054607a7d519167c87"
      ],
      "author": {
        "name": "Ben Blum",
        "email": "bblum@google.com",
        "time": "Wed Sep 23 15:56:28 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:58 2009 -0700"
      },
      "message": "cgroups: use vmalloc for large cgroups pidlist allocations\n\nSeparates all pidlist allocation requests to a separate function that\njudges based on the requested size whether or not the array needs to be\nvmalloced or can be gotten via kmalloc, and similar for kfree/vfree.\n\nSigned-off-by: Ben Blum \u003cbblum@google.com\u003e\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nAcked-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "72a8cb30d10d4041c455a7054607a7d519167c87",
      "tree": "9b499f9c7f4de011ba5c8282df0b2280b7c21f0b",
      "parents": [
        "102a775e3647628727ae83a9a6abf0564c3ca7cb"
      ],
      "author": {
        "name": "Ben Blum",
        "email": "bblum@google.com",
        "time": "Wed Sep 23 15:56:27 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:58 2009 -0700"
      },
      "message": "cgroups: ensure correct concurrent opening/reading of pidlists across pid namespaces\n\nPreviously there was the problem in which two processes from different pid\nnamespaces reading the tasks or procs file could result in one process\nseeing results from the other\u0027s namespace.  Rather than one pidlist for\neach file in a cgroup, we now keep a list of pidlists keyed by namespace\nand file type (tasks versus procs) in which entries are placed on demand.\nEach pidlist has its own lock, and that the pidlists themselves are passed\naround in the seq_file\u0027s private pointer means we don\u0027t have to touch the\ncgroup or its master list except when creating and destroying entries.\n\nSigned-off-by: Ben Blum \u003cbblum@google.com\u003e\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "102a775e3647628727ae83a9a6abf0564c3ca7cb",
      "tree": "77a3d9717daa0f1dceccc0dcdf821aa12e684e07",
      "parents": [
        "8f3ff20862cfcb85500a2bb55ee64622bd59fd0c"
      ],
      "author": {
        "name": "Ben Blum",
        "email": "bblum@google.com",
        "time": "Wed Sep 23 15:56:26 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:58 2009 -0700"
      },
      "message": "cgroups: add a read-only \"procs\" file similar to \"tasks\" that shows only unique tgids\n\nstruct cgroup used to have a bunch of fields for keeping track of the\npidlist for the tasks file.  Those are now separated into a new struct\ncgroup_pidlist, of which two are had, one for procs and one for tasks.\nThe way the seq_file operations are set up is changed so that just the\npidlist struct gets passed around as the private data.\n\nInterface example: Suppose a multithreaded process has pid 1000 and other\nthreads with ids 1001, 1002, 1003:\n$ cat tasks\n1000\n1001\n1002\n1003\n$ cat cgroup.procs\n1000\n$\n\nSigned-off-by: Ben Blum \u003cbblum@google.com\u003e\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nAcked-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8f3ff20862cfcb85500a2bb55ee64622bd59fd0c",
      "tree": "ccf408f52ee23b1c0130520a84c21bbd8f4077e7",
      "parents": [
        "2c6ab6d200827e1c41dc71fff3a2ac7473f51777"
      ],
      "author": {
        "name": "Paul Menage",
        "email": "menage@google.com",
        "time": "Wed Sep 23 15:56:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:58 2009 -0700"
      },
      "message": "cgroups: revert \"cgroups: fix pid namespace bug\"\n\nThe following series adds a \"cgroup.procs\" file to each cgroup that\nreports unique tgids rather than pids, and allows all threads in a\nthreadgroup to be atomically moved to a new cgroup.\n\nThe subsystem \"attach\" interface is modified to support attaching whole\nthreadgroups at a time, which could introduce potential problems if any\nsubsystem were to need to access the old cgroup of every thread being\nmoved.  The attach interface may need to be revised if this becomes the\ncase.\n\nAlso added is functionality for read/write locking all CLONE_THREAD\nfork()ing within a threadgroup, by means of an rwsem that lives in the\nsighand_struct, for per-threadgroup-ness and also for sharing a cacheline\nwith the sighand\u0027s atomic count.  This scheme should introduce no extra\noverhead in the fork path when there\u0027s no contention.\n\nThe final patch reveals potential for a race when forking before a\nsubsystem\u0027s attach function is called - one potential solution in case any\nsubsystem has this problem is to hang on to the group\u0027s fork mutex through\nthe attach() calls, though no subsystem yet demonstrates need for an\nextended critical section.\n\nThis patch:\n\nRevert\n\ncommit 096b7fe012d66ed55e98bc8022405ede0cc80e96\nAuthor:     Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAuthorDate: Wed Jul 29 15:04:04 2009 -0700\nCommit:     Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCommitDate: Wed Jul 29 19:10:35 2009 -0700\n\n    cgroups: fix pid namespace bug\n\nThis is in preparation for some clashing cgroups changes that subsume the\noriginal commit\u0027s functionaliy.\n\nThe original commit fixed a pid namespace bug which Ben Blum fixed\nindependently (in the same way, but with different code) as part of a\nseries of patches.  I played around with trying to reconcile Ben\u0027s patch\nseries with Li\u0027s patch, but concluded that it was simpler to just revert\nLi\u0027s, given that Ben\u0027s patch series contained essentially the same fix.\n\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2c6ab6d200827e1c41dc71fff3a2ac7473f51777",
      "tree": "1ea1e6b46356a0c350c6bc3b39cb852628263fd9",
      "parents": [
        "7717f7ba92de485bce8293419a20ffef130f4286"
      ],
      "author": {
        "name": "Paul Menage",
        "email": "menage@google.com",
        "time": "Wed Sep 23 15:56:23 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:58 2009 -0700"
      },
      "message": "cgroups: allow cgroup hierarchies to be created with no bound subsystems\n\nThis patch removes the restriction that a cgroup hierarchy must have at\nleast one bound subsystem.  The mount option \"none\" is treated as an\nexplicit request for no bound subsystems.\n\nA hierarchy with no subsystems can be useful for plain task tracking, and\nis also a step towards the support for multiply-bindable subsystems.\n\nAs part of this change, the hierarchy id is no longer calculated from the\nbitmask of subsystems in the hierarchy (since this is not guaranteed to be\nunique) but is allocated via an ida.  Reference counts on cgroups from\ncss_set objects are now taken explicitly one per hierarchy, rather than\none per subsystem.\n\nExample usage:\n\nmount -t cgroup -o none,name\u003dfoo cgroup /mnt/cgroup\n\nBased on the \"no-op\"/\"none\" subsystem concept proposed by\nkamezawa.hiroyu@jp.fujitsu.com\n\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Dhaval Giani \u003cdhaval@linux.vnet.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": "7717f7ba92de485bce8293419a20ffef130f4286",
      "tree": "dc3d164fbef69e8481126bfc9cf596d0895c11e8",
      "parents": [
        "fe6934354f8e287275500cd6ec73826d4d6ad457"
      ],
      "author": {
        "name": "Paul Menage",
        "email": "menage@google.com",
        "time": "Wed Sep 23 15:56:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:58 2009 -0700"
      },
      "message": "cgroups: add a back-pointer from struct cg_cgroup_link to struct cgroup\n\nCurrently the cgroups code makes the assumption that the subsystem\npointers in a struct css_set uniquely identify the hierarchy-\u003ecgroup\nmappings associated with the css_set; and there\u0027s no way to directly\nidentify the associated set of cgroups other than by indirecting through\nthe appropriate subsystem state pointers.\n\nThis patch removes the need for that assumption by adding a back-pointer\nfrom struct cg_cgroup_link object to its associated cgroup; this allows\nthe set of cgroups to be determined by traversing the cg_links list in\nthe struct css_set.\n\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Dhaval Giani \u003cdhaval@linux.vnet.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": "fe6934354f8e287275500cd6ec73826d4d6ad457",
      "tree": "f5ccab89d27472f5116257d1f7248594d3510882",
      "parents": [
        "c6d57f3312a6619d47c5557b5f6154a74d04ff80"
      ],
      "author": {
        "name": "Paul Menage",
        "email": "menage@google.com",
        "time": "Wed Sep 23 15:56:20 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:57 2009 -0700"
      },
      "message": "cgroups: move the cgroup debug subsys into cgroup.c to access internal state\n\nWhile it\u0027s architecturally clean to have the cgroup debug subsystem be\ncompletely independent of the cgroups framework, it limits its usefulness\nfor debugging the contents of internal data structures.  Move the debug\nsubsystem code into the scope of all the cgroups data structures to make\nmore detailed debugging possible.\n\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Dhaval Giani \u003cdhaval@linux.vnet.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": "c6d57f3312a6619d47c5557b5f6154a74d04ff80",
      "tree": "b2e9214e58120c5d91ed0039afd06def62bfdf54",
      "parents": [
        "34f77a90f79fca31802c2e942bd73f7f557fe28c"
      ],
      "author": {
        "name": "Paul Menage",
        "email": "menage@google.com",
        "time": "Wed Sep 23 15:56:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:57 2009 -0700"
      },
      "message": "cgroups: support named cgroups hierarchies\n\nTo simplify referring to cgroup hierarchies in mount statements, and to\nallow disambiguation in the presence of empty hierarchies and\nmultiply-bindable subsystems this patch adds support for naming a new\ncgroup hierarchy via the \"name\u003d\" mount option\n\nA pre-existing hierarchy may be specified by either name or by subsystems;\na hierarchy\u0027s name cannot be changed by a remount operation.\n\nExample usage:\n\n# To create a hierarchy called \"foo\" containing the \"cpu\" subsystem\nmount -t cgroup -oname\u003dfoo,cpu cgroup /mnt/cgroup1\n\n# To mount the \"foo\" hierarchy on a second location\nmount -t cgroup -oname\u003dfoo cgroup /mnt/cgroup2\n\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Dhaval Giani \u003cdhaval@linux.vnet.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": "34f77a90f79fca31802c2e942bd73f7f557fe28c",
      "tree": "e8f07fe8da83e346029ea7a4d90c1b1039cdef36",
      "parents": [
        "55dff4954ebdeba2be59e19398a607d799c5fa9f"
      ],
      "author": {
        "name": "Xiaotian Feng",
        "email": "dfeng@redhat.com",
        "time": "Wed Sep 23 15:56:18 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:57 2009 -0700"
      },
      "message": "cgroups: make unlock sequence in cgroup_get_sb consistent\n\nMake the last unlock sequence consistent with previous unlock sequeue.\n\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Xiaotian Feng \u003cdfeng@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "57f1f0874f426a9bdfc5cd3f886113dd5cd17834",
      "tree": "f7938f5c195f7733543d3d86c6ae3c902fd7adef",
      "parents": [
        "ef1ff6b8c08954bc203b59e887d1e580dd91755a"
      ],
      "author": {
        "name": "Zhaolei",
        "email": "zhaolei@cn.fujitsu.com",
        "time": "Wed Sep 23 15:56:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:56 2009 -0700"
      },
      "message": "time: add function to convert between calendar time and broken-down time for universal use\n\nThere are many similar code in kernel for one object: convert time between\ncalendar time and broken-down time.\n\nHere is some source I found:\n  fs/ncpfs/dir.c\n  fs/smbfs/proc.c\n  fs/fat/misc.c\n  fs/udf/udftime.c\n  fs/cifs/netmisc.c\n  net/netfilter/xt_time.c\n  drivers/scsi/ips.c\n  drivers/input/misc/hp_sdc_rtc.c\n  drivers/rtc/rtc-lib.c\n  arch/ia64/hp/sim/boot/fw-emu.c\n  arch/m68k/mac/misc.c\n  arch/powerpc/kernel/time.c\n  arch/parisc/include/asm/rtc.h\n  ...\n\nWe can make a common function for this type of conversion, At least we\ncan get following benefit:\n\n1: Make kernel simple and unify\n2: Easy to fix bug in converting code\n3: Reduce clone of code in future\n   For example, I\u0027m trying to make ftrace display walltime,\n   this patch will make me easy.\n\nThis code is based on code from glibc-2.6\n\nSigned-off-by: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nCc: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "939cbf260c1abce6cad4b95ea4ba9f5132b660b3",
      "tree": "598b4ec56e0bef7d76a8a32136c24348d387756d",
      "parents": [
        "44e51a1b7852bd421ff5303c64dcc5c8524c21ef"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Sep 23 13:46:00 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Sep 24 03:50:26 2009 -0400"
      },
      "message": "Audit: send signal info if selinux is disabled\n\nAudit will not respond to signal requests if selinux is disabled since it is\nunable to translate the 0 sid from the sending process to a context.  This\npatch just doesn\u0027t send the context info if there isn\u0027t any.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "44e51a1b7852bd421ff5303c64dcc5c8524c21ef",
      "tree": "79005e642ba6a976ed6f561374bdab05e2fda40e",
      "parents": [
        "e08b061ec0fca1f63bb1006bf1edc0556f36d0ae"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri Aug 07 16:54:29 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Sep 24 03:50:26 2009 -0400"
      },
      "message": "Audit: rearrange audit_context to save 16 bytes per struct\n\npahole pointed out that on x86_64 struct audit_context can be rearrainged\nto save 16 bytes per struct.  Since we have an audit_context per task this\ncan acually be a pretty significant gain.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e08b061ec0fca1f63bb1006bf1edc0556f36d0ae",
      "tree": "71a286a55b7707f7bfdc759a7b1ab03e3f2a3755",
      "parents": [
        "94a8d5caba74211ec76dac80fc6e2d5c391530df"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri Aug 07 16:54:23 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Sep 24 03:50:25 2009 -0400"
      },
      "message": "Audit: reorganize struct audit_watch to save 8 bytes\n\npahole showed that struct audit_watch had two holes:\n\nstruct audit_watch {\n        atomic_t                   count;                /*     0     4 */\n\n        /* XXX 4 bytes hole, try to pack */\n\n        char *                     path;                 /*     8     8 */\n        dev_t                      dev;                  /*    16     4 */\n\n        /* XXX 4 bytes hole, try to pack */\n\n        long unsigned int          ino;                  /*    24     8 */\n        struct audit_parent *      parent;               /*    32     8 */\n        struct list_head           wlist;                /*    40    16 */\n        struct list_head           rules;                /*    56    16 */\n        /* --- cacheline 1 boundary (64 bytes) was 8 bytes ago --- */\n\n        /* size: 72, cachelines: 2, members: 7 */\n        /* sum members: 64, holes: 2, sum holes: 8 */\n        /* last cacheline: 8 bytes */\n};      /* definitions: 1 */\n\nby moving dev after count we save 8 bytes,  actually improving cacheline\nusage.  There are typically very few of these in the kernel so it won\u0027t be\na large savings, but it\u0027s a good thing no matter what.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "94a8d5caba74211ec76dac80fc6e2d5c391530df",
      "tree": "21d17d214a354ae00ae27217d82b67bfc5bff3a3",
      "parents": [
        "2bcd57ab61e7cabed626226a3771617981c11ce1",
        "6ba2ef7baac23a5d9bb85e28b882d16b439a2293"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 18:14:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 18:14:11 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus: (39 commits)\n  cpumask: Move deprecated functions to end of header.\n  cpumask: remove unused deprecated functions, avoid accusations of insanity\n  cpumask: use new-style cpumask ops in mm/quicklist.\n  cpumask: use mm_cpumask() wrapper: x86\n  cpumask: use mm_cpumask() wrapper: um\n  cpumask: use mm_cpumask() wrapper: mips\n  cpumask: use mm_cpumask() wrapper: mn10300\n  cpumask: use mm_cpumask() wrapper: m32r\n  cpumask: use mm_cpumask() wrapper: arm\n  cpumask: Use accessors for cpu_*_mask: um\n  cpumask: Use accessors for cpu_*_mask: powerpc\n  cpumask: Use accessors for cpu_*_mask: mips\n  cpumask: Use accessors for cpu_*_mask: m32r\n  cpumask: remove arch_send_call_function_ipi\n  cpumask: arch_send_call_function_ipi_mask: s390\n  cpumask: arch_send_call_function_ipi_mask: powerpc\n  cpumask: arch_send_call_function_ipi_mask: mips\n  cpumask: arch_send_call_function_ipi_mask: m32r\n  cpumask: arch_send_call_function_ipi_mask: alpha\n  cpumask: remove obsolete topology_core_siblings and topology_thread_siblings: ia64\n  ...\n"
    },
    {
      "commit": "2bcd57ab61e7cabed626226a3771617981c11ce1",
      "tree": "687c0c35fb2a632cb8c56b2729f9c3873c9461bd",
      "parents": [
        "95e0d86badc410d525ea7218fd32df7bfbf9c837"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Sep 24 04:22:25 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 18:13:10 2009 -0700"
      },
      "message": "headers: utsname.h redux\n\n* remove asm/atomic.h inclusion from linux/utsname.h --\n   not needed after kref conversion\n * remove linux/utsname.h inclusion from files which do not need it\n\nNOTE: it looks like fs/binfmt_elf.c do not need utsname.h, however\ndue to some personality stuff it _is_ needed -- cowardly leave ELF-related\nheaders and files alone.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "95e0d86badc410d525ea7218fd32df7bfbf9c837",
      "tree": "26764a72a3bc8bfcd2ece90f6faaae928f345066",
      "parents": [
        "0dd52d0df02733dfc2d5f3824e41b96492305384"
      ],
      "author": {
        "name": "Sebastian Andrzej Siewior",
        "email": "sebastian@breakpoint.cc",
        "time": "Thu Sep 24 01:02:55 2009 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 18:12:10 2009 -0700"
      },
      "message": "Revert \"kmod: fix race in usermodehelper code\"\n\nThis reverts commit c02e3f361c7 (\"kmod: fix race in usermodehelper code\")\n\nThe patch is wrong.  UMH_WAIT_EXEC is called with VFORK what ensures\nthat the child finishes prior returing back to the parent.  No race.\n\nIn fact, the patch makes it even worse because it does the thing it\nclaims not do:\n\n - It calls -\u003ecomplete() on UMH_WAIT_EXEC\n\n - the complete() callback may de-allocated subinfo as seen in the\n   following call chain:\n\n    [\u003cc009f904\u003e] (__link_path_walk+0x20/0xeb4) from [\u003cc00a094c\u003e] (path_walk+0x48/0x94)\n    [\u003cc00a094c\u003e] (path_walk+0x48/0x94) from [\u003cc00a0a34\u003e] (do_path_lookup+0x24/0x4c)\n    [\u003cc00a0a34\u003e] (do_path_lookup+0x24/0x4c) from [\u003cc00a158c\u003e] (do_filp_open+0xa4/0x83c)\n    [\u003cc00a158c\u003e] (do_filp_open+0xa4/0x83c) from [\u003cc009ba90\u003e] (open_exec+0x24/0xe0)\n    [\u003cc009ba90\u003e] (open_exec+0x24/0xe0) from [\u003cc009bfa8\u003e] (do_execve+0x7c/0x2e4)\n    [\u003cc009bfa8\u003e] (do_execve+0x7c/0x2e4) from [\u003cc0026a80\u003e] (kernel_execve+0x34/0x80)\n    [\u003cc0026a80\u003e] (kernel_execve+0x34/0x80) from [\u003cc004b514\u003e] (____call_usermodehelper+0x130/0x148)\n    [\u003cc004b514\u003e] (____call_usermodehelper+0x130/0x148) from [\u003cc0024858\u003e] (kernel_thread_exit+0x0/0x8)\n\n   and the path pointer was NULL.  Good that ARM\u0027s kernel_execve()\n   doesn\u0027t check the pointer for NULL or else I wouldn\u0027t notice it.\n\nThe only race there might be is with UMH_NO_WAIT but it is too late for\nme to investigate it now.  UMH_WAIT_PROC could probably also use VFORK\nand we could save one exec.  So the only race I see is with UMH_NO_WAIT\nand recent scheduler changes where the child does not always run first\nmight have trigger here something but as I said, it is late....\n\nSigned-off-by: Sebastian Andrzej Siewior \u003csebastian@breakpoint.cc\u003e\nAcked-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0748bd01773395003208996c4c0b3f80caf80976",
      "tree": "99abf2a49d66c4890f4cc6b114bfd47684bab68e",
      "parents": [
        "630cd0460724e286d3c5cb2c33930b0ae9cd6645"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Sep 24 09:34:46 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Sep 24 09:34:47 2009 +0930"
      },
      "message": "cpumask: remove arch_send_call_function_ipi\n\nNow everyone is converted to arch_send_call_function_ipi_mask, remove\nthe shim and the #defines.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "79f5599772ac2f138d7a75b8f3f06a93f09c75f7",
      "tree": "092c9f6e3f7c49d8f5bb9f3d39752ae7cfb9415a",
      "parents": [
        "a724eada8c2a7b62463b73ccf73fd0bb6e928aeb"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Jun 15 14:58:26 2009 +0800"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Sep 24 09:34:24 2009 +0930"
      },
      "message": "cpumask: use zalloc_cpumask_var() where possible\n\nRemove open-coded zalloc_cpumask_var() and zalloc_cpumask_var_node().\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "c82ffab9a857f8286ed2b559624b7005a367b638",
      "tree": "a5d0895a0b55c2db1bf36f517ca273e7e0abdf71",
      "parents": [
        "a724eada8c2a7b62463b73ccf73fd0bb6e928aeb",
        "5224ee086321fec78970e2f2805892d2b34e8957"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 15:18:57 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 15:18:57 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6:\n  SELinux: do not destroy the avc_cache_nodep\n  KEYS: Have the garbage collector set its timer for live expired keys\n  tpm-fixup-pcrs-sysfs-file-update\n  creds_are_invalid() needs to be exported for use by modules:\n  include/linux/cred.h: fix build\n\nFix trivial BUILD_BUG_ON-induced conflicts in drivers/char/tpm/tpm.c\n"
    },
    {
      "commit": "764db03fee50f7a3de91de80ef4a943f0d720801",
      "tree": "e6d6442539ba3559d48610d89c510b122163cfe7",
      "parents": [
        "74908a0009eb36054190ab80deb9671014efed96"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Fri Sep 18 11:06:47 2009 -0700"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Wed Sep 23 11:02:26 2009 -0700"
      },
      "message": "creds_are_invalid() needs to be exported for use by modules:\n\nERROR: \"creds_are_invalid\" [fs/cachefiles/cachefiles.ko] undefined!\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "74908a0009eb36054190ab80deb9671014efed96",
      "tree": "c763a2ca3e5fa4d9b356ab1fe1f1f85da4321109",
      "parents": [
        "43c1266ce4dc06bfd236cec31e11e9ecd69c0bef"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Thu Sep 17 17:47:12 2009 -0700"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Wed Sep 23 11:01:25 2009 -0700"
      },
      "message": "include/linux/cred.h: fix build\n\nmips allmodconfig:\n\ninclude/linux/cred.h: In function `creds_are_invalid\u0027:\ninclude/linux/cred.h:187: error: `PAGE_SIZE\u0027 undeclared (first use in this function)\ninclude/linux/cred.h:187: error: (Each undeclared identifier is reported only once\ninclude/linux/cred.h:187: error: for each function it appears in.)\n\nFixes\n\ncommit b6dff3ec5e116e3af6f537d4caedcad6b9e5082a\nAuthor:     David Howells \u003cdhowells@redhat.com\u003e\nAuthorDate: Fri Nov 14 10:39:16 2008 +1100\nCommit:     James Morris \u003cjmorris@namei.org\u003e\nCommitDate: Fri Nov 14 10:39:16 2008 +1100\n\n    CRED: Separate task security context from task_struct\n\nI think.\n\nIt\u0027s way too large to be inlined anyway.\n\nDunno if this needs an EXPORT_SYMBOL() yet.\n\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "31bbb9b58d1e8ebcf2b28c95c2250a9f8e31e397",
      "tree": "6bb0c0490d66d32eca43e73abb28d8b3ab0e7b91",
      "parents": [
        "ff830b8e5f999d1ccbd0282a666520f0b557daa4",
        "3f0a525ebf4b8ef041a332bbe4a73aee94bb064b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 09:46:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 09:46:15 2009 -0700"
      },
      "message": "Merge branch \u0027timers-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  itimers: Add tracepoints for itimer\n  hrtimer: Add tracepoint for hrtimers\n  timers: Add tracepoints for timer_list timers\n  cputime: Optimize jiffies_to_cputime(1)\n  itimers: Simplify arm_timer() code a bit\n  itimers: Fix periodic tics precision\n  itimers: Merge ITIMER_VIRT and ITIMER_PROF\n\nTrivial header file include conflicts in kernel/fork.c\n"
    },
    {
      "commit": "908eedc6168bd92e89f90d89fa389065a36358fa",
      "tree": "612881abb2aae920ab1e62e88990ee7b6a988f51",
      "parents": [
        "9492587cf35d370db33ef4b38375dfb35a105b61"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Sep 22 16:45:46 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:41 2009 -0700"
      },
      "message": "walk system ram range\n\nOriginally, walk_memory_resource() was introduced to traverse all memory\nof \"System RAM\" for detecting memory hotplug/unplug range.  For doing so,\nflags of IORESOUCE_MEM|IORESOURCE_BUSY was used and this was enough for\nmemory hotplug.\n\nBut for using other purpose, /proc/kcore, this may includes some firmware\narea marked as IORESOURCE_BUSY | IORESOUCE_MEM.  This patch makes the\ncheck strict to find out busy \"System RAM\".\n\nNote: PPC64 keeps their own walk_memory_resouce(), which walk through\nppc64\u0027s lmb informaton.  Because old kclist_add() is called per lmb, this\npatch makes no difference in behavior, finally.\n\nAnd this patch removes CONFIG_MEMORY_HOTPLUG check from this function.\nBecause pfn_valid() just show \"there is memmap or not* and cannot be used\nfor \"there is physical memory or not\", this function is useful in generic\nto scan physical memory range.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nCc: Américo Wang \u003cxiyou.wangcong@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Roland Dreier \u003crolandd@cisco.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d899bf7b55f503ba7d3d07ed27c3a37e270fa7db",
      "tree": "32a5ee7816b2f0cb3261dcca8102b9cafe9251bd",
      "parents": [
        "cba8aafe1e07dfc8bae5ba78be8e02883bd34d31"
      ],
      "author": {
        "name": "Stefani Seibold",
        "email": "stefani@seibold.net",
        "time": "Tue Sep 22 16:45:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:41 2009 -0700"
      },
      "message": "procfs: provide stack information for threads\n\nA patch to give a better overview of the userland application stack usage,\nespecially for embedded linux.\n\nCurrently you are only able to dump the main process/thread stack usage\nwhich is showed in /proc/pid/status by the \"VmStk\" Value.  But you get no\ninformation about the consumed stack memory of the the threads.\n\nThere is an enhancement in the /proc/\u003cpid\u003e/{task/*,}/*maps and which marks\nthe vm mapping where the thread stack pointer reside with \"[thread stack\nxxxxxxxx]\".  xxxxxxxx is the maximum size of stack.  This is a value\ninformation, because libpthread doesn\u0027t set the start of the stack to the\ntop of the mapped area, depending of the pthread usage.\n\nA sample output of /proc/\u003cpid\u003e/task/\u003ctid\u003e/maps looks like:\n\n08048000-08049000 r-xp 00000000 03:00 8312       /opt/z\n08049000-0804a000 rw-p 00001000 03:00 8312       /opt/z\n0804a000-0806b000 rw-p 00000000 00:00 0          [heap]\na7d12000-a7d13000 ---p 00000000 00:00 0\na7d13000-a7f13000 rw-p 00000000 00:00 0          [thread stack: 001ff4b4]\na7f13000-a7f14000 ---p 00000000 00:00 0\na7f14000-a7f36000 rw-p 00000000 00:00 0\na7f36000-a8069000 r-xp 00000000 03:00 4222       /lib/libc.so.6\na8069000-a806b000 r--p 00133000 03:00 4222       /lib/libc.so.6\na806b000-a806c000 rw-p 00135000 03:00 4222       /lib/libc.so.6\na806c000-a806f000 rw-p 00000000 00:00 0\na806f000-a8083000 r-xp 00000000 03:00 14462      /lib/libpthread.so.0\na8083000-a8084000 r--p 00013000 03:00 14462      /lib/libpthread.so.0\na8084000-a8085000 rw-p 00014000 03:00 14462      /lib/libpthread.so.0\na8085000-a8088000 rw-p 00000000 00:00 0\na8088000-a80a4000 r-xp 00000000 03:00 8317       /lib/ld-linux.so.2\na80a4000-a80a5000 r--p 0001b000 03:00 8317       /lib/ld-linux.so.2\na80a5000-a80a6000 rw-p 0001c000 03:00 8317       /lib/ld-linux.so.2\nafaf5000-afb0a000 rw-p 00000000 00:00 0          [stack]\nffffe000-fffff000 r-xp 00000000 00:00 0          [vdso]\n\nAlso there is a new entry \"stack usage\" in /proc/\u003cpid\u003e/{task/*,}/status\nwhich will you give the current stack usage in kb.\n\nA sample output of /proc/self/status looks like:\n\nName:\tcat\nState:\tR (running)\nTgid:\t507\nPid:\t507\n.\n.\n.\nCapBnd:\tfffffffffffffeff\nvoluntary_ctxt_switches:\t0\nnonvoluntary_ctxt_switches:\t0\nStack usage:\t12 kB\n\nI also fixed stack base address in /proc/\u003cpid\u003e/{task/*,}/stat to the base\naddress of the associated thread stack and not the one of the main\nprocess.  This makes more sense.\n\n[akpm@linux-foundation.org: fs/proc/array.c now needs walk_page_range()]\nSigned-off-by: Stefani Seibold \u003cstefani@seibold.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2a9ad18deb2870a9968f50351a0d4b8cc2a04099",
      "tree": "e56747b3dc8dd825515d61524c91129f92aed134",
      "parents": [
        "128e8db38e30c1786498dfc011d0f9dd7f9f9266"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@gentoo.org",
        "time": "Tue Sep 22 16:44:16 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:30 2009 -0700"
      },
      "message": "lockdep: use new arch_is_kernel_data()\n\nThis allows lockdep to locate symbols that are in arch-specific data\nsections (such as data in Blackfin on-chip SRAM regions).\n\nSigned-off-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Robin Getz \u003crgetz@blackfin.uclinux.org\u003e\nCc: Sam Ravnborg \u003csam@ravnborg.org\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "128e8db38e30c1786498dfc011d0f9dd7f9f9266",
      "tree": "d43b25d848b34316805b14c4040821176a7296d6",
      "parents": [
        "00afe029aab03bd95eba210b5e74a252017c4692"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@gentoo.org",
        "time": "Tue Sep 22 16:44:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:30 2009 -0700"
      },
      "message": "kallsyms: use new arch_is_kernel_text()\n\nThis allows kallsyms to locate symbols that are in arch-specific text\nsections (such as text in Blackfin on-chip SRAM regions).\n\nSigned-off-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Robin Getz \u003crgetz@blackfin.uclinux.org\u003e\nCc: Sam Ravnborg \u003csam@ravnborg.org\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1f10206cf8e945220f7220a809d8bfc15c21f9a5",
      "tree": "4f2c48ccf9cc52dad9610df54e301e631a351288",
      "parents": [
        "b28cfd2c0616e1b42acc6ee3c77ef6cc3873c510"
      ],
      "author": {
        "name": "Jiri Pirko",
        "email": "jpirko@redhat.com",
        "time": "Tue Sep 22 16:44:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:30 2009 -0700"
      },
      "message": "getrusage: fill ru_maxrss value\n\nMake -\u003eru_maxrss value in struct rusage filled accordingly to rss hiwater\nmark.  This struct is filled as a parameter to getrusage syscall.\n-\u003eru_maxrss value is set to KBs which is the way it is done in BSD\nsystems.  /usr/bin/time (gnu time) application converts -\u003eru_maxrss to KBs\nwhich seems to be incorrect behavior.  Maintainer of this util was\nnotified by me with the patch which corrects it and cc\u0027ed.\n\nTo make this happen we extend struct signal_struct by two fields.  The\nfirst one is -\u003emaxrss which we use to store rss hiwater of the task.  The\nsecond one is -\u003ecmaxrss which we use to store highest rss hiwater of all\ntask childs.  These values are used in k_getrusage() to actually fill\n-\u003eru_maxrss.  k_getrusage() uses current rss hiwater value directly if mm\nstruct exists.\n\nNote:\nexec() clear mm-\u003ehiwater_rss, but doesn\u0027t clear sig-\u003emaxrss.\nit is intetionally behavior. *BSD getrusage have exec() inheriting.\n\ntest programs\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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\ngetrusage.c\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n #include \u003cstdio.h\u003e\n #include \u003cstdlib.h\u003e\n #include \u003cstring.h\u003e\n #include \u003csys/types.h\u003e\n #include \u003csys/time.h\u003e\n #include \u003csys/resource.h\u003e\n #include \u003csys/types.h\u003e\n #include \u003csys/wait.h\u003e\n #include \u003cunistd.h\u003e\n #include \u003csignal.h\u003e\n #include \u003csys/mman.h\u003e\n\n #include \"common.h\"\n\n #define err(str) perror(str), exit(1)\n\nint main(int argc, char** argv)\n{\n\tint status;\n\n\tprintf(\"allocate 100MB\\n\");\n\tconsume(100);\n\n\tprintf(\"testcase1: fork inherit? \\n\");\n\tprintf(\"  expect: initial.self ~\u003d child.self\\n\");\n\tshow_rusage(\"initial\");\n\tif (__fork()) {\n\t\twait(\u0026status);\n\t} else {\n\t\tshow_rusage(\"fork child\");\n\t\t_exit(0);\n\t}\n\tprintf(\"\\n\");\n\n\tprintf(\"testcase2: fork inherit? (cont.) \\n\");\n\tprintf(\"  expect: initial.children ~\u003d 100MB, but child.children \u003d 0\\n\");\n\tshow_rusage(\"initial\");\n\tif (__fork()) {\n\t\twait(\u0026status);\n\t} else {\n\t\tshow_rusage(\"child\");\n\t\t_exit(0);\n\t}\n\tprintf(\"\\n\");\n\n\tprintf(\"testcase3: fork + malloc \\n\");\n\tprintf(\"  expect: child.self ~\u003d initial.self + 50MB\\n\");\n\tshow_rusage(\"initial\");\n\tif (__fork()) {\n\t\twait(\u0026status);\n\t} else {\n\t\tprintf(\"allocate +50MB\\n\");\n\t\tconsume(50);\n\t\tshow_rusage(\"fork child\");\n\t\t_exit(0);\n\t}\n\tprintf(\"\\n\");\n\n\tprintf(\"testcase4: grandchild maxrss\\n\");\n\tprintf(\"  expect: post_wait.children ~\u003d 300MB\\n\");\n\tshow_rusage(\"initial\");\n\tif (__fork()) {\n\t\twait(\u0026status);\n\t\tshow_rusage(\"post_wait\");\n\t} else {\n\t\tsystem(\"./child -n 0 -g 300\");\n\t\t_exit(0);\n\t}\n\tprintf(\"\\n\");\n\n\tprintf(\"testcase5: zombie\\n\");\n\tprintf(\"  expect: pre_wait ~\u003d initial, IOW the zombie process is not accounted.\\n\");\n\tprintf(\"          post_wait ~\u003d 400MB, IOW wait() collect child\u0027s max_rss. \\n\");\n\tshow_rusage(\"initial\");\n\tif (__fork()) {\n\t\tsleep(1); /* children become zombie */\n\t\tshow_rusage(\"pre_wait\");\n\t\twait(\u0026status);\n\t\tshow_rusage(\"post_wait\");\n\t} else {\n\t\tsystem(\"./child -n 400\");\n\t\t_exit(0);\n\t}\n\tprintf(\"\\n\");\n\n\tprintf(\"testcase6: SIG_IGN\\n\");\n\tprintf(\"  expect: initial ~\u003d after_zombie (child\u0027s 500MB alloc should be ignored).\\n\");\n\tshow_rusage(\"initial\");\n\tsignal(SIGCHLD, SIG_IGN);\n\tif (__fork()) {\n\t\tsleep(1); /* children become zombie */\n\t\tshow_rusage(\"after_zombie\");\n\t} else {\n\t\tsystem(\"./child -n 500\");\n\t\t_exit(0);\n\t}\n\tprintf(\"\\n\");\n\tsignal(SIGCHLD, SIG_DFL);\n\n\tprintf(\"testcase7: exec (without fork) \\n\");\n\tprintf(\"  expect: initial ~\u003d exec \\n\");\n\tshow_rusage(\"initial\");\n\texecl(\"./child\", \"child\", \"-v\", NULL);\n\n\treturn 0;\n}\n\nchild.c\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n #include \u003csys/types.h\u003e\n #include \u003cunistd.h\u003e\n #include \u003csys/types.h\u003e\n #include \u003csys/wait.h\u003e\n #include \u003cstdio.h\u003e\n #include \u003cstdlib.h\u003e\n #include \u003cstring.h\u003e\n #include \u003csys/types.h\u003e\n #include \u003csys/time.h\u003e\n #include \u003csys/resource.h\u003e\n\n #include \"common.h\"\n\nint main(int argc, char** argv)\n{\n\tint status;\n\tint c;\n\tlong consume_size \u003d 0;\n\tlong grandchild_consume_size \u003d 0;\n\tint show \u003d 0;\n\n\twhile ((c \u003d getopt(argc, argv, \"n:g:v\")) !\u003d -1) {\n\t\tswitch (c) {\n\t\tcase \u0027n\u0027:\n\t\t\tconsume_size \u003d atol(optarg);\n\t\t\tbreak;\n\t\tcase \u0027v\u0027:\n\t\t\tshow \u003d 1;\n\t\t\tbreak;\n\t\tcase \u0027g\u0027:\n\n\t\t\tgrandchild_consume_size \u003d atol(optarg);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (show)\n\t\tshow_rusage(\"exec\");\n\n\tif (consume_size) {\n\t\tprintf(\"child alloc %ldMB\\n\", consume_size);\n\t\tconsume(consume_size);\n\t}\n\n\tif (grandchild_consume_size) {\n\t\tif (fork()) {\n\t\t\twait(\u0026status);\n\t\t} else {\n\t\t\tprintf(\"grandchild alloc %ldMB\\n\", grandchild_consume_size);\n\t\t\tconsume(grandchild_consume_size);\n\n\t\t\texit(0);\n\t\t}\n\t}\n\n\treturn 0;\n}\n\ncommon.c\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n #include \u003cstdio.h\u003e\n #include \u003cstdlib.h\u003e\n #include \u003cstring.h\u003e\n #include \u003csys/types.h\u003e\n #include \u003csys/time.h\u003e\n #include \u003csys/resource.h\u003e\n #include \u003csys/types.h\u003e\n #include \u003csys/wait.h\u003e\n #include \u003cunistd.h\u003e\n #include \u003csignal.h\u003e\n #include \u003csys/mman.h\u003e\n\n #include \"common.h\"\n #define err(str) perror(str), exit(1)\n\nvoid show_rusage(char *prefix)\n{\n    \tint err, err2;\n    \tstruct rusage rusage_self;\n    \tstruct rusage rusage_children;\n\n    \tprintf(\"%s: \", prefix);\n    \terr \u003d getrusage(RUSAGE_SELF, \u0026rusage_self);\n    \tif (!err)\n    \t\tprintf(\"self %ld \", rusage_self.ru_maxrss);\n    \terr2 \u003d getrusage(RUSAGE_CHILDREN, \u0026rusage_children);\n    \tif (!err2)\n    \t\tprintf(\"children %ld \", rusage_children.ru_maxrss);\n\n    \tprintf(\"\\n\");\n}\n\n/* Some buggy OS need this worthless CPU waste. */\nvoid make_pagefault(void)\n{\n\tvoid *addr;\n\tint size \u003d getpagesize();\n\tint i;\n\n\tfor (i\u003d0; i\u003c1000; i++) {\n\t\taddr \u003d mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);\n\t\tif (addr \u003d\u003d MAP_FAILED)\n\t\t\terr(\"make_pagefault\");\n\t\tmemset(addr, 0, size);\n\t\tmunmap(addr, size);\n\t}\n}\n\nvoid consume(int mega)\n{\n    \tsize_t sz \u003d mega * 1024 * 1024;\n    \tvoid *ptr;\n\n    \tptr \u003d malloc(sz);\n    \tmemset(ptr, 0, sz);\n\tmake_pagefault();\n}\n\npid_t __fork(void)\n{\n\tpid_t pid;\n\n\tpid \u003d fork();\n\tmake_pagefault();\n\n\treturn pid;\n}\n\ncommon.h\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nvoid show_rusage(char *prefix);\nvoid make_pagefault(void);\nvoid consume(int mega);\npid_t __fork(void);\n\nFreeBSD result (expected result)\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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nallocate 100MB\ntestcase1: fork inherit?\n  expect: initial.self ~\u003d child.self\ninitial: self 103492 children 0\nfork child: self 103540 children 0\n\ntestcase2: fork inherit? (cont.)\n  expect: initial.children ~\u003d 100MB, but child.children \u003d 0\ninitial: self 103540 children 103540\nchild: self 103564 children 0\n\ntestcase3: fork + malloc\n  expect: child.self ~\u003d initial.self + 50MB\ninitial: self 103564 children 103564\nallocate +50MB\nfork child: self 154860 children 0\n\ntestcase4: grandchild maxrss\n  expect: post_wait.children ~\u003d 300MB\ninitial: self 103564 children 154860\ngrandchild alloc 300MB\npost_wait: self 103564 children 308720\n\ntestcase5: zombie\n  expect: pre_wait ~\u003d initial, IOW the zombie process is not accounted.\n          post_wait ~\u003d 400MB, IOW wait() collect child\u0027s max_rss.\ninitial: self 103564 children 308720\nchild alloc 400MB\npre_wait: self 103564 children 308720\npost_wait: self 103564 children 411312\n\ntestcase6: SIG_IGN\n  expect: initial ~\u003d after_zombie (child\u0027s 500MB alloc should be ignored).\ninitial: self 103564 children 411312\nchild alloc 500MB\nafter_zombie: self 103624 children 411312\n\ntestcase7: exec (without fork)\n  expect: initial ~\u003d exec\ninitial: self 103624 children 411312\nexec: self 103624 children 411312\n\nLinux result (actual test result)\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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nallocate 100MB\ntestcase1: fork inherit?\n  expect: initial.self ~\u003d child.self\ninitial: self 102848 children 0\nfork child: self 102572 children 0\n\ntestcase2: fork inherit? (cont.)\n  expect: initial.children ~\u003d 100MB, but child.children \u003d 0\ninitial: self 102876 children 102644\nchild: self 102572 children 0\n\ntestcase3: fork + malloc\n  expect: child.self ~\u003d initial.self + 50MB\ninitial: self 102876 children 102644\nallocate +50MB\nfork child: self 153804 children 0\n\ntestcase4: grandchild maxrss\n  expect: post_wait.children ~\u003d 300MB\ninitial: self 102876 children 153864\ngrandchild alloc 300MB\npost_wait: self 102876 children 307536\n\ntestcase5: zombie\n  expect: pre_wait ~\u003d initial, IOW the zombie process is not accounted.\n          post_wait ~\u003d 400MB, IOW wait() collect child\u0027s max_rss.\ninitial: self 102876 children 307536\nchild alloc 400MB\npre_wait: self 102876 children 307536\npost_wait: self 102876 children 410076\n\ntestcase6: SIG_IGN\n  expect: initial ~\u003d after_zombie (child\u0027s 500MB alloc should be ignored).\ninitial: self 102876 children 410076\nchild alloc 500MB\nafter_zombie: self 102880 children 410076\n\ntestcase7: exec (without fork)\n  expect: initial ~\u003d exec\ninitial: self 102880 children 410076\nexec: self 102880 children 410076\n\nSigned-off-by: Jiri Pirko \u003cjpirko@redhat.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "02b51df1b07b4e9ca823c89284e704cadb323cd1",
      "tree": "c68de4809f261d742f597c686826cdc9d047fb4a",
      "parents": [
        "88e9d34c727883d7d6f02cf1475b3ec98b8480c7"
      ],
      "author": {
        "name": "Scott James Remnant",
        "email": "scott@ubuntu.com",
        "time": "Tue Sep 22 16:43:44 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:29 2009 -0700"
      },
      "message": "proc connector: add event for process becoming session leader\n\nThe act of a process becoming a session leader is a useful signal to a\nsupervising init daemon such as Upstart.\n\nWhile a daemon will normally do this as part of the process of becoming a\ndaemon, it is rare for its children to do so.  When the children do, it is\nnearly always a sign that the child should be considered detached from the\nparent and not supervised along with it.\n\nThe poster-child example is OpenSSH; the per-login children call setsid()\nso that they may control the pty connected to them.  If the primary daemon\ndies or is restarted, we do not want to consider the per-login children\nand want to respawn the primary daemon without killing the children.\n\nThis patch adds a new PROC_SID_EVENT and associated structure to the\nproc_event event_data union, it arranges for this to be emitted when the\nspecial PIDTYPE_SID pid is set.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Scott James Remnant \u003cscott@ubuntu.com\u003e\nAcked-by: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Evgeniy Polyakov \u003cjohnpol@2ka.mipt.ru\u003e\nAcked-by: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "88e9d34c727883d7d6f02cf1475b3ec98b8480c7",
      "tree": "475f544536d52739e0929e7727cab5124e855a06",
      "parents": [
        "b7ed698cc9d556306a4088c238e2ea9311ea2cb3"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Sep 22 16:43:43 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:29 2009 -0700"
      },
      "message": "seq_file: constify seq_operations\n\nMake all seq_operations structs const, to help mitigate against\nrevectoring user-triggerable function pointers.\n\nThis is derived from the grsecurity patch, although generated from scratch\nbecause it\u0027s simpler than extracting the changes from there.\n\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nAcked-by: Casey Schaufler \u003ccasey@schaufler-ca.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "54fdade1c3332391948ec43530c02c4794a38172",
      "tree": "a44cfa6888bbe702321e4d4737786e5292d72eaa",
      "parents": [
        "5c725138437837291db5c25f4a076ee852e806e3"
      ],
      "author": {
        "name": "Xiao Guangrong",
        "email": "xiaoguangrong@cn.fujitsu.com",
        "time": "Tue Sep 22 16:43:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:28 2009 -0700"
      },
      "message": "generic-ipi: make struct call_function_data lockless\n\nThis patch can remove spinlock from struct call_function_data, the\nreasons are below:\n\n1: add a new interface for cpumask named cpumask_test_and_clear_cpu(),\n   it can atomically test and clear specific cpu, we can use it instead\n   of cpumask_test_cpu() and cpumask_clear_cpu() and no need data-\u003elock\n   to protect those in generic_smp_call_function_interrupt().\n\n2: in smp_call_function_many(), after csd_lock() return, the current\u0027s\n   cfd_data is deleted from call_function list, so it not have race\n   between other cpus, then cfs_data is only used in\n   smp_call_function_many() that must disable preemption and not from\n   a hardware interrupthandler or from a bottom half handler to call,\n   only the correspond cpu can use it, so it not have race in current\n   cpu, no need cfs_data-\u003elock to protect it.\n\n3: after 1 and 2, cfs_data-\u003elock is only use to protect cfs_data-\u003erefs in\n   generic_smp_call_function_interrupt(), so we can define cfs_data-\u003erefs\n   to atomic_t, and no need cfs_data-\u003elock any more.\n\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@cn.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n[akpm@linux-foundation.org: use atomic_dec_return()]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c02e3f361c75da04ca3025b4d19e947e9cc62ed3",
      "tree": "92605809366dda20430fa9dc7d0b9b9f2f3c0bd9",
      "parents": [
        "1fd7317d02ec03c6fdf072317841287933d06d24"
      ],
      "author": {
        "name": "Neil Horman",
        "email": "nhorman@tuxdriver.com",
        "time": "Tue Sep 22 16:43:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:28 2009 -0700"
      },
      "message": "kmod: fix race in usermodehelper code\n\nThe user mode helper code has a race in it.  call_usermodehelper_exec()\ntakes an allocated subprocess_info structure, which it passes to a\nworkqueue, and then passes it to a kernel thread which it creates, after\nwhich it calls complete to signal to the caller of\ncall_usermodehelper_exec() that it can free the subprocess_info struct.\n\nBut since we use that structure in the created thread, we can\u0027t call\ncomplete from __call_usermodehelper(), which is where we create the kernel\nthread.  We need to call complete() from within the kernel thread and then\nnot use subprocess_info afterward in the case of UMH_WAIT_EXEC.  Tested\nsuccessfully by me.\n\nSigned-off-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "af91322ef3f29ae4114e736e2a72e28b4d619cf9",
      "tree": "debba08531c7dd78b90b5d8f2c03f6bf7c9e7877",
      "parents": [
        "3a3b6ed2235f2f619889dd6096e24b6d93bf3339"
      ],
      "author": {
        "name": "Dave Young",
        "email": "hidave.darkstar@gmail.com",
        "time": "Tue Sep 22 16:43:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:28 2009 -0700"
      },
      "message": "printk: add printk_delay to make messages readable for some scenarios\n\nWhen syslog is not possible, at the same time there\u0027s no serial/net\nconsole available, it will be hard to read the printk messages.  For\nexample oops/panic/warning messages in shutdown phase.\n\nAdd a printk delay feature, we can make each printk message delay some\nmilliseconds.\n\nSetting the delay by proc/sysctl interface: /proc/sys/kernel/printk_delay\n\nThe value range from 0 - 10000, default value is 0\n\n[akpm@linux-foundation.org: fix a few things]\nSigned-off-by: Dave Young \u003chidave.darkstar@gmail.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3a3b6ed2235f2f619889dd6096e24b6d93bf3339",
      "tree": "f187d60c22a00a5aeea9df9483ae0182d265704f",
      "parents": [
        "5ae87e79ecb5baa65e9cf48be874098fafad0668"
      ],
      "author": {
        "name": "Dave Young",
        "email": "hidave.darkstar@gmail.com",
        "time": "Tue Sep 22 16:43:31 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:28 2009 -0700"
      },
      "message": "printk boot_delay: rename printk_delay_msec to loops_per_msec\n\nRename `printk_delay_msec\u0027 to `loops_per_msec\u0027, because the patch \"printk:\nadd printk_delay to make messages readable for some scenarios\" wishes to\nmore appropriately use the `printk_delay_msec\u0027 identifier.\n\n[akpm@linux-foundation.org: add a comment]\nSigned-off-by: Dave Young \u003chidave.darkstar@gmail.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "115e8a288252ef748f34f8b7c1115c563d702eda",
      "tree": "8fb0f431ac188a34575fd13fcdb94e3dcd5fa433",
      "parents": [
        "9961079348d43dddb1f21118c17f054f63bbaa05"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Sep 21 18:22:11 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Sep 23 10:34:21 2009 +0200"
      },
      "message": "modules, tracing: Remove stale struct marker signature from module_layout()\n\nLinus reported this new build warning:\n\n  kernel/module.c:2951: warning: ?struct marker? declared inside parameter list\n  kernel/module.c:2951: warning: its scope is only this definition or declaration, which is probably not what you want\n\nCaused by:\n\n  fc53776: tracing: Remove markers\n\nmodule_layout() is an artificial symbol with \u0027significant\u0027 symbols\nlisted in its argument list so that it gets a proper argument types\nsignature that modversions can pick up to decide whether a\nmodule is version-compatible or not. If these dont match then we\nwont even look at a module.\n\nRemove the stale marker symbol.\n\nReported-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nLKML-Reference: \u003calpine.LFD.2.01.0909210908020.4950@localhost.localdomain\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "342ff1a1b558ebbdb8cbd55ab6a63eca8b2473ca",
      "tree": "1f967f283dade6e03897169bb29513354f49f910",
      "parents": [
        "50223e486cabdcf7e540e519da1f26bab3084e5d",
        "24ed7a97464db44592495f98cff8bcee02f92bc2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:51:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:51:45 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (34 commits)\n  trivial: fix typo in aic7xxx comment\n  trivial: fix comment typo in drivers/ata/pata_hpt37x.c\n  trivial: typo in kernel-parameters.txt\n  trivial: fix typo in tracing documentation\n  trivial: add __init/__exit macros in drivers/gpio/bt8xxgpio.c\n  trivial: add __init macro/ fix of __exit macro location in ipmi_poweroff.c\n  trivial: remove unnecessary semicolons\n  trivial: Fix duplicated word \"options\" in comment\n  trivial: kbuild: remove extraneous blank line after declaration of usage()\n  trivial: improve help text for mm debug config options\n  trivial: doc: hpfall: accept disk device to unload as argument\n  trivial: doc: hpfall: reduce risk that hpfall can do harm\n  trivial: SubmittingPatches: Fix reference to renumbered step\n  trivial: fix typos \"man[ae]g?ment\" -\u003e \"management\"\n  trivial: media/video/cx88: add __init/__exit macros to cx88 drivers\n  trivial: fix typo in CONFIG_DEBUG_FS in gcov doc\n  trivial: fix missing printk space in amd_k7_smp_check\n  trivial: fix typo s/ketymap/keymap/ in comment\n  trivial: fix typo \"to to\" in multiple files\n  trivial: fix typos in comments s/DGBU/DBGU/\n  ...\n"
    },
    {
      "commit": "69d25870f20c4b2563304f2b79c5300dd60a067e",
      "tree": "cda2b2d65c1be95420c6ba92ae2d40fade4232c4",
      "parents": [
        "45d80eea87c9f8292d2d33173d6866c0ec57238a"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Mon Sep 21 17:04:08 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:45 2009 -0700"
      },
      "message": "cpuidle: fix the menu governor to boost IO performance\n\nFix the menu idle governor which balances power savings, energy efficiency\nand performance impact.\n\nThe reason for a reworked governor is that there have been serious\nperformance issues reported with the existing code on Nehalem server\nsystems.\n\nTo show this I\u0027m sure Andrew wants to see benchmark results:\n(benchmark is \"fio\", \"no cstates\" is using \"idle\u003dpoll\")\n\n\t\tno cstates\tcurrent linux\tnew algorithm\n1 disk\t\t107 Mb/s\t85 Mb/s\t\t105 Mb/s\n2 disks\t\t215 Mb/s\t123 Mb/s\t209 Mb/s\n12 disks\t590 Mb/s\t320 Mb/s\t585 Mb/s\n\nIn various power benchmark measurements, no degredation was found by our\nmeasurement\u0026diagnostics team.  Obviously a small percentage more power was\nused in the \"fio\" benchmark, due to the much higher performance.\n\nWhile it would be a novel idea to describe the new algorithm in this\ncommit message, I cheaped out and described it in comments in the code\ninstead.\n\n[changes since first post: spelling fixes from akpm, review feedback,\nfolded menu-tng into menu.c]\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nCc: Venkatesh Pallipadi \u003cvenkatesh.pallipadi@intel.com\u003e\nCc: Len Brown \u003clenb@kernel.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Yanmin Zhang \u003cyanmin_zhang@linux.intel.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "eb8cdec4a984fde123a91250dcc9e0bddf5eafdc",
      "tree": "9f97b5949e6e63ae947363149b62ed224dad5ab9",
      "parents": [
        "02e87d1a934c70e3599eb7a29db783806d329e17"
      ],
      "author": {
        "name": "Bernd Schmidt",
        "email": "bernds_cb1@t-online.de",
        "time": "Mon Sep 21 17:03:57 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:43 2009 -0700"
      },
      "message": "nommu: add support for Memory Protection Units (MPU)\n\nSome architectures (like the Blackfin arch) implement some of the\n\"simpler\" features that one would expect out of a MMU such as memory\nprotection.\n\nIn our case, we actually get read/write/exec protection down to the page\nboundary so processes can\u0027t stomp on each other let alone the kernel.\n\nThere is a performance decrease (which depends greatly on the workload)\nhowever as the hardware/software interaction was not optimized at design\ntime.\n\nSigned-off-by: Bernd Schmidt \u003cbernds_cb1@t-online.de\u003e\nSigned-off-by: Bryan Wu \u003ccooloney@kernel.org\u003e\nSigned-off-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Greg Ungerer \u003cgerg@snapgear.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "28b83c5193e7ab951e402252278f2cc79dc4d298",
      "tree": "10080e8d3957c2a03f8419ab44c9ecb0ffcdaee0",
      "parents": [
        "f168e1b6390e2d79cf57e48e6ae6d9b0a9e2851a"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Sep 21 17:03:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:39 2009 -0700"
      },
      "message": "oom: move oom_adj value from task_struct to signal_struct\n\nCurrently, OOM logic callflow is here.\n\n    __out_of_memory()\n        select_bad_process()            for each task\n            badness()                   calculate badness of one task\n                oom_kill_process()      search child\n                    oom_kill_task()     kill target task and mm shared tasks with it\n\nexample, process-A have two thread, thread-A and thread-B and it have very\nfat memory and each thread have following oom_adj and oom_score.\n\n     thread-A: oom_adj \u003d OOM_DISABLE, oom_score \u003d 0\n     thread-B: oom_adj \u003d 0,           oom_score \u003d very-high\n\nThen, select_bad_process() select thread-B, but oom_kill_task() refuse\nkill the task because thread-A have OOM_DISABLE.  Thus __out_of_memory()\ncall select_bad_process() again.  but select_bad_process() select the same\ntask.  It mean kernel fall in livelock.\n\nThe fact is, select_bad_process() must select killable task.  otherwise\nOOM logic go into livelock.\n\nAnd root cause is, oom_adj shouldn\u0027t be per-thread value.  it should be\nper-process value because OOM-killer kill a process, not thread.  Thus\nThis patch moves oomkilladj (now more appropriately named oom_adj) from\nstruct task_struct to struct signal_struct.  it naturally prevent\nselect_bad_process() choose wrong task.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1a8670a29b5277cbe601f74ab63d2c5211fb3005",
      "tree": "1b2ca94009c1f3d7ff05bbda3b8956631e3f38d9",
      "parents": [
        "0b21767637c3c99890a248fe47ac414e51cf5eb7"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:03:09 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:38 2009 -0700"
      },
      "message": "oom: move oom_killer_enable()/oom_killer_disable to where they belong\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2c85f51d222ccdd8c401d77a36b723a89156810d",
      "tree": "fb94c6ea243504043e434f0a7d26cfd4831b33a9",
      "parents": [
        "3c1596efe167322dae87f8390d36f91ce2d7f936"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "JBeulich@novell.com",
        "time": "Mon Sep 21 17:03:07 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:38 2009 -0700"
      },
      "message": "mm: also use alloc_large_system_hash() for the PID hash table\n\nThis is being done by allowing boot time allocations to specify that they\nmay want a sub-page sized amount of memory.\n\nOverall this seems more consistent with the other hash table allocations,\nand allows making two supposedly mm-only variables really mm-only\n(nr_{kernel,all}_pages).\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3c1596efe167322dae87f8390d36f91ce2d7f936",
      "tree": "b086435695f71312e79986a28a703a23760066ec",
      "parents": [
        "4481374ce88ba8f460c8b89f2572027bd27057d0"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "JBeulich@novell.com",
        "time": "Mon Sep 21 17:03:06 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:38 2009 -0700"
      },
      "message": "mm: don\u0027t use alloc_bootmem_low() where not strictly needed\n\nSince alloc_bootmem() will never return inaccessible (via virtual\naddressing) memory anyway, using the ..._low() variant only makes sense\nwhen the physical address range of the allocated memory must fulfill\nfurther constraints, espacially since on 64-bits (or more generally in all\ncases where the pools the two variants allocate from are than the full\navailable range.\n\nProbably the use in alloc_tce_table() could also be eliminated (based on\ncode inspection of pci-calgary_64.c), but that seems too risky given I\nknow nothing about that hardware and have no way to test it.\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1c2fb7a4c2ca7a958b02bc1e615d0254990bba8d",
      "tree": "489a97bd453b8002f2234f7e736548103315fa38",
      "parents": [
        "9ba6929480088a85c1ff60a4b1f1c9fc80dbd2b7"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Mon Sep 21 17:02:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:32 2009 -0700"
      },
      "message": "ksm: fix deadlock with munlock in exit_mmap\n\nRawhide users have reported hang at startup when cryptsetup is run: the\nsame problem can be simply reproduced by running a program int main() {\nmlockall(MCL_CURRENT | MCL_FUTURE); return 0; }\n\nThe problem is that exit_mmap() applies munlock_vma_pages_all() to\nclean up VM_LOCKED areas, and its current implementation (stupidly)\ntries to fault in absent pages, for example where PROT_NONE prevented\nthem being faulted in when mlocking.  Whereas the \"ksm: fix oom\ndeadlock\" patch, knowing there\u0027s a race by which KSM might try to fault\nin pages after exit_mmap() had finally zapped the range, backs out of\nsuch faults doing nothing when its ksm_test_exit() notices mm_users 0.\n\nSo revert that part of \"ksm: fix oom deadlock\" which moved the\nksm_exit() call from before exit_mmap() to the middle of exit_mmap();\nand remove those ksm_test_exit() checks from the page fault paths, so\nallowing the munlocking to proceed without interference.\n\nksm_exit, if there are rmap_items still chained on this mm slot, takes\nmmap_sem write side: so preventing KSM from working on an mm while\nexit_mmap runs.  And KSM will bail out as soon as it notices that\nmm_users is already zero, thanks to its internal ksm_test_exit checks.\nSo that when a task is killed by OOM killer or the user, KSM will not\nindefinitely prevent it from running exit_mmap to release its memory.\n\nThis does break a part of what \"ksm: fix oom deadlock\" was trying to\nachieve.  When unmerging KSM (echo 2 \u003e/sys/kernel/mm/ksm), and even\nwhen ksmd itself has to cancel a KSM page, it is possible that the\nfirst OOM-kill victim would be the KSM process being faulted: then its\nmemory won\u0027t be freed until a second victim has been selected (freeing\nmemory for the unmerging fault to complete).\n\nBut the OOM killer is already liable to kill a second victim once the\nintended victim\u0027s p-\u003emm goes to NULL: so there\u0027s not much point in\nrejecting this KSM patch before fixing that OOM behaviour.  It is very\nmuch more important to allow KSM users to boot up, than to haggle over\nan unlikely and poorly supported OOM case.\n\nWe also intend to fix munlocking to not fault pages: at which point\nthis patch _could_ be reverted; though that would be controversial, so\nwe hope to find a better solution.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Justin M. Forbes \u003cjforbes@redhat.com\u003e\nAcked-for-now-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9ba6929480088a85c1ff60a4b1f1c9fc80dbd2b7",
      "tree": "39aab8cdffae598b55e35c578f70820712286ab4",
      "parents": [
        "cd551f97519d35855be5a8720a47cc802ee4fd06"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:02:20 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:32 2009 -0700"
      },
      "message": "ksm: fix oom deadlock\n\nThere\u0027s a now-obvious deadlock in KSM\u0027s out-of-memory handling:\nimagine ksmd or KSM_RUN_UNMERGE handling, holding ksm_thread_mutex,\ntrying to allocate a page to break KSM in an mm which becomes the\nOOM victim (quite likely in the unmerge case): it\u0027s killed and goes\nto exit, and hangs there waiting to acquire ksm_thread_mutex.\n\nClearly we must not require ksm_thread_mutex in __ksm_exit, simple\nthough that made everything else: perhaps use mmap_sem somehow?\nAnd part of the answer lies in the comments on unmerge_ksm_pages:\n__ksm_exit should also leave all the rmap_item removal to ksmd.\n\nBut there\u0027s a fundamental problem, that KSM relies upon mmap_sem to\nguarantee the consistency of the mm it\u0027s dealing with, yet exit_mmap\ntears down an mm without taking mmap_sem.  And bumping mm_users won\u0027t\nhelp at all, that just ensures that the pages the OOM killer assumes\nare on their way to being freed will not be freed.\n\nThe best answer seems to be, to move the ksm_exit callout from just\nbefore exit_mmap, to the middle of exit_mmap: after the mm\u0027s pages\nhave been freed (if the mmu_gather is flushed), but before its page\ntables and vma structures have been freed; and down_write,up_write\nmmap_sem there to serialize with KSM\u0027s own reliance on mmap_sem.\n\nBut KSM then needs to be careful, whenever it downs mmap_sem, to\ncheck that the mm is not already exiting: there\u0027s a danger of using\nfind_vma on a layout that\u0027s being torn apart, or writing into page\ntables which have been freed for reuse; and even do_anonymous_page\nand __do_fault need to check they\u0027re not being called by break_ksm\nto reinstate a pte after zap_pte_range has zapped that page table.\n\nThough it might be clearer to add an exiting flag, set while holding\nmmap_sem in __ksm_exit, that wouldn\u0027t cover the issue of reinstating\na zapped pte.  All we need is to check whether mm_users is 0 - but\nmust remember that ksmd may detect that before __ksm_exit is reached.\nSo, ksm_test_exit(mm) added to comment such checks on mm-\u003emm_users.\n\n__ksm_exit now has to leave clearing up the rmap_items to ksmd,\nthat needs ksm_thread_mutex; but shift the exiting mm just after the\nksm_scan cursor so that it will soon be dealt with.  __ksm_enter raise\nmm_count to hold the mm_struct, ksmd\u0027s exit processing (exactly like\nits processing when it finds all VM_MERGEABLEs unmapped) mmdrop it,\nsimilar procedure for KSM_RUN_UNMERGE (which has stopped ksmd).\n\nBut also give __ksm_exit a fast path: when there\u0027s no complication\n(no rmap_items attached to mm and it\u0027s not at the ksm_scan cursor),\nit can safely do all the exiting work itself.  This is not just an\noptimization: when ksmd is not running, the raised mm_count would\notherwise leak mm_structs.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f8af4da3b4c14e7267c4ffb952079af3912c51c5",
      "tree": "17b0cfbd2d3d9abf9008f69e7fee5369cec7afa5",
      "parents": [
        "d19f352484467a5e518639ddff0554669c10ffab"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:01:57 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:31 2009 -0700"
      },
      "message": "ksm: the mm interface to ksm\n\nThis patch presents the mm interface to a dummy version of ksm.c, for\nbetter scrutiny of that interface: the real ksm.c follows later.\n\nWhen CONFIG_KSM is not set, madvise(2) reject MADV_MERGEABLE and\nMADV_UNMERGEABLE with EINVAL, since that seems more helpful than\npretending that they can be serviced.  But when CONFIG_KSM\u003dy, accept them\neven if KSM is not currently running, and even on areas which KSM will not\ntouch (e.g.  hugetlb or shared file or special driver mappings).\n\nLike other madvices, report ENOMEM despite success if any area in the\nrange is unmapped, and use EAGAIN to report out of memory.\n\nDefine vma flag VM_MERGEABLE to identify an area on which KSM may try\nmerging pages: leave it to ksm_madvise() to decide whether to set it.\nDefine mm flag MMF_VM_MERGEABLE to identify an mm which might contain\nVM_MERGEABLE areas, to minimize callouts when forking or exiting.\n\nBased upon earlier patches by Chris Wright and Izik Eidus.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Chris Wright \u003cchrisw@redhat.com\u003e\nSigned-off-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@gmail.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c6a7f5728a1db45d30df55a01adc130b4ab0327c",
      "tree": "36649bc6ebb959841a5097c699968722cfd99c4d",
      "parents": [
        "71de1ccbe1fb40203edd3beb473f8580d917d2ca"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Sep 21 17:01:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:27 2009 -0700"
      },
      "message": "mm: oom analysis: Show kernel stack usage in /proc/meminfo and OOM log output\n\nThe amount of memory allocated to kernel stacks can become significant and\ncause OOM conditions.  However, we do not display the amount of memory\nconsumed by stacks.\n\nAdd code to display the amount of memory used for stacks in /proc/meminfo.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: David Rientjes \u003crientjes@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": "6e1d5dcc2bbbe71dbf010c747e15739bef6b7218",
      "tree": "2edb0f6cc65acbae95e42df1bc763ec048e6c2e0",
      "parents": [
        "7f09410bbc4306f592cfb43812389ea1c7905a20"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: mark remaining inode_operations as const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b87221de6a4934eda856475a0065688d12973a04",
      "tree": "6bcf0628e106c4833538f4c23d710fbbe3d7609a",
      "parents": [
        "0d54b217a247f39605361f867fefbb9e099a5432"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:09 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: mark remaining super_operations const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0729e196147692d84d4c099fcff056eba2ed61d8",
      "tree": "5374dc5cd1cb2cfb3da1174b67ed07685592e83a",
      "parents": [
        "d8d88fbb186fe3ea37b2a58adb32413c98b59656"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Mon Sep 21 22:30:38 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 22 10:37:44 2009 +0200"
      },
      "message": "futex: Fix wakeup race by setting TASK_INTERRUPTIBLE before queue_me()\n\nPI futexes do not use the same plist_node_empty() test for wakeup.\nIt was possible for the waiter (in futex_wait_requeue_pi()) to set\nTASK_INTERRUPTIBLE after the waker assigned the rtmutex to the\nwaiter. The waiter would then note the plist was not empty and call\nschedule(). The task would not be found by any subsequeuent futex\nwakeups, resulting in a userspace hang.\n\nBy moving the setting of TASK_INTERRUPTIBLE to before the call to\nqueue_me(), the race with the waker is eliminated. Since we no\nlonger call get_user() from within queue_me(), there is no need to\ndelay the setting of TASK_INTERRUPTIBLE until after the call to\nqueue_me().\n\nThe FUTEX_LOCK_PI operation is not affected as futex_lock_pi()\nrelies entirely on the rtmutex code to handle schedule() and\nwakeup.  The requeue PI code is affected because the waiter starts\nas a non-PI waiter and is woken on a PI futex.\n\nRemove the crusty old comment about holding spinlocks() across\nget_user() as we no longer do that. Correct the locking statement\nwith a description of why the test is performed.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Dinakar Guniguntala \u003cdino@in.ibm.com\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nLKML-Reference: \u003c20090922053038.8717.97838.stgit@Aeon\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d8d88fbb186fe3ea37b2a58adb32413c98b59656",
      "tree": "b5f98484104fb61044de0a1692318cf91d051cf6",
      "parents": [
        "d96ee56ce0582967fba9f3f0ac4503957147bea6"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Mon Sep 21 22:30:30 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 22 10:37:44 2009 +0200"
      },
      "message": "futex: Correct futex_q woken state commentary\n\nUse kernel-doc format to describe struct futex_q.\n\nCorrect the wakeup definition to eliminate the statement about\nwaking the waiter between the plist_del() and the q-\u003elock_ptr \u003d 0.\n\nNote in the comment that PI futexes have a different definition of\nthe woken state.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Dinakar Guniguntala \u003cdino@in.ibm.com\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nLKML-Reference: \u003c20090922053029.8717.62798.stgit@Aeon\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d96ee56ce0582967fba9f3f0ac4503957147bea6",
      "tree": "6c75a1f88000ab876096b94db5c5078eccf228db",
      "parents": [
        "d40d65c8dbdd39f0b64e043f6bd08f8a38f55194"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Mon Sep 21 22:30:22 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 22 10:37:43 2009 +0200"
      },
      "message": "futex: Make function kernel-doc commentary consistent\n\nMake the existing function kernel-doc consistent throughout\nfutex.c, following Documentation/kernel-doc-nano-howto.txt as\nclosely as possible.\n\nWhen unsure, at least be consistent within futex.c.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Dinakar Guniguntala \u003cdino@in.ibm.com\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nLKML-Reference: \u003c20090922053022.8717.13339.stgit@Aeon\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d40d65c8dbdd39f0b64e043f6bd08f8a38f55194",
      "tree": "382d9870943ea689bfb547c5071fd4b95182b29c",
      "parents": [
        "56ec1607b15b6a5f6de5aab14f16a763b88296fc"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Mon Sep 21 22:30:15 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 22 10:37:43 2009 +0200"
      },
      "message": "futex: Correct queue_me and unqueue_me commentary\n\nThe queue_me/unqueue_me commentary is oddly placed and out of date.\nClean it up and correct the inaccurate bits.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Dinakar Guniguntala \u003cdino@in.ibm.com\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nLKML-Reference: \u003c20090922053015.8717.71713.stgit@Aeon\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "56ec1607b15b6a5f6de5aab14f16a763b88296fc",
      "tree": "c50e693727842194098e054db92573e2b1cf5ea0",
      "parents": [
        "b8c7f1dc5ca4e0d10709182233cdab932cef593d"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Mon Sep 21 22:29:59 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 22 10:37:42 2009 +0200"
      },
      "message": "futex: Correct futex_wait_requeue_pi() commentary\n\nCorrect various typos and formatting inconsistencies in the\ncommentary of futex_wait_requeue_pi().\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Dinakar Guniguntala \u003cdino@in.ibm.com\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nLKML-Reference: \u003c20090922052958.8717.21932.stgit@Aeon\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "79fe249c8368be35c9ca05982e80c68e959505e1",
      "tree": "cfb0b12a3d189fde435db4cab817b740c14517f3",
      "parents": [
        "1eb90f138b3fb4cc15f3acec94aa788e846269f7"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Sep 22 13:54:28 2009 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 22 10:28:57 2009 +0200"
      },
      "message": "tracing: Fix failure path in ftrace_regex_open()\n\nDon\u0027t forget to free trace_parser if seq_open() returned failure.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jiri Olsa \u003cjolsa@redhat.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLKML-Reference: \u003c4AB86694.4040803@cn.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    }
  ],
  "next": "1eb90f138b3fb4cc15f3acec94aa788e846269f7"
}
