20 May, 2016

1 commit

  • Pull Documentation updates from Jon Corbet:
    "A bit busier this time around.

    The most interesting thing (IMO) this time around is some beginning
    infrastructural work to allow documents to be written using
    restructured text. Maybe someday, in a galaxy far far away, we'll be
    able to eliminate the DocBook dependency and have a much better
    integrated set of kernel docs. Someday.

    Beyond that, there's a new document on security hardening from Kees,
    the movement of some sample code over to samples/, a number of
    improvements to the serial docs from Geert, and the usual collection
    of corrections, typo fixes, etc"

    * tag 'docs-for-linus' of git://git.lwn.net/linux: (55 commits)
    doc: self-protection: provide initial details
    serial: doc: Use port->state instead of info
    serial: doc: Always refer to tty_port->mutex
    Documentation: vm: Spelling s/paltform/platform/g
    Documentation/memcg: update kmem limit doc as codes behavior
    docproc: print a comment about autogeneration for rst output
    docproc: add support for reStructuredText format via --rst option
    docproc: abstract terminating lines at first space
    docproc: abstract docproc directive detection
    docproc: reduce unnecessary indentation
    docproc: add variables for subcommand and filename
    kernel-doc: use rst C domain directives and references for types
    kernel-doc: produce RestructuredText output
    kernel-doc: rewrite usage description, remove duplicated comments
    Doc: correct the location of sysrq.c
    Documentation: fix common spelling mistakes
    samples: v4l: from Documentation to samples directory
    samples: connector: from Documentation to samples directory
    Documentation: xillybus: fix spelling mistake
    Documentation: x86: fix spelling mistakes
    ...

    Linus Torvalds
     

19 May, 2016

2 commits

  • Pull rpmsg updates from Bjorn Andersson:
    "Refactor rpmsg module registration to follow other subsystems; by
    introduction of module_rpmsg_driver and hiding of THIS_MODULE from
    clients"

    * tag 'rpmsg-v4.7' of git://github.com/andersson/remoteproc:
    rpmsg: use module_rpmsg_driver in existing drivers and examples
    rpmsg: add helper macro module_rpmsg_driver
    rpmsg: drop owner assignment from rpmsg_drivers
    rpmsg: add THIS_MODULE to rpmsg_driver in rpmsg core

    Linus Torvalds
     
  • Pull media updates from Mauro Carvalho Chehab:
    - added support for Intersil/Techwell TW686x-based video capture cards
    - v4l PCI skeleton driver moved to samples directory
    - Documentation cleanups and improvements
    - RC: reduced the memory footprint for IR raw events
    - tpg: Export the tpg code from vivid as a module
    - adv7180: Add device tree binding documentation
    - lots of driver improvements and fixes

    * tag 'media/v4.7-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (173 commits)
    [media] exynos-gsc: avoid build warning without CONFIG_OF
    [media] samples: v4l: from Documentation to samples directory
    [media] dib0700: add USB ID for another STK8096-PVR ref design based card
    [media] tvp5150: propagate I2C write error in .s_register callback
    [media] tvp5150: return I2C write operation failure to callers
    [media] em28xx: add support for Hauppauge WinTV-dualHD DVB tuner
    [media] em28xx: add missing USB IDs
    [media] update cx23885 and em28xx cardlists
    [media] media: au0828 fix au0828_v4l2_device_register() to not unlock and free
    [media] c8sectpfe: Rework firmware loading mechanism
    [media] c8sectpfe: Demote print to dev_dbg
    [media] c8sectpfe: Fix broken circular buffer wp management
    [media] media-device: Simplify compat32 logic
    [media] media: i2c: ths7303: remove redundant assignment on bt
    [media] dvb-usb: hide unused functions
    [media] xilinx-vipp: remove unnecessary of_node_put
    [media] drivers/media/media-devnode: clear private_data before put_device()
    [media] drivers/media/media-device: move debug log before _devnode_unregister()
    [media] drivers/media/rc: postpone kfree(rc_dev)
    [media] media/dvb-core: forward media_create_pad_links() return value
    ...

    Linus Torvalds
     

18 May, 2016

