)]}'
{
  "log": [
    {
      "commit": "f568849edac8611d603e00bd6cbbcfea09395ae6",
      "tree": "b9472d640fe5d87426d38c9d81d946cf197ad3fb",
      "parents": [
        "d9894c228b11273e720bb63ba120d1d326fe9d94",
        "675675ada486dde5bf9aa51665e90706bff11a35"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 30 11:19:05 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 30 11:19:05 2014 -0800"
      },
      "message": "Merge branch \u0027for-3.14/core\u0027 of git://git.kernel.dk/linux-block\n\nPull core block IO changes from Jens Axboe:\n \"The major piece in here is the immutable bio_ve series from Kent, the\n  rest is fairly minor.  It was supposed to go in last round, but\n  various issues pushed it to this release instead.  The pull request\n  contains:\n\n   - Various smaller blk-mq fixes from different folks.  Nothing major\n     here, just minor fixes and cleanups.\n\n   - Fix for a memory leak in the error path in the block ioctl code\n     from Christian Engelmayer.\n\n   - Header export fix from CaiZhiyong.\n\n   - Finally the immutable biovec changes from Kent Overstreet.  This\n     enables some nice future work on making arbitrarily sized bios\n     possible, and splitting more efficient.  Related fixes to immutable\n     bio_vecs:\n\n        - dm-cache immutable fixup from Mike Snitzer.\n        - btrfs immutable fixup from Muthu Kumar.\n\n  - bio-integrity fix from Nic Bellinger, which is also going to stable\"\n\n* \u0027for-3.14/core\u0027 of git://git.kernel.dk/linux-block: (44 commits)\n  xtensa: fixup simdisk driver to work with immutable bio_vecs\n  block/blk-mq-cpu.c: use hotcpu_notifier()\n  blk-mq: for_each_* macro correctness\n  block: Fix memory leak in rw_copy_check_uvector() handling\n  bio-integrity: Fix bio_integrity_verify segment start bug\n  block: remove unrelated header files and export symbol\n  blk-mq: uses page-\u003elist incorrectly\n  blk-mq: use __smp_call_function_single directly\n  btrfs: fix missing increment of bi_remaining\n  Revert \"block: Warn and free bio if bi_end_io is not set\"\n  block: Warn and free bio if bi_end_io is not set\n  blk-mq: fix initializing request\u0027s start time\n  block: blk-mq: don\u0027t export blk_mq_free_queue()\n  block: blk-mq: make blk_sync_queue support mq\n  block: blk-mq: support draining mq queue\n  dm cache: increment bi_remaining when bi_end_io is restored\n  block: fixup for generic bio chaining\n  block: Really silence spurious compiler warnings\n  block: Silence spurious compiler warnings\n  block: Kill bio_pair_split()\n  ...\n"
    },
    {
      "commit": "ba635f8cd20ebc7bddf1eb8e1f4eae28a034e916",
      "tree": "2e1f0c73c8fdedc2523dd29fcf32a366427576e5",
      "parents": [
        "ba6b5084e6cdd34645dc7430eeef0ebfd09f723f",
        "3132e107d608f8753240d82d61303c500fd515b4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 27 08:22:30 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 27 08:22:30 2014 -0800"
      },
      "message": "Merge tag \u0027trace-fixes-3.14\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace\n\nPull tracing fixes from Steven Rostedt:\n \"The first two patches fix the debugfs README file to reflect better\n  the new features added to 3.14.\n\n  The third patch is a minor bugfix to the trace_puts() functions that\n  will crash the system if a developer adds one before the tracing\n  system is setup.  It also affects trace_printk() if it has no\n  arguments, as the code will convert it to a trace_puts() as well.\n\n  Note, this bug will not affect unmodified kernels, as trace_printk()\n  and trace_puts() should only be used by developers for testing\"\n\n* tag \u0027trace-fixes-3.14\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:\n  tracing: Check if tracing is enabled in trace_puts()\n  tracing: Fix formatting of trace README file\n  tracing/README: Add event file usage to tracing mini-HOWTO\n"
    },
    {
      "commit": "3132e107d608f8753240d82d61303c500fd515b4",
      "tree": "2539c98c79927f04ebc1a2ab3ee1517a284c67b1",
      "parents": [
        "71485c45891b8a0fcc4ce22d87251424ab51e096"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 23 12:27:59 2014 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 23 12:27:59 2014 -0500"
      },
      "message": "tracing: Check if tracing is enabled in trace_puts()\n\nIf trace_puts() is used very early in boot up, it can crash the machine\nif it is called before the ring buffer is allocated. If a trace_printk()\nis used with no arguments, then it will be converted into a trace_puts()\nand suffer the same fate.\n\nCc: stable@vger.kernel.org # 3.10+\nFixes: 09ae72348ecc \"tracing: Add trace_puts() for even faster trace_printk() tracing\"\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "71485c45891b8a0fcc4ce22d87251424ab51e096",
      "tree": "3d616ff76f65747963bd2612db14fa0d9036c02e",
      "parents": [
        "26f255646e0ca6fde0e994e2a815ba2b31770dce"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 23 00:10:04 2014 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 23 00:10:04 2014 -0500"
      },
      "message": "tracing: Fix formatting of trace README file\n\nFix the formatting of the README file in the trace debugfs to fit in\nan 80 character window.\n\nAlso add a comment about the event trigger counter with regards to\ntraceon and traceoff.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "26f255646e0ca6fde0e994e2a815ba2b31770dce",
      "tree": "743a8970a2efd0e8915b8318e44ccae7d458be88",
      "parents": [
        "92fdd98cf8bdec4d6b0c510e2f073ac4fd059be8"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tom.zanussi@linux.intel.com",
        "time": "Fri Jan 17 15:11:44 2014 -0600"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jan 22 23:06:57 2014 -0500"
      },
      "message": "tracing/README: Add event file usage to tracing mini-HOWTO\n\nIt would be useful to have a cheat-sheet for everything under\ntracing/events/ alongside the existing text describing the other files\nin the tracing/ dir.\n\nAdd short descriptions of the directories and files under events/\nalong with examples, similar to the existing text for the other files\nin tracing/.\n\nAlso clean up a few minor alignment problems noticed when adding the\nnew text.\n\nLink: http://lkml.kernel.org/r/1389993104.3040.445.camel@empanada\n\nSigned-off-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "60eaa0190f6b39dce18eb1975d9773ed8bc9a534",
      "tree": "aef5a45a59af0f493fe44a267fc6333fb245dc2e",
      "parents": [
        "df32e43a54d04eda35d2859beaf90e3864d53288",
        "92fdd98cf8bdec4d6b0c510e2f073ac4fd059be8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 22 16:35:21 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 22 16:35:21 2014 -0800"
      },
      "message": "Merge tag \u0027trace-3.14\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace\n\nPull tracing updates from Steven Rostedt:\n \"This pull request has a new feature to ftrace, namely the trace event\n  triggers by Tom Zanussi.  A trigger is a way to enable an action when\n  an event is hit.  The actions are:\n\n   o  trace on/off - enable or disable tracing\n   o  snapshot     - save the current trace buffer in the snapshot\n   o  stacktrace   - dump the current stack trace to the ringbuffer\n   o  enable/disable events - enable or disable another event\n\n  Namhyung Kim added updates to the tracing uprobes code.  Having the\n  uprobes add support for fetch methods.\n\n  The rest are various bug fixes with the new code, and minor ones for\n  the old code\"\n\n* tag \u0027trace-3.14\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (38 commits)\n  tracing: Fix buggered tee(2) on tracing_pipe\n  tracing: Have trace buffer point back to trace_array\n  ftrace: Fix synchronization location disabling and freeing ftrace_ops\n  ftrace: Have function graph only trace based on global_ops filters\n  ftrace: Synchronize setting function_trace_op with ftrace_trace_function\n  tracing: Show available event triggers when no trigger is set\n  tracing: Consolidate event trigger code\n  tracing: Fix counter for traceon/off event triggers\n  tracing: Remove double-underscore naming in syscall trigger invocations\n  tracing/kprobes: Add trace event trigger invocations\n  tracing/probes: Fix build break on !CONFIG_KPROBE_EVENT\n  tracing/uprobes: Add @+file_offset fetch method\n  uprobes: Allocate -\u003eutask before handler_chain() for tracing handlers\n  tracing/uprobes: Add support for full argument access methods\n  tracing/uprobes: Fetch args before reserving a ring buffer\n  tracing/uprobes: Pass \u0027is_return\u0027 to traceprobe_parse_probe_arg()\n  tracing/probes: Implement \u0027memory\u0027 fetch method for uprobes\n  tracing/probes: Add fetch{,_size} member into deref fetch method\n  tracing/probes: Move \u0027symbol\u0027 fetch method to kprobes\n  tracing/probes: Implement \u0027stack\u0027 fetch method for uprobes\n  ...\n"
    },
    {
      "commit": "92fdd98cf8bdec4d6b0c510e2f073ac4fd059be8",
      "tree": "0b8a7946835eb969ea2e8fcf335be2f119f696be",
      "parents": [
        "dced341b2d4f06668efaab33f88de5d287c0f45b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Fri Jan 17 07:53:39 2014 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Sun Jan 19 16:53:13 2014 -0500"
      },
      "message": "tracing: Fix buggered tee(2) on tracing_pipe\n\nIn kernel/trace/trace.c we have this:\nstatic void tracing_pipe_buf_release(struct pipe_inode_info *pipe,\n                                     struct pipe_buffer *buf)\n{\n        __free_page(buf-\u003epage);\n}\nstatic const struct pipe_buf_operations tracing_pipe_buf_ops \u003d {\n        .can_merge              \u003d 0,\n        .map                    \u003d generic_pipe_buf_map,\n        .unmap                  \u003d generic_pipe_buf_unmap,\n        .confirm                \u003d generic_pipe_buf_confirm,\n        .release                \u003d tracing_pipe_buf_release,\n        .steal                  \u003d generic_pipe_buf_steal,\n        .get                    \u003d generic_pipe_buf_get,\n};\nwith\nvoid generic_pipe_buf_get(struct pipe_inode_info *pipe, struct pipe_buffer *buf)\n{\n        page_cache_get(buf-\u003epage);\n}\n\nand I don\u0027t see anything that would\u0027ve prevented tee(2) called on the pipe\nthat got stuff spliced into it from that sucker.  -\u003eops-\u003eget() will be\ncalled, then buf gets copied into target pipe\u0027s -\u003ebufs[] and eventually\nreaders get to both copies of the buffer.  With\n\tget_page(page)\n\tlook at that page\n\t__free_page(page)\n\tlook at that page\n\t__free_page(page)\nwhich is not a good thing, to put it mildly.  AFAICS, that ought to use\nthe normal generic_pipe_buf_release() (aka page_cache_release(buf-\u003epage)),\nshouldn\u0027t it?\n\n[\n SDR - As trace_pipe just allocates the page with alloc_page(GFP_KERNEL),\n  and doesn\u0027t do anything special with it (no LRU logic). The __free_page()\n  should be fine, as it wont actually free a page with reference count.\n  Maybe there\u0027s a chance to leak memory? Anyway, This change is at a minimum\n  good for being symmetric with generic_pipe_buf_get, it is fine to add.\n]\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n[ SDR - Removed no longer used tracing_pipe_buf_release ]\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "dced341b2d4f06668efaab33f88de5d287c0f45b",
      "tree": "549df748615b1e735c4d8d7254c8f63076280af2",
      "parents": [
        "a4c35ed241129dd142be4cadb1e5a474a56d5464"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jan 14 10:19:46 2014 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jan 14 10:19:46 2014 -0500"
      },
      "message": "tracing: Have trace buffer point back to trace_array\n\nThe trace buffer has a descriptor pointer that goes back to the trace\narray. But it was never assigned. Luckily, nothing uses it (yet), but\nit will in the future.\n\nAlthough nothing currently uses this, if any of the new features get\nbackported to older kernels, and because this is such a simple change,\nI\u0027m marking it for stable too.\n\nCc: stable@vger.kernel.org # v3.10+\nFixes: 12883efb670c \"tracing: Consolidate max_tr into main trace_array structure\"\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "a4c35ed241129dd142be4cadb1e5a474a56d5464",
      "tree": "c003e1fba1f088b31c99d5e388b7992297265aed",
      "parents": [
        "23a8e8441a0a74dd612edf81dc89d1600bc0a3d1"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jan 13 12:56:21 2014 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jan 13 12:56:21 2014 -0500"
      },
      "message": "ftrace: Fix synchronization location disabling and freeing ftrace_ops\n\nThe synchronization needed after ftrace_ops are unregistered must happen\nafter the callback is disabled from becing called by functions.\n\nThe current location happens after the function is being removed from the\ninternal lists, but not after the function callbacks were disabled, leaving\nthe functions susceptible of being called after their callbacks are freed.\n\nThis affects perf and any externel users of function tracing (LTTng and\nSystemTap).\n\nCc: stable@vger.kernel.org # 3.0+\nFixes: cdbe61bfe704 \"ftrace: Allow dynamically allocated function tracers\"\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "23a8e8441a0a74dd612edf81dc89d1600bc0a3d1",
      "tree": "51808ae87f00c4acfc114d739baf4e13c44afa29",
      "parents": [
        "405e1d834807e51b2ebd3dea81cb51e53fb61504"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jan 13 10:30:23 2014 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jan 13 10:52:58 2014 -0500"
      },
      "message": "ftrace: Have function graph only trace based on global_ops filters\n\nDoing some different tests, I discovered that function graph tracing, when\nfiltered via the set_ftrace_filter and set_ftrace_notrace files, does\nnot always keep with them if another function ftrace_ops is registered\nto trace functions.\n\nThe reason is that function graph just happens to trace all functions\nthat the function tracer enables. When there was only one user of\nfunction tracing, the function graph tracer did not need to worry about\nbeing called by functions that it did not want to trace. But now that there\nare other users, this becomes a problem.\n\nFor example, one just needs to do the following:\n\n # cd /sys/kernel/debug/tracing\n # echo schedule \u003e set_ftrace_filter\n # echo function_graph \u003e current_tracer\n # cat trace\n[..]\n 0)               |  schedule() {\n ------------------------------------------\n 0)    \u003cidle\u003e-0    \u003d\u003e   rcu_pre-7\n ------------------------------------------\n\n 0) ! 2980.314 us |  }\n 0)               |  schedule() {\n ------------------------------------------\n 0)   rcu_pre-7    \u003d\u003e    \u003cidle\u003e-0\n ------------------------------------------\n\n 0) + 20.701 us   |  }\n\n # echo 1 \u003e /proc/sys/kernel/stack_tracer_enabled\n # cat trace\n[..]\n 1) + 20.825 us   |      }\n 1) + 21.651 us   |    }\n 1) + 30.924 us   |  } /* SyS_ioctl */\n 1)               |  do_page_fault() {\n 1)               |    __do_page_fault() {\n 1)   0.274 us    |      down_read_trylock();\n 1)   0.098 us    |      find_vma();\n 1)               |      handle_mm_fault() {\n 1)               |        _raw_spin_lock() {\n 1)   0.102 us    |          preempt_count_add();\n 1)   0.097 us    |          do_raw_spin_lock();\n 1)   2.173 us    |        }\n 1)               |        do_wp_page() {\n 1)   0.079 us    |          vm_normal_page();\n 1)   0.086 us    |          reuse_swap_page();\n 1)   0.076 us    |          page_move_anon_rmap();\n 1)               |          unlock_page() {\n 1)   0.082 us    |            page_waitqueue();\n 1)   0.086 us    |            __wake_up_bit();\n 1)   1.801 us    |          }\n 1)   0.075 us    |          ptep_set_access_flags();\n 1)               |          _raw_spin_unlock() {\n 1)   0.098 us    |            do_raw_spin_unlock();\n 1)   0.105 us    |            preempt_count_sub();\n 1)   1.884 us    |          }\n 1)   9.149 us    |        }\n 1) + 13.083 us   |      }\n 1)   0.146 us    |      up_read();\n\nWhen the stack tracer was enabled, it enabled all functions to be traced, which\nnow the function graph tracer also traces. This is a side effect that should\nnot occur.\n\nTo fix this a test is added when the function tracing is changed, as well as when\nthe graph tracer is enabled, to see if anything other than the ftrace global_ops\nfunction tracer is enabled. If so, then the graph tracer calls a test trampoline\nthat will look at the function that is being traced and compare it with the\nfilters defined by the global_ops.\n\nAs an optimization, if there\u0027s no other function tracers registered, or if\nthe only registered function tracers also use the global ops, the function\ngraph infrastructure will call the registered function graph callback directly\nand not go through the test trampoline.\n\nCc: stable@vger.kernel.org # 3.3+\nFixes: d2d45c7a03a2 \"tracing: Have stack_tracer use a separate list of functions\"\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "35af99e646c7f7ea46dc2977601e9e71a51dadd5",
      "tree": "d999820d233844278549cd826c4bfd6c7aa1ecc8",
      "parents": [
        "ef08f0fff87630d4f67ceb09514d8b444df833f8"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Thu Nov 28 19:38:42 2013 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Jan 13 15:13:13 2014 +0100"
      },
      "message": "sched/clock, x86: Use a static_key for sched_clock_stable\n\nIn order to avoid the runtime condition and variable load turn\nsched_clock_stable into a static_key.\n\nAlso provide a shorter implementation of local_clock() and\ncpu_clock(int) when sched_clock_stable\u003d\u003d1.\n\n                        MAINLINE   PRE       POST\n\n    sched_clock_stable: 1          1         1\n    (cold) sched_clock: 329841     221876    215295\n    (cold) local_clock: 301773     234692    220773\n    (warm) sched_clock: 38375      25602     25659\n    (warm) local_clock: 100371     33265     27242\n    (warm) rdtsc:       27340      24214     24208\n    sched_clock_stable: 0          0         0\n    (cold) sched_clock: 382634     235941    237019\n    (cold) local_clock: 396890     297017    294819\n    (warm) sched_clock: 38194      25233     25609\n    (warm) local_clock: 143452     71234     71232\n    (warm) rdtsc:       27345      24245     24243\n\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nLink: http://lkml.kernel.org/n/tip-eummbdechzz37mwmpags1gjr@git.kernel.org\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "2d3d891d3344159d5b452a645e355bbe29591e8b",
      "tree": "ab7c4ef00b48d68efa2d57cabf8c3c86160f2406",
      "parents": [
        "fb00aca474405f4fa8a8519c3179fed722eabd83"
      ],
      "author": {
        "name": "Dario Faggioli",
        "email": "raistlin@linux.it",
        "time": "Thu Nov 07 14:43:44 2013 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Jan 13 13:42:56 2014 +0100"
      },
      "message": "sched/deadline: Add SCHED_DEADLINE inheritance logic\n\nSome method to deal with rt-mutexes and make sched_dl interact with\nthe current PI-coded is needed, raising all but trivial issues, that\nneeds (according to us) to be solved with some restructuring of\nthe pi-code (i.e., going toward a proxy execution-ish implementation).\n\nThis is under development, in the meanwhile, as a temporary solution,\nwhat this commits does is:\n\n - ensure a pi-lock owner with waiters is never throttled down. Instead,\n   when it runs out of runtime, it immediately gets replenished and it\u0027s\n   deadline is postponed;\n\n - the scheduling parameters (relative deadline and default runtime)\n   used for that replenishments --during the whole period it holds the\n   pi-lock-- are the ones of the waiting task with earliest deadline.\n\nActing this way, we provide some kind of boosting to the lock-owner,\nstill by using the existing (actually, slightly modified by the previous\ncommit) pi-architecture.\n\nWe would stress the fact that this is only a surely needed, all but\nclean solution to the problem. In the end it\u0027s only a way to re-start\ndiscussion within the community. So, as always, comments, ideas, rants,\netc.. are welcome! :-)\n\nSigned-off-by: Dario Faggioli \u003craistlin@linux.it\u003e\nSigned-off-by: Juri Lelli \u003cjuri.lelli@gmail.com\u003e\n[ Added !RT_MUTEXES build fix. ]\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/1383831828-15501-11-git-send-email-juri.lelli@gmail.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "af6ace764d03900524e9b1ac621a1c520ee49fc6",
      "tree": "4fd7117b730a77a77be2bcd24c53284f9568ed75",
      "parents": [
        "755378a47192a3d1f7c3a8ca6c15c1cf76de0af2"
      ],
      "author": {
        "name": "Dario Faggioli",
        "email": "raistlin@linux.it",
        "time": "Thu Nov 07 14:43:42 2013 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Jan 13 13:41:11 2014 +0100"
      },
      "message": "sched/deadline: Add latency tracing for SCHED_DEADLINE tasks\n\nIt is very likely that systems that wants/needs to use the new\nSCHED_DEADLINE policy also want to have the scheduling latency of\nthe -deadline tasks under control.\n\nFor this reason a new version of the scheduling wakeup latency,\ncalled \"wakeup_dl\", is introduced.\n\nAs a consequence of applying this patch there will be three wakeup\nlatency tracer:\n\n * \"wakeup\", that deals with all tasks in the system;\n * \"wakeup_rt\", that deals with -rt and -deadline tasks only;\n * \"wakeup_dl\", that deals with -deadline tasks only.\n\nSigned-off-by: Dario Faggioli \u003craistlin@linux.it\u003e\nSigned-off-by: Juri Lelli \u003cjuri.lelli@gmail.com\u003e\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/1383831828-15501-9-git-send-email-juri.lelli@gmail.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "405e1d834807e51b2ebd3dea81cb51e53fb61504",
      "tree": "cd490ffb339a7e744ace83f95ef6895a15b0ad45",
      "parents": [
        "dd97b95438c812d8fd93d9426661a6c8e1520005"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Fri Nov 08 14:17:30 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 09 22:00:25 2014 -0500"
      },
      "message": "ftrace: Synchronize setting function_trace_op with ftrace_trace_function\n\nftrace_trace_function is a variable that holds what function will be called\ndirectly by the assembly code (mcount). If just a single function is\nregistered and it handles recursion itself, then the assembly will call that\nfunction directly without any helper function. It also passes in the\nftrace_op that was registered with the callback. The ftrace_op to send is\nstored in the function_trace_op variable.\n\nThe ftrace_trace_function and function_trace_op needs to be coordinated such\nthat the called callback wont be called with the wrong ftrace_op, otherwise\nbad things can happen if it expected a different op. Luckily, there\u0027s no\ncallback that doesn\u0027t use the helper functions that requires this. But\nthere soon will be and this needs to be fixed.\n\nUse a set_function_trace_op to store the ftrace_op to set the\nfunction_trace_op to when it is safe to do so (during the update function\nwithin the breakpoint or stop machine calls). Or if dynamic ftrace is not\nbeing used (static tracing) then we have to do a bit more synchronization\nwhen the ftrace_trace_function is set as that takes affect immediately\n(as oppose to dynamic ftrace doing it with the modification of the trampoline).\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "dd97b95438c812d8fd93d9426661a6c8e1520005",
      "tree": "1fa83336880595da7dc881fde5aab453d17e12ab",
      "parents": [
        "13a1e4aef53b2a7684ddee374e749999ba103b4a"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jan 07 10:31:04 2014 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 09 21:20:32 2014 -0500"
      },
      "message": "tracing: Show available event triggers when no trigger is set\n\nCurrently there\u0027s no way to know what triggers exist on a kernel without\nlooking at the source of the kernel or randomly trying out triggers.\nInstead of creating another file in the debugfs system, simply show\nwhat available triggers are there when cat\u0027ing the trigger file when\nit has no events:\n\n [root /sys/kernel/debug/tracing]# cat events/sched/sched_switch/trigger\n # Available triggers:\n # traceon traceoff snapshot stacktrace enable_event disable_event\n\nThis stays consistent with other debugfs files where meta data like\nthis is always proceeded with a \u0027#\u0027 at the start of the line so that\ntools can strip these out.\n\nLink: http://lkml.kernel.org/r/20140107103548.0a84536d@gandalf.local.home\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "13a1e4aef53b2a7684ddee374e749999ba103b4a",
      "tree": "74acb760b6d12d4faaae4c4c76a146855e8352a5",
      "parents": [
        "e8dc637152d2921447b012f58c51e0342304af33"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jan 06 21:32:10 2014 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 09 21:20:07 2014 -0500"
      },
      "message": "tracing: Consolidate event trigger code\n\nThe event trigger code that checks for callback triggers before and\nafter recording of an event has lots of flags checks. This code is\nduplicated throughout the ftrace events, kprobes and system calls.\nThey all do the exact same checks against the event flags.\n\nAdded helper functions ftrace_trigger_soft_disabled(),\nevent_trigger_unlock_commit() and event_trigger_unlock_commit_regs()\nthat consolidated the code and these are used instead.\n\nLink: http://lkml.kernel.org/r/20140106222703.5e7dbba2@gandalf.local.home\n\nAcked-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nTested-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "e8dc637152d2921447b012f58c51e0342304af33",
      "tree": "ec87bd05d5b70181099e9c3de3ea128db0c58dcf",
      "parents": [
        "4bf0566db15eda214cc64a77d4d3b96e010ec6ac"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jan 06 22:25:50 2014 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 09 21:19:44 2014 -0500"
      },
      "message": "tracing: Fix counter for traceon/off event triggers\n\nThe counters for the traceon and traceoff are only suppose to decrement\nwhen the trigger enables or disables tracing. It is not suppose to decrement\nevery time the event is hit.\n\nOnly decrement the counter if the trigger actually did something.\n\nLink: http://lkml.kernel.org/r/20140106223124.0e5fd0b4@gandalf.local.home\n\nAcked-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "4bf0566db15eda214cc64a77d4d3b96e010ec6ac",
      "tree": "3cc1a5e635a2ad891ea0a13138264d02edc137ea",
      "parents": [
        "0641d368f206f2fe7725c9fa5f1461229ef8010f"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tom.zanussi@linux.intel.com",
        "time": "Mon Jan 06 13:44:20 2014 -0600"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jan 06 15:22:07 2014 -0500"
      },
      "message": "tracing: Remove double-underscore naming in syscall trigger invocations\n\nThere\u0027s no reason to use double-underscores for any variable name in\nftrace_syscall_enter()/exit(), since those functions aren\u0027t generated\nand there\u0027s no need to avoid namespace collisions as with the event\nmacros, which is where the original invocation code came from.\n\nLink: http://lkml.kernel.org/r/0b489c9d1f7ee315cff60fa0e4c2b433ade8ae0d.1389036657.git.tom.zanussi@linux.intel.com\n\nSigned-off-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "0641d368f206f2fe7725c9fa5f1461229ef8010f",
      "tree": "aac0db92d00b238236cbe64d562ff83f8978bb18",
      "parents": [
        "e0d18fe063464cb3f1a6d1939e4fcf47d92d8386"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tom.zanussi@linux.intel.com",
        "time": "Mon Jan 06 13:44:19 2014 -0600"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jan 06 15:21:43 2014 -0500"
      },
      "message": "tracing/kprobes: Add trace event trigger invocations\n\nAdd code to the kprobe/kretprobe event functions that will invoke any\nevent triggers associated with a probe\u0027s ftrace_event_file.\n\nThe code to do this is very similar to the invocation code already\nused to invoke the triggers associated with static events and\nessentially replaces the existing soft-disable checks with a superset\nthat preserves the original behavior but adds the bits needed to\nsupport event triggers.\n\nLink: http://lkml.kernel.org/r/f2d49f157b608070045fdb26c9564d5a05a5a7d0.1389036657.git.tom.zanussi@linux.intel.com\n\nAcked-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "e0d18fe063464cb3f1a6d1939e4fcf47d92d8386",
      "tree": "061fdc3f78de07af82fbe7695c3c5e78d896c3bd",
      "parents": [
        "b7e0bf341f6cfa92ae0a0e3d0c3496729595e1e9"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Fri Jan 03 14:12:46 2014 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Jan 03 15:27:18 2014 -0500"
      },
      "message": "tracing/probes: Fix build break on !CONFIG_KPROBE_EVENT\n\nWhen kprobe-based dynamic event tracer is not enabled, it caused\nfollowing build error:\n\n   kernel/built-in.o: In function `traceprobe_update_arg\u0027:\n   (.text+0x10c8dd): undefined reference to `fetch_symbol_u8\u0027\n   kernel/built-in.o: In function `traceprobe_update_arg\u0027:\n   (.text+0x10c8e9): undefined reference to `fetch_symbol_u16\u0027\n   kernel/built-in.o: In function `traceprobe_update_arg\u0027:\n   (.text+0x10c8f5): undefined reference to `fetch_symbol_u32\u0027\n   kernel/built-in.o: In function `traceprobe_update_arg\u0027:\n   (.text+0x10c901): undefined reference to `fetch_symbol_u64\u0027\n   kernel/built-in.o: In function `traceprobe_update_arg\u0027:\n   (.text+0x10c909): undefined reference to `fetch_symbol_string\u0027\n   kernel/built-in.o: In function `traceprobe_update_arg\u0027:\n   (.text+0x10c913): undefined reference to `fetch_symbol_string_size\u0027\n   ...\n\nIt was due to the fetch methods are referred from CHECK_FETCH_FUNCS\nmacro and since it was only defined in trace_kprobe.c.  Move NULL\ndefinition of such fetch functions to the header file.\n\nNote, it also requires CONFIG_BRANCH_PROFILING enabled to trigger\nthis failure as well. This is because the \"fetch_symbol_*\" variables\nare referenced in a \"else if\" statement that will only call\nupdate_symbol_cache(), which is a static inline stub function\nwhen CONFIG_KPROBE_EVENT is not enabled. gcc is smart enough\nto optimize this \"else if\" out and that also removes the code that\nreferences the undefined variables.\n\nBut when BRANCH_PROFILING is enabled, it fools gcc into keeping\nthe if statement around and thus references the undefined symbols\nand fails to build.\n\nReported-by: kbuild test robot \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "b7e0bf341f6cfa92ae0a0e3d0c3496729595e1e9",
      "tree": "0831ae7ab363f3789c5cb14bbf4973bfe17287bc",
      "parents": [
        "72fd293aa9ae8f4f48d6042be43fe81551c639f2"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Mon Nov 25 13:42:47 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 02 20:57:05 2014 -0500"
      },
      "message": "tracing/uprobes: Add @+file_offset fetch method\n\nEnable to fetch data from a file offset.  Currently it only supports\nfetching from same binary uprobe set.  It\u0027ll translate the file offset\nto a proper virtual address in the process.\n\nThe syntax is \"@+OFFSET\" as it does similar to normal memory fetching\n(@ADDR) which does no address translation.\n\nSuggested-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\n"
    },
    {
      "commit": "b079d374fd84637aba4b825a329e794990b7b486",
      "tree": "693970c6860735ade0842439ba67cc28a42e1dae",
      "parents": [
        "dcad1a204f72624796ae83359403898d10393b9c"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Wed Jul 03 18:34:23 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 02 20:56:21 2014 -0500"
      },
      "message": "tracing/uprobes: Add support for full argument access methods\n\nEnable to fetch other types of argument for the uprobes.  IOW, we can\naccess stack, memory, deref, bitfield and retval from uprobes now.\n\nThe format for the argument types are same as kprobes (but @SYMBOL\ntype is not supported for uprobes), i.e:\n\n  @ADDR   : Fetch memory at ADDR\n  $stackN : Fetch Nth entry of stack (N \u003e\u003d 0)\n  $stack  : Fetch stack address\n  $retval : Fetch return value\n  +|-offs(FETCHARG) : Fetch memory at FETCHARG +|- offs address\n\nNote that the retval only can be used with uretprobes.\n\nOriginal-patch-by: Hyeoncheol Lee \u003ccheol.lee@lge.com\u003e\nAcked-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: Hyeoncheol Lee \u003ccheol.lee@lge.com\u003e\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\n"
    },
    {
      "commit": "dcad1a204f72624796ae83359403898d10393b9c",
      "tree": "801d8e11c1e2ffef8c8de48980a01a08a5ddd194",
      "parents": [
        "a4734145a4771ffa0cd5ef283a5cfd03b30bedf3"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Wed Jul 03 16:40:28 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 02 16:17:44 2014 -0500"
      },
      "message": "tracing/uprobes: Fetch args before reserving a ring buffer\n\nFetching from user space should be done in a non-atomic context.  So\nuse a per-cpu buffer and copy its content to the ring buffer\natomically.  Note that we can migrate during accessing user memory\nthus use a per-cpu mutex to protect concurrent accesses.\n\nThis is needed since we\u0027ll be able to fetch args from an user memory\nwhich can be swapped out.  Before that uprobes could fetch args from\nregisters only which saved in a kernel space.\n\nWhile at it, use __get_data_size() and store_trace_args() to reduce\ncode duplication.  And add struct uprobe_cpu_buffer and its helpers as\nsuggested by Oleg.\n\nReviewed-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\n"
    },
    {
      "commit": "a4734145a4771ffa0cd5ef283a5cfd03b30bedf3",
      "tree": "3f09bcb3e15201da46bbeb2b655da24d3a364605",
      "parents": [
        "5baaa59ef09e8729aef101f7bf7d9d0af00852e3"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Wed Nov 27 11:36:47 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 02 16:17:43 2014 -0500"
      },
      "message": "tracing/uprobes: Pass \u0027is_return\u0027 to traceprobe_parse_probe_arg()\n\nCurrently uprobes don\u0027t pass is_return to the argument parser so that\nit cannot make use of \"$retval\" fetch method since it only works for\nreturn probes.\n\nReviewed-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\n"
    },
    {
      "commit": "5baaa59ef09e8729aef101f7bf7d9d0af00852e3",
      "tree": "adf05e51e33e06d0d9eb9689269364314b754c2c",
      "parents": [
        "3925f4a5afa489e905a08edffc36a435a3434a63"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Tue Nov 26 15:21:04 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 02 16:17:43 2014 -0500"
      },
      "message": "tracing/probes: Implement \u0027memory\u0027 fetch method for uprobes\n\nUse separate method to fetch from memory.  Move existing functions to\ntrace_kprobe.c and make them static.  Also add new memory fetch\nimplementation for uprobes.\n\nAcked-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\n"
    },
    {
      "commit": "3925f4a5afa489e905a08edffc36a435a3434a63",
      "tree": "00fbb091d8fdf2737cd2430f10606db52353d8e7",
      "parents": [
        "1301a44e77557e928700f91c7083c5770054c212"
      ],
      "author": {
        "name": "Hyeoncheol Lee",
        "email": "cheol.lee@lge.com",
        "time": "Mon Jul 01 13:44:32 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 02 16:17:42 2014 -0500"
      },
      "message": "tracing/probes: Add fetch{,_size} member into deref fetch method\n\nThe deref fetch methods access a memory region but it assumes that\nit\u0027s a kernel memory since uprobes does not support them.\n\nAdd -\u003efetch and -\u003efetch_size member in order to provide a proper\naccess methods for supporting uprobes.\n\nAcked-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: Hyeoncheol Lee \u003ccheol.lee@lge.com\u003e\n[namhyung@kernel.org: Split original patch into pieces as requested]\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\n"
    },
    {
      "commit": "1301a44e77557e928700f91c7083c5770054c212",
      "tree": "a2bb5e3dae59f410a2030790e1f2cdf2071e4487",
      "parents": [
        "3fd996a29515df23b3f20c36d69788a3707254a9"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Tue Nov 26 15:21:04 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 02 16:17:41 2014 -0500"
      },
      "message": "tracing/probes: Move \u0027symbol\u0027 fetch method to kprobes\n\nMove existing functions to trace_kprobe.c and add NULL entries to the\nuprobes fetch type table.  I don\u0027t make them static since some generic\nroutines like update/free_XXX_fetch_param() require pointers to the\nfunctions.\n\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\n"
    },
    {
      "commit": "3fd996a29515df23b3f20c36d69788a3707254a9",
      "tree": "7b6b4484ec5da2e1a63993705d978f50ac16b3ac",
      "parents": [
        "34fee3a104cea1c4b658e51836e4bcd99bd76c70"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Tue Nov 26 15:21:04 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 02 16:17:40 2014 -0500"
      },
      "message": "tracing/probes: Implement \u0027stack\u0027 fetch method for uprobes\n\nUse separate method to fetch from stack.  Move existing functions to\ntrace_kprobe.c and make them static.  Also add new stack fetch\nimplementation for uprobes.\n\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\n"
    },
    {
      "commit": "34fee3a104cea1c4b658e51836e4bcd99bd76c70",
      "tree": "4b73d864e468c395f6c9d484bef5a8f138a02b5e",
      "parents": [
        "b26c74e116ad8433da22a72f03d148f88aab36e5"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Tue Nov 26 14:56:28 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 02 16:17:39 2014 -0500"
      },
      "message": "tracing/probes: Split [ku]probes_fetch_type_table\n\nUse separate fetch_type_table for kprobes and uprobes.  It currently\nshares all fetch methods but some of them will be implemented\ndifferently later.\n\nThis is not to break build if [ku]probes is configured alone (like\n!CONFIG_KPROBE_EVENT and CONFIG_UPROBE_EVENT).  So I added \u0027__weak\u0027\nto the table declaration so that it can be safely omitted when it\nconfigured out.\n\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\n"
    },
    {
      "commit": "b26c74e116ad8433da22a72f03d148f88aab36e5",
      "tree": "0271078555494bacaf7ae15e82f68352e47b541a",
      "parents": [
        "5bf652aaf46ca6ae477ea0d162e68d577cf244aa"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Tue Nov 26 14:19:59 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 02 16:17:38 2014 -0500"
      },
      "message": "tracing/probes: Move fetch function helpers to trace_probe.h\n\nMove fetch function helper macros/functions to the header file and\nmake them external.  This is preparation of supporting uprobe fetch\ntable in next patch.\n\nAcked-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\n"
    },
    {
      "commit": "5bf652aaf46ca6ae477ea0d162e68d577cf244aa",
      "tree": "ab1210b0008678995f0d6bf5b8da1bf0dccd0c14",
      "parents": [
        "2dc1018372c3b1db1410c7087de7866d4cad8cc3"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Wed Jul 03 16:09:02 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 02 16:17:38 2014 -0500"
      },
      "message": "tracing/probes: Integrate duplicate set_print_fmt()\n\nThe set_print_fmt() functions are implemented almost same for\n[ku]probes.  Move it to a common place and get rid of the duplication.\n\nAcked-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\n"
    },
    {
      "commit": "2dc1018372c3b1db1410c7087de7866d4cad8cc3",
      "tree": "88e047e0cd2884d7ab639d319478250c31300493",
      "parents": [
        "14577c39927f86e3dba967f9b511f4a876b7f8bb"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Wed Jul 03 15:55:36 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 02 16:17:37 2014 -0500"
      },
      "message": "tracing/kprobes: Move common functions to trace_probe.h\n\nThe __get_data_size() and store_trace_args() will be used by uprobes\ntoo.  Move them to a common location.\n\nAcked-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\n"
    },
    {
      "commit": "14577c39927f86e3dba967f9b511f4a876b7f8bb",
      "tree": "ee08e2d02b094b68bfa02878e1f4f017183a5f46",
      "parents": [
        "c31ffb3ff633109e8b7b438a9e1815b919f5e32d"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Wed Jul 03 15:42:53 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 02 16:17:36 2014 -0500"
      },
      "message": "tracing/uprobes: Convert to struct trace_probe\n\nConvert struct trace_uprobe to make use of the common trace_probe\nstructure.\n\nReviewed-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\n"
    },
    {
      "commit": "c31ffb3ff633109e8b7b438a9e1815b919f5e32d",
      "tree": "77536f8c866a626b4e7992151058068dd8bda5d8",
      "parents": [
        "50eb2672ce13d73e96f6cee84e78cfb52513ff48"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Wed Jul 03 13:50:51 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 02 16:17:29 2014 -0500"
      },
      "message": "tracing/kprobes: Factor out struct trace_probe\n\nThere are functions that can be shared to both of kprobes and uprobes.\nSeparate common data structure to struct trace_probe and use it from\nthe shared functions.\n\nAcked-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\n"
    },
    {
      "commit": "50eb2672ce13d73e96f6cee84e78cfb52513ff48",
      "tree": "2c1c2ab3adb533566e2181a0c4423250e0b2e0fd",
      "parents": [
        "306cfe2025adcba10fb883ad0c540f5541d1b086"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Wed Jul 31 17:21:01 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 02 16:17:24 2014 -0500"
      },
      "message": "tracing/probes: Fix basic print type functions\n\nThe print format of s32 type was \"ld\" and it\u0027s casted to \"long\".  So\nit turned out to print 4294967295 for \"-1\" on 64-bit systems.  Not\nsure whether it worked well on 32-bit systems.\n\nAnyway, it doesn\u0027t need to have cast argument at all since it already\ncasted using type pointer - just get rid of it.  Thanks to Oleg for\npointing that out.\n\nAnd print 0x prefix for unsigned type as it shows hex numbers.\n\nSuggested-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\n"
    },
    {
      "commit": "306cfe2025adcba10fb883ad0c540f5541d1b086",
      "tree": "e0b1225eb244a34f6fdd8defae6cbd642ff592b9",
      "parents": [
        "d8a30f20347a60a796a5221e07711c0d30d42dc3"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Wed Jul 03 16:44:46 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 02 16:17:23 2014 -0500"
      },
      "message": "tracing/uprobes: Fix documentation of uprobe registration syntax\n\nThe uprobe syntax requires an offset after a file path not a symbol.\n\nReviewed-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\n"
    },
    {
      "commit": "d8a30f20347a60a796a5221e07711c0d30d42dc3",
      "tree": "eed4dc37ddf15b981194a573701522605b58e69f",
      "parents": [
        "098c879e1f2d6ee7afbfe959f6b04070065cec90"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Sat Dec 21 21:55:17 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 02 16:17:22 2014 -0500"
      },
      "message": "tracing: Fix rcu handling of event_trigger_data filter field\n\nThe filter field of the event_trigger_data structure is protected under\nRCU sched locks. It was not annotated as such, and after doing so,\nsparse pointed out several locations that required fix ups.\n\nReported-by: kbuild test robot \u003cfengguang.wu@intel.com\u003e\nTested-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nAcked-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "098c879e1f2d6ee7afbfe959f6b04070065cec90",
      "tree": "22a2d64f30c82b70619786bc541ddcbe320f5d44",
      "parents": [
        "ac38fb8582d86ba887b5d07c0912dec135bf6931"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Sat Dec 21 17:39:40 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 02 16:17:12 2014 -0500"
      },
      "message": "tracing: Add generic tracing_lseek() function\n\nTrace event triggers added a lseek that uses the ftrace_filter_lseek()\nfunction. Unfortunately, when function tracing is not configured in\nthat function is not defined and the kernel fails to build.\n\nThis is the second time that function was added to a file ops and\nit broke the build due to requiring special config dependencies.\n\nMake a generic tracing_lseek() that all the tracing utilities may\nuse.\n\nAlso, modify the old ftrace_filter_lseek() to return 0 instead of\n1 on WRONLY. Not sure why it was a 1 as that does not make sense.\n\nThis also changes the old tracing_seek() to modify the file pos\npointer on WRONLY as well.\n\nReported-by: kbuild test robot \u003cfengguang.wu@intel.com\u003e\nTested-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nAcked-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "b28bc9b38c52f63f43e3fd875af982f2240a2859",
      "tree": "76cdb7b52b58f5685993cc15ed81d1c903023358",
      "parents": [
        "8d30726912cb39c3a3ebde06214d54861f8fdde2",
        "802eee95bde72fd0cd0f3a5b2098375a487d1eda"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Dec 31 09:51:02 2013 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Dec 31 09:51:02 2013 -0700"
      },
      "message": "Merge tag \u0027v3.13-rc6\u0027 into for-3.14/core\n\nNeeded to bring blk-mq uptodate, since changes have been going in\nsince for-3.14/core was established.\n\nFixup merge issues related to the immutable biovec changes.\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n\nConflicts:\n\tblock/blk-flush.c\n\tfs/btrfs/check-integrity.c\n\tfs/btrfs/extent_io.c\n\tfs/btrfs/scrub.c\n\tfs/logfs/dev_bdev.c\n"
    },
    {
      "commit": "bac5fb97a173aeef8296b3efdb552e3489d55179",
      "tree": "2acb18186a608cca2eda53f6e110e792c1b6edbe",
      "parents": [
        "2875a08b2d1da7bae58fc01badb9b0ef1e8fc1a4"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tom.zanussi@linux.intel.com",
        "time": "Thu Oct 24 08:59:29 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Sat Dec 21 22:02:17 2013 -0500"
      },
      "message": "tracing: Add and use generic set_trigger_filter() implementation\n\nAdd a generic event_command.set_trigger_filter() op implementation and\nhave the current set of trigger commands use it - this essentially\ngives them all support for filters.\n\nSyntactically, filters are supported by adding \u0027if \u003cfilter\u003e\u0027 just\nafter the command, in which case only events matching the filter will\ninvoke the trigger.  For example, to add a filter to an\nenable/disable_event command:\n\n    echo \u0027enable_event:system:event if common_pid \u003d\u003d 999\u0027 \u003e \\\n              .../othersys/otherevent/trigger\n\nThe above command will only enable the system:event event if the\ncommon_pid field in the othersys:otherevent event is 999.\n\nAs another example, to add a filter to a stacktrace command:\n\n    echo \u0027stacktrace if common_pid \u003d\u003d 999\u0027 \u003e \\\n                   .../somesys/someevent/trigger\n\nThe above command will only trigger a stacktrace if the common_pid\nfield in the event is 999.\n\nThe filter syntax is the same as that described in the \u0027Event\nfiltering\u0027 section of Documentation/trace/events.txt.\n\nBecause triggers can now use filters, the trigger-invoking logic needs\nto be moved in those cases - e.g. for ftrace_raw_event_calls, if a\ntrigger has a filter associated with it, the trigger invocation now\nneeds to happen after the { assign; } part of the call, in order for\nthe trigger condition to be tested.\n\nThere\u0027s still a SOFT_DISABLED-only check at the top of e.g. the\nftrace_raw_events function, so when an event is soft disabled but not\nbecause of the presence of a trigger, the original SOFT_DISABLED\nbehavior remains unchanged.\n\nThere\u0027s also a bit of trickiness in that some triggers need to avoid\nbeing invoked while an event is currently in the process of being\nlogged, since the trigger may itself log data into the trace buffer.\nThus we make sure the current event is committed before invoking those\ntriggers.  To do that, we split the trigger invocation in two - the\nfirst part (event_triggers_call()) checks the filter using the current\ntrace record; if a command has the post_trigger flag set, it sets a\nbit for itself in the return value, otherwise it directly invoks the\ntrigger.  Once all commands have been either invoked or set their\nreturn flag, event_triggers_call() returns.  The current record is\nthen either committed or discarded; if any commands have deferred\ntheir triggers, those commands are finally invoked following the close\nof the current event by event_triggers_post_call().\n\nTo simplify the above and make it more efficient, the TRIGGER_COND bit\nis introduced, which is set only if a soft-disabled trigger needs to\nuse the log record for filter testing or needs to wait until the\ncurrent log record is closed.\n\nThe syscall event invocation code is also changed in analogous ways.\n\nBecause event triggers need to be able to create and free filters,\nthis also adds a couple external wrappers for the existing\ncreate_filter and free_filter functions, which are too generic to be\nmade extern functions themselves.\n\nLink: http://lkml.kernel.org/r/7164930759d8719ef460357f143d995406e4eead.1382622043.git.tom.zanussi@linux.intel.com\n\nSigned-off-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "2875a08b2d1da7bae58fc01badb9b0ef1e8fc1a4",
      "tree": "91e68035b03d828649428882414e09b44026783c",
      "parents": [
        "7862ad1846e994574cb47dc503cc2b1646ea6593"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Fri Dec 20 23:23:05 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Sat Dec 21 22:02:17 2013 -0500"
      },
      "message": "tracing: Move ftrace_event_file() out of DYNAMIC_FTRACE ifdef\n\nNow that event triggers use ftrace_event_file(), it needs to be outside\nthe #ifdef CONFIG_DYNAMIC_FTRACE, as it can now be used when that is\nnot defined.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "7862ad1846e994574cb47dc503cc2b1646ea6593",
      "tree": "cec348fd60d6f85d1ae772996d0b8241a31d5b35",
      "parents": [
        "f21ecbb35f865a508073c0e73854da469a07f278"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tom.zanussi@linux.intel.com",
        "time": "Thu Oct 24 08:59:28 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Sat Dec 21 22:02:16 2013 -0500"
      },
      "message": "tracing: Add \u0027enable_event\u0027 and \u0027disable_event\u0027 event trigger commands\n\nAdd \u0027enable_event\u0027 and \u0027disable_event\u0027 event_command commands.\n\nenable_event and disable_event event triggers are added by the user\nvia these commands in a similar way and using practically the same\nsyntax as the analagous \u0027enable_event\u0027 and \u0027disable_event\u0027 ftrace\nfunction commands, but instead of writing to the set_ftrace_filter\nfile, the enable_event and disable_event triggers are written to the\nper-event \u0027trigger\u0027 files:\n\n    echo \u0027enable_event:system:event\u0027 \u003e .../othersys/otherevent/trigger\n    echo \u0027disable_event:system:event\u0027 \u003e .../othersys/otherevent/trigger\n\nThe above commands will enable or disable the \u0027system:event\u0027 trace\nevents whenever the othersys:otherevent events are hit.\n\nThis also adds a \u0027count\u0027 version that limits the number of times the\ncommand will be invoked:\n\n    echo \u0027enable_event:system:event:N\u0027 \u003e .../othersys/otherevent/trigger\n    echo \u0027disable_event:system:event:N\u0027 \u003e .../othersys/otherevent/trigger\n\nWhere N is the number of times the command will be invoked.\n\nThe above commands will will enable or disable the \u0027system:event\u0027\ntrace events whenever the othersys:otherevent events are hit, but only\nN times.\n\nThis also makes the find_event_file() helper function extern, since\nit\u0027s useful to use from other places, such as the event triggers code,\nso make it accessible.\n\nLink: http://lkml.kernel.org/r/f825f3048c3f6b026ee37ae5825f9fc373451828.1382622043.git.tom.zanussi@linux.intel.com\n\nSigned-off-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "f21ecbb35f865a508073c0e73854da469a07f278",
      "tree": "75f014738b5bbe844abdf087b6897b14c6c29bd9",
      "parents": [
        "93e31ffbf417a84fbae518fb46b3ea3f0d8fa6e1"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tom.zanussi@linux.intel.com",
        "time": "Thu Oct 24 08:59:27 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Sat Dec 21 22:02:15 2013 -0500"
      },
      "message": "tracing: Add \u0027stacktrace\u0027 event trigger command\n\nAdd \u0027stacktrace\u0027 event_command.  stacktrace event triggers are added\nby the user via this command in a similar way and using practically\nthe same syntax as the analogous \u0027stacktrace\u0027 ftrace function command,\nbut instead of writing to the set_ftrace_filter file, the stacktrace\nevent trigger is written to the per-event \u0027trigger\u0027 files:\n\n    echo \u0027stacktrace\u0027 \u003e .../tracing/events/somesys/someevent/trigger\n\nThe above command will turn on stacktraces for someevent i.e. whenever\nsomeevent is hit, a stacktrace will be logged.\n\nThis also adds a \u0027count\u0027 version that limits the number of times the\ncommand will be invoked:\n\n    echo \u0027stacktrace:N\u0027 \u003e .../tracing/events/somesys/someevent/trigger\n\nWhere N is the number of times the command will be invoked.\n\nThe above command will log N stacktraces for someevent i.e. whenever\nsomeevent is hit N times, a stacktrace will be logged.\n\nLink: http://lkml.kernel.org/r/0c30c008a0828c660aa0e1bbd3255cf179ed5c30.1382622043.git.tom.zanussi@linux.intel.com\n\nSigned-off-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "93e31ffbf417a84fbae518fb46b3ea3f0d8fa6e1",
      "tree": "c7eb0f81daec69a2505688bb5fcee94e2374be5f",
      "parents": [
        "2a2df321158817811c5dc206dce808e0aa9f6d89"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tom.zanussi@linux.intel.com",
        "time": "Thu Oct 24 08:59:26 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Sat Dec 21 22:01:22 2013 -0500"
      },
      "message": "tracing: Add \u0027snapshot\u0027 event trigger command\n\nAdd \u0027snapshot\u0027 event_command.  snapshot event triggers are added by\nthe user via this command in a similar way and using practically the\nsame syntax as the analogous \u0027snapshot\u0027 ftrace function command, but\ninstead of writing to the set_ftrace_filter file, the snapshot event\ntrigger is written to the per-event \u0027trigger\u0027 files:\n\n    echo \u0027snapshot\u0027 \u003e .../somesys/someevent/trigger\n\nThe above command will turn on snapshots for someevent i.e. whenever\nsomeevent is hit, a snapshot will be done.\n\nThis also adds a \u0027count\u0027 version that limits the number of times the\ncommand will be invoked:\n\n    echo \u0027snapshot:N\u0027 \u003e .../somesys/someevent/trigger\n\nWhere N is the number of times the command will be invoked.\n\nThe above command will snapshot N times for someevent i.e. whenever\nsomeevent is hit N times, a snapshot will be done.\n\nAlso adds a new tracing_alloc_snapshot() function - the existing\ntracing_snapshot_alloc() function is a special version of\ntracing_snapshot() that also does the snapshot allocation - the\nsnapshot triggers would like to be able to do just the allocation but\nnot take a snapshot; the existing tracing_snapshot_alloc() in turn now\nalso calls tracing_alloc_snapshot() underneath to do that allocation.\n\nLink: http://lkml.kernel.org/r/c9524dd07ce01f9dcbd59011290e0a8d5b47d7ad.1382622043.git.tom.zanussi@linux.intel.com\n\nSigned-off-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\n[ fix up from kbuild test robot \u003cfengguang.wu@intel.com report ]\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "2a2df321158817811c5dc206dce808e0aa9f6d89",
      "tree": "fd93466f3bf01a224e55f488eb199befb382beca",
      "parents": [
        "85f2b08268c014e290b600ba49fa85530600eaa1"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tom.zanussi@linux.intel.com",
        "time": "Thu Oct 24 08:59:25 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Dec 20 18:40:24 2013 -0500"
      },
      "message": "tracing: Add \u0027traceon\u0027 and \u0027traceoff\u0027 event trigger commands\n\nAdd \u0027traceon\u0027 and \u0027traceoff\u0027 event_command commands.  traceon and\ntraceoff event triggers are added by the user via these commands in a\nsimilar way and using practically the same syntax as the analagous\n\u0027traceon\u0027 and \u0027traceoff\u0027 ftrace function commands, but instead of\nwriting to the set_ftrace_filter file, the traceon and traceoff\ntriggers are written to the per-event \u0027trigger\u0027 files:\n\n    echo \u0027traceon\u0027 \u003e .../tracing/events/somesys/someevent/trigger\n    echo \u0027traceoff\u0027 \u003e .../tracing/events/somesys/someevent/trigger\n\nThe above command will turn tracing on or off whenever someevent is\nhit.\n\nThis also adds a \u0027count\u0027 version that limits the number of times the\ncommand will be invoked:\n\n    echo \u0027traceon:N\u0027 \u003e .../tracing/events/somesys/someevent/trigger\n    echo \u0027traceoff:N\u0027 \u003e .../tracing/events/somesys/someevent/trigger\n\nWhere N is the number of times the command will be invoked.\n\nThe above commands will will turn tracing on or off whenever someevent\nis hit, but only N times.\n\nSome common register/unregister_trigger() implementations of the\nevent_command reg()/unreg() callbacks are also provided, which add and\nremove trigger instances to the per-event list of triggers, and\narm/disarm them as appropriate.  event_trigger_callback() is a\ngeneral-purpose event_command func() implementation that orchestrates\ncommand parsing and registration for most normal commands.\n\nMost event commands will use these, but some will override and\npossibly reuse them.\n\nThe event_trigger_init(), event_trigger_free(), and\nevent_trigger_print() functions are meant to be common implementations\nof the event_trigger_ops init(), free(), and print() ops,\nrespectively.\n\nMost trigger_ops implementations will use these, but some will\noverride and possibly reuse them.\n\nLink: http://lkml.kernel.org/r/00a52816703b98d2072947478dd6e2d70cde5197.1382622043.git.tom.zanussi@linux.intel.com\n\nSigned-off-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "85f2b08268c014e290b600ba49fa85530600eaa1",
      "tree": "911b2e24ac56434fc04e8ecafe6251536b6f06a0",
      "parents": [
        "319e2e3f63c348a9b66db4667efa73178e18b17d"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tom.zanussi@linux.intel.com",
        "time": "Thu Oct 24 08:59:24 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Dec 20 18:40:22 2013 -0500"
      },
      "message": "tracing: Add basic event trigger framework\n\nAdd a \u0027trigger\u0027 file for each trace event, enabling \u0027trace event\ntriggers\u0027 to be set for trace events.\n\n\u0027trace event triggers\u0027 are patterned after the existing \u0027ftrace\nfunction triggers\u0027 implementation except that triggers are written to\nper-event \u0027trigger\u0027 files instead of to a single file such as the\n\u0027set_ftrace_filter\u0027 used for ftrace function triggers.\n\nThe implementation is meant to be entirely separate from ftrace\nfunction triggers, in order to keep the respective implementations\nrelatively simple and to allow them to diverge.\n\nThe event trigger functionality is built on top of SOFT_DISABLE\nfunctionality.  It adds a TRIGGER_MODE bit to the ftrace_event_file\nflags which is checked when any trace event fires.  Triggers set for a\nparticular event need to be checked regardless of whether that event\nis actually enabled or not - getting an event to fire even if it\u0027s not\nenabled is what\u0027s already implemented by SOFT_DISABLE mode, so trigger\nmode directly reuses that.  Event trigger essentially inherit the soft\ndisable logic in __ftrace_event_enable_disable() while adding a bit of\nlogic and trigger reference counting via tm_ref on top of that in a\nnew trace_event_trigger_enable_disable() function.  Because the base\n__ftrace_event_enable_disable() code now needs to be invoked from\noutside trace_events.c, a wrapper is also added for those usages.\n\nThe triggers for an event are actually invoked via a new function,\nevent_triggers_call(), and code is also added to invoke them for\nftrace_raw_event calls as well as syscall events.\n\nThe main part of the patch creates a new trace_events_trigger.c file\nto contain the trace event triggers implementation.\n\nThe standard open, read, and release file operations are implemented\nhere.\n\nThe open() implementation sets up for the various open modes of the\n\u0027trigger\u0027 file.  It creates and attaches the trigger iterator and sets\nup the command parser.  If opened for reading set up the trigger\nseq_ops.\n\nThe read() implementation parses the event trigger written to the\n\u0027trigger\u0027 file, looks up the trigger command, and passes it along to\nthat event_command\u0027s func() implementation for command-specific\nprocessing.\n\nThe release() implementation does whatever cleanup is needed to\nrelease the \u0027trigger\u0027 file, like releasing the parser and trigger\niterator, etc.\n\nA couple of functions for event command registration and\nunregistration are added, along with a list to add them to and a mutex\nto protect them, as well as an (initially empty) registration function\nto add the set of commands that will be added by future commits, and\ncall to it from the trace event initialization code.\n\nalso added are a couple trigger-specific data structures needed for\nthese implementations such as a trigger iterator and a struct for\ntrigger-specific data.\n\nA couple structs consisting mostly of function meant to be implemented\nin command-specific ways, event_command and event_trigger_ops, are\nused by the generic event trigger command implementations.  They\u0027re\nbeing put into trace.h alongside the other trace_event data structures\nand functions, in the expectation that they\u0027ll be needed in several\ntrace_event-related files such as trace_events_trigger.c and\ntrace_events.c.\n\nThe event_command.func() function is meant to be called by the trigger\nparsing code in order to add a trigger instance to the corresponding\nevent.  It essentially coordinates adding a live trigger instance to\nthe event, and arming the triggering the event.\n\nEvery event_command func() implementation essentially does the\nsame thing for any command:\n\n   - choose ops - use the value of param to choose either a number or\n     count version of event_trigger_ops specific to the command\n   - do the register or unregister of those ops\n   - associate a filter, if specified, with the triggering event\n\nThe reg() and unreg() ops allow command-specific implementations for\nevent_trigger_op registration and unregistration, and the\nget_trigger_ops() op allows command-specific event_trigger_ops\nselection to be parameterized.  When a trigger instance is added, the\nreg() op essentially adds that trigger to the triggering event and\narms it, while unreg() does the opposite.  The set_filter() function\nis used to associate a filter with the trigger - if the command\ndoesn\u0027t specify a set_filter() implementation, the command will ignore\nfilters.\n\nEach command has an associated trigger_type, which serves double duty,\nboth as a unique identifier for the command as well as a value that\ncan be used for setting a trigger mode bit during trigger invocation.\n\nThe signature of func() adds a pointer to the event_command struct,\nused to invoke those functions, along with a command_data param that\ncan be passed to the reg/unreg functions.  This allows func()\nimplementations to use command-specific blobs and supports code\nre-use.\n\nThe event_trigger_ops.func() command corrsponds to the trigger \u0027probe\u0027\nfunction that gets called when the triggering event is actually\ninvoked.  The other functions are used to list the trigger when\nneeded, along with a couple mundane book-keeping functions.\n\nThis also moves event_file_data() into trace.h so it can be used\noutside of trace_events.c.\n\nLink: http://lkml.kernel.org/r/316d95061accdee070aac8e5750afba0192fa5b9.1382622043.git.tom.zanussi@linux.intel.com\n\nSigned-off-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nIdea-by: Steve Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "5263f0a88076ab32b3120356645734918bdc1700",
      "tree": "8577c0c004fb30844739b66086368fcecd09ef5b",
      "parents": [
        "f7556698a36995a755a4ce154953dcf438145b3b",
        "c4602c1c818bd6626178d6d3fcc152d9f2f48ac0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 20 09:32:30 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 20 09:32:30 2013 -0800"
      },
      "message": "Merge tag \u0027trace-fixes-v3.13-rc2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace\n\nPull ftrace fix from Steven Rostedt:\n \"This fixes a long standing bug in the ftrace profiler.  The problem is\n  that the profiler only initializes the online CPUs, and not possible\n  CPUs.  This causes issues if the user takes CPUs online or offline\n  while the profiler is running.\n\n  If we online a CPU after starting the profiler, we lose all the trace\n  information on the CPU going online.\n\n  If we offline a CPU after running a test and start a new test, it will\n  not clear the old data from that CPU.\n\n  This bug causes incorrect data to be reported to the user if they\n  online or offline CPUs during the profiling\"\n\n* tag \u0027trace-fixes-v3.13-rc2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:\n  ftrace: Initialize the ftrace profiler for each possible cpu\n"
    },
    {
      "commit": "c4602c1c818bd6626178d6d3fcc152d9f2f48ac0",
      "tree": "f09af73ac1a12cea420b02ca5970c769ce479e29",
      "parents": [
        "3ccb01239201af06a07482ec686b14cd148102a5"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Mon Dec 16 15:20:01 2013 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Dec 16 10:53:46 2013 -0500"
      },
      "message": "ftrace: Initialize the ftrace profiler for each possible cpu\n\nFtrace currently initializes only the online CPUs. This implementation has\ntwo problems:\n- If we online a CPU after we enable the function profile, and then run the\n  test, we will lose the trace information on that CPU.\n  Steps to reproduce:\n  # echo 0 \u003e /sys/devices/system/cpu/cpu1/online\n  # cd \u003cdebugfs\u003e/tracing/\n  # echo \u003csome function name\u003e \u003e\u003e set_ftrace_filter\n  # echo 1 \u003e function_profile_enabled\n  # echo 1 \u003e /sys/devices/system/cpu/cpu1/online\n  # run test\n- If we offline a CPU before we enable the function profile, we will not clear\n  the trace information when we enable the function profile. It will trouble\n  the users.\n  Steps to reproduce:\n  # cd \u003cdebugfs\u003e/tracing/\n  # echo \u003csome function name\u003e \u003e\u003e set_ftrace_filter\n  # echo 1 \u003e function_profile_enabled\n  # run test\n  # cat trace_stat/function*\n  # echo 0 \u003e /sys/devices/system/cpu/cpu1/online\n  # echo 0 \u003e function_profile_enabled\n  # echo 1 \u003e function_profile_enabled\n  # cat trace_stat/function*\n  # run test\n  # cat trace_stat/function*\n\nSo it is better that we initialize the ftrace profiler for each possible cpu\nevery time we enable the function profile instead of just the online ones.\n\nLink: http://lkml.kernel.org/r/1387178401-10619-1-git-send-email-miaox@cn.fujitsu.com\n\nCc: stable@vger.kernel.org # 2.6.31+\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "843f4f4bb1a2c4c196a1af1d18bb6477a580ac78",
      "tree": "53b795cb810b7430e46fe485d081bab675792ddb",
      "parents": [
        "c537aba00e3f1df8ce6c7c9fcb98b82c0c2d1d2c",
        "3ccb01239201af06a07482ec686b14cd148102a5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 06 08:34:16 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 06 08:34:16 2013 -0800"
      },
      "message": "Merge tag \u0027trace-fixes-3.13-rc2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace\n\nPull tracing fix from Steven Rostedt:\n \"A regression showed up that there\u0027s a large delay when enabling all\n  events.  This was prevalent when FTRACE_SELFTEST was enabled which\n  enables all events several times, and caused the system bootup to\n  pause for over a minute.\n\n  This was tracked down to an addition of a synchronize_sched()\n  performed when system call tracepoints are unregistered.\n\n  The synchronize_sched() is needed between the unregistering of the\n  system call tracepoint and a deletion of a tracing instance buffer.\n  But placing the synchronize_sched() in the unreg of *every* system\n  call tracepoint is a bit overboard.  A single synchronize_sched()\n  before the deletion of the instance is sufficient\"\n\n* tag \u0027trace-fixes-3.13-rc2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:\n  tracing: Only run synchronize_sched() at instance deletion time\n"
    },
    {
      "commit": "3ccb01239201af06a07482ec686b14cd148102a5",
      "tree": "5ad078061e71dcf23cd1ee3f4ca353060c185324",
      "parents": [
        "dc1ccc48159d63eca5089e507c82c7d22ef60839"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Dec 03 12:41:20 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Dec 05 14:22:30 2013 -0500"
      },
      "message": "tracing: Only run synchronize_sched() at instance deletion time\n\nIt has been reported that boot up with FTRACE_SELFTEST enabled can take a\nvery long time. There can be stalls of over a minute.\n\nThis was tracked down to the synchronize_sched() called when a system call\nevent is disabled. As the self tests enable and disable thousands of events,\nthis makes the synchronize_sched() get called thousands of times.\n\nThe synchornize_sched() was added with d562aff93bfb53 \"tracing: Add support\nfor SOFT_DISABLE to syscall events\" which caused this regression (added\nin 3.13-rc1).\n\nThe synchronize_sched() is to protect against the events being accessed\nwhen a tracer instance is being deleted. When an instance is being deleted\nall the events associated to it are unregistered. The synchronize_sched()\nmakes sure that no more users are running when it finishes.\n\nInstead of calling synchronize_sched() for all syscall events, we only\nneed to call it once, after the events are unregistered and before the\ninstance is deleted. The event_mutex is held during this action to\nprevent new users from enabling events.\n\nLink: http://lkml.kernel.org/r/20131203124120.427b9661@gandalf.local.home\n\nReported-by: Petr Mladek \u003cpmladek@suse.cz\u003e\nAcked-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nAcked-by: Petr Mladek \u003cpmladek@suse.cz\u003e\nTested-by: Petr Mladek \u003cpmladek@suse.cz\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "e321ae4c207ce4c6c6812fc65e666efc325cc65e",
      "tree": "117ded7f1a1bfcdcc6417c6816c02680539d6485",
      "parents": [
        "bcc2f9b718d0be9cd77551d37c28daf4ebbc570c",
        "e98a6e59dff885eb387163b1a7abe019a44ba90b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 02 10:13:09 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 02 10:13:09 2013 -0800"
      },
      "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 kernel and tooling fixes\"\n\n* \u0027perf-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  tools lib traceevent: Fix conversion of pointer to integer of different size\n  perf/trace: Properly use u64 to hold event_id\n  perf: Remove fragile swevent hlist optimization\n  ftrace, perf: Avoid infinite event generation loop\n  tools lib traceevent: Fix use of multiple options in processing field\n  perf header: Fix possible memory leaks in process_group_desc()\n  perf header: Fix bogus group name\n  perf tools: Tag thread comm as overriden\n"
    },
    {
      "commit": "8a56d7761d2d041ae5e8215d20b4167d8aa93f51",
      "tree": "c6e4eb64a98c37545958e1a73b95556f58e5b169",
      "parents": [
        "4e58e54754dc1fec21c3a9e824bc108b05fdf46e"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Mon Nov 25 20:59:46 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Nov 26 10:36:50 2013 -0500"
      },
      "message": "ftrace: Fix function graph with loading of modules\n\nCommit 8c4f3c3fa9681 \"ftrace: Check module functions being traced on reload\"\nfixed module loading and unloading with respect to function tracing, but\nit missed the function graph tracer. If you perform the following\n\n # cd /sys/kernel/debug/tracing\n # echo function_graph \u003e current_tracer\n # modprobe nfsd\n # echo nop \u003e current_tracer\n\nYou\u0027ll get the following oops message:\n\n ------------[ cut here ]------------\n WARNING: CPU: 2 PID: 2910 at /linux.git/kernel/trace/ftrace.c:1640 __ftrace_hash_rec_update.part.35+0x168/0x1b9()\n Modules linked in: nfsd exportfs nfs_acl lockd ipt_MASQUERADE sunrpc ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 ip6table_filter ip6_tables uinput snd_hda_codec_idt\n CPU: 2 PID: 2910 Comm: bash Not tainted 3.13.0-rc1-test #7\n 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  0000000000000668 ffff8800787efcf8 ffffffff814fe193 ffff88007d500000\n  0000000000000000 ffff8800787efd38 ffffffff8103b80a 0000000000000668\n  ffffffff810b2b9a ffffffff81a48370 0000000000000001 ffff880037aea000\n Call Trace:\n  [\u003cffffffff814fe193\u003e] dump_stack+0x4f/0x7c\n  [\u003cffffffff8103b80a\u003e] warn_slowpath_common+0x81/0x9b\n  [\u003cffffffff810b2b9a\u003e] ? __ftrace_hash_rec_update.part.35+0x168/0x1b9\n  [\u003cffffffff8103b83e\u003e] warn_slowpath_null+0x1a/0x1c\n  [\u003cffffffff810b2b9a\u003e] __ftrace_hash_rec_update.part.35+0x168/0x1b9\n  [\u003cffffffff81502f89\u003e] ? __mutex_lock_slowpath+0x364/0x364\n  [\u003cffffffff810b2cc2\u003e] ftrace_shutdown+0xd7/0x12b\n  [\u003cffffffff810b47f0\u003e] unregister_ftrace_graph+0x49/0x78\n  [\u003cffffffff810c4b30\u003e] graph_trace_reset+0xe/0x10\n  [\u003cffffffff810bf393\u003e] tracing_set_tracer+0xa7/0x26a\n  [\u003cffffffff810bf5e1\u003e] tracing_set_trace_write+0x8b/0xbd\n  [\u003cffffffff810c501c\u003e] ? ftrace_return_to_handler+0xb2/0xde\n  [\u003cffffffff811240a8\u003e] ? __sb_end_write+0x5e/0x5e\n  [\u003cffffffff81122aed\u003e] vfs_write+0xab/0xf6\n  [\u003cffffffff8150a185\u003e] ftrace_graph_caller+0x85/0x85\n  [\u003cffffffff81122dbd\u003e] SyS_write+0x59/0x82\n  [\u003cffffffff8150a185\u003e] ftrace_graph_caller+0x85/0x85\n  [\u003cffffffff8150a2d2\u003e] system_call_fastpath+0x16/0x1b\n ---[ end trace 940358030751eafb ]---\n\nThe above mentioned commit didn\u0027t go far enough. Well, it covered the\nfunction tracer by adding checks in __register_ftrace_function(). The\nproblem is that the function graph tracer circumvents that (for a slight\nefficiency gain when function graph trace is running with a function\ntracer. The gain was not worth this).\n\nThe problem came with ftrace_startup() which should always be called after\n__register_ftrace_function(), if you want this bug to be completely fixed.\n\nAnyway, this solution moves __register_ftrace_function() inside of\nftrace_startup() and removes the need to call them both.\n\nReported-by: Dave Wysochanski \u003cdwysocha@redhat.com\u003e\nFixes: ed926f9b35cd (\"ftrace: Use counters to enable functions to trace\")\nCc: stable@vger.kernel.org # 3.0+\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "4f024f3797c43cb4b73cd2c50cec728842d0e49e",
      "tree": "3aedcab02d2ad723a189d01934d1e94fec7a54e1",
      "parents": [
        "ed9c47bebeeea4a468b07cfd745c690190f8014c"
      ],
      "author": {
        "name": "Kent Overstreet",
        "email": "kmo@daterainc.com",
        "time": "Fri Oct 11 15:44:27 2013 -0700"
      },
      "committer": {
        "name": "Kent Overstreet",
        "email": "kmo@daterainc.com",
        "time": "Sat Nov 23 22:33:47 2013 -0800"
      },
      "message": "block: Abstract out bvec iterator\n\nImmutable biovecs are going to require an explicit iterator. To\nimplement immutable bvecs, a later patch is going to add a bi_bvec_done\nmember to this struct; for now, this patch effectively just renames\nthings.\n\nSigned-off-by: Kent Overstreet \u003ckmo@daterainc.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: \"Ed L. Cashin\" \u003cecashin@coraid.com\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Lars Ellenberg \u003cdrbd-dev@lists.linbit.com\u003e\nCc: Jiri Kosina \u003cjkosina@suse.cz\u003e\nCc: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\nCc: Geoff Levand \u003cgeoff@infradead.org\u003e\nCc: Yehuda Sadeh \u003cyehuda@inktank.com\u003e\nCc: Sage Weil \u003csage@inktank.com\u003e\nCc: Alex Elder \u003celder@inktank.com\u003e\nCc: ceph-devel@vger.kernel.org\nCc: Joshua Morris \u003cjosh.h.morris@us.ibm.com\u003e\nCc: Philip Kelleher \u003cpjk1939@linux.vnet.ibm.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: \"Michael S. Tsirkin\" \u003cmst@redhat.com\u003e\nCc: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Alasdair Kergon \u003cagk@redhat.com\u003e\nCc: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: dm-devel@redhat.com\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: linux390@de.ibm.com\nCc: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nCc: Benny Halevy \u003cbhalevy@tonian.com\u003e\nCc: \"James E.J. Bottomley\" \u003cJBottomley@parallels.com\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: \"Nicholas A. Bellinger\" \u003cnab@linux-iscsi.org\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Chris Mason \u003cchris.mason@fusionio.com\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Andreas Dilger \u003cadilger.kernel@dilger.ca\u003e\nCc: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Dave Kleikamp \u003cshaggy@kernel.org\u003e\nCc: Joern Engel \u003cjoern@logfs.org\u003e\nCc: Prasad Joshi \u003cprasadjoshi.linux@gmail.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: KONISHI Ryusuke \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nCc: Ben Myers \u003cbpm@sgi.com\u003e\nCc: xfs@oss.sgi.com\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Len Brown \u003clen.brown@intel.com\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Herton Ronaldo Krzesinski \u003cherton.krzesinski@canonical.com\u003e\nCc: Ben Hutchings \u003cben@decadent.org.uk\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Guo Chao \u003cyan@linux.vnet.ibm.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Asai Thambi S P \u003casamymuthupa@micron.com\u003e\nCc: Selvan Mani \u003csmani@micron.com\u003e\nCc: Sam Bradshaw \u003csbradshaw@micron.com\u003e\nCc: Wei Yongjun \u003cyongjun_wei@trendmicro.com.cn\u003e\nCc: \"Roger Pau Monné\" \u003croger.pau@citrix.com\u003e\nCc: Jan Beulich \u003cjbeulich@suse.com\u003e\nCc: Stefano Stabellini \u003cstefano.stabellini@eu.citrix.com\u003e\nCc: Ian Campbell \u003cIan.Campbell@citrix.com\u003e\nCc: Sebastian Ott \u003csebott@linux.vnet.ibm.com\u003e\nCc: Christian Borntraeger \u003cborntraeger@de.ibm.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Jiang Liu \u003cjiang.liu@huawei.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nCc: Jerome Marchand \u003cjmarchand@redhat.com\u003e\nCc: Joe Perches \u003cjoe@perches.com\u003e\nCc: Peng Tao \u003ctao.peng@emc.com\u003e\nCc: Andy Adamson \u003candros@netapp.com\u003e\nCc: fanchaoting \u003cfanchaoting@cn.fujitsu.com\u003e\nCc: Jie Liu \u003cjeff.liu@oracle.com\u003e\nCc: Sunil Mushran \u003csunil.mushran@gmail.com\u003e\nCc: \"Martin K. Petersen\" \u003cmartin.petersen@oracle.com\u003e\nCc: Namjae Jeon \u003cnamjae.jeon@samsung.com\u003e\nCc: Pankaj Kumar \u003cpankaj.km@samsung.com\u003e\nCc: Dan Magenheimer \u003cdan.magenheimer@oracle.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e6\n"
    },
    {
      "commit": "0022cedd4a7d8a87841351e2b018bb6794cf2e67",
      "tree": "d52f5e595e33ed3df04acf750f3f1efe45b40d89",
      "parents": [
        "06db0b21712f878b808480ef31097637013bbf0f"
      ],
      "author": {
        "name": "Vince Weaver",
        "email": "vincent.weaver@maine.edu",
        "time": "Fri Nov 15 12:39:45 2013 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Tue Nov 19 16:57:44 2013 +0100"
      },
      "message": "perf/trace: Properly use u64 to hold event_id\n\nThe 64-bit attr.config value for perf trace events was being copied into\nan \"int\" before doing a comparison, meaning the top 32 bits were\nbeing truncated.\n\nAs far as I can tell this didn\u0027t cause any errors, but it did mean\nit was possible to create valid aliases for all the tracepoint ids\nwhich I don\u0027t think was intended.  (For example, 0xffffffff00000018\nand 0x18 both enable the same tracepoint).\n\nSigned-off-by: Vince Weaver \u003cvincent.weaver@maine.edu\u003e\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/alpine.DEB.2.10.1311151236100.11932@vincent-weaver-1.um.maine.edu\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "d5b5f391d434c5cc8bcb1ab2d759738797b85f52",
      "tree": "9be9680fd08dd943cac38b278dde12d83b4a9856",
      "parents": [
        "801a76050bcf8d4e500eb8d048ff6265f37a61c8"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Thu Nov 14 16:23:04 2013 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Tue Nov 19 16:57:40 2013 +0100"
      },
      "message": "ftrace, perf: Avoid infinite event generation loop\n\nVince\u0027s perf-trinity fuzzer found yet another \u0027interesting\u0027 problem.\n\nWhen we sample the irq_work_exit tracepoint with period\u003d\u003d1 (or\nPERF_SAMPLE_PERIOD) and we add an fasync SIGNAL handler we create an\ninfinite event generation loop:\n\n  ,-\u003e \u003cIPI\u003e\n  |     irq_work_exit() -\u003e\n  |       trace_irq_work_exit() -\u003e\n  |         ...\n  |           __perf_event_overflow() -\u003e (due to fasync)\n  |             irq_work_queue() -\u003e (irq_work_list must be empty)\n  \u0027---------      arch_irq_work_raise()\n\nSimilar things can happen due to regular poll() wakeups if we exceed\nthe ring-buffer wakeup watermark, or have an event_limit.\n\nTo avoid this, dis-allow sampling this particular tracepoint.\n\nIn order to achieve this, create a special perf_perm function pointer\nfor each event and call this (when set) on trying to create a\ntracepoint perf event.\n\n[ roasted: use expr... to allow for \u0027,\u0027 in your expression ]\n\nReported-by: Vince Weaver \u003cvincent.weaver@maine.edu\u003e\nTested-by: Vince Weaver \u003cvincent.weaver@maine.edu\u003e\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLink: http://lkml.kernel.org/r/20131114152304.GC5364@laptop.programming.kicks-ass.net\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "b29c8306a368cf65782669eba079f81dc861c54d",
      "tree": "35d75aa0e671070d4024f11338d3ae89b078b1ed",
      "parents": [
        "0bde7294e2ada03d0f1cc61cec51274081d9a9cf",
        "3a81a5210b7d33bb6d836b4c4952a54166a336f3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Nov 16 12:23:18 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Nov 16 12:23:18 2013 -0800"
      },
      "message": "Merge tag \u0027trace-3.13\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace\n\nPull tracing update from Steven Rostedt:\n \"This batch of changes is mostly clean ups and small bug fixes.  The\n  only real feature that was added this release is from Namhyung Kim,\n  who introduced \"set_graph_notrace\" filter that lets you run the\n  function graph tracer and not trace particular functions and their\n  call chain.\n\n  Tom Zanussi added some updates to the ftrace multibuffer tracing that\n  made it more consistent with the top level tracing.\n\n  One of the fixes for perf function tracing required an API change in\n  RCU; the addition of \"rcu_is_watching()\".  As Paul McKenney is pushing\n  that change in this release too, he gave me a branch that included all\n  the changes to get that working, and I pulled that into my tree in\n  order to complete the perf function tracing fix\"\n\n* tag \u0027trace-3.13\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:\n  tracing: Add rcu annotation for syscall trace descriptors\n  tracing: Do not use signed enums with unsigned long long in fgragh output\n  tracing: Remove unused function ftrace_off_permanent()\n  tracing: Do not assign filp-\u003eprivate_data to freed memory\n  tracing: Add helper function tracing_is_disabled()\n  tracing: Open tracer when ftrace_dump_on_oops is used\n  tracing: Add support for SOFT_DISABLE to syscall events\n  tracing: Make register/unregister_ftrace_command __init\n  tracing: Update event filters for multibuffer\n  recordmcount.pl: Add support for __fentry__\n  ftrace: Have control op function callback only trace when RCU is watching\n  rcu: Do not trace rcu_is_watching() functions\n  ftrace/x86: skip over the breakpoint for ftrace caller\n  trace/trace_stat: use rbtree postorder iteration helper instead of opencoding\n  ftrace: Add set_graph_notrace filter\n  ftrace: Narrow down the protected area of graph_lock\n  ftrace: Introduce struct ftrace_graph_data\n  ftrace: Get rid of ftrace_graph_filter_enabled\n  tracing: Fix potential out-of-bounds in trace_get_user()\n  tracing: Show more exact help information about snapshot\n"
    },
    {
      "commit": "0910c0bdf7c291a41bc21e40a97389c9d4c1960d",
      "tree": "177c4cb22ece78b18f64f548ae82b9a15edbb99c",
      "parents": [
        "2821fe6b00a1e902fd399bb4b7e40bc3041f4d44",
        "e37459b8e2c7db6735e39e019e448b76e5e77647"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 14 12:08:14 2013 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 14 12:08:14 2013 +0900"
      },
      "message": "Merge branch \u0027for-3.13/core\u0027 of git://git.kernel.dk/linux-block\n\nPull block IO core updates from Jens Axboe:\n \"This is the pull request for the core changes in the block layer for\n  3.13.  It contains:\n\n   - The new blk-mq request interface.\n\n     This is a new and more scalable queueing model that marries the\n     best part of the request based interface we currently have (which\n     is fully featured, but scales poorly) and the bio based \"interface\"\n     which the new drivers for high IOPS devices end up using because\n     it\u0027s much faster than the request based one.\n\n     The bio interface has no block layer support, since it taps into\n     the stack much earlier.  This means that drivers end up having to\n     implement a lot of functionality on their own, like tagging,\n     timeout handling, requeue, etc.  The blk-mq interface provides all\n     these.  Some drivers even provide a switch to select bio or rq and\n     has code to handle both, since things like merging only works in\n     the rq model and hence is faster for some workloads.  This is a\n     huge mess.  Conversion of these drivers nets us a substantial code\n     reduction.  Initial results on converting SCSI to this model even\n     shows an 8x improvement on single queue devices.  So while the\n     model was intended to work on the newer multiqueue devices, it has\n     substantial improvements for \"classic\" hardware as well.  This code\n     has gone through extensive testing and development, it\u0027s now ready\n     to go.  A pull request is coming to convert virtio-blk to this\n     model will be will be coming as well, with more drivers scheduled\n     for 3.14 conversion.\n\n   - Two blktrace fixes from Jan and Chen Gang.\n\n   - A plug merge fix from Alireza Haghdoost.\n\n   - Conversion of __get_cpu_var() from Christoph Lameter.\n\n   - Fix for sector_div() with 64-bit divider from Geert Uytterhoeven.\n\n   - A fix for a race between request completion and the timeout\n     handling from Jeff Moyer.  This is what caused the merge conflict\n     with blk-mq/core, in case you are looking at that.\n\n   - A dm stacking fix from Mike Snitzer.\n\n   - A code consolidation fix and duplicated code removal from Kent\n     Overstreet.\n\n   - A handful of block bug fixes from Mikulas Patocka, fixing a loop\n     crash and memory corruption on blk cg.\n\n   - Elevator switch bug fix from Tomoki Sekiyama.\n\n  A heads-up that I had to rebase this branch.  Initially the immutable\n  bio_vecs had been queued up for inclusion, but a week later, it became\n  clear that it wasn\u0027t fully cooked yet.  So the decision was made to\n  pull this out and postpone it until 3.14.  It was a straight forward\n  rebase, just pruning out the immutable series and the later fixes of\n  problems with it.  The rest of the patches applied directly and no\n  further changes were made\"\n\n* \u0027for-3.13/core\u0027 of git://git.kernel.dk/linux-block: (31 commits)\n  block: replace IS_ERR and PTR_ERR with PTR_ERR_OR_ZERO\n  block: replace IS_ERR and PTR_ERR with PTR_ERR_OR_ZERO\n  block: Do not call sector_div() with a 64-bit divisor\n  kernel: trace: blktrace: remove redundent memcpy() in compat_blk_trace_setup()\n  block: Consolidate duplicated bio_trim() implementations\n  block: Use rw_copy_check_uvector()\n  block: Enable sysfs nomerge control for I/O requests in the plug list\n  block: properly stack underlying max_segment_size to DM device\n  elevator: acquire q-\u003esysfs_lock in elevator_change()\n  elevator: Fix a race in elevator switching and md device initialization\n  block: Replace __get_cpu_var uses\n  bdi: test bdi_init failure\n  block: fix a probe argument to blk_register_region\n  loop: fix crash if blk_alloc_queue fails\n  blk-core: Fix memory corruption if blkcg_init_queue fails\n  block: fix race between request completion and timeout handling\n  blktrace: Send BLK_TN_PROCESS events to all running traces\n  blk-mq: don\u0027t disallow request merges for req-\u003especial being set\n  blk-mq: mq plug list breakage\n  blk-mq: fix for flush deadlock\n  ...\n"
    },
    {
      "commit": "39cf275a1a18ba3c7eb9b986c5c9b35b57332798",
      "tree": "40b119ca9d2fbaf8128d3fa25f4c64669002b0c0",
      "parents": [
        "ad5d69899e52792671c1aa6c7360464c7edfe09c",
        "e5137b50a0640009fd63a3e65c14bc6e1be8796a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 12 10:20:12 2013 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 12 10:20:12 2013 +0900"
      },
      "message": "Merge branch \u0027sched-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull scheduler changes from Ingo Molnar:\n \"The main changes in this cycle are:\n\n   - (much) improved CONFIG_NUMA_BALANCING support from Mel Gorman, Rik\n     van Riel, Peter Zijlstra et al.  Yay!\n\n   - optimize preemption counter handling: merge the NEED_RESCHED flag\n     into the preempt_count variable, by Peter Zijlstra.\n\n   - wait.h fixes and code reorganization from Peter Zijlstra\n\n   - cfs_bandwidth fixes from Ben Segall\n\n   - SMP load-balancer cleanups from Peter Zijstra\n\n   - idle balancer improvements from Jason Low\n\n   - other fixes and cleanups\"\n\n* \u0027sched-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (129 commits)\n  ftrace, sched: Add TRACE_FLAG_PREEMPT_RESCHED\n  stop_machine: Fix race between stop_two_cpus() and stop_cpus()\n  sched: Remove unnecessary iteration over sched domains to update nr_busy_cpus\n  sched: Fix asymmetric scheduling for POWER7\n  sched: Move completion code from core.c to completion.c\n  sched: Move wait code from core.c to wait.c\n  sched: Move wait.c into kernel/sched/\n  sched/wait: Fix __wait_event_interruptible_lock_irq_timeout()\n  sched: Avoid throttle_cfs_rq() racing with period_timer stopping\n  sched: Guarantee new group-entities always have weight\n  sched: Fix hrtimer_cancel()/rq-\u003elock deadlock\n  sched: Fix cfs_bandwidth misuse of hrtimer_expires_remaining\n  sched: Fix race on toggling cfs_bandwidth_used\n  sched: Remove extra put_online_cpus() inside sched_setaffinity()\n  sched/rt: Fix task_tick_rt() comment\n  sched/wait: Fix build breakage\n  sched/wait: Introduce prepare_to_wait_event()\n  sched/wait: Add ___wait_cond_timeout() to wait_event*_timeout() too\n  sched: Remove get_online_cpus() usage\n  sched: Fix race in migrate_swap_stop()\n  ...\n"
    },
    {
      "commit": "3a81a5210b7d33bb6d836b4c4952a54166a336f3",
      "tree": "2aaf3a8773715709df30ae6acf9a5a8a61214929",
      "parents": [
        "6fc84ea70eae478099c866ace022ecfdef998032"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Mon Nov 11 11:47:06 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Nov 11 11:47:06 2013 -0500"
      },
      "message": "tracing: Add rcu annotation for syscall trace descriptors\n\nsparse complains about the enter/exit_sysycall_files[] variables being\ndereferenced with rcu_dereference_sched(). The fields need to be\nannotated with __rcu.\n\nReported-by: kbuild test robot \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "e5137b50a0640009fd63a3e65c14bc6e1be8796a",
      "tree": "ef8475a7281a78d7ad7bd6694b44c8a32c12f970",
      "parents": [
        "7053ea1a34fa8567cb5e3c39e04ace4c5d0fbeaa"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Fri Oct 04 17:28:26 2013 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Nov 11 12:43:39 2013 +0100"
      },
      "message": "ftrace, sched: Add TRACE_FLAG_PREEMPT_RESCHED\n\nSince the introduction of PREEMPT_NEED_RESCHED in:\n\n  f27dde8deef3 (\"sched: Add NEED_RESCHED to the preempt_count\")\n\nwe need to be able to look at both TIF_NEED_RESCHED and\nPREEMPT_NEED_RESCHED to understand the full preemption behaviour.\n\nAdd it to the trace output.\n\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nCc: Huang Ying \u003cying.huang@intel.com\u003e\nCc: Yuanhan Liu \u003cyuanhan.liu@linux.intel.com\u003e\nLink: http://lkml.kernel.org/r/20131004152826.GP3081@twins.programming.kicks-ass.net\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "f8c5e94486671ffcac696886c246baa6ba89b5cf",
      "tree": "9a4cf461b240740a0670cc364aec7851b3907ae1",
      "parents": [
        "6678d83f18386eb103f8345024e52c5abe61725c"
      ],
      "author": {
        "name": "Chen Gang",
        "email": "gang.chen@asianux.com",
        "time": "Sun Nov 03 22:23:39 2013 +0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 08 09:04:30 2013 -0700"
      },
      "message": "kernel: trace: blktrace: remove redundent memcpy() in compat_blk_trace_setup()\n\ndo_blk_trace_setup() will fully initialize \u0027buts.name\u0027, so can remove\nthe related memcpy(). And also use BLKTRACE_BDEV_SIZE and ARRAY_SIZE\ninstead of hard code number \u002732\u0027.\n\nSigned-off-by: Chen Gang \u003cgang.chen@asianux.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "a404d5576bbe586a1097a8bc2f32c5f22651b0aa",
      "tree": "011e6b1f5862a55485a9b9b32f19001c0b65e803",
      "parents": [
        "5e01dc7b26d9f24f39abace5da98ccbd6a5ceb52"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Sep 17 22:30:31 2013 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 08 08:59:00 2013 -0700"
      },
      "message": "blktrace: Send BLK_TN_PROCESS events to all running traces\n\nCurrently each task sends BLK_TN_PROCESS event to the first traced\ndevice it interacts with after a new trace is started. When there are\nseveral traced devices and the task accesses more devices, this logic\ncan result in BLK_TN_PROCESS being sent several times to some devices\nwhile it is never sent to other devices. Thus blkparse doesn\u0027t display\ncommand name when parsing some blktrace files.\n\nFix the problem by sending BLK_TN_PROCESS event to all traced devices\nwhen a task interacts with any of them.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nReview-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "6fc84ea70eae478099c866ace022ecfdef998032",
      "tree": "705f3bffb3513b96de7c9563371676451318700e",
      "parents": [
        "042b10d83d05174e50ee861ee3aca55fd6204324"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Wed Nov 06 14:50:06 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Nov 06 15:26:56 2013 -0500"
      },
      "message": "tracing: Do not use signed enums with unsigned long long in fgragh output\n\nThe duration field of print_graph_duration() can also be used\nto do the space filling by passing an enum in it:\n\n  DURATION_FILL_FULL\n  DURATION_FILL_START\n  DURATION_FILL_END\n\nThe problem is that these are enums and defined as negative,\nbut the duration field is unsigned long long. Most archs are\nfine with this but blackfin fails to compile because of it:\n\nkernel/built-in.o: In function `print_graph_duration\u0027:\nkernel/trace/trace_functions_graph.c:782: undefined reference to `__ucmpdi2\u0027\n\nOverloading a unsigned long long with an signed enum is just\nbad in principle. We can accomplish the same thing by using\npart of the flags field instead.\n\nCc: Mike Frysinger \u003cvapier@gentoo.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "042b10d83d05174e50ee861ee3aca55fd6204324",
      "tree": "7ab84aa7f1598def2008cfac2b045f52d728c0d1",
      "parents": [
        "d6d3523caab75196560c85aae80cb8f4a8e380ea"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Wed Nov 06 12:19:37 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Nov 06 15:26:55 2013 -0500"
      },
      "message": "tracing: Remove unused function ftrace_off_permanent()\n\nIn the past, ftrace_off_permanent() was called if something\nstrange was detected. But the ftrace_bug() now handles all the\nanomolies that can happen with ftrace (function tracing), and there\nare no uses of ftrace_off_permanent(). Get rid of it.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "d6d3523caab75196560c85aae80cb8f4a8e380ea",
      "tree": "c051e62d5e1579a530ed2966d1ee38f5c7a8dce8",
      "parents": [
        "2e86421debc2cf4d1513c9b73fcd34c5ce431ae3"
      ],
      "author": {
        "name": "Geyslan G. Bem",
        "email": "geyslan@gmail.com",
        "time": "Wed Nov 06 16:02:51 2013 -0300"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Nov 06 15:26:54 2013 -0500"
      },
      "message": "tracing: Do not assign filp-\u003eprivate_data to freed memory\n\nIn system_tr_open(), the filp-\u003eprivate_data can be assigned the \u0027dir\u0027\nvariable even if it was freed. This is on the error path, and is\nharmless because the error return code will prevent filp-\u003eprivate_data\nfrom being used. But for correctness, we should not assign it to\na recently freed variable, as that can cause static tools to give\nfalse warnings.\n\nAlso have both subsystem_open() and system_tr_open() return -ENODEV\nif tracing has been disabled.\n\nLink: http://lkml.kernel.org/r/1383764571-7318-1-git-send-email-geyslan@gmail.com\n\nSigned-off-by: Geyslan G. Bem \u003cgeyslan@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "12ae030d54ef250706da5642fc7697cc60ad0df7",
      "tree": "da4b38fcaa39449d289ddf42b798da0f7b6a551c",
      "parents": [
        "5e01dc7b26d9f24f39abace5da98ccbd6a5ceb52"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Nov 05 12:51:11 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@rostedt.homelinux.com",
        "time": "Wed Nov 06 14:44:49 2013 -0500"
      },
      "message": "perf/ftrace: Fix paranoid level for enabling function tracer\n\nThe current default perf paranoid level is \"1\" which has\n\"perf_paranoid_kernel()\" return false, and giving any operations that\nuse it, access to normal users. Unfortunately, this includes function\ntracing and normal users should not be allowed to enable function\ntracing by default.\n\nThe proper level is defined at \"-1\" (full perf access), which\n\"perf_paranoid_tracepoint_raw()\" will only give access to. Use that\ncheck instead for enabling function tracing.\n\nReported-by: Dave Jones \u003cdavej@redhat.com\u003e\nReported-by: Vince Weaver \u003cvincent.weaver@maine.edu\u003e\nTested-by: Vince Weaver \u003cvincent.weaver@maine.edu\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Jiri Olsa \u003cjolsa@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: stable@vger.kernel.org # 3.4+\nCVE: CVE-2013-2930\nFixes: ced39002f5ea (\"ftrace, perf: Add support to use function tracepoint in perf\")\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "2e86421debc2cf4d1513c9b73fcd34c5ce431ae3",
      "tree": "d72c2718037c2dc1ea9ddc26b8c9eb98c30efb66",
      "parents": [
        "b2f974d6af9accfec11e69cc76d2ab9f0c7359e0"
      ],
      "author": {
        "name": "Geyslan G. Bem",
        "email": "geyslan@gmail.com",
        "time": "Fri Oct 18 21:15:54 2013 -0300"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Nov 06 11:06:00 2013 -0500"
      },
      "message": "tracing: Add helper function tracing_is_disabled()\n\nThis patch creates the function \u0027tracing_is_disabled\u0027, which\ncan be used outside of trace.c.\n\nLink: http://lkml.kernel.org/r/1382141754-12155-1-git-send-email-geyslan@gmail.com\n\nSigned-off-by: Geyslan G. Bem \u003cgeyslan@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "b2f974d6af9accfec11e69cc76d2ab9f0c7359e0",
      "tree": "23e54345bd0a6d4ca709bf104ce8f33ed6c44ccb",
      "parents": [
        "d562aff93bfb530b0992141500a402d17081189d"
      ],
      "author": {
        "name": "Cody P Schafer",
        "email": "cody@linux.vnet.ibm.com",
        "time": "Wed Oct 23 11:49:57 2013 -0700"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Nov 06 10:03:11 2013 -0500"
      },
      "message": "tracing: Open tracer when ftrace_dump_on_oops is used\n\nWith ftrace_dump_on_oops, we previously did not open the tracer in\nquestion, sometimes causing the trace output to be useless.\n\nFor example, the function_graph tracer with tracing_thresh set dumped via\nftrace_dump_on_oops would show a series of \u0027}\u0027 indented at different levels,\nbut no function names.\n\ncall trace-\u003eopen() (and do a few other fixups copied from the normal dump\npath) to make the output more intelligible.\n\nLink: http://lkml.kernel.org/r/1382554197-16961-1-git-send-email-cody@linux.vnet.ibm.com\n\nSigned-off-by: Cody P Schafer \u003ccody@linux.vnet.ibm.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "d562aff93bfb530b0992141500a402d17081189d",
      "tree": "af541e2539c575932a6b0c13d69792472c3d26fa",
      "parents": [
        "38de93abec8d8acd8d6dbbe9b0d92d6d5cdb3090"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tom.zanussi@linux.intel.com",
        "time": "Thu Oct 24 08:34:19 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Nov 05 17:48:49 2013 -0500"
      },
      "message": "tracing: Add support for SOFT_DISABLE to syscall events\n\nThe original SOFT_DISABLE patches didn\u0027t add support for soft disable\nof syscall events; this adds it.\n\nAdd an array of ftrace_event_file pointers indexed by syscall number\nto the trace array and remove the existing enabled bitmaps, which as a\nresult are now redundant.  The ftrace_event_file structs in turn\ncontain the soft disable flags we need for per-syscall soft disable\naccounting.\n\nAdding ftrace_event_files also means we can remove the USE_CALL_FILTER\nbit, thus enabling multibuffer filter support for syscall events.\n\nLink: http://lkml.kernel.org/r/6e72b566e85d8df8042f133efbc6c30e21fb017e.1382620672.git.tom.zanussi@linux.intel.com\n\nSigned-off-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "38de93abec8d8acd8d6dbbe9b0d92d6d5cdb3090",
      "tree": "4b7ea21748121502c7d4d8625512134651d1eb9d",
      "parents": [
        "f306cc82a93d6b19f01634b80c580b9755c8b7cc"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tom.zanussi@linux.intel.com",
        "time": "Thu Oct 24 08:34:18 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Nov 05 17:43:40 2013 -0500"
      },
      "message": "tracing: Make register/unregister_ftrace_command __init\n\nregister/unregister_ftrace_command() are only ever called from __init\nfunctions, so can themselves be made __init.\n\nAlso make register_snapshot_cmd() __init for the same reason.\n\nLink: http://lkml.kernel.org/r/d4042c8cadb7ae6f843ac9a89a24e1c6a3099727.1382620672.git.tom.zanussi@linux.intel.com\n\nSigned-off-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "f306cc82a93d6b19f01634b80c580b9755c8b7cc",
      "tree": "1a9ef8d44ed192185e4d6da5f7154f9a1c2075cb",
      "parents": [
        "f02b625d0341519238ab3d9cc8706ff4bd45fb89"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tom.zanussi@linux.intel.com",
        "time": "Thu Oct 24 08:34:17 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Nov 05 16:50:20 2013 -0500"
      },
      "message": "tracing: Update event filters for multibuffer\n\nThe trace event filters are still tied to event calls rather than\nevent files, which means you don\u0027t get what you\u0027d expect when using\nfilters in the multibuffer case:\n\nBefore:\n\n  # echo \u0027bytes_alloc \u003e 8192\u0027 \u003e /sys/kernel/debug/tracing/events/kmem/kmalloc/filter\n  # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/filter\n  bytes_alloc \u003e 8192\n  # mkdir /sys/kernel/debug/tracing/instances/test1\n  # echo \u0027bytes_alloc \u003e 2048\u0027 \u003e /sys/kernel/debug/tracing/instances/test1/events/kmem/kmalloc/filter\n  # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/filter\n  bytes_alloc \u003e 2048\n  # cat /sys/kernel/debug/tracing/instances/test1/events/kmem/kmalloc/filter\n  bytes_alloc \u003e 2048\n\nSetting the filter in tracing/instances/test1/events shouldn\u0027t affect\nthe same event in tracing/events as it does above.\n\nAfter:\n\n  # echo \u0027bytes_alloc \u003e 8192\u0027 \u003e /sys/kernel/debug/tracing/events/kmem/kmalloc/filter\n  # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/filter\n  bytes_alloc \u003e 8192\n  # mkdir /sys/kernel/debug/tracing/instances/test1\n  # echo \u0027bytes_alloc \u003e 2048\u0027 \u003e /sys/kernel/debug/tracing/instances/test1/events/kmem/kmalloc/filter\n  # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/filter\n  bytes_alloc \u003e 8192\n  # cat /sys/kernel/debug/tracing/instances/test1/events/kmem/kmalloc/filter\n  bytes_alloc \u003e 2048\n\nWe\u0027d like to just move the filter directly from ftrace_event_call to\nftrace_event_file, but there are a couple cases that don\u0027t yet have\nmultibuffer support and therefore have to continue using the current\nevent_call-based filters.  For those cases, a new USE_CALL_FILTER bit\nis added to the event_call flags, whose main purpose is to keep the\nold behavior for those cases until they can be updated with\nmultibuffer support; at that point, the USE_CALL_FILTER flag (and the\nnew associated call_filter_check_discard() function) can go away.\n\nThe multibuffer support also made filter_current_check_discard()\nredundant, so this change removes that function as well and replaces\nit with filter_check_discard() (or call_filter_check_discard() as\nappropriate).\n\nLink: http://lkml.kernel.org/r/f16e9ce4270c62f46b2e966119225e1c3cca7e60.1382620672.git.tom.zanussi@linux.intel.com\n\nSigned-off-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "b5aa3a472b6d13d57a7521a663290dea2fb483a7",
      "tree": "00a245e4f0e64d4c8320e1354bd73e7ce7e45080",
      "parents": [
        "9418fb208059d6f916bdb116653e166c5db9456d"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Mon Nov 04 18:34:44 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Nov 05 16:04:26 2013 -0500"
      },
      "message": "ftrace: Have control op function callback only trace when RCU is watching\n\nDave Jones reported that trinity would be able to trigger the following\nback trace:\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\n [ INFO: suspicious RCU usage. ]\n 3.10.0-rc2+ #38 Not tainted\n -------------------------------\n include/linux/rcupdate.h:771 rcu_read_lock() used illegally while idle!\n other info that might help us debug this:\n\n RCU used illegally from idle CPU!  rcu_scheduler_active \u003d 1, debug_locks \u003d 0\n RCU used illegally from extended quiescent state!\n 1 lock held by trinity-child1/18786:\n  #0:  (rcu_read_lock){.+.+..}, at: [\u003cffffffff8113dd48\u003e] __perf_event_overflow+0x108/0x310\n stack backtrace:\n CPU: 3 PID: 18786 Comm: trinity-child1 Not tainted 3.10.0-rc2+ #38\n  0000000000000000 ffff88020767bac8 ffffffff816e2f6b ffff88020767baf8\n  ffffffff810b5897 ffff88021de92520 0000000000000000 ffff88020767bbf8\n  0000000000000000 ffff88020767bb78 ffffffff8113ded4 ffffffff8113dd48\n Call Trace:\n  [\u003cffffffff816e2f6b\u003e] dump_stack+0x19/0x1b\n  [\u003cffffffff810b5897\u003e] lockdep_rcu_suspicious+0xe7/0x120\n  [\u003cffffffff8113ded4\u003e] __perf_event_overflow+0x294/0x310\n  [\u003cffffffff8113dd48\u003e] ? __perf_event_overflow+0x108/0x310\n  [\u003cffffffff81309289\u003e] ? __const_udelay+0x29/0x30\n  [\u003cffffffff81076054\u003e] ? __rcu_read_unlock+0x54/0xa0\n  [\u003cffffffff816f4000\u003e] ? ftrace_call+0x5/0x2f\n  [\u003cffffffff8113dfa1\u003e] perf_swevent_overflow+0x51/0xe0\n  [\u003cffffffff8113e08f\u003e] perf_swevent_event+0x5f/0x90\n  [\u003cffffffff8113e1c9\u003e] perf_tp_event+0x109/0x4f0\n  [\u003cffffffff8113e36f\u003e] ? perf_tp_event+0x2af/0x4f0\n  [\u003cffffffff81074630\u003e] ? __rcu_read_lock+0x20/0x20\n  [\u003cffffffff8112d79f\u003e] perf_ftrace_function_call+0xbf/0xd0\n  [\u003cffffffff8110e1e1\u003e] ? ftrace_ops_control_func+0x181/0x210\n  [\u003cffffffff81074630\u003e] ? __rcu_read_lock+0x20/0x20\n  [\u003cffffffff81100cae\u003e] ? rcu_eqs_enter_common+0x5e/0x470\n  [\u003cffffffff8110e1e1\u003e] ftrace_ops_control_func+0x181/0x210\n  [\u003cffffffff816f4000\u003e] ftrace_call+0x5/0x2f\n  [\u003cffffffff8110e229\u003e] ? ftrace_ops_control_func+0x1c9/0x210\n  [\u003cffffffff816f4000\u003e] ? ftrace_call+0x5/0x2f\n  [\u003cffffffff81074635\u003e] ? debug_lockdep_rcu_enabled+0x5/0x40\n  [\u003cffffffff81074635\u003e] ? debug_lockdep_rcu_enabled+0x5/0x40\n  [\u003cffffffff81100cae\u003e] ? rcu_eqs_enter_common+0x5e/0x470\n  [\u003cffffffff8110112a\u003e] rcu_eqs_enter+0x6a/0xb0\n  [\u003cffffffff81103673\u003e] rcu_user_enter+0x13/0x20\n  [\u003cffffffff8114541a\u003e] user_enter+0x6a/0xd0\n  [\u003cffffffff8100f6d8\u003e] syscall_trace_leave+0x78/0x140\n  [\u003cffffffff816f46af\u003e] int_check_syscall_exit_work+0x34/0x3d\n ------------[ cut here ]------------\n\nPerf uses rcu_read_lock() but as the function tracer can trace functions\neven when RCU is not currently active, this makes the rcu_read_lock()\nused by perf ineffective.\n\nAs perf is currently the only user of the ftrace_ops_control_func() and\nperf is also the only function callback that actively uses rcu_read_lock(),\nthe quick fix is to prevent the ftrace_ops_control_func() from calling\nits callbacks if RCU is not active.\n\nWith Paul\u0027s new \"rcu_is_watching()\" we can tell if RCU is active or not.\n\nReported-by: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Jiri Olsa \u003cjolsa@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "9cd804ac1f39e10510bf93700f1f7ea66b2e1b38",
      "tree": "547639fa4e63ca8aa30a964a571807da92bf8b1f",
      "parents": [
        "29ad23b00474c34e3b5040dda508c78d33a1a3eb"
      ],
      "author": {
        "name": "Cody P Schafer",
        "email": "cody@linux.vnet.ibm.com",
        "time": "Fri Nov 01 15:38:46 2013 -0700"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Nov 05 16:01:47 2013 -0500"
      },
      "message": "trace/trace_stat: use rbtree postorder iteration helper instead of opencoding\n\nUse rbtree_postorder_for_each_entry_safe() to destroy the rbtree instead\nof opencoding an alternate postorder iteration that modifies the tree\n\nLink: http://lkml.kernel.org/r/1383345566-25087-2-git-send-email-cody@linux.vnet.ibm.com\n\nSigned-off-by: Cody P Schafer \u003ccody@linux.vnet.ibm.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "29ad23b00474c34e3b5040dda508c78d33a1a3eb",
      "tree": "f6969382cf228535853c8ea3b60056e58678b673",
      "parents": [
        "6a10108bdbbfb66e5c431fd1056534e9717d34eb"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Mon Oct 14 17:24:26 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Oct 18 22:23:16 2013 -0400"
      },
      "message": "ftrace: Add set_graph_notrace filter\n\nThe set_graph_notrace filter is analogous to set_ftrace_notrace and\ncan be used for eliminating uninteresting part of function graph trace\noutput.  It also works with set_graph_function nicely.\n\n  # cd /sys/kernel/debug/tracing/\n  # echo do_page_fault \u003e set_graph_function\n  # perf ftrace live true\n   2)               |  do_page_fault() {\n   2)               |    __do_page_fault() {\n   2)   0.381 us    |      down_read_trylock();\n   2)   0.055 us    |      __might_sleep();\n   2)   0.696 us    |      find_vma();\n   2)               |      handle_mm_fault() {\n   2)               |        handle_pte_fault() {\n   2)               |          __do_fault() {\n   2)               |            filemap_fault() {\n   2)               |              find_get_page() {\n   2)   0.033 us    |                __rcu_read_lock();\n   2)   0.035 us    |                __rcu_read_unlock();\n   2)   1.696 us    |              }\n   2)   0.031 us    |              __might_sleep();\n   2)   2.831 us    |            }\n   2)               |            _raw_spin_lock() {\n   2)   0.046 us    |              add_preempt_count();\n   2)   0.841 us    |            }\n   2)   0.033 us    |            page_add_file_rmap();\n   2)               |            _raw_spin_unlock() {\n   2)   0.057 us    |              sub_preempt_count();\n   2)   0.568 us    |            }\n   2)               |            unlock_page() {\n   2)   0.084 us    |              page_waitqueue();\n   2)   0.126 us    |              __wake_up_bit();\n   2)   1.117 us    |            }\n   2)   7.729 us    |          }\n   2)   8.397 us    |        }\n   2)   8.956 us    |      }\n   2)   0.085 us    |      up_read();\n   2) + 12.745 us   |    }\n   2) + 13.401 us   |  }\n  ...\n\n  # echo handle_mm_fault \u003e set_graph_notrace\n  # perf ftrace live true\n   1)               |  do_page_fault() {\n   1)               |    __do_page_fault() {\n   1)   0.205 us    |      down_read_trylock();\n   1)   0.041 us    |      __might_sleep();\n   1)   0.344 us    |      find_vma();\n   1)   0.069 us    |      up_read();\n   1)   4.692 us    |    }\n   1)   5.311 us    |  }\n  ...\n\nLink: http://lkml.kernel.org/r/1381739066-7531-5-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": "6a10108bdbbfb66e5c431fd1056534e9717d34eb",
      "tree": "a9d30739ba6bcf62c19418759c4c679e008ae258",
      "parents": [
        "faf982a60f7c985808f761cff5d508f21c691790"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Mon Oct 14 17:24:25 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Oct 18 22:20:33 2013 -0400"
      },
      "message": "ftrace: Narrow down the protected area of graph_lock\n\nThe parser set up is just a generic utility that uses local variables\nallocated by the function. There\u0027s no need to hold the graph_lock for\nthis set up.\n\nThis also makes the code simpler.\n\nLink: http://lkml.kernel.org/r/1381739066-7531-4-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": "faf982a60f7c985808f761cff5d508f21c691790",
      "tree": "f74dd11f75d6eb77b9ba2302235dd62760c020bc",
      "parents": [
        "9aa72b4bf823b7b439fbba95fa84abee3b9d6d79"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Mon Oct 14 17:24:24 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Oct 18 22:17:51 2013 -0400"
      },
      "message": "ftrace: Introduce struct ftrace_graph_data\n\nThe struct ftrace_graph_data is for generalizing the access to\nset_graph_function file.  This is a preparation for adding support to\nset_graph_notrace.\n\nLink: http://lkml.kernel.org/r/1381739066-7531-3-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": "9aa72b4bf823b7b439fbba95fa84abee3b9d6d79",
      "tree": "848399ae19cbfe4927fd60179c3c2f8f2d02e73a",
      "parents": [
        "057db8488b53d5e4faa0cedb2f39d4ae75dfbdbb"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Mon Oct 14 17:24:23 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Oct 18 22:15:25 2013 -0400"
      },
      "message": "ftrace: Get rid of ftrace_graph_filter_enabled\n\nThe ftrace_graph_filter_enabled means that user sets function filter\nand it always has same meaning of ftrace_graph_count \u003e 0.\n\nLink: http://lkml.kernel.org/r/1381739066-7531-2-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": "057db8488b53d5e4faa0cedb2f39d4ae75dfbdbb",
      "tree": "16909d3221f756b82c3459de316527ae20b55cae",
      "parents": [
        "b9be6d026d327593784b042aab4fa27e2de9c825"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Oct 09 22:23:23 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Oct 18 21:02:56 2013 -0400"
      },
      "message": "tracing: Fix potential out-of-bounds in trace_get_user()\n\nAndrey reported the following report:\n\nERROR: AddressSanitizer: heap-buffer-overflow on address ffff8800359c99f3\nffff8800359c99f3 is located 0 bytes to the right of 243-byte region [ffff8800359c9900, ffff8800359c99f3)\nAccessed by thread T13003:\n  #0 ffffffff810dd2da (asan_report_error+0x32a/0x440)\n  #1 ffffffff810dc6b0 (asan_check_region+0x30/0x40)\n  #2 ffffffff810dd4d3 (__tsan_write1+0x13/0x20)\n  #3 ffffffff811cd19e (ftrace_regex_release+0x1be/0x260)\n  #4 ffffffff812a1065 (__fput+0x155/0x360)\n  #5 ffffffff812a12de (____fput+0x1e/0x30)\n  #6 ffffffff8111708d (task_work_run+0x10d/0x140)\n  #7 ffffffff810ea043 (do_exit+0x433/0x11f0)\n  #8 ffffffff810eaee4 (do_group_exit+0x84/0x130)\n  #9 ffffffff810eafb1 (SyS_exit_group+0x21/0x30)\n  #10 ffffffff81928782 (system_call_fastpath+0x16/0x1b)\n\nAllocated by thread T5167:\n  #0 ffffffff810dc778 (asan_slab_alloc+0x48/0xc0)\n  #1 ffffffff8128337c (__kmalloc+0xbc/0x500)\n  #2 ffffffff811d9d54 (trace_parser_get_init+0x34/0x90)\n  #3 ffffffff811cd7b3 (ftrace_regex_open+0x83/0x2e0)\n  #4 ffffffff811cda7d (ftrace_filter_open+0x2d/0x40)\n  #5 ffffffff8129b4ff (do_dentry_open+0x32f/0x430)\n  #6 ffffffff8129b668 (finish_open+0x68/0xa0)\n  #7 ffffffff812b66ac (do_last+0xb8c/0x1710)\n  #8 ffffffff812b7350 (path_openat+0x120/0xb50)\n  #9 ffffffff812b8884 (do_filp_open+0x54/0xb0)\n  #10 ffffffff8129d36c (do_sys_open+0x1ac/0x2c0)\n  #11 ffffffff8129d4b7 (SyS_open+0x37/0x50)\n  #12 ffffffff81928782 (system_call_fastpath+0x16/0x1b)\n\nShadow bytes around the buggy address:\n  ffff8800359c9700: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd\n  ffff8800359c9780: fd fd fd fd fd fd fd fd fa fa fa fa fa fa fa fa\n  ffff8800359c9800: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa\n  ffff8800359c9880: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa\n  ffff8800359c9900: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\n\u003d\u003effff8800359c9980: 00 00 00 00 00 00 00 00 00 00 00 00 00 00[03]fb\n  ffff8800359c9a00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa\n  ffff8800359c9a80: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa\n  ffff8800359c9b00: fa fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00\n  ffff8800359c9b80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\n  ffff8800359c9c00: 00 00 00 00 00 00 00 00 fa fa fa fa fa fa fa fa\nShadow byte legend (one shadow byte represents 8 application bytes):\n  Addressable:           00\n  Partially addressable: 01 02 03 04 05 06 07\n  Heap redzone:          fa\n  Heap kmalloc redzone:  fb\n  Freed heap region:     fd\n  Shadow gap:            fe\n\nThe out-of-bounds access happens on \u0027parser-\u003ebuffer[parser-\u003eidx] \u003d 0;\u0027\n\nAlthough the crash happened in ftrace_regex_open() the real bug\noccurred in trace_get_user() where there\u0027s an incrementation to\nparser-\u003eidx without a check against the size. The way it is triggered\nis if userspace sends in 128 characters (EVENT_BUF_SIZE + 1), the loop\nthat reads the last character stores it and then breaks out because\nthere is no more characters. Then the last character is read to determine\nwhat to do next, and the index is incremented without checking size.\n\nThen the caller of trace_get_user() usually nulls out the last character\nwith a zero, but since the index is equal to the size, it writes a nul\ncharacter after the allocated space, which can corrupt memory.\n\nLuckily, only root user has write access to this file.\n\nLink: http://lkml.kernel.org/r/20131009222323.04fd1a0d@gandalf.local.home\n\nReported-by: Andrey Konovalov \u003candreyknvl@google.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "b9be6d026d327593784b042aab4fa27e2de9c825",
      "tree": "d54d923484f06479b39ab6b6b5c2a374d4801fe4",
      "parents": [
        "d0e639c9e06d44e713170031fe05fb60ebe680af"
      ],
      "author": {
        "name": "Wang YanQing",
        "email": "udknight@gmail.com",
        "time": "Sat Sep 14 12:59:16 2013 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Oct 09 21:38:22 2013 -0400"
      },
      "message": "tracing: Show more exact help information about snapshot\n\nThe current \"help\" that comes out of the snapshot file when it is\nnot allocated looks like this:\n\n # * Snapshot is freed *\n #\n # Snapshot commands:\n # echo 0 \u003e snapshot : Clears and frees snapshot buffer\n # echo 1 \u003e snapshot : Allocates snapshot buffer, if not already allocated.\n #                      Takes a snapshot of the main buffer.\n # echo 2 \u003e snapshot : Clears snapshot buffer (but does not allocate)\n #                      (Doesn\u0027t have to be \u00272\u0027 works with any number that\n #                       is not a \u00270\u0027 or \u00271\u0027)\n\nEcho 2 says that it does not allocate the buffer, which is correct,\nbut to be more consistent with \"echo 0\" it should also state\nthat it does not free.\n\nLink: http://lkml.kernel.org/r/20130914045916.GA4243@udknight\n\nSigned-off-by: Wang YanQing \u003cudknight@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "7eb69529cbaf4229baf5559a400a7a46352c6e52",
      "tree": "e8d16dd5a5f5db83ed6f84439c1416e3a65f74ac",
      "parents": [
        "300893b08f3bc7057a7a5f84074090ba66c8b5ca",
        "a0a5a0561f63905fe94c49bc567615829f42ce1e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 09 14:42:15 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 09 14:42:15 2013 -0700"
      },
      "message": "Merge tag \u0027trace-3.12\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace\n\nPull tracing updates from Steven Rostedt:\n \"Not much changes for the 3.12 merge window.  The major tracing changes\n  are still in flux, and will have to wait for 3.13.\n\n  The changes for 3.12 are mostly clean ups and minor fixes.\n\n  H Peter Anvin added a check to x86_32 static function tracing that\n  helps a small segment of the kernel community.\n\n  Oleg Nesterov had a few changes from 3.11, but were mostly clean ups\n  and not worth pushing in the -rc time frame.\n\n  Li Zefan had small clean up with annotating a raw_init with __init.\n\n  I fixed a slight race in updating function callbacks, but the race is\n  so small and the bug that happens when it occurs is so minor it\u0027s not\n  even worth pushing to stable.\n\n  The only real enhancement is from Alexander Z Lam that made the\n  tracing_cpumask work for trace buffer instances, instead of them all\n  sharing a global cpumask\"\n\n* tag \u0027trace-3.12\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:\n  ftrace/rcu: Do not trace debug_lockdep_rcu_enabled()\n  x86-32, ftrace: Fix static ftrace when early microcode is enabled\n  ftrace: Fix a slight race in modifying what function callback gets traced\n  tracing: Make tracing_cpumask available for all instances\n  tracing: Kill the !CONFIG_MODULES code in trace_events.c\n  tracing: Don\u0027t pass file_operations array to event_create_dir()\n  tracing: Kill trace_create_file_ops() and friends\n  tracing/syscalls: Annotate raw_init function with __init\n"
    },
    {
      "commit": "59338f754a55f07857342dbcd81652a4f091d72f",
      "tree": "d060266252fcf0dd8fbb399d6c3f26aab6be756e",
      "parents": [
        "ccfe9e42e451232dd17a230d1b4e979c3d15311e"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Sat Aug 31 01:04:07 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Sep 03 19:36:26 2013 -0400"
      },
      "message": "ftrace: Fix a slight race in modifying what function callback gets traced\n\nThere\u0027s a slight race when going from a list function to a non list\nfunction. That is, when only one callback is registered to the function\ntracer, it gets called directly by the mcount trampoline. But if this\nfunction has filters, it may be called by the wrong functions.\n\nAs the list ops callback that handles multiple callbacks that are\nregistered to ftrace, it also handles what functions they call. While\nthe transaction is taking place, use the list function always, and\nafter all the updates are finished (only the functions that should be\ntraced are being traced), then we can update the trampoline to call\nthe function directly.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "7d992feb7694a21ee81f22894b455dadd5d1c110",
      "tree": "d0f0961186b1c31c536a26a7f986ad7ca677453b",
      "parents": [
        "6e4664525b1db28f8c4e1130957f70a94c19213e",
        "25f27ce4a6a4995c8bdd69b4b2180465ed5ad2b8"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Tue Sep 03 07:41:11 2013 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Tue Sep 03 07:41:11 2013 +0200"
      },
      "message": "Merge branch \u0027rcu/next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into core/rcu\n\nPull RCU updates from Paul E. McKenney:\n\n\"\n * Update RCU documentation.  These were posted to LKML at\n   https://lkml.org/lkml/2013/8/19/611.\n\n * Miscellaneous fixes.  These were posted to LKML at\n   https://lkml.org/lkml/2013/8/19/619.\n\n * Full-system idle detection.  This is for use by Frederic\n   Weisbecker\u0027s adaptive-ticks mechanism.  Its purpose is\n   to allow the timekeeping CPU to shut off its tick when\n   all other CPUs are idle.  These were posted to LKML at\n   https://lkml.org/lkml/2013/8/19/648.\n\n * Improve rcutorture test coverage.  These were posted to LKML at\n   https://lkml.org/lkml/2013/8/19/675.\n\"\n\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "ccfe9e42e451232dd17a230d1b4e979c3d15311e",
      "tree": "44e4f7fab140208e1826c3415bb9229fc847dda5",
      "parents": [
        "836d481ed7c91152c6144ea3a3363cad3940b3e0"
      ],
      "author": {
        "name": "Alexander Z Lam",
        "email": "azl@google.com",
        "time": "Thu Aug 08 09:47:45 2013 -0700"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Aug 22 12:45:24 2013 -0400"
      },
      "message": "tracing: Make tracing_cpumask available for all instances\n\nAllow tracer instances to disable tracing by cpu by moving\nthe static global tracing_cpumask into trace_array.\n\nLink: http://lkml.kernel.org/r/921622317f239bfc2283cac2242647801ef584f2.1375980149.git.azl@google.com\n\nCc: Vaibhav Nagarnaik \u003cvnagarnaik@google.com\u003e\nCc: David Sharp \u003cdhsharp@google.com\u003e\nCc: Alexander Z Lam \u003clambchop468@gmail.com\u003e\nSigned-off-by: Alexander Z Lam \u003cazl@google.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "836d481ed7c91152c6144ea3a3363cad3940b3e0",
      "tree": "b33beed354fc924b65afd4593ded55cef9f5c488",
      "parents": [
        "620a30e97febc8332590376c94ed0e9dba522bc8"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jul 31 19:31:37 2013 +0200"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Aug 21 23:28:03 2013 -0400"
      },
      "message": "tracing: Kill the !CONFIG_MODULES code in trace_events.c\n\nMove trace_module_nb under CONFIG_MODULES and kill the dummy\ntrace_module_notify(). Imho it doesn\u0027t make sense to define\n\"struct notifier_block\" and its .notifier_call just to avoid\n\"ifdef\" in event_trace_init(), and all other !CONFIG_MODULES\ncode has already gone away.\n\nLink: http://lkml.kernel.org/r/20130731173137.GA31043@redhat.com\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "620a30e97febc8332590376c94ed0e9dba522bc8",
      "tree": "38bde59c3f7f03117d9bf87532ced86074cd7c39",
      "parents": [
        "779c5e379158de3e96112630c543d3c7b37efab9"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jul 31 19:31:35 2013 +0200"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Aug 21 23:25:06 2013 -0400"
      },
      "message": "tracing: Don\u0027t pass file_operations array to event_create_dir()\n\nNow that event_create_dir() and __trace_add_new_event() always\nuse the same file_operations we can kill these arguments and\nsimplify the code.\n\nLink: http://lkml.kernel.org/r/20130731173135.GA31040@redhat.com\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "779c5e379158de3e96112630c543d3c7b37efab9",
      "tree": "372c80fb9521ef4ac5d614d481a1a819cf57ba6c",
      "parents": [
        "3ddc77f6f4a58ee2e49e0e8c0216105c7f8ddd8c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jul 31 19:31:32 2013 +0200"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Aug 21 22:31:23 2013 -0400"
      },
      "message": "tracing: Kill trace_create_file_ops() and friends\n\ntrace_create_file_ops() allocates the copy of id/filter/format/enable\nfile_operations to set \"f_op-\u003eowner \u003d mod\" for fops_get().\n\nHowever after the recent changes there is no reason to prevent rmmod\neven if one of these files is opened. A file operation can do nothing\nbut fail after remove_event_file_dir() clears -\u003ei_private for every\nfile removed by trace_module_remove_events().\n\nKill \"struct ftrace_module_file_ops\" and fix the compilation errors.\n\nLink: http://lkml.kernel.org/r/20130731173132.GA31033@redhat.com\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "3ddc77f6f4a58ee2e49e0e8c0216105c7f8ddd8c",
      "tree": "13ff7a152977cfa81386fe0169f84fbd22eba732",
      "parents": [
        "9457158bbc0ee04ecef76862d73eecd8076e9c7b"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Wed Mar 27 14:15:37 2013 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Aug 21 22:24:52 2013 -0400"
      },
      "message": "tracing/syscalls: Annotate raw_init function with __init\n\ninit_syscall_trace() can only be called during kernel bootup only, so we can\nmark it and the functions it calls as __init.\n\nLink: http://lkml.kernel.org/r/51528E89.6080508@huawei.com\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "9457158bbc0ee04ecef76862d73eecd8076e9c7b",
      "tree": "c2469bc10aefdfff49a4ffc588ce4aa1912e214d",
      "parents": [
        "711e124379e0f889e40e2f01d7f5d61936d3cd23"
      ],
      "author": {
        "name": "Alexander Z Lam",
        "email": "azl@google.com",
        "time": "Fri Aug 02 18:36:16 2013 -0700"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Aug 02 22:40:09 2013 -0400"
      },
      "message": "tracing: Fix reset of time stamps during trace_clock changes\n\nFixed two issues with changing the timestamp clock with trace_clock:\n\n - The global buffer was reset on instance clock changes. Change this to pass\n   the correct per-instance buffer\n - ftrace_now() is used to set buf-\u003etime_start in tracing_reset_online_cpus().\n   This was incorrect because ftrace_now() used the global buffer\u0027s clock to\n   return the current time. Change this to use buffer_ftrace_now() which\n   returns the current time for the correct per-instance buffer.\n\nAlso removed tracing_reset_current() because it is not used anywhere\n\nLink: http://lkml.kernel.org/r/1375493777-17261-2-git-send-email-azl@google.com\n\nCc: Vaibhav Nagarnaik \u003cvnagarnaik@google.com\u003e\nCc: David Sharp \u003cdhsharp@google.com\u003e\nCc: Alexander Z Lam \u003clambchop468@gmail.com\u003e\nCc: stable@vger.kernel.org # 3.10\nSigned-off-by: Alexander Z Lam \u003cazl@google.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "711e124379e0f889e40e2f01d7f5d61936d3cd23",
      "tree": "5264b7da9d3a01be06880c35ddcb6ccbc63b2f37",
      "parents": [
        "e67bc51e574ffe3c4bc1e09cab7658b1e780b4ce"
      ],
      "author": {
        "name": "Alexander Z Lam",
        "email": "azl@google.com",
        "time": "Fri Aug 02 18:36:15 2013 -0700"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Aug 02 22:39:29 2013 -0400"
      },
      "message": "tracing: Make TRACE_ITER_STOP_ON_FREE stop the correct buffer\n\nReleasing the free_buffer file in an instance causes the global buffer\nto be stopped when TRACE_ITER_STOP_ON_FREE is enabled. Operate on the\ncorrect buffer.\n\nLink: http://lkml.kernel.org/r/1375493777-17261-1-git-send-email-azl@google.com\n\nCc: Vaibhav Nagarnaik \u003cvnagarnaik@google.com\u003e\nCc: David Sharp \u003cdhsharp@google.com\u003e\nCc: Alexander Z Lam \u003clambchop468@gmail.com\u003e\nCc: stable@vger.kernel.org # 3.10\nSigned-off-by: Alexander Z Lam \u003cazl@google.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "ed5467da0e369e65b247b99eb6403cb79172bcda",
      "tree": "a7a281193d68cc8e24660657e4f127dfb4acd555",
      "parents": [
        "c6c2401d8bbaf9edc189b4c35a8cb2780b8b988e"
      ],
      "author": {
        "name": "Andrew Vagin",
        "email": "avagin@openvz.org",
        "time": "Fri Aug 02 21:16:43 2013 +0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Aug 02 22:28:41 2013 -0400"
      },
      "message": "tracing: Fix fields of struct trace_iterator that are zeroed by mistake\n\ntracing_read_pipe zeros all fields bellow \"seq\". The declaration contains\na comment about that, but it doesn\u0027t help.\n\nThe first field is \"snapshot\", it\u0027s true when current open file is\nsnapshot. Looks obvious, that it should not be zeroed.\n\nThe second field is \"started\". It was converted from cpumask_t to\ncpumask_var_t (v2.6.28-4983-g4462344), in other words it was\nconverted from cpumask to pointer on cpumask.\n\nCurrently the reference on \"started\" memory is lost after the first read\nfrom tracing_read_pipe and a proper object will never be freed.\n\nThe \"started\" is never dereferenced for trace_pipe, because trace_pipe\ncan\u0027t have the TRACE_FILE_ANNOTATE options.\n\nLink: http://lkml.kernel.org/r/1375463803-3085183-1-git-send-email-avagin@openvz.org\n\nCc: stable@vger.kernel.org # 2.6.30\nSigned-off-by: Andrew Vagin \u003cavagin@openvz.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "c6c2401d8bbaf9edc189b4c35a8cb2780b8b988e",
      "tree": "5589795f4b86670b2d4f4851a4de8f1401c6c7ff",
      "parents": [
        "40c32592668b727cbfcf7b1c0567f581bd62a5e4"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jul 03 23:33:51 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Aug 01 18:25:50 2013 -0400"
      },
      "message": "tracing/uprobes: Fail to unregister if probe event files are in use\n\nUprobes suffer the same problem that kprobes have. There\u0027s a race between\nwriting to the \"enable\" file and removing the probe. The probe checks for\nit being in use and if it is not, goes about deleting the probe and the\nevent that represents it. But the problem with that is, after it checks\nif it is in use it can be enabled, and the deletion of the event (access\nto the probe) will fail, as it is in use. But the uprobe will still be\ndeleted. This is a problem as the event can reference the uprobe that\nwas deleted.\n\nThe fix is to remove the event first, and check to make sure the event\nremoval succeeds. Then it is safe to remove the probe.\n\nWhen the event exists, either ftrace or perf can enable the probe and\nprevent the event from being removed.\n\nLink: http://lkml.kernel.org/r/20130704034038.991525256@goodmis.org\n\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "40c32592668b727cbfcf7b1c0567f581bd62a5e4",
      "tree": "b6b96761ad2086e9635c16527a7d56ce89041802",
      "parents": [
        "2ba64035d0ca966fd189bc3e0826343fc81bf482"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jul 03 23:33:50 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jul 31 22:25:46 2013 -0400"
      },
      "message": "tracing/kprobes: Fail to unregister if probe event files are in use\n\nWhen a probe is being removed, it cleans up the event files that correspond\nto the probe. But there is a race between writing to one of these files\nand deleting the probe. This is especially true for the \"enable\" file.\n\n\tCPU 0\t\t\t\tCPU 1\n\t-----\t\t\t\t-----\n\n\t\t\t\t  fd \u003d open(\"enable\",O_WRONLY);\n\n  probes_open()\n  release_all_trace_probes()\n  unregister_trace_probe()\n  if (trace_probe_is_enabled(tp))\n\treturn -EBUSY\n\n\t\t\t\t   write(fd, \"1\", 1)\n\t\t\t\t   __ftrace_set_clr_event()\n\t\t\t\t   call-\u003eclass-\u003ereg()\n\t\t\t\t    (kprobe_register)\n\t\t\t\t     enable_trace_probe(tp)\n\n  __unregister_trace_probe(tp);\n  list_del(\u0026tp-\u003elist)\n  unregister_probe_event(tp) \u003c-- fails!\n  free_trace_probe(tp)\n\n\t\t\t\t   write(fd, \"0\", 1)\n\t\t\t\t   __ftrace_set_clr_event()\n\t\t\t\t   call-\u003eclass-\u003eunreg\n\t\t\t\t    (kprobe_register)\n\t\t\t\t    disable_trace_probe(tp) \u003c-- BOOM!\n\nA test program was written that used two threads to simulate the\nabove scenario adding a nanosleep() interval to change the timings\nand after several thousand runs, it was able to trigger this bug\nand crash:\n\nBUG: unable to handle kernel paging request at 00000005000000f9\nIP: [\u003cffffffff810dee70\u003e] probes_open+0x3b/0xa7\nPGD 7808a067 PUD 0\nOops: 0000 [#1] PREEMPT SMP\nDumping ftrace buffer:\n---------------------------------\nModules linked in: ipt_MASQUERADE sunrpc ip6t_REJECT nf_conntrack_ipv6\nCPU: 1 PID: 2070 Comm: test-kprobe-rem Not tainted 3.11.0-rc3-test+ #47\nHardware 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\ntask: ffff880077756440 ti: ffff880076e52000 task.ti: ffff880076e52000\nRIP: 0010:[\u003cffffffff810dee70\u003e]  [\u003cffffffff810dee70\u003e] probes_open+0x3b/0xa7\nRSP: 0018:ffff880076e53c38  EFLAGS: 00010203\nRAX: 0000000500000001 RBX: ffff88007844f440 RCX: 0000000000000003\nRDX: 0000000000000003 RSI: 0000000000000003 RDI: ffff880076e52000\nRBP: ffff880076e53c58 R08: ffff880076e53bd8 R09: 0000000000000000\nR10: ffff880077756440 R11: 0000000000000006 R12: ffffffff810dee35\nR13: ffff880079250418 R14: 0000000000000000 R15: ffff88007844f450\nFS:  00007f87a276f700(0000) GS:ffff88007d480000(0000) knlGS:0000000000000000\nCS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b\nCR2: 00000005000000f9 CR3: 0000000077262000 CR4: 00000000000007e0\nStack:\n ffff880076e53c58 ffffffff81219ea0 ffff88007844f440 ffffffff810dee35\n ffff880076e53ca8 ffffffff81130f78 ffff8800772986c0 ffff8800796f93a0\n ffffffff81d1b5d8 ffff880076e53e04 0000000000000000 ffff88007844f440\nCall Trace:\n [\u003cffffffff81219ea0\u003e] ? security_file_open+0x2c/0x30\n [\u003cffffffff810dee35\u003e] ? unregister_trace_probe+0x4b/0x4b\n [\u003cffffffff81130f78\u003e] do_dentry_open+0x162/0x226\n [\u003cffffffff81131186\u003e] finish_open+0x46/0x54\n [\u003cffffffff8113f30b\u003e] do_last+0x7f6/0x996\n [\u003cffffffff8113cc6f\u003e] ? inode_permission+0x42/0x44\n [\u003cffffffff8113f6dd\u003e] path_openat+0x232/0x496\n [\u003cffffffff8113fc30\u003e] do_filp_open+0x3a/0x8a\n [\u003cffffffff8114ab32\u003e] ? __alloc_fd+0x168/0x17a\n [\u003cffffffff81131f4e\u003e] do_sys_open+0x70/0x102\n [\u003cffffffff8108f06e\u003e] ? trace_hardirqs_on_caller+0x160/0x197\n [\u003cffffffff81131ffe\u003e] SyS_open+0x1e/0x20\n [\u003cffffffff81522742\u003e] system_call_fastpath+0x16/0x1b\nCode: e5 41 54 53 48 89 f3 48 83 ec 10 48 23 56 78 48 39 c2 75 6c 31 f6 48 c7\nRIP  [\u003cffffffff810dee70\u003e] probes_open+0x3b/0xa7\n RSP \u003cffff880076e53c38\u003e\nCR2: 00000005000000f9\n---[ end trace 35f17d68fc569897 ]---\n\nThe unregister_trace_probe() must be done first, and if it fails it must\nfail the removal of the kprobe.\n\nSeveral changes have already been made by Oleg Nesterov and Masami Hiramatsu\nto allow moving the unregister_probe_event() before the removal of\nthe probe and exit the function if it fails. This prevents the tp\nstructure from being used after it is freed.\n\nLink: http://lkml.kernel.org/r/20130704034038.819592356@goodmis.org\n\nAcked-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "2ba64035d0ca966fd189bc3e0826343fc81bf482",
      "tree": "ca96642c76e96d13d7ace443a26e26f622c3337f",
      "parents": [
        "2816c551c796ec14620325b2c9ed75b9979d3125"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jul 31 13:16:22 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jul 31 13:16:22 2013 -0400"
      },
      "message": "tracing: Add comment to describe special break case in probe_remove_event_call()\n\nThe \"break\" used in the do_for_each_event_file() is used as an optimization\nas the loop is really a double loop. The loop searches all event files\nfor each trace_array. There\u0027s only one matching event file per trace_array\nand after we find the event file for the trace_array, the break is used\nto jump to the next trace_array and start the search there.\n\nAs this is not a standard way of using \"break\" in C code, it requires\na comment right before the break to let people know what is going on.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "2816c551c796ec14620325b2c9ed75b9979d3125",
      "tree": "c4bc262514de5ef265001411bcdf7ad65916eae9",
      "parents": [
        "776164c1faac4966ab14418bb0922e1820da1d19"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Jul 29 19:50:33 2013 +0200"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jul 31 13:12:48 2013 -0400"
      },
      "message": "tracing: trace_remove_event_call() should fail if call/file is in use\n\nChange trace_remove_event_call(call) to return the error if this\ncall is active. This is what the callers assume but can\u0027t verify\noutside of the tracing locks. Both trace_kprobe.c/trace_uprobe.c\nneed the additional changes, unregister_trace_probe() should abort\nif trace_remove_event_call() fails.\n\nThe caller is going to free this call/file so we must ensure that\nnobody can use them after trace_remove_event_call() succeeds.\ndebugfs should be fine after the previous changes and event_remove()\ndoes TRACE_REG_UNREGISTER, but still there are 2 reasons why we need\nthe additional checks:\n\n- There could be a perf_event(s) attached to this tp_event, so the\n  patch checks -\u003eperf_refcount.\n\n- TRACE_REG_UNREGISTER can be suppressed by FTRACE_EVENT_FL_SOFT_MODE,\n  so we simply check FTRACE_EVENT_FL_ENABLED protected by event_mutex.\n\nLink: http://lkml.kernel.org/r/20130729175033.GB26284@redhat.com\n\nReviewed-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "8c4f3c3fa9681dc549cd35419b259496082fef8b",
      "tree": "bcec6232d02770494503abed317a778808fa0aab",
      "parents": [
        "1c80c43290ee576afe8d39ecc905fa3958a5858c"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jul 30 00:04:32 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jul 30 20:52:51 2013 -0400"
      },
      "message": "ftrace: Check module functions being traced on reload\n\nThere\u0027s been a nasty bug that would show up and not give much info.\nThe bug displayed the following warning:\n\n WARNING: at kernel/trace/ftrace.c:1529 __ftrace_hash_rec_update+0x1e3/0x230()\n Pid: 20903, comm: bash Tainted: G           O 3.6.11+ #38405.trunk\n Call Trace:\n  [\u003cffffffff8103e5ff\u003e] warn_slowpath_common+0x7f/0xc0\n  [\u003cffffffff8103e65a\u003e] warn_slowpath_null+0x1a/0x20\n  [\u003cffffffff810c2ee3\u003e] __ftrace_hash_rec_update+0x1e3/0x230\n  [\u003cffffffff810c4f28\u003e] ftrace_hash_move+0x28/0x1d0\n  [\u003cffffffff811401cc\u003e] ? kfree+0x2c/0x110\n  [\u003cffffffff810c68ee\u003e] ftrace_regex_release+0x8e/0x150\n  [\u003cffffffff81149f1e\u003e] __fput+0xae/0x220\n  [\u003cffffffff8114a09e\u003e] ____fput+0xe/0x10\n  [\u003cffffffff8105fa22\u003e] task_work_run+0x72/0x90\n  [\u003cffffffff810028ec\u003e] do_notify_resume+0x6c/0xc0\n  [\u003cffffffff8126596e\u003e] ? trace_hardirqs_on_thunk+0x3a/0x3c\n  [\u003cffffffff815c0f88\u003e] int_signal+0x12/0x17\n ---[ end trace 793179526ee09b2c ]---\n\nIt was finally narrowed down to unloading a module that was being traced.\n\nIt was actually more than that. When functions are being traced, there\u0027s\na table of all functions that have a ref count of the number of active\ntracers attached to that function. When a function trace callback is\nregistered to a function, the function\u0027s record ref count is incremented.\nWhen it is unregistered, the function\u0027s record ref count is decremented.\nIf an inconsistency is detected (ref count goes below zero) the above\nwarning is shown and the function tracing is permanently disabled until\nreboot.\n\nThe ftrace callback ops holds a hash of functions that it filters on\n(and/or filters off). If the hash is empty, the default means to filter\nall functions (for the filter_hash) or to disable no functions (for the\nnotrace_hash).\n\nWhen a module is unloaded, it frees the function records that represent\nthe module functions. These records exist on their own pages, that is\nfunction records for one module will not exist on the same page as\nfunction records for other modules or even the core kernel.\n\nNow when a module unloads, the records that represents its functions are\nfreed. When the module is loaded again, the records are recreated with\na default ref count of zero (unless there\u0027s a callback that traces all\nfunctions, then they will also be traced, and the ref count will be\nincremented).\n\nThe problem is that if an ftrace callback hash includes functions of the\nmodule being unloaded, those hash entries will not be removed. If the\nmodule is reloaded in the same location, the hash entries still point\nto the functions of the module but the module\u0027s ref counts do not reflect\nthat.\n\nWith the help of Steve and Joern, we found a reproducer:\n\n Using uinput module and uinput_release function.\n\n cd /sys/kernel/debug/tracing\n modprobe uinput\n echo uinput_release \u003e set_ftrace_filter\n echo function \u003e current_tracer\n rmmod uinput\n modprobe uinput\n # check /proc/modules to see if loaded in same addr, otherwise try again\n echo nop \u003e current_tracer\n\n [BOOM]\n\nThe above loads the uinput module, which creates a table of functions that\ncan be traced within the module.\n\nWe add uinput_release to the filter_hash to trace just that function.\n\nEnable function tracincg, which increments the ref count of the record\nassociated to uinput_release.\n\nRemove uinput, which frees the records including the one that represents\nuinput_release.\n\nLoad the uinput module again (and make sure it\u0027s at the same address).\nThis recreates the function records all with a ref count of zero,\nincluding uinput_release.\n\nDisable function tracing, which will decrement the ref count for uinput_release\nwhich is now zero because of the module removal and reload, and we have\na mismatch (below zero ref count).\n\nThe solution is to check all currently tracing ftrace callbacks to see if any\nare tracing any of the module\u0027s functions when a module is loaded (it already does\nthat with callbacks that trace all functions). If a callback happens to have\na module function being traced, it increments that records ref count and starts\ntracing that function.\n\nThere may be a strange side effect with this, where tracing module functions\non unload and then reloading a new module may have that new module\u0027s functions\nbeing traced. This may be something that confuses the user, but it\u0027s not\na big deal. Another approach is to disable all callback hashes on module unload,\nbut this leaves some ftrace callbacks that may not be registered, but can\nstill have hashes tracing the module\u0027s function where ftrace doesn\u0027t know about\nit. That situation can cause the same bug. This solution solves that case too.\nAnother benefit of this solution, is it is possible to trace a module\u0027s\nfunction on unload and load.\n\nLink: http://lkml.kernel.org/r/20130705142629.GA325@redhat.com\n\nReported-by: Jörn Engel \u003cjoern@logfs.org\u003e\nReported-by: Dave Jones \u003cdavej@redhat.com\u003e\nReported-by: Steve Hodgson \u003csteve@purestorage.com\u003e\nTested-by: Steve Hodgson \u003csteve@purestorage.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "1c80c43290ee576afe8d39ecc905fa3958a5858c",
      "tree": "11fd3427c3fe63d2f6bafdcc0150bff970093c41",
      "parents": [
        "bf682c3159c4d298d1126a56793ed3f5e80395f7"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jul 25 20:22:00 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jul 29 23:56:00 2013 -0400"
      },
      "message": "ftrace: Consolidate some duplicate code for updating ftrace ops\n\nWhen ftrace ops modifies the functions that it will trace, the update\nto the function mcount callers may need to be modified. Consolidate\nthe two places that do the checks to see if an update is required\nwith a wrapper function for those checks.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "bf682c3159c4d298d1126a56793ed3f5e80395f7",
      "tree": "119fe382412dbb356ded3bd708f93e8fae86550c",
      "parents": [
        "f6a84bdc75b5c11621dec58db73fe102cbaf40cc"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Jul 28 20:35:27 2013 +0200"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jul 29 22:57:11 2013 -0400"
      },
      "message": "tracing: Change remove_event_file_dir() to clear \"d_subdirs\"-\u003ei_private\n\nChange remove_event_file_dir() to clear -\u003ei_private for every\nfile we are going to remove.\n\nWe need to check file-\u003edir !\u003d NULL because event_create_dir()\ncan fail. debugfs_remove_recursive(NULL) is fine but the patch\nmoves it under the same check anyway for readability.\n\nspin_lock(d_lock) and \"d_inode !\u003d NULL\" check are not needed\nafaics, but I do not understand this code enough.\n\ntracing_open_generic_file() and tracing_release_generic_file()\ncan go away, ftrace_enable_fops and ftrace_event_filter_fops()\nuse tracing_open_generic() but only to check tracing_disabled.\n\nThis fixes all races with event_remove() or instance_delete().\nf_op-\u003eread/write/whatever can never use the freed file/call,\nall event/* files were changed to check and use -\u003ei_private\nunder event_mutex.\n\nNote: this doesn\u0027t not fix other problems, event_remove() can\ndestroy the active ftrace_event_call, we need more changes but\nthose changes are completely orthogonal.\n\nLink: http://lkml.kernel.org/r/20130728183527.GB16723@redhat.com\n\nReviewed-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "f6a84bdc75b5c11621dec58db73fe102cbaf40cc",
      "tree": "9200a7b2eae75c9ce783f82ad396fe09aab6feae",
      "parents": [
        "c5a44a1200c6eda2202434f25325e8ad19533fca"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jul 26 19:25:47 2013 +0200"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jul 29 22:57:10 2013 -0400"
      },
      "message": "tracing: Introduce remove_event_file_dir()\n\nPreparation for the next patch. Extract the common code from\nremove_event_from_tracers() and __trace_remove_event_dirs()\ninto the new helper, remove_event_file_dir().\n\nThe patch looks more complicated than it actually is, it also\nmoves remove_subsystem() up to avoid the forward declaration.\n\nLink: http://lkml.kernel.org/r/20130726172547.GA3629@redhat.com\n\nReviewed-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "c5a44a1200c6eda2202434f25325e8ad19533fca",
      "tree": "4ac8699d7e7ce648d888a2f2fb4889380d9b02a6",
      "parents": [
        "e2912b091c26b8ea95e5e00a43a7ac620f6c94a6"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jul 26 19:25:43 2013 +0200"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jul 29 22:57:10 2013 -0400"
      },
      "message": "tracing: Change f_start() to take event_mutex and verify i_private !\u003d NULL\n\ntrace_format_open() and trace_format_seq_ops are racy, nothing\nprotects ftrace_event_call from trace_remove_event_call().\n\nChange f_start() to take event_mutex and verify i_private !\u003d NULL,\nchange f_stop() to drop this lock.\n\nThis fixes nothing, but now we can change debugfs_remove(\"format\")\ncallers to nullify -\u003ei_private and fix the the problem.\n\nNote: the usage of event_mutex is sub-optimal but simple, we can\nchange this later.\n\nLink: http://lkml.kernel.org/r/20130726172543.GA3622@redhat.com\n\nReviewed-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "e2912b091c26b8ea95e5e00a43a7ac620f6c94a6",
      "tree": "841eb09f7732ba1d1eb58405743bb61c8a88b2fe",
      "parents": [
        "bc6f6b08dee5645770efb4b76186ded313f23752"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jul 26 19:25:40 2013 +0200"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jul 29 22:56:59 2013 -0400"
      },
      "message": "tracing: Change event_filter_read/write to verify i_private !\u003d NULL\n\nevent_filter_read/write() are racy, ftrace_event_call can be already\nfreed by trace_remove_event_call() callers.\n\n1. Shift mutex_lock(event_mutex) from print/apply_event_filter to\n   the callers.\n\n2. Change the callers, event_filter_read() and event_filter_write()\n   to read i_private under this mutex and abort if it is NULL.\n\nThis fixes nothing, but now we can change debugfs_remove(\"filter\")\ncallers to nullify -\u003ei_private and fix the the problem.\n\nLink: http://lkml.kernel.org/r/20130726172540.GA3619@redhat.com\n\nReviewed-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    }
  ],
  "next": "bc6f6b08dee5645770efb4b76186ded313f23752"
}
