)]}'
{
  "log": [
    {
      "commit": "f38787f4f921222d080d976ef59210ce3c6c6cb4",
      "tree": "55e643bc1e5b066f04323a4054fdc814726221be",
      "parents": [
        "957b9095ed296311b36d26e4316d7f637351ac57",
        "71434f2fcba5c22d6e0d51878ba8e241a5dea5fb"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sun Oct 21 18:18:17 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sun Oct 21 18:18:17 2012 +0200"
      },
      "message": "Merge branch \u0027uprobes/core\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/oleg/misc into perf/urgent\n\nPull various uprobes bugfixes from Oleg Nesterov - mostly race and\nfailure path fixes.\n\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "ade0899b298ba2c43bfd6abd8cbc2545944cde0c",
      "tree": "a448dfb440b3b958b6306bb43620cd5d76f504bf",
      "parents": [
        "871a0596cb2f51b57dc583d1a7c4be0186582fe7",
        "95cf59ea72331d0093010543b8951bb43f262cac"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 13 10:20:11 2012 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 13 10:20:11 2012 +0900"
      },
      "message": "Merge branch \u0027perf-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull perf updates from Ingo Molnar:\n \"This tree includes some late late perf items that missed the first\n  round:\n\n  tools:\n\n   - Bash auto completion improvements, now we can auto complete the\n     tools long options, tracepoint event names, etc, from Namhyung Kim.\n\n   - Look up thread using tid instead of pid in \u0027perf sched\u0027.\n\n   - Move global variables into a perf_kvm struct, from David Ahern.\n\n   - Hists refactorings, preparatory for improved \u0027diff\u0027 command, from\n     Jiri Olsa.\n\n   - Hists refactorings, preparatory for event group viewieng work, from\n     Namhyung Kim.\n\n   - Remove double negation on optional feature macro definitions, from\n     Namhyung Kim.\n\n   - Remove several cases of needless global variables, on most\n     builtins.\n\n   - misc fixes\n\n  kernel:\n\n   - sysfs support for IBS on AMD CPUs, from Robert Richter.\n\n   - Support for an upcoming Intel CPU, the Xeon-Phi / Knights Corner\n     HPC blade PMU, from Vince Weaver.\n\n   - misc fixes\"\n\n* \u0027perf-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (46 commits)\n  perf: Fix perf_cgroup_switch for sw-events\n  perf: Clarify perf_cpu_context::active_pmu usage by renaming it to ::unique_pmu\n  perf/AMD/IBS: Add sysfs support\n  perf hists: Add more helpers for hist entry stat\n  perf hists: Move he-\u003estat.nr_events initialization to a template\n  perf hists: Introduce struct he_stat\n  perf diff: Removing the total_period argument from output code\n  perf tool: Add hpp interface to enable/disable hpp column\n  perf tools: Removing hists pair argument from output path\n  perf hists: Separate overhead and baseline columns\n  perf diff: Refactor diff displacement possition info\n  perf hists: Add struct hists pointer to struct hist_entry\n  perf tools: Complete tracepoint event names\n  perf/x86: Add support for Intel Xeon-Phi Knights Corner PMU\n  perf evlist: Remove some unused methods\n  perf evlist: Introduce add_newtp method\n  perf kvm: Move global variables into a perf_kvm struct\n  perf tools: Convert to BACKTRACE_SUPPORT\n  perf tools: Long option completion support for each subcommands\n  perf tools: Complete long option names of perf command\n  ...\n"
    },
    {
      "commit": "6bdb913f0a70a4dfb7f066fb15e2d6f960701d00",
      "tree": "9a61960b27bf801794104b8bb8fccee1813f1b4b",
      "parents": [
        "2ec74c3ef2d8c58d71e0e00336fb6b891192155a"
      ],
      "author": {
        "name": "Haggai Eran",
        "email": "haggaie@mellanox.com",
        "time": "Mon Oct 08 16:33:35 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 09 16:22:58 2012 +0900"
      },
      "message": "mm: wrap calls to set_pte_at_notify with invalidate_range_start and invalidate_range_end\n\nIn order to allow sleeping during invalidate_page mmu notifier calls, we\nneed to avoid calling when holding the PT lock.  In addition to its direct\ncalls, invalidate_page can also be called as a substitute for a change_pte\ncall, in case the notifier client hasn\u0027t implemented change_pte.\n\nThis patch drops the invalidate_page call from change_pte, and instead\nwraps all calls to change_pte with invalidate_range_start and\ninvalidate_range_end calls.\n\nNote that change_pte still cannot sleep after this patch, and that clients\nimplementing change_pte should not take action on it in case the number of\noutstanding invalidate_range_start calls is larger than one, otherwise\nthey might miss a later invalidation.\n\nSigned-off-by: Haggai Eran \u003chaggaie@mellanox.com\u003e\nCc: Andrea Arcangeli \u003candrea@qumranet.com\u003e\nCc: Sagi Grimberg \u003csagig@mellanox.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Xiao Guangrong \u003cxiaoguangrong@linux.vnet.ibm.com\u003e\nCc: Or Gerlitz \u003cogerlitz@mellanox.com\u003e\nCc: Haggai Eran \u003chaggaie@mellanox.com\u003e\nCc: Shachar Raindel \u003craindel@mellanox.com\u003e\nCc: Liran Liss \u003cliranl@mellanox.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6b2dbba8b6ac4df26f72eda1e5ea7bab9f950e08",
      "tree": "422ed8d7ac2fe45069f20cfba84a9a097bf444af",
      "parents": [
        "fff3fd8a1210a165252cd7cd01206da7a90d3a06"
      ],
      "author": {
        "name": "Michel Lespinasse",
        "email": "walken@google.com",
        "time": "Mon Oct 08 16:31:25 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 09 16:22:39 2012 +0900"
      },
      "message": "mm: replace vma prio_tree with an interval tree\n\nImplement an interval tree as a replacement for the VMA prio_tree.  The\nalgorithms are similar to lib/interval_tree.c; however that code can\u0027t be\ndirectly reused as the interval endpoints are not explicitly stored in the\nVMA.  So instead, the common algorithm is moved into a template and the\ndetails (node type, how to get interval endpoints from the node, etc) are\nfilled in using the C preprocessor.\n\nOnce the interval tree functions are available, using them as a\nreplacement to the VMA prio tree is a relatively simple, mechanical job.\n\nSigned-off-by: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Hillf Danton \u003cdhillf@gmail.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "314e51b9851b4f4e8ab302243ff5a6fc6147f379",
      "tree": "f757b89206355fd129830782566768693eed23ce",
      "parents": [
        "0103bd16fb90bc741c7a03fd1ea4e8a505abad23"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Mon Oct 08 16:29:02 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 09 16:22:19 2012 +0900"
      },
      "message": "mm: kill vma flag VM_RESERVED and mm-\u003ereserved_vm counter\n\nA long time ago, in v2.4, VM_RESERVED kept swapout process off VMA,\ncurrently it lost original meaning but still has some effects:\n\n | effect                 | alternative flags\n-+------------------------+---------------------------------------------\n1| account as reserved_vm | VM_IO\n2| skip in core dump      | VM_IO, VM_DONTDUMP\n3| do not merge or expand | VM_IO, VM_DONTEXPAND, VM_HUGETLB, VM_PFNMAP\n4| do not mlock           | VM_IO, VM_DONTEXPAND, VM_HUGETLB, VM_PFNMAP\n\nThis patch removes reserved_vm counter from mm_struct.  Seems like nobody\ncares about it, it does not exported into userspace directly, it only\nreduces total_vm showed in proc.\n\nThus VM_RESERVED can be replaced with VM_IO or pair VM_DONTEXPAND | VM_DONTDUMP.\n\nremap_pfn_range() and io_remap_pfn_range() set VM_IO|VM_DONTEXPAND|VM_DONTDUMP.\nremap_vmalloc_range() set VM_DONTEXPAND | VM_DONTDUMP.\n\n[akpm@linux-foundation.org: drivers/vfio/pci/vfio_pci.c fixup]\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Carsten Otte \u003ccotte@de.ibm.com\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nCc: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: James Morris \u003cjames.l.morris@oracle.com\u003e\nCc: Jason Baron \u003cjbaron@redhat.com\u003e\nCc: Kentaro Takeda \u003ctakedakn@nttdata.co.jp\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Robert Richter \u003crobert.richter@amd.com\u003e\nCc: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Venkatesh Pallipadi \u003cvenki@google.com\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "71434f2fcba5c22d6e0d51878ba8e241a5dea5fb",
      "tree": "0a61c5a75390a4eb39f018cc39cf8f40b0103058",
      "parents": [
        "4710f05fd146d4739e57a8832a3abc5bd3bf0997"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Sep 30 21:12:44 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Oct 07 21:19:43 2012 +0200"
      },
      "message": "uprobes: Fix the racy uprobe-\u003eflags manipulation\n\nMultiple threads can manipulate uprobe-\u003eflags, this is obviously\nunsafe. For example mmap can set UPROBE_COPY_INSN while register\ntries to set UPROBE_RUN_HANDLER, the latter can also race with\ncan_skip_sstep() which clears UPROBE_SKIP_SSTEP.\n\nChange this code to use bitops.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "4710f05fd146d4739e57a8832a3abc5bd3bf0997",
      "tree": "459f64b5243d621c85b34abf90e3892cca69e502",
      "parents": [
        "cb9a19fe4aa51afa34786bd383e6614fa0083d58"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Sep 30 20:31:41 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Oct 07 21:19:43 2012 +0200"
      },
      "message": "uprobes: Fix prepare_uprobe() race with itself\n\ninstall_breakpoint() is called under mm-\u003emmap_sem, this protects\nset_swbp() but not prepare_uprobe(). Two or more different tasks\ncan call install_breakpoint()-\u003eprepare_uprobe() at the same time,\nthis leads to numerous problems if UPROBE_COPY_INSN is not set.\n\nJust for example, the second copy_insn() can corrupt the already\nanalyzed/fixuped uprobe-\u003earch.insn and race with handle_swbp().\n\nThis patch simply adds uprobe-\u003ecopy_mutex to serialize this code.\nWe could probably reuse -\u003econsumer_rwsem, but this would mean that\nconsumer-\u003ehandler() can not use mm-\u003emmap_sem, not good.\n\nNote: this is another temporary ugly hack until we move this logic\ninto uprobe_register().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "cb9a19fe4aa51afa34786bd383e6614fa0083d58",
      "tree": "e85fac9d3a69707cd9c3a98361f5cba845d5d260",
      "parents": [
        "142b18ddc81439acda4bc4231b291e99fe67d507"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Sep 30 20:11:45 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Oct 07 21:19:42 2012 +0200"
      },
      "message": "uprobes: Introduce prepare_uprobe()\n\nPreparation. Extract the copy_insn/arch_uprobe_analyze_insn code\nfrom install_breakpoint() into the new helper, prepare_uprobe().\n\nAnd move uprobe-\u003eflags defines from uprobes.h to uprobes.c, nobody\nelse can use them anyway.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "142b18ddc81439acda4bc4231b291e99fe67d507",
      "tree": "2189191c456f93551d58b0f3afc4b53bb3b8949a",
      "parents": [
        "076a365b3da99b68c5d58e394714d0611f1fa002"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Sep 29 21:56:57 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Oct 07 21:19:41 2012 +0200"
      },
      "message": "uprobes: Fix handle_swbp() vs unregister() + register() race\n\nStrictly speaking this race was added by me in 56bb4cf6. However\nI think that this bug is just another indication that we should\nmove copy_insn/uprobe_analyze_insn code from install_breakpoint()\nto uprobe_register(), there are a lot of other reasons for that.\nUntil then, add a hack to close the race.\n\nA task can hit uprobe U1, but before it calls find_uprobe() this\nuprobe can be unregistered *AND* another uprobe U2 can be added to\nuprobes_tree at the same inode/offset. In this case handle_swbp()\nwill use the not-fully-initialized U2, in particular its arch.insn\nfor xol.\n\nAdd the additional !UPROBE_COPY_INSN check into handle_swbp(),\nif this flag is not set we simply restart as if the new uprobe was\nnot inserted yet. This is not very nice, we need barriers, but we\nwill remove this hack when we change uprobe_register().\n\nNote: with or without this patch install_breakpoint() can race with\nitself, yet another reson to kill UPROBE_COPY_INSN altogether. And\neven the usage of uprobe-\u003eflags is not safe. See the next patches.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "076a365b3da99b68c5d58e394714d0611f1fa002",
      "tree": "b58ae7da7bfa80200bb9982f344b93cf3f22a7fd",
      "parents": [
        "a5f658b71bc622b731961ea3addcf146ed3c599f"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Sep 30 18:54:53 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Oct 07 21:19:41 2012 +0200"
      },
      "message": "uprobes: Do not delete uprobe if uprobe_unregister() fails\n\ndelete_uprobe() must not be called if register_for_each_vma(false)\nfails to remove all breakpoints, __uprobe_unregister() is correct.\nThe problem is that register_for_each_vma(false) always returns 0\nand thus this logic does not work.\n\n1. Change verify_opcode() to return 0 rather than -EINVAL when\n   unregister detects the !is_swbp insn, we can treat this case\n   as success and currently unregister paths ignore the error\n   code anyway.\n\n2. Change remove_breakpoint() to propagate the error code from\n   write_opcode().\n\n3. Change register_for_each_vma(is_register \u003d\u003e false) to remove\n   as much breakpoints as possible but return non-zero if\n   remove_breakpoint() fails at least once.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "a5f658b71bc622b731961ea3addcf146ed3c599f",
      "tree": "52ebe6fb29ef955cee71ded01154d89d77577410",
      "parents": [
        "b64b9c937a533f0bfbfc9f6ac93d3c3e2f97ab02"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Sep 30 18:21:09 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Oct 07 21:19:41 2012 +0200"
      },
      "message": "uprobes: Don\u0027t return success if alloc_uprobe() fails\n\nIf alloc_uprobe() fails uprobe_register() should return ENOMEM, not 0.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "95cf59ea72331d0093010543b8951bb43f262cac",
      "tree": "7d0bc786d071b50217040691c4e1ab5a6ff73296",
      "parents": [
        "3f1f33206c16c7b3839d71372bc2ac3f305aa802"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Oct 02 15:41:23 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Fri Oct 05 13:59:07 2012 +0200"
      },
      "message": "perf: Fix perf_cgroup_switch for sw-events\n\nJiri reported that he could trigger the WARN_ON_ONCE() in\nperf_cgroup_switch() using sw-events. This is because sw-events share\na cpuctx with multiple PMUs.\n\nUse the -\u003eunique_pmu pointer to limit the pmu iteration to unique\ncpuctx instances.\n\nReported-and-Tested-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/n/tip-so7wi2zf3jjzrwcutm2mkz0j@git.kernel.org\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "3f1f33206c16c7b3839d71372bc2ac3f305aa802",
      "tree": "683e2af07cb49e9a333f982e72088929027881c1",
      "parents": [
        "2e132b12f78d88672711ae1d87624951de1089ca"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Oct 02 15:38:52 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Fri Oct 05 13:59:06 2012 +0200"
      },
      "message": "perf: Clarify perf_cpu_context::active_pmu usage by renaming it to ::unique_pmu\n\nStephane thought the perf_cpu_context::active_pmu name confusing and\nsuggested using \u0027unique_pmu\u0027 instead.\n\nThis pointer is a pointer to a \u0027random\u0027 pmu sharing the cpuctx\ninstance, therefore limiting a for_each_pmu loop to those where\ncpuctx-\u003eunique_pmu matches the pmu we get a loop over unique cpuctx\ninstances.\n\nSuggested-by: Stephane Eranian \u003ceranian@google.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/n/tip-kxyjqpfj2fn9gt7kwu5ag9ks@git.kernel.org\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "aab174f0df5d72d31caccf281af5f614fa254578",
      "tree": "2a172c5009c4ac8755e858593154c258ce7709a0",
      "parents": [
        "ca41cc96b2813221b05af57d0355157924de5a07",
        "2bd2c1941f141ad780135ccc1cd08ca71a24f10a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 02 20:25:04 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 02 20:25:04 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs update from Al Viro:\n\n - big one - consolidation of descriptor-related logics; almost all of\n   that is moved to fs/file.c\n\n   (BTW, I\u0027m seriously tempted to rename the result to fd.c.  As it is,\n   we have a situation when file_table.c is about handling of struct\n   file and file.c is about handling of descriptor tables; the reasons\n   are historical - file_table.c used to be about a static array of\n   struct file we used to have way back).\n\n   A lot of stray ends got cleaned up and converted to saner primitives,\n   disgusting mess in android/binder.c is still disgusting, but at least\n   doesn\u0027t poke so much in descriptor table guts anymore.  A bunch of\n   relatively minor races got fixed in process, plus an ext4 struct file\n   leak.\n\n - related thing - fget_light() partially unuglified; see fdget() in\n   there (and yes, it generates the code as good as we used to have).\n\n - also related - bits of Cyrill\u0027s procfs stuff that got entangled into\n   that work; _not_ all of it, just the initial move to fs/proc/fd.c and\n   switch of fdinfo to seq_file.\n\n - Alex\u0027s fs/coredump.c spiltoff - the same story, had been easier to\n   take that commit than mess with conflicts.  The rest is a separate\n   pile, this was just a mechanical code movement.\n\n - a few misc patches all over the place.  Not all for this cycle,\n   there\u0027ll be more (and quite a few currently sit in akpm\u0027s tree).\"\n\nFix up trivial conflicts in the android binder driver, and some fairly\nsimple conflicts due to two different changes to the sock_alloc_file()\ninterface (\"take descriptor handling from sock_alloc_file() to callers\"\nvs \"net: Providing protocol type via system.sockprotoname xattr of\n/proc/PID/fd entries\" adding a dentry name to the socket)\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (72 commits)\n  MAX_LFS_FILESIZE should be a loff_t\n  compat: fs: Generic compat_sys_sendfile implementation\n  fs: push rcu_barrier() from deactivate_locked_super() to filesystems\n  btrfs: reada_extent doesn\u0027t need kref for refcount\n  coredump: move core dump functionality into its own file\n  coredump: prevent double-free on an error path in core dumper\n  usb/gadget: fix misannotations\n  fcntl: fix misannotations\n  ceph: don\u0027t abuse d_delete() on failure exits\n  hypfs: -\u003ed_parent is never NULL or negative\n  vfs: delete surplus inode NULL check\n  switch simple cases of fget_light to fdget\n  new helpers: fdget()/fdput()\n  switch o2hb_region_dev_write() to fget_light()\n  proc_map_files_readdir(): don\u0027t bother with grabbing files\n  make get_file() return its argument\n  vhost_set_vring(): turn pollstart/pollstop into bool\n  switch prctl_set_mm_exe_file() to fget_light()\n  switch xfs_find_handle() to fget_light()\n  switch xfs_swapext() to fget_light()\n  ...\n"
    },
    {
      "commit": "68d47a137c3bef754923bccf73fb639c9b0bbd5e",
      "tree": "e82a527bd978ee96283f03d0df36f47d9aee1e41",
      "parents": [
        "c0e8a139a5bb8add02b4111e9e1957d810d7285e",
        "8c7f6edbda01f1b1a2e60ad61f14fe38023e433b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 02 10:52:28 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 02 10:52:28 2012 -0700"
      },
      "message": "Merge branch \u0027for-3.7-hierarchy\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup\n\nPull cgroup hierarchy update from Tejun Heo:\n \"Currently, different cgroup subsystems handle nested cgroups\n  completely differently.  There\u0027s no consistency among subsystems and\n  the behaviors often are outright broken.\n\n  People at least seem to agree that the broken hierarhcy behaviors need\n  to be weeded out if any progress is gonna be made on this front and\n  that the fallouts from deprecating the broken behaviors should be\n  acceptable especially given that the current behaviors don\u0027t make much\n  sense when nested.\n\n  This patch makes cgroup emit warning messages if cgroups for\n  subsystems with broken hierarchy behavior are nested to prepare for\n  fixing them in the future.  This was put in a separate branch because\n  more related changes were expected (didn\u0027t make it this round) and the\n  memory cgroup wanted to pull in this and make changes on top.\"\n\n* \u0027for-3.7-hierarchy\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:\n  cgroup: mark subsystems with broken hierarchy support and whine if cgroups are nested for them\n"
    },
    {
      "commit": "7e92daaefa68e5ef1e1732e45231e73adbb724e7",
      "tree": "8e7f8ac9d82654df4c65939c6682f95510e22977",
      "parents": [
        "7a68294278ae714ce2632a54f0f46916dca64f56",
        "1d787d37c8ff6612b8151c6dff15bfa7347bcbdf"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 01 10:28:49 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 01 10:28:49 2012 -0700"
      },
      "message": "Merge branch \u0027perf-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull perf update from Ingo Molnar:\n \"Lots of changes in this cycle as well, with hundreds of commits from\n  over 30 contributors.  Most of the activity was on the tooling side.\n\n  Higher level changes:\n\n   - New \u0027perf kvm\u0027 analysis tool, from Xiao Guangrong.\n\n   - New \u0027perf trace\u0027 system-wide tracing tool\n\n   - uprobes fixes + cleanups from Oleg Nesterov.\n\n   - Lots of patches to make perf build on Android out of box, from\n     Irina Tirdea\n\n   - Extend ftrace function tracing utility to be more dynamic for its\n     users.  It allows for data passing to the callback functions, as\n     well as reading regs as if a breakpoint were to trigger at function\n     entry.\n\n     The main goal of this patch series was to allow kprobes to use\n     ftrace as an optimized probe point when a probe is placed on an\n     ftrace nop.  With lots of help from Masami Hiramatsu, and going\n     through lots of iterations, we finally came up with a good\n     solution.\n\n   - Add cpumask for uncore pmu, use it in \u0027stat\u0027, from Yan, Zheng.\n\n   - Various tracing updates from Steve Rostedt\n\n   - Clean up and improve \u0027perf sched\u0027 performance by elliminating lots\n     of needless calls to libtraceevent.\n\n   - Event group parsing support, from Jiri Olsa\n\n   - UI/gtk refactorings and improvements from Namhyung Kim\n\n   - Add support for non-tracepoint events in perf script python, from\n     Feng Tang\n\n   - Add --symbols to \u0027script\u0027, similar to the one in \u0027report\u0027, from\n     Feng Tang.\n\n  Infrastructure enhancements and fixes:\n\n   - Convert the trace builtins to use the growing evsel/evlist\n     tracepoint infrastructure, removing several open coded constructs\n     like switch like series of strcmp to dispatch events, etc.\n     Basically what had already been showcased in \u0027perf sched\u0027.\n\n   - Add evsel constructor for tracepoints, that uses libtraceevent just\n     to parse the /format events file, use it in a new \u0027perf test\u0027 to\n     make sure the libtraceevent format parsing regressions can be more\n     readily caught.\n\n   - Some strange errors were happening in some builds, but not on the\n     next, reported by several people, problem was some parser related\n     files, generated during the build, didn\u0027t had proper make deps, fix\n     from Eric Sandeen.\n\n   - Introduce struct and cache information about the environment where\n     a perf.data file was captured, from Namhyung Kim.\n\n   - Fix handling of unresolved samples when --symbols is used in\n     \u0027report\u0027, from Feng Tang.\n\n   - Add union member access support to \u0027probe\u0027, from Hyeoncheol Lee.\n\n   - Fixups to die() removal, from Namhyung Kim.\n\n   - Render fixes for the TUI, from Namhyung Kim.\n\n   - Don\u0027t enable annotation in non symbolic view, from Namhyung Kim.\n\n   - Fix pipe mode in \u0027report\u0027, from Namhyung Kim.\n\n   - Move related stats code from stat to util/, will be used by the\n     \u0027stat\u0027 kvm tool, from Xiao Guangrong.\n\n   - Remove die()/exit() calls from several tools.\n\n   - Resolve vdso callchains, from Jiri Olsa\n\n   - Don\u0027t pass const char pointers to basename, so that we can\n     unconditionally use libgen.h and thus avoid ifdef BIONIC lines,\n     from David Ahern\n\n   - Refactor hist formatting so that it can be reused with the GTK\n     browser, From Namhyung Kim\n\n   - Fix build for another rbtree.c change, from Adrian Hunter.\n\n   - Make \u0027perf diff\u0027 command work with evsel hists, from Jiri Olsa.\n\n   - Use the only field_sep var that is set up: symbol_conf.field_sep,\n     fix from Jiri Olsa.\n\n   - .gitignore compiled python binaries, from Namhyung Kim.\n\n   - Get rid of die() in more libtraceevent places, from Namhyung Kim.\n\n   - Rename libtraceevent \u0027private\u0027 struct member to \u0027priv\u0027 so that it\n     works in C++, from Steven Rostedt\n\n   - Remove lots of exit()/die() calls from tools so that the main perf\n     exit routine can take place, from David Ahern\n\n   - Fix x86 build on x86-64, from David Ahern.\n\n   - {int,str,rb}list fixes from Suzuki K Poulose\n\n   - perf.data header fixes from Namhyung Kim\n\n   - Allow user to indicate objdump path, needed in cross environments,\n     from Maciek Borzecki\n\n   - Fix hardware cache event name generation, fix from Jiri Olsa\n\n   - Add round trip test for sw, hw and cache event names, catching the\n     problem Jiri fixed, after Jiri\u0027s patch, the test passes\n     successfully.\n\n   - Clean target should do clean for lib/traceevent too, fix from David\n     Ahern\n\n   - Check the right variable for allocation failure, fix from Namhyung\n     Kim\n\n   - Set up evsel-\u003etp_format regardless of evsel-\u003ename being set\n     already, fix from Namhyung Kim\n\n   - Oprofile fixes from Robert Richter.\n\n   - Remove perf_event_attr needless version inflation, from Jiri Olsa\n\n   - Introduce libtraceevent strerror like error reporting facility,\n     from Namhyung Kim\n\n   - Add pmu mappings to perf.data header and use event names from cmd\n     line, from Robert Richter\n\n   - Fix include order for bison/flex-generated C files, from Ben\n     Hutchings\n\n   - Build fixes and documentation corrections from David Ahern\n\n   - Assorted cleanups from Robert Richter\n\n   - Let O\u003d makes handle relative paths, from Steven Rostedt\n\n   - perf script python fixes, from Feng Tang.\n\n   - Initial bash completion support, from Frederic Weisbecker\n\n   - Allow building without libelf, from Namhyung Kim.\n\n   - Support DWARF CFI based unwind to have callchains when %bp based\n     unwinding is not possible, from Jiri Olsa.\n\n   - Symbol resolution fixes, while fixing support PPC64 files with an\n     .opt ELF section was the end goal, several fixes for code that\n     handles all architectures and cleanups are included, from Cody\n     Schafer.\n\n   - Assorted fixes for Documentation and build in 32 bit, from Robert\n     Richter\n\n   - Cache the libtraceevent event_format associated to each evsel\n     early, so that we avoid relookups, i.e.  calling pevent_find_event\n     repeatedly when processing tracepoint events.\n\n     [ This is to reduce the surface contact with libtraceevents and\n        make clear what is that the perf tools needs from that lib: so\n        far parsing the common and per event fields.  ]\n\n   - Don\u0027t stop the build if the audit libraries are not installed, fix\n     from Namhyung Kim.\n\n   - Fix bfd.h/libbfd detection with recent binutils, from Markus\n     Trippelsdorf.\n\n   - Improve warning message when libunwind devel packages not present,\n     from Jiri Olsa\"\n\n* \u0027perf-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (282 commits)\n  perf trace: Add aliases for some syscalls\n  perf probe: Print an enum type variable in \"enum variable-name\" format when showing accessible variables\n  perf tools: Check libaudit availability for perf-trace builtin\n  perf hists: Add missing period_* fields when collapsing a hist entry\n  perf trace: New tool\n  perf evsel: Export the event_format constructor\n  perf evsel: Introduce rawptr() method\n  perf tools: Use perf_evsel__newtp in the event parser\n  perf evsel: The tracepoint constructor should store sys:name\n  perf evlist: Introduce set_filter() method\n  perf evlist: Renane set_filters method to apply_filters\n  perf test: Add test to check we correctly parse and match syscall open parms\n  perf evsel: Handle endianity in intval method\n  perf evsel: Know if byte swap is needed\n  perf tools: Allow handling a NULL cpu_map as meaning \"all cpus\"\n  perf evsel: Improve tracepoint constructor setup\n  tools lib traceevent: Fix error path on pevent_parse_event\n  perf test: Fix build failure\n  trace: Move trace event enable from fs_initcall to core_initcall\n  tracing: Add an option for disabling markers\n  ...\n"
    },
    {
      "commit": "ec75fba93ef0c00c91545b5e53841a80cffad0c4",
      "tree": "e71ccd7816177b80bfffaf80f6ff7039acc92dda",
      "parents": [
        "ed6f6a50dc5f183c53e7b3b7fed4794bc50d9aa7"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Sep 23 21:55:19 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Sep 29 21:21:54 2012 +0200"
      },
      "message": "uprobes: Simplify is_swbp_at_addr(), remove stale comments\n\nAfter the previous change is_swbp_at_addr() is always called with\ncurrent-\u003emm. Remove this check and move it close to its single caller.\n\nAlso, remove the obsolete comment about is_swbp_at_addr() and\nuprobe_state.count.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "ed6f6a50dc5f183c53e7b3b7fed4794bc50d9aa7",
      "tree": "8ef3472db708804bb292a79752d0b04de8f2060d",
      "parents": [
        "cceb55aab73d2aea8f4d6f7414d2e1b647a3dacb"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Sep 23 21:30:44 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Sep 29 21:21:54 2012 +0200"
      },
      "message": "uprobes: Kill set_orig_insn()-\u003eis_swbp_at_addr()\n\nUnlike set_swbp(), set_orig_insn()-\u003eis_swbp_at_addr() makes sense,\nalthough it can\u0027t prevent all confusions.\n\nBut the usage of is_swbp_at_addr() is equally confusing, and it adds\nthe extra get_user_pages() we can avoid.\n\nThis patch removes set_orig_insn()-\u003eis_swbp_at_addr() but changes\nwrite_opcode() to do the necessary checks before replace_page().\n\nPerhaps it also makes sense to ensure PAGE_MAPPING_ANON in unregister\ncase.\n\nfind_active_uprobe() becomes the only user of is_swbp_at_addr(),\nwe can change its semantics.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "cceb55aab73d2aea8f4d6f7414d2e1b647a3dacb",
      "tree": "3da300ea711b72be0d5dc846d65f94695c5a7ed5",
      "parents": [
        "e97f65a17deafacc360a4cb75ae944897ecea6d7"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Sep 23 21:10:18 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Sep 29 21:21:54 2012 +0200"
      },
      "message": "uprobes: Introduce copy_opcode(), kill read_opcode()\n\nNo functional changes, preparations.\n\n1. Extract the kmap-and-memcpy code from read_opcode() into the\n   new trivial helper, copy_opcode(). The next patch will add\n   another user.\n\n2. read_opcode() becomes really trivial, fold it into its single\n   caller, is_swbp_at_addr().\n\n3. Remove \"auprobe\" argument from write_opcode(), it is not used\n   since f403072c6.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "e97f65a17deafacc360a4cb75ae944897ecea6d7",
      "tree": "d87d1e779ae91b9a1c0f5fcb9ed0e220bb4dfb72",
      "parents": [
        "e40cfce626a5537994058ee9a940dcfdc0f68ef0"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Sep 19 16:36:01 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Sep 29 21:21:54 2012 +0200"
      },
      "message": "uprobes: Kill set_swbp()-\u003eis_swbp_at_addr()\n\nA separate patch for better documentation.\n\nset_swbp()-\u003eis_swbp_at_addr() is not needed for correctness, it is\nharmless to do the unnecessary __replace_page(old_page, new_page)\nwhen these 2 pages are identical.\n\nAnd it can not be counted as optimization. mmap/register races are\nvery unlikely, while in the likely case is_swbp_at_addr() adds the\nextra get_user_pages() even if the caller is uprobe_mmap(current-\u003emm)\nand returns false.\n\nNote also that the semantics/usage of is_swbp_at_addr() in uprobe.c\nis confusing. set_swbp() uses it to detect the case when this insn\nwas already modified by uprobes, that is why it should always compare\nthe opcode with UPROBE_SWBP_INSN even if the hardware (like powerpc)\nhas other trap insns. It doesn\u0027t matter if this breakpoint was in fact\ninstalled by gdb or application itself, we are going to \"steal\" this\nbreakpoint anyway and execute the original insn from vm_file even if\nit no longer matches the memory.\n\nOTOH, handle_swbp()-\u003efind_active_uprobe() uses is_swbp_at_addr() to\nfigure out whether we need to send SIGTRAP or not if we can not find\nuprobe, so in this case it should return true for all trap variants,\nnot only for UPROBE_SWBP_INSN.\n\nThis patch removes set_swbp()-\u003eis_swbp_at_addr(), the next patches\nwill remove it from set_orig_insn() which is similar to set_swbp()\nin this respect. So the only caller will be handle_swbp() and we\ncan make its semantics clear.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "e40cfce626a5537994058ee9a940dcfdc0f68ef0",
      "tree": "ce9a24a51906fb3437ea0f08851e4dfb4671aa0b",
      "parents": [
        "78a320542e6cdb2800cd736b2d136e4261d34f43"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Sep 16 19:31:39 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Sep 29 21:21:54 2012 +0200"
      },
      "message": "uprobes: Restrict valid_vma(false) to skip VM_SHARED vmas\n\nvalid_vma(false) ignores -\u003evm_flags, this is not actually right.\nWe should never try to write into MAP_SHARED mapping, this can\nconfuse an apllication which actually writes to -\u003evm_file.\n\nWith this patch valid_vma(false) ignores VM_WRITE only but checks\nother (immutable) bits checked by valid_vma(true). This can also\nspeedup uprobe_munmap() and uprobe_unregister().\n\nNote: even after this patch _unregister can confuse the probed\napplication if it does mprotect(PROT_WRITE) after _register and\ninstalls \"int3\", but this is hardly possible to avoid and this\ndoesn\u0027t differ from gdb case.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "78a320542e6cdb2800cd736b2d136e4261d34f43",
      "tree": "eb55bec46370f7890fdec4c44450e52aba043885",
      "parents": [
        "75ed82ea53bd0d2d8083261123576250f7ba851e"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Sep 16 19:07:41 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Sep 29 21:21:53 2012 +0200"
      },
      "message": "uprobes: Change valid_vma() to demand VM_MAYEXEC rather than VM_EXEC\n\nuprobe_register() or uprobe_mmap() requires VM_READ | VM_EXEC, this\nis not right. An apllication can do mprotect(PROT_EXEC) later and\nexecute this code.\n\nChange valid_vma(is_register \u003d\u003e true) to check VM_MAYEXEC instead.\nNo need to check VM_MAYREAD, it is always set.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "75ed82ea53bd0d2d8083261123576250f7ba851e",
      "tree": "da2c69d053b7555c15e1adb5e6d901c2afab8ad8",
      "parents": [
        "db023ea595015058270be6a62fe60a7b6b5c50d7"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Sep 16 17:20:06 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Sep 29 21:21:53 2012 +0200"
      },
      "message": "uprobes: Change write_opcode() to use FOLL_FORCE\n\nwrite_opcode()-\u003eget_user_pages() needs FOLL_FORCE to ensure we can\nread the page even if the probed task did mprotect(PROT_NONE) after\nuprobe_register(). Without FOLL_WRITE, FOLL_FORCE doesn\u0027t have any\nside effect but allows to read the !VM_READ memory.\n\nOtherwiese the subsequent uprobe_unregister()-\u003eset_orig_insn() fails\nand we leak \"int3\". If that task does mprotect(PROT_READ | EXEC) and\nexecute the probed insn later it will be killed.\n\nNote: in fact this is also needed for _register, see the next patch.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "db023ea595015058270be6a62fe60a7b6b5c50d7",
      "tree": "44e26d8b5bb73d5847150af9d5c9a3fa25bf3573",
      "parents": [
        "1b08e907211cdc744f54871736005d9f3e7f182c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Sep 14 19:05:46 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Sep 29 21:21:53 2012 +0200"
      },
      "message": "uprobes: Move clear_thread_flag(TIF_UPROBE) to uprobe_notify_resume()\n\nMove clear_thread_flag(TIF_UPROBE) from do_notify_resume() to\nuprobe_notify_resume() for !CONFIG_UPROBES case.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "1b08e907211cdc744f54871736005d9f3e7f182c",
      "tree": "df62046438501ecd89e0bac1fb9b73edaf622e15",
      "parents": [
        "0578a97098dab967ece4b025fe5eb4984c4c86c0"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Sep 14 18:52:10 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Sep 29 21:21:53 2012 +0200"
      },
      "message": "uprobes: Kill UTASK_BP_HIT state\n\nKill UTASK_BP_HIT state, it buys nothing but complicates the code.\nIt is only used in uprobe_notify_resume() to decide who should be\ncalled, we can check utask-\u003eactive_uprobe !\u003d NULL instead. And this\nallows us to simplify handle_swbp(), no need to clear utask-\u003estate.\n\nLikewise we could kill UTASK_SSTEP, but UTASK_BP_HIT is worse and\nimho should die. The problem is, it creates the special case when\ntask-\u003eutask is NULL, we can\u0027t distinguish RUNNING and BP_HIT. With\nthis patch utask \u003d\u003d NULL always means RUNNING.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "0578a97098dab967ece4b025fe5eb4984c4c86c0",
      "tree": "cf48aeca0e414d1eb2cafdfd28e8e31282a58af1",
      "parents": [
        "746a9e6ba24af2ccf03279c99d435a1b88ca5d17"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Sep 14 18:31:23 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Sep 29 21:21:52 2012 +0200"
      },
      "message": "uprobes: Fix UPROBE_SKIP_SSTEP checks in handle_swbp()\n\nIf handle_swbp()-\u003eadd_utask() fails but UPROBE_SKIP_SSTEP is set,\ncleanup_ret: path do not restart the insn, this is wrong. Remove\nthis check and add the additional label for can_skip_sstep() \u003d T\ncase.\n\nNote also that UPROBE_SKIP_SSTEP can be false positive, we simply\ncan not trust it unless arch_uprobe_skip_sstep() was already called.\n\nAlso, move another UPROBE_SKIP_SSTEP check before can_skip_sstep()\ninto this helper, this looks more clean and understandable.\n\nNote: probably we should rename \"skip\" to \"emulate\" and I think\nthat \"clear UPROBE_SKIP_SSTEP\" should be moved to arch_can_skip.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "746a9e6ba24af2ccf03279c99d435a1b88ca5d17",
      "tree": "7ee4399b90c952520c492fea64cb2d841341d0d4",
      "parents": [
        "79d54b249c176ba4abb9a580951400246dd974b1"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Sep 14 18:23:51 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Sep 29 21:21:52 2012 +0200"
      },
      "message": "uprobes: Do not setup -\u003eactive_uprobe/state prematurely\n\nhandle_swbp() sets utask-\u003eactive_uprobe before handler_chain(),\nand UTASK_SSTEP before pre_ssout(). This complicates the code\nfor no reason,  arch_ hooks or consumer-\u003ehandler() should not\n(and can\u0027t) use this info.\n\nChange handle_swbp() to initialize them after pre_ssout(), and\nremove the no longer needed cleanup-utask code.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\ncked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "79d54b249c176ba4abb9a580951400246dd974b1",
      "tree": "e3efd0adcd88f476c775b9b77b58e58424739174",
      "parents": [
        "1d787d37c8ff6612b8151c6dff15bfa7347bcbdf"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Sep 14 18:03:59 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Sep 29 21:21:52 2012 +0200"
      },
      "message": "uprobes: Do not leak UTASK_BP_HIT if find_active_uprobe() fails\n\nIf handle_swbp()-\u003efind_active_uprobe() fails we return with\nutask-\u003estate \u003d UTASK_BP_HIT.\n\nChange handle_swbp() to reset utask-\u003estate at the start. Note\nthat we do this unconditionally, see the next patch(es).\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "2903ff019b346ab8d36ebbf54853c3aaf6590608",
      "tree": "962d94054765bb37bc00e977c3036e65c5fd91fe",
      "parents": [
        "a5b470ba06aa3f96999ede5feba178df6bdb134a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Aug 28 12:52:22 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Sep 26 22:20:08 2012 -0400"
      },
      "message": "switch simple cases of fget_light to fdget\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ab72a7028c0cc22731dc60beceb595b321d1cdb9",
      "tree": "0f9e4a379876a614da462ba06be41b01e8b6795d",
      "parents": [
        "5b249b1b07c42c61d0c53b8ab4fad026e39a9be9"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Aug 21 09:40:46 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Sep 26 21:08:52 2012 -0400"
      },
      "message": "events: don\u0027t use get_unused_fd_flags() when get_unused_fd() will do\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9d778782266f95e5c6ec43ed8195ba331c821018",
      "tree": "99872945803a76d1ff9e438cf48864cd0a5d9bf4",
      "parents": [
        "499a4f3ec057a0f79636cc3c1e581bb6e977a30f"
      ],
      "author": {
        "name": "Sebastian Andrzej Siewior",
        "email": "bigeasy@linutronix.de",
        "time": "Tue Aug 07 18:12:28 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Sep 15 17:37:28 2012 +0200"
      },
      "message": "uprobes: Introduce arch_uprobe_enable/disable_step()\n\nAs Oleg pointed out in [0] uprobe should not use the ptrace interface\nfor enabling/disabling single stepping.\n\n[0] http://lkml.kernel.org/r/20120730141638.GA5306@redhat.com\n\nAdd the new \"__weak arch\" helpers which simply call user_*_single_step()\nas a preparation. This is only needed to not break the powerpc port, we\nwill fold this logic into arch_uprobe_pre/post_xol() hooks later.\n\nWe should also change handle_singlestep(), _disable_step(\u0026uprobe-\u003earch)\nshould be called before put_uprobe().\n\nSigned-off-by: Sebastian Andrzej Siewior \u003cbigeasy@linutronix.de\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "499a4f3ec057a0f79636cc3c1e581bb6e977a30f",
      "tree": "6c24cbd3d9eeb3d1711da4b5aa114e6ff17955c9",
      "parents": [
        "9f68f672c47b9bd4cfe0a667ecb0b1382c61e2de"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Aug 19 17:41:34 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Sep 15 17:37:27 2012 +0200"
      },
      "message": "uprobes: Teach find_active_uprobe() to clear MMF_HAS_UPROBES\n\nThe wrong MMF_HAS_UPROBES doesn\u0027t really hurt, just it triggers\nthe \"slow\" and unnecessary handle_swbp() path if the task hits\nthe non-uprobe breakpoint.\n\nSo this patch changes find_active_uprobe() to check every valid\nvma and clear MMF_HAS_UPROBES if no uprobes were found. This is\nadds the slow O(n) path, but it is only called in unlikely case\nwhen the task hits the normal breakpoint first time after\nuprobe_unregister().\n\nNote the \"not strictly accurate\" comment in mmf_recalc_uprobes().\nWe can fix this, we only need to teach vma_has_uprobes() to return\na bit more more info, but I am not sure this worth the trouble.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "9f68f672c47b9bd4cfe0a667ecb0b1382c61e2de",
      "tree": "eb389851ce75fa15ad2b5e34c88d4c6af1fb197a",
      "parents": [
        "6f47caa0e1e4887aa2ddca8388d058d35725d815"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Aug 19 16:15:09 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Sep 15 17:37:27 2012 +0200"
      },
      "message": "uprobes: Introduce MMF_RECALC_UPROBES\n\nAdd the new MMF_RECALC_UPROBES flag, it means that MMF_HAS_UPROBES\ncan be false positive after remove_breakpoint() or uprobe_munmap().\nIt is also set by uprobe_dup_mmap(), this is not optimal but simple.\nWe could add the new hook, uprobe_dup_vma(), to set MMF_HAS_UPROBES\nonly if the new mm actually has uprobes, but I don\u0027t think this\nmakes sense.\n\nThe next patch will use this flag to clear MMF_HAS_UPROBES.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "6f47caa0e1e4887aa2ddca8388d058d35725d815",
      "tree": "2f88ea604c353b4a97006fbd220dceceb36e76f9",
      "parents": [
        "6d1d8dfa8b65831cfa9a528e3d17efa7e7f4226c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Aug 18 17:01:57 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Sep 15 17:37:26 2012 +0200"
      },
      "message": "uprobes: uprobes_treelock should not disable irqs\n\nNobody plays with uprobes_tree/uprobes_treelock in interrupt context,\nno need to disable irqs.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "6d1d8dfa8b65831cfa9a528e3d17efa7e7f4226c",
      "tree": "2e13b65228f1c879bee978acc35ec7f6755f7ba5",
      "parents": [
        "ded86e7c8fc4404414c4700010c9962ea8bd083a"
      ],
      "author": {
        "name": "Sebastian Andrzej Siewior",
        "email": "bigeasy@linutronix.de",
        "time": "Thu Aug 30 19:26:22 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Sep 15 17:34:05 2012 +0200"
      },
      "message": "uprobes: Don\u0027t put NULL pointer in uprobe_register()\n\nalloc_uprobe() might return a NULL pointer, put_uprobe() can\u0027t deal with\nthis.\n\nSigned-off-by: Sebastian Andrzej Siewior \u003cbigeasy@linutronix.de\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "8c7f6edbda01f1b1a2e60ad61f14fe38023e433b",
      "tree": "f1db9712b109575cba86e37140e1e4f8a56ca780",
      "parents": [
        "fbcbe2b3c92ee1c930dcfcf8bb764074c100fd63"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Sep 13 12:20:58 2012 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 14 12:01:16 2012 -0700"
      },
      "message": "cgroup: mark subsystems with broken hierarchy support and whine if cgroups are nested for them\n\nCurrently, cgroup hierarchy support is a mess.  cpu related subsystems\nbehave correctly - configuration, accounting and control on a parent\nproperly cover its children.  blkio and freezer completely ignore\nhierarchy and treat all cgroups as if they\u0027re directly under the root\ncgroup.  Others show yet different behaviors.\n\nThese differing interpretations of cgroup hierarchy make using cgroup\nconfusing and it impossible to co-mount controllers into the same\nhierarchy and obtain sane behavior.\n\nEventually, we want full hierarchy support from all subsystems and\nprobably a unified hierarchy.  Users using separate hierarchies\nexpecting completely different behaviors depending on the mounted\nsubsystem is deterimental to making any progress on this front.\n\nThis patch adds cgroup_subsys.broken_hierarchy and sets it to %true\nfor controllers which are lacking in hierarchy support.  The goal of\nthis patch is two-fold.\n\n* Move users away from using hierarchy on currently non-hierarchical\n  subsystems, so that implementing proper hierarchy support on those\n  doesn\u0027t surprise them.\n\n* Keep track of which controllers are broken how and nudge the\n  subsystems to implement proper hierarchy support.\n\nFor now, start with a single warning message.  We can whine louder\nlater on.\n\nv2: Fixed a typo spotted by Michal. Warning message updated.\n\nv3: Updated memcg part so that it doesn\u0027t generate warning in the\n    cases where .use_hierarchy\u003dfalse doesn\u0027t make the behavior\n    different from root.use_hierarchy\u003dtrue.  Fixed a typo spotted by\n    Glauber.\n\nv4: Check -\u003ebroken_hierarchy after cgroup creation is complete so that\n    -\u003ecreate() can affect the result per Michal.  Dropped unnecessary\n    memcg root handling per Michal.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Paul Turner \u003cpjt@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Thomas Graf \u003ctgraf@suug.ch\u003e\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nCc: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nCc: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "500ad2d8b01390c98bc6dce068bccfa9534b8212",
      "tree": "a7e1330e5380d4cb4be02820a86fbea1dc0da5c9",
      "parents": [
        "3ec18cd8b8f8395d0df604c62ab3bc2cf3a966b4"
      ],
      "author": {
        "name": "K.Prasad",
        "email": "Prasad.Krishnan@gmail.com",
        "time": "Thu Aug 02 13:46:35 2012 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Tue Sep 04 17:29:53 2012 +0200"
      },
      "message": "perf/hwpb: Invoke __perf_event_disable() if interrupts are already disabled\n\nWhile debugging a warning message on PowerPC while using hardware\nbreakpoints, it was discovered that when perf_event_disable is invoked\nthrough hw_breakpoint_handler function with interrupts disabled, a\nsubsequent IPI in the code path would trigger a WARN_ON_ONCE message in\nsmp_call_function_single function.\n\nThis patch calls __perf_event_disable() when interrupts are already\ndisabled, instead of perf_event_disable().\n\nReported-by: Edjunior Barbosa Machado \u003cemachado@linux.vnet.ibm.com\u003e\nSigned-off-by: K.Prasad \u003cPrasad.Krishnan@gmail.com\u003e\n[naveen.n.rao@linux.vnet.ibm.com: v3: Check to make sure we target current task]\nSigned-off-by: Naveen N. Rao \u003cnaveen.n.rao@linux.vnet.ibm.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/20120802081635.5811.17737.stgit@localhost.localdomain\n[ Fixed build error on MIPS. ]\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "a6fa941d94b411bbd2b6421ffbde6db3c93e65ab",
      "tree": "2d80af531f906c6b27184148bbf15b8a7469c2a7",
      "parents": [
        "e3e45c01ae690e65f2650e5288b9af802e95a136"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Mon Aug 20 14:59:25 2012 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Tue Sep 04 17:29:22 2012 +0200"
      },
      "message": "perf_event: Switch to internal refcount, fix race with close()\n\nDon\u0027t mess with file refcounts (or keep a reference to file, for\nthat matter) in perf_event.  Use explicit refcount of its own\ninstead.  Deal with the race between the final reference to event\ngoing away and new children getting created for it by use of\natomic_long_inc_not_zero() in inherit_event(); just have the\nlatter free what it had allocated and return NULL, that works\nout just fine (children of siblings of something doomed are\ncreated as singletons, same as if the child of leader had been\ncreated and immediately killed).\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: stable@kernel.org\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/20120820135925.GG23464@ZenIV.linux.org.uk\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "ded86e7c8fc4404414c4700010c9962ea8bd083a",
      "tree": "39528d3fd485701e239fed27e2f646c5fd0d53d5",
      "parents": [
        "61559a8165da2b6bab7621ac36379c6280efacb6"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Aug 08 18:07:03 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue Aug 28 18:21:20 2012 +0200"
      },
      "message": "uprobes: Remove \"verify\" argument from set_orig_insn()\n\nNobody does set_orig_insn(verify \u003d\u003e false), and I think nobody will.\nRemove this argument. IIUC set_orig_insn(verify \u003d\u003e false) was needed\nto single-step without xol area.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "61559a8165da2b6bab7621ac36379c6280efacb6",
      "tree": "22d885fda72ffadbaa735ceeeabd266177d66eab",
      "parents": [
        "f8ac4ec9c064b330dcc49e03c450fe74298c4622"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Aug 08 17:17:46 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue Aug 28 18:21:19 2012 +0200"
      },
      "message": "uprobes: Fold uprobe_reset_state() into uprobe_dup_mmap()\n\nNow that we have uprobe_dup_mmap() we can fold uprobe_reset_state()\ninto the new hook and remove it. mmput()-\u003euprobe_clear_state() can\u0027t\nbe called before dup_mmap().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "f8ac4ec9c064b330dcc49e03c450fe74298c4622",
      "tree": "62d53120d0289719438d27de5f868c36e136ed28",
      "parents": [
        "78f7411668aa0b2006d331f6a288416dd91b8e5d"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Aug 08 17:11:42 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue Aug 28 18:21:18 2012 +0200"
      },
      "message": "uprobes: Introduce MMF_HAS_UPROBES\n\nAdd the new MMF_HAS_UPROBES flag. It is set by install_breakpoint()\nand it is copied by dup_mmap(), uprobe_pre_sstep_notifier() checks\nit to avoid the slow path if the task was never probed. Perhaps it\nmakes sense to check it in valid_vma(is_register \u003d\u003e false) as well.\n\nThis needs the new dup_mmap()-\u003euprobe_dup_mmap() hook. We can\u0027t use\nuprobe_reset_state() or put MMF_HAS_UPROBES into MMF_INIT_MASK, we\nneed oldmm-\u003emmap_sem to avoid the race with uprobe_register() or\nmmap() from another thread.\n\nCurrently we never clear this bit, it can be false-positive after\nuprobe_unregister() or uprobe_munmap() or if dup_mmap() hits the\nprobed VM_DONTCOPY vma. But this is fine correctness-wise and has\nno effect unless the task hits the non-uprobe breakpoint.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "78f7411668aa0b2006d331f6a288416dd91b8e5d",
      "tree": "b48492a829701dce94ed098ad11b49663b072354",
      "parents": [
        "5e5be71ab3fd8bd2076606923791ece1634c199c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Aug 08 17:35:08 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue Aug 28 18:21:18 2012 +0200"
      },
      "message": "uprobes: Do not use -EEXIST in install_breakpoint() paths\n\n-EEXIST from install_breakpoint() no longer makes sense, all\ncallers should simply treat it as \"success\". Change the code\nto return zero and simplify register_for_each_vma().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "5e5be71ab3fd8bd2076606923791ece1634c199c",
      "tree": "3bfa62096792ec812d8b4e3aa3caa6b5662384da",
      "parents": [
        "f1a45d023193f7d8e55e384090b645d609325393"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Aug 06 14:49:56 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue Aug 28 18:21:17 2012 +0200"
      },
      "message": "uprobes: Change uprobe_mmap() to ignore the errors but check fatal_signal_pending()\n\nOnce install_breakpoint() fails uprobe_mmap() \"ignores\" all other\nuprobes and returns the error.\n\nIt was never really needed to to stop after the first error, and\nin fact it was always wrong at least in -ENOTSUPP case.\n\nChange uprobe_mmap() to ignore the errors and always return 0.\nThis is not what we want in the long term, but until we teach\nthe callers to handle the failure it would be better to remove\nthe pointless complications. And this doesn\u0027t look too bad, the\nonly \"reasonable\" error is ENOMEM but in this case the caller\nshould be oom-killed in the likely case or the system has more\nserious problems.\n\nHowever it makes sense to stop if fatal_signal_pending() \u003d\u003d T.\nIn particular this helps if the task was oom-killed.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "f1a45d023193f7d8e55e384090b645d609325393",
      "tree": "7f901f3dbd23a7602bf3d4bf774862a3ee5b7640",
      "parents": [
        "647c42dfd40fec032a4c8525a755160f0765921f"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Aug 06 14:13:23 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue Aug 28 18:21:17 2012 +0200"
      },
      "message": "uprobes: Kill dup_mmap()-\u003euprobe_mmap(), simplify uprobe_mmap/munmap\n\n1. Kill dup_mmap()-\u003euprobe_mmap(), it was only needed to calculate\n   new_mm-\u003euprobes_state.count removed by the previous patch.\n\n   If the forking process has a pending uprobe (int3) in vma, it will\n   be copied by copy_page_range(), note that it checks vma-\u003eanon_vma\n   so \"Don\u0027t copy ptes\" is not possible after install_breakpoint()\n   which does anon_vma_prepare().\n\n2. Remove is_swbp_at_addr() and \"int count\" in uprobe_mmap(). Again,\n   this was needed for uprobes_state.count.\n\n   As a side effect this fixes the bug pointed out by Srikar,\n   this code lacked the necessary put_uprobe().\n\n3. uprobe_munmap() becomes a nop after the previous patch. Remove the\n   meaningless code but do not remove the helper, we will need it.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "647c42dfd40fec032a4c8525a755160f0765921f",
      "tree": "f8bcb634d5cbebcc2168d6834d8a3a27d221c062",
      "parents": [
        "8bd874456e2ec49b9e64372ddc89a6f88901d184"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Aug 06 13:15:09 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue Aug 28 18:21:16 2012 +0200"
      },
      "message": "uprobes: Kill uprobes_state-\u003ecount\n\nuprobes_state-\u003ecount is only needed to avoid the slow path in\nuprobe_pre_sstep_notifier(). It is also checked in uprobe_munmap()\nbut ironically its only goal to decrement this counter. However,\nit is very broken. Just some examples:\n\n- uprobe_mmap() can race with uprobe_unregister() and wrongly\n  increment the counter if it hits the non-uprobe \"int3\". Note\n  that install_breakpoint() checks -\u003econsumers first and returns\n  -EEXIST if it is NULL.\n\n  \"atomic_sub() if error\" in uprobe_mmap() looks obviously wrong\n  too.\n\n- uprobe_munmap() can race with uprobe_register() and wrongly\n  decrement the counter by the same reason.\n\n- Suppose an appication tries to increase the mmapped area via\n  sys_mremap(). vma_adjust() does uprobe_munmap(whole_vma) first,\n  this can nullify the counter temporarily and race with another\n  thread which can hit the bp, the application will be killed by\n  SIGTRAP.\n\n- Suppose an application mmaps 2 consecutive areas in the same file\n  and one (or both) of these areas has uprobes. In the likely case\n  mmap_region()-\u003evma_merge() suceeds. Like above, this leads to\n  uprobe_munmap/uprobe_mmap from vma_merge()-\u003evma_adjust() but then\n  mmap_region() does another uprobe_mmap(resulting_vma) and doubles\n  the counter.\n\nThis patch only removes this counter and fixes the compile errors,\nthen we will try to cleanup the changed code and add something else\ninstead.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "8bd874456e2ec49b9e64372ddc89a6f88901d184",
      "tree": "fe918f684d04e88c7ba55c5ba56ee4ce7f3c7b74",
      "parents": [
        "61e1d394984110e2e76f25572d5b1b5d48796751"
      ],
      "author": {
        "name": "Sebastian Andrzej Siewior",
        "email": "bigeasy@linutronix.de",
        "time": "Tue Aug 07 18:12:30 2012 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue Aug 28 18:21:16 2012 +0200"
      },
      "message": "uprobes: Remove check for uprobe variable in handle_swbp()\n\nby the time we get here (after we pass cleanup_ret) uprobe is always is\nset. If it is NULL we leave very early in the code.\n\nSigned-off-by: Sebastian Andrzej Siewior \u003cbigeasy@linutronix.de\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "61e1d394984110e2e76f25572d5b1b5d48796751",
      "tree": "e189b458a639d23986c0ebe0f2c52879b2a324a3",
      "parents": [
        "508dc4f8eece1a70c493afc6511fdf5934fef567"
      ],
      "author": {
        "name": "Srikar Dronamraju",
        "email": "srikar@linux.vnet.ibm.com",
        "time": "Fri Jun 01 14:49:50 2012 +0530"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue Aug 28 18:21:15 2012 +0200"
      },
      "message": "uprobes: Remove redundant lock_page/unlock_page\n\nSince read_opcode() reads from the referenced page and doesnt modify\nthe page contents nor the page attributes, there is no need to lock\nthe page.\n\nSigned-off-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "d077526485d5c9b12fe85d0b2b3b7041e6bc5f91",
      "tree": "69b619844bdf800f2d292de5b54eeb7c85d1e094",
      "parents": [
        "c5ebcedb566ef17bda7b02686e0d658a7bb42ee7"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Aug 07 15:20:41 2012 +0200"
      },
      "committer": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Fri Aug 10 12:40:57 2012 -0300"
      },
      "message": "perf: Add attribute to filter out callchains\n\nIntroducing following bits to the the perf_event_attr struct:\n\n  - exclude_callchain_kernel to filter out kernel callchain\n    from the sample dump\n\n  - exclude_callchain_user to filter out user callchain\n    from the sample dump\n\nWe need to be able to disable standard user callchain dump when we use\nthe dwarf cfi callchain mode, because frame pointer based user\ncallchains are useless in this mode.\n\nImplementing also exclude_callchain_kernel to have complete set of\noptions.\n\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\n[ Added kernel callchains filtering ]\nCc: \"Frank Ch. Eigler\" \u003cfche@redhat.com\u003e\nCc: Arun Sharma \u003casharma@fb.com\u003e\nCc: Benjamin Redelings \u003cbenjamin.redelings@nescent.org\u003e\nCc: Corey Ashford \u003ccjashfor@linux.vnet.ibm.com\u003e\nCc: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nCc: Frank Ch. Eigler \u003cfche@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Jiri Olsa \u003cjolsa@redhat.com\u003e\nCc: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Robert Richter \u003crobert.richter@amd.com\u003e\nCc: Stephane Eranian \u003ceranian@google.com\u003e\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nCc: Ulrich Drepper \u003cdrepper@gmail.com\u003e\nLink: http://lkml.kernel.org/r/1344345647-11536-7-git-send-email-jolsa@redhat.com\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\n"
    },
    {
      "commit": "c5ebcedb566ef17bda7b02686e0d658a7bb42ee7",
      "tree": "46619f5d62f0fbe9a6389ce20fd5ed92c25755e3",
      "parents": [
        "5685e0ff45f5df67e79e9b052b6ffd501ff38c11"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "jolsa@redhat.com",
        "time": "Tue Aug 07 15:20:40 2012 +0200"
      },
      "committer": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Fri Aug 10 12:17:58 2012 -0300"
      },
      "message": "perf: Add ability to attach user stack dump to sample\n\nIntroducing PERF_SAMPLE_STACK_USER sample type bit to trigger the dump\nof the user level stack on sample. The size of the dump is specified by\nsample_stack_user value.\n\nBeing able to dump parts of the user stack, starting from the stack\npointer, will be useful to make a post mortem dwarf CFI based stack\nunwinding.\n\nAdded HAVE_PERF_USER_STACK_DUMP config option to determine if the\narchitecture provides user stack dump on perf event samples.  This needs\naccess to the user stack pointer which is not unified across\narchitectures. Enabling this for x86 architecture.\n\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nOriginal-patch-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: \"Frank Ch. Eigler\" \u003cfche@redhat.com\u003e\nCc: Arun Sharma \u003casharma@fb.com\u003e\nCc: Benjamin Redelings \u003cbenjamin.redelings@nescent.org\u003e\nCc: Corey Ashford \u003ccjashfor@linux.vnet.ibm.com\u003e\nCc: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nCc: Frank Ch. Eigler \u003cfche@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Robert Richter \u003crobert.richter@amd.com\u003e\nCc: Stephane Eranian \u003ceranian@google.com\u003e\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nCc: Ulrich Drepper \u003cdrepper@gmail.com\u003e\nLink: http://lkml.kernel.org/r/1344345647-11536-6-git-send-email-jolsa@redhat.com\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\n"
    },
    {
      "commit": "5685e0ff45f5df67e79e9b052b6ffd501ff38c11",
      "tree": "ead6bd92a49b42ec0ca5bfee467e03e37656a6f1",
      "parents": [
        "91d7753a45f8525dc75b6be01e427dc1c378dc16"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "jolsa@redhat.com",
        "time": "Tue Aug 07 15:20:39 2012 +0200"
      },
      "committer": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Fri Aug 10 12:16:22 2012 -0300"
      },
      "message": "perf: Add perf_output_skip function to skip bytes in sample\n\nIntroducing perf_output_skip function to be able to skip data within the\nperf ring buffer.\n\nWhen writing data into perf ring buffer we first reserve needed place in\nring buffer and then copy the actual data.\n\nThere\u0027s a possibility we won\u0027t be able to fill all the reserved size\nwith data, so we need a way to skip the remaining bytes.\n\nThis is going to be useful when storing the user stack dump, where we\nmight end up with less data than we originally requested.\n\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: \"Frank Ch. Eigler\" \u003cfche@redhat.com\u003e\nCc: Arun Sharma \u003casharma@fb.com\u003e\nCc: Benjamin Redelings \u003cbenjamin.redelings@nescent.org\u003e\nCc: Corey Ashford \u003ccjashfor@linux.vnet.ibm.com\u003e\nCc: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nCc: Frank Ch. Eigler \u003cfche@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Robert Richter \u003crobert.richter@amd.com\u003e\nCc: Stephane Eranian \u003ceranian@google.com\u003e\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nCc: Ulrich Drepper \u003cdrepper@gmail.com\u003e\nLink: http://lkml.kernel.org/r/1344345647-11536-5-git-send-email-jolsa@redhat.com\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\n"
    },
    {
      "commit": "91d7753a45f8525dc75b6be01e427dc1c378dc16",
      "tree": "906a2c335d4403a39bd0f09ed3e338865d3df49b",
      "parents": [
        "4018994f3d8785275ef0e7391b75c3462c029e56"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Aug 07 15:20:38 2012 +0200"
      },
      "committer": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Fri Aug 10 11:44:06 2012 -0300"
      },
      "message": "perf: Factor __output_copy to be usable with specific copy function\n\nAdding a generic way to use __output_copy function with specific copy\nfunction via DEFINE_PERF_OUTPUT_COPY macro.\n\nUsing this to add new __output_copy_user function, that provides output\ncopy from user pointers. For x86 the copy_from_user_nmi function is used\nand __copy_from_user_inatomic for the rest of the architectures.\n\nThis new function will be used in user stack dump on sample, coming in\nnext patches.\n\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nCc: \"Frank Ch. Eigler\" \u003cfche@redhat.com\u003e\nCc: Arun Sharma \u003casharma@fb.com\u003e\nCc: Benjamin Redelings \u003cbenjamin.redelings@nescent.org\u003e\nCc: Corey Ashford \u003ccjashfor@linux.vnet.ibm.com\u003e\nCc: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nCc: Frank Ch. Eigler \u003cfche@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Jiri Olsa \u003cjolsa@redhat.com\u003e\nCc: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Robert Richter \u003crobert.richter@amd.com\u003e\nCc: Stephane Eranian \u003ceranian@google.com\u003e\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nCc: Ulrich Drepper \u003cdrepper@gmail.com\u003e\nLink: http://lkml.kernel.org/r/1344345647-11536-4-git-send-email-jolsa@redhat.com\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\n"
    },
    {
      "commit": "4018994f3d8785275ef0e7391b75c3462c029e56",
      "tree": "661b5c488977c5150eb9d1ac4cec944309c83a16",
      "parents": [
        "c5e63197db519bae1c33e41ea0342a50f39e7a93"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "jolsa@redhat.com",
        "time": "Tue Aug 07 15:20:37 2012 +0200"
      },
      "committer": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Fri Aug 10 11:31:26 2012 -0300"
      },
      "message": "perf: Add ability to attach user level registers dump to sample\n\nIntroducing PERF_SAMPLE_REGS_USER sample type bit to trigger the dump of\nuser level registers on sample. Registers we want to dump are specified\nby sample_regs_user bitmask.\n\nOnly user level registers are dumped at the moment. Meaning the register\nvalues of the user space context as it was before the user entered the\nkernel for whatever reason (syscall, irq, exception, or a PMI happening\nin userspace).\n\nThe layout of the sample_regs_user bitmap is described in\nasm/perf_regs.h for archs that support register dump.\n\nThis is going to be useful to bring Dwarf CFI based stack unwinding on\ntop of samples.\n\nOriginal-patch-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n[ Dump registers ABI specification. ]\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nSuggested-by: Stephane Eranian \u003ceranian@google.com\u003e\nCc: \"Frank Ch. Eigler\" \u003cfche@redhat.com\u003e\nCc: Arun Sharma \u003casharma@fb.com\u003e\nCc: Benjamin Redelings \u003cbenjamin.redelings@nescent.org\u003e\nCc: Corey Ashford \u003ccjashfor@linux.vnet.ibm.com\u003e\nCc: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nCc: Frank Ch. Eigler \u003cfche@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Robert Richter \u003crobert.richter@amd.com\u003e\nCc: Stephane Eranian \u003ceranian@google.com\u003e\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nCc: Ulrich Drepper \u003cdrepper@gmail.com\u003e\nLink: http://lkml.kernel.org/r/1344345647-11536-3-git-send-email-jolsa@redhat.com\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\n"
    },
    {
      "commit": "e6dab5ffab59e910ec0e3355f4a6f29f7a7be474",
      "tree": "87acf0fb071b8d09794ac7d834cb256de030cceb",
      "parents": [
        "d07bdfd322d307789f15b427dbcc39257665356f"
      ],
      "author": {
        "name": "Andrew Vagin",
        "email": "avagin@openvz.org",
        "time": "Wed Jul 11 18:14:58 2012 +0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Tue Jul 31 17:02:05 2012 +0200"
      },
      "message": "perf/trace: Add ability to set a target task for events\n\nA few events are interesting not only for a current task.\nFor example, sched_stat_* events are interesting for a task\nwhich wakes up. For this reason, it will be good if such\nevents will be delivered to a target task too.\n\nNow a target task can be set by using __perf_task().\n\nThe original idea and a draft patch belongs to Peter Zijlstra.\n\nI need these events for profiling sleep times. sched_switch is used for\ngetting callchains and sched_stat_* is used for getting time periods.\nThese events are combined in user space, then it can be analyzed by\nperf tools.\n\nInspired-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Arun Sharma \u003casharma@fb.com\u003e\nSigned-off-by: Andrew Vagin \u003cavagin@openvz.org\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/1342016098-213063-1-git-send-email-avagin@openvz.org\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "194f8dcbe9629d8e9346cf96345a9c0bbf0e67ae",
      "tree": "10aac2913ee4f9263af68c42682c456788d990fe",
      "parents": [
        "57683f72b8c01c53c85fe13e82fe1feb3a06bcd5"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Jul 29 20:22:49 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Jul 30 11:27:25 2012 +0200"
      },
      "message": "uprobes: __replace_page() needs munlock_vma_page()\n\nLike do_wp_page(), __replace_page() should do munlock_vma_page()\nfor the case when the old page still has other !VM_LOCKED\nmappings. Unfortunately this needs mm/internal.h.\n\nAlso, move put_page() outside of ptl lock. This doesn\u0027t really\nmatter but looks a bit better.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar.vnet.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nLink: http://lkml.kernel.org/r/20120729182249.GA20372@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "57683f72b8c01c53c85fe13e82fe1feb3a06bcd5",
      "tree": "87014149ef710e9f3c0af87cd6ec3118fc4eb723",
      "parents": [
        "f4d6dfe55115efe981b4b5f37183ddccaaa792f0"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Jul 29 20:22:47 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Jul 30 11:27:25 2012 +0200"
      },
      "message": "uprobes: Rename vma_address() and make it return \"unsigned long\"\n\n1. vma_address() returns loff_t, this looks confusing and this\n   is unnecessary after the previous change. Make it return \"ulong\",\n   all callers truncate the result anyway.\n\n2. Its name conflicts with mm/rmap.c:vma_address(), rename it to\n   offset_to_vaddr(), this matches vaddr_to_offset().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar.vnet.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nLink: http://lkml.kernel.org/r/20120729182247.GA20365@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "f4d6dfe55115efe981b4b5f37183ddccaaa792f0",
      "tree": "2d81b1b5a17334895282b42de6134b4e2dcf9f24",
      "parents": [
        "cb113b47d098185f3f1f67e8300d05ddce842b66"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Jul 29 20:22:44 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Jul 30 11:27:24 2012 +0200"
      },
      "message": "uprobes: Fix register_for_each_vma()-\u003evma_address() check\n\n1. register_for_each_vma() checks that vma_address() \u003d\u003d vaddr,\n   but this is not enough. We should also ensure that\n   vaddr \u003e\u003d vm_start, find_vma() guarantees \"vaddr \u003c vm_end\" only.\n\n2. After the prevous changes, register_for_each_vma() is the\n   only reason why vma_address() has to return loff_t, all other\n   users know that we have the valid mapping at this offset and\n   thus the overflow is not possible.\n\n   Change the code to use vaddr_to_offset() instead, imho this looks\n   more clean/understandable and now we can change vma_address().\n\n3. While at it, remove the unnecessary type-cast.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar.vnet.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nLink: http://lkml.kernel.org/r/20120729182244.GA20362@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "cb113b47d098185f3f1f67e8300d05ddce842b66",
      "tree": "86601eb6728a4142e94e4cc3e45697840f6b0768",
      "parents": [
        "891c39708144bbe401b4aa151bffd0fe41b1dafd"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Jul 29 20:22:42 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Jul 30 11:27:24 2012 +0200"
      },
      "message": "uprobes: Introduce vaddr_to_offset(vma, vaddr)\n\nAdd the new helper, vaddr_to_offset(vma, vaddr) which returns\nthe offset in vma-\u003evm_file this vaddr is mapped at.\n\nChange build_probe_list() and find_active_uprobe() to use the\nnew helper, the next patch adds another user.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar.vnet.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nLink: http://lkml.kernel.org/r/20120729182242.GA20355@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "891c39708144bbe401b4aa151bffd0fe41b1dafd",
      "tree": "4d49f2169a6f1e7051fd1b88a8a0fbe612a9224e",
      "parents": [
        "89133786f9408d53361874a8c784fff150fc7f7c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Jul 29 20:22:40 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Jul 30 11:27:23 2012 +0200"
      },
      "message": "uprobes: Teach build_probe_list() to consider the range\n\nCurrently build_probe_list() builds the list of all uprobes\nattached to the given inode, and the caller should filter out\nthose who don\u0027t fall into the [start,end) range, this is\nsub-optimal.\n\nThis patch turns find_least_offset_node() into\nfind_node_in_range() which returns the first node inside the\n[min,max] range, and changes build_probe_list() to use this node\nas a starting point for rb_prev() and rb_next() to find all\nother nodes the caller needs. The resulting list is no longer\nsorted but we do not care.\n\nThis can speed up both build_probe_list() and the callers, but\nthere is another reason to introduce find_node_in_range(). It\ncan be used to figure out whether the given vma has uprobes or\nnot, this will be needed soon.\n\nWhile at it, shift INIT_LIST_HEAD(tmp_list) into\nbuild_probe_list().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar.vnet.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nLink: http://lkml.kernel.org/r/20120729182240.GA20352@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "aefd8933d445abf7ff0d4027c624737898827bcd",
      "tree": "f32864bfa64158141326ac35bc57204e49b2774f",
      "parents": [
        "2fd611a991391a6050cbd139201a2e12fc306540"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Jul 29 20:22:33 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Jul 30 11:27:21 2012 +0200"
      },
      "message": "uprobes: Fix overflow in vma_address()/find_active_uprobe()\n\nvma-\u003evm_pgoff is \"unsigned long\", it should be promoted to\nloff_t before the multiplication to avoid the overflow.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar.vnet.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nLink: http://lkml.kernel.org/r/20120729182233.GA20339@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "2fd611a991391a6050cbd139201a2e12fc306540",
      "tree": "8233d2ba7dd41e29c6477d4905b6fdc1e7a721e0",
      "parents": [
        "665605a2a207dbe1fa429b474f932d6ea138ba92"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Jul 29 20:22:31 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Jul 30 11:27:21 2012 +0200"
      },
      "message": "uprobes: Suppress uprobe_munmap() from mmput()\n\nuprobe_munmap() does get_user_pages() and it is also called from\nthe final mmput()-\u003eexit_mmap() path. This slows down\nexit/mmput() for no reason, and I think  it is simply\ndangerous/wrong to try to fault-in a page into the dying mm. If\nnothing else, this happens after the last sync_mm_rss(), afaics\nhandle_mm_fault() can change the task-\u003erss_stat and make the\nsubsequent check_mm() unhappy.\n\nChange uprobe_munmap() to check mm-\u003emm_users !\u003d 0.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar.vnet.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nLink: http://lkml.kernel.org/r/20120729182231.GA20336@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "665605a2a207dbe1fa429b474f932d6ea138ba92",
      "tree": "a9f99fcb3972a73066af4591dd3e818b8b14ab27",
      "parents": [
        "9f92448ceeea5326db7d114005a7e7ac03904edf"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Jul 29 20:22:29 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Jul 30 11:27:20 2012 +0200"
      },
      "message": "uprobes: Uprobe_mmap/munmap needs list_for_each_entry_safe()\n\nThe bug was introduced by me in 449d0d7c (\"uprobes: Simplify the\nusage of uprobe-\u003epending_list\").\n\nYes, we do not care about uprobe-\u003epending_list after return and\nnobody can remove the current list entry, but put_uprobe(uprobe)\ncan actually free it and thus we need list_for_each_safe().\n\nReported-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar.vnet.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nLink: http://lkml.kernel.org/r/20120729182229.GA20329@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "9f92448ceeea5326db7d114005a7e7ac03904edf",
      "tree": "42bd61d15b445d8677806adeadae99767094386c",
      "parents": [
        "089ba999dc881a7549d97c55ac9e0052d061867d"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Jul 29 20:22:20 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Jul 30 11:27:20 2012 +0200"
      },
      "message": "uprobes: Clean up and document write_opcode()-\u003elock_page(old_page)\n\nThe comment above write_opcode()-\u003elock_page(old_page) tells\nabout the race with do_wp_page(). I don\u0027t really understand\nwhich exactly race it means, but afaics this lock_page() was not\nenough to close all races with do_wp_page().\n\nAnyway, since:\n\n   77fc4af1b59d uprobes: Change register_for_each_vma() to take mm-\u003emmap_sem for writing\n\nthis code is always called with -\u003emmap_sem held for writing,\nso we can forget about do_wp_page().\n\nHowever, we can\u0027t simply remove this lock_page(), and the only\n(afaics) reason is __replace_page()-\u003etry_to_free_swap().\n\nNothing in write_opcode() needs it, move it into\n__replace_page() and fix the comment.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar.vnet.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nLink: http://lkml.kernel.org/r/20120729182220.GA20322@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "089ba999dc881a7549d97c55ac9e0052d061867d",
      "tree": "e5278f9ecb3a7405545b940b9b64abeb2121b4cc",
      "parents": [
        "c517ee744b96e441d9c731e245f83c6d08dc0a19"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Jul 29 20:22:18 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Jul 30 11:27:19 2012 +0200"
      },
      "message": "uprobes: Kill write_opcode()-\u003elock_page(new_page)\n\nwrite_opcode() does lock_page(new_page) for no reason. Nobody\ncan see this page until __replace_page() exposes it under ptl\nlock, and we do nothing with this page after pte_unmap_unlock().\n\nIf nothing else, the similar code in do_wp_page() doesn\u0027t lock\nthe new page for page_add_new_anon_rmap/set_pte_at_notify.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar.vnet.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nLink: http://lkml.kernel.org/r/20120729182218.GA20315@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "c517ee744b96e441d9c731e245f83c6d08dc0a19",
      "tree": "8d7f7b86767ba2d5c62c2d421f388949f0483c85",
      "parents": [
        "f403072c6108e15f319a4a5036b650c77760522c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Jul 29 20:22:16 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Jul 30 11:27:19 2012 +0200"
      },
      "message": "uprobes: __replace_page() should not use page_address_in_vma()\n\npage_address_in_vma(old_page) in __replace_page() is ugly and\nwrong. The caller already knows the correct virtual address,\nthis page was found by get_user_pages(vaddr).\n\nHowever, page_address_in_vma() can actually fail if\npage-\u003emapping was cleared by __delete_from_page_cache() after\nget_user_pages() returns. But this means the race with page\nreclaim, write_opcode() should not fail, it should retry and\nread this page again. Probably the race with remove_mapping() is\nnot possible due to page_freeze_refs() logic, but afaics at\nleast shmem_writepage()-\u003eshmem_delete_from_page_cache() can\nclear -\u003emapping.\n\nWe could change __replace_page() to return -EAGAIN in this case,\nbut it would be better to simply use the caller\u0027s vaddr and rely\non page_check_address().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar.vnet.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nLink: http://lkml.kernel.org/r/20120729182216.GA20311@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "f403072c6108e15f319a4a5036b650c77760522c",
      "tree": "196781f30871635b7c8fc702a7566b5ed09e525c",
      "parents": [
        "35d56ca9d401d9d0ac8d91e4db1485af5f38f6fd"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Jul 29 20:22:12 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Jul 30 11:27:18 2012 +0200"
      },
      "message": "uprobes: Don\u0027t recheck vma/f_mapping in write_opcode()\n\nwrite_opcode() rechecks valid_vma() and -\u003ef_mapping, this is\npointless. The caller, register_for_each_vma() or uprobe_mmap(),\nhas already done these checks under mmap_sem.\n\nTo clarify, uprobe_mmap() checks valid_vma() only, but we can\nrely on build_probe_list(vm_file-\u003ef_mapping-\u003ehost).\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar.vnet.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nLink: http://lkml.kernel.org/r/20120729182212.GA20304@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "0cda4c023132aa93f2dd94811061f812e88daf4c",
      "tree": "a8190d6f16124450a633eb22007c80cf25a0937f",
      "parents": [
        "e2d37cd213dcc0aeb3db4b37b9bd1710fe36fbf7"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.z.yan@intel.com",
        "time": "Fri Jun 15 14:31:33 2012 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Jun 18 12:13:21 2012 +0200"
      },
      "message": "perf: Introduce perf_pmu_migrate_context()\n\nOriginally from Peter Zijlstra. The helper migrates perf events\nfrom one cpu to another cpu.\n\nSigned-off-by: Zheng Yan \u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/1339741902-8449-5-git-send-email-zheng.z.yan@intel.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "e2d37cd213dcc0aeb3db4b37b9bd1710fe36fbf7",
      "tree": "90e769d4c07a5f7f895a4c7459d72caf5aec75b2",
      "parents": [
        "fbfc623f8231c8d8c78aab5841e9c6e5811ab638"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.z.yan@intel.com",
        "time": "Fri Jun 15 14:31:32 2012 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Jun 18 12:13:21 2012 +0200"
      },
      "message": "perf: Allow the PMU driver to choose the CPU on which to install events\n\nAllow the pmu-\u003eevent_init callback to change event-\u003ecpu, so the PMU driver\ncan choose the CPU on which to install events.\n\nSigned-off-by: Zheng Yan \u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/1339741902-8449-4-git-send-email-zheng.z.yan@intel.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "fbfc623f8231c8d8c78aab5841e9c6e5811ab638",
      "tree": "54883756f1b404f2232d4d5077219ea98c1fdbfd",
      "parents": [
        "4b4969b14490a4f65b572b8f180164181104b5e1"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.z.yan@intel.com",
        "time": "Fri Jun 15 14:31:31 2012 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Jun 18 12:13:20 2012 +0200"
      },
      "message": "perf: Avoid race between cpu hotplug and installing event\n\nperf_event_open() requires the cpu on which to install event is online,\nbut the cpu can go offline after perf_event_open checks that. Add a\nget_online_cpus()/put_online_cpus() pair to avoid the race.\n\nSigned-off-by: Zheng Yan \u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/1339741902-8449-3-git-send-email-zheng.z.yan@intel.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "d1ece0998eeb7b6543044f32b7d9bcbaf6dc294a",
      "tree": "bcbb3dddee8b5db83f07585370b1bd57f92296ac",
      "parents": [
        "76958a61e42fb6277a8431eb17e4bdb24176f1b7",
        "9c5da09d266ca9b32eb16cf940f8161d949c2fe5"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Jun 18 11:47:58 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Jun 18 11:47:58 2012 +0200"
      },
      "message": "Merge branch \u0027perf/urgent\u0027 into perf/core\n\nMerge in all fixes before applying more changes.\n\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "9c5da09d266ca9b32eb16cf940f8161d949c2fe5",
      "tree": "d5a8cc3e83ca92431fbb1235b068c9deb2c03c41",
      "parents": [
        "8ed9eac4769407a8f0b93e381a3bc3ae81fa014b"
      ],
      "author": {
        "name": "Salman Qazi",
        "email": "sqazi@google.com",
        "time": "Thu Jun 14 15:31:09 2012 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Jun 18 11:45:57 2012 +0200"
      },
      "message": "perf: Use css_tryget() to avoid propping up css refcount\n\nAn rmdir pushes css\u0027s ref count to zero.  However, if the associated\ndirectory is open at the time, the dentry ref count is non-zero.  If\nthe fd for this directory is then passed into perf_event_open, it\ndoes a css_get().  This bounces the ref count back up from zero.  This\nis a problem by itself.  But what makes it turn into a crash is the\nfact that we end up doing an extra dput, since we perform a dput\nwhen css_put sees the ref count go down to zero.\n\ncss_tryget() does not fall into that trap. So, we use that instead.\n\nReproduction test-case for the bug:\n\n #include \u003cunistd.h\u003e\n #include \u003csys/types.h\u003e\n #include \u003csys/stat.h\u003e\n #include \u003cfcntl.h\u003e\n #include \u003clinux/unistd.h\u003e\n #include \u003clinux/perf_event.h\u003e\n #include \u003cstring.h\u003e\n #include \u003cerrno.h\u003e\n #include \u003cstdio.h\u003e\n\n #define PERF_FLAG_PID_CGROUP    (1U \u003c\u003c 2)\n\n int perf_event_open(struct perf_event_attr *hw_event_uptr,\n                     pid_t pid, int cpu, int group_fd, unsigned long flags) {\n         return syscall(__NR_perf_event_open,hw_event_uptr, pid, cpu,\n                 group_fd, flags);\n }\n\n /*\n  * Directly poke at the perf_event bug, since it\u0027s proving hard to repro\n  * depending on where in the kernel tree.  what moved?\n  */\n int main(int argc, char **argv)\n {\n        int fd;\n        struct perf_event_attr attr;\n        memset(\u0026attr, 0, sizeof(attr));\n        attr.exclude_kernel \u003d 1;\n        attr.size \u003d sizeof(attr);\n        mkdir(\"/dev/cgroup/perf_event/blah\", 0777);\n        fd \u003d open(\"/dev/cgroup/perf_event/blah\", O_RDONLY);\n        perror(\"open\");\n        rmdir(\"/dev/cgroup/perf_event/blah\");\n        sleep(2);\n        perf_event_open(\u0026attr, fd, 0, -1,  PERF_FLAG_PID_CGROUP);\n        perror(\"perf_event_open\");\n        close(fd);\n        return 0;\n }\n\nSigned-off-by: Salman Qazi \u003csqazi@google.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nLink: http://lkml.kernel.org/r/20120614223108.1025.2503.stgit@dungbeetle.mtv.corp.google.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "e227051b13956b8f71c0abecc41ad351e64671c8",
      "tree": "04b4352771c3c75dbd4ecc0250a7215d0619439e",
      "parents": [
        "593609a59600c8377f311b300f14deacb155b9a4"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jun 15 17:44:01 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sat Jun 16 09:10:52 2012 +0200"
      },
      "message": "uprobes: Remove the unnecessary initialization in add_utask()\n\nTrivial cleanup. No need to nullify -\u003eactive_uprobe after\nkzalloc().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nLink: http://lkml.kernel.org/r/20120615154401.GA9633@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "593609a59600c8377f311b300f14deacb155b9a4",
      "tree": "28185f8e2a1b8efd3a39f51fc6ab6803420ead67",
      "parents": [
        "816c03fbabe64fa09f66fbb64e932081af381415"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jun 15 17:43:59 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sat Jun 16 09:10:49 2012 +0200"
      },
      "message": "uprobes: __copy_insn() needs \"loff_t offset\"\n\n1. __copy_insn() needs \"loff_t offset\", not \"unsigned long\",\n   to read the file.\n\n2. use pgoff_t for \"idx\" and remove the unnecessary typecast.\n\n3. fix the typo, \"\u0026\u003d\" is not what we want\n\n4. can\u0027t resist, rename off1 to off.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nAcked-by: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/20120615154359.GA9625@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "816c03fbabe64fa09f66fbb64e932081af381415",
      "tree": "3294289d5f51d7c6eae3ada88602e891c9edef3c",
      "parents": [
        "449d0d7c9fb87277175db34c009c70cb348004a8"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jun 15 17:43:55 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sat Jun 16 09:10:48 2012 +0200"
      },
      "message": "uprobes: Don\u0027t use loff_t for the valid virtual address\n\nloff_t looks confusing when it is used for the virtual address.\nChange map_info and install_breakpoint/remove_breakpoint paths\nto use \"unsigned long\".\n\nThe patch doesn\u0027t change vma_address(), it can\u0027t return \"long\"\nbecause it is used to verify the mapping. But probably this\nneeds some cleanups too.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Anton Arapov \u003canton@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nAcked-by: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/20120615154355.GA9622@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "449d0d7c9fb87277175db34c009c70cb348004a8",
      "tree": "90c1abe494cd40ccc05aa2a11c5da52714b4e168",
      "parents": [
        "d9c4a30e82614d43b55893a73f31e7284007ce82"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jun 15 17:43:53 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sat Jun 16 09:10:48 2012 +0200"
      },
      "message": "uprobes: Simplify the usage of uprobe-\u003epending_list\n\nuprobe-\u003epending_list is only used to create the temporary list,\nit has no meaning after we drop uprobes_mmap_hash(inode).\n\nNo need to initialize this node or remove it from tmp_list, and\nwe can use list_for_each_entry().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nLink: http://lkml.kernel.org/r/20120615154353.GA9614@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "d9c4a30e82614d43b55893a73f31e7284007ce82",
      "tree": "b877ed2338d27237e40b2587cdf9e6cd56fefe57",
      "parents": [
        "eb2bf57bee42c7565032f93adaa211e2c9fcc52c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jun 15 17:43:50 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sat Jun 16 09:10:47 2012 +0200"
      },
      "message": "uprobes: Move BUG_ON(UPROBE_SWBP_INSN_SIZE) from write_opcode() to install_breakpoint()\n\nwrite_opcode() ensures that UPROBE_SWBP_INSN doesn\u0027t cross the\npage boundary. This looks a bit confusing, the check does not\ndepend on vaddr and it is enough to do it only once right after\ninstall_breakpoint()-\u003earch_uprobe_analyze_insn().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nAcked-by: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/20120615154350.GA9611@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "eb2bf57bee42c7565032f93adaa211e2c9fcc52c",
      "tree": "98eb3ecffb5e8489b6a026788880e80f5f9a1a92",
      "parents": [
        "fc36f59565861af2e897225bc3782479a26c5d5a"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jun 15 17:43:47 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sat Jun 16 09:10:47 2012 +0200"
      },
      "message": "uprobes: No need to re-check vma_address() in write_opcode()\n\nwrite_opcode() is called by register_for_each_vma() and\nuprobe_mmap() paths. In both cases the caller has already\nverified this vaddr under mmap_sem, no need to re-check.\n\nNote also that this check is wrong anyway, we should not\ntruncate loff_t returned by vma_address() if we do not trust\nthis mapping.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nAcked-by: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/20120615154347.GA9604@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "fc36f59565861af2e897225bc3782479a26c5d5a",
      "tree": "3f156c0caa96a229e50017a600334d4ceeb3b3ae",
      "parents": [
        "d436615e60c386095dac4a9bf72b08868d2a7564"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jun 15 17:43:44 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sat Jun 16 09:10:46 2012 +0200"
      },
      "message": "uprobes: Copy_insn() should not return -ENOMEM if __copy_insn() fails\n\ncopy_insn() returns -ENOMEM if the first __copy_insn() fails,\nit should return the correct error code.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nAcked-by: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/20120615154344.GA9601@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "d436615e60c386095dac4a9bf72b08868d2a7564",
      "tree": "d69e29a80512f13cb1ce3f302cd865fd35709ddf",
      "parents": [
        "c5784de2b351fe871bb57487878f7fc7ec5b075c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jun 15 17:43:42 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sat Jun 16 09:10:45 2012 +0200"
      },
      "message": "uprobes: Copy_insn() shouldn\u0027t depend on mm/vma/vaddr\n\n1. copy_insn() doesn\u0027t need \"addr\", it can use uprobe-\u003eoffset.\n   Remove this argument.\n\n2. Change copy_insn/__copy_insn to accept \"struct file*\" instead\n   of vma.\n\ncopy_insn() is called only once and mm/vma/vaddr are random, it\nshouldn\u0027t depend on them.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nAcked-by: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/20120615154342.GA9598@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "c5784de2b351fe871bb57487878f7fc7ec5b075c",
      "tree": "4b73571e8fed9af9b6ad6a4cc7f355d0b104a5ea",
      "parents": [
        "7a5bfb66b07f22d2429db776da7bb8b57bfb5cff"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jun 15 17:43:39 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sat Jun 16 09:10:45 2012 +0200"
      },
      "message": "uprobes: Document uprobe_register() vs uprobe_mmap() race\n\nBecause the mind is treacherous and makes us forget we need to\nwrite stuff down.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nLink: http://lkml.kernel.org/r/20120615154339.GA9591@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "7a5bfb66b07f22d2429db776da7bb8b57bfb5cff",
      "tree": "aa6a419726f99052171f05b004db45692fef3315",
      "parents": [
        "268720903f87e0b84b161626c4447b81671b5d18"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jun 15 17:43:36 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sat Jun 16 09:10:44 2012 +0200"
      },
      "message": "uprobes: Change build_map_info() to try kmalloc(GFP_NOWAIT) first\n\nbuild_map_info() doesn\u0027t allocate the memory under i_mmap_mutex\nto avoid the deadlock with page reclaim. But it can try\nGFP_NOWAIT first, it should work in the likely case and thus we\nalmost never need the pre-alloc-and-retry path.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nLink: http://lkml.kernel.org/r/20120615154336.GA9588@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "268720903f87e0b84b161626c4447b81671b5d18",
      "tree": "295b7e51c3e59a9f1baeac80dda132b0d6011b44",
      "parents": [
        "c1914a0936f79ed0236f670122e06e36e4d332ee"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jun 15 17:43:33 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sat Jun 16 09:10:43 2012 +0200"
      },
      "message": "uprobes: Rework register_for_each_vma() to make it O(n)\n\nCurrently register_for_each_vma() is O(n ** 2) + O(n ** 3),\nevery time find_next_vma_info() \"restarts\" the\nvma_prio_tree_foreach() loop and each iteration rechecks the\nwhole try_list. This also means that try_list can grow\n\"indefinitely\" if register/unregister races with munmap/mmap\nactivity even if the number of mapping is bounded at any time.\n\nWith this patch register_for_each_vma() builds the list of\nmm/vaddr structures only once and does install_breakpoint() for\neach entry.\n\nWe do not care about the new mappings which can be created after\nbuild_map_info() drops mapping-\u003ei_mmap_mutex, uprobe_mmap()\nshould do its work.\n\nNote that we do not allocate map_info under i_mmap_mutex, this\ncan deadlock with page reclaim (but see the next patch). So we\nuse 2 lists, \"curr\" which we are going to return, and \"prev\"\nwhich holds the already allocated memory. The main loop deques\nthe entry from \"prev\" (initially it is empty), and if \"prev\"\nbecomes empty again it counts the number of entries we need to\npre-allocate outside of i_mmap_mutex.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nLink: http://lkml.kernel.org/r/20120615154333.GA9581@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "c1914a0936f79ed0236f670122e06e36e4d332ee",
      "tree": "965d8c31ffb45b57d83cf999cbc257ec724a5d47",
      "parents": [
        "5323ce71e4b4e1f188ebbc0cc7776885ea6c75fb"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jun 15 17:43:31 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sat Jun 16 09:10:43 2012 +0200"
      },
      "message": "uprobes: Install_breakpoint() should fail if is_swbp_insn() \u003d\u003d T\n\ninstall_breakpoint() returns -EEXIST if is_swbp_insn(orig_insn)\n\u003d\u003d T, the caller treats this code as success.\n\nThis is doubly wrong. The successful return should set\nUPROBE_COPY_INSN, but the real problem is that it shouldn\u0027t\nsucceed. If the probed insn is int3 the application should get\nSIGTRAP, this won\u0027t happen with uprobe.\n\nProbably we can fix this, we can add the UPROBE_SHARED_BP flag\nand teach handle_swbp/set_orig_insn to handle this case\ncorrectly. But this needs some complications and we have other\ninsns which can\u0027t be probed, lets make a simple fix for now.\n\nI think this needs a cleanup. UPROBE_COPY_INSN should die,\ncopy_insn() should be called by alloc_uprobe().\narch_uprobe_analyze_insn() depends on -\u003emm (ia32_compat) but it\nis called only once.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/20120615154331.GA9578@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "5323ce71e4b4e1f188ebbc0cc7776885ea6c75fb",
      "tree": "fd4f1445cd71a2a2cc0096f08a216e27bc3fc237",
      "parents": [
        "cc359d180fa9c25a4c1819f17e07a422d788353d"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jun 15 17:43:28 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sat Jun 16 09:10:42 2012 +0200"
      },
      "message": "uprobes: Write_opcode()-\u003e__replace_page() can race with try_to_unmap()\n\nwrite_opcode() gets old_page via get_user_pages() and then calls\n__replace_page() which assumes that this old_page is still\nmapped after pte_offset_map_lock().\n\nThis is not true if this old_page was already try_to_unmap()\u0027ed,\nand in this case everything __replace_page() does with old_page\nis wrong. Just for example, put_page() is not balanced.\n\nI think it is possible to teach __replace_page() to handle this\nunlikely case correctly, but this patch simply changes it to use\npage_check_address() and return -EAGAIN if it fails. The caller\nshould notice this error code and retry.\n\nNote: write_opcode() asks for the cleanups, I\u0027ll try to do this\nin a separate patch.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/20120615154328.GA9571@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "cc359d180fa9c25a4c1819f17e07a422d788353d",
      "tree": "98a70566b1bba99878990b9ac5143b3778bdff0b",
      "parents": [
        "ea131377148cdfe90641b42ae9aa5a6b3a4fa327"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jun 15 17:43:25 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sat Jun 16 09:10:42 2012 +0200"
      },
      "message": "uprobes: __copy_insn() should ensure a_ops-\u003ereadpage !\u003d NULL\n\n__copy_insn() blindly calls read_mapping_page(), this will crash\nthe kernel if -\u003ereadpage \u003d\u003d NULL, add the necessary check. For\nexample, hugetlbfs_aops-\u003ereadpage is NULL. Perhaps we should\nchange read_mapping_page() instead.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/20120615154325.GA9568@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "ea131377148cdfe90641b42ae9aa5a6b3a4fa327",
      "tree": "5f8f6063fe35affd268054b762dd18877dfa44ef",
      "parents": [
        "e2b297fcf17fc03734e93387fb8195c782286b35"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jun 15 17:43:22 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sat Jun 16 09:10:41 2012 +0200"
      },
      "message": "uprobes: Valid_vma() should reject VM_HUGETLB\n\n__replace_page() obviously can\u0027t work with the hugetlbfs\nmappings, uprobe_register() will likely crash the kernel. Change\nvalid_vma() to check VM_HUGETLB as well.\n\nAs for PageTransHuge() no need to worry, vma-\u003evm_file !\u003d NULL.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/20120615154322.GA9561@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "7eb9ba5ed312ec6ed9d22259c5da1acb7cf4bd29",
      "tree": "de796c5ae68abfbb951b0c474789848cbcfd788a",
      "parents": [
        "70ab7003dec58afeae7f5d681dfa309b3a259f03"
      ],
      "author": {
        "name": "Ananth N Mavinakayanahalli",
        "email": "ananth@in.ibm.com",
        "time": "Fri Jun 08 15:02:57 2012 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Fri Jun 08 12:22:27 2012 +0200"
      },
      "message": "uprobes: Pass probed vaddr to arch_uprobe_analyze_insn()\n\nOn RISC architectures like powerpc, instructions are fixed size.\nInstruction analysis on such platforms is just a matter of\n(insn % 4). Pass the vaddr at which the uprobe is to be inserted so\nthat arch_uprobe_analyze_insn() can flag misaligned registration\nrequests.\n\nSigned-off-by: Ananth N Mavinakaynahalli \u003cananth@in.ibm.com\u003e\nCc: michael@ellerman.id.au\nCc: antonb@thinktux.localdomain\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: benh@kernel.crashing.org\nCc: peterz@infradead.org\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Jim Keniston \u003cjkenisto@us.ibm.com\u003e\nCc: oleg@redhat.com\nCc: linuxppc-dev@lists.ozlabs.org\nLink: http://lkml.kernel.org/r/20120608093257.GG13409@in.ibm.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "778b032d96909690c19d84f8d17c13be65ed6f8e",
      "tree": "2f788c3843ca416969aeceda155c79994467bded",
      "parents": [
        "56bb4cf6475d702d2fb00fc641aa6441097c0330"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue May 29 21:30:08 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Wed Jun 06 17:22:22 2012 +0200"
      },
      "message": "uprobes: Kill uprobes_srcu/uprobe_srcu_id\n\nKill the no longer needed uprobes_srcu/uprobe_srcu_id code.\n\nIt doesn\u0027t really work anyway. synchronize_srcu() can only\nsynchronize with the code \"inside\" the\nsrcu_read_lock/srcu_read_unlock section, while\nuprobe_pre_sstep_notifier() does srcu_read_lock() _after_ we\nalready hit the breakpoint.\n\nI guess this probably works \"in practice\". synchronize_srcu() is\nslow and it implies synchronize_sched(), and the probed task\nenters the non- preemptible section at the start of exception\nhandler. Still this is not right at least in theory, and\ntask-\u003euprobe_srcu_id blows task_struct.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/20120529193008.GG8057@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "56bb4cf6475d702d2fb00fc641aa6441097c0330",
      "tree": "0be90e9cdb9d998e9ca795f12eb530b397435844",
      "parents": [
        "77fc4af1b59d12ab3b1467adf0a5204806853123"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue May 29 21:29:47 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Wed Jun 06 17:22:03 2012 +0200"
      },
      "message": "uprobes: Teach handle_swbp() to rely on \"is_swbp\" rather than uprobes_srcu\n\nCurrently handle_swbp() assumes that it can\u0027t race with\nunregister, so it roughly does:\n\n\tif (find_uprobe(vaddr))\n\t\tprocess_uprobe();\n\telse\n\t\tsend_sig(SIGTRAP);\n\nThis relies on the not-really-working uprobes_srcu code we are\ngoing to remove, see the next patch.\n\nWith this patch we rely on the result of\nis_swbp_at_addr(bp_vaddr) if find_uprobe() fails.\n\nIf is_swbp \u003d\u003d 1, then we hit the normal int3, we should send\nSIGTRAP.\n\nIf is_swbp \u003d\u003d 0, we raced with uprobe_unregister(), we simply\nrestart this insn again.\n\nThe \"difficult\" case is is_swbp \u003d\u003d -EFAULT, when we can\u0027t read\nthis memory. In this case I think we should restart too, and\nthis is more correct compared to the current code which sends\nSIGTRAP.\n\nIgnoring ENOMEM/etc from get_user_pages(), this can only happen\nif another thread unmaps this memory before find_active_uprobe()\ntakes mmap_sem. It would be better to pretend it was unmapped\nbefore this insn was executed, restart, and get SIGSEGV.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/20120529192947.GF8057@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "77fc4af1b59d12ab3b1467adf0a5204806853123",
      "tree": "0df96ddd6503d47d665e09edef76e3cd12b15b70",
      "parents": [
        "d790d34653ab20c74034902f5f0889bba807949a"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue May 29 21:29:28 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Wed Jun 06 17:21:48 2012 +0200"
      },
      "message": "uprobes: Change register_for_each_vma() to take mm-\u003emmap_sem for writing\n\nChange register_for_each_vma() to take mm-\u003emmap_sem for writing.\nThis is a bit unfortunate but hopefully not too bad, this is the\nslow path anyway.\n\nThis is needed to ensure that find_active_uprobe() can not race\nwith uprobe_register() which adds the new bp at the same\nbp_vaddr, after find_uprobe() fails and before\nis_swbp_at_addr_fast() checks the memory.\n\nIOW, this is needed to ensure that if find_active_uprobe()\nreturns NULL but is_swbp \u003d\u003d true, we can safely assume that it\nwas the \"normal\" int3 and we should send SIGTRAP.\n\nThere is another reason for this change. We are going to replace\nuprobes_state-\u003ecount with MMF_ flags set by register/unregister\nand cleared by find_active_uprobe(), and set/clear shouldn\u0027t\nrace with each other.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/20120529192928.GE8057@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "d790d34653ab20c74034902f5f0889bba807949a",
      "tree": "05d475d4e0f22a2ae0815c77eff5fbe2665d8fd8",
      "parents": [
        "3a9ea0520f38def4a3915b91f82455b749f07d88"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue May 29 21:29:14 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Wed Jun 06 17:15:24 2012 +0200"
      },
      "message": "uprobes: Teach find_active_uprobe() to provide the \"is_swbp\" info\n\nA separate patch to simplify the review, and for the\ndocumentation.\n\nThe patch adds another \"int *is_swbp\" argument to\nfind_active_uprobe(), so far its only caller doesn\u0027t use this\ninfo.\n\nWith this patch find_active_uprobe() additionally does:\n\n\t- if find_vma() + -\u003evm_start check fails, *is_swbp \u003d -EFAULT\n\n\t- otherwise, if valid_vma() + find_uprobe() fails, it holds\n\t  the result of is_swbp_at_addr(), can be negative too. The\n\t  latter is only possible if we raced with another thread\n\t  which did munmap/etc after we hit this bp.\n\nIOW. If find_active_uprobe(\u0026is_swbp) returns NULL, the caller\ncan look at is_swbp to figure out whether the current insn is bp\nor not, or detect the race with another thread if it is\nnegative.\n\nNote: I think that performance-wise this change is fine. This\nadds is_swbp_at_addr(), but only if we raced with\nuprobe_unregister() or if we hit the \"normal\" int3 but this mm\nhas uprobes as well. And even in this case the slow\nread_opcode() path is very unlikely, this insn recently\ntriggered do_int3(), __copy_from_user_inatomic() shouldn\u0027t fail\nin the likely case.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/20120529192914.GD8057@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "3a9ea0520f38def4a3915b91f82455b749f07d88",
      "tree": "810a4d5bb6f075497ad3b2cd94c120ae235e026f",
      "parents": [
        "a3d7bb47937b3a40b9f0c75655e97b3bb6407cbe"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue May 29 21:28:57 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Wed Jun 06 17:15:17 2012 +0200"
      },
      "message": "uprobes: Introduce find_active_uprobe() helper\n\nNo functional changes. Move the \"find uprobe\" code from\nhandle_swbp() to the new helper, find_active_uprobe().\n\nNote: with or without this change, the find-active-uprobe logic\nis not exactly right. We can race with another thread which\nunmaps the memory with the valid uprobe before we take\nmm-\u003emmap_sem. We can\u0027t find this uprobe simply because\nfind_vma() fails. In this case we wrongly assume that this trap\nwas not caused by uprobe and send the erroneous SIGTRAP. See the\nnext changes.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/20120529192857.GC8057@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "a3d7bb47937b3a40b9f0c75655e97b3bb6407cbe",
      "tree": "ac573bd042efa291c71c956930c81d80e79e4a69",
      "parents": [
        "c00b275043adc14d668f36266b890f0c53d46640"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue May 29 21:27:59 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Wed Jun 06 17:14:49 2012 +0200"
      },
      "message": "uprobes: Change read_opcode() to use FOLL_FORCE\n\nset_orig_insn()-\u003eread_opcode() should not fail if the probed\ntask did mprotect() after uprobe_register(), change it to use\nFOLL_FORCE. Without FOLL_WRITE this doesn\u0027t have any \"side\"\neffect but allows to read the !VM_READ memory.\n\nThere is another reason for this change, we are going to use\nis_swbp_at_addr() from handle_swbp() which can race with another\nthread doing mprotect().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/20120529192759.GB8057@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "c00b275043adc14d668f36266b890f0c53d46640",
      "tree": "cdb6db30f3f0d18049079d7a014f6561e056eb06",
      "parents": [
        "436d03faf6961b30e13b2d0967aea9d772d6cf44"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue May 29 21:27:44 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Wed Jun 06 17:13:59 2012 +0200"
      },
      "message": "uprobes: Optimize is_swbp_at_addr() for current-\u003emm\n\nChange is_swbp_at_addr() to try to avoid the costly\nread_opcode() if mm \u003d\u003d current-\u003emm, __copy_from_user_inatomic()\nshould succeed in the likely case.\n\nCurrently this optimization is not important, but we are going\nto add more is_swbp_at_addr(current-\u003emm) callers.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/20120529192744.GA8057@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "cb7225feec627e91d598198996429e9ee6804f8d",
      "tree": "15b755aadc5c3df60282eddbddc4a542d829ddf8",
      "parents": [
        "a23c4dc422cff7bd30f40f5dc7c9ac4a6339005a"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Thu May 31 14:51:44 2012 +0900"
      },
      "committer": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Thu May 31 14:01:00 2012 -0300"
      },
      "message": "perf: Remove duplicate invocation on perf_event_for_each\n\nThe @func callback was invoked twice for group leader when\nperf_event_for_each() called. It seems the commit 75f937f24bd9\n(\"perf_counter: Fix ctx-\u003emutex vs counter -\u003emutex inversion\") made the\nmistake during the change.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung.kim@lge.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/1338443506-25009-1-git-send-email-namhyung.kim@lge.com\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\n"
    },
    {
      "commit": "654443e20dfc0617231f28a07c96a979ee1a0239",
      "tree": "a0dc3f093eb13892539082e663607c34b4fc2d07",
      "parents": [
        "2c01e7bc46f10e9190818437e564f7e0db875ae9",
        "9cba26e66d09bf394ae5a739627a1dc8b7cae6f4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 24 11:39:34 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 24 11:39:34 2012 -0700"
      },
      "message": "Merge branch \u0027perf-uprobes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull user-space probe instrumentation from Ingo Molnar:\n \"The uprobes code originates from SystemTap and has been used for years\n  in Fedora and RHEL kernels.  This version is much rewritten, reviews\n  from PeterZ, Oleg and myself shaped the end result.\n\n  This tree includes uprobes support in \u0027perf probe\u0027 - but SystemTap\n  (and other tools) can take advantage of user probe points as well.\n\n  Sample usage of uprobes via perf, for example to profile malloc()\n  calls without modifying user-space binaries.\n\n  First boot a new kernel with CONFIG_UPROBE_EVENT\u003dy enabled.\n\n  If you don\u0027t know which function you want to probe you can pick one\n  from \u0027perf top\u0027 or can get a list all functions that can be probed\n  within libc (binaries can be specified as well):\n\n\t$ perf probe -F -x /lib/libc.so.6\n\n  To probe libc\u0027s malloc():\n\n\t$ perf probe -x /lib64/libc.so.6 malloc\n\tAdded new event:\n\tprobe_libc:malloc    (on 0x7eac0)\n\n  You can now use it in all perf tools, such as:\n\n\tperf record -e probe_libc:malloc -aR sleep 1\n\n  Make use of it to create a call graph (as the flat profile is going to\n  look very boring):\n\n\t$ perf record -e probe_libc:malloc -gR make\n\t[ perf record: Woken up 173 times to write data ]\n\t[ perf record: Captured and wrote 44.190 MB perf.data (~1930712\n\n\t$ perf report | less\n\n\t  32.03%            git  libc-2.15.so   [.] malloc\n\t                    |\n\t                    --- malloc\n\n\t  29.49%            cc1  libc-2.15.so   [.] malloc\n\t                    |\n\t                    --- malloc\n\t                       |\n\t                       |--0.95%-- 0x208eb1000000000\n\t                       |\n\t                       |--0.63%-- htab_traverse_noresize\n\n\t  11.04%             as  libc-2.15.so   [.] malloc\n\t                     |\n\t                     --- malloc\n\t                        |\n\n\t   7.15%             ld  libc-2.15.so   [.] malloc\n\t                     |\n\t                     --- malloc\n\t                        |\n\n\t   5.07%             sh  libc-2.15.so   [.] malloc\n\t                     |\n\t                     --- malloc\n\t                        |\n\t   4.99%  python-config  libc-2.15.so   [.] malloc\n\t          |\n\t          --- malloc\n\t             |\n\t   4.54%           make  libc-2.15.so   [.] malloc\n\t                   |\n\t                   --- malloc\n\t                      |\n\t                      |--7.34%-- glob\n\t                      |          |\n\t                      |          |--93.18%-- 0x41588f\n\t                      |          |\n\t                      |           --6.82%-- glob\n\t                      |                     0x41588f\n\n\t   ...\n\n  Or:\n\n\t$ perf report -g flat | less\n\n\t# Overhead        Command  Shared Object      Symbol\n\t# ........  .............  .............  ..........\n\t#\n\t  32.03%            git  libc-2.15.so   [.] malloc\n\t          27.19%\n\t              malloc\n\n\t  29.49%            cc1  libc-2.15.so   [.] malloc\n\t          24.77%\n\t              malloc\n\n\t  11.04%             as  libc-2.15.so   [.] malloc\n\t          11.02%\n\t              malloc\n\n\t   7.15%             ld  libc-2.15.so   [.] malloc\n\t           6.57%\n\t              malloc\n\n\t ...\n\n  The core uprobes design is fairly straightforward: uprobes probe\n  points register themselves at (inode:offset) addresses of\n  libraries/binaries, after which all existing (or new) vmas that map\n  that address will have a software breakpoint injected at that address.\n  vmas are COW-ed to preserve original content.  The probe points are\n  kept in an rbtree.\n\n  If user-space executes the probed inode:offset instruction address\n  then an event is generated which can be recovered from the regular\n  perf event channels and mmap-ed ring-buffer.\n\n  Multiple probes at the same address are supported, they create a\n  dynamic callback list of event consumers.\n\n  The basic model is further complicated by the XOL speedup: the\n  original instruction that is probed is copied (in an architecture\n  specific fashion) and executed out of line when the probe triggers.\n  The XOL area is a single vma per process, with a fixed number of\n  entries (which limits probe execution parallelism).\n\n  The API: uprobes are installed/removed via\n  /sys/kernel/debug/tracing/uprobe_events, the API is integrated to\n  align with the kprobes interface as much as possible, but is separate\n  to it.\n\n  Injecting a probe point is privileged operation, which can be relaxed\n  by setting perf_paranoid to -1.\n\n  You can use multiple probes as well and mix them with kprobes and\n  regular PMU events or tracepoints, when instrumenting a task.\"\n\nFix up trivial conflicts in mm/memory.c due to previous cleanup of\nunmap_single_vma().\n\n* \u0027perf-uprobes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (21 commits)\n  perf probe: Detect probe target when m/x options are absent\n  perf probe: Provide perf interface for uprobes\n  tracing: Fix kconfig warning due to a typo\n  tracing: Provide trace events interface for uprobes\n  tracing: Extract out common code for kprobes/uprobes trace events\n  tracing: Modify is_delete, is_return from int to bool\n  uprobes/core: Decrement uprobe count before the pages are unmapped\n  uprobes/core: Make background page replacement logic account for rss_stat counters\n  uprobes/core: Optimize probe hits with the help of a counter\n  uprobes/core: Allocate XOL slots for uprobes use\n  uprobes/core: Handle breakpoint and singlestep exceptions\n  uprobes/core: Rename bkpt to swbp\n  uprobes/core: Make order of function parameters consistent across functions\n  uprobes/core: Make macro names consistent\n  uprobes: Update copyright notices\n  uprobes/core: Move insn to arch specific structure\n  uprobes/core: Remove uprobe_opcode_sz\n  uprobes/core: Make instruction tables volatile\n  uprobes: Move to kernel/events/\n  uprobes/core: Clean up, refactor and improve the code\n  ...\n"
    },
    {
      "commit": "ab0cce560ef177bdc7a8f73e9962be9d829a7b2c",
      "tree": "d9875b21c42862201624eb7d9ea2c36f4ea4035d",
      "parents": [
        "26252ea675663d1bc6747125fcaa2b7cc4ed8a03"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "jolsa@redhat.com",
        "time": "Wed May 23 13:13:02 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Wed May 23 17:40:51 2012 +0200"
      },
      "message": "Revert \"sched, perf: Use a single callback into the scheduler\"\n\nThis reverts commit cb04ff9ac424 (\"sched, perf: Use a single\ncallback into the scheduler\").\n\nBefore this change was introduced, the process switch worked\nlike this (wrt. to perf event schedule):\n\n     schedule (prev, next)\n       - schedule out all perf events for prev\n       - switch to next\n       - schedule in all perf events for current (next)\n\nAfter the commit, the process switch looks like:\n\n     schedule (prev, next)\n       - schedule out all perf events for prev\n       - schedule in all perf events for (next)\n       - switch to next\n\nThe problem is, that after we schedule perf events in, the pmu\nis enabled and we can receive events even before we make the\nswitch to next - so \"current\" still being prev process (event\nSAMPLE data are filled based on the value of the \"current\"\nprocess).\n\nThats exactly what we see for test__PERF_RECORD test. We receive\nSAMPLES with PID of the process that our tracee is scheduled\nfrom.\n\nDiscussed with Peter Zijlstra:\n\n \u003e Bah!, yeah I guess reverting is the right thing for now. Sad\n \u003e though.\n \u003e\n \u003e So by having the two hooks we have a black-spot between them\n \u003e where we receive no events at all, this black-spot covers the\n \u003e hand-over of current and we thus don\u0027t receive the \u0027wrong\u0027\n \u003e events.\n \u003e\n \u003e I rather liked we could do away with both that black-spot and\n \u003e clean up the code a little, but apparently people rely on it.\n\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: acme@redhat.com\nCc: paulus@samba.org\nCc: cjashfor@linux.vnet.ibm.com\nCc: fweisbec@gmail.com\nCc: eranian@google.com\nLink: http://lkml.kernel.org/r/20120523111302.GC1638@m.brq.redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "16ee6576e25b83806d26eb771138249fcfb5eddc",
      "tree": "7c717b80f28b5c59ba673dc00f2ca9bd0fc068d4",
      "parents": [
        "16fa7e8200fb9066b77a3f27cbed8e4a9fc71998",
        "9b63776fa3ca96c4ecda76f6fa947b7b0add66ac"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Fri May 18 13:13:33 2012 -0300"
      },
      "committer": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Fri May 18 13:13:33 2012 -0300"
      },
      "message": "Merge remote-tracking branch \u0027tip/perf/urgent\u0027 into perf/core\n\nMerge reason: We are going to queue up a dependent patch:\n\n\"perf tools: Move parse event automated tests to separated object\"\n\nThat depends on:\n\ncommit e7c72d8\nperf tools: Add \u0027G\u0027 and \u0027H\u0027 modifiers to event parsing\n\nConflicts:\n\ttools/perf/builtin-stat.c\n\nConflicted with the recent \u0027perf_target\u0027 patches when checking the\nresult of perf_evsel open routines to see if a retry is needed to cope\nwith older kernels where the exclude guest/host perf_event_attr bits\nwere not used.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\n"
    },
    {
      "commit": "9cba26e66d09bf394ae5a739627a1dc8b7cae6f4",
      "tree": "f03743d576a0c7826b9921ad47e70370ebe80a22",
      "parents": [
        "ec83db0f78cd44c3b586ec1c3a348d1a8a389797",
        "73eff9f56e15598c8399c0b86899fd889b97f085"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon May 14 14:43:40 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon May 14 14:43:40 2012 +0200"
      },
      "message": "Merge branch \u0027perf/uprobes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/uprobes\n"
    },
    {
      "commit": "cb04ff9ac424d0e689d9b612e9f73cb443ab4b7e",
      "tree": "7335f4ca82dc0366ffbf9dc8de5396259213435a",
      "parents": [
        "8b1e13638d465863572c8207a5cfceeef0cf0441"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue May 08 18:56:04 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Wed May 09 15:23:17 2012 +0200"
      },
      "message": "sched, perf: Use a single callback into the scheduler\n\nWe can easily use a single callback for both sched-in and sched-out. This\nreduces the code footprint in the scheduler path as well as removes\nthe PMU black spot otherwise present between the out and in callback.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/n/tip-o56ajxp1edwqg6x9d31wb805@git.kernel.org\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "fd0d000b2c34aa43d4e92dcf0dfaeda7e123008a",
      "tree": "8b81831cf37f1be6dd3cc9be772952d5c835a550",
      "parents": [
        "c75841a398d667d9968245b9519d93cedbfb4780"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Apr 02 20:19:08 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Wed May 09 15:23:12 2012 +0200"
      },
      "message": "perf: Pass last sampling period to perf_sample_data_init()\n\nWe always need to pass the last sample period to\nperf_sample_data_init(), otherwise the event distribution will be\nwrong. Thus, modifiyng the function interface with the required period\nas argument. So basically a pattern like this:\n\n        perf_sample_data_init(\u0026data, ~0ULL);\n        data.period \u003d event-\u003ehw.last_period;\n\nwill now be like that:\n\n        perf_sample_data_init(\u0026data, ~0ULL, event-\u003ehw.last_period);\n\nAvoids unininitialized data.period and simplifies code.\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/1333390758-10893-3-git-send-email-robert.richter@amd.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    }
  ],
  "next": "33b07b8be7f0e1e8e4184e3473d71f174e4b0641"
}