1 commit

  • Pull livepatching updates from Jiri Kosina:

    - remove of our own implementation of architecture-specific relocation
    code and leveraging existing code in the module loader to perform
    arch-dependent work, from Jessica Yu.

    The relevant patches have been acked by Rusty (for module.c) and
    Heiko (for s390).

    - live patching support for ppc64le, which is a joint work of Michael
    Ellerman and Torsten Duwe. This is coming from topic branch that is
    share between livepatching.git and ppc tree.

    - addition of livepatching documentation from Petr Mladek

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/livepatching:
    livepatch: make object/func-walking helpers more robust
    livepatch: Add some basic livepatch documentation
    powerpc/livepatch: Add live patching support on ppc64le
    powerpc/livepatch: Add livepatch stack to struct thread_info
    powerpc/livepatch: Add livepatch header
    livepatch: Allow architectures to specify an alternate ftrace location
    ftrace: Make ftrace_location_range() global
    livepatch: robustify klp_register_patch() API error checking
    Documentation: livepatch: outline Elf format and requirements for patch modules
    livepatch: reuse module loader code to write relocations
    module: s390: keep mod_arch_specific for livepatch modules
    module: preserve Elf information for livepatch modules
    Elf: add livepatch-specific Elf constants

    Linus Torvalds
     

10 May, 2016

1 commit

  • 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: 23121ca2b56b ("kbuild: create/adjust generated/autoksyms.h")

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     

07 May, 2016

4 commits

  • add few tests for "pointer to packet" logic of the verifier

    Signed-off-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Alexei Starovoitov
     
  • parse_simple.c - packet parser exapmle with single length check that
    filters out udp packets for port 9

    parse_varlen.c - variable length parser that understand multiple vlan headers,
    ipip, ipip6 and ip options to filter out udp or tcp packets on port 9.
    The packet is parsed layer by layer with multitple length checks.

    parse_ldabs.c - classic style of packet parsing using LD_ABS instruction.
    Same functionality as parse_simple.

    simple = 24.1Mpps per core
    varlen = 22.7Mpps
    ldabs = 21.4Mpps

    Parser with LD_ABS instructions is slower than full direct access parser
    which does more packet accesses and checks.

    These examples demonstrate the choice bpf program authors can make between
    flexibility of the parser vs speed.

    Signed-off-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Alexei Starovoitov
     
  • Existing drivers and examples are updated to use the
    module_rpmsg_driver helper macro.

    Signed-off-by: Andrew F. Davis
    Signed-off-by: Bjorn Andersson

    Andrew F. Davis
     
  • An rpmsg_driver does not need to set an owner, it will be populated by
    the driver core.

    Signed-off-by: Andrew F. Davis
    Signed-off-by: Bjorn Andersson

    Andrew F. Davis
     

04 May, 2016

1 commit


30 Apr, 2016

