1. 12 Jul, 2018 1 commit
  2. 11 Jul, 2018 1 commit
  3. 10 Jul, 2018 6 commits
  4. 09 Jul, 2018 1 commit
  5. 08 Jul, 2018 1 commit
  6. 06 Jul, 2018 1 commit
  7. 02 Jul, 2018 1 commit
  8. 01 Jul, 2018 2 commits
    • Paul Chaignon's avatar
      Fix license recognition on GitHub.com · a1b1f413
      Paul Chaignon authored
      The second file with the license information, COPYRIGHT.txt, contains
      the same information as LICENSE.txt, expect for the license's text.
      However, it prevents Licensee, the tool used by GitHub to detect
      licenses, from working properly as it doesn't know which file to take
      into account.
      a1b1f413
    • Paul Chaignon's avatar
      tools: remove unnecessary calls to bpf_probe_read · 8d78edd8
      Paul Chaignon authored
      Most of these calls have been rendered useless by a9f96c02 ("Recognize
      context member dereferences despite array accesses (#1828)").
      8d78edd8
  9. 28 Jun, 2018 3 commits
  10. 27 Jun, 2018 3 commits
  11. 26 Jun, 2018 3 commits
    • Lakshmipathi's avatar
      Fedora-28 install step (#1857) · 293938d8
      Lakshmipathi authored
      Ensure dnf point to correct  package name.
      293938d8
    • Teng Qin's avatar
      Unify and improve C++'s USDT implementation (#1841) · 8265aca7
      Teng Qin authored
      * Add interface to Probe's getargs call
      
      This commit allows the Probe instance to generate argument for arbitary
      probe function
      
      * Refactor C++ USDT implementation
      
      This commit makes C++ USDT implementation uses the common USDT::Context
      and USDT::Probe logic
      
      * Add test case for C++ USDT API
      
      * Improve FollyRequestContextSwitch example
      8265aca7
    • yonghong-song's avatar
      fix a bug in tracepoint struct rewriter (#1856) · c2e2a26b
      yonghong-song authored
      Fix issue #1853.
      
      Commit 7c489469 ("adjust tracepoint field type
      based on size") tried to fix the tracepoint format
      descrepancy between declared type and actual size is 8.
      The type has to be promoted to match the size.
      
      The commit introduced a bug if the field is an array.
      For exmaple, block:block_rq_complete tracepoint has
      field rwbs:
        field:char rwbs[8];	offset:32;	size:8;	signed:1;
      
      The current implementation will incorrectly translate it
      into
        s64 rwbs[8];
      since it considers the type is "char".
      
      This patch fixed this issue by checking the field name
      and if it is an array, rewriting will be skipped.
      Signed-off-by: default avatarYonghong Song <yhs@fb.com>
      c2e2a26b
  12. 25 Jun, 2018 2 commits
  13. 22 Jun, 2018 2 commits
  14. 21 Jun, 2018 5 commits
  15. 20 Jun, 2018 1 commit
    • Oriol Arcas's avatar
      Added new footer.h header where BPF_LICENSE is set if not defined · 9aab22ec
      Oriol Arcas authored
      The helpers.h header specifies the BPF program license as 'GPL'.
      However, other GPL-compatible licenses are possible (e.g., Dual BSD/GPL)
      or even proprietary licenses (e.g., cachetop can run with a proprietary
      license).
      
      With this commit, the user can specify a BPF_LICENSE macro in the source
      code:
      
        #define BPF_LICENSE Custom license
      
      Note it supports multiple words and the absence of quotes. If the BPF
      doesn't have a GPL-compatible license and it uses any GPL-only helpers,
      the kernel will reject it with:
      
        cannot call GPL only function from proprietary program
      
      If no license is specified, it will fall back to GPL (the current
      behavior before this commit) so that the BCC tools and examples remain
      usable.
      
      Updated the documentation with BPF_LICENSE description, licensing error
      description, and licenses for each helper.
      Signed-off-by: default avatarOriol Arcas <oriol@starflownetworks.com>
      9aab22ec
  16. 19 Jun, 2018 2 commits
    • Joel's avatar
      criticalstat: Fix check for invalid stacks (#1839) · d601984f
      Joel authored
      While changing the stack_id to be signed, I accidentally screwed the
      check for an invalid stack_id. Some reason I didn't catch this even in
      my tests. This patch fixes the issue (thanks Erick Reyes for reporting).
      
      By the way, one weirdness I see is invalid stack_id is printed as -17
      when I print it in python.
      
      When I do bpf_trace_printk, I get these ids:
      root@localhost:/# cat /d/tracing/trace_pipe
                <idle>-0     [003] .n.3   942.100225: : sid: 15
                <idle>-0     [002] .n.3   943.140393: : sid: 15
           kworker/3:3-1798  [003] ...3   943.422768: : sid: 6
           kworker/3:3-1798  [003] ...3   943.423419: : sid: 6
           kworker/3:3-1798  [003] ...3   943.423967: : sid: 6
         BootAnimation-650   [003] .n.3   949.840268: : sid: 8
                <idle>-0     [003] .n.3   952.360226: : sid: 15
                <idle>-0     [000] ...3   953.100116: : sid: 11
          Binder:571_3-1469  [000] .n.3   953.513328: : sid: 3
                <idle>-0     [003] .n.3   954.760215: : sid: 15
          Binder:571_3-1469  [000] ...3   955.460271: : sid: 18446744073709551599
                <idle>-0     [003] .n.3   957.420275: : sid: 15
       irq/296-cs35l36-662   [000] ...3   958.422890: : sid: 5
           kworker/1:3-1729  [001] ...3   960.485247: : sid: 18446744073709551599
           kworker/1:3-1729  [001] ...3   960.485888: : sid: 18446744073709551599
      
      As an equivalent, when I do a print of the stack_id from the python
      code, I get:
      stack_id 15
      stack_id 15
      stack_id 6
      stack_id 6
      stack_id 6
      stack_id 8
      stack_id 15
      stack_id 11
      stack_id 3
      stack_id 15
      stack_id -17
      stack_id 15
      stack_id 5
      stack_id -17
      stack_id -17
      
      This isn't a big deal since the valid stack_ids match, but still
      1.8446744e+19 is -1 in 64-bit speak. So I do find that odd.
      Reported-by: default avatarErick Reyes <erickreyes@google.com>
      Signed-off-by: default avatarJoel Fernandes (Google) <joel@joelfernandes.org>
      d601984f
    • Joel's avatar
      bcc: criticalstat: Add an atomic critical section tracer (#1801) · 0b813f80
      Joel authored
      This tool detects code sections in the kernel where IRQs or preemption
      are disabled for a user-specified amount of time.
      
      Requires a kernel built with CONFIG_DEBUG_PREEMPT and
      CONFIG_PREEMPTIRQ_EVENTS.
      Signed-off-by: default avatarJoel Fernandes <joel@joelfernandes.org>
      0b813f80
  17. 18 Jun, 2018 1 commit
  18. 17 Jun, 2018 3 commits
    • yonghong-song's avatar
      Fix external pointer propagation in nested dereferences (#1837) · d17d5a8f
      yonghong-song authored
      * Fix external pointer propagation in nested dereferences
      
      and fix the count of indirections for addrof of member dereferences
      (&A->b).
      
      In nested dereferences, a dereference of an external pointer may give
      a new external pointer.  For example, if A is an external pointer,
      then *A and A->b should also be considered as external pointers when
      appropriate (e.g., in **A or *(A->b)).
      
      In addition, a member dereference is a dereference, so we need to
      count it when counting the number of indirections in ProbeChecker.
      If we don't, *(&A->b) won't be rewritten correctly as &A->b will be
      considered a pointer to an external pointer.
      
      * Tests for the count of indirections in nested dereferences
      d17d5a8f
    • yonghong-song's avatar
      avoid probe rewriting of p->m in &(p->m) (#1831) · 24581968
      yonghong-song authored
      Fix issue #1830.
      
      After the rewrite, the code approximately becomes
        &({type _val; bpf_probe_read(&_val, sizeof(_val), &(p->m)); _val)
      
      Firstly the rewriting is really unnecessary, and secondly
      the compilation will fail since the addressOf cannot take address
      of the rvalue _val.
      
      C standard, however, allows the addressOf operand array subscript
      expression, e.g.,
        &({type _val; bpf_probe_read(&_val, sizeof(_val), &(p->m)); _val)[0]
      
      This patch intends to fix the problem by avoiding
      the rewriting in the first place of addrressOf simple member expression.
      It still permits addressOf the array subscript expression.
      Signed-off-by: default avatarYonghong Song <yhs@fb.com>
      24581968
    • Paul Chaignon's avatar
      Fix nested dereference rewrites (#1835) · fa7508de
      Paul Chaignon authored
      * Fix nested rewrites dereferences
      
      When the rewriter meets a dereference of a member dereference it
      fails to properly rewrite them into calls to bpf_probe_read.  The
      reason is that Clang is unable to track the position of rewritten
      text, but we can accommodate this by inserting text around the
      dereference instead of completely rewriting it.  We are already
      doing that for member dereference, but not for simple dereference.
      
      * Test for the rewrite of nested dereferences
      fa7508de
  19. 14 Jun, 2018 1 commit
    • Paul Chaignon's avatar
      Recognize context member dereferences despite array accesses (#1828) · a9f96c02
      Paul Chaignon authored
      * Skip instead of bailing out if MemberExpr is not rewritable
      
      * Recognize context member dereferences despite array accesses
      
      For example, the rewriter should recognize, in the following, that
      prev is an external pointer retrieved from the context pointer,
      despite the access to the second element of the args array.
      
      struct task_struct *prev = (struct task_struct *)ctx->args[1];
      
      The same could be done for the translation of member dereferences to
      bpf_probe_read calls, but that would be a little bit more complex (to
      retrieve the correct base) and there's currently no tool that would
      benefit from it.
      
      * Test for the recognition of ext ptrs from context array
      
      * tools: remove unnecessary bpf_probe_read calls
      
      5d656bc7 made this calls unnecessary.
      a9f96c02