)]}'
{
  "log": [
    {
      "commit": "58e8eedf18577c7eac722d5d1f190507ea263d1b",
      "tree": "6a44f69cf8711a4853fc4e921e77cc64784fa9f9",
      "parents": [
        "f17a5194859a82afe4164e938b92035b86c55794"
      ],
      "author": {
        "name": "Yoshihiro YUNOMAE",
        "email": "yoshihiro.yunomae.ez@hitachi.com",
        "time": "Tue Apr 23 10:32:39 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jun 11 13:58:46 2013 -0400"
      },
      "message": "tracing: Fix outputting formats of x86-tsc and counter when use trace_clock\n\nOutputting formats of x86-tsc and counter should be a raw format, but after\napplying the patch(2b6080f28c7cc3efc8625ab71495aae89aeb63a0), the format was\nchanged to nanosec. This is because the global variable trace_clock_id was used.\nWhen we use multiple buffers, clock_id of each sub-buffer should be used. Then,\nthis patch uses tr-\u003eclock_id instead of the global variable trace_clock_id.\n\n[ Basically, this fixes a regression where the multibuffer code changed the\n  trace_clock file to update tr-\u003eclock_id but the traces still use the old\n  global trace_clock_id variable, negating the file\u0027s effect. The global\n  trace_clock_id variable is obsolete and removed. - SR ]\n\nLink: http://lkml.kernel.org/r/20130423013239.22334.7394.stgit@yunodevel\n\nSigned-off-by: Yoshihiro YUNOMAE \u003cyoshihiro.yunomae.ez@hitachi.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "f17a5194859a82afe4164e938b92035b86c55794",
      "tree": "d900ce9c7a19c37bb2840942c495da81ea748114",
      "parents": [
        "0184d50f9fd17658c232d6ee6d465a87f989d706"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 30 21:10:37 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jun 06 12:35:30 2013 -0400"
      },
      "message": "tracing: Use current_uid() for critical time tracing\n\nThe irqsoff tracer records the max time that interrupts are disabled.\nThere are hooks in the assembly code that calls back into the tracer when\ninterrupts are disabled or enabled.\n\nWhen they are enabled, the tracer checks if the amount of time they\nwere disabled is larger than the previous recorded max interrupts off\ntime. If it is, it creates a snapshot of the currently running trace\nto store where the last largest interrupts off time was held and how\nit happened.\n\nDuring testing, this RCU lockdep dump appeared:\n\n[ 1257.829021] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ 1257.829021] [ INFO: suspicious RCU usage. ]\n[ 1257.829021] 3.10.0-rc1-test+ #171 Tainted: G        W\n[ 1257.829021] -------------------------------\n[ 1257.829021] /home/rostedt/work/git/linux-trace.git/include/linux/rcupdate.h:780 rcu_read_lock() used illegally while idle!\n[ 1257.829021]\n[ 1257.829021] other info that might help us debug this:\n[ 1257.829021]\n[ 1257.829021]\n[ 1257.829021] RCU used illegally from idle CPU!\n[ 1257.829021] rcu_scheduler_active \u003d 1, debug_locks \u003d 0\n[ 1257.829021] RCU used illegally from extended quiescent state!\n[ 1257.829021] 2 locks held by trace-cmd/4831:\n[ 1257.829021]  #0:  (max_trace_lock){......}, at: [\u003cffffffff810e2b77\u003e] stop_critical_timing+0x1a3/0x209\n[ 1257.829021]  #1:  (rcu_read_lock){.+.+..}, at: [\u003cffffffff810dae5a\u003e] __update_max_tr+0x88/0x1ee\n[ 1257.829021]\n[ 1257.829021] stack backtrace:\n[ 1257.829021] CPU: 3 PID: 4831 Comm: trace-cmd Tainted: G        W    3.10.0-rc1-test+ #171\n[ 1257.829021] Hardware name: To Be Filled By O.E.M. To Be Filled By O.E.M./To be filled by O.E.M., BIOS SDBLI944.86P 05/08/2007\n[ 1257.829021]  0000000000000001 ffff880065f49da8 ffffffff8153dd2b ffff880065f49dd8\n[ 1257.829021]  ffffffff81092a00 ffff88006bd78680 ffff88007add7500 0000000000000003\n[ 1257.829021]  ffff88006bd78680 ffff880065f49e18 ffffffff810daebf ffffffff810dae5a\n[ 1257.829021] Call Trace:\n[ 1257.829021]  [\u003cffffffff8153dd2b\u003e] dump_stack+0x19/0x1b\n[ 1257.829021]  [\u003cffffffff81092a00\u003e] lockdep_rcu_suspicious+0x109/0x112\n[ 1257.829021]  [\u003cffffffff810daebf\u003e] __update_max_tr+0xed/0x1ee\n[ 1257.829021]  [\u003cffffffff810dae5a\u003e] ? __update_max_tr+0x88/0x1ee\n[ 1257.829021]  [\u003cffffffff811002b9\u003e] ? user_enter+0xfd/0x107\n[ 1257.829021]  [\u003cffffffff810dbf85\u003e] update_max_tr_single+0x11d/0x12d\n[ 1257.829021]  [\u003cffffffff811002b9\u003e] ? user_enter+0xfd/0x107\n[ 1257.829021]  [\u003cffffffff810e2b15\u003e] stop_critical_timing+0x141/0x209\n[ 1257.829021]  [\u003cffffffff8109569a\u003e] ? trace_hardirqs_on+0xd/0xf\n[ 1257.829021]  [\u003cffffffff811002b9\u003e] ? user_enter+0xfd/0x107\n[ 1257.829021]  [\u003cffffffff810e3057\u003e] time_hardirqs_on+0x2a/0x2f\n[ 1257.829021]  [\u003cffffffff811002b9\u003e] ? user_enter+0xfd/0x107\n[ 1257.829021]  [\u003cffffffff8109550c\u003e] trace_hardirqs_on_caller+0x16/0x197\n[ 1257.829021]  [\u003cffffffff8109569a\u003e] trace_hardirqs_on+0xd/0xf\n[ 1257.829021]  [\u003cffffffff811002b9\u003e] user_enter+0xfd/0x107\n[ 1257.829021]  [\u003cffffffff810029b4\u003e] do_notify_resume+0x92/0x97\n[ 1257.829021]  [\u003cffffffff8154bdca\u003e] int_signal+0x12/0x17\n\nWhat happened was entering into the user code, the interrupts were enabled\nand a max interrupts off was recorded. The trace buffer was saved along with\nvarious information about the task: comm, pid, uid, priority, etc.\n\nThe uid is recorded with task_uid(tsk). But this is a macro that uses rcu_read_lock()\nto retrieve the data, and this happened to happen where RCU is blind (user_enter).\n\nAs only the preempt and irqs off tracers can have this happen, and they both\nonly have the tsk \u003d\u003d current, if tsk \u003d\u003d current, use current_uid() instead of\ntask_uid(), as current_uid() does not use RCU as only current can change its uid.\n\nThis fixes the RCU suspicious splat.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "0184d50f9fd17658c232d6ee6d465a87f989d706",
      "tree": "fdf81c6309458bf0a2a1af17115c42a2270889a9",
      "parents": [
        "1bb539ca36e21c2f4fce0865e11df384bc7b7656"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Wed May 29 15:56:49 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed May 29 16:00:03 2013 -0400"
      },
      "message": "tracing: Fix bad parameter passed in branch selftest\n\nThe branch selftest calls trace_test_buffer(), but with the new code\nit expects the first parameter to be a pointer to a struct trace_buffer.\nAll self tests were changed but the branch selftest was missed.\n\nThis caused either a crash or failed test when the branch selftest was\nenabled.\n\nLink: http://lkml.kernel.org/r/20130529141333.GA24064@localhost\n\nReported-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "1bb539ca36e21c2f4fce0865e11df384bc7b7656",
      "tree": "dc428dcb96afce5b34e671d0c4c08975807c0c4f",
      "parents": [
        "12bcbe66d7b3cc9f9f86cd02f925666eaa3c2107"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue May 28 14:38:43 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue May 28 22:48:00 2013 -0400"
      },
      "message": "ftrace: Use the rcu _notrace variants for rcu_dereference_raw() and friends\n\nAs rcu_dereference_raw() under RCU debug config options can add quite a\nbit of checks, and that tracing uses rcu_dereference_raw(), these checks\nhappen with the function tracer. The function tracer also happens to trace\nthese debug checks too. This added overhead can livelock the system.\n\nHave the function tracer use the new RCU _notrace equivalents that do\nnot do the debug checks for RCU.\n\nLink: http://lkml.kernel.org/r/20130528184209.467603904@goodmis.org\n\nAcked-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "6721cb60022629ae76365551f05d9658b8d14c55",
      "tree": "00d16ebb628161995b02939460d3f7b8d0f5ac53",
      "parents": [
        "ca1643186d3dce6171d8f171e516b02496360a9e"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 23 14:21:36 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@rostedt.homelinux.com",
        "time": "Tue May 28 10:53:20 2013 -0400"
      },
      "message": "ring-buffer: Do not poll non allocated cpu buffers\n\nThe tracing infrastructure sets up for possible CPUs, but it uses\nthe ring buffer polling, it is possible to call the ring buffer\npolling code with a CPU that hasn\u0027t been allocated. This will cause\na kernel oops when it access a ring buffer cpu buffer that is part\nof the possible cpus but hasn\u0027t been allocated yet as the CPU has never\nbeen online.\n\nReported-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\nTested-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "ca1643186d3dce6171d8f171e516b02496360a9e",
      "tree": "35e8b4bacd61a022ca8d3259cc01606b924ab109",
      "parents": [
        "6ed0106667d76589cb648c27edb4f4ffbf9d59ca"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 23 11:51:10 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 23 11:57:25 2013 -0400"
      },
      "message": "tracing: Fix crash when ftrace\u003dnop on the kernel command line\n\nIf ftrace\u003d\u003ctracer\u003e is on the kernel command line, when that tracer is\nregistered, it will be initiated by tracing_set_tracer() to execute that\ntracer.\n\nThe nop tracer is just a stub tracer that is used to have no tracer\nenabled. It is assigned at early bootup as it is the default tracer.\n\nBut if ftrace\u003dnop is on the kernel command line, the registering of the\nnop tracer will call tracing_set_tracer() which will try to execute\nthe nop tracer. But it expects tr-\u003ecurrent_trace to be assigned something\nas it usually is assigned to the nop tracer. As it hasn\u0027t been assigned\nto anything yet, it causes the system to crash.\n\nThe simple fix is to move the tr-\u003ecurrent_trace \u003d nop before registering\nthe nop tracer. The functionality is still the same as the nop tracer\ndoesn\u0027t do anything anyway.\n\nReported-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "6ed0106667d76589cb648c27edb4f4ffbf9d59ca",
      "tree": "703a6db004b022ddebdfaf186c66e5bfabc03e5f",
      "parents": [
        "b62fdd97fcae17e483b005bafd13fadbd9840672"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "masami.hiramatsu.pt@hitachi.com",
        "time": "Thu May 16 20:48:49 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 16 11:01:16 2013 -0400"
      },
      "message": "tracing: Return -EBUSY when event_enable_func() fails to get module\n\nSince try_module_get() returns false( \u003d 0) when it fails to\npindown a module, event_enable_func() returns 0 which means\n\"succeed\". This can cause a kernel panic when the entry\nis removed, because the event is already released.\n\nThis fixes the bug by returning -EBUSY, because the reason\nwhy it fails is that the module is being removed at that time.\n\nLink: http://lkml.kernel.org/r/20130516114848.13508.97899.stgit@mhiramat-M0-7522\n\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Tom Zanussi \u003ctom.zanussi@intel.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nSigned-off-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "b62fdd97fcae17e483b005bafd13fadbd9840672",
      "tree": "59604faf8121c8007154c6df62c572e70e8f0925",
      "parents": [
        "3d1fc7b0880c4db612a3d3211a808659e28af588"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "masami.hiramatsu.pt@hitachi.com",
        "time": "Mon May 13 20:58:39 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed May 15 13:50:24 2013 -0400"
      },
      "message": "tracing/kprobes: Make print_*probe_event static\n\nAccording to sparse warning, print_*probe_event static because\nthose functions are not directly called from outside.\n\nLink: http://lkml.kernel.org/r/20130513115839.6545.83067.stgit@mhiramat-M0-7522\n\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Tom Zanussi \u003ctom.zanussi@intel.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nSigned-off-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "3d1fc7b0880c4db612a3d3211a808659e28af588",
      "tree": "12e965b6e43ec621325a0c142996c56a341bd637",
      "parents": [
        "c02c7e65d9b13670e34bc523744cf4f6e99c198a"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "masami.hiramatsu.pt@hitachi.com",
        "time": "Mon May 13 20:58:37 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed May 15 13:50:23 2013 -0400"
      },
      "message": "tracing/kprobes: Fix a sparse warning for incorrect type in assignment\n\nFix a sparse warning about the rcu operated pointer is\ndefined without __rcu address space.\n\nLink: http://lkml.kernel.org/r/20130513115837.6545.23322.stgit@mhiramat-M0-7522\n\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Tom Zanussi \u003ctom.zanussi@intel.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nSigned-off-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "c02c7e65d9b13670e34bc523744cf4f6e99c198a",
      "tree": "186f0a0e169e83b9c7d899ace2e028b7293459c5",
      "parents": [
        "60705c89460fdc7227f2d153b68b3f34814738a4"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "masami.hiramatsu.pt@hitachi.com",
        "time": "Mon May 13 20:58:34 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed May 15 13:50:22 2013 -0400"
      },
      "message": "tracing/kprobes: Use rcu_dereference_raw for tp-\u003efiles\n\nUse rcu_dereference_raw() for accessing tp-\u003efiles. Because the\nwrite-side uses rcu_assign_pointer() for memory barrier,\nthe read-side also has to use rcu_dereference_raw() with\nread memory barrier.\n\nLink: http://lkml.kernel.org/r/20130513115834.6545.17022.stgit@mhiramat-M0-7522\n\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Tom Zanussi \u003ctom.zanussi@intel.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nSigned-off-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "60705c89460fdc7227f2d153b68b3f34814738a4",
      "tree": "e4eddb24dc8ecd3edeaf3b3342539c0e21165437",
      "parents": [
        "f722406faae2d073cc1d01063d1123c35425939e"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Tue May 14 15:40:48 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed May 15 13:49:18 2013 -0400"
      },
      "message": "tracing: Fix leaks of filter preds\n\nSpecial preds are created when folding a series of preds that\ncan be done in serial. These are allocated in an ops field of\nthe pred structure. But they were never freed, causing memory\nleaks.\n\nThis was discovered using the kmemleak checker:\n\nunreferenced object 0xffff8800797fd5e0 (size 32):\n  comm \"swapper/0\", pid 1, jiffies 4294690605 (age 104.608s)\n  hex dump (first 32 bytes):\n    00 00 01 00 03 00 05 00 07 00 09 00 0b 00 0d 00  ................\n    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................\n  backtrace:\n    [\u003cffffffff814b52af\u003e] kmemleak_alloc+0x73/0x98\n    [\u003cffffffff8111ff84\u003e] kmemleak_alloc_recursive.constprop.42+0x16/0x18\n    [\u003cffffffff81120e68\u003e] __kmalloc+0xd7/0x125\n    [\u003cffffffff810d47eb\u003e] kcalloc.constprop.24+0x2d/0x2f\n    [\u003cffffffff810d4896\u003e] fold_pred_tree_cb+0xa9/0xf4\n    [\u003cffffffff810d3781\u003e] walk_pred_tree+0x47/0xcc\n    [\u003cffffffff810d5030\u003e] replace_preds.isra.20+0x6f8/0x72f\n    [\u003cffffffff810d50b5\u003e] create_filter+0x4e/0x8b\n    [\u003cffffffff81b1c30d\u003e] ftrace_test_event_filter+0x5a/0x155\n    [\u003cffffffff8100028d\u003e] do_one_initcall+0xa0/0x137\n    [\u003cffffffff81afbedf\u003e] kernel_init_freeable+0x14d/0x1dc\n    [\u003cffffffff814b24b7\u003e] kernel_init+0xe/0xdb\n    [\u003cffffffff814d539c\u003e] ret_from_fork+0x7c/0xb0\n    [\u003cffffffffffffffff\u003e] 0xffffffffffffffff\n\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nCc: stable@vger.kernel.org # 2.6.39+\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "26b840ae5d5140fe7b2226098826c449e63de072",
      "tree": "0f4a6f1575a7f0e49f63da7920258e1e89359036",
      "parents": [
        "607eeb0b836aa24a6972a460a213c4f87902d403",
        "b8820084f2130b3dcfb09c78ac16cdd2194a345b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 11 17:04:59 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 11 17:04:59 2013 -0700"
      },
      "message": "Merge tag \u0027trace-fixes-v3.10\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace\n\nPull tracing/kprobes update from Steven Rostedt:\n \"The majority of these changes are from Masami Hiramatsu bringing\n  kprobes up to par with the latest changes to ftrace (multi buffering\n  and the new function probes).\n\n  He also discovered and fixed some bugs in doing so.  When pulling in\n  his patches, I also found a few minor bugs as well and fixed them.\n\n  This also includes a compile fix for some archs that select the ring\n  buffer but not tracing.\n\n  I based this off of the last patch you took from me that fixed the\n  merge conflict error, as that was the commit that had all the changes\n  I needed for this set of changes.\"\n\n* tag \u0027trace-fixes-v3.10\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:\n  tracing/kprobes: Support soft-mode disabling\n  tracing/kprobes: Support ftrace_event_file base multibuffer\n  tracing/kprobes: Pass trace_probe directly from dispatcher\n  tracing/kprobes: Increment probe hit-count even if it is used by perf\n  tracing/kprobes: Use bool for retprobe checker\n  ftrace: Fix function probe when more than one probe is added\n  ftrace: Fix the output of enabled_functions debug file\n  ftrace: Fix locking in register_ftrace_function_probe()\n  tracing: Add helper function trace_create_new_event() to remove duplicate code\n  tracing: Modify soft-mode only if there\u0027s no other referrer\n  tracing: Indicate enabled soft-mode in enable file\n  tracing/kprobes: Fix to increment return event probe hit-count\n  ftrace: Cleanup regex_lock and ftrace_lock around hash updating\n  ftrace, kprobes: Fix a deadlock on ftrace_regex_lock\n  ftrace: Have ftrace_regex_write() return either read or error\n  tracing: Return error if register_ftrace_function_probe() fails for event_enable_func()\n  tracing: Don\u0027t succeed if event_enable_func did not register anything\n  ring-buffer: Select IRQ_WORK\n"
    },
    {
      "commit": "b8820084f2130b3dcfb09c78ac16cdd2194a345b",
      "tree": "5cfc6d47197adcbebff40c42fc17fea8d6246887",
      "parents": [
        "41a7dd420c57323391d58b553318c1fad8e7ebc2"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "masami.hiramatsu.pt@hitachi.com",
        "time": "Thu May 09 14:44:54 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 09 20:22:16 2013 -0400"
      },
      "message": "tracing/kprobes: Support soft-mode disabling\n\nSupport soft-mode disabling on kprobe-based dynamic events.\nSoft-disabling is just ignoring recording if the soft disabled\nflag is set.\n\nLink: http://lkml.kernel.org/r/20130509054454.30398.7237.stgit@mhiramat-M0-7522\n\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Tom Zanussi \u003ctom.zanussi@intel.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nSigned-off-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "41a7dd420c57323391d58b553318c1fad8e7ebc2",
      "tree": "5e1d64afa7395335381203d64f2ce91b09bd0f9b",
      "parents": [
        "2b106aabe6c566ba19c352f22683381e1ea41326"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "masami.hiramatsu.pt@hitachi.com",
        "time": "Thu May 09 14:44:49 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 09 20:21:47 2013 -0400"
      },
      "message": "tracing/kprobes: Support ftrace_event_file base multibuffer\n\nSupport multi-buffer on kprobe-based dynamic events by\nusing ftrace_event_file.\n\nLink: http://lkml.kernel.org/r/20130509054449.30398.88343.stgit@mhiramat-M0-7522\n\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Tom Zanussi \u003ctom.zanussi@intel.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nSigned-off-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "2b106aabe6c566ba19c352f22683381e1ea41326",
      "tree": "b97934b7082be136b32e84cd5eb22d2296168878",
      "parents": [
        "48182bd2261766b810e4e4269a23236c1ace63fb"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "masami.hiramatsu.pt@hitachi.com",
        "time": "Thu May 09 14:44:41 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 09 20:19:48 2013 -0400"
      },
      "message": "tracing/kprobes: Pass trace_probe directly from dispatcher\n\nPass the pointer of struct trace_probe directly from probe\ndispatcher to handlers. This removes redundant container_of\nmacro uses. Same thing has already done in trace_uprobe.\n\nLink: http://lkml.kernel.org/r/20130509054441.30398.69112.stgit@mhiramat-M0-7522\n\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Tom Zanussi \u003ctom.zanussi@intel.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nSigned-off-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "48182bd2261766b810e4e4269a23236c1ace63fb",
      "tree": "dabbc38dbf312f99abc1288d8a92d37fea4260e9",
      "parents": [
        "db02038f4e6a776fd3a0bb71242be37ff378ce86"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "masami.hiramatsu.pt@hitachi.com",
        "time": "Thu May 09 14:44:36 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 09 20:18:44 2013 -0400"
      },
      "message": "tracing/kprobes: Increment probe hit-count even if it is used by perf\n\nIncrement probe hit-count for profiling even if it is used\nby perf tool. Same thing has already done in trace_uprobe.\n\nLink: http://lkml.kernel.org/r/20130509054436.30398.21133.stgit@mhiramat-M0-7522\n\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Tom Zanussi \u003ctom.zanussi@intel.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nSigned-off-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "db02038f4e6a776fd3a0bb71242be37ff378ce86",
      "tree": "e40bd40ae205bf21e84835800006f23992c5cbeb",
      "parents": [
        "19dd603e45199d93d61e9853c596d098e04e5d66"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "masami.hiramatsu.pt@hitachi.com",
        "time": "Thu May 09 14:44:32 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 09 20:17:35 2013 -0400"
      },
      "message": "tracing/kprobes: Use bool for retprobe checker\n\nUse bool instead of int for kretprobe checker.\n\nLink: http://lkml.kernel.org/r/20130509054431.30398.38561.stgit@mhiramat-M0-7522\n\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Tom Zanussi \u003ctom.zanussi@intel.com\u003e\nSigned-off-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "19dd603e45199d93d61e9853c596d098e04e5d66",
      "tree": "f749edd09d9eeb4c4c989936677e8f2bbdd95dc0",
      "parents": [
        "23ea9c4dda129fe1711f9fbda03c7a9c91cf1322"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 09 19:37:36 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 09 20:16:27 2013 -0400"
      },
      "message": "ftrace: Fix function probe when more than one probe is added\n\nWhen the first function probe is added and the function tracer\nis updated the functions are modified to call the probe.\nBut when a second function is added, it updates the function\nrecords to have the second function also update, but it fails\nto update the actual function itself.\n\nThis prevents the second (or third or forth and so on) probes\nfrom having their functions called.\n\n  # echo vfs_symlink:enable_event:sched:sched_switch \u003e set_ftrace_filter\n  # echo vfs_unlink:enable_event:sched:sched_switch \u003e set_ftrace_filter\n  # cat trace\n # tracer: nop\n #\n # entries-in-buffer/entries-written: 0/0   #P:4\n #\n #                              _-----\u003d\u003e irqs-off\n #                             / _----\u003d\u003e need-resched\n #                            | / _---\u003d\u003e hardirq/softirq\n #                            || / _--\u003d\u003e preempt-depth\n #                            ||| /     delay\n #           TASK-PID   CPU#  ||||    TIMESTAMP  FUNCTION\n #              | |       |   ||||       |         |\n  # touch /tmp/a\n  # rm /tmp/a\n  # cat trace\n # tracer: nop\n #\n # entries-in-buffer/entries-written: 0/0   #P:4\n #\n #                              _-----\u003d\u003e irqs-off\n #                             / _----\u003d\u003e need-resched\n #                            | / _---\u003d\u003e hardirq/softirq\n #                            || / _--\u003d\u003e preempt-depth\n #                            ||| /     delay\n #           TASK-PID   CPU#  ||||    TIMESTAMP  FUNCTION\n #              | |       |   ||||       |         |\n  # ln -s /tmp/a\n  # cat trace\n # tracer: nop\n #\n # entries-in-buffer/entries-written: 414/414   #P:4\n #\n #                              _-----\u003d\u003e irqs-off\n #                             / _----\u003d\u003e need-resched\n #                            | / _---\u003d\u003e hardirq/softirq\n #                            || / _--\u003d\u003e preempt-depth\n #                            ||| /     delay\n #           TASK-PID   CPU#  ||||    TIMESTAMP  FUNCTION\n #              | |       |   ||||       |         |\n           \u003cidle\u003e-0     [000] d..3  2847.923031: sched_switch: prev_comm\u003dswapper/0 prev_pid\u003d0 prev_prio\u003d120 prev_state\u003dR \u003d\u003d\u003e next_comm\u003dbash next_pid\u003d2786 next_prio\u003d120\n            \u003c...\u003e-3114  [001] d..4  2847.923035: sched_switch: prev_comm\u003dln prev_pid\u003d3114 prev_prio\u003d120 prev_state\u003dx \u003d\u003d\u003e next_comm\u003dswapper/1 next_pid\u003d0 next_prio\u003d120\n             bash-2786  [000] d..3  2847.923535: sched_switch: prev_comm\u003dbash prev_pid\u003d2786 prev_prio\u003d120 prev_state\u003dS \u003d\u003d\u003e next_comm\u003dkworker/0:1 next_pid\u003d34 next_prio\u003d120\n      kworker/0:1-34    [000] d..3  2847.923552: sched_switch: prev_comm\u003dkworker/0:1 prev_pid\u003d34 prev_prio\u003d120 prev_state\u003dS \u003d\u003d\u003e next_comm\u003dswapper/0 next_pid\u003d0 next_prio\u003d120\n           \u003cidle\u003e-0     [002] d..3  2847.923554: sched_switch: prev_comm\u003dswapper/2 prev_pid\u003d0 prev_prio\u003d120 prev_state\u003dR \u003d\u003d\u003e next_comm\u003dsshd next_pid\u003d2783 next_prio\u003d120\n             sshd-2783  [002] d..3  2847.923660: sched_switch: prev_comm\u003dsshd prev_pid\u003d2783 prev_prio\u003d120 prev_state\u003dS \u003d\u003d\u003e next_comm\u003dswapper/2 next_pid\u003d0 next_prio\u003d120\n\nStill need to update the functions even though the probe itself\ndoes not need to be registered again when added a new probe.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "23ea9c4dda129fe1711f9fbda03c7a9c91cf1322",
      "tree": "8924f6fd2399654393d0b41352d40bd07037c470",
      "parents": [
        "5ae0bf5972b66d35e5674e1b7d855b1e111a68ae"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 09 19:31:48 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 09 20:16:16 2013 -0400"
      },
      "message": "ftrace: Fix the output of enabled_functions debug file\n\nThe enabled_functions debugfs file was created to be able to see\nwhat functions have been modified from nops to calling a tracer.\n\nThe current method uses the counter in the function record.\nAs when a ftrace_ops is registered to a function, its count\nincreases. But that doesn\u0027t mean that the function is actively\nbeing traced. /proc/sys/kernel/ftrace_enabled can be set to zero\nwhich would disable it, as well as something can go wrong and\nwe can think its enabled when only the counter is set.\n\nThe record\u0027s FTRACE_FL_ENABLED flag is set or cleared when its\nfunction is modified. That is a much more accurate way of knowing\nwhat function is enabled or not.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "5ae0bf5972b66d35e5674e1b7d855b1e111a68ae",
      "tree": "6383ef4d7fd63d6da285f3908c6f3c14028715a0",
      "parents": [
        "da511bf33e47ea1f33f4b672f7da166d2a1b8a91"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 09 18:20:37 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 09 20:15:30 2013 -0400"
      },
      "message": "ftrace: Fix locking in register_ftrace_function_probe()\n\nThe iteration of the ftrace function list and the call to\nftrace_match_record() need to be protected by the ftrace_lock.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "da511bf33e47ea1f33f4b672f7da166d2a1b8a91",
      "tree": "3e514023cb9fd7f91c54e0b952ee5c47b76b945a",
      "parents": [
        "1cf4c0732db3cd3c49cadbc60ff6bda08604e6fa"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 09 15:00:07 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 09 20:14:49 2013 -0400"
      },
      "message": "tracing: Add helper function trace_create_new_event() to remove duplicate code\n\nBoth __trace_add_new_event() and __trace_early_add_new_event() do\nbasically the same thing, except that __trace_add_new_event() does\na little more.\n\nInstead of having duplicate code between the two functions, add\na helper function trace_create_new_event() that both can use.\nThis will help against having bugs fixed in one function but not\nthe other.\n\nCc: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "1cf4c0732db3cd3c49cadbc60ff6bda08604e6fa",
      "tree": "74133737a3ecea18847788c10fae7bb474f1aaa8",
      "parents": [
        "30052170dcc256c18a43fb3e76577a67394543f8"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "masami.hiramatsu.pt@hitachi.com",
        "time": "Thu May 09 14:44:29 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 09 20:14:25 2013 -0400"
      },
      "message": "tracing: Modify soft-mode only if there\u0027s no other referrer\n\nModify soft-mode flag only if no other soft-mode referrer\n(currently only the ftrace triggers) by using a reference\ncounter in each ftrace_event_file.\n\nWithout this fix, adding and removing several different\nenable/disable_event triggers on the same event clear\nsoft-mode bit from the ftrace_event_file. This also\nhappens with a typo of glob on setting triggers.\n\ne.g.\n\n # echo vfs_symlink:enable_event:net:netif_rx \u003e set_ftrace_filter\n # cat events/net/netif_rx/enable\n 0*\n # echo typo_func:enable_event:net:netif_rx \u003e set_ftrace_filter\n # cat events/net/netif_rx/enable\n 0\n # cat set_ftrace_filter\n #### all functions enabled ####\n vfs_symlink:enable_event:net:netif_rx:unlimited\n\nAs above, we still have a trigger, but soft-mode is gone.\n\nLink: http://lkml.kernel.org/r/20130509054429.30398.7464.stgit@mhiramat-M0-7522\n\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: David Sharp \u003cdhsharp@google.com\u003e\nCc: Hiraku Toyooka \u003chiraku.toyooka.gu@hitachi.com\u003e\nCc: Tom Zanussi \u003ctom.zanussi@intel.com\u003e\nSigned-off-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "30052170dcc256c18a43fb3e76577a67394543f8",
      "tree": "6eb0d5d7c436f14063d8b4a7c3b72397107967f5",
      "parents": [
        "cce2c8f26704529f592fc124c7c6ad399940dc5d"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "masami.hiramatsu.pt@hitachi.com",
        "time": "Thu May 09 14:44:26 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 09 20:14:07 2013 -0400"
      },
      "message": "tracing: Indicate enabled soft-mode in enable file\n\nIndicate enabled soft-mode event as \"1*\" in \"enable\" file\nfor each event, because it can be soft-disabled when disable_event\ntrigger is hit.\n\nLink: http://lkml.kernel.org/r/20130509054426.30398.28202.stgit@mhiramat-M0-7522\n\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Tom Zanussi \u003ctom.zanussi@intel.com\u003e\nSigned-off-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "cce2c8f26704529f592fc124c7c6ad399940dc5d",
      "tree": "a8c2479f819da73358358e0c39308accb8402817",
      "parents": [
        "3f2367ba7cbf13ec0f3f1e93b833a7eacd1ab4b8"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "masami.hiramatsu.pt@hitachi.com",
        "time": "Thu May 09 14:44:24 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 09 20:13:51 2013 -0400"
      },
      "message": "tracing/kprobes: Fix to increment return event probe hit-count\n\nFix to increment probe hit-count for function return event.\n\nLink: http://lkml.kernel.org/r/20130509054424.30398.34058.stgit@mhiramat-M0-7522\n\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Tom Zanussi \u003ctom.zanussi@intel.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nSigned-off-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "3f2367ba7cbf13ec0f3f1e93b833a7eacd1ab4b8",
      "tree": "81bac89b0b20458cb8505a3bdef4b9189ff4057e",
      "parents": [
        "f04f24fb7e48d446bd89a01c6056571f25972511"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "masami.hiramatsu.pt@hitachi.com",
        "time": "Thu May 09 14:44:21 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 09 20:11:48 2013 -0400"
      },
      "message": "ftrace: Cleanup regex_lock and ftrace_lock around hash updating\n\nCleanup regex_lock and ftrace_lock locking points around\nftrace_ops hash update code.\n\nThe new rule is that regex_lock protects ops-\u003e*_hash\nread-update-write code for each ftrace_ops. Usually,\nhash update is done by following sequence.\n\n1. allocate a new local hash and copy the original hash.\n2. update the local hash.\n3. move(actually, copy) back the local hash to ftrace_ops.\n4. update ftrace entries if needed.\n5. release the local hash.\n\nThis makes regex_lock protect #1-#4, and ftrace_lock\nto protect #3, #4 and adding and removing ftrace_ops from the\nftrace_ops_list. The ftrace_lock protects #3 as well because\nthe move functions update the entries too.\n\nLink: http://lkml.kernel.org/r/20130509054421.30398.83411.stgit@mhiramat-M0-7522\n\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Tom Zanussi \u003ctom.zanussi@intel.com\u003e\nSigned-off-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "f04f24fb7e48d446bd89a01c6056571f25972511",
      "tree": "b1d1ecbe88df0eee0309970fd07dc37fb375a440",
      "parents": [
        "7c088b5120ffef017e2ddc38f992277e96436ef6"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "masami.hiramatsu.pt@hitachi.com",
        "time": "Thu May 09 14:44:17 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 09 20:10:22 2013 -0400"
      },
      "message": "ftrace, kprobes: Fix a deadlock on ftrace_regex_lock\n\nFix a deadlock on ftrace_regex_lock which happens when setting\nan enable_event trigger on dynamic kprobe event as below.\n\n----\nsh-2.05b# echo p vfs_symlink \u003e kprobe_events\nsh-2.05b# echo vfs_symlink:enable_event:kprobes:p_vfs_symlink_0 \u003e set_ftrace_filter\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: possible recursive locking detected ]\n3.9.0+ #35 Not tainted\n---------------------------------------------\nsh/72 is trying to acquire lock:\n (ftrace_regex_lock){+.+.+.}, at: [\u003cffffffff810ba6c1\u003e] ftrace_set_hash+0x81/0x1f0\n\nbut task is already holding lock:\n (ftrace_regex_lock){+.+.+.}, at: [\u003cffffffff810b7cbd\u003e] ftrace_regex_write.isra.29.part.30+0x3d/0x220\n\nother info that might help us debug this:\n Possible unsafe locking scenario:\n\n       CPU0\n       ----\n  lock(ftrace_regex_lock);\n  lock(ftrace_regex_lock);\n\n *** DEADLOCK ***\n----\n\nTo fix that, this introduces a finer regex_lock for each ftrace_ops.\nftrace_regex_lock is too big of a lock which protects all\nfilter/notrace_hash operations, but it doesn\u0027t need to be a global\nlock after supporting multiple ftrace_ops because each ftrace_ops\nhas its own filter/notrace_hash.\n\nLink: http://lkml.kernel.org/r/20130509054417.30398.84254.stgit@mhiramat-M0-7522\n\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Tom Zanussi \u003ctom.zanussi@intel.com\u003e\nSigned-off-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\n[ Added initialization flag and automate mutex initialization for\n  non ftrace.c ftrace_probes. ]\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "7c088b5120ffef017e2ddc38f992277e96436ef6",
      "tree": "9cfeea9e1adc62a0e0ee452bdcbb6fc748358b6d",
      "parents": [
        "ff305ded9ff83436039a16d31bc558dc6598d7ce"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 09 11:35:12 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 09 11:35:12 2013 -0400"
      },
      "message": "ftrace: Have ftrace_regex_write() return either read or error\n\nAs ftrace_regex_write() reads the result of ftrace_process_regex()\nwhich can sometimes return a positive number, only consider a\nfailure if the return is negative. Otherwise, it will skip possible\nother registered probes and by returning a positive number that\nwasn\u0027t read, it will confuse the user processes doing the writing.\n\nCc: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "ff305ded9ff83436039a16d31bc558dc6598d7ce",
      "tree": "5430dd02b415b7b688a0579a5fff67c41dc4331b",
      "parents": [
        "a5b85bd1557209b4ef18a8cf07e60a1ca3132468"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 09 11:30:26 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 09 11:30:26 2013 -0400"
      },
      "message": "tracing: Return error if register_ftrace_function_probe() fails for event_enable_func()\n\nregister_ftrace_function_probe() returns the number of functions\nit registered, which can be zero, it can also return a negative number\nif something went wrong. But event_enable_func() only checks for\nthe case that it didn\u0027t register anything, it needs to also check\nfor the case that something went wrong and return that error code\nas well.\n\nAdded some comments about the code as well, to make it more\nunderstandable.\n\nCc: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "a5b85bd1557209b4ef18a8cf07e60a1ca3132468",
      "tree": "f1c0c60e26e7f10e6e05cca9af1639bf651a7bf4",
      "parents": [
        "2228768885e0b92c0f7b276cc61b8974e7aed724"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "masami.hiramatsu.pt@hitachi.com",
        "time": "Thu May 09 14:44:14 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 09 11:26:01 2013 -0400"
      },
      "message": "tracing: Don\u0027t succeed if event_enable_func did not register anything\n\nReturn 0 instead of the number of activated ftrace function probes if\nevent_enable_func succeeded and return an error code if it failed or\ndid not register any functions. But it currently returns the number\nof registered functions and if it didn\u0027t register anything, it returns 0,\nbut that is considered success.\n\nThis also fixes the return value. As if it succeeds, it returns the\nnumber of functions that were enabled, which is returned back to\nthe user in ftrace_regex_write (the write() return code). If only\none function is enabled, then the return code of the write is one,\nand this can confuse the user program in thinking it only wrote 1\nbyte.\n\nLink: http://lkml.kernel.org/r/20130509054413.30398.55650.stgit@mhiramat-M0-7522\n\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Tom Zanussi \u003ctom.zanussi@intel.com\u003e\nSigned-off-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\n[ Rewrote change log to reflect that this fixes two bugs - SR ]\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "ebb37277796269da36a8bc5d72ed1e8e1fb7d34b",
      "tree": "0ded627a62a5cec70b18d12825dd858855c135d3",
      "parents": [
        "4de13d7aa8f4d02f4dc99d4609575659f92b3c5a",
        "f50efd2fdbd9b35b11f5778ed85beb764184bda9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 08 11:51:05 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 08 11:51:05 2013 -0700"
      },
      "message": "Merge branch \u0027for-3.10/drivers\u0027 of git://git.kernel.dk/linux-block\n\nPull block driver updates from Jens Axboe:\n \"It might look big in volume, but when categorized, not a lot of\n  drivers are touched.  The pull request contains:\n\n   - mtip32xx fixes from Micron.\n\n   - A slew of drbd updates, this time in a nicer series.\n\n   - bcache, a flash/ssd caching framework from Kent.\n\n   - Fixes for cciss\"\n\n* \u0027for-3.10/drivers\u0027 of git://git.kernel.dk/linux-block: (66 commits)\n  bcache: Use bd_link_disk_holder()\n  bcache: Allocator cleanup/fixes\n  cciss: bug fix to prevent cciss from loading in kdump crash kernel\n  cciss: add cciss_allow_hpsa module parameter\n  drivers/block/mg_disk.c: add CONFIG_PM_SLEEP to suspend/resume functions\n  mtip32xx: Workaround for unaligned writes\n  bcache: Make sure blocksize isn\u0027t smaller than device blocksize\n  bcache: Fix merge_bvec_fn usage for when it modifies the bvm\n  bcache: Correctly check against BIO_MAX_PAGES\n  bcache: Hack around stuff that clones up to bi_max_vecs\n  bcache: Set ra_pages based on backing device\u0027s ra_pages\n  bcache: Take data offset from the bdev superblock.\n  mtip32xx: mtip32xx: Disable TRIM support\n  mtip32xx: fix a smatch warning\n  bcache: Disable broken btree fuzz tester\n  bcache: Fix a format string overflow\n  bcache: Fix a minor memory leak on device teardown\n  bcache: Documentation updates\n  bcache: Use WARN_ONCE() instead of __WARN()\n  bcache: Add missing #include \u003clinux/prefetch.h\u003e\n  ...\n"
    },
    {
      "commit": "2228768885e0b92c0f7b276cc61b8974e7aed724",
      "tree": "56a27620a005540222cfda475b1a1b6ea6c57dc1",
      "parents": [
        "6c24499f40d96bf07a85b709fb1bee5cea611a1d"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Fri May 03 11:16:18 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri May 03 19:24:17 2013 -0400"
      },
      "message": "ring-buffer: Select IRQ_WORK\n\nAs the wake up logic for waiters on the buffer has been moved\nfrom the tracing code to the ring buffer, it requires also adding\nIRQ_WORK as the wake up code is performed via irq_work.\n\nThis fixes compile breakage when a user of the ring buffer is selected\nbut tracing and irq_work are not.\n\nLink http://lkml.kernel.org/r/20130503115332.GT8356@rric.localhost\n\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nReported-by: Robert Richter \u003crric@kernel.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "e0972916e8fe943f342b0dd1c9d43dbf5bc261c2",
      "tree": "690c436f1f9b839c4ba34d17ab3efa63b97a2dce",
      "parents": [
        "1f889ec62c3f0d8913f3c32f9aff2a1e15099346",
        "5ac2b5c2721501a8f5c5e1cd4116cbc31ace6886"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 30 07:41:01 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 30 07:41:01 2013 -0700"
      },
      "message": "Merge branch \u0027perf-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull perf updates from Ingo Molnar:\n \"Features:\n\n   - Add \"uretprobes\" - an optimization to uprobes, like kretprobes are\n     an optimization to kprobes.  \"perf probe -x file sym%return\" now\n     works like kretprobes.  By Oleg Nesterov.\n\n   - Introduce per core aggregation in \u0027perf stat\u0027, from Stephane\n     Eranian.\n\n   - Add memory profiling via PEBS, from Stephane Eranian.\n\n   - Event group view for \u0027annotate\u0027 in --stdio, --tui and --gtk, from\n     Namhyung Kim.\n\n   - Add support for AMD NB and L2I \"uncore\" counters, by Jacob Shin.\n\n   - Add Ivy Bridge-EP uncore support, by Zheng Yan\n\n   - IBM zEnterprise EC12 oprofile support patchlet from Robert Richter.\n\n   - Add perf test entries for checking breakpoint overflow signal\n     handler issues, from Jiri Olsa.\n\n   - Add perf test entry for for checking number of EXIT events, from\n     Namhyung Kim.\n\n   - Add perf test entries for checking --cpu in record and stat, from\n     Jiri Olsa.\n\n   - Introduce perf stat --repeat forever, from Frederik Deweerdt.\n\n   - Add --no-demangle to report/top, from Namhyung Kim.\n\n   - PowerPC fixes plus a couple of cleanups/optimizations in uprobes\n     and trace_uprobes, by Oleg Nesterov.\n\n  Various fixes and refactorings:\n\n   - Fix dependency of the python binding wrt libtraceevent, from\n     Naohiro Aota.\n\n   - Simplify some perf_evlist methods and to allow \u0027stat\u0027 to share code\n     with \u0027record\u0027 and \u0027trace\u0027, by Arnaldo Carvalho de Melo.\n\n   - Remove dead code in related to libtraceevent integration, from\n     Namhyung Kim.\n\n   - Revert \"perf sched: Handle PERF_RECORD_EXIT events\" to get \u0027perf\n     sched lat\u0027 back working, by Arnaldo Carvalho de Melo\n\n   - We don\u0027t use Newt anymore, just plain libslang, by Arnaldo Carvalho\n     de Melo.\n\n   - Kill a bunch of die() calls, from Namhyung Kim.\n\n   - Fix build on non-glibc systems due to libio.h absence, from Cody P\n     Schafer.\n\n   - Remove some perf_session and tracing dead code, from David Ahern.\n\n   - Honor parallel jobs, fix from Borislav Petkov\n\n   - Introduce tools/lib/lk library, initially just removing duplication\n     among tools/perf and tools/vm.  from Borislav Petkov\n\n  ... and many more I missed to list, see the shortlog and git log for\n  more details.\"\n\n* \u0027perf-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (136 commits)\n  perf/x86/intel/P4: Robistify P4 PMU types\n  perf/x86/amd: Fix AMD NB and L2I \"uncore\" support\n  perf/x86/amd: Remove old-style NB counter support from perf_event_amd.c\n  perf/x86: Check all MSRs before passing hw check\n  perf/x86/amd: Add support for AMD NB and L2I \"uncore\" counters\n  perf/x86/intel: Add Ivy Bridge-EP uncore support\n  perf/x86/intel: Fix SNB-EP CBO and PCU uncore PMU filter management\n  perf/x86: Avoid kfree() in CPU_{STARTING,DYING}\n  uprobes/perf: Avoid perf_trace_buf_prepare/submit if -\u003eperf_events is empty\n  uprobes/tracing: Don\u0027t pass addr\u003dip to perf_trace_buf_submit()\n  uprobes/tracing: Change create_trace_uprobe() to support uretprobes\n  uprobes/tracing: Make seq_printf() code uretprobe-friendly\n  uprobes/tracing: Make register_uprobe_event() paths uretprobe-friendly\n  uprobes/tracing: Make uprobe_{trace,perf}_print() uretprobe-friendly\n  uprobes/tracing: Introduce is_ret_probe() and uretprobe_dispatcher()\n  uprobes/tracing: Introduce uprobe_{trace,perf}_print() helpers\n  uprobes/tracing: Generalize struct uprobe_trace_entry_head\n  uprobes/tracing: Kill the pointless local_save_flags/preempt_count calls\n  uprobes/tracing: Kill the pointless seq_print_ip_sym() call\n  uprobes/tracing: Kill the pointless task_pt_regs() calls\n  ...\n"
    },
    {
      "commit": "6c24499f40d96bf07a85b709fb1bee5cea611a1d",
      "tree": "7f6591997eeb5b8a74246acb22780b9189cc1d56",
      "parents": [
        "500fcbc4a9f91dfd011c9a6caec80a55e14fd338"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Apr 29 20:08:14 2013 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 30 07:23:08 2013 -0700"
      },
      "message": "tracing: Fix small merge bug\n\nDuring the 3.10 merge, a conflict happened and the resolution was\nalmost, but not quite, correct. An if statement was reversed.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n[ Duh. That was just silly of me  - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9e8529afc4518f4e5d610001545ebc97e1333c79",
      "tree": "26e1aa2cbb50f3f511cfa7d8e39e6b7bd9221b68",
      "parents": [
        "ec25e246b94a3233ab064994ef05a170bdba0e7c",
        "4c69e6ea415a35eb7f0fc8ee9390c8f7436492a2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 29 13:55:38 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 29 13:55:38 2013 -0700"
      },
      "message": "Merge tag \u0027trace-3.10\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace\n\nPull tracing updates from Steven Rostedt:\n \"Along with the usual minor fixes and clean ups there are a few major\n  changes with this pull request.\n\n   1) Multiple buffers for the ftrace facility\n\n  This feature has been requested by many people over the last few\n  years.  I even heard that Google was about to implement it themselves.\n  I finally had time and cleaned up the code such that you can now\n  create multiple instances of the ftrace buffer and have different\n  events go to different buffers.  This way, a low frequency event will\n  not be lost in the noise of a high frequency event.\n\n  Note, currently only events can go to different buffers, the tracers\n  (ie function, function_graph and the latency tracers) still can only\n  be written to the main buffer.\n\n   2) The function tracer triggers have now been extended.\n\n  The function tracer had two triggers.  One to enable tracing when a\n  function is hit, and one to disable tracing.  Now you can record a\n  stack trace on a single (or many) function(s), take a snapshot of the\n  buffer (copy it to the snapshot buffer), and you can enable or disable\n  an event to be traced when a function is hit.\n\n   3) A perf clock has been added.\n\n  A \"perf\" clock can be chosen to be used when tracing.  This will cause\n  ftrace to use the same clock as perf uses, and hopefully this will\n  make it easier to interleave the perf and ftrace data for analysis.\"\n\n* tag \u0027trace-3.10\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (82 commits)\n  tracepoints: Prevent null probe from being added\n  tracing: Compare to 1 instead of zero for is_signed_type()\n  tracing: Remove obsolete macro guard _TRACE_PROFILE_INIT\n  ftrace: Get rid of ftrace_profile_bits\n  tracing: Check return value of tracing_init_dentry()\n  tracing: Get rid of unneeded key calculation in ftrace_hash_move()\n  tracing: Reset ftrace_graph_filter_enabled if count is zero\n  tracing: Fix off-by-one on allocating stat-\u003epages\n  kernel: tracing: Use strlcpy instead of strncpy\n  tracing: Update debugfs README file\n  tracing: Fix ftrace_dump()\n  tracing: Rename trace_event_mutex to trace_event_sem\n  tracing: Fix comment about prefix in arch_syscall_match_sym_name()\n  tracing: Convert trace_destroy_fields() to static\n  tracing: Move find_event_field() into trace_events.c\n  tracing: Use TRACE_MAX_PRINT instead of constant\n  tracing: Use pr_warn_once instead of open coded implementation\n  ring-buffer: Add ring buffer startup selftest\n  tracing: Bring Documentation/trace/ftrace.txt up to date\n  tracing: Add \"perf\" trace_clock\n  ...\n\nConflicts:\n\tkernel/trace/ftrace.c\n\tkernel/trace/trace.c\n"
    },
    {
      "commit": "73e21ce28d8d2b75140b742b01373c3a085ecc52",
      "tree": "add380154271f9a68be4099590f912b4ab4bed9f",
      "parents": [
        "b5210b2a34bae35fc00675462333af45676d727c",
        "f1923820c447e986a9da0fc6bf60c1dccdf0408e"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sun Apr 21 10:57:33 2013 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sun Apr 21 10:57:33 2013 +0200"
      },
      "message": "Merge branch \u0027perf/urgent\u0027 into perf/core\n\nConflicts:\n\tarch/x86/kernel/cpu/perf_event_intel.c\n\nMerge in the latest fixes before applying new patches, resolve the conflict.\n\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "0a82a8d132b26d438eb90b3ab35a7016e7227a1d",
      "tree": "ee01c8dd1db41aaa1d2acfd47330e488f8573c9b",
      "parents": [
        "5c51543b0ae45967cfa99ca16748dc72888cc265"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 18 09:00:26 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 18 09:00:26 2013 -0700"
      },
      "message": "Revert \"block: add missing block_bio_complete() tracepoint\"\n\nThis reverts commit 3a366e614d0837d9fc23f78cdb1a1186ebc3387f.\n\nWanlong Gao reports that it causes a kernel panic on his machine several\nminutes after boot. Reverting it removes the panic.\n\nJens says:\n \"It\u0027s not quite clear why that is yet, so I think we should just revert\n  the commit for 3.9 final (which I\u0027m assuming is pretty close).\n\n  The wifi is crap at the LSF hotel, so sending this email instead of\n  queueing up a revert and pull request.\"\n\nReported-by: Wanlong Gao \u003cgaowanlong@cn.fujitsu.com\u003e\nRequested-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "515619f209114697fabd21eed1623bfa69746815",
      "tree": "84655a5404fb290f8492f3f953f9e61007f7c3e2",
      "parents": [
        "32520b2c695b23221751eb09360a6a3dd3105b52"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:36:49 2013 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Apr 15 17:39:52 2013 +0200"
      },
      "message": "uprobes/perf: Avoid perf_trace_buf_prepare/submit if -\u003eperf_events is empty\n\nperf_trace_buf_prepare() + perf_trace_buf_submit() make no sense\nif this task/CPU has no active counters. Change uprobe_perf_print()\nto return if hlist_empty(call-\u003eperf_events).\n\nNote: this is not uprobe-specific, we can change other users too.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "ae9f4939bad09767c0532f76ccc48cec0ff3ea4e",
      "tree": "7574e26436530fc3c10c848e0b740f05bb02930c",
      "parents": [
        "93263e5283d5c2bc447bc42956f4fa58a3a0a63a",
        "c481420248c6730246d2a1b1773d5d7007ae0835"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 14 11:10:44 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 14 11:10:44 2013 -0700"
      },
      "message": "Merge branch \u0027perf-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull perf fixes from Ingo Molnar:\n \"Misc fixlets\"\n\n* \u0027perf-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  perf: Fix error return code\n  ftrace: Fix strncpy() use, use strlcpy() instead of strncpy()\n  perf: Fix strncpy() use, use strlcpy() instead of strncpy()\n  perf: Fix strncpy() use, always make sure it\u0027s NUL terminated\n  perf: Fix ring_buffer perf_output_space() boundary calculation\n  perf/x86: Fix uninitialized pt_regs in intel_pmu_drain_bts_buffer()\n"
    },
    {
      "commit": "32520b2c695b23221751eb09360a6a3dd3105b52",
      "tree": "2ae042675882778a52f7b6a22afc974a1d942365",
      "parents": [
        "4ee5a52ed6301d0afa56cc995ef2c3795f45e801"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Apr 10 16:25:49 2013 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:32:04 2013 +0200"
      },
      "message": "uprobes/tracing: Don\u0027t pass addr\u003dip to perf_trace_buf_submit()\n\nuprobe_perf_print() passes addr\u003dip to perf_trace_buf_submit() for\nno reason. This sets perf_sample_data-\u003eaddr for PERF_SAMPLE_ADDR,\nwe already have perf_sample_data-\u003eip initialized if PERF_SAMPLE_IP.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "4ee5a52ed6301d0afa56cc995ef2c3795f45e801",
      "tree": "2ed597fd7f5519f914bd7aed5561c141b6599c77",
      "parents": [
        "3ede82dd3e3deb23429f2bf44fb600f440eef84b"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Mar 30 20:28:15 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:32:03 2013 +0200"
      },
      "message": "uprobes/tracing: Change create_trace_uprobe() to support uretprobes\n\nFinally change create_trace_uprobe() to check if argv[0][0] \u003d\u003d \u0027r\u0027\nand pass the correct \"is_ret\" to alloc_trace_uprobe().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nTested-by: Anton Arapov \u003canton@redhat.com\u003e\n"
    },
    {
      "commit": "3ede82dd3e3deb23429f2bf44fb600f440eef84b",
      "tree": "ecf9313c1a1275b3b70ead7772f66a853e9f386f",
      "parents": [
        "4d1298e2124767b4e263498485618b2e91aee5f0"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Mar 30 19:48:09 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:32:03 2013 +0200"
      },
      "message": "uprobes/tracing: Make seq_printf() code uretprobe-friendly\n\nChange probes_seq_show() and print_uprobe_event() to check\nis_ret_probe() and print the correct data.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nTested-by: Anton Arapov \u003canton@redhat.com\u003e\n"
    },
    {
      "commit": "4d1298e2124767b4e263498485618b2e91aee5f0",
      "tree": "ec9888fa9d27d0e8be7a94c7d09623f09b3a770e",
      "parents": [
        "393a736c280d555d9301fc5516d4d401544eb9db"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Mar 30 19:23:15 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:32:03 2013 +0200"
      },
      "message": "uprobes/tracing: Make register_uprobe_event() paths uretprobe-friendly\n\nChange uprobe_event_define_fields(), and __set_print_fmt() to check\nis_ret_probe() and use the appropriate format/fields.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nTested-by: Anton Arapov \u003canton@redhat.com\u003e\n"
    },
    {
      "commit": "393a736c280d555d9301fc5516d4d401544eb9db",
      "tree": "c0cb3385b47e0ecb38f7199b2a319e704abe9988",
      "parents": [
        "c1ae5c75e1034070b203dc9d4ad77ce196166a6c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Mar 30 18:46:22 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:32:03 2013 +0200"
      },
      "message": "uprobes/tracing: Make uprobe_{trace,perf}_print() uretprobe-friendly\n\nChange uprobe_trace_print() and uprobe_perf_print() to check\nis_ret_probe() and fill ring_buffer_event accordingly.\n\nAlso change uprobe_trace_func() and uprobe_perf_func() to not\n_print() if is_ret_probe() is true. Note that we keep -\u003ehandler()\nnontrivial even for uretprobe, we need this for filtering and for\nother potential extensions.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nTested-by: Anton Arapov \u003canton@redhat.com\u003e\n"
    },
    {
      "commit": "c1ae5c75e1034070b203dc9d4ad77ce196166a6c",
      "tree": "a7cd4e28f3562037c1f76797234a6a2d2ce7a24e",
      "parents": [
        "a51cc6041773dd88ff35608f54274bfd6ac68652"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Mar 30 18:25:23 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:32:02 2013 +0200"
      },
      "message": "uprobes/tracing: Introduce is_ret_probe() and uretprobe_dispatcher()\n\nCreate the new functions we need to support uretprobes, and change\nalloc_trace_uprobe() to initialize consumer.ret_handler if the new\n\"is_ret\" argument is true. Curently this argument is always false,\nso the new code is never called and is_ret_probe(tu) is false too.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nTested-by: Anton Arapov \u003canton@redhat.com\u003e\n"
    },
    {
      "commit": "a51cc6041773dd88ff35608f54274bfd6ac68652",
      "tree": "b7969268db40338d42c29d8ffb1787041d7d6760",
      "parents": [
        "457d1772f1c1bcf37b2ae7fc8f1d6f303d1d5cf9"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Mar 30 18:02:12 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:32:01 2013 +0200"
      },
      "message": "uprobes/tracing: Introduce uprobe_{trace,perf}_print() helpers\n\nExtract the output code from uprobe_trace_func() and uprobe_perf_func()\ninto the new helpers, they will be used by -\u003eret_handler() too. We also\nadd the unused \"unsigned long func\" argument in advance, to simplify the\nnext changes.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nTested-by: Anton Arapov \u003canton@redhat.com\u003e\n"
    },
    {
      "commit": "457d1772f1c1bcf37b2ae7fc8f1d6f303d1d5cf9",
      "tree": "49da165c316ec7086272994ede7ac96e334d6850",
      "parents": [
        "0e3853d202e8b2720bc4c674dc58849b2662c8f8"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Mar 29 18:26:51 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:32:01 2013 +0200"
      },
      "message": "uprobes/tracing: Generalize struct uprobe_trace_entry_head\n\nstruct uprobe_trace_entry_head has a single member for reporting,\n\"unsigned long ip\". If we want to support uretprobes we need to\ncreate another struct which has \"func\" and \"ret_ip\" and duplicate\na lot of functions, like trace_kprobe.c does.\n\nTo avoid this copy-and-paste horror we turn -\u003eip into -\u003evaddr[]\nand add couple of trivial helpers to calculate sizeof/data. This\nuglifies the code a bit, but this allows us to avoid a lot more\ncomplications later, when we add the support for ret-probes.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nTested-by: Anton Arapov \u003canton@redhat.com\u003e\n"
    },
    {
      "commit": "0e3853d202e8b2720bc4c674dc58849b2662c8f8",
      "tree": "1985c7d62717dd07c2e3957acbb66515dc0ce65d",
      "parents": [
        "456fdbcb8648a20f56977efbc6f13e28936fcf0b"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Mar 28 19:19:11 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:32:00 2013 +0200"
      },
      "message": "uprobes/tracing: Kill the pointless local_save_flags/preempt_count calls\n\nuprobe_trace_func() is never called with irqs or preemption\ndisabled, no need to ask preempt_count() or local_save_flags().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nAcked-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nTested-by: Anton Arapov \u003canton@redhat.com\u003e\n"
    },
    {
      "commit": "456fdbcb8648a20f56977efbc6f13e28936fcf0b",
      "tree": "e6e868c2830ae0212a1329edf7ecb0a901534052",
      "parents": [
        "07720b63a964851928fa5d8b00ee5270d66b94f7"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Mar 28 18:58:11 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:31:59 2013 +0200"
      },
      "message": "uprobes/tracing: Kill the pointless seq_print_ip_sym() call\n\nseq_print_ip_sym(ip) in print_uprobe_event() is pointless,\nkallsyms_lookup(ip) can not resolve a user-space address.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nTested-by: Anton Arapov \u003canton@redhat.com\u003e\n"
    },
    {
      "commit": "07720b63a964851928fa5d8b00ee5270d66b94f7",
      "tree": "a0f34bea6ac91b0444c48fc830b53b0139c0e746",
      "parents": [
        "decc6bfb49d1eda6cec67d79b73a73fa3aaad6e5"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Mar 28 18:01:04 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:31:59 2013 +0200"
      },
      "message": "uprobes/tracing: Kill the pointless task_pt_regs() calls\n\nuprobe_trace_func() and uprobe_perf_func() do not need task_pt_regs(),\nwe already have \"struct pt_regs *regs\".\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nTested-by: Anton Arapov \u003canton@redhat.com\u003e\n"
    },
    {
      "commit": "20079ebe73c16b34621abd2993f3d48e2f9336b7",
      "tree": "96b2ace696902e848edd01173505fddba44a743e",
      "parents": [
        "ed6f1c996bfe4b6e520cf7a74b51cd6988d84420"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Wed Apr 10 08:55:50 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Apr 12 23:02:33 2013 -0400"
      },
      "message": "ftrace: Get rid of ftrace_profile_bits\n\nIt seems that function profiler\u0027s hash size is fixed at 1024.  Add and\nuse FTRACE_PROFILE_HASH_BITS instead and update hash size macro.\n\nLink: http://lkml.kernel.org/r/1365551750-4504-1-git-send-email-namhyung@kernel.org\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "ed6f1c996bfe4b6e520cf7a74b51cd6988d84420",
      "tree": "1d9da2d98d5e94cd9b6606cbf8f721925c53164e",
      "parents": [
        "f1943977e6648c1d42a78eda4ba4429a2bc0b786"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Wed Apr 10 09:18:12 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Apr 12 23:02:32 2013 -0400"
      },
      "message": "tracing: Check return value of tracing_init_dentry()\n\nCheck return value and bail out if it\u0027s NULL.\n\nLink: http://lkml.kernel.org/r/1365553093-10180-2-git-send-email-namhyung@kernel.org\n\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Namhyung Kim \u003cnamhyung.kim@lge.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "f1943977e6648c1d42a78eda4ba4429a2bc0b786",
      "tree": "ce8d64e065be0b1305b4d296c5d147650d2f11c7",
      "parents": [
        "9f50afccfdc15d95d7331acddcb0f7703df089ae"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Wed Apr 10 09:18:11 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Apr 12 23:02:31 2013 -0400"
      },
      "message": "tracing: Get rid of unneeded key calculation in ftrace_hash_move()\n\nIt\u0027s not used anywhere in the function.\n\nLink: http://lkml.kernel.org/r/1365553093-10180-1-git-send-email-namhyung@kernel.org\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "9f50afccfdc15d95d7331acddcb0f7703df089ae",
      "tree": "348b898d53a1b4f14d9d03e11e5bbf5d561fc5f8",
      "parents": [
        "39e30cd1537937d3c00ef87e865324e981434e5b"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Thu Apr 11 16:01:38 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Apr 12 23:02:30 2013 -0400"
      },
      "message": "tracing: Reset ftrace_graph_filter_enabled if count is zero\n\nThe ftrace_graph_count can be decreased with a \"!\" pattern, so that\nthe enabled flag should be updated too.\n\nLink: http://lkml.kernel.org/r/1365663698-2413-1-git-send-email-namhyung@kernel.org\n\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Namhyung Kim \u003cnamhyung.kim@lge.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "7f49ef69db6bbf756c0abca7e9b65b32e999eec8",
      "tree": "a98bda9589c09a84bedf6346e2acdae605fc9fb9",
      "parents": [
        "6a76f8c0ab19f215af2a3442870eeb5f0e81998d"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Fri Apr 12 16:40:13 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Apr 12 17:12:41 2013 -0400"
      },
      "message": "ftrace: Move ftrace_filter_lseek out of CONFIG_DYNAMIC_FTRACE section\n\nAs ftrace_filter_lseek is now used with ftrace_pid_fops, it needs to\nbe moved out of the #ifdef CONFIG_DYNAMIC_FTRACE section as the\nftrace_pid_fops is defined when DYNAMIC_FTRACE is not.\n\nCc: stable@vger.kernel.org\nCc: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "6a76f8c0ab19f215af2a3442870eeb5f0e81998d",
      "tree": "551f1c13779323e06b8ef906192ba7a5d87aa7b6",
      "parents": [
        "83e03b3fe4daffdebbb42151d5410d730ae50bd1"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Thu Apr 11 15:55:01 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Apr 12 14:43:34 2013 -0400"
      },
      "message": "tracing: Fix possible NULL pointer dereferences\n\nCurrently set_ftrace_pid and set_graph_function files use seq_lseek\nfor their fops.  However seq_open() is called only for FMODE_READ in\nthe fops-\u003eopen() so that if an user tries to seek one of those file\nwhen she open it for writing, it sees NULL seq_file and then panic.\n\nIt can be easily reproduced with following command:\n\n  $ cd /sys/kernel/debug/tracing\n  $ echo 1234 | sudo tee -a set_ftrace_pid\n\nIn this example, GNU coreutils\u0027 tee opens the file with fopen(, \"a\")\nand then the fopen() internally calls lseek().\n\nLink: http://lkml.kernel.org/r/1365663302-2170-1-git-send-email-namhyung@kernel.org\n\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Namhyung Kim \u003cnamhyung.kim@lge.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "39e30cd1537937d3c00ef87e865324e981434e5b",
      "tree": "ff4bd7d0047771a34f79b9eb34c9ddef3b0ef374",
      "parents": [
        "9607a869ee59594f3f7b9f3ac43a11d92bf3f960"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Mon Apr 01 21:46:24 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Apr 09 19:00:49 2013 -0400"
      },
      "message": "tracing: Fix off-by-one on allocating stat-\u003epages\n\nThe first page was allocated separately, so no need to start from 0.\n\nLink: http://lkml.kernel.org/r/1364820385-32027-2-git-send-email-namhyung@kernel.org\n\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Namhyung Kim \u003cnamhyung.kim@lge.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "83e03b3fe4daffdebbb42151d5410d730ae50bd1",
      "tree": "007c3030b619ba28965c60e3e8fa57dd9bbc236e",
      "parents": [
        "395b97a3aeff0b8d949ee3e67bf8c11c5ffd6861"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Mon Apr 01 21:46:23 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Apr 09 18:54:04 2013 -0400"
      },
      "message": "tracing: Fix double free when function profile init failed\n\nOn the failure path, stat-\u003estart and stat-\u003epages will refer same page.\nSo it\u0027ll attempt to free the same page again and get kernel panic.\n\nLink: http://lkml.kernel.org/r/1364820385-32027-1-git-send-email-namhyung@kernel.org\n\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Namhyung Kim \u003cnamhyung.kim@lge.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "9607a869ee59594f3f7b9f3ac43a11d92bf3f960",
      "tree": "18dcec81e889275f3003535f9f2e96cdb7f50298",
      "parents": [
        "22f45649ce08642ad7df238d5c25fa5c86bfdd31"
      ],
      "author": {
        "name": "Chen Gang",
        "email": "gang.chen@asianux.com",
        "time": "Mon Apr 08 12:06:44 2013 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Apr 09 11:25:08 2013 -0400"
      },
      "message": "kernel: tracing: Use strlcpy instead of strncpy\n\nUse strlcpy() instead of strncpy() as it will always add a \u0027\\0\u0027\nto the end of the string even if the buffer is smaller than what\nis being copied.\n\nLink: http://lkml.kernel.org/r/51624254.30301@asianux.com\n\nSigned-off-by: Chen Gang \u003cgang.chen@asianux.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "395b97a3aeff0b8d949ee3e67bf8c11c5ffd6861",
      "tree": "719c1519cc536a5ec0118b107f0edc90bd312fe6",
      "parents": [
        "5000c418840b309251c5887f0b56503aae30f84c"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Wed Mar 27 09:31:28 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@rostedt.homelinux.com",
        "time": "Mon Apr 08 12:24:23 2013 -0400"
      },
      "message": "ftrace: Do not call stub functions in control loop\n\nThe function tracing control loop used by perf spits out a warning\nif the called function is not a control function. This is because\nthe control function references a per cpu allocated data structure\non struct ftrace_ops that is not allocated for other types of\nfunctions.\n\ncommit 0a016409e42 \"ftrace: Optimize the function tracer list loop\"\n\nHad an optimization done to all function tracing loops to optimize\nfor a single registered ops. Unfortunately, this allows for a slight\nrace when tracing starts or ends, where the stub function might be\ncalled after the current registered ops is removed. In this case we\nget the following dump:\n\nroot# perf stat -e ftrace:function sleep 1\n[   74.339105] WARNING: at include/linux/ftrace.h:209 ftrace_ops_control_func+0xde/0xf0()\n[   74.349522] Hardware name: PRIMERGY RX200 S6\n[   74.357149] Modules linked in: sg igb iTCO_wdt ptp pps_core iTCO_vendor_support i7core_edac dca lpc_ich i2c_i801 coretemp edac_core crc32c_intel mfd_core ghash_clmulni_intel dm_multipath acpi_power_meter pcspk\nr microcode vhost_net tun macvtap macvlan nfsd kvm_intel kvm auth_rpcgss nfs_acl lockd sunrpc uinput xfs libcrc32c sd_mod crc_t10dif sr_mod cdrom mgag200 i2c_algo_bit drm_kms_helper ttm qla2xxx mptsas ahci drm li\nbahci scsi_transport_sas mptscsih libata scsi_transport_fc i2c_core mptbase scsi_tgt dm_mirror dm_region_hash dm_log dm_mod\n[   74.446233] Pid: 1377, comm: perf Tainted: G        W    3.9.0-rc1 #1\n[   74.453458] Call Trace:\n[   74.456233]  [\u003cffffffff81062e3f\u003e] warn_slowpath_common+0x7f/0xc0\n[   74.462997]  [\u003cffffffff810fbc60\u003e] ? rcu_note_context_switch+0xa0/0xa0\n[   74.470272]  [\u003cffffffff811041a2\u003e] ? __unregister_ftrace_function+0xa2/0x1a0\n[   74.478117]  [\u003cffffffff81062e9a\u003e] warn_slowpath_null+0x1a/0x20\n[   74.484681]  [\u003cffffffff81102ede\u003e] ftrace_ops_control_func+0xde/0xf0\n[   74.491760]  [\u003cffffffff8162f400\u003e] ftrace_call+0x5/0x2f\n[   74.497511]  [\u003cffffffff8162f400\u003e] ? ftrace_call+0x5/0x2f\n[   74.503486]  [\u003cffffffff8162f400\u003e] ? ftrace_call+0x5/0x2f\n[   74.509500]  [\u003cffffffff810fbc65\u003e] ? synchronize_sched+0x5/0x50\n[   74.516088]  [\u003cffffffff816254d5\u003e] ? _cond_resched+0x5/0x40\n[   74.522268]  [\u003cffffffff810fbc65\u003e] ? synchronize_sched+0x5/0x50\n[   74.528837]  [\u003cffffffff811041a2\u003e] ? __unregister_ftrace_function+0xa2/0x1a0\n[   74.536696]  [\u003cffffffff816254d5\u003e] ? _cond_resched+0x5/0x40\n[   74.542878]  [\u003cffffffff8162402d\u003e] ? mutex_lock+0x1d/0x50\n[   74.548869]  [\u003cffffffff81105c67\u003e] unregister_ftrace_function+0x27/0x50\n[   74.556243]  [\u003cffffffff8111eadf\u003e] perf_ftrace_event_register+0x9f/0x140\n[   74.563709]  [\u003cffffffff816254d5\u003e] ? _cond_resched+0x5/0x40\n[   74.569887]  [\u003cffffffff8162402d\u003e] ? mutex_lock+0x1d/0x50\n[   74.575898]  [\u003cffffffff8111e94e\u003e] perf_trace_destroy+0x2e/0x50\n[   74.582505]  [\u003cffffffff81127ba9\u003e] tp_perf_event_destroy+0x9/0x10\n[   74.589298]  [\u003cffffffff811295d0\u003e] free_event+0x70/0x1a0\n[   74.595208]  [\u003cffffffff8112a579\u003e] perf_event_release_kernel+0x69/0xa0\n[   74.602460]  [\u003cffffffff816254d5\u003e] ? _cond_resched+0x5/0x40\n[   74.608667]  [\u003cffffffff8112a640\u003e] put_event+0x90/0xc0\n[   74.614373]  [\u003cffffffff8112a740\u003e] perf_release+0x10/0x20\n[   74.620367]  [\u003cffffffff811a3044\u003e] __fput+0xf4/0x280\n[   74.625894]  [\u003cffffffff811a31de\u003e] ____fput+0xe/0x10\n[   74.631387]  [\u003cffffffff81083697\u003e] task_work_run+0xa7/0xe0\n[   74.637452]  [\u003cffffffff81014981\u003e] do_notify_resume+0x71/0xb0\n[   74.643843]  [\u003cffffffff8162fa92\u003e] int_signal+0x12/0x17\n\nTo fix this a new ftrace_ops flag is added that denotes the ftrace_list_end\nftrace_ops stub as just that, a stub. This flag is now checked in the\ncontrol loop and the function is not called if the flag is set.\n\nThanks to Jovi for not just reporting the bug, but also pointing out\nwhere the bug was in the code.\n\nLink: http://lkml.kernel.org/r/514A8855.7090402@redhat.com\nLink: http://lkml.kernel.org/r/1364377499-1900-15-git-send-email-jovi.zhangwei@huawei.com\n\nTested-by: WANG Chao \u003cchaowang@redhat.com\u003e\nReported-by: WANG Chao \u003cchaowang@redhat.com\u003e\nReported-by: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "5000c418840b309251c5887f0b56503aae30f84c",
      "tree": "dd6b37707670ac5eaaba9f395c999328904dd38b",
      "parents": [
        "2930e04d00e113ae24bb2b7c2b58de7b648a62c7"
      ],
      "author": {
        "name": "Jan Kiszka",
        "email": "jan.kiszka@siemens.com",
        "time": "Tue Mar 26 17:53:03 2013 +0100"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@rostedt.homelinux.com",
        "time": "Mon Apr 08 12:24:22 2013 -0400"
      },
      "message": "ftrace: Consistently restore trace function on sysctl enabling\n\nIf we reenable ftrace via syctl, we currently set ftrace_trace_function\nbased on the previous simplistic algorithm. This is inconsistent with\nwhat update_ftrace_function does. So better call that helper instead.\n\nLink: http://lkml.kernel.org/r/5151D26F.1070702@siemens.com\n\nCc: stable@vger.kernel.org\nSigned-off-by: Jan Kiszka \u003cjan.kiszka@siemens.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "2930e04d00e113ae24bb2b7c2b58de7b648a62c7",
      "tree": "60dc173d8370ec69d48f04f074ca78fb152d0c1f",
      "parents": [
        "fd4a5aef002bb57e8a35ed34d8a878034b9bde94"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Tue Mar 26 17:33:00 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@rostedt.homelinux.com",
        "time": "Mon Apr 08 12:24:22 2013 -0400"
      },
      "message": "tracing: Fix race with update_max_tr_single and changing tracers\n\nThe commit 34600f0e9 \"tracing: Fix race with max_tr and changing tracers\"\nfixed the updating of the main buffers with the race of changing\ntracers, but left out the fix to the updating of just a per cpu buffer.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "75761cc15877c155b3849b4e0e0cb3f897faf471",
      "tree": "8ba53195b51c031314c7454720af9d03ee9ec8f3",
      "parents": [
        "67012ab1d2ce871afea4ee55408f233f97d09d07"
      ],
      "author": {
        "name": "Chen Gang",
        "email": "gang.chen@asianux.com",
        "time": "Mon Apr 08 12:12:39 2013 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Apr 08 13:26:56 2013 +0200"
      },
      "message": "ftrace: Fix strncpy() use, use strlcpy() instead of strncpy()\n\nFor NUL terminated string we always need to set \u0027\\0\u0027 at the end.\n\nSigned-off-by: Chen Gang \u003cgang.chen@asianux.com\u003e\nCc: rostedt@goodmis.org\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLink: http://lkml.kernel.org/r/516243B7.9020405@asianux.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "67012ab1d2ce871afea4ee55408f233f97d09d07",
      "tree": "3f44d6c02233abb51848bfa991d571e86397b431",
      "parents": [
        "c97847d2f0eb77c806e650e04d9bbcf79fa05730"
      ],
      "author": {
        "name": "Chen Gang",
        "email": "gang.chen@asianux.com",
        "time": "Mon Apr 08 12:06:44 2013 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Apr 08 13:26:56 2013 +0200"
      },
      "message": "perf: Fix strncpy() use, use strlcpy() instead of strncpy()\n\nFor NUL terminated string we always need to set \u0027\\0\u0027 at the end.\n\nSigned-off-by: Chen Gang \u003cgang.chen@asianux.com\u003e\nCc: rostedt@goodmis.org\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLink: http://lkml.kernel.org/r/51624254.30301@asianux.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "9ca8f8e51003a51382cb4216e9029ee33ccf6c46",
      "tree": "911477b4222741a6efbfabfe17d04bfc4d62bd14",
      "parents": [
        "1f8e8ed05184eed5f9adf48fb2f6be00a907a181"
      ],
      "author": {
        "name": "Kent Overstreet",
        "email": "koverstreet@google.com",
        "time": "Fri Apr 13 21:56:43 2012 -0400"
      },
      "committer": {
        "name": "Kent Overstreet",
        "email": "koverstreet@google.com",
        "time": "Sat Mar 23 15:53:52 2013 -0700"
      },
      "message": "Export blk_fill_rwbs()\n\nExported so it can be used by bcache\u0027s tracepoints\n\nSigned-off-by: Kent Overstreet \u003ckoverstreet@google.com\u003e\nCC: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCC: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCC: Ingo Molnar \u003cmingo@redhat.com\u003e\n"
    },
    {
      "commit": "22f45649ce08642ad7df238d5c25fa5c86bfdd31",
      "tree": "f67c377dabc78fa54b3b815716751ccae4e0927c",
      "parents": [
        "7fe70b579c9e3daba71635e31b6189394e7b79d3"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 17:23:20 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Mar 20 21:55:02 2013 -0400"
      },
      "message": "tracing: Update debugfs README file\n\nUpdate the README file in debugfs/tracing to something more useful.\nWhat\u0027s currently in the file is very old and what it shows doesn\u0027t\nhave much use. Heck, it tells you how to mount debugfs! But to read\nthis file you would have already needed to mount it.\n\nReplace the file with current up-to-date information. It\u0027s rather\nlimited, but what do you expect from a pseudo README file.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "1f1b396758eff67b43b226904e1748f1e4272b4d",
      "tree": "b9dc20f6c135edc4ff7857323430f71f619c3c7b",
      "parents": [
        "d610d98b5de6860feb21539726e9af7c9094151c",
        "613f04a0f51e6e68ac6fe571ab79da3c0a5eb4da"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Mar 18 09:48:29 2013 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Mar 18 09:48:29 2013 +0100"
      },
      "message": "Merge branch \u0027tip/perf/urgent-2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace into perf/urgent\n\nPull tracing fixes from Steven Rostedt.\n\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "7fe70b579c9e3daba71635e31b6189394e7b79d3",
      "tree": "742f410da0aa17257e7d2c4aebe538729e27338f",
      "parents": [
        "52f6ad6dc3f4c6de598fe7cc9b629888d624aa52"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 13:10:35 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 19:24:56 2013 -0400"
      },
      "message": "tracing: Fix ftrace_dump()\n\nftrace_dump() had a lot of issues. What ftrace_dump() does, is when\nftrace_dump_on_oops is set (via a kernel parameter or sysctl), it\nwill dump out the ftrace buffers to the console when either a oops,\npanic, or a sysrq-z occurs.\n\nThis was written a long time ago when ftrace was fragile to recursion.\nBut it wasn\u0027t written well even for that.\n\nThere\u0027s a possible deadlock that can occur if a ftrace_dump() is happening\nand an NMI triggers another dump. This is because it grabs a lock\nbefore checking if the dump ran.\n\nIt also totally disables ftrace, and tracing for no good reasons.\n\nAs the ring_buffer now checks if it is read via a oops or NMI, where\nthere\u0027s a chance that the buffer gets corrupted, it will disable\nitself. No need to have ftrace_dump() do the same.\n\nftrace_dump() is now cleaned up where it uses an atomic counter to\nmake sure only one dump happens at a time. A simple atomic_inc_return()\nis enough that is needed for both other CPUs and NMIs. No need for\na spinlock, as if one CPU is running the dump, no other CPU needs\nto do it too.\n\nThe tracing_on variable is turned off and not turned on. The original\ncode did this, but it wasn\u0027t pretty. By just disabling this variable\nwe get the result of not seeing traces that happen between crashes.\n\nFor sysrq-z, it doesn\u0027t get turned on, but the user can always write\na \u00271\u0027 to the tracing_on file. If they are using sysrq-z, then they should\nknow about tracing_on.\n\nThe new code is much easier to read and less error prone. No more\ndeadlock possibility when an NMI triggers here.\n\nReported-by: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nCc: stable@vger.kernel.org\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "52f6ad6dc3f4c6de598fe7cc9b629888d624aa52",
      "tree": "ae3d4edf8b44bf9e77e970e58411420e6e164b60",
      "parents": [
        "36a78e9e8792bfb052643eaf9374f837e634982c"
      ],
      "author": {
        "name": "zhangwei(Jovi)",
        "email": "jovi.zhangwei@huawei.com",
        "time": "Mon Mar 11 15:14:03 2013 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 13:22:10 2013 -0400"
      },
      "message": "tracing: Rename trace_event_mutex to trace_event_sem\n\ntrace_event_mutex is an rw semaphore now, not a mutex, change the name.\n\nLink: http://lkml.kernel.org/r/513D843B.40109@huawei.com\n\nSigned-off-by: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\n[ Forward ported to my new code ]\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "36a78e9e8792bfb052643eaf9374f837e634982c",
      "tree": "2e300f9a052f92ea50d30067d9755c5cca2b952b",
      "parents": [
        "ad7067cebf3253412a7c0a169a9dd056b11e69ac"
      ],
      "author": {
        "name": "zhangwei(Jovi)",
        "email": "jovi.zhangwei@huawei.com",
        "time": "Mon Mar 11 15:13:51 2013 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 13:22:09 2013 -0400"
      },
      "message": "tracing: Fix comment about prefix in arch_syscall_match_sym_name()\n\nppc64 has its own syscall prefix like \".SyS\" or \".sys\". Make the\ncomment in arch_syscall_match_sym_name() more understandable.\n\nLink: http://lkml.kernel.org/r/513D842F.40205@huawei.com\n\nSigned-off-by: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "ad7067cebf3253412a7c0a169a9dd056b11e69ac",
      "tree": "503e8275e837c3ad97e1ddd1db4a14fce2b34606",
      "parents": [
        "b3a8c6fd7bb61c910bd4f80ae1d75056e8f98c19"
      ],
      "author": {
        "name": "zhangwei(Jovi)",
        "email": "jovi.zhangwei@huawei.com",
        "time": "Mon Mar 11 15:13:46 2013 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 13:22:08 2013 -0400"
      },
      "message": "tracing: Convert trace_destroy_fields() to static\n\ntrace_destroy_fields() is not used outside of the file. It can be\na static function.\n\nLink: http://lkml.kernel.org/r/513D842A.2000907@huawei.com\n\nSigned-off-by: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "b3a8c6fd7bb61c910bd4f80ae1d75056e8f98c19",
      "tree": "6f99dd222887d6ec1b5ba785863d3ad1cd0156ff",
      "parents": [
        "bd6df18716fa45bc4aa9587aca033de909e5382b"
      ],
      "author": {
        "name": "zhangwei(Jovi)",
        "email": "jovi.zhangwei@huawei.com",
        "time": "Mon Mar 11 15:13:42 2013 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 13:22:07 2013 -0400"
      },
      "message": "tracing: Move find_event_field() into trace_events.c\n\nBy moving find_event_field() and trace_find_field() into trace_events.c,\nthe ftrace_common_fields list and trace_get_fields() can become local to\nthe trace_events.c file.\n\nfind_event_field() is renamed to trace_find_event_field() to conform to\nthe tracing global function names.\n\nLink: http://lkml.kernel.org/r/513D8426.9070109@huawei.com\n\nSigned-off-by: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\n[ rostedt: Modified trace_find_field() to trace_find_event_field() ]\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "bd6df18716fa45bc4aa9587aca033de909e5382b",
      "tree": "843a8da1a65e05067621eef60bf87cb50b1e5a35",
      "parents": [
        "687c878afb526a0c3117dbc408ca76ad80d689f7"
      ],
      "author": {
        "name": "zhangwei(Jovi)",
        "email": "jovi.zhangwei@huawei.com",
        "time": "Mon Mar 11 15:13:37 2013 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 13:22:06 2013 -0400"
      },
      "message": "tracing: Use TRACE_MAX_PRINT instead of constant\n\nTRACE_MAX_PRINT macro is defined, but is not used.\n\nLink: http://lkml.kernel.org/r/513D8421.4070404@huawei.com\n\nSigned-off-by: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "687c878afb526a0c3117dbc408ca76ad80d689f7",
      "tree": "235c0d1a9e293dfecde5d28dc42ff51e9452df62",
      "parents": [
        "6c43e554a2a5c1f2caf1733d46719bc58de3e37b"
      ],
      "author": {
        "name": "zhangwei(Jovi)",
        "email": "jovi.zhangwei@huawei.com",
        "time": "Mon Mar 11 15:13:29 2013 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 13:22:05 2013 -0400"
      },
      "message": "tracing: Use pr_warn_once instead of open coded implementation\n\nUse pr_warn_once, instead of making an open coded implementation.\n\nLink: http://lkml.kernel.org/r/513D8419.20400@huawei.com\n\nSigned-off-by: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "6c43e554a2a5c1f2caf1733d46719bc58de3e37b",
      "tree": "032b7ade3b4c0c24e9e89c9bf6fd3f37947c58cf",
      "parents": [
        "8d016091d10953e00f9d2c0125cc0ddd46c23a6a"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 11:32:53 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 13:21:16 2013 -0400"
      },
      "message": "ring-buffer: Add ring buffer startup selftest\n\nWhen testing my large changes to the ftrace system, there was\na bug that looked like the ring buffer was dropping events.\nI wrote up a quick integrity checker of the ring buffer to\nsee if it was.\n\nAlthough the bug ended up being something stupid I did in ftrace,\nand had nothing to do with the ring buffer, I figured if I spent\nthe time to write up this test, I might as well include it in the\nkernel.\n\nI cleaned it up a bit, as the original version was rather ugly.\nNot saying this version is pretty, but it\u0027s a beauty queen\ncompared to what I original wrote.\n\nTo enable the start up test, set CONFIG_RING_BUFFER_STARTUP_TEST.\n\nNote, it runs for 10 seconds, so it will slow your boot time\nby at least 10 more seconds.\n\nWhat it does is documented in both the comments and the Kconfig\nhelp.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "76f119179b8ce3188a8c61d2486d37810a416655",
      "tree": "aa8e25756c29af47625d53b37896bca859408b63",
      "parents": [
        "8aacf017b065a805d27467843490c976835eb4a5"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Thu Mar 14 17:53:25 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:10 2013 -0400"
      },
      "message": "tracing: Add \"perf\" trace_clock\n\nThe function trace_clock() calls \"local_clock()\" which is exactly\nthe same clock that perf uses. I\u0027m not sure why perf doesn\u0027t call\ntrace_clock(), as trace_clock() doesn\u0027t have any users.\n\nBut now it does. As trace_clock() calls local_clock() like perf does,\nI added the trace_clock \"perf\" option that uses trace_clock().\n\nNow the ftrace buffers can use the same clock as perf uses. This\nwill be useful when perf starts reading the ftrace buffers, and will\nbe able to interleave them with the same clock data.\n\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "8aacf017b065a805d27467843490c976835eb4a5",
      "tree": "3e3ee23502cf2cc6d02baa1f7625b1ef16611eda",
      "parents": [
        "328df4759c03e2c3e7429cc6cb0e180c38f32063"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Thu Mar 14 13:13:45 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:09 2013 -0400"
      },
      "message": "tracing: Add \"uptime\" trace clock that uses jiffies\n\nAdd a simple trace clock called \"uptime\" for those that are\ninterested in the uptime of the trace. It uses jiffies as that\u0027s\nthe safest method, as other uptime clocks grab seq locks, which could\ncause a deadlock if taken from an event or function tracer.\n\nRequested-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "328df4759c03e2c3e7429cc6cb0e180c38f32063",
      "tree": "874c0aa7642cfe8ce1e4512464eae1d33e99391b",
      "parents": [
        "4df297129f622bdc18935c856f42b9ddd18f9f28"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Thu Mar 14 12:10:40 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:08 2013 -0400"
      },
      "message": "tracing: Add function-trace option to disable function tracing of latency tracers\n\nCurrently, the only way to stop the latency tracers from doing function\ntracing is to fully disable the function tracer from the proc file\nsystem:\n\n  echo 0 \u003e /proc/sys/kernel/ftrace_enabled\n\nThis is a big hammer approach as it disables function tracing for\nall users. This includes kprobes, perf, stack tracer, etc.\n\nInstead, create a function-trace option that the latency tracers can\ncheck to determine if it should enable function tracing or not.\nThis option can be set or cleared even while the tracer is active\nand the tracers will disable or enable function tracing depending\non how the option was set.\n\nInstead of using the proc file, disable latency function tracing with\n\n  echo 0 \u003e /debug/tracing/options/function-trace\n\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Clark Williams \u003cwilliams@redhat.com\u003e\nCc: John Kacur \u003cjkacur@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "4df297129f622bdc18935c856f42b9ddd18f9f28",
      "tree": "71e6271f1ab2f2ba260df6c44aaed8ba156ac54a",
      "parents": [
        "d4ecbfc49b4b1d4b597fb5ba9e4fa25d62f105c5"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Wed Mar 13 23:34:22 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:07 2013 -0400"
      },
      "message": "tracing: Remove most or all of stack tracer stack size from stack_max_size\n\nCurrently, the depth reported in the stack tracer stack_trace file\ndoes not match the stack_max_size file. This is because the stack_max_size\nincludes the overhead of stack tracer itself while the depth does not.\n\nThe first time a max is triggered, a calculation is not performed that\nfigures out the overhead of the stack tracer and subtracts it from\nthe stack_max_size variable. The overhead is stored and is subtracted\nfrom the reported stack size for comparing for a new max.\n\nNow the stack_max_size corresponds to the reported depth:\n\n # cat stack_max_size\n4640\n\n # cat stack_trace\n        Depth    Size   Location    (48 entries)\n        -----    ----   --------\n  0)     4640      32   _raw_spin_lock+0x18/0x24\n  1)     4608     112   ____cache_alloc+0xb7/0x22d\n  2)     4496      80   kmem_cache_alloc+0x63/0x12f\n  3)     4416      16   mempool_alloc_slab+0x15/0x17\n[...]\n\nWhile testing against and older gcc on x86 that uses mcount instead\nof fentry, I found that pasing in ip + MCOUNT_INSN_SIZE let the\nstack trace show one more function deep which was missing before.\n\nCc: stable@vger.kernel.org\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "d4ecbfc49b4b1d4b597fb5ba9e4fa25d62f105c5",
      "tree": "f5e73b6e7c125c41016728176b2addcf0432b202",
      "parents": [
        "87889501d0adfae10e3b0f0e6f2d7536eed9ae84"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Wed Mar 13 21:25:35 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:07 2013 -0400"
      },
      "message": "tracing: Fix stack tracer with fentry use\n\nWhen gcc 4.6 on x86 is used, the function tracer will use the new\noption -mfentry which does a call to \"fentry\" at every function\ninstead of \"mcount\". The significance of this is that fentry is\ncalled as the first operation of the function instead of the mcount\nusage of being called after the stack.\n\nThis causes the stack tracer to show some bogus results for the size\nof the last function traced, as well as showing \"ftrace_call\" instead\nof the function. This is due to the stack frame not being set up\nby the function that is about to be traced.\n\n # cat stack_trace\n        Depth    Size   Location    (48 entries)\n        -----    ----   --------\n  0)     4824     216   ftrace_call+0x5/0x2f\n  1)     4608     112   ____cache_alloc+0xb7/0x22d\n  2)     4496      80   kmem_cache_alloc+0x63/0x12f\n\nThe 216 size for ftrace_call includes both the ftrace_call stack\n(which includes the saving of registers it does), as well as the\nstack size of the parent.\n\nTo fix this, if CC_USING_FENTRY is defined, then the stack_tracer\nwill reserve the first item in stack_dump_trace[] array when\ncalling save_stack_trace(), and it will fill it in with the parent ip.\nThen the code will look for the parent pointer on the stack and\ngive the real size of the parent\u0027s stack pointer:\n\n # cat stack_trace\n        Depth    Size   Location    (14 entries)\n        -----    ----   --------\n  0)     2640      48   update_group_power+0x26/0x187\n  1)     2592     224   update_sd_lb_stats+0x2a5/0x4ac\n  2)     2368     160   find_busiest_group+0x31/0x1f1\n  3)     2208     256   load_balance+0xd9/0x662\n\nI\u0027m Cc\u0027ing stable, although it\u0027s not urgent, as it only shows bogus\nsize for item #0, the rest of the trace is legit. It should still be\ncorrected in previous stable releases.\n\nCc: stable@vger.kernel.org\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "87889501d0adfae10e3b0f0e6f2d7536eed9ae84",
      "tree": "c103cc8bf1687f5ffe54ff7f17c7672bda20cad1",
      "parents": [
        "dd42cd3ea96d687f15525c4f14fa582702db223f"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Wed Mar 13 20:43:57 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:06 2013 -0400"
      },
      "message": "tracing: Use stack of calling function for stack tracer\n\nUse the stack of stack_trace_call() instead of check_stack() as\nthe test pointer for max stack size. It makes it a bit cleaner\nand a little more accurate.\n\nAdding stable, as a later fix depends on this patch.\n\nCc: stable@vger.kernel.org\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "dd42cd3ea96d687f15525c4f14fa582702db223f",
      "tree": "135eb362cc41f54392d10af19fc4e10ef7060081",
      "parents": [
        "c142be8ebe0b7bf73c8a0063925623f3e4b980c0"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Wed Mar 13 10:17:50 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:05 2013 -0400"
      },
      "message": "tracing: Add function probe to trigger stack traces\n\nAdd a function probe that will cause a stack trace to be traced in\nthe ring buffer when the given function(s) are called.\n\nformat is:\n\n \u003cfunction\u003e:stacktrace[:\u003ccount\u003e]\n\n echo \u0027schedule:stacktrace\u0027 \u003e /debug/tracing/set_ftrace_filter\n cat /debug/tracing/trace_pipe\n     kworker/2:0-4329  [002] ...2  2933.558007: \u003cstack trace\u003e\n \u003d\u003e kthread\n \u003d\u003e ret_from_fork\n          \u003cidle\u003e-0     [000] .N.2  2933.558019: \u003cstack trace\u003e\n \u003d\u003e rest_init\n \u003d\u003e start_kernel\n \u003d\u003e x86_64_start_reservations\n \u003d\u003e x86_64_start_kernel\n     kworker/2:0-4329  [002] ...2  2933.558109: \u003cstack trace\u003e\n \u003d\u003e kthread\n \u003d\u003e ret_from_fork\n[...]\n\nThis can be set to only trace a specific amount of times:\n\n echo \u0027schedule:stacktrace:3\u0027 \u003e /debug/tracing/set_ftrace_filter\n cat /debug/tracing/trace_pipe\n           \u003c...\u003e-58    [003] ...2   841.801694: \u003cstack trace\u003e\n \u003d\u003e kthread\n \u003d\u003e ret_from_fork\n          \u003cidle\u003e-0     [001] .N.2   841.801697: \u003cstack trace\u003e\n \u003d\u003e start_secondary\n           \u003c...\u003e-2059  [001] ...2   841.801736: \u003cstack trace\u003e\n \u003d\u003e wait_for_common\n \u003d\u003e wait_for_completion\n \u003d\u003e flush_work\n \u003d\u003e tty_flush_to_ldisc\n \u003d\u003e input_available_p\n \u003d\u003e n_tty_poll\n \u003d\u003e tty_poll\n \u003d\u003e do_select\n \u003d\u003e core_sys_select\n \u003d\u003e sys_select\n \u003d\u003e system_call_fastpath\n\nTo remove these:\n\n echo \u0027!schedule:stacktrace\u0027 \u003e /debug/tracing/set_ftrace_filter\n echo \u0027!schedule:stacktrace:0\u0027 \u003e /debug/tracing/set_ftrace_filter\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "c142be8ebe0b7bf73c8a0063925623f3e4b980c0",
      "tree": "b4f05278ba776036475efe7bba7273568fd6c1bf",
      "parents": [
        "3cd715de261182413b3487abfffe1b6af41b81b3"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Wed Mar 13 09:55:57 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:05 2013 -0400"
      },
      "message": "tracing: Add skip argument to trace_dump_stack()\n\nAltough the trace_dump_stack() already skips three functions in\nthe call to stack trace, which gets the stack trace to start\nat the caller of the function, the caller may want to skip some\nmore too (as it may have helper functions).\n\nAdd a skip argument to the trace_dump_stack() that lets the caller\nskip back tracing functions that it doesn\u0027t care about.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "3cd715de261182413b3487abfffe1b6af41b81b3",
      "tree": "14d9a48d2aa31eb1ad387477376e41f25031238f",
      "parents": [
        "417944c4c7a0f657158d0515f3b8e8c043fd788f"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Tue Mar 12 19:35:13 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:04 2013 -0400"
      },
      "message": "tracing: Add function probe triggers to enable/disable events\n\nAdd triggers to function tracer that lets an event get enabled or\ndisabled when a function is called:\n\nformat is:\n\n \u003cfunction\u003e:enable_event:\u003csystem\u003e:\u003cevent\u003e[:\u003ccount\u003e]\n \u003cfunction\u003e:disable_event:\u003csystem\u003e:\u003cevent\u003e[:\u003ccount\u003e]\n\n echo \u0027schedule:enable_event:sched:sched_switch\u0027 \u003e /debug/tracing/set_ftrace_filter\n\nEvery time schedule is called, it will enable the sched_switch event.\n\n echo \u0027schedule:disable_event:sched:sched_switch:2\u0027 \u003e /debug/tracing/set_ftrace_filter\n\nThe first two times schedule is called while the sched_switch\nevent is enabled, it will disable it. It will not count for a time\nthat the event is already disabled (or enabled for enable_event).\n\n[ fixed return without mutex_unlock() - thanks to Dan Carpenter and smatch ]\n\nCc: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nCc: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "417944c4c7a0f657158d0515f3b8e8c043fd788f",
      "tree": "838e9bb09f8df63af3adf5b865d3781eeac8d6ba",
      "parents": [
        "7818b3886545f89549185e4023743e2df91d1fa1"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Tue Mar 12 13:26:18 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:03 2013 -0400"
      },
      "message": "tracing: Add a way to soft disable trace events\n\nIn order to let triggers enable or disable events, we need a \u0027soft\u0027\nmethod for doing so. For example, if a function probe is added that\nlets a user enable or disable events when a function is called, that\nchange must be done without taking locks or a mutex, and definitely\nit can\u0027t sleep. But the full enabling of a tracepoint is expensive.\n\nBy adding a \u0027SOFT_DISABLE\u0027 flag, and converting the flags to be updated\nwithout the protection of a mutex (using set/clear_bit()), this soft\ndisable flag can be used to allow critical sections to enable or disable\nevents from being traced (after the event has been placed into \"SOFT_MODE\").\n\nSome caveats though: The comm recorder (to map pids with a comm) can not\nbe soft disabled (yet). If you disable an event with with a \"soft\"\ndisable and wait a while before reading the trace, the comm cache may be\nreplaced and you\u0027ll get a bunch of \u003c...\u003e for comms in the trace.\n\nReading the \"enable\" file for an event that is disabled will now give\nyou \"0*\" where the \u0027*\u0027 denotes that the tracepoint is still active but\nthe event itself is \"disabled\".\n\n[ fixed _BIT used in \u0026 operation : thanks to Dan Carpenter and smatch ]\n\nCc: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nCc: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "7818b3886545f89549185e4023743e2df91d1fa1",
      "tree": "1037f3bb76e18594a9267d27afc27bbdf02b8e65",
      "parents": [
        "e67efb93f0e9130174293ffaa5975f87b301b531"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Wed Mar 13 12:42:58 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:03 2013 -0400"
      },
      "message": "ftrace: Use manual free after synchronize_sched() not call_rcu_sched()\n\nThe entries to the probe hash must be freed after a synchronize_sched()\nafter the entry has been removed from the hash.\n\nAs the entries are registered with ops that may have their own callbacks,\nand these callbacks may sleep, we can not use call_rcu_sched() because\nthe rcu callbacks registered with that are called from a softirq context.\n\nInstead of using call_rcu_sched(), manually save the entries on a free_list\nand at the end of the loop that removes the entries, do a synchronize_sched()\nand then go through the free_list, freeing the entries.\n\nCc: Paul McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "e67efb93f0e9130174293ffaa5975f87b301b531",
      "tree": "344cadb55d5d50e0ae0473a8404a6893d8a3183b",
      "parents": [
        "57d01ad09721fb7719c4c8c72b434398186f35a0"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Tue Mar 12 15:07:59 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:02 2013 -0400"
      },
      "message": "ftrace: Clean up function probe methods\n\nWhen a function probe is created, each function that the probe is\nattached to, a \"callback\" method is called. On release of the probe,\neach function entry calls the \"free\" method.\n\nFirst, \"callback\" is a confusing name and does not really match what\nit does. Callback sounds like it will be called when the probe\ntriggers. But that\u0027s not the case. This is really an \"init\" function,\nso lets rename it as such.\n\nSecondly, both \"init\" and \"free\" do not pass enough information back\nto the handlers. Pass back the ops, ip and data for each time the\nmethod is called. We have the information, might as well use it.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "77fd5c15e3216b901be69047ca43b05ae9099951",
      "tree": "1790b9bacd1d371cf03902efaf99cdc9d08abdec",
      "parents": [
        "3209cff4490bee55fd2bc1d087cb8ecf2a686a88"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Tue Mar 12 11:49:18 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:01 2013 -0400"
      },
      "message": "tracing: Add snapshot trigger to function probes\n\n echo \u0027schedule:snapshot:1\u0027 \u003e /debug/tracing/set_ftrace_filter\n\nThis will cause the scheduler to trigger a snapshot the next time\nit\u0027s called (you can use any function that\u0027s not called by NMI).\n\nEven though it triggers only once, you still need to remove it with:\n\n echo \u0027!schedule:snapshot:0\u0027 \u003e /debug/tracing/set_ftrace_filter\n\nThe :1 can be left off for the first command:\n\n echo \u0027schedule:snapshot\u0027 \u003e /debug/tracing/set_ftrace_filter\n\nBut this will cause all calls to schedule to trigger a snapshot.\nThis must be removed without the \u0027:0\u0027\n\n echo \u0027!schedule:snapshot\u0027 \u003e /debug/tracing/set_ftrace_filter\n\nAs adding a \"count\" is a different operation (internally).\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "3209cff4490bee55fd2bc1d087cb8ecf2a686a88",
      "tree": "0fd63cd5faa888c44b5d2a20ffd5048fcbd8dccf",
      "parents": [
        "e1df4cb682ab2c3c2981c8efa4aec044e61f4e06"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Tue Mar 12 11:17:54 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:00 2013 -0400"
      },
      "message": "tracing: Add alloc/free_snapshot() to replace duplicate code\n\nAdd alloc_snapshot() and free_snapshot() to allocate and free the\nsnapshot buffer respectively, and use these to remove duplicate\ncode.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "e1df4cb682ab2c3c2981c8efa4aec044e61f4e06",
      "tree": "2ca14d5b02052f2fec06a567fdb048aa7943a4f4",
      "parents": [
        "8380d24860e9d1659ab22896b86d7fe591c424fa"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Tue Mar 12 10:09:42 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:00 2013 -0400"
      },
      "message": "ftrace: Fix function probe to only enable needed functions\n\nCurrently the function probe enables all functions and runs a \"hash\"\nagainst every function call to see if it should call a probe. This\nis extremely wasteful.\n\nNote, a probe is something like:\n\n  echo schedule:traceoff \u003e /debug/tracing/set_ftrace_filter\n\nWhen schedule is called, the probe will disable tracing. But currently,\nit has a call back for *all* functions, and checks to see if the\ncalled function is the probe that is needed.\n\nThe probe function has been created before ftrace was rewritten to\nallow for more than one \"op\" to be registered by the function tracer.\nWhen probes were created, it couldn\u0027t limit the functions without also\nlimiting normal function calls. But now we can, it\u0027s about time\nto update the probe code.\n\nTodo, have separate ops for different entries. That is, assign\na ftrace_ops per probe, instead of one op for all probes. But\nas there\u0027s not many probes assigned, this may not be that urgent.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "8380d24860e9d1659ab22896b86d7fe591c424fa",
      "tree": "81b01cb06040edb01a577c91f01cc4a52ffa4e22",
      "parents": [
        "8b8fa62c60e03a53c46324075a8dc25821741daa"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Sat Mar 09 08:56:43 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:59 2013 -0400"
      },
      "message": "ftrace: Separate unlimited probes from count limited probes\n\nThe function tracing probes that trigger traceon or traceoff can be\nset to unlimited, or given a count of # of times to execute.\n\nBy separating these two types of probes, we can then use the dynamic\nftrace function filtering directly, and remove the brute force\n\"check if this function called is my probe\" routines in ftrace.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "8b8fa62c60e03a53c46324075a8dc25821741daa",
      "tree": "0ae18b4534472fbf870461c050789f5ddabbf0d3",
      "parents": [
        "1c31714328be90764e46716f31fb0bd6da44c305"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Tue Mar 12 09:25:00 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:58 2013 -0400"
      },
      "message": "tracing: Consolidate ftrace_trace_onoff_unreg() into callback\n\nThe only thing ftrace_trace_onoff_unreg() does is to do a strcmp()\nagainst the cmd parameter to determine what op to unregister. But\nthis compare is also done after the location that this function is\ncalled (and returns). By moving the check for \u0027!\u0027 to unregister after\nthe strcmp(), the callback function itself can just do the unregister\nand we can get rid of the helper function.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "1c31714328be90764e46716f31fb0bd6da44c305",
      "tree": "749d35b272ef7bc5f7c1ee84070d23afe2b425a5",
      "parents": [
        "1b22e382ab40b0e3ee5abb3e310dffb16fee22aa"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Sat Mar 09 08:36:53 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:58 2013 -0400"
      },
      "message": "tracing: Consolidate updating of count for traceon/off\n\nRemove some duplicate code and replace it with a helper function.\nThis makes the code a it cleaner.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "1b22e382ab40b0e3ee5abb3e310dffb16fee22aa",
      "tree": "2e6ca7c130fb6420ba955072275218c7ec287511",
      "parents": [
        "ca268da6e415448a43138e1abc5d5f057af319d7"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Sat Mar 09 00:56:08 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:57 2013 -0400"
      },
      "message": "tracing: Let tracing_snapshot() be used by modules but not NMI\n\nAdd EXPORT_SYMBOL_GPL() to let the tracing_snapshot() functions be\ncalled from modules.\n\nAlso add a test to see if the snapshot was called from NMI context\nand just warn in the tracing buffer if so, and return.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "ca268da6e415448a43138e1abc5d5f057af319d7",
      "tree": "33fcaf68989e12fca96ad86bdece7eaac16d1545",
      "parents": [
        "9d3c752c062e3266f1051ba0825276ea1e2777da"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Sat Mar 09 00:40:58 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:56 2013 -0400"
      },
      "message": "tracing: Add internal ftrace trace_puts() for ftrace to use\n\nThere\u0027s a few places that ftrace uses trace_printk() for internal\nuse, but this requires context (normal, softirq, irq, NMI) buffers\nto keep things lockless. But the trace_puts() does not, as it can\nwrite the string directly into the ring buffer. Make a internal helper\nfor trace_puts() and have the internal functions use that.\n\nThis way the extra context buffers are not used.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "09ae72348eccb60e304cf8ce94653f4a78fcd407",
      "tree": "28c48644f71df4752556d9f5b15efb889e57af56",
      "parents": [
        "153e8ed913b022d2003866a848af9fadc041403f"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 08 21:02:34 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:55 2013 -0400"
      },
      "message": "tracing: Add trace_puts() for even faster trace_printk() tracing\n\nThe trace_printk() is extremely fast and is very handy as it can be\nused in any context (including NMIs!). But it still requires scanning\nthe fmt string for parsing the args. Even the trace_bprintk() requires\na scan to know what args will be saved, although it doesn\u0027t copy the\nformat string itself.\n\nSeveral times trace_printk() has no args, and wastes cpu cycles scanning\nthe fmt string.\n\nAdding trace_puts() allows the developer to use an even faster\ntracing method that only saves the pointer to the string in the\nring buffer without doing any format parsing at all. This will\nhelp remove even more of the \"Heisenbug\" effect, when debugging.\n\nAlso fixed up the F_printk()s for the ftrace internal bprint and print events.\n\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "153e8ed913b022d2003866a848af9fadc041403f",
      "tree": "f4e1281c8fa0e41fef569c903ed692b829647f96",
      "parents": [
        "55034cd6e648155393b0d665eef76b38d49ad6bf"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 08 10:40:07 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:54 2013 -0400"
      },
      "message": "tracing: Fix the branch tracer that broke with buffer change\n\nThe changce to add the trace_buffer struct to have the trace array\nhave both the main buffer and max buffer broke the branch tracer\nbecause the change did not update that code. As the branch tracer\nadds a significant amount of overhead, and must be selected via\na selection (not a allyesconfig) it was missed in testing.\n\nReported-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "55034cd6e648155393b0d665eef76b38d49ad6bf",
      "tree": "3d51bc6a1f8c7bdf7f728113b3853f4c20441be9",
      "parents": [
        "f4e781c0a89d5810729772290441ac7d61f321ec"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "srostedt@redhat.com",
        "time": "Thu Mar 07 22:48:09 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:53 2013 -0400"
      },
      "message": "tracing: Add alloc_snapshot kernel command line parameter\n\nIf debugging the kernel, and the developer wants to use\ntracing_snapshot() in places where tracing_snapshot_alloc() may\nbe difficult (or more likely, the developer is lazy and doesn\u0027t\nwant to bother with tracing_snapshot_alloc() at all), then adding\n\n  alloc_snapshot\n\nto the kernel command line parameter will tell ftrace to allocate\nthe snapshot buffer (if configured) when it allocates the main\ntracing buffer.\n\nI also noticed that ring_buffer_expanded and tracing_selftest_disabled\nhad inconsistent use of boolean \"true\" and \"false\" with \"0\" and \"1\".\nI cleaned that up too.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "f4e781c0a89d5810729772290441ac7d61f321ec",
      "tree": "bdfdb25b9ebc63ed0f552bc579f04d217f011370",
      "parents": [
        "f5eb5588262cab7232ed1d77cf612b327db50767"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "srostedt@redhat.com",
        "time": "Thu Mar 07 11:10:56 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:53 2013 -0400"
      },
      "message": "tracing: Move the tracing selftest code into its own function\n\nMove the tracing startup selftest code into its own function and\nwhen not enabled, always have that function succeed.\n\nThis makes the register_tracer() function much more readable.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "f5eb5588262cab7232ed1d77cf612b327db50767",
      "tree": "77ccc8e85f9be6af5cce5e689b6766a1fadf613b",
      "parents": [
        "ad909e21bbe69f1d39055d346540abd827190eca"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "srostedt@redhat.com",
        "time": "Thu Mar 07 09:27:42 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:52 2013 -0400"
      },
      "message": "ring-buffer: Do not use schedule_work_on() for current CPU\n\nThe ring buffer updates when done while the ring buffer is active,\nneeds to be completed on the CPU that is used for the ring buffer\nper_cpu buffer. To accomplish this, schedule_work_on() is used to\nschedule work on the given CPU.\n\nNow there\u0027s no reason to use schedule_work_on() if the process\ndoing the update happens to be on the CPU that it is processing.\nIt has already filled the requirement. Instead, just do the work\nand continue.\n\nThis is needed for tracing_snapshot_alloc() where it may be called\nreally early in boot, where the work queues have not been set up yet.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "ad909e21bbe69f1d39055d346540abd827190eca",
      "tree": "0bb6dc03e46ab15d3fef884029bf1c4c8b3c172a",
      "parents": [
        "a695cb5816228f86576f5f5c6809fdf8ed382ece"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "srostedt@redhat.com",
        "time": "Wed Mar 06 21:45:37 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:51 2013 -0400"
      },
      "message": "tracing: Add internal tracing_snapshot() functions\n\nThe new snapshot feature is quite handy. It\u0027s a way for the user\nto take advantage of the spare buffer that, until then, only\nthe latency tracers used to \"snapshot\" the buffer when it hit\na max latency. Now users can trigger a \"snapshot\" manually when\nsome condition is hit in a program. But a snapshot currently can\nnot be triggered by a condition inside the kernel.\n\nWith the addition of tracing_snapshot() and tracing_snapshot_alloc(),\nsnapshots can now be taking when a condition is hit, and the\ndeveloper wants to snapshot the case without stopping the trace.\n\nNote, any snapshot will overwrite the old one, so take care\nin how this is done.\n\nThese new functions are to be used like tracing_on(), tracing_off()\nand trace_printk() are. That is, they should never be called\nin the mainline Linux kernel. They are solely for the purpose\nof debugging.\n\nThe tracing_snapshot() will not allocate a buffer, but it is\nsafe to be called from any context (except NMIs). But if a\nsnapshot buffer isn\u0027t allocated when it is called, it will write\nto the live buffer, complaining about the lack of a snapshot\nbuffer, and then stop tracing (giving you the \"permanent snapshot\").\n\ntracing_snapshot_alloc() will allocate the snapshot buffer if\nit was not already allocated and then take the snapshot. This routine\n*may sleep*, and must be called from context that can sleep.\nThe allocation is done with GFP_KERNEL and not atomic.\n\nIf you need a snapshot in an atomic context, say in early boot,\nthen it is best to call the tracing_snapshot_alloc() before then,\nwhere it will allocate the buffer, and then you can use the\ntracing_snapshot() anywhere you want and still get snapshots.\n\nCc: Hiraku Toyooka \u003chiraku.toyooka.gu@hitachi.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    }
  ],
  "next": "a695cb5816228f86576f5f5c6809fdf8ed382ece"
}