5 commits

  • Users are likely to manually compile both LLVM 'llc' and 'clang'
    tools. Thus, also allow redefining CLANG and verify command exist.

    Makefile implementation wise, the target that verify the command have
    been generalized.

    Signed-off-by: Jesper Dangaard Brouer
    Acked-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Jesper Dangaard Brouer
     
  • It is not intuitive that 'make' must be run from the top level
    directory with argument "samples/bpf/" to compile these eBPF samples.

    Introduce a kbuild make file trick that allow make to be run from the
    "samples/bpf/" directory itself. It basically change to the top level
    directory and call "make samples/bpf/" with the "/" slash after the
    directory name.

    Also add a clean target that only cleans this directory, by taking
    advantage of the kbuild external module setting M=$PWD.

    Signed-off-by: Jesper Dangaard Brouer
    Acked-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Jesper Dangaard Brouer
     
  • Getting started with using examples in samples/bpf/ is not
    straightforward. There are several dependencies, and specific
    versions of these dependencies.

    Just compiling the example tool is also slightly obscure, e.g. one
    need to call make like:

    make samples/bpf/

    Do notice the "/" slash after the directory name.

    Signed-off-by: Jesper Dangaard Brouer
    Acked-by: Naveen N. Rao
    Acked-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Jesper Dangaard Brouer
     
  • Make compiling samples/bpf more user friendly, by detecting if LLVM
    compiler tool 'llc' is available, and also detect if the 'bpf' target
    is available in this version of LLVM.

    Signed-off-by: Jesper Dangaard Brouer
    Acked-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Jesper Dangaard Brouer
     
  • It is practical to be-able-to redefine the location of the LLVM
    command 'llc', because not all distros have a LLVM version with bpf
    target support. Thus, it is sometimes required to compile LLVM from
    source, and sometimes it is not desired to overwrite the distros
    default LLVM version.

    This feature was removed with 128d1514be35 ("samples/bpf: Use llc in
    PATH, rather than a hardcoded value").

    Add this features back. Note that it is possible to redefine the LLC
    on the make command like:

    make samples/bpf/ LLC=~/git/llvm/build/bin/llc

    Fixes: 128d1514be35 ("samples/bpf: Use llc in PATH, rather than a hardcoded value")
    Signed-off-by: Jesper Dangaard Brouer
    Acked-by: Alexei Starovoitov
    Acked-by: Naveen N. Rao
    Signed-off-by: David S. Miller

    Jesper Dangaard Brouer
     

29 Apr, 2016

1 commit

  • llvm cannot always recognize memset as builtin function and optimize
    it away, so just delete it. It was a leftover from testing
    of bpf_perf_event_output() with large data structures.

    Fixes: 39111695b1b8 ("samples: bpf: add bpf_perf_event_output example")
    Signed-off-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Alexei Starovoitov
     

28 Apr, 2016

2 commits

  • A small bug with the new autoksyms support showed that there are
    two kernel modules in the Documentation directory that qualify
    as samples, while all other samples are in the samples/ directory.

    This patch was originally meant as a workaround for that bug, but
    it has now been solved in a different way. However, I still think
    it makes sense as a cleanup to consolidate all sample code in
    one place.

    Signed-off-by: Arnd Bergmann
    Acked-by: Hans Verkuil
    Acked-by: Mauro Carvalho Chehab
    Signed-off-by: Jonathan Corbet

    Arnd Bergmann
     
  • A small bug with the new autoksyms support showed that there are
    two kernel modules in the Documentation directory that qualify
    as samples, while all other samples are in the samples/ directory.

    This patch was originally meant as a workaround for that bug, but
    it has now been solved in a different way. However, I still think
    it makes sense as a cleanup to consolidate all sample code in
    one place.

    Signed-off-by: Arnd Bergmann
    Signed-off-by: Jonathan Corbet

    Arnd Bergmann
     

15 Apr, 2016

2 commits

  • This adds test cases mostly around ARG_PTR_TO_RAW_STACK to check the
    verifier behaviour.

    [...]
    #84 raw_stack: no skb_load_bytes OK
    #85 raw_stack: skb_load_bytes, no init OK
    #86 raw_stack: skb_load_bytes, init OK
    #87 raw_stack: skb_load_bytes, spilled regs around bounds OK
    #88 raw_stack: skb_load_bytes, spilled regs corruption OK
    #89 raw_stack: skb_load_bytes, spilled regs corruption 2 OK
    #90 raw_stack: skb_load_bytes, spilled regs + data OK
    #91 raw_stack: skb_load_bytes, invalid access 1 OK
    #92 raw_stack: skb_load_bytes, invalid access 2 OK
    #93 raw_stack: skb_load_bytes, invalid access 3 OK
    #94 raw_stack: skb_load_bytes, invalid access 4 OK
    #95 raw_stack: skb_load_bytes, invalid access 5 OK
    #96 raw_stack: skb_load_bytes, invalid access 6 OK
    #97 raw_stack: skb_load_bytes, large access OK
    Summary: 98 PASSED, 0 FAILED

    Signed-off-by: Daniel Borkmann
    Acked-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Daniel Borkmann
     
  • Remove the zero initialization in the sample programs where appropriate.
    Note that this is an optimization which is now possible, old programs
    still doing the zero initialization are just fine as well. Also, make
    sure we don't have padding issues when we don't memset() the entire
    struct anymore.

    Signed-off-by: Daniel Borkmann
    Acked-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Daniel Borkmann
     

10 Apr, 2016

1 commit


08 Apr, 2016

3 commits

  • the first microbenchmark does
    fd=open("/proc/self/comm");
    for() {
    write(fd, "test");
    }
    and on 4 cpus in parallel:
    writes per sec
    base (no tracepoints, no kprobes) 930k
    with kprobe at __set_task_comm() 420k
    with tracepoint at task:task_rename 730k

    For kprobe + full bpf program manully fetches oldcomm, newcomm via bpf_probe_read.
    For tracepint bpf program does nothing, since arguments are copied by tracepoint.

    2nd microbenchmark does:
    fd=open("/dev/urandom");
    for() {
    read(fd, buf);
    }
    and on 4 cpus in parallel:
    reads per sec
    base (no tracepoints, no kprobes) 300k
    with kprobe at urandom_read() 279k
    with tracepoint at random:urandom_read 290k

    bpf progs attached to kprobe and tracepoint are noop.

    Signed-off-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Alexei Starovoitov
     
  • modify offwaketime to work with sched/sched_switch tracepoint
    instead of kprobe into finish_task_switch

    Signed-off-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Alexei Starovoitov
     
  • Recognize "tracepoint/" section name prefix and attach the program
    to that tracepoint.

    Signed-off-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Alexei Starovoitov
     

07 Apr, 2016

3 commits

  • Add the necessary definitions for building bpf samples on ppc.

    Since ppc doesn't store function return address on the stack, modify how
    PT_REGS_RET() and PT_REGS_FP() work.

    Also, introduce PT_REGS_IP() to access the instruction pointer.

    Cc: Alexei Starovoitov
    Cc: Daniel Borkmann
    Cc: David S. Miller
    Cc: Ananth N Mavinakayanahalli
    Cc: Michael Ellerman
    Signed-off-by: Naveen N. Rao
    Acked-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Naveen N. Rao
     
  • While at it, remove the generation of .s files and fix some typos in the
    related comment.

    Cc: Alexei Starovoitov
    Cc: David S. Miller
    Cc: Daniel Borkmann
    Cc: Ananth N Mavinakayanahalli
    Cc: Michael Ellerman
    Signed-off-by: Naveen N. Rao
    Acked-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Naveen N. Rao
     
  • Building BPF samples is failing with the below error:

    samples/bpf/map_perf_test_user.c: In function ‘main’:
    samples/bpf/map_perf_test_user.c:134:9: error: variable ‘r’ has
    initializer but incomplete type
    struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY};
    ^
    samples/bpf/map_perf_test_user.c:134:21: error: ‘RLIM_INFINITY’
    undeclared (first use in this function)
    struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY};
    ^
    samples/bpf/map_perf_test_user.c:134:21: note: each undeclared
    identifier is reported only once for each function it appears in
    samples/bpf/map_perf_test_user.c:134:9: warning: excess elements in
    struct initializer [enabled by default]
    struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY};
    ^
    samples/bpf/map_perf_test_user.c:134:9: warning: (near initialization
    for ‘r’) [enabled by default]
    samples/bpf/map_perf_test_user.c:134:9: warning: excess elements in
    struct initializer [enabled by default]
    samples/bpf/map_perf_test_user.c:134:9: warning: (near initialization
    for ‘r’) [enabled by default]
    samples/bpf/map_perf_test_user.c:134:16: error: storage size of ‘r’
    isn’t known
    struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY};
    ^
    samples/bpf/map_perf_test_user.c:139:2: warning: implicit declaration of
    function ‘setrlimit’ [-Wimplicit-function-declaration]
    setrlimit(RLIMIT_MEMLOCK, &r);
    ^
    samples/bpf/map_perf_test_user.c:139:12: error: ‘RLIMIT_MEMLOCK’
    undeclared (first use in this function)
    setrlimit(RLIMIT_MEMLOCK, &r);
    ^
    samples/bpf/map_perf_test_user.c:134:16: warning: unused variable ‘r’
    [-Wunused-variable]
    struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY};
    ^
    make[2]: *** [samples/bpf/map_perf_test_user.o] Error 1

    Fix this by including the necessary header file.

    Cc: Alexei Starovoitov
    Cc: Daniel Borkmann
    Cc: David S. Miller
    Cc: Ananth N Mavinakayanahalli
    Cc: Michael Ellerman
    Acked-by: Alexei Starovoitov
    Signed-off-by: Naveen N. Rao
    Signed-off-by: David S. Miller

    Naveen N. Rao
     

