)]}'
{
  "log": [
    {
      "commit": "f344011ccb85469445369153c3d27c4ee4bc2ac8",
      "tree": "66f041a826d09c690a5e6bb3d091494d52bc8565",
      "parents": [
        "b84fbc9fb1d943e2c5f4efe52ed0e3c93a4bdb6a"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Jun 22 13:58:35 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jun 23 11:42:46 2009 +0200"
      },
      "message": "perf_counter: Optimize perf_counter_alloc()\u0027s inherit case\n\nWe don\u0027t need to add usage counts for swcounter and attr usage\nmodels for inherited counters since the parent counter will\nalways have one, which suffices to generate the needed output.\n\nThis avoids up to 3 global atomic increments per inherited\ncounter.\n\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b84fbc9fb1d943e2c5f4efe52ed0e3c93a4bdb6a",
      "tree": "aaa492fd620de2177c6b8e5bb52348b30c7e49c7",
      "parents": [
        "f29ac756a40d0f1bb07d682ea521e7b666ff06d5"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Jun 22 13:57:40 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jun 23 11:42:45 2009 +0200"
      },
      "message": "perf_counter: Push inherit into perf_counter_alloc()\n\nTeach perf_counter_alloc() about inheritance so that we can\noptimize the inherit path in the next patch.\n\nRemove the child_counter-\u003eatrr.inherit \u003d 1 line because the\nonly way to get there is if parent_counter-\u003eattr.inherit \u003d\u003d 1\nand we copy the attrs.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f29ac756a40d0f1bb07d682ea521e7b666ff06d5",
      "tree": "6fabe2f38ae10f824e57fdd5b035ba81b75a71a8",
      "parents": [
        "3d906ef10a539ff336010afab8f6f9c4fe379695"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jun 19 18:27:26 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jun 23 11:42:44 2009 +0200"
      },
      "message": "perf_counter: Optimize perf_swcounter_event()\n\nSimilar to tracepoints, use an enable variable to reduce\noverhead when unused.\n\nOnly look for a counter of a particular event type when we know\nthere is at least one in the system.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003cnew-submission\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2453d6ff6ffc5f0d496b7b14f509a26f99bf115e",
      "tree": "9e4e709bdb932889b0b9cfc5b2b767cfcf750b83",
      "parents": [
        "12e24f34cb0d55efd08c18b2112507d4bf498008",
        "ab33dcff40d7a9a28587e4425621e4cbc4089e03"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jun 20 11:30:01 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jun 20 11:30:01 2009 -0700"
      },
      "message": "Merge branch \u0027irq-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027irq-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  genirq, irq.h: Fix kernel-doc warnings\n  genirq: fix comment to say IRQ_WAKE_THREAD\n"
    },
    {
      "commit": "12e24f34cb0d55efd08c18b2112507d4bf498008",
      "tree": "83b07be17b8ef45f42360a3b9159b3aaae3fbad4",
      "parents": [
        "1eb51c33b21ffa3fceb634d1d6bcd6488c79bc26",
        "eadc84cc01e04f9f74ec2de0c9355be035c7b396"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jun 20 11:29:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jun 20 11:29:32 2009 -0700"
      },
      "message": "Merge branch \u0027perfcounters-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027perfcounters-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (49 commits)\n  perfcounter: Handle some IO return values\n  perf_counter: Push perf_sample_data through the swcounter code\n  perf_counter tools: Define and use our own u64, s64 etc. definitions\n  perf_counter: Close race in perf_lock_task_context()\n  perf_counter, x86: Improve interactions with fast-gup\n  perf_counter: Simplify and fix task migration counting\n  perf_counter tools: Add a data file header\n  perf_counter: Update userspace callchain sampling uses\n  perf_counter: Make callchain samples extensible\n  perf report: Filter to parent set by default\n  perf_counter tools: Handle lost events\n  perf_counter: Add event overlow handling\n  fs: Provide empty .set_page_dirty() aop for anon inodes\n  perf_counter: tools: Makefile tweaks for 64-bit powerpc\n  perf_counter: powerpc: Add processor back-end for MPC7450 family\n  perf_counter: powerpc: Make powerpc perf_counter code safe for 32-bit kernels\n  perf_counter: powerpc: Change how processor-specific back-ends get selected\n  perf_counter: powerpc: Use unsigned long for register and constraint values\n  perf_counter: powerpc: Enable use of software counters on 32-bit powerpc\n  perf_counter tools: Add and use isprint()\n  ...\n"
    },
    {
      "commit": "1eb51c33b21ffa3fceb634d1d6bcd6488c79bc26",
      "tree": "5360e0b439b35a97313ea8250209e7dacff8b9a6",
      "parents": [
        "b0b7065b64fe517b4a50915a1555e8ee98890d64",
        "3104bf03a923c72043a9c5009d9cd56724304916"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jun 20 10:57:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jun 20 10:57:40 2009 -0700"
      },
      "message": "Merge branch \u0027sched-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027sched-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  sched: Fix out of scope variable access in sched_slice()\n  sched: Hide runqueues from direct refer at source code level\n  sched: Remove unneeded __ref tag\n  sched, x86: Fix cpufreq + sched_clock() TSC scaling\n"
    },
    {
      "commit": "b0b7065b64fe517b4a50915a1555e8ee98890d64",
      "tree": "950e7735585a83f5b4efe7a9473b5b42d5ca4f57",
      "parents": [
        "38df92b8cee936334f686c06df0e5fbb92e252df",
        "d4c4038343510d83727ea922de4435996c26c0c8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jun 20 10:56:46 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jun 20 10:56:46 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: (24 commits)\n  tracing/urgent: warn in case of ftrace_start_up inbalance\n  tracing/urgent: fix unbalanced ftrace_start_up\n  function-graph: add stack frame test\n  function-graph: disable when both x86_32 and optimize for size are configured\n  ring-buffer: have benchmark test print to trace buffer\n  ring-buffer: do not grab locks in nmi\n  ring-buffer: add locks around rb_per_cpu_empty\n  ring-buffer: check for less than two in size allocation\n  ring-buffer: remove useless compile check for buffer_page size\n  ring-buffer: remove useless warn on check\n  ring-buffer: use BUF_PAGE_HDR_SIZE in calculating index\n  tracing: update sample event documentation\n  tracing/filters: fix race between filter setting and module unload\n  tracing/filters: free filter_string in destroy_preds()\n  ring-buffer: use commit counters for commit pointer accounting\n  ring-buffer: remove unused variable\n  ring-buffer: have benchmark test handle discarded events\n  ring-buffer: prevent adding write in discarded area\n  tracing/filters: strloc should be unsigned short\n  tracing/filters: operand can be negative\n  ...\n\nFix up kmemcheck-induced conflict in kernel/trace/ring_buffer.c manually\n"
    },
    {
      "commit": "38df92b8cee936334f686c06df0e5fbb92e252df",
      "tree": "ffdfd4e5e746300f38a1267b207b293710b3c9a9",
      "parents": [
        "c4c5ab3089c8a794eb0bdaa9794d0f055dd82412",
        "f2e21c9610991e95621a81407cdbab881226419b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jun 20 10:51:44 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jun 20 10:51:44 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  NOHZ: Properly feed cpufreq ondemand governor\n"
    },
    {
      "commit": "d4c4038343510d83727ea922de4435996c26c0c8",
      "tree": "ec735b5133ddb0c46211c87a2a7ee66c71a6d433",
      "parents": [
        "3daeb4da9a0b056bdc4af003e5605c1da4c0b068",
        "71e308a239c098673570d0b417d42262bb535909"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jun 20 18:26:48 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jun 20 18:26:48 2009 +0200"
      },
      "message": "Merge branch \u0027tip/tracing/urgent-1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent\n"
    },
    {
      "commit": "3daeb4da9a0b056bdc4af003e5605c1da4c0b068",
      "tree": "a17fda13d9be51c71880a8ce2c55eaf7337c722f",
      "parents": [
        "9ea1a153a4fb435c22e9988784bb476671286112",
        "4b221f0313f0f7f1f7aa0a1fd16ad400840def26"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jun 20 17:25:49 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jun 20 17:25:49 2009 +0200"
      },
      "message": "Merge branch \u0027tip/tracing/urgent\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent\n"
    },
    {
      "commit": "92bf309a9cd5fedd6c8eefbce0b9a95ada82d0a9",
      "tree": "c52fef4c699f626c0730feccb899eca75c9e4915",
      "parents": [
        "9cffa8d53335d891cc0ecb3824a67118b3ee4b2f"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jun 19 18:11:53 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jun 20 12:30:30 2009 +0200"
      },
      "message": "perf_counter: Push perf_sample_data through the swcounter code\n\nPush the perf_sample_data further outwards to the swcounter interface,\nto abstract it away some more.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9ea1a153a4fb435c22e9988784bb476671286112",
      "tree": "0f13f65f1bb8edae5a2906d22a209ff013e283ec",
      "parents": [
        "c85a17e22695969aa24a7ffa40cf26d6e6fcfd50"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Jun 20 06:52:21 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Jun 20 06:52:21 2009 +0200"
      },
      "message": "tracing/urgent: warn in case of ftrace_start_up inbalance\n\nPrevent from further ftrace_start_up inbalances so that we avoid\nfuture nop patching omissions with dynamic ftrace.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "c85a17e22695969aa24a7ffa40cf26d6e6fcfd50",
      "tree": "2073f145261c6cdad39818993ddb8c099f1498ff",
      "parents": [
        "44ad18e0a65e296b2e68a1452509f6222cdce743"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Jun 20 05:45:14 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Jun 20 06:28:46 2009 +0200"
      },
      "message": "tracing/urgent: fix unbalanced ftrace_start_up\n\nPerfcounter reports the following stats for a wide system\nprofiling:\n\n #\n # (2364 samples)\n #\n # Overhead  Symbol\n # ........  ......\n #\n    15.40%  [k] mwait_idle_with_hints\n     8.29%  [k] read_hpet\n     5.75%  [k] ftrace_caller\n     3.60%  [k] ftrace_call\n     [...]\n\nThis snapshot has been taken while neither the function tracer nor\nthe function graph tracer was running.\nWith dynamic ftrace, such results show a wrong ftrace behaviour\nbecause all calls to ftrace_caller or ftrace_graph_caller (the patched\ncalls to mcount) are supposed to be patched into nop if none of those\ntracers are running.\n\nThe problem occurs after the first run of the function tracer. Once we\nlaunch it a second time, the callsites will never be nopped back,\nunless you set custom filters.\nFor example it happens during the self tests at boot time.\nThe function tracer selftest runs, and then the dynamic tracing is\ntested too. After that, the callsites are left un-nopped.\n\nThis is because the reset callback of the function tracer tries to\nunregister two ftrace callbacks in once: the common function tracer\nand the function tracer with stack backtrace, regardless of which\none is currently in use.\nIt then creates an unbalance on ftrace_start_up value which is expected\nto be zero when the last ftrace callback is unregistered. When it\nreaches zero, the FTRACE_DISABLE_CALLS is set on the next ftrace\ncommand, triggering the patching into nop. But since it becomes\nunbalanced, ie becomes lower than zero, if the kernel functions\nare patched again (as in every further function tracer runs), they\nwon\u0027t ever be nopped back.\n\nNote that ftrace_call and ftrace_graph_call are still patched back\nto ftrace_stub in the off case, but not the callers of ftrace_call\nand ftrace_graph_caller. It means that the tracing is well deactivated\nbut we waste a useless call into every kernel function.\n\nThis patch just unregisters the right ftrace_ops for the function\ntracer on its reset callback and ignores the other one which is\nnot registered, fixing the unbalance. The problem also happens\nis .30\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "befca96779b0259ac8fad0183e748a62935c39cb",
      "tree": "ab4962e27ce10abc932de4c7a4c1c29fac2988cf",
      "parents": [
        "e6229bec25be4ba00f31dd26e25721cc96c22262"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Jun 18 16:49:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 19 16:46:06 2009 -0700"
      },
      "message": "ptrace: wait_task_zombie: do not account traced sub-threads\n\nThe bug is ancient.\n\nIf we trace the sub-thread of our natural child and this sub-thread exits,\nwe update parent-\u003esignal-\u003ecxxx fields.  But we should not do this until\nthe whole thread-group exits, otherwise we account this thread (and all\nother live threads) twice.\n\nAdd the task_detached() check.  No need to check thread_group_empty(),\nwait_consider_task()-\u003edelay_group_leader() already did this.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Stanislaw Gruszka \u003csgruszka@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": "b49a9e7e72103ea91946453c19703a4dfa1994fe",
      "tree": "7e9e74881384c581afca56cc397901f71e904c8b",
      "parents": [
        "0c87197142427063e096f11603543ca874045952"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jun 19 17:39:33 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 19 17:57:36 2009 +0200"
      },
      "message": "perf_counter: Close race in perf_lock_task_context()\n\nperf_lock_task_context() is buggy because it can return a dead\ncontext.\n\nthe RCU read lock in perf_lock_task_context() only guarantees\nthe memory won\u0027t get freed, it doesn\u0027t guarantee the object is\nvalid (in our case refcount \u003e 0).\n\nTherefore we can return a locked object that can get freed the\nmoment we release the rcu read lock.\n\nperf_pin_task_context() then increases the refcount and does an\nunlock on freed memory.\n\nThat increased refcount will cause a double free, in case it\nstarted out with 0.\n\nAmmend this by including the get_ctx() functionality in\nperf_lock_task_context() (all users already did this later\nanyway), and return a NULL context when the found one is\nalready dead.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e5289d4a181fb6c0b7a7607649af2ffdc491335c",
      "tree": "6c9e9ab46a29c538e4c505d3d3cd135265db08a2",
      "parents": [
        "f5970550d5ccf90453cbd7d260370ea99d1f6513"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jun 19 13:22:51 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 19 13:43:12 2009 +0200"
      },
      "message": "perf_counter: Simplify and fix task migration counting\n\nThe task migrations counter was causing rare and hard to decypher\nmemory corruptions under load. After a day of debugging and bisection\nwe found that the problem was introduced with:\n\n  3f731ca: perf_counter: Fix cpu migration counter\n\nTurning them off fixes the crashes. Incidentally, the whole\nperf_counter_task_migration() logic can be done simpler as well,\nby injecting a proper sw-counter event.\n\nThis cleanup also fixed the crashes. The precise failure mode is\nnot completely clear yet, but we are clearly not unhappy about\nhaving a fix ;-)\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Corey Ashford \u003ccjashfor@linux.vnet.ibm.com\u003e\nCc: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "71e308a239c098673570d0b417d42262bb535909",
      "tree": "a9e415d0ae6302e820a1f9d4ff55a724b3a12cf6",
      "parents": [
        "eb4a03780d4c4464ef2ad86d80cca3f3284fe81d"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Jun 18 12:45:08 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jun 18 18:40:18 2009 -0400"
      },
      "message": "function-graph: add stack frame test\n\nIn case gcc does something funny with the stack frames, or the return\nfrom function code, we would like to detect that.\n\nAn arch may implement passing of a variable that is unique to the\nfunction and can be saved on entering a function and can be tested\nwhen exiting the function. Usually the frame pointer can be used for\nthis purpose.\n\nThis patch also implements this for x86. Where it passes in the stack\nframe of the parent function, and will test that frame on exit.\n\nThere was a case in x86_32 with optimize for size (-Os) where, for a\nfew functions, gcc would align the stack frame and place a copy of the\nreturn address into it. The function graph tracer modified the copy and\nnot the actual return address. On return from the funtion, it did not go\nto the tracer hook, but returned to the parent. This broke the function\ngraph tracer, because the return of the parent (where gcc did not do\nthis funky manipulation) returned to the location that the child function\nwas suppose to. This caused strange kernel crashes.\n\nThis test detected the problem and pointed out where the issue was.\n\nThis modifies the parameters of one of the functions that the arch\nspecific code calls, so it includes changes to arch code to accommodate\nthe new prototype.\n\nNote, I notice that the parsic arch implements its own push_return_trace.\nThis is now a generic function and the ftrace_push_return_trace should be\nused instead. This patch does not touch that code.\n\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Helge Deller \u003cdeller@gmx.de\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "eb4a03780d4c4464ef2ad86d80cca3f3284fe81d",
      "tree": "5bf249073e7c5dec68ced1411b78b4bcf41660b7",
      "parents": [
        "4b221f0313f0f7f1f7aa0a1fd16ad400840def26"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Jun 18 12:53:21 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jun 18 18:39:30 2009 -0400"
      },
      "message": "function-graph: disable when both x86_32 and optimize for size are configured\n\nOn x86_32, when optimize for size is set, gcc may align the frame pointer\nand make a copy of the the return address inside the stack frame.\nThe return address that is located in the stack frame may not be\nthe one used to return to the calling function. This will break the\nfunction graph tracer.\n\nThe function graph tracer replaces the return address with a jump to a hook\nfunction that can trace the exit of the function. If it only replaces\na copy, then the hook will not be called when the function returns.\nWorse yet, when the parent function returns, the function graph tracer\nwill return back to the location of the child function which will\neasily crash the kernel with weird results.\n\nTo see the problem, when i386 is compiled with -Os we get:\n\nc106be03:       57                      push   %edi\nc106be04:       8d 7c 24 08             lea    0x8(%esp),%edi\nc106be08:       83 e4 e0                and    $0xffffffe0,%esp\nc106be0b:       ff 77 fc                pushl  0xfffffffc(%edi)\nc106be0e:       55                      push   %ebp\nc106be0f:       89 e5                   mov    %esp,%ebp\nc106be11:       57                      push   %edi\nc106be12:       56                      push   %esi\nc106be13:       53                      push   %ebx\nc106be14:       81 ec 8c 00 00 00       sub    $0x8c,%esp\nc106be1a:       e8 f5 57 fb ff          call   c1021614 \u003cmcount\u003e\n\nWhen it is compiled with -O2 instead we get:\n\nc10896f0:       55                      push   %ebp\nc10896f1:       89 e5                   mov    %esp,%ebp\nc10896f3:       83 ec 28                sub    $0x28,%esp\nc10896f6:       89 5d f4                mov    %ebx,0xfffffff4(%ebp)\nc10896f9:       89 75 f8                mov    %esi,0xfffffff8(%ebp)\nc10896fc:       89 7d fc                mov    %edi,0xfffffffc(%ebp)\nc10896ff:       e8 d0 08 fa ff          call   c1029fd4 \u003cmcount\u003e\n\nThe compile with -Os will align the stack pointer then set up the\nframe pointer (%ebp), and it copies the return address back into\nthe stack frame. The change to the return address in mcount is done\nto the copy and not the real place holder of the return address.\n\nThen compile with -O2 sets up the frame pointer first, this makes\nthe change to the return address by mcount affect where the function\nwill jump on exit.\n\nReported-by: Jake Edge \u003cjake@lwn.net\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "7bf99fb673f18408be1ebc958321ef4c3f6da9e2",
      "tree": "30913cc5304597b39f1a910997e4f8ad3c3350b4",
      "parents": [
        "2521f2c228ad750701ba4702484e31d876dbc386"
      ],
      "author": {
        "name": "Peter Oberparleiter",
        "email": "oberpar@linux.vnet.ibm.com",
        "time": "Wed Jun 17 16:28:09 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:58 2009 -0700"
      },
      "message": "gcov: enable GCOV_PROFILE_ALL for x86_64\n\nEnable gcov profiling of the entire kernel on x86_64. Required changes\ninclude disabling profiling for:\n\n* arch/kernel/acpi/realmode and arch/kernel/boot/compressed:\n  not linked to main kernel\n* arch/vdso, arch/kernel/vsyscall_64 and arch/kernel/hpet:\n  profiling causes segfaults during boot (incompatible context)\n\nSigned-off-by: Peter Oberparleiter \u003coberpar@linux.vnet.ibm.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Huang Ying \u003cying.huang@intel.com\u003e\nCc: Li Wei \u003cW.Li@Sun.COM\u003e\nCc: Michael Ellerman \u003cmichaele@au1.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Heiko Carstens \u003cheicars2@linux.vnet.ibm.com\u003e\nCc: Martin Schwidefsky \u003cmschwid2@linux.vnet.ibm.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nCc: Sam Ravnborg \u003csam@ravnborg.org\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.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": "2521f2c228ad750701ba4702484e31d876dbc386",
      "tree": "2221de3e3de9512979b8244c6304366e3be5be63",
      "parents": [
        "0b923606e75f1ab672e25b14ac039a1cdcfa382f"
      ],
      "author": {
        "name": "Peter Oberparleiter",
        "email": "oberpar@linux.vnet.ibm.com",
        "time": "Wed Jun 17 16:28:08 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:57 2009 -0700"
      },
      "message": "gcov: add gcov profiling infrastructure\n\nEnable the use of GCC\u0027s coverage testing tool gcov [1] with the Linux\nkernel.  gcov may be useful for:\n\n * debugging (has this code been reached at all?)\n * test improvement (how do I change my test to cover these lines?)\n * minimizing kernel configurations (do I need this option if the\n   associated code is never run?)\n\nThe profiling patch incorporates the following changes:\n\n * change kbuild to include profiling flags\n * provide functions needed by profiling code\n * present profiling data as files in debugfs\n\nNote that on some architectures, enabling gcc\u0027s profiling option\n\"-fprofile-arcs\" for the entire kernel may trigger compile/link/\nrun-time problems, some of which are caused by toolchain bugs and\nothers which require adjustment of architecture code.\n\nFor this reason profiling the entire kernel is initially restricted\nto those architectures for which it is known to work without changes.\nThis restriction can be lifted once an architecture has been tested\nand found compatible with gcc\u0027s profiling. Profiling of single files\nor directories is still available on all platforms (see config help\ntext).\n\n[1] http://gcc.gnu.org/onlinedocs/gcc/Gcov.html\n\nSigned-off-by: Peter Oberparleiter \u003coberpar@linux.vnet.ibm.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Huang Ying \u003cying.huang@intel.com\u003e\nCc: Li Wei \u003cW.Li@Sun.COM\u003e\nCc: Michael Ellerman \u003cmichaele@au1.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Heiko Carstens \u003cheicars2@linux.vnet.ibm.com\u003e\nCc: Martin Schwidefsky \u003cmschwid2@linux.vnet.ibm.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nCc: Sam Ravnborg \u003csam@ravnborg.org\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.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": "b99b87f70c7785ab1e253c6220f4b0b57ce3a7f7",
      "tree": "ec5688052334448ec8edd3a1a9cb95cd68501ac7",
      "parents": [
        "e24aca672ff06aff0e6a1045efab86043ea5f735"
      ],
      "author": {
        "name": "Peter Oberparleiter",
        "email": "oberpar@linux.vnet.ibm.com",
        "time": "Wed Jun 17 16:28:03 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:57 2009 -0700"
      },
      "message": "kernel: constructor support\n\nCall constructors (gcc-generated initcall-like functions) during kernel\nstart and module load.  Constructors are e.g.  used for gcov data\ninitialization.\n\nDisable constructor support for usermode Linux to prevent conflicts with\nhost glibc.\n\nSigned-off-by: Peter Oberparleiter \u003coberpar@linux.vnet.ibm.com\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nCc: Sam Ravnborg \u003csam@ravnborg.org\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Huang Ying \u003cying.huang@intel.com\u003e\nCc: Li Wei \u003cW.Li@Sun.COM\u003e\nCc: Michael Ellerman \u003cmichaele@au1.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Heiko Carstens \u003cheicars2@linux.vnet.ibm.com\u003e\nCc: Martin Schwidefsky \u003cmschwid2@linux.vnet.ibm.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.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": "90af90d7d3a7411db64860c9d6e5798ff87cad08",
      "tree": "84f9c68edb231d6b64d2b24add4d7bedcb5a4aa8",
      "parents": [
        "612ce478fac2729ad564ec3f5d3c551674b8e9c2"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Jun 17 16:27:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:56 2009 -0700"
      },
      "message": "nsproxy: extract create_nsproxy()\n\nclone_nsproxy() does useless copying of old nsproxy -- every pointer will\nbe rewritten to new ns or to old ns.  Remove copying, rename\nclone_nsproxy(), create_nsproxy() will be used by C/R code to create fresh\nnsproxy on restart.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4c2a7e72d5937c6a112141c7ff3df0727b3cf3df",
      "tree": "783dc576aef932a3b56c62da2edb63c1bf9b1170",
      "parents": [
        "dca4a979604da1bac6956c0117abc2114d6dd3ec"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Jun 17 16:27:54 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:55 2009 -0700"
      },
      "message": "utsns: extract creeate_uts_ns()\n\ncreate_uts_ns() will be used by C/R to create fresh uts_ns.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: 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": "dca4a979604da1bac6956c0117abc2114d6dd3ec",
      "tree": "88d37178c05c0441900e81df9fbb217b0ac778d6",
      "parents": [
        "ed469a63c37a996fa2c7041d2dc980715707902c"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Jun 17 16:27:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:55 2009 -0700"
      },
      "message": "pidns: rewrite copy_pid_ns()\n\ncopy_pid_ns() is a perfect example of a case where unwinding leads to more\ncode and makes it less clear.  Watch the diffstat.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nReviewed-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nAcked-by: Sukadev Bhattiprolu \u003csukadev@linux.vnet.ibm.com\u003e\nReviewed-by: WANG Cong \u003cxiyou.wangcong@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": "ed469a63c37a996fa2c7041d2dc980715707902c",
      "tree": "a81bb7ff48cf56a10facf949407a28eb9e5961ea",
      "parents": [
        "17f98dcf6010a1cfd25d179fd0ce77d3dc2685c3"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Jun 17 16:27:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:55 2009 -0700"
      },
      "message": "pidns: make create_pid_namespace() accept parent pidns\n\ncreate_pid_namespace() creates everything, but caller has to assign parent\npidns by hand, which is unnatural.  At the moment of call new -\u003elevel has\nto be taken from somewhere and parent pidns is already available.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nAcked-by: Sukadev Bhattiprolu \u003csukadev@linux.vnet.ibm.com\u003e\nReviewed-by: WANG Cong \u003cxiyou.wangcong@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": "17f98dcf6010a1cfd25d179fd0ce77d3dc2685c3",
      "tree": "520d88ba2282b4811f492be6cc4565a2a3eea128",
      "parents": [
        "7338f29984114066b00da343a22876bb08259a84"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Jun 17 16:27:51 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:55 2009 -0700"
      },
      "message": "pids: clean up find_task_by_pid variants\n\nfind_task_by_pid_type_ns is only used to implement find_task_by_vpid and\nfind_task_by_pid_ns, but both of them pass PIDTYPE_PID as first argument.\nSo just fold find_task_by_pid_type_ns into find_task_by_pid_ns and use\nfind_task_by_pid_ns to implement find_task_by_vpid.\n\nWhile we\u0027re at it also remove the exports for find_task_by_pid_ns and\nfind_task_by_vpid - we don\u0027t have any modular callers left as the only\nmodular caller of he old pre pid namespace find_task_by_pid (gfs2) was\nswitched to pid_task which operates on a struct pid pointer instead of a\npid_t.  Given the confusion about pid_t values vs namespace that\u0027s\ngenerally the better option anyway and I think we\u0027re better of restricting\nmodules to do it that way.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\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": "7338f29984114066b00da343a22876bb08259a84",
      "tree": "639fa2c3bae7a8501ca232c9df905c07de153314",
      "parents": [
        "81fc401e426e8a4c719035ef86d051bd0d1111e5"
      ],
      "author": {
        "name": "Sukanto Ghosh",
        "email": "sukanto.cse.iitb@gmail.com",
        "time": "Wed Jun 17 16:27:50 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:54 2009 -0700"
      },
      "message": "sysctl.c: remove unused variable\n\nRemoce the unused variable \u0027val\u0027 from __do_proc_dointvec()\n\nThe integer has been declared and used as \u0027val \u003d -val\u0027 and there is no\nreference to it anywhere.\n\nSigned-off-by: Sukanto Ghosh \u003csukanto.cse.iitb@gmail.com\u003e\nCc: Jaswinder Singh Rajput \u003cjaswinder@kernel.org\u003e\nCc: Sukanto Ghosh \u003csukanto.cse.iitb@gmail.com\u003e\nCc: Jiri Kosina \u003cjkosina@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "371cbb387e33651b4c1326457116568ff01ac422",
      "tree": "4678d02d44fc9764f316e5d84e5d307cc14a0923",
      "parents": [
        "63706172f332fd3f6e7458ebfb35fa6de9c21dc5"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:54 2009 -0700"
      },
      "message": "kthreads: simplify migration_thread() exit path\n\nNow that kthread_stop() can be used even if the task has already exited,\nwe can kill the \"wait_to_die:\" loop in migration_thread().  But we must\npin rq-\u003emigration_thread after creation.\n\nActually, I don\u0027t think CPU_UP_CANCELED or CPU_DEAD should wait for\n-\u003emigration_thread exit.  Perhaps we can simplify this code a bit more.\nmigration_call() can set -\u003eshould_stop and forget about this thread.  But\nwe need a new helper in kthred.c for that.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Vitaliy Gusev \u003cvgusev@openvz.org\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "63706172f332fd3f6e7458ebfb35fa6de9c21dc5",
      "tree": "5548f226aa3ba7cca565a2b9d9574a5b6b1a9446",
      "parents": [
        "cdd140bdd6c7bc6395f08877a73c39941501af93"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:54 2009 -0700"
      },
      "message": "kthreads: rework kthread_stop()\n\nBased on Eric\u0027s patch which in turn was based on my patch.\n\nkthread_stop() has the nasty problems:\n\n- it runs unpredictably long with the global semaphore held.\n\n- it deadlocks if kthread itself does kthread_stop() before it obeys\n  the kthread_should_stop() request.\n\n- it is not useable if kthread exits on its own, see for example the\n  ugly \"wait_to_die:\" hack in migration_thread()\n\n- it is not possible to just tell kthread it should stop, we must always\n  wait for its exit.\n\nWith this patch kthread() allocates all neccesary data (struct kthread) on\nits own stack, globals kthread_stop_xxx are deleted.  -\u003evfork_done is used\nas a pointer into \"struct kthread\", this means kthread_stop() can easily\nwait for kthread\u0027s exit.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Vitaliy Gusev \u003cvgusev@openvz.org\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cdd140bdd6c7bc6395f08877a73c39941501af93",
      "tree": "48664b2790fb2b5152bd67bf70fb3405e1ef6e8b",
      "parents": [
        "e1eb1ebcca871673c76caf63335c4237680040f1"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:43 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:53 2009 -0700"
      },
      "message": "kthreads: simplify the startup synchronization\n\nWe use two completions two create the kernel thread, this is a bit ugly.\nkthread() wakes up create_kthread() via -\u003estarted, then create_kthread()\nwakes up the caller kthread_create() via -\u003edone.  But kthread() does not\nneed to wait for kthread(), it can just return.  Instead kthread() itself\ncan wake up the caller of kthread_create().\n\nKill kthread_create_info-\u003estarted, -\u003edone is enough.  This improves the\nscalability a bit and sijmplifies the code.\n\nThe only problem if kernel_thread() fails, in that case create_kthread()\nmust do complete(\u0026create-\u003edone).\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Vitaliy Gusev \u003cvgusev@openvz.org\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e1eb1ebcca871673c76caf63335c4237680040f1",
      "tree": "d5a1b0e667222a43ec2780787ac21011072d45f1",
      "parents": [
        "f95d39d10fe7d47336e65172f52bf64e0096f983"
      ],
      "author": {
        "name": "Richard Kennedy",
        "email": "richard@rsk.demon.co.uk",
        "time": "Wed Jun 17 16:27:42 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:53 2009 -0700"
      },
      "message": "mm: exit.c reorder wait_opts to remove padding on 64 bit builds\n\nReorder struct wait_opts to remove 8 bytes of alignment padding on 64 bit\nbuilds.\n\nSigned-off-by: Richard Kennedy \u003crichard@rsk.demon.co.uk\u003e\nCc: Oleg Nesterov \u003coleg@redhat.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": "f95d39d10fe7d47336e65172f52bf64e0096f983",
      "tree": "14b469b68455968dfd707695083ece72287dfaab",
      "parents": [
        "a3f6dfb7295facb0505b5beca5a7ce48b0612379"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:42 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:53 2009 -0700"
      },
      "message": "do_wait: fix the theoretical race with stop/trace/cont\n\ndo_wait:\n\n\tcurrent-\u003estate \u003d TASK_INTERRUPTIBLE;\n\n\tread_lock(\u0026tasklist_lock);\n\t... search for the task to reap ...\n\nIn theory, the -\u003estate changing can leak into the critical section.  Since\nthe child can change its status under read_lock(tasklist) in parallel\n(finish_stop/ptrace_stop), we can miss the wakeup if __wake_up_parent()\nsees us in TASK_RUNNING state.  Add the barrier.\n\nAlso, use __set_current_state() to set TASK_RUNNING.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\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": "a3f6dfb7295facb0505b5beca5a7ce48b0612379",
      "tree": "882e1103eaf759ab0e3bc53c08ff69b1f096b1bf",
      "parents": [
        "64a16caf5e3417ee32f670debcb5857b02a9e08e"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:53 2009 -0700"
      },
      "message": "do_wait: kill the old BUG_ON, use while_each_thread()\n\ndo_wait() does BUG_ON(tsk-\u003esignal !\u003d current-\u003esignal), this looks like a\nraher obsolete check.  At least, I don\u0027t think do_wait() is the best place\nto verify that all threads have the same -\u003esignal.  Remove it.\n\nAlso, change the code to use while_each_thread().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\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": "64a16caf5e3417ee32f670debcb5857b02a9e08e",
      "tree": "1e32f8ac1ad0d7cefeeb6bfdac995ec1ad6d7396",
      "parents": [
        "9e8ae01d1c86dcaa6443c897662545d088036e4c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:53 2009 -0700"
      },
      "message": "do_wait: simplify retval/tsk_result/notask_error mess\n\nNow that we don\u0027t pass \u0026retval down to other helpers we can simplify\nthe code more.\n\n- kill tsk_result, just use retval\n\n- add the \"notask\" label right after the main loop, and\n  s/got end/goto notask/ after the fastpath pid check.\n\n  This way we don\u0027t need to initialize retval before this\n  check and the code becomes a bit more clean, if this pid\n  has no attached tasks we should just skip the list search.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\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": "9e8ae01d1c86dcaa6443c897662545d088036e4c",
      "tree": "d9465ffe404d318e0038d3133f76550faa3ce3c3",
      "parents": [
        "47918025efdabd34e96b13b26eb2cf2fd6fd1f7c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:52 2009 -0700"
      },
      "message": "introduce \"struct wait_opts\" to simplify do_wait() patches\n\nIntroduce \"struct wait_opts\" which holds the parameters for misc helpers\nin do_wait() pathes.\n\nThis adds 13 lines to kernel/exit.c, but saves 256 bytes from .o and imho\nmakes the code much more readable.\n\nThis patch temporary uglifies rusage/siginfo code a little bit, will be\naddressed by further cleanups.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\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": "47918025efdabd34e96b13b26eb2cf2fd6fd1f7c",
      "tree": "bae081deabe6e955e94c5510ae408b50b930c225",
      "parents": [
        "3b34fc5880a2dcc7e5ed9837ef8d6bae051ab266"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:52 2009 -0700"
      },
      "message": "shift \"ptrace implies WUNTRACED\" from ptrace_do_wait() to wait_task_stopped()\n\nNo functional changes, preparation for the next patch.\n\nptrace_do_wait() adds WUNTRACED to options for wait_task_stopped() which\nshould always accept the stopped tracee, even if do_wait() was called\nwithout WUNTRACED.\n\nChange wait_task_stopped() to check \"ptrace || WUNTRACED\" instead.  This\nmakes the code more explicit, and \"int options\" argument becomes const in\ndo_wait() pathes.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\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": "72a1de39f89325a834a8c70b2a0d8f71d919f640",
      "tree": "f79fefd4eaad9cbc381792bddb1e1f3f432ad9f6",
      "parents": [
        "77d1ef79568b337f599b75795acc8f78a87ba9ba"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:37 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:52 2009 -0700"
      },
      "message": "copy_process(): remove the unneeded clear_tsk_thread_flag(TIF_SIGPENDING)\n\nThe forked child can have TIF_SIGPENDING if it was copied from parent\u0027s\nti-\u003eflags.  But this is harmless and actually almost never happens,\nbecause copy_process() can\u0027t succeed if signal_pending() \u003d\u003d T.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\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": "77d1ef79568b337f599b75795acc8f78a87ba9ba",
      "tree": "4fc0f622c6e064e76e6fd28981c3375ee3d153a9",
      "parents": [
        "e49612544c695117644af48bb4625264a3d2918f"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:52 2009 -0700"
      },
      "message": "wait_task_zombie: do not use thread_group_cputime()\n\nThere is no reason for thread_group_cputime() in wait_task_zombie(), there\nmust be no other threads.\n\nThis call was previously needed to collect the per-cpu data which we do\nnot have any longer.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Stanislaw Gruszka \u003csgruszka@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": "e49612544c695117644af48bb4625264a3d2918f",
      "tree": "7fe576d195533fb671c7a610cc35e9608e48c87e",
      "parents": [
        "d92656633b8352c6d4b14afcb7beb154d76e7aa6"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:52 2009 -0700"
      },
      "message": "ptrace: don\u0027t take tasklist to get/set -\u003elast_siginfo\n\nChange ptrace_getsiginfo/ptrace_setsiginfo to use lock_task_sighand()\nwithout tasklist_lock.  Perhaps it makes sense to make a single helper\nwith \"bool rw\" argument.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\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": "d92656633b8352c6d4b14afcb7beb154d76e7aa6",
      "tree": "616dabaff973bc4483ece684c93afdb2dcacff59",
      "parents": [
        "d1e98f429aa10132b3010ba3b0be47552a2eb14b"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:35 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:52 2009 -0700"
      },
      "message": "ptrace: do_notify_parent_cldstop: fix the wrong -\u003ensproxy usage\n\nIf the non-traced sub-thread calls do_notify_parent_cldstop(), we send the\nnotification to group_leader-\u003ereal_parent and we report group_leader\u0027s\npid.\n\nBut, if group_leader is traced we use the wrong -\u003eparent-\u003ensproxy-\u003epid_ns,\nthe tracer and parent can live in different namespaces.  Change the code\nto use \"parent\" instead of tsk-\u003eparent.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nAcked-by: Sukadev Bhattiprolu \u003csukadev@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": "d1e98f429aa10132b3010ba3b0be47552a2eb14b",
      "tree": "bd4458a65ac9ff942a3ba6dfcd70c281e15e067a",
      "parents": [
        "8053bdd5ce15dcf043d41a4dd6cac4a5567effdc"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:51 2009 -0700"
      },
      "message": "ptrace: wait_task_zombie: s/-\u003eparent/-\u003ereal_parent/\n\nChange wait_task_zombie() to use -\u003ereal_parent instead of -\u003eparent.  We\ncould even use current afaics, but -\u003ereal_parent is more clean.\n\nWe know that the child is not ptrace_reparented() and thus they are equal.\n But we should avoid using task_struct-\u003eparent, we are going to remove it.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\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": "8053bdd5ce15dcf043d41a4dd6cac4a5567effdc",
      "tree": "b139a0763d46143fbe5e36811b03c1987ef23b7a",
      "parents": [
        "4b105cbbaf7c06e01c27391957dc3c446328d087"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:51 2009 -0700"
      },
      "message": "ptrace_get_task_struct: s/tasklist/rcu/, make it static\n\n- Use rcu_read_lock() instead of tasklist_lock to find/get the task\n  in ptrace_get_task_struct().\n\n- Make it static, it has no callers outside of ptrace.c.\n\n- The comment doesn\u0027t match the reality, this helper does not do\n  any checks. Beacuse it is really trivial and static I removed the\n  whole comment.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\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": "4b105cbbaf7c06e01c27391957dc3c446328d087",
      "tree": "4b6a65061a7bf46baea9d8867fdda0c22c8a3d45",
      "parents": [
        "f2f0b00ad61d53adfecb8bdf8f3cf8f05f6ed548"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:51 2009 -0700"
      },
      "message": "ptrace: do not use task_lock() for attach\n\nRemove the \"Nasty, nasty\" lock dance in ptrace_attach()/ptrace_traceme() -\nfrom now task_lock() has nothing to do with ptrace at all.\n\nWith the recent changes nobody uses task_lock() to serialize with ptrace,\nbut in fact it was never needed and it was never used consistently.\n\nHowever ptrace_attach() calls __ptrace_may_access() and needs task_lock()\nto pin task-\u003emm for get_dumpable().  But we can call __ptrace_may_access()\nbefore we take tasklist_lock, -\u003ecred_exec_mutex protects us against\ndo_execve() path which can change creds and MMF_DUMP* flags.\n\n(ugly, but we can\u0027t use ptrace_may_access() because it hides the error\ncode, so we have to take task_lock() and use __ptrace_may_access()).\n\nNOTE: this change assumes that LSM hooks, security_ptrace_may_access() and\nsecurity_ptrace_traceme(), can be called without task_lock() held.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\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": "f2f0b00ad61d53adfecb8bdf8f3cf8f05f6ed548",
      "tree": "dda08f8bb3e8c403b2d1cf941b17c9909975c209",
      "parents": [
        "b79b7ba93df14a1fc0b8d4d6d78a0e097de03bbd"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:51 2009 -0700"
      },
      "message": "ptrace: cleanup check/set of PT_PTRACED during attach\n\nptrace_attach() and ptrace_traceme() are the last functions which look as\nif the untraced task can have task-\u003eptrace !\u003d 0, this must not be\npossible.  Change the code to just check -\u003eptrace !\u003d 0 and s/|\u003d/\u003d/ to set\nPT_PTRACED.\n\nAlso, a couple of trivial whitespace cleanups in ptrace_attach().\n\nAnd move ptrace_traceme() up near ptrace_attach() to keep them close to\neach other.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\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": "b79b7ba93df14a1fc0b8d4d6d78a0e097de03bbd",
      "tree": "65ce7c7335fc1dd0a91a3224466c4eaa0ec489f4",
      "parents": [
        "5cb11446892833e50970fb2277a9f7563b0a8bd3"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:31 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:51 2009 -0700"
      },
      "message": "ptrace: ptrace_attach: check PF_KTHREAD + exit_state instead of -\u003emm\n\n- Add PF_KTHREAD check to prevent attaching to the kernel thread\n  with a borrowed -\u003emm.\n\n  With or without this change we can race with daemonize() which\n  can set PF_KTHREAD or clear -\u003emm after ptrace_attach() does the\n  check, but this doesn\u0027t matter because reparent_to_kthreadd()\n  does ptrace_unlink().\n\n- Kill \"!task-\u003emm\" check. We don\u0027t really care about -\u003emm !\u003d NULL,\n  and the task can call exit_mm() right after we drop task_lock().\n  What we need is to make sure we can\u0027t attach after exit_notify(),\n  check task-\u003eexit_state !\u003d 0 instead.\n\nAlso, move the \"already traced\" check down for cosmetic reasons.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\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": "5cb11446892833e50970fb2277a9f7563b0a8bd3",
      "tree": "9cb858cb093c4b927601ef8a612d8dd791aeb1c8",
      "parents": [
        "1c216279539bd65c5a3d497e25d441dbddbcf1ec"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:51 2009 -0700"
      },
      "message": "ptrace: do not use task-\u003eptrace directly in core kernel\n\nNo functional changes.\n\n- Nobody except ptrace.c \u0026 co should use ptrace flags directly, we have\n  task_ptrace() for that.\n\n- No need to specially check PT_PTRACED, we must not have other PT_ bits\n  set without PT_PTRACED. And no need to know this flag exists.\n\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": "dea33cfd99022d82d923a0c6a3bd895fb6683fb2",
      "tree": "889ea712abbbb8b8c220dd593383ec6f9ad15ffc",
      "parents": [
        "48597760fad3d6a3e30a14241a3ce5ccb1a0e9bc"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:29 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:49 2009 -0700"
      },
      "message": "ptrace: mm_need_new_owner: use -\u003ereal_parent to search in the siblings\n\n\"Search in the siblings\" should use -\u003ereal_parent, not -\u003eparent.  If the\ntask is traced then -\u003eparent \u003d\u003d tracer, while the task\u0027s parent is always\n-\u003ereal_parent.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\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": "87245135d5057edd5a8037131f81eeffd76d4fef",
      "tree": "9c6c695f474dfced54311467fd5c14de57f6dbb9",
      "parents": [
        "2ffebca6aa7e1687905c842dd8c5c1e811e574e7"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:23 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:48 2009 -0700"
      },
      "message": "allow_signal: kill the bogus -\u003emm check, add a note about CLONE_SIGHAND\n\nallow_signal() checks -\u003emm \u003d\u003d NULL.  Not sure why.  Perhaps to make sure\ncurrent is the kernel thread.  But this helper must not be used unless we\nare the kernel thread, kill this check.\n\nAlso, document the fact that the CLONE_SIGHAND kthread must not use\nallow_signal(), unless the caller really wants to change the parent\u0027s\n-\u003esighand-\u003eaction as well.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\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": "c5b947b28828e82814605824e5db0bc58d66d8c0",
      "tree": "0ce0c8c468668eb30d769fa97a99d332b9d9f987",
      "parents": [
        "22a668d7c3ef833e7d67e9cef587ecc78069d532"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Wed Jun 17 16:27:20 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:48 2009 -0700"
      },
      "message": "memcg: add interface to reset limits\n\nWe don\u0027t have an interface to reset mem.limit or memsw.limit now.\n\nThis patch allows to reset mem.limit or memsw.limit when they are being\nset to -1.\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Dhaval Giani \u003cdhaval@linux.vnet.ibm.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.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": "f9ab5b5b0f5be506640321d710b0acd3dca6154a",
      "tree": "abd8e17febed8507b4c0f96a88d2711fccb31b2b",
      "parents": [
        "8ca739e3694b83cdf22be0f6eff063e721deb1e4"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jun 17 16:26:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:46 2009 -0700"
      },
      "message": "cgroups: forbid noprefix if mounting more than just cpuset subsystem\n\nThe \u0027noprefix\u0027 option was introduced for backwards-compatibility of\ncpuset, but actually it can be used when mounting other subsystems.\n\nThis results in possibility of name collision, and now the collision can\nreally happen, because we have \u0027stat\u0027 file in both memory and cpuacct\nsubsystem:\n\n\t# mount -t cgroup -o noprefix,memory,cpuacct xxx /mnt\n\nCgroup will happily mount the 2 subsystems, but only \u0027stat\u0027 file of memory\nsubsys can be seen.\n\nWe don\u0027t want users to use nopreifx, and also want to avoid name\ncollision, so we change to allow noprefix only if mounting just the cpuset\nsubsystem.\n\n[akpm@linux-foundation.org: fix shift for cpuset_subsys_id \u003e\u003d 32]\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: 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": "aa0ce5bbc2dbb1853bd0c6d13f17716fcc38ac5a",
      "tree": "79efff8d1e52e3d1b968a5122447d25886ef29d7",
      "parents": [
        "1d89b30cc9be41af87881682ec82e2c107849dbe"
      ],
      "author": {
        "name": "Keika Kobayashi",
        "email": "kobayashi.kk@ncos.nec.co.jp",
        "time": "Wed Jun 17 16:25:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:40 2009 -0700"
      },
      "message": "softirq: introduce statistics for softirq\n\nStatistics for softirq doesn\u0027t exist.\nIt will be helpful like statistics for interrupts.\nThis patch introduces counting the number of softirq,\nwhich will be exported in /proc/softirqs.\n\nWhen softirq handler consumes much CPU time,\n/proc/stat is like the following.\n\n$ while :; do  cat /proc/stat | head -n1 ; sleep 10 ; done\ncpu  88 0 408 739665 583 28 2 0 0\ncpu  450 0 1090 740970 594 28 1294 0 0\n                              ^^^^\n                             softirq\n\nIn such a situation,\n/proc/softirqs shows us which softirq handler is invoked.\nWe can see the increase rate of softirqs.\n\n\u003cbefore\u003e\n$ cat /proc/softirqs\n                CPU0       CPU1       CPU2       CPU3\nHI                 0          0          0          0\nTIMER         462850     462805     462782     462718\nNET_TX             0          0          0        365\nNET_RX          2472          2          2         40\nBLOCK              0          0        381       1164\nTASKLET            0          0          0        224\nSCHED         462654     462689     462698     462427\nRCU             3046       2423       3367       3173\n\n\u003cafter\u003e\n$ cat /proc/softirqs\n                CPU0       CPU1       CPU2       CPU3\nHI                 0          0          0          0\nTIMER         463361     465077     465056     464991\nNET_TX            53          0          1        365\nNET_RX          3757          2          2         40\nBLOCK              0          0        398       1170\nTASKLET            0          0          0        224\nSCHED         463074     464318     464612     463330\nRCU             3505       2948       3947       3673\n\nWhen CPU TIME of softirq is high,\nthe rates of increase is the following.\n  TIMER  : 220/sec     : CPU1-3\n  NET_TX : 5/sec       : CPU0\n  NET_RX : 120/sec     : CPU0\n  SCHED  : 40-200/sec  : all CPU\n  RCU    : 45-58/sec   : all CPU\n\nThe rates of increase in an idle mode is the following.\n  TIMER  : 250/sec\n  SCHED  : 250/sec\n  RCU    : 2/sec\n\nIt seems many softirqs for receiving packets and rcu are invoked.  This\ngives us help for checking system.\n\nSigned-off-by: Keika Kobayashi \u003ckobayashi.kk@ncos.nec.co.jp\u003e\nReviewed-by: Hiroshi Shimamoto \u003ch-shimamoto@ct.jp.nec.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: 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": "43a21ea81a2400992561146327c4785ce7f7be38",
      "tree": "d4974c0ff9d7f40291515c5c0cf7e0d51abccb66",
      "parents": [
        "d3a9262e59f7fb83c6d44df3b2b1460ed57d3ea1"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Mar 25 19:39:37 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jun 18 14:46:11 2009 +0200"
      },
      "message": "perf_counter: Add event overlow handling\n\nAlternative method of mmap() data output handling that provides\nbetter overflow management and a more reliable data stream.\n\nUnlike the previous method, that didn\u0027t have any user-\u003ekernel\nfeedback and relied on userspace keeping up, this method relies on\nuserspace writing its last read position into the control page.\n\nIt will ensure new output doesn\u0027t overwrite not-yet read events,\nnew events for which there is no space left are lost and the\noverflow counter is incremented, providing exact event loss\nnumbers.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4b221f0313f0f7f1f7aa0a1fd16ad400840def26",
      "tree": "a294e6719eefb3c68562627f59a7c0a67ae9b760",
      "parents": [
        "8d707e8eb4de4b930573155ab4df4b3270ee25dd"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Jun 17 17:01:09 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jun 17 17:01:09 2009 -0400"
      },
      "message": "ring-buffer: have benchmark test print to trace buffer\n\nCurrently the output of the ring buffer benchmark/test prints to\nthe console. This test runs for ten seconds every ten seconds and\nouputs the result after every iteration. This needlessly fills up\nthe logs.\n\nThis patch makes the ring buffer benchmark/test print to the ftrace\nbuffer using trace_printk. To view the test results, you must examine\nthe debug/tracing/trace file.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "8d707e8eb4de4b930573155ab4df4b3270ee25dd",
      "tree": "2594b38c73fa1c944587f62a2f9ce70fe4f90ce4",
      "parents": [
        "d47882078f05c2cb46b85f1e12a58ed9315b9d63"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Jun 16 21:22:48 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jun 17 14:16:27 2009 -0400"
      },
      "message": "ring-buffer: do not grab locks in nmi\n\nIf ftrace_dump_on_oops is set, and an NMI detects a lockup, then it\nwill need to read from the ring buffer. But the read side of the\nring buffer still takes locks. This patch adds a check on the read\nside that if it is in an NMI, then it will disable the ring buffer\nand not take any locks.\n\nReads can still happen on a disabled ring buffer.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "d47882078f05c2cb46b85f1e12a58ed9315b9d63",
      "tree": "ad10f2172384d2112b6e8136b9981a0eb813539b",
      "parents": [
        "5f78abeebbf0a80975d719e11374535ca15396cb"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Jun 17 00:39:43 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jun 17 14:16:23 2009 -0400"
      },
      "message": "ring-buffer: add locks around rb_per_cpu_empty\n\nThe checking of whether the buffer is empty or not needs to be serialized\namong the readers. Add the reader spin lock around it.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "5f78abeebbf0a80975d719e11374535ca15396cb",
      "tree": "8c5a5f11caadc1cb662152fb1ef84b5b1fa19bbb",
      "parents": [
        "0dcd4d6c3e5b17ccf88d41cb354bb4d57cb18cbf"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Jun 17 14:11:10 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jun 17 14:16:20 2009 -0400"
      },
      "message": "ring-buffer: check for less than two in size allocation\n\nThe ring buffer must have at least two pages allocated for the\nreader page swap to work.\n\nThe page count check will miss the case of a zero size passed in.\nEven though a zero size ring buffer would probably fail an allocation,\nmaking the min size check for less than two instead of equal to one makes\nthe code a bit more robust.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "0dcd4d6c3e5b17ccf88d41cb354bb4d57cb18cbf",
      "tree": "4798b2172902f8ce4dc81856ee1d858909147824",
      "parents": [
        "c6a9d7b55e2df63de012a9a285bf2a0bee8e4d59"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Jun 17 14:03:44 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jun 17 14:16:07 2009 -0400"
      },
      "message": "ring-buffer: remove useless compile check for buffer_page size\n\nThe original version of the ring buffer had a hack to map the\npage struct that held the pages of the buffer to also be the structure\nthat the ring buffer would keep the pages in a link list.\n\nThis overlap of the page struct was very dangerous and that hack was\nremoved a while ago.\n\nBut there was a check to make sure the buffer_page never became bigger\nthan the page struct, and would fail the compile if it did. The\ncheck was only meaningful when we had the hack. Now that we have separate\nallocated descriptors for the buffer pages, we can remove this check.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "b7c142dbf1e7422d0be7f7faa3f1163ad9da9788",
      "tree": "6e62c8654bb9c329f89246235062ac2a289960df",
      "parents": [
        "0bd8df908de2aefe312d05bd25cd3abc21a6d1da",
        "f2c5dbd7b7396457efc114f825acfdd4db4608f8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 17 09:46:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 17 09:46:33 2009 -0700"
      },
      "message": "Merge branch \u0027linux-next\u0027 of git://git.infradead.org/ubifs-2.6\n\n* \u0027linux-next\u0027 of git://git.infradead.org/ubifs-2.6:\n  UBIFS: start using hrtimers\n  hrtimer: export ktime_add_safe\n  UBIFS: do not forget to register BDI device\n  UBIFS: allow sync option in rootflags\n  UBIFS: remove dead code\n  UBIFS: use anonymous device\n  UBIFS: return proper error code if the compr is not present\n  UBIFS: return error if link and unlink race\n  UBIFS: reset no_space flag after inode deletion\n"
    },
    {
      "commit": "3104bf03a923c72043a9c5009d9cd56724304916",
      "tree": "c65dbf477871ea843241055cda84b2448aee0c71",
      "parents": [
        "348ec61e6268c3cd7ee75cfa50e408184a941506"
      ],
      "author": {
        "name": "Christian Engelmayer",
        "email": "christian.engelmayer@frequentis.com",
        "time": "Tue Jun 16 10:35:12 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jun 17 18:37:54 2009 +0200"
      },
      "message": "sched: Fix out of scope variable access in sched_slice()\n\nAccess to local variable lw is aliased by usage of pointer load.\nAccess to pointer load in calc_delta_mine() happens when lw is\nalready out of scope.\n\n[ Reported by static code analysis. ]\n\nSigned-off-by: Christian Engelmayer \u003cchristian.engelmayer@frequentis.com\u003e\nLKML-Reference: \u003c20090616103512.0c846e51@frequentis.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "348ec61e6268c3cd7ee75cfa50e408184a941506",
      "tree": "10829dde8d184ed59bf3d76578bb444d097a8598",
      "parents": [
        "fd5e1b5dbaa8b4aacc0e251d74182eda37062194"
      ],
      "author": {
        "name": "Hitoshi Mitake",
        "email": "mitake@dcl.info.waseda.ac.jp",
        "time": "Wed Jun 17 22:20:55 2009 +0900"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jun 17 18:29:42 2009 +0200"
      },
      "message": "sched: Hide runqueues from direct refer at source code level\n\nThere are some points which refer the per-cpu value \"runqueues\" directly.\nsched.c provides nice abstraction, such as cpu_rq() and this_rq(),\nso we should use these macros when looking runqueues.\n\nSigned-off-by: Hitoshi Mitake \u003cmitake@dcl.info.waseda.ac.jp\u003e\nLKML-Reference: \u003c20090617.222055.374768827975756908.mitake@dcl.info.waseda.ac.jp\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "fd5e1b5dbaa8b4aacc0e251d74182eda37062194",
      "tree": "cba4e780784649fe9c9535b8d5ac1617f52e1a15",
      "parents": [
        "84599f8a59e77699f18f06948cea171a349a3f0f"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Jun 15 13:34:19 2009 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jun 17 16:08:04 2009 +0200"
      },
      "message": "sched: Remove unneeded __ref tag\n\nThose two functions no longer call alloc_bootmmem_cpumask_var(),\nso no need to tag them with __init_refok.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nLKML-Reference: \u003c4A35DD5B.9050106@cn.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a3d06cc6aa3e765dc2bf98626f87272dcf641dca",
      "tree": "aa3e49b58f08d6c0ea55cdca4fb5e6c8ba6ae333",
      "parents": [
        "0990b1c65729012a63e0eeca93aaaafea4e9a064",
        "65795efbd380a832ae508b04dba8f8e53f0b84d9"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jun 17 13:06:17 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jun 17 13:06:17 2009 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into perfcounters/core\n\nConflicts:\n\tarch/x86/include/asm/kmap_types.h\n\tinclude/linux/mm.h\n\n\tinclude/asm-generic/kmap_types.h\n\nMerge reason: We crossed changes with kmap_types.h cleanups in mainline.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "517d08699b250021303f9a7cf0d758b6dc0748ed",
      "tree": "5e5b0134c3fffb78fe9d8b1641a64ff28fdd7bbc",
      "parents": [
        "8eeee4e2f04fc551f50c9d9847da2d73d7d33728",
        "a34601c5d84134055782ee031d58d82f5440e918"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:50:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:50:13 2009 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027\n\n* akpm: (182 commits)\n  fbdev: bf54x-lq043fb: use kzalloc over kmalloc/memset\n  fbdev: *bfin*: fix __dev{init,exit} markings\n  fbdev: *bfin*: drop unnecessary calls to memset\n  fbdev: bfin-t350mcqb-fb: drop unused local variables\n  fbdev: blackfin has __raw I/O accessors, so use them in fb.h\n  fbdev: s1d13xxxfb: add accelerated bitblt functions\n  tcx: use standard fields for framebuffer physical address and length\n  fbdev: add support for handoff from firmware to hw framebuffers\n  intelfb: fix a bug when changing video timing\n  fbdev: use framebuffer_release() for freeing fb_info structures\n  radeon: P2G2CLK_ALWAYS_ONb tested twice, should 2nd be P2G2CLK_DAC_ALWAYS_ONb?\n  s3c-fb: CPUFREQ frequency scaling support\n  s3c-fb: fix resource releasing on error during probing\n  carminefb: fix possible access beyond end of carmine_modedb[]\n  acornfb: remove fb_mmap function\n  mb862xxfb: use CONFIG_OF instead of CONFIG_PPC_OF\n  mb862xxfb: restrict compliation of platform driver to PPC\n  Samsung SoC Framebuffer driver: add Alpha Channel support\n  atmel-lcdc: fix pixclock upper bound detection\n  offb: use framebuffer_alloc() to allocate fb_info struct\n  ...\n\nManually fix up conflicts due to kmemcheck in mm/slab.c\n"
    },
    {
      "commit": "009789f040b71699278e70a6664701c10065e430",
      "tree": "83692d9eec2773e1d78628120f8e36807efe233b",
      "parents": [
        "b72b71c6cb6ecc564d4d5f9c512a7df269837846"
      ],
      "author": {
        "name": "Chris Peterson",
        "email": "cpeterso@cpeterso.com",
        "time": "Tue Jun 16 15:33:43 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:49 2009 -0700"
      },
      "message": "slow-work: use round_jiffies() for thread pool\u0027s cull and OOM timers\n\nRound the slow work queue\u0027s cull and OOM timeouts to whole second boundary\nwith round_jiffies().  The slow work queue uses a pair of timers to cull\nidle threads and, after OOM, to delay new thread creation.\n\nThis patch also extracts the mod_timer() logic for the cull timer into a\nseparate helper function.\n\nBy rounding non-time-critical timers such as these to whole seconds, they\nwill be batched up to fire at the same time rather than being spread out.\nThis allows the CPU wake up less, which saves power.\n\nSigned-off-by: Chris Peterson \u003ccpeterso@cpeterso.com\u003e\nSigned-off-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": "30639b6af85a92491b22dd14c17b14ca11da60e6",
      "tree": "f21c4dd631da5b8750678958b29947d4d0e90cb0",
      "parents": [
        "8b0b1db0133e4218a9b45c09e53793c039edebe1"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Jun 16 15:33:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:48 2009 -0700"
      },
      "message": "groups: move code to kernel/groups.c\n\nMove supplementary groups implementation to kernel/groups.c .\nkernel/sys.c already accumulated quite a few random stuff.\n\nDo strictly copy/paste + add required headers to compile.  Compile-tested\non many configs and archs.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b33112d1cc25e658c334125d127a6ae15d5a0ad6",
      "tree": "a09dc0715c317198caf868010a6e10f67bf939c2",
      "parents": [
        "417dcdf99ec9f8d8d6917189130bdc17cb67c678"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@crashcourse.ca",
        "time": "Tue Jun 16 15:33:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:47 2009 -0700"
      },
      "message": "kernel/kfifo.c: replace conditional test with is_power_of_2()\n\nSigned-off-by: Robert P. J. Day \u003crpjday@crashcourse.ca\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6837765963f1723e80ca97b1fae660f3a60d77df",
      "tree": "a9a6ed4b7e3bf188966da78b04bf39298f24375a",
      "parents": [
        "bce7394a3ef82b8477952fbab838e4a6e8cb47d2"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Jun 16 15:32:51 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:42 2009 -0700"
      },
      "message": "mm: remove CONFIG_UNEVICTABLE_LRU config option\n\nCurrently, nobody wants to turn UNEVICTABLE_LRU off.  Thus this\nconfigurability is unnecessary.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nAcked-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7f33d49a2ed546e01f7b1d0607661810f2421859",
      "tree": "8b05ac7ec2cd123efb266ecaa1bf0bd1487158f8",
      "parents": [
        "75927af8bcb940dad4fe281713d526cb520869ff"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Jun 16 15:32:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:40 2009 -0700"
      },
      "message": "mm, PM/Freezer: Disable OOM killer when tasks are frozen\n\nCurrently, the following scenario appears to be possible in theory:\n\n* Tasks are frozen for hibernation or suspend.\n* Free pages are almost exhausted.\n* Certain piece of code in the suspend code path attempts to allocate\n  some memory using GFP_KERNEL and allocation order less than or\n  equal to PAGE_ALLOC_COSTLY_ORDER.\n* __alloc_pages_internal() cannot find a free page so it invokes the\n  OOM killer.\n* The OOM killer attempts to kill a task, but the task is frozen, so\n  it doesn\u0027t die immediately.\n* __alloc_pages_internal() jumps to \u0027restart\u0027, unsuccessfully tries\n  to find a free page and invokes the OOM killer.\n* No progress can be made.\n\nAlthough it is now hard to trigger during hibernation due to the memory\nshrinking carried out by the hibernation code, it is theoretically\npossible to trigger during suspend after the memory shrinking has been\nremoved from that code path.  Moreover, since memory allocations are\ngoing to be used for the hibernation memory shrinking, it will be even\nmore likely to happen during hibernation.\n\nTo prevent it from happening, introduce the oom_killer_disabled switch\nthat will cause __alloc_pages_internal() to fail in the situations in\nwhich the OOM killer would have been called and make the freezer set\nthis switch after tasks have been successfully frozen.\n\n[akpm@linux-foundation.org: be nicer to the namespace]\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Fengguang Wu \u003cfengguang.wu@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\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": "6484eb3e2a81807722c5f28efef94d8338b7b996",
      "tree": "10ce36f412c2ff0c7eb399af1a189f8e354f56db",
      "parents": [
        "b3c466ce512923298ae8c0121d3e9f397a3f1210"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Jun 16 15:31:54 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:32 2009 -0700"
      },
      "message": "page allocator: do not check NUMA node ID when the caller knows the node is valid\n\nCallers of alloc_pages_node() can optionally specify -1 as a node to mean\n\"allocate from the current node\".  However, a number of the callers in\nfast paths know for a fact their node is valid.  To avoid a comparison and\nbranch, this patch adds alloc_pages_exact_node() that only checks the nid\nwith VM_BUG_ON().  Callers that know their node is valid are then\nconverted.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Paul Mundt \u003clethal@linux-sh.org\u003e\t[for the SLOB NUMA bits]\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "58568d2a8215cb6f55caf2332017d7bdff954e1c",
      "tree": "ffcdee457494ac78d6550b0aeac86536ca152e7b",
      "parents": [
        "950592f7b991f267d707d372b90f508bbe72acbc"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Tue Jun 16 15:31:49 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:31 2009 -0700"
      },
      "message": "cpuset,mm: update tasks\u0027 mems_allowed in time\n\nFix allocating page cache/slab object on the unallowed node when memory\nspread is set by updating tasks\u0027 mems_allowed after its cpuset\u0027s mems is\nchanged.\n\nIn order to update tasks\u0027 mems_allowed in time, we must modify the code of\nmemory policy.  Because the memory policy is applied in the process\u0027s\ncontext originally.  After applying this patch, one task directly\nmanipulates anothers mems_allowed, and we use alloc_lock in the\ntask_struct to protect mems_allowed and memory policy of the task.\n\nBut in the fast path, we didn\u0027t use lock to protect them, because adding a\nlock may lead to performance regression.  But if we don\u0027t add a lock,the\ntask might see no nodes when changing cpuset\u0027s mems_allowed to some\nnon-overlapping set.  In order to avoid it, we set all new allowed nodes,\nthen clear newly disallowed ones.\n\n[lee.schermerhorn@hp.com:\n  The rework of mpol_new() to extract the adjusting of the node mask to\n  apply cpuset and mpol flags \"context\" breaks set_mempolicy() and mbind()\n  with MPOL_PREFERRED and a NULL nodemask--i.e., explicit local\n  allocation.  Fix this by adding the check for MPOL_PREFERRED and empty\n  node mask to mpol_new_mpolicy().\n\n  Remove the now unneeded \u0027nodes \u003d NULL\u0027 from mpol_new().\n\n  Note that mpol_new_mempolicy() is always called with a non-NULL\n  \u0027nodes\u0027 parameter now that it has been removed from mpol_new().\n  Therefore, we don\u0027t need to test nodes for NULL before testing it for\n  \u0027empty\u0027.  However, just to be extra paranoid, add a VM_BUG_ON() to\n  verify this assumption.]\n[lee.schermerhorn@hp.com:\n\n  I don\u0027t think the function name \u0027mpol_new_mempolicy\u0027 is descriptive\n  enough to differentiate it from mpol_new().\n\n  This function applies cpuset set context, usually constraining nodes\n  to those allowed by the cpuset.  However, when the \u0027RELATIVE_NODES flag\n  is set, it also translates the nodes.  So I settled on\n  \u0027mpol_set_nodemask()\u0027, because the comment block for mpol_new() mentions\n  that we need to call this function to \"set nodes\".\n\n  Some additional minor line length, whitespace and typo cleanup.]\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "950592f7b991f267d707d372b90f508bbe72acbc",
      "tree": "b57ef015ff5cd54d8ab21005b466c80e9ccfa9e3",
      "parents": [
        "f3b39d47ebc51416fc3b690a32dfe030a2035e67"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Tue Jun 16 15:31:47 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:31 2009 -0700"
      },
      "message": "cpusets: update tasks\u0027 page/slab spread flags in time\n\nFix the bug that the kernel didn\u0027t spread page cache/slab object evenly\nover all the allowed nodes when spread flags were set by updating tasks\u0027\npage/slab spread flags in time.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\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": "f3b39d47ebc51416fc3b690a32dfe030a2035e67",
      "tree": "98873bacc74c60407ba3e93337d12351f35711e3",
      "parents": [
        "dcf975d58565880a134afb13bde511d1b873ce79"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Tue Jun 16 15:31:46 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:31 2009 -0700"
      },
      "message": "cpusets: restructure the function cpuset_update_task_memory_state()\n\nThe kernel still allocates the page caches on old node after modifying its\ncpuset\u0027s mems when \u0027memory_spread_page\u0027 was set, or it didn\u0027t spread the\npage cache evenly over all the nodes that faulting task is allowed to usr\nafter memory_spread_page was set.  it is caused by the old mem_allowed and\nflags of the task, the current kernel doesn\u0027t updates them unless some\nfunction invokes cpuset_update_task_memory_state(), it is too late\nsometimes.We must update the mem_allowed and the flags of the tasks in\ntime.\n\nSlab has the same problem.\n\nThe following patches fix this bug by updating tasks\u0027 mem_allowed and\nspread flag after its cpuset\u0027s mems or spread flag is changed.\n\nThis patch:\n\nExtract a function from cpuset_update_task_memory_state().  It will be\nused later for update tasks\u0027 page/slab spread flags after its cpuset\u0027s\nflag is set\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\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": "c6a9d7b55e2df63de012a9a285bf2a0bee8e4d59",
      "tree": "f4f275eeba79572e9660da6c0d865d7f2d51075c",
      "parents": [
        "22f470f8daea64bc03be1fe30c8c5df382295386"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Jun 11 09:49:15 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jun 16 21:19:26 2009 -0400"
      },
      "message": "ring-buffer: remove useless warn on check\n\nA check if \"write \u003e BUF_PAGE_SIZE\" is done right after a\n\n\tif (write \u003e BUF_PAGE_SIZE)\n\t\treturn ...;\n\nThus the check is actually testing the compiler and not the\nkernel. This is useless, remove it.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "22f470f8daea64bc03be1fe30c8c5df382295386",
      "tree": "3186ae50783f1795307055d48a583e23e2e21ad2",
      "parents": [
        "44ad18e0a65e296b2e68a1452509f6222cdce743"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Jun 11 09:29:58 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jun 16 21:19:23 2009 -0400"
      },
      "message": "ring-buffer: use BUF_PAGE_HDR_SIZE in calculating index\n\nThe index of the event is found by masking PAGE_MASK to it and\nsubtracting the header size. Currently the header size is calculate\nby PAGE_SIZE - BUF_PAGE_SIZE, when we already have a macro\nBUF_PAGE_HDR_SIZE to define it.\n\nIf we want to change BUF_PAGE_SIZE to something less than filling\nthe rest of the page (this is done for debugging), then we break\nthe algorithm to find the index.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "00e95830a4d6e49f764fdb19896a89199bc0aa3b",
      "tree": "972a3872cb48474777da0f9e3121fcc6924e197d",
      "parents": [
        "57be88878e7aa38750384704d811485a607bbda4"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Jun 16 16:39:41 2009 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jun 16 16:25:37 2009 -0400"
      },
      "message": "tracing/filters: fix race between filter setting and module unload\n\nModule unload is protected by event_mutex, while setting filter is\nprotected by filter_mutex. This leads to the race:\n\necho \u0027bar \u003d\u003d 0 || bar \u003d\u003d 10\u0027 \\    |\n\t\t\u003e sample/filter   |\n                                  |  insmod sample.ko\n  add_pred(\"bar \u003d\u003d 0\")            |\n    -\u003e n_preds \u003d\u003d 1               |\n  add_pred(\"bar \u003d\u003d 100\")          |\n    -\u003e n_preds \u003d\u003d 2               |\n                                  |  rmmod sample.ko\n                                  |  insmod sample.ko\n  add_pred(\"\u0026\u0026\")                  |\n    -\u003e n_preds \u003d\u003d 1 (should be 3) |\n\nNow event-\u003efilter-\u003epreds is corrupted. An then when filter_match_preds()\nis called, the WARN_ON() in it will be triggered.\n\nTo avoid the race, we remove filter_mutex, and replace it with event_mutex.\n\n[ Impact: prevent corruption of filters by module removing and loading ]\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4A375A4D.6000205@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "57be88878e7aa38750384704d811485a607bbda4",
      "tree": "e65873cc622b7477ec6cf7ef7be8f63f4aef481f",
      "parents": [
        "fa7439531dee58277748c819785a44d3203c4b51"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Jun 16 16:39:12 2009 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jun 16 16:25:35 2009 -0400"
      },
      "message": "tracing/filters: free filter_string in destroy_preds()\n\nfilter-\u003efilter_string is not freed when unloading a module:\n\n # insmod trace-events-sample.ko\n # echo \"bar \u003c 100\" \u003e /mnt/tracing/events/sample/foo_bar/filter\n # rmmod trace-events-sample.ko\n\n[ Impact: fix memory leak when unloading module ]\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4A375A30.9060802@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "fa7439531dee58277748c819785a44d3203c4b51",
      "tree": "b867f2e8ff7702d107a2e6dc08c24e451d170a80",
      "parents": [
        "263294f3e1e883b9dcbf0c09a54b644918f7729d"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Jun 16 12:37:57 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jun 16 16:25:33 2009 -0400"
      },
      "message": "ring-buffer: use commit counters for commit pointer accounting\n\nThe ring buffer is made up of three sets of pointers.\n\nThe head page pointer, which points to the next page for the reader to\nget.\n\nThe commit pointer and commit index, which points to the page and index\nof the last committed write respectively.\n\nThe tail pointer and tail index, which points to the page and the index\nof the last reserved data respectively (non committed).\n\nThe commit pointer is only moved forward by the outer most writer.\nIf a nested writer comes in, it will not move the pointer forward.\n\nThe current implementation has a flaw. It assumes that the outer most\nwriter successfully reserved data. There\u0027s a small race window where\nthe outer most writer could find the tail pointer, but a nested\nwriter could come in (via interrupt) and move the tail forward, and\neven the commit forward.\n\nThe outer writer would not realized the commit moved forward and the\naccounting will break.\n\nThis patch changes the design to use counters in the per cpu buffers\nto keep track of commits. The counters are incremented at the start\nof the commit, and decremented at the end. If the end commit counter\nis 1, then it moves the commit pointers. A loop is made to check for\nraces between checking and moving the commit pointers. Only the outer\ncommit should move the pointers anyway.\n\nThe test of knowing if a reserve is equal to the last commit update\nis still needed to know for time keeping. The time code is much less\nracey than the commit updates.\n\nThis change not only solves the mentioned race, but also makes the\ncode simpler.\n\n[ Impact: fix commit race and simplify code ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "263294f3e1e883b9dcbf0c09a54b644918f7729d",
      "tree": "f2faa7ecd0d81becf854a36bdd0150daf291634d",
      "parents": [
        "9086c7b90abbf4ec29543e8f2424e3ecd14e955d"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Jun 16 11:50:18 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jun 16 16:24:39 2009 -0400"
      },
      "message": "ring-buffer: remove unused variable\n\nFix the compiler error:\n\nkernel/trace/ring_buffer.c: In function \u0027rb_move_tail\u0027:\nkernel/trace/ring_buffer.c:1236: warning: unused variable \u0027event\u0027\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "b3fec0fe35a4ff048484f1408385a27695d4273b",
      "tree": "088c23f098421ea681d9976a83aad73d15be1027",
      "parents": [
        "e1f5b94fd0c93c3e27ede88b7ab652d086dc960f",
        "722f2a6c87f34ee0fd0130a8cf45f81e0705594a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 13:09:51 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 13:09:51 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/vegard/kmemcheck\n\n* \u0027for-linus2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/vegard/kmemcheck: (39 commits)\n  signal: fix __send_signal() false positive kmemcheck warning\n  fs: fix do_mount_root() false positive kmemcheck warning\n  fs: introduce __getname_gfp()\n  trace: annotate bitfields in struct ring_buffer_event\n  net: annotate struct sock bitfield\n  c2port: annotate bitfield for kmemcheck\n  net: annotate inet_timewait_sock bitfields\n  ieee1394/csr1212: fix false positive kmemcheck report\n  ieee1394: annotate bitfield\n  net: annotate bitfields in struct inet_sock\n  net: use kmemcheck bitfields API for skbuff\n  kmemcheck: introduce bitfield API\n  kmemcheck: add opcode self-testing at boot\n  x86: unify pte_hidden\n  x86: make _PAGE_HIDDEN conditional\n  kmemcheck: make kconfig accessible for other architectures\n  kmemcheck: enable in the x86 Kconfig\n  kmemcheck: add hooks for the page allocator\n  kmemcheck: add hooks for page- and sg-dma-mappings\n  kmemcheck: don\u0027t track page tables\n  ...\n"
    },
    {
      "commit": "6fd03301d76bc439382710e449f58efbb233df1b",
      "tree": "3c8a3217aed67319683ffc1debccdb5b3245b16c",
      "parents": [
        "cd5232bd6be2d215a800f3d88c287ca791debfbe",
        "e4792aa30f9d33584d7192685ed149cc5fee737f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 12:57:37 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 12:57:37 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6: (64 commits)\n  debugfs: use specified mode to possibly mark files read/write only\n  debugfs: Fix terminology inconsistency of dir name to mount debugfs filesystem.\n  xen: remove driver_data direct access of struct device from more drivers\n  usb: gadget: at91_udc: remove driver_data direct access of struct device\n  uml: remove driver_data direct access of struct device\n  block/ps3: remove driver_data direct access of struct device\n  s390: remove driver_data direct access of struct device\n  parport: remove driver_data direct access of struct device\n  parisc: remove driver_data direct access of struct device\n  of_serial: remove driver_data direct access of struct device\n  mips: remove driver_data direct access of struct device\n  ipmi: remove driver_data direct access of struct device\n  infiniband: ehca: remove driver_data direct access of struct device\n  ibmvscsi: gadget: at91_udc: remove driver_data direct access of struct device\n  hvcs: remove driver_data direct access of struct device\n  xen block: remove driver_data direct access of struct device\n  thermal: remove driver_data direct access of struct device\n  scsi: remove driver_data direct access of struct device\n  pcmcia: remove driver_data direct access of struct device\n  PCIE: remove driver_data direct access of struct device\n  ...\n\nManually fix up trivial conflicts due to different direct driver_data\ndirect access fixups in drivers/block/{ps3disk.c,ps3vram.c}\n"
    },
    {
      "commit": "b231125af7811a2f68c455d3bda95ac170ee4fa6",
      "tree": "adae63748e62d4e956f29c5f873d707874ffe556",
      "parents": [
        "e28d713704117bca0820c732210df6075b09f13b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 11:07:14 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 11:07:14 2009 -0700"
      },
      "message": "printk: add KERN_DEFAULT loglevel to print_modules()\n\nSeveral WARN_ON() messages omit the \u0027\\n\u0027 at the end of the string, which\nis a simple (and understandable) error.  The next line printed after\nthat warning line is usually the current module list, and that printk\ndoes not have a log-level marker - resulting in one long mixed-up line.\n\nAdding this loglevel marker will now avoid this unreadable mess.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e28d713704117bca0820c732210df6075b09f13b",
      "tree": "c2c8b2a40cb5081e8b6368eecc21220ee59903bf",
      "parents": [
        "5fd29d6ccbc98884569d6f3105aeca70858b3e0f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 11:02:28 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 11:02:28 2009 -0700"
      },
      "message": "printk: Add KERN_DEFAULT printk log-level\n\nThis adds a KERN_DEFAULT loglevel marker, for when you cannot decide\nwhich loglevel you want, and just want to keep an existing printk\nwith the default loglevel.\n\nThe difference between having KERN_DEFAULT and having no log-level\nmarker at all is two-fold:\n\n - having the log-level marker will now force a new-line if the\n   previous printout had not added one (perhaps because it forgot,\n   but perhaps because it expected a continuation)\n\n - having a log-level marker is required if you are printing out a\n   message that otherwise itself could perhaps otherwise be mistaken\n   for a log-level.\n\nSigned-of-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5fd29d6ccbc98884569d6f3105aeca70858b3e0f",
      "tree": "93ac507debc6b35e5863116086c57170618099cf",
      "parents": [
        "03347e2592078a90df818670fddf97a33eec70fb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 10:57:02 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 10:57:02 2009 -0700"
      },
      "message": "printk: clean up handling of log-levels and newlines\n\nIt used to be that we would only look at the log-level in a printk()\nafter explicit newlines, which can cause annoying problems when the\nprevious printk() did not end with a \u0027\\n\u0027. In that case, the log-level\nmarker would be just printed out in the middle of the line, and be\nseen as just noise rather than change the logging level.\n\nThis changes things to always look at the log-level in the first\nbytes of the printout. If a log level marker is found, it is always\nused as the log-level. Additionally, if no newline existed, one is\nadded (unless the log-level is the explicit KERN_CONT marker, to\nexplicitly show that it\u0027s a continuation of a previous line).\n\nAcked-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9086c7b90abbf4ec29543e8f2424e3ecd14e955d",
      "tree": "a65b9781b53b5eb2638dd65cf242547c33f0dd04",
      "parents": [
        "c7b0930857e2278f2e7714db6294e94c57f623b0"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Jun 16 11:46:09 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jun 16 13:48:52 2009 -0400"
      },
      "message": "ring-buffer: have benchmark test handle discarded events\n\nWith the addition of commit:\n\n  c7b0930857e2278f2e7714db6294e94c57f623b0\n  ring-buffer: prevent adding write in discarded area\n\nThe ring buffer may now add discarded events when a write passes\nthe end of a buffer page. Before, a discarded event was only added\nwhen the tracer deliberately created one. The ring buffer benchmark\ntest does not handle discarded events when it reads the buffer and\nfails when it encounters one.\n\nAlso fix the increment for large data entries (luckily, the test did\nnot add any yet).\n\n[ Impact: fix false failure of ring buffer self test ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "156f5a7801195fa2ce44aeeb62d6cf8468f3332a",
      "tree": "dd506816ca6f14bb650189aa364eb0a2f51ad5cc",
      "parents": [
        "1b713e00500c6f03317742981674e89a21629399"
      ],
      "author": {
        "name": "GeunSik Lim",
        "email": "leemgs1@gmail.com",
        "time": "Tue Jun 02 15:01:37 2009 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 15 21:30:28 2009 -0700"
      },
      "message": "debugfs: Fix terminology inconsistency of dir name to mount debugfs filesystem.\n\nMany developers use \"/debug/\" or \"/debugfs/\" or \"/sys/kernel/debug/\"\ndirectory name to mount debugfs filesystem for ftrace according to\n./Documentation/tracers/ftrace.txt file.\n\nAnd, three directory names(ex:/debug/, /debugfs/, /sys/kernel/debug/) is\nexisted in kernel source like ftrace, DRM, Wireless, Documentation,\nNetwork[sky2]files to mount debugfs filesystem.\n\ndebugfs means debug filesystem for debugging easy to use by greg kroah\nhartman. \"/sys/kernel/debug/\" name is suitable as directory name\nof debugfs filesystem.\n- debugfs related reference: http://lwn.net/Articles/334546/\n\nFix inconsistency of directory name to mount debugfs filesystem.\n\n* From Steven Rostedt\n  - find_debugfs() and tracing_files() in this patch.\n\nSigned-off-by: GeunSik Lim \u003cgeunsik.lim@samsung.com\u003e\nAcked-by     : Inaky Perez-Gonzalez \u003cinaky@linux.intel.com\u003e\nReviewed-by  : Steven Rostedt \u003crostedt@goodmis.org\u003e\nReviewed-by  : James Smart \u003cjames.smart@emulex.com\u003e\nCC: Jiri Kosina \u003ctrivial@kernel.org\u003e\nCC: David Airlie \u003cairlied@linux.ie\u003e\nCC: Peter Osterlund \u003cpetero2@telia.com\u003e\nCC: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCC: Anil S Keshavamurthy \u003canil.s.keshavamurthy@intel.com\u003e\nCC: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "3959214f971417f4162926ac52ad4cd042958caa",
      "tree": "1e73536b383a2a8337c09c5630871b2f94a8bcfa",
      "parents": [
        "f6ee649f4b191d316a463ce7e514f9d12fa31c01"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Tue Mar 24 15:43:30 2009 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 15 21:30:23 2009 -0700"
      },
      "message": "sched: delayed cleanup of user_struct\n\nDuring bootup performance tracing we see repeated occurrences of\n/sys/kernel/uid/* events for the same uid, leading to a,\nin this case, rather pointless userspace processing for the\nsame uid over and over.\n\nThis is usually caused by tools which change their uid to \"nobody\",\nto run without privileges to read data supplied by untrusted users.\n\nThis change delays the execution of the (already existing) scheduled\nwork, to cleanup the uid after one second, so the allocated and announced\nuid can possibly be re-used by another process.\n\nThis is the current behavior, where almost every invocation of a\nbinary, which changes the uid, creates two events:\n  $ read START \u003c /sys/kernel/uevent_seqnum; \\\n  for i in `seq 100`; do su --shell\u003d/bin/true bin; done; \\\n  read END \u003c /sys/kernel/uevent_seqnum; \\\n  echo $(($END - $START))\n  178\n\nWith the delayed cleanup, we get only two events, and userspace finishes\na bit faster too:\n  $ read START \u003c /sys/kernel/uevent_seqnum; \\\n  for i in `seq 100`; do su --shell\u003d/bin/true bin; done; \\\n  read END \u003c /sys/kernel/uevent_seqnum; \\\n  echo $(($END - $START))\n  1\n\nAcked-by: Dhaval Giani \u003cdhaval@linux.vnet.ibm.com\u003e\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "19035e5b5d1e3127b4925d86f6a77964f91f2c3c",
      "tree": "c9e7e9073970176a5b0970da715cb6430c3c9069",
      "parents": [
        "f9db6e095115f9411b9647bdb9d81fe11f3d8b54",
        "eea08f32adb3f97553d49a4f79a119833036000a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 15 10:06:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 15 10:06:19 2009 -0700"
      },
      "message": "Merge branch \u0027timers-for-linus-migration\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers-for-linus-migration\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  timers: Logic to move non pinned timers\n  timers: /proc/sys sysctl hook to enable timer migration\n  timers: Identifying the existing pinned timers\n  timers: Framework for identifying pinned timers\n  timers: allow deferrable timers for intervals tv2-tv5 to be deferred\n\nFix up conflicts in kernel/sched.c and kernel/timer.c manually\n"
    },
    {
      "commit": "f9db6e095115f9411b9647bdb9d81fe11f3d8b54",
      "tree": "243cdffd9c49dffb909d17ec24614d93f527cc8b",
      "parents": [
        "3f27c0d2a469673e0f1efc8004b6f42428aa5b94",
        "c81fc2c331b8514ad112054cd2d87e6ec132286b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 15 09:58:50 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 15 09:58:50 2009 -0700"
      },
      "message": "Merge branch \u0027timers-for-linus-clockevents\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers-for-linus-clockevents\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  clockevent: export register_device and delta2ns\n  clockevents: tick_broadcast_device can become static\n"
    },
    {
      "commit": "3f27c0d2a469673e0f1efc8004b6f42428aa5b94",
      "tree": "548c975cabdcafcac92992d24410ae0a8334dff5",
      "parents": [
        "9aaa630503f20461bee65ebc4fd87ba8d7a2bd2c",
        "cd6d95d8449b7c9f415f26041e9ae173d387b6bd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 15 09:58:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 15 09:58:33 2009 -0700"
      },
      "message": "Merge branch \u0027timers-for-linus-clocksource\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers-for-linus-clocksource\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  clocksource: prevent selection of low resolution clocksourse also for nohz\u003don\n  clocksource: sanity check sysfs clocksource changes\n"
    },
    {
      "commit": "c7b0930857e2278f2e7714db6294e94c57f623b0",
      "tree": "b43f113aa02063362d2e0f984d29c78afae87a02",
      "parents": [
        "0ac2058f686a19fe8ab25c4f3104fc1580dce7cf"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Jun 11 11:12:00 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jun 15 11:37:19 2009 -0400"
      },
      "message": "ring-buffer: prevent adding write in discarded area\n\nThis a very tight race where an interrupt could come in and not\nhave enough data to put into the end of a buffer page, and that\nit would fail to write and need to go to the next page.\n\nBut if this happened when another writer was about to reserver\ntheir data, and that writer has smaller data to reserve, then\nit could succeed even though the interrupt moved the tail page.\n\nTo pervent that, if we fail to store data, and by subtracting the\namount we reserved we still have room for smaller data, we need\nto fill that space with \"discarded\" data.\n\n[ Impact: prevent race were buffer data may be lost ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "0ac2058f686a19fe8ab25c4f3104fc1580dce7cf",
      "tree": "ecc0aa6f26b5479e833c96d2f6263a30ebd80045",
      "parents": [
        "5e4904cb633177046bee5d26946a7ac918e642fc"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Jun 15 10:59:17 2009 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jun 15 11:37:18 2009 -0400"
      },
      "message": "tracing/filters: strloc should be unsigned short\n\nI forgot to update filter code accordingly in\n\"tracing/events: change the type of __str_loc_item to unsigned short\"\n(commt b0aae68cc5508f3c2fbf728988c954db4c8b8a53)\n\nIt can cause system crash:\n\n # echo 1 \u003e tracing/events/irq/irq_handler_entry/enable\n # echo \u0027name \u003d\u003d eth0\u0027 \u003e tracing/events/irq/irq_handler_entry/filter\n\n[ Impact: fix crash while filtering on __string() field ]\n\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4A35B905.3090500@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "5e4904cb633177046bee5d26946a7ac918e642fc",
      "tree": "9ae10b1c3d707c0c3faffa8a4b337c055222d899",
      "parents": [
        "e4f2d10f479d18198ebafcb5e124cc3dd8b8817a"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Jun 15 10:58:39 2009 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jun 15 11:37:16 2009 -0400"
      },
      "message": "tracing/filters: operand can be negative\n\nThis should be a bug:\n\n # cat format\n name: foo_bar\n ID: 71\n format:\n\t ...\n         field:int bar;  offset:24;      size:4;\n # echo \u0027bar \u003c 0\u0027 \u003e filter\n # echo \u0027bar \u003c -1\u0027 \u003e filter\n bash: echo: write error: Invalid argument\n\n[ Impact: fix to allow negative operand in filer expr ]\n\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4A35B8DF.60400@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "e4f2d10f479d18198ebafcb5e124cc3dd8b8817a",
      "tree": "73d0797b9a4f285891284e0e39ceb328d254ed23",
      "parents": [
        "215368e8e59023d6a0abdda896923018d74fdf7f"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Jun 15 10:57:28 2009 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jun 15 11:37:14 2009 -0400"
      },
      "message": "tracing: replace a GFP_ATOMIC with GFP_KERNEL allocation\n\nAtomic allocation is not needed here.\n\n[ Impact: clean up of memory alloction type ]\n\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4A35B898.2050607@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "215368e8e59023d6a0abdda896923018d74fdf7f",
      "tree": "904bef6f1f3895843c5fbf288fd487713b78ed2c",
      "parents": [
        "78be6914cb5c6d648617c51bb99bf81f28471d89"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Jun 15 10:56:42 2009 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jun 15 11:37:12 2009 -0400"
      },
      "message": "tracing: fix a typo in tracing_cpumask_write()\n\nIt\u0027s tracing_cpumask_new that should be kfree()ed.\n\nThis causes tracing_cpumask to be freed due to the typo:\n\n # echo z \u003e tracing_cpumask\n bash: echo: write error: Invalid argument\n\nAnd subsequent reads/writes to tracing_cpuamsk will access this\nalready-freed tracing_cpumask, thus may lead to crash.\n\n[ Impact: fix leak and crash when writing invalid val to tracing_cpumask ]\n\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4A35B86A.7070608@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "3f237a79ddeea34dda67e9eedece3a22918df75e",
      "tree": "6a7e57e038edda3fd71d05424ec1c9d744ad0cc4",
      "parents": [
        "45e3e1935e2857c54783291107d33323b3ef33c8"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 21:15:30 2009 +0930"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jun 15 11:36:42 2009 -0400"
      },
      "message": "cpumask: use new operators in kernel/trace\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nLKML-Reference: \u003c200906122115.30787.rusty@rustcorp.com.au\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "75f937f24bd9c003dcb9d7d5509f23459f1f6000",
      "tree": "859d5ebe9b47b952d13873d7a2a580012682aeb0",
      "parents": [
        "613d8602292165f86ba1969784fea01a06d55900"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Jun 15 15:05:12 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jun 15 15:57:49 2009 +0200"
      },
      "message": "perf_counter: Fix ctx-\u003emutex vs counter-\u003emutex inversion\n\nSimon triggered a lockdep inversion report about us taking ctx-\u003emutex\nvs counter-\u003emutex in inverse orders. Fix that up.\n\nReported-by: Simon Holm Thøgersen \u003codie@cs.aau.dk\u003e\nTested-by: Simon Holm Thøgersen \u003codie@cs.aau.dk\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "722f2a6c87f34ee0fd0130a8cf45f81e0705594a",
      "tree": "50b054df34d2731eb0ba0cf1a6c27e43e7eed428",
      "parents": [
        "7a0aeb14e18ad59394bd9bbc6e57fb345819e748",
        "45e3e1935e2857c54783291107d33323b3ef33c8"
      ],
      "author": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Mon Jun 15 15:50:49 2009 +0200"
      },
      "committer": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Mon Jun 15 15:50:49 2009 +0200"
      },
      "message": "Merge commit \u0027linus/master\u0027 into HEAD\n\nConflicts:\n\tMAINTAINERS\n\nSigned-off-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\n"
    },
    {
      "commit": "7a0aeb14e18ad59394bd9bbc6e57fb345819e748",
      "tree": "04c7229103e1009ad8886ed663e047abe58805fb",
      "parents": [
        "3b5c760efcddf1ebdd39a2035b554e96febd7466"
      ],
      "author": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Sat May 16 11:28:33 2009 +0200"
      },
      "committer": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Mon Jun 15 15:49:43 2009 +0200"
      },
      "message": "signal: fix __send_signal() false positive kmemcheck warning\n\nThis false positive is due to field padding in struct sigqueue. When\nthis dynamically allocated structure is copied to the stack (in arch-\nspecific delivery code), kmemcheck sees a read from the padding, which\nis, naturally, uninitialized.\n\nHide the false positive using the __GFP_NOTRACK_FALSE_POSITIVE flag.\nAlso made the rlimit override code a bit clearer by introducing a new\nvariable.\n\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\n"
    },
    {
      "commit": "1744a21d57d9c60136461adb6afa85e51b3e94d9",
      "tree": "62fdc4342e21835dc7fd8572b2ed1628324a0c12",
      "parents": [
        "a98b65a3ad71e702e760bc63f57684301628e837"
      ],
      "author": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Sat Feb 28 08:29:44 2009 +0100"
      },
      "committer": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Mon Jun 15 15:49:37 2009 +0200"
      },
      "message": "trace: annotate bitfields in struct ring_buffer_event\n\nThis gets rid of a heap of false-positive warnings from the tracer\ncode due to the use of bitfields.\n\n[rebased for mainline inclusion]\nSigned-off-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\n"
    },
    {
      "commit": "2dff440525f8faba8836e9f05297b76f23b4af30",
      "tree": "9f15e1dc2da06dba97cd939e41f34342caf05097",
      "parents": [
        "f85612967c93b67b10dd240e3e8bf8a0eee9def7"
      ],
      "author": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Sat May 31 15:56:17 2008 +0200"
      },
      "committer": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Mon Jun 15 12:40:03 2009 +0200"
      },
      "message": "kmemcheck: add mm functions\n\nWith kmemcheck enabled, the slab allocator needs to do this:\n\n1. Tell kmemcheck to allocate the shadow memory which stores the status of\n   each byte in the allocation proper, e.g. whether it is initialized or\n   uninitialized.\n2. Tell kmemcheck which parts of memory that should be marked uninitialized.\n   There are actually a few more states, such as \"not yet allocated\" and\n   \"recently freed\".\n\nIf a slab cache is set up using the SLAB_NOTRACK flag, it will never return\nmemory that can take page faults because of kmemcheck.\n\nIf a slab cache is NOT set up using the SLAB_NOTRACK flag, callers can still\nrequest memory with the __GFP_NOTRACK flag. This does not prevent the page\nfaults from occuring, however, but marks the object in question as being\ninitialized so that no warnings will ever be produced for this object.\n\nIn addition to (and in contrast to) __GFP_NOTRACK, the\n__GFP_NOTRACK_FALSE_POSITIVE flag indicates that the allocation should\nnot be tracked _because_ it would produce a false positive. Their values\nare identical, but need not be so in the future (for example, we could now\nenable/disable false positives with a config option).\n\nParts of this patch were contributed by Pekka Enberg but merged for\natomicity.\n\nSigned-off-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n\n[rebased for mainline inclusion]\nSigned-off-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\n"
    }
  ],
  "next": "45e3e1935e2857c54783291107d33323b3ef33c8"
}
