1. 09 Sep, 2016 2 commits
    • Bjorn Andersson's avatar
      rpmsg: Clean up rpmsg device vs channel naming · 92e1de51
      Bjorn Andersson authored
      The rpmsg device representing struct is called rpmsg_channel and the
      variable name used throughout is rpdev, with the communication happening
      on endpoints it's clearer to just call this a "device" in a public API.
      Signed-off-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
      92e1de51
    • Bjorn Andersson's avatar
      rpmsg: rpmsg_send() operations takes rpmsg_endpoint · 2a48d732
      Bjorn Andersson authored
      The rpmsg_send() operations has been taking a rpmsg_device, but this
      forces users of secondary rpmsg_endpoints to use the rpmsg_sendto()
      interface - by extracting source and destination from the given data
      structures. If we instead pass the rpmsg_endpoint to these functions a
      service can use rpmsg_sendto() to respond to messages, even on secondary
      endpoints.
      
      In addition this would allow us to support operations on multiple
      channels in future backends that does not support off-channel
      operations.
      Signed-off-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
      2a48d732
  2. 13 Aug, 2016 1 commit
  3. 04 Aug, 2016 4 commits
  4. 26 Jul, 2016 2 commits
    • Sargun Dhillon's avatar
      samples/bpf: Add test/example of using bpf_probe_write_user bpf helper · cf9b1199
      Sargun Dhillon authored
      This example shows using a kprobe to act as a dnat mechanism to divert
      traffic for arbitrary endpoints. It rewrite the arguments to a syscall
      while they're still in userspace, and before the syscall has a chance
      to copy the argument into kernel space.
      
      Although this is an example, it also acts as a test because the mapped
      address is 255.255.255.255:555 -> real address, and that's not a legal
      address to connect to. If the helper is broken, the example will fail
      on the intermediate steps, as well as the final step to verify the
      rewrite of userspace memory succeeded.
      Signed-off-by: default avatarSargun Dhillon <sargun@sargun.me>
      Cc: Alexei Starovoitov <ast@kernel.org>
      Cc: Daniel Borkmann <daniel@iogearbox.net>
      Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cf9b1199
    • Sargun Dhillon's avatar
      bpf: Add bpf_probe_write_user BPF helper to be called in tracers · 96ae5227
      Sargun Dhillon authored
      This allows user memory to be written to during the course of a kprobe.
      It shouldn't be used to implement any kind of security mechanism
      because of TOC-TOU attacks, but rather to debug, divert, and
      manipulate execution of semi-cooperative processes.
      
      Although it uses probe_kernel_write, we limit the address space
      the probe can write into by checking the space with access_ok.
      We do this as opposed to calling copy_to_user directly, in order
      to avoid sleeping. In addition we ensure the threads's current fs
      / segment is USER_DS and the thread isn't exiting nor a kernel thread.
      
      Given this feature is meant for experiments, and it has a risk of
      crashing the system, and running programs, we print a warning on
      when a proglet that attempts to use this helper is installed,
      along with the pid and process name.
      Signed-off-by: default avatarSargun Dhillon <sargun@sargun.me>
      Cc: Alexei Starovoitov <ast@kernel.org>
      Cc: Daniel Borkmann <daniel@iogearbox.net>
      Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      96ae5227
  5. 21 Jul, 2016 2 commits
  6. 20 Jul, 2016 2 commits
    • Brenden Blanco's avatar
      bpf: add sample for xdp forwarding and rewrite · 764cbcce
      Brenden Blanco authored
      Add a sample that rewrites and forwards packets out on the same
      interface. Observed single core forwarding performance of ~10Mpps.
      
      Since the mlx4 driver under test recycles every single packet page, the
      perf output shows almost exclusively just the ring management and bpf
      program work. Slowdowns are likely occurring due to cache misses.
      Signed-off-by: default avatarBrenden Blanco <bblanco@plumgrid.com>
      Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      764cbcce
    • Brenden Blanco's avatar
      Add sample for adding simple drop program to link · 86af8b41
      Brenden Blanco authored
      Add a sample program that only drops packets at the BPF_PROG_TYPE_XDP_RX
      hook of a link. With the drop-only program, observed single core rate is
      ~20Mpps.
      
      Other tests were run, for instance without the dropcnt increment or
      without reading from the packet header, the packet rate was mostly
      unchanged.
      
      $ perf record -a samples/bpf/xdp1 $(</sys/class/net/eth0/ifindex)
      proto 17:   20403027 drops/s
      
      ./pktgen_sample03_burst_single_flow.sh -i $DEV -d $IP -m $MAC -t 4
      Running... ctrl^C to stop
      Device: eth4@0
      Result: OK: 11791017(c11788327+d2689) usec, 59622913 (60byte,0frags)
        5056638pps 2427Mb/sec (2427186240bps) errors: 0
      Device: eth4@1
      Result: OK: 11791012(c11787906+d3106) usec, 60526944 (60byte,0frags)
        5133311pps 2463Mb/sec (2463989280bps) errors: 0
      Device: eth4@2
      Result: OK: 11791019(c11788249+d2769) usec, 59868091 (60byte,0frags)
        5077431pps 2437Mb/sec (2437166880bps) errors: 0
      Device: eth4@3
      Result: OK: 11795039(c11792403+d2636) usec, 59483181 (60byte,0frags)
        5043067pps 2420Mb/sec (2420672160bps) errors: 0
      
      perf report --no-children:
       26.05%  ksoftirqd/0  [mlx4_en]         [k] mlx4_en_process_rx_cq
       17.84%  ksoftirqd/0  [mlx4_en]         [k] mlx4_en_alloc_frags
        5.52%  ksoftirqd/0  [mlx4_en]         [k] mlx4_en_free_frag
        4.90%  swapper      [kernel.vmlinux]  [k] poll_idle
        4.14%  ksoftirqd/0  [kernel.vmlinux]  [k] get_page_from_freelist
        2.78%  ksoftirqd/0  [kernel.vmlinux]  [k] __free_pages_ok
        2.57%  ksoftirqd/0  [kernel.vmlinux]  [k] bpf_map_lookup_elem
        2.51%  swapper      [mlx4_en]         [k] mlx4_en_process_rx_cq
        1.94%  ksoftirqd/0  [kernel.vmlinux]  [k] percpu_array_map_lookup_elem
        1.45%  swapper      [mlx4_en]         [k] mlx4_en_alloc_frags
        1.35%  ksoftirqd/0  [kernel.vmlinux]  [k] free_one_page
        1.33%  swapper      [kernel.vmlinux]  [k] intel_idle
        1.04%  ksoftirqd/0  [mlx4_en]         [k] 0x000000000001c5c5
        0.96%  ksoftirqd/0  [mlx4_en]         [k] 0x000000000001c58d
        0.93%  ksoftirqd/0  [mlx4_en]         [k] 0x000000000001c6ee
        0.92%  ksoftirqd/0  [mlx4_en]         [k] 0x000000000001c6b9
        0.89%  ksoftirqd/0  [kernel.vmlinux]  [k] __alloc_pages_nodemask
        0.83%  ksoftirqd/0  [mlx4_en]         [k] 0x000000000001c686
        0.83%  ksoftirqd/0  [mlx4_en]         [k] 0x000000000001c5d5
        0.78%  ksoftirqd/0  [mlx4_en]         [k] mlx4_alloc_pages.isra.23
        0.77%  ksoftirqd/0  [mlx4_en]         [k] 0x000000000001c5b4
        0.77%  ksoftirqd/0  [kernel.vmlinux]  [k] net_rx_action
      
      machine specs:
       receiver - Intel E5-1630 v3 @ 3.70GHz
       sender - Intel E5645 @ 2.40GHz
       Mellanox ConnectX-3 @40G
      Signed-off-by: default avatarBrenden Blanco <bblanco@plumgrid.com>
      Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      86af8b41
  7. 19 Jul, 2016 1 commit
  8. 14 Jul, 2016 3 commits
  9. 08 Jul, 2016 2 commits
  10. 07 Jul, 2016 1 commit
    • Olof Johansson's avatar
      samples/seccomp: Add standalone config option · f6041c1d
      Olof Johansson authored
      Add a separate Kconfig option for SAMPLES_SECCOMP.
      
      Main reason for this is that, just like other samples, it's forced to
      be a module.
      
      Without this, since the sample is a target only controlled by
      CONFIG_SECCOMP_FILTER, the samples will be built before include files are
      put in place properly. For example, from an arm64 allmodconfig built with
      "make -sk -j 32" (without specific target), the following happens:
      
        samples/seccomp/bpf-fancy.c:13:27: fatal error: linux/seccomp.h: No such file or directory
        samples/seccomp/bpf-helper.h:20:50: fatal error: linux/seccomp.h: No such file or directory
        samples/seccomp/dropper.c:20:27: fatal error: linux/seccomp.h: No such file or directory
        samples/seccomp/bpf-direct.c:21:27: fatal error: linux/seccomp.h: No such file or directory
      
      So, just stick to the same format as other samples.
      Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
      Signed-off-by: default avatarKees Cook <keescook@chromium.org>
      f6041c1d
  11. 04 Jul, 2016 1 commit
  12. 01 Jul, 2016 1 commit
    • Martin KaFai Lau's avatar
      cgroup: bpf: Add an example to do cgroup checking in BPF · a3f74617
      Martin KaFai Lau authored
      test_cgrp2_array_pin.c:
      A userland program that creates a bpf_map (BPF_MAP_TYPE_GROUP_ARRAY),
      pouplates/updates it with a cgroup2's backed fd and pins it to a
      bpf-fs's file.  The pinned file can be loaded by tc and then used
      by the bpf prog later.  This program can also update an existing pinned
      array and it could be useful for debugging/testing purpose.
      
      test_cgrp2_tc_kern.c:
      A bpf prog which should be loaded by tc.  It is to demonstrate
      the usage of bpf_skb_in_cgroup.
      
      test_cgrp2_tc.sh:
      A script that glues the test_cgrp2_array_pin.c and
      test_cgrp2_tc_kern.c together.  The idea is like:
      1. Load the test_cgrp2_tc_kern.o by tc
      2. Use test_cgrp2_array_pin.c to populate a BPF_MAP_TYPE_CGROUP_ARRAY
         with a cgroup fd
      3. Do a 'ping -6 ff02::1%ve' to ensure the packet has been
         dropped because of a match on the cgroup
      
      Most of the lines in test_cgrp2_tc.sh is the boilerplate
      to setup the cgroup/bpf-fs/net-devices/netns...etc.  It is
      not bulletproof on errors but should work well enough and
      give enough debug info if things did not go well.
      Signed-off-by: default avatarMartin KaFai Lau <kafai@fb.com>
      Cc: Alexei Starovoitov <ast@fb.com>
      Cc: Daniel Borkmann <daniel@iogearbox.net>
      Cc: Tejun Heo <tj@kernel.org>
      Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a3f74617
  13. 25 Jun, 2016 1 commit
  14. 20 Jun, 2016 1 commit
    • Steven Rostedt (Red Hat)'s avatar
      tracing: Add trace_printk sample code · aad108aa
      Steven Rostedt (Red Hat) authored
      Add sample code to test trace_printk(). The trace_printk() functions should
      never be used in production code. This makes testing it a bit more
      difficult. Having a sample module that can test use cases of trace_printk()
      can help out.
      
      Currently it just tests trace_printk() where it will be converted into:
      
       trace_bputs()
       trace_puts()
       trace_bprintk()
      
      as well as staying as the normal _trace_printk().
      
      It also tests its use in interrupt context as that will test the auxilery
      buffers.
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      aad108aa
  15. 21 May, 2016 3 commits
  16. 09 May, 2016 1 commit
    • Arnd Bergmann's avatar
      [media] samples: v4l: from Documentation to samples directory · 0185f850
      Arnd Bergmann authored
      With the new autoksyms support, we can run into a situation where
      the v4l pci skeleton module is the only one using some exported
      symbols that get dropped because they are never referenced by
      the kernel otherwise, causing a build problem:
      
      ERROR: "vb2_dma_contig_memops" [Documentation/video4linux/v4l2-pci-skeleton.ko] undefined!
      ERROR: "vb2_dma_contig_init_ctx_attrs" [Documentation/video4linux/v4l2-pci-skeleton.ko] undefined!
      ERROR: "v4l2_match_dv_timings" [Documentation/video4linux/v4l2-pci-skeleton.ko] undefined!
      ERROR: "v4l2_find_dv_timings_cap" [Documentation/video4linux/v4l2-pci-skeleton.ko] undefined!
      ERROR: "v4l2_valid_dv_timings" [Documentation/video4linux/v4l2-pci-skeleton.ko] undefined!
      ERROR: "v4l2_enum_dv_timings_cap" [Documentation/video4linux/v4l2-pci-skeleton.ko] undefined!
      ERROR: "vb2_dma_contig_cleanup_ctx" [Documentation/video4linux/v4l2-pci-skeleton.ko] undefined!
      
      Specifically, we do look in the samples directory for users of
      symbols, but not the Documentation directory.
      
      This solves the build problem by moving the connector sample into
      the same directory as the other samples.
      
      Fixes: 23121ca2 ("kbuild: create/adjust generated/autoksyms.h")
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      0185f850
  17. 06 May, 2016 4 commits
  18. 29 Apr, 2016 5 commits
  19. 28 Apr, 2016 3 commits