01 Apr, 2016

1 commit

  • Reuse module loader code to write relocations, thereby eliminating the need
    for architecture specific relocation code in livepatch. Specifically, reuse
    the apply_relocate_add() function in the module loader to write relocations
    instead of duplicating functionality in livepatch's arch-dependent
    klp_write_module_reloc() function.

    In order to accomplish this, livepatch modules manage their own relocation
    sections (marked with the SHF_RELA_LIVEPATCH section flag) and
    livepatch-specific symbols (marked with SHN_LIVEPATCH symbol section
    index). To apply livepatch relocation sections, livepatch symbols
    referenced by relocs are resolved and then apply_relocate_add() is called
    to apply those relocations.

    In addition, remove x86 livepatch relocation code and the s390
    klp_write_module_reloc() function stub. They are no longer needed since
    relocation work has been offloaded to module loader.

    Lastly, mark the module as a livepatch module so that the module loader
    canappropriately identify and initialize it.

    Signed-off-by: Jessica Yu
    Reviewed-by: Miroslav Benes
    Acked-by: Josh Poimboeuf
    Acked-by: Heiko Carstens # for s390 changes
    Signed-off-by: Jiri Kosina

    Jessica Yu
     

09 Mar, 2016

7 commits


20 Feb, 2016

1 commit

  • This is simplified version of Brendan Gregg's offwaketime:
    This program shows kernel stack traces and task names that were blocked and
    "off-CPU", along with the stack traces and task names for the threads that woke
    them, and the total elapsed time from when they blocked to when they were woken
    up. The combined stacks, task names, and total time is summarized in kernel
    context for efficiency.

    Example:
    $ sudo ./offwaketime | flamegraph.pl > demo.svg
    Open demo.svg in the browser as FlameGraph visualization.

    Signed-off-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Alexei Starovoitov
     

06 Feb, 2016

3 commits


18 Nov, 2015

1 commit

  • Pull networking fixes from David Miller:

    1) Fix list tests in netfilter ingress support, from Florian Westphal.

    2) Fix reversal of input and output interfaces in ingress hook
    invocation, from Pablo Neira Ayuso.

    3) We have a use after free in r8169, caught by Dave Jones, fixed by
    Francois Romieu.

    4) Splice use-after-free fix in AF_UNIX frmo Hannes Frederic Sowa.

    5) Three ipv6 route handling bug fixes from Martin KaFai Lau:
    a) Don't create clone routes not managed by the fib6 tree
    b) Don't forget to check expiration of DST_NOCACHE routes.
    c) Handle rt->dst.from == NULL properly.

    6) Several AF_PACKET fixes wrt transport header setting and SKB
    protocol setting, from Daniel Borkmann.

    7) Fix thunder driver crash on shutdown, from Pavel Fedin.

    8) Several Mellanox driver fixes (max MTU calculations, use of correct
    DMA unmap in TX path, etc.) from Saeed Mahameed, Tariq Toukan, Doron
    Tsur, Achiad Shochat, Eran Ben Elisha, and Noa Osherovich.

    9) Several mv88e6060 DSA driver fixes (wrong bit definitions for
    certain registers, etc.) from Neil Armstrong.

    10) Make sure to disable preemption while updating per-cpu stats of ip
    tunnels, from Jason A. Donenfeld.

    11) Various ARM64 bpf JIT fixes, from Yang Shi.

    12) Flush icache properly in ARM JITs, from Daniel Borkmann.

    13) Fix masking of RX and TX interrupts in ravb driver, from Masaru
    Nagai.

    14) Fix netdev feature propagation for devices not implementing
    ->ndo_set_features(). From Nikolay Aleksandrov.

    15) Big endian fix in vmxnet3 driver, from Shrikrishna Khare.

    16) RAW socket code increments incorrect SNMP counters, fix from Ben
    Cartwright-Cox.

    17) IPv6 multicast SNMP counters are bumped twice, fix from Neil Horman.

    18) Fix handling of VLAN headers on stacked devices when REORDER is
    disabled. From Vlad Yasevich.

    19) Fix SKB leaks and use-after-free in ipvlan and macvlan drivers, from
    Sabrina Dubroca.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (83 commits)
    MAINTAINERS: Update Mellanox's Eth NIC driver entries
    net/core: revert "net: fix __netdev_update_features return.." and add comment
    af_unix: take receive queue lock while appending new skb
    rtnetlink: fix frame size warning in rtnl_fill_ifinfo
    net: use skb_clone to avoid alloc_pages failure.
    packet: Use PAGE_ALIGNED macro
    packet: Don't check frames_per_block against negative values
    net: phy: Use interrupts when available in NOLINK state
    phy: marvell: Add support for 88E1540 PHY
    arm64: bpf: make BPF prologue and epilogue align with ARM64 AAPCS
    macvlan: fix leak in macvlan_handle_frame
    ipvlan: fix use after free of skb
    ipvlan: fix leak in ipvlan_rcv_frame
    vlan: Do not put vlan headers back on bridge and macvlan ports
    vlan: Fix untag operations of stacked vlans with REORDER_HEADER off
    via-velocity: unconditionally drop frames with bad l2 length
    ipg: Remove ipg driver
    dl2k: Add support for IP1000A-based cards
    snmp: Remove duplicate OUTMCAST stat increment
    net: thunder: Check for driver data in nicvf_remove()
    ...

    Linus Torvalds