30 May, 2018

1 commit


22 Feb, 2018

2 commits

  • commit f335195adf043168ee69d78ea72ac3e30f0c57ce upstream.

    Commit 4675ff05de2d ("kmemcheck: rip it out") has removed the code but
    for some reason SPDX header stayed in place. This looks like a rebase
    mistake in the mmotm tree or the merge mistake. Let's drop those
    leftovers as well.

    Signed-off-by: Michal Hocko
    Signed-off-by: Linus Torvalds
    Signed-off-by: Greg Kroah-Hartman

    Michal Hocko
     
  • commit 4675ff05de2d76d167336b368bd07f3fef6ed5a6 upstream.

    Fix up makefiles, remove references, and git rm kmemcheck.

    Link: http://lkml.kernel.org/r/20171007030159.22241-4-alexander.levin@verizon.com
    Signed-off-by: Sasha Levin
    Cc: Steven Rostedt
    Cc: Vegard Nossum
    Cc: Pekka Enberg
    Cc: Michal Hocko
    Cc: Eric W. Biederman
    Cc: Alexander Potapenko
    Cc: Tim Hansen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds
    Signed-off-by: Greg Kroah-Hartman

    Levin, Alexander (Sasha Levin)
     

10 Dec, 2017

1 commit

  • [ Upstream commit 6ae8eefc6c8fe050f057781b70a83262eb0a61ee ]

    LIST_POISON[12] are used to initialize list_head and hlist_node
    pointers, and do void pointer arithmetic, which C++ doesn't like, so, to
    avoid drifting from the kernel by introducing some HLIST_POISON to do
    away with void pointer math, just make those poisoned pointers be NULL
    when building it with a C++ compiler.

    Noticed with:

    $ make LLVM_CONFIG=/usr/bin/llvm-config-3.9 LIBCLANGLLVM=1
    CXX util/c++/clang.o
    CXX util/c++/clang-test.o
    In file included from /home/lizj/linux/tools/include/linux/list.h:5:0,
    from /home/lizj/linux/tools/perf/util/namespaces.h:13,
    from /home/lizj/linux/tools/perf/util/util.h:15,
    from /home/lizj/linux/tools/perf/util/util-cxx.h:20,
    from util/c++/clang-c.h:5,
    from util/c++/clang-test.cpp:2:
    /home/lizj/linux/tools/include/linux/list.h: In function ‘void list_del(list_head*)’:
    /home/lizj/linux/tools/include/linux/poison.h:14:31: error: pointer of type ‘void *’ used in arithmetic [-Werror=pointer-arith]
    # define POISON_POINTER_DELTA 0
    ^
    /home/lizj/linux/tools/include/linux/poison.h:22:41: note: in expansion of macro ‘POISON_POINTER_DELTA’
    #define LIST_POISON1 ((void *) 0x100 + POISON_POINTER_DELTA)
    ^
    /home/lizj/linux/tools/include/linux/list.h:107:16: note: in expansion of macro ‘LIST_POISON1’
    entry->next = LIST_POISON1;
    ^
    In file included from /home/lizj/linux/tools/perf/util/namespaces.h:13:0,
    from /home/lizj/linux/tools/perf/util/util.h:15,
    from /home/lizj/linux/tools/perf/util/util-cxx.h:20,
    from util/c++/clang-c.h:5,
    from util/c++/clang-test.cpp:2:
    /home/lizj/linux/tools/include/linux/list.h:107:14: error: invalid conversion from ‘void*’ to ‘list_head*’ [-fpermissive]

    Reported-by: Li Zhijian
    Cc: Adrian Hunter
    Cc: Alexander Shishkin
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Philip Li
    Cc: Wang Nan
    Link: http://lkml.kernel.org/n/tip-m5ei2o0mjshucbr28baf5lqz@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Arnaldo Carvalho de Melo
     

11 Nov, 2017

1 commit


04 Nov, 2017

1 commit

  • After the SPDX license tags were added a number of tooling headers got out of
    sync with their kernel variants, generating lots of build warnings.

    Sync them:

    - tools/arch/x86/include/asm/disabled-features.h,
    tools/arch/x86/include/asm/required-features.h,
    tools/include/linux/hash.h:

    Remove the SPDX tag where the kernel version does not have it.

    - tools/include/asm-generic/bitops/__fls.h,
    tools/include/asm-generic/bitops/arch_hweight.h,
    tools/include/asm-generic/bitops/const_hweight.h,
    tools/include/asm-generic/bitops/fls.h,
    tools/include/asm-generic/bitops/fls64.h,
    tools/include/uapi/asm-generic/ioctls.h,
    tools/include/uapi/asm-generic/mman-common.h,
    tools/include/uapi/sound/asound.h,
    tools/include/uapi/linux/kvm.h,
    tools/include/uapi/linux/perf_event.h,
    tools/include/uapi/linux/sched.h,
    tools/include/uapi/linux/vhost.h,
    tools/include/uapi/sound/asound.h:

    Add the SPDX tag of the respective kernel header.

    - tools/include/uapi/linux/bpf_common.h,
    tools/include/uapi/linux/fcntl.h,
    tools/include/uapi/linux/hw_breakpoint.h,
    tools/include/uapi/linux/mman.h,
    tools/include/uapi/linux/stat.h,

    Change the tag to the kernel header version:

    -/* SPDX-License-Identifier: GPL-2.0 */
    +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */

    Also sync other header details:

    - include/uapi/sound/asound.h:

    Fix pointless end of line whitespace noise the header grew in this cycle.

    - tools/arch/x86/lib/memcpy_64.S:

    Sync the code and add tools/include/asm/export.h with dummy wrappers
    to support building the kernel side code in a tooling header environment.

    - tools/include/uapi/asm-generic/mman.h,
    tools/include/uapi/linux/bpf.h:

    Sync other details that don't impact tooling's use of the ABIs.

    Acked-by: Arnaldo Carvalho de Melo
    Cc: linux-kernel@vger.kernel.org
    Cc: Greg Kroah-Hartman
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: Peter Zijlstra
    Cc: Namhyung Kim
    Cc: Jiri Olsa
    Cc: Stephen Rothwell
    Signed-off-by: Ingo Molnar

    Ingo Molnar
     

03 Nov, 2017

1 commit

  • …el/git/gregkh/driver-core

    Pull initial SPDX identifiers from Greg KH:
    "License cleanup: add SPDX license identifiers to some files

    Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the
    'GPL-2.0' SPDX license identifier. The SPDX identifier is a legally
    binding shorthand, which can be used instead of the full boiler plate
    text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart
    and Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset
    of the use cases:

    - file had no licensing information it it.

    - file was a */uapi/* one with no licensing information in it,

    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to
    license had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied
    to a file was done in a spreadsheet of side by side results from of
    the output of two independent scanners (ScanCode & Windriver)
    producing SPDX tag:value files created by Philippe Ombredanne.
    Philippe prepared the base worksheet, and did an initial spot review
    of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537
    files assessed. Kate Stewart did a file by file comparison of the
    scanner results in the spreadsheet to determine which SPDX license
    identifier(s) to be applied to the file. She confirmed any
    determination that was not immediately clear with lawyers working with
    the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:

    - Files considered eligible had to be source code files.

    - Make and config files were included as candidates if they contained
    >5 lines of source

    - File already had some variant of a license header in it (even if <5
    lines).

    All documentation files were explicitly excluded.

    The following heuristics were used to determine which SPDX license
    identifiers to apply.

    - when both scanners couldn't find any license traces, file was
    considered to have no license information in it, and the top level
    COPYING file license applied.

    For non */uapi/* files that summary was:

    SPDX license identifier # files
    ---------------------------------------------------|-------
    GPL-2.0 11139

    and resulted in the first patch in this series.

    If that file was a */uapi/* path one, it was "GPL-2.0 WITH
    Linux-syscall-note" otherwise it was "GPL-2.0". Results of that
    was:

    SPDX license identifier # files
    ---------------------------------------------------|-------
    GPL-2.0 WITH Linux-syscall-note 930

    and resulted in the second patch in this series.

    - if a file had some form of licensing information in it, and was one
    of the */uapi/* ones, it was denoted with the Linux-syscall-note if
    any GPL family license was found in the file or had no licensing in
    it (per prior point). Results summary:

    SPDX license identifier # files
    ---------------------------------------------------|------
    GPL-2.0 WITH Linux-syscall-note 270
    GPL-2.0+ WITH Linux-syscall-note 169
    ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) 21
    ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) 17
    LGPL-2.1+ WITH Linux-syscall-note 15
    GPL-1.0+ WITH Linux-syscall-note 14
    ((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause) 5
    LGPL-2.0+ WITH Linux-syscall-note 4
    LGPL-2.1 WITH Linux-syscall-note 3
    ((GPL-2.0 WITH Linux-syscall-note) OR MIT) 3
    ((GPL-2.0 WITH Linux-syscall-note) AND MIT) 1

    and that resulted in the third patch in this series.

    - when the two scanners agreed on the detected license(s), that
    became the concluded license(s).

    - when there was disagreement between the two scanners (one detected
    a license but the other didn't, or they both detected different
    licenses) a manual inspection of the file occurred.

    - In most cases a manual inspection of the information in the file
    resulted in a clear resolution of the license that should apply
    (and which scanner probably needed to revisit its heuristics).

    - When it was not immediately clear, the license identifier was
    confirmed with lawyers working with the Linux Foundation.

    - If there was any question as to the appropriate license identifier,
    the file was flagged for further research and to be revisited later
    in time.

    In total, over 70 hours of logged manual review was done on the
    spreadsheet to determine the SPDX license identifiers to apply to the
    source files by Kate, Philippe, Thomas and, in some cases,
    confirmation by lawyers working with the Linux Foundation.

    Kate also obtained a third independent scan of the 4.13 code base from
    FOSSology, and compared selected files where the other two scanners
    disagreed against that SPDX file, to see if there was new insights.
    The Windriver scanner is based on an older version of FOSSology in
    part, so they are related.

    Thomas did random spot checks in about 500 files from the spreadsheets
    for the uapi headers and agreed with SPDX license identifier in the
    files he inspected. For the non-uapi files Thomas did random spot
    checks in about 15000 files.

    In initial set of patches against 4.14-rc6, 3 files were found to have
    copy/paste license identifier errors, and have been fixed to reflect
    the correct identifier.

    Additionally Philippe spent 10 hours this week doing a detailed manual
    inspection and review of the 12,461 patched files from the initial
    patch version early this week with:

    - a full scancode scan run, collecting the matched texts, detected
    license ids and scores

    - reviewing anything where there was a license detected (about 500+
    files) to ensure that the applied SPDX license was correct

    - reviewing anything where there was no detection but the patch
    license was not GPL-2.0 WITH Linux-syscall-note to ensure that the
    applied SPDX license was correct

    This produced a worksheet with 20 files needing minor correction. This
    worksheet was then exported into 3 different .csv files for the
    different types of files to be modified.

    These .csv files were then reviewed by Greg. Thomas wrote a script to
    parse the csv files and add the proper SPDX tag to the file, in the
    format that the file expected. This script was further refined by Greg
    based on the output to detect more types of files automatically and to
    distinguish between header and source .c files (which need different
    comment types.) Finally Greg ran the script using the .csv files to
    generate the patches.

    Reviewed-by: Kate Stewart <kstewart@linuxfoundation.org>
    Reviewed-by: Philippe Ombredanne <pombredanne@nexb.com>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>"

    * tag 'spdx_identifiers-4.14-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
    License cleanup: add SPDX license identifier to uapi header files with a license
    License cleanup: add SPDX license identifier to uapi header files with no license
    License cleanup: add SPDX GPL-2.0 license identifier to files with no license

    Linus Torvalds
     

02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

01 Nov, 2017

1 commit

  • Now that SK_REDIRECT is no longer a valid return code. Remove it
    from the UAPI completely. Then do a namespace remapping internal
    to sockmap so SK_REDIRECT is no longer externally visible.

    Patchs primary change is to do a namechange from SK_REDIRECT to
    __SK_REDIRECT

    Reported-by: Alexei Starovoitov
    Signed-off-by: John Fastabend
    Signed-off-by: David S. Miller

    John Fastabend
     

29 Oct, 2017

1 commit

  • Recent additions to support multiple programs in cgroups impose
    a strict requirement, "all yes is yes, any no is no". To enforce
    this the infrastructure requires the 'no' return code, SK_DROP in
    this case, to be 0.

    To apply these rules to SK_SKB program types the sk_actions return
    codes need to be adjusted.

    This fix adds SK_PASS and makes 'SK_DROP = 0'. Finally, remove
    SK_ABORTED to remove any chance that the API may allow aborted
    program flows to be passed up the stack. This would be incorrect
    behavior and allow programs to break existing policies.

    Signed-off-by: John Fastabend
    Acked-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    John Fastabend
     

22 Oct, 2017

1 commit

  • Pull networking fixes from David Miller:
    "A little more than usual this time around. Been travelling, so that is
    part of it.

    Anyways, here are the highlights:

    1) Deal with memcontrol races wrt. listener dismantle, from Eric
    Dumazet.

    2) Handle page allocation failures properly in nfp driver, from Jaku
    Kicinski.

    3) Fix memory leaks in macsec, from Sabrina Dubroca.

    4) Fix crashes in pppol2tp_session_ioctl(), from Guillaume Nault.

    5) Several fixes in bnxt_en driver, including preventing potential
    NVRAM parameter corruption from Michael Chan.

    6) Fix for KRACK attacks in wireless, from Johannes Berg.

    7) rtnetlink event generation fixes from Xin Long.

    8) Deadlock in mlxsw driver, from Ido Schimmel.

    9) Disallow arithmetic operations on context pointers in bpf, from
    Jakub Kicinski.

    10) Missing sock_owned_by_user() check in sctp_icmp_redirect(), from
    Xin Long.

    11) Only TCP is supported for sockmap, make that explicit with a
    check, from John Fastabend.

    12) Fix IP options state races in DCCP and TCP, from Eric Dumazet.

    13) Fix panic in packet_getsockopt(), also from Eric Dumazet.

    14) Add missing locked in hv_sock layer, from Dexuan Cui.

    15) Various aquantia bug fixes, including several statistics handling
    cures. From Igor Russkikh et al.

    16) Fix arithmetic overflow in devmap code, from John Fastabend.

    17) Fix busted socket memory accounting when we get a fault in the tcp
    zero copy paths. From Willem de Bruijn.

    18) Don't leave opt->tot_len uninitialized in ipv6, from Eric Dumazet"

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (106 commits)
    stmmac: Don't access tx_q->dirty_tx before netif_tx_lock
    ipv6: flowlabel: do not leave opt->tot_len with garbage
    of_mdio: Fix broken PHY IRQ in case of probe deferral
    textsearch: fix typos in library helpers
    rxrpc: Don't release call mutex on error pointer
    net: stmmac: Prevent infinite loop in get_rx_timestamp_status()
    net: stmmac: Fix stmmac_get_rx_hwtstamp()
    net: stmmac: Add missing call to dev_kfree_skb()
    mlxsw: spectrum_router: Configure TIGCR on init
    mlxsw: reg: Add Tunneling IPinIP General Configuration Register
    net: ethtool: remove error check for legacy setting transceiver type
    soreuseport: fix initialization race
    net: bridge: fix returning of vlan range op errors
    sock: correct sk_wmem_queued accounting on efault in tcp zerocopy
    bpf: add test cases to bpf selftests to cover all access tests
    bpf: fix pattern matches for direct packet access
    bpf: fix off by one for range markings with L{T, E} patterns
    bpf: devmap fix arithmetic overflow in bitmap_size calculation
    net: aquantia: Bad udp rate on default interrupt coalescing
    net: aquantia: Enable coalescing management via ethtool interface
    ...

    Linus Torvalds
     

20 Oct, 2017

1 commit

  • SK_SKB BPF programs are run from the socket/tcp context but early in
    the stack before much of the TCP metadata is needed in tcp_skb_cb. So
    we can use some unused fields to place BPF metadata needed for SK_SKB
    programs when implementing the redirect function.

    This allows us to drop the preempt disable logic. It does however
    require an API change so sk_redirect_map() has been updated to
    additionally provide ctx_ptr to skb. Note, we do however continue to
    disable/enable preemption around actual BPF program running to account
    for map updates.

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

    John Fastabend
     

10 Oct, 2017

1 commit

  • Silences the checker:

    Warning: Kernel ABI header at 'tools/include/uapi/linux/bpf.h' differs from latest version at 'include/uapi/linux/bpf.h'

    The 90caccdd8cc0 ("bpf: fix bpf_tail_call() x64 JIT") cset only updated
    a comment in uapi/bpf.h.

    Cc: Adrian Hunter
    Cc: Alexei Starovoitov
    Cc: David Ahern
    Cc: David S. Miller
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Wang Nan
    Link: http://lkml.kernel.org/n/tip-rwx2cqbf0x1lwa1krsr6e6hd@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

25 Sep, 2017

1 commit

  • Time for a sync with ABI/uapi headers with the upcoming v4.14 kernel.

    None of the ABI changes require any source code level changes to our
    existing in-kernel tooling code:

    - tools/arch/s390/include/uapi/asm/kvm.h:

    New KVM_S390_VM_TOD_EXT ABI, not used by in-kernel tooling.

    - tools/arch/x86/include/asm/cpufeatures.h:
    tools/arch/x86/include/asm/disabled-features.h:

    New PCID, SME and VGIF x86 CPU feature bits defined.

    - tools/include/asm-generic/hugetlb_encode.h:
    tools/include/uapi/asm-generic/mman-common.h:
    tools/include/uapi/linux/mman.h:

    Two new madvise() flags, plus a hugetlb system call mmap flags
    restructuring/extension changes.

    - tools/include/uapi/drm/drm.h:
    tools/include/uapi/drm/i915_drm.h:

    New drm_syncobj_create flags definitions, new drm_syncobj_wait
    and drm_syncobj_array ABIs. DRM_I915_PERF_* calls and a new
    I915_PARAM_HAS_EXEC_FENCE_ARRAY ABI for the Intel driver.

    - tools/include/uapi/linux/bpf.h:

    New bpf_sock fields (::mark and ::priority), new XDP_REDIRECT
    action, new kvm_ppc_smmu_info fields (::data_keys, instr_keys)

    Signed-off-by: Ingo Molnar
    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Milian Wolff
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Taeung Song
    Cc: Wang Nan
    Cc: Yao Jin
    Link: http://lkml.kernel.org/r/20170913073823.lxmi4c7ejqlfabjx@gmail.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Ingo Molnar
     

13 Sep, 2017

2 commits

  • …linux/kernel/git/acme/linux into perf/urgent

    Pull perf/urgent fixes from Arnaldo Carvalho de Melo:

    - Fix TUI progress bar when delta from new total from that of the
    previous update is greater than the progress "step" (screen width
    progress bar block)) (Jiri Olsa)

    - Make tools/lib/api make DEBUG=1 build use -D_FORTIFY_SOURCE=2 not
    to cripple debuginfo, just like tools/perf/ does (Jiri Olsa)

    - Avoid leaking the 'perf.data' file to workloads started from the
    'perf record' command line by using the O_CLOEXEC open flag (Jiri Olsa)

    - Fix building when libunwind's 'unwind.h' file is present in the
    include path, clashing with tools/perf/util/unwind.h (Milian Wolff)

    - Check per .perfconfig section entry flag, not just per section (Taeung Song)

    - Support running perf binaries with a dash in their name, needed to
    run perf as an AppImage (Milian Wolff)

    - Wait for the right child by using waitpid() when running workloads
    from 'perf stat', also to fix using perf as an AppImage (Milian Wolff)

    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>

    Ingo Molnar
     
  • Pull perf tooling updates from Ingo Molnar:
    "Perf tooling updates and fixes"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf annotate browser: Help for cycling thru hottest instructions with TAB/shift+TAB
    perf stat: Only auto-merge events that are PMU aliases
    perf test: Add test case for PERF_SAMPLE_PHYS_ADDR
    perf script: Support physical address
    perf mem: Support physical address
    perf sort: Add sort option for physical address
    perf tools: Support new sample type for physical address
    perf vendor events powerpc: Remove duplicate events
    perf intel-pt: Fix syntax in documentation of config option
    perf test powerpc: Fix 'Object code reading' test
    perf trace: Support syscall name globbing
    perf syscalltbl: Support glob matching on syscall names
    perf report: Calculate the average cycles of iterations

    Linus Torvalds
     

12 Sep, 2017

1 commit

  • When cross building to android r15c (and older versions) on Fedora 26
    we notice these:

    /opt/android-ndk-r15c/platforms/android-24/arch-arm/usr/include/sys/cdefs.h:332:0: note: this is the location of the previous definition

    For __aligned, __packed and __noreturn, so guard those with ifdefs to
    avoid drowning useful warnings in these.

    Cc: Adrian Hunter
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Wang Nan
    Link: http://lkml.kernel.org/n/tip-d7w3fa9c22dtmrwbedos6ie1@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

07 Sep, 2017

1 commit

  • Pull networking updates from David Miller:

    1) Support ipv6 checksum offload in sunvnet driver, from Shannon
    Nelson.

    2) Move to RB-tree instead of custom AVL code in inetpeer, from Eric
    Dumazet.

    3) Allow generic XDP to work on virtual devices, from John Fastabend.

    4) Add bpf device maps and XDP_REDIRECT, which can be used to build
    arbitrary switching frameworks using XDP. From John Fastabend.

    5) Remove UFO offloads from the tree, gave us little other than bugs.

    6) Remove the IPSEC flow cache, from Florian Westphal.

    7) Support ipv6 route offload in mlxsw driver.

    8) Support VF representors in bnxt_en, from Sathya Perla.

    9) Add support for forward error correction modes to ethtool, from
    Vidya Sagar Ravipati.

    10) Add time filter for packet scheduler action dumping, from Jamal Hadi
    Salim.

    11) Extend the zerocopy sendmsg() used by virtio and tap to regular
    sockets via MSG_ZEROCOPY. From Willem de Bruijn.

    12) Significantly rework value tracking in the BPF verifier, from Edward
    Cree.

    13) Add new jump instructions to eBPF, from Daniel Borkmann.

    14) Rework rtnetlink plumbing so that operations can be run without
    taking the RTNL semaphore. From Florian Westphal.

    15) Support XDP in tap driver, from Jason Wang.

    16) Add 32-bit eBPF JIT for ARM, from Shubham Bansal.

    17) Add Huawei hinic ethernet driver.

    18) Allow to report MD5 keys in TCP inet_diag dumps, from Ivan
    Delalande.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1780 commits)
    i40e: point wb_desc at the nvm_wb_desc during i40e_read_nvm_aq
    i40e: avoid NVM acquire deadlock during NVM update
    drivers: net: xgene: Remove return statement from void function
    drivers: net: xgene: Configure tx/rx delay for ACPI
    drivers: net: xgene: Read tx/rx delay for ACPI
    rocker: fix kcalloc parameter order
    rds: Fix non-atomic operation on shared flag variable
    net: sched: don't use GFP_KERNEL under spin lock
    vhost_net: correctly check tx avail during rx busy polling
    net: mdio-mux: add mdio_mux parameter to mdio_mux_init()
    rxrpc: Make service connection lookup always check for retry
    net: stmmac: Delete dead code for MDIO registration
    gianfar: Fix Tx flow control deactivation
    cxgb4: Ignore MPS_TX_INT_CAUSE[Bubble] for T6
    cxgb4: Fix pause frame count in t4_get_port_stats
    cxgb4: fix memory leak
    tun: rename generic_xdp to skb_xdp
    tun: reserve extra headroom only when XDP is set
    net: dsa: bcm_sf2: Configure IMP port TC2QOS mapping
    net: dsa: bcm_sf2: Advertise number of egress queues
    ...

    Linus Torvalds
     

06 Sep, 2017

1 commit

  • Pull char/misc driver updates from Greg KH:
    "Here is the big char/misc driver update for 4.14-rc1.

    Lots of different stuff in here, it's been an active development cycle
    for some reason. Highlights are:

    - updated binder driver, this brings binder up to date with what
    shipped in the Android O release, plus some more changes that
    happened since then that are in the Android development trees.

    - coresight updates and fixes

    - mux driver file renames to be a bit "nicer"

    - intel_th driver updates

    - normal set of hyper-v updates and changes

    - small fpga subsystem and driver updates

    - lots of const code changes all over the driver trees

    - extcon driver updates

    - fmc driver subsystem upadates

    - w1 subsystem minor reworks and new features and drivers added

    - spmi driver updates

    Plus a smattering of other minor driver updates and fixes.

    All of these have been in linux-next with no reported issues for a
    while"

    * tag 'char-misc-4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (244 commits)
    ANDROID: binder: don't queue async transactions to thread.
    ANDROID: binder: don't enqueue death notifications to thread todo.
    ANDROID: binder: Don't BUG_ON(!spin_is_locked()).
    ANDROID: binder: Add BINDER_GET_NODE_DEBUG_INFO ioctl
    ANDROID: binder: push new transactions to waiting threads.
    ANDROID: binder: remove proc waitqueue
    android: binder: Add page usage in binder stats
    android: binder: fixup crash introduced by moving buffer hdr
    drivers: w1: add hwmon temp support for w1_therm
    drivers: w1: refactor w1_slave_show to make the temp reading functionality separate
    drivers: w1: add hwmon support structures
    eeprom: idt_89hpesx: Support both ACPI and OF probing
    mcb: Fix an error handling path in 'chameleon_parse_cells()'
    MCB: add support for SC31 to mcb-lpc
    mux: make device_type const
    char: virtio: constify attribute_group structures.
    Documentation/ABI: document the nvmem sysfs files
    lkdtm: fix spelling mistake: "incremeted" -> "incremented"
    perf: cs-etm: Fix ETMv4 CONFIGR entry in perf.data file
    nvmem: include linux/err.h from header
    ...

    Linus Torvalds
     

02 Sep, 2017

1 commit

  • Support new sample type PERF_SAMPLE_PHYS_ADDR for physical address.

    Add new option --phys-data to record sample physical address.

    Signed-off-by: Kan Liang
    Tested-by: Jiri Olsa
    Acked-by: Stephane Eranian
    Cc: Andi Kleen
    Cc: Madhavan Srinivasan
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/1504026672-7304-2-git-send-email-kan.liang@intel.com
    [ Added missing printing in evsel.c patch sent by Jiri Olsa ]
    Signed-off-by: Arnaldo Carvalho de Melo

    Kan Liang
     

29 Aug, 2017

1 commit

  • In the initial sockmap API we provided strparser and verdict programs
    using a single attach command by extending the attach API with a the
    attach_bpf_fd2 field.

    However, if we add other programs in the future we will be adding a
    field for every new possible type, attach_bpf_fd(3,4,..). This
    seems a bit clumsy for an API. So lets push the programs using two
    new type fields.

    BPF_SK_SKB_STREAM_PARSER
    BPF_SK_SKB_STREAM_VERDICT

    This has the advantage of having a readable name and can easily be
    extended in the future.

    Updates to samples and sockmap included here also generalize tests
    slightly to support upcoming patch for multiple map support.

    Signed-off-by: John Fastabend
    Fixes: 174a79ff9515 ("bpf: sockmap with sk redirect support")
    Suggested-by: Alexei Starovoitov
    Acked-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    John Fastabend
     

28 Aug, 2017

2 commits


22 Aug, 2017

1 commit

  • Add decoding for the new "lvlx" and "snoopx" meminfo fields added
    earlier to the kernel so that "perf mem report" and other tools can
    print it properly.

    v2: Merge with persistent memory patch.
    Switch to new bit encoding for each combination.

    v3: Switch to generic lvlnum field.

    Signed-off-by: Andi Kleen
    Acked-by: Peter Zijlstra
    Cc: Jiri Olsa
    Link: http://lkml.kernel.org/r/20170816222156.19953-4-andi@firstfloor.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Andi Kleen
     

20 Aug, 2017

1 commit


17 Aug, 2017

1 commit

  • This program binds a program to a cgroup and then matches hard
    coded IP addresses and adds these to a sockmap.

    This will receive messages from the backend and send them to
    the client.

    client:X frontend:10000 client:X backend:10001

    To keep things simple this is only designed for 1:1 connections
    using hard coded values. A more complete example would allow many
    backends and clients.

    To run,

    # sockmap

    Signed-off-by: John Fastabend
    Signed-off-by: David S. Miller

    John Fastabend
     

10 Aug, 2017

1 commit

  • Currently, eBPF only understands BPF_JGT (>), BPF_JGE (>=),
    BPF_JSGT (s>), BPF_JSGE (s>=) instructions, this means that
    particularly *JLT/*JLE counterparts involving immediates need
    to be rewritten from e.g. X < [IMM] by swapping arguments into
    [IMM] > X, meaning the immediate first is required to be loaded
    into a register Y := [IMM], such that then we can compare with
    Y > X. Note that the destination operand is always required to
    be a register.

    This has the downside of having unnecessarily increased register
    pressure, meaning complex program would need to spill other
    registers temporarily to stack in order to obtain an unused
    register for the [IMM]. Loading to registers will thus also
    affect state pruning since we need to account for that register
    use and potentially those registers that had to be spilled/filled
    again. As a consequence slightly more stack space might have
    been used due to spilling, and BPF programs are a bit longer
    due to extra code involving the register load and potentially
    required spill/fills.

    Thus, add BPF_JLT (
    Acked-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Daniel Borkmann
     

09 Aug, 2017

1 commit

  • Add test for xdp_redirect by creating two namespaces with two
    veth peers, then forward packets in-between.

    Signed-off-by: William Tu
    Cc: Daniel Borkmann
    Cc: John Fastabend
    Acked-by: Daniel Borkmann
    Acked-by: John Fastabend
    Signed-off-by: David S. Miller

    William Tu
     

02 Aug, 2017

3 commits


01 Aug, 2017

3 commits

  • We will use it to generate tables for beautifying ioctl's 'cmd' arg.

    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Wang Nan
    Link: http://lkml.kernel.org/n/tip-bqoq114h917u6ggazn8m1w0t@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • In 04df41e343db ("bpf: update tools/include/uapi/linux/bpf.h") the files
    added in 40304b2a1567 ("bpf: BPF support for sock_ops") were added to
    tools/include, but not in a verbatim way, missing the comments, which
    ends up triggering this warning when build tools/perf/:

    make: Entering directory '/home/acme/git/linux/tools/perf'
    BUILD: Doing 'make -j4' parallel build
    Warning: Kernel ABI header at 'tools/include/uapi/linux/bpf.h' differs from latest version at 'include/uapi/linux/bpf.h'

    Make sure the the lines are equal, to fix the simple header copy
    drift detector in tools/perf/.

    Cc: Adrian Hunter
    Cc: Daniel Borkmann
    Cc: David Ahern
    Cc: David S. Miller
    Cc: Jiri Olsa
    Cc: Lawrence Brakmo
    Cc: Namhyung Kim
    Cc: Wang Nan
    Fixes: 04df41e343db ("bpf: update tools/include/uapi/linux/bpf.h")
    Link: http://lkml.kernel.org/n/tip-z9qyyqht9qq3yyxu76sfy0dh@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • So that we can build on older systems where otherwise we would end up
    with:

    CC /tmp/build/perf/trace/beauty/ioctl.o
    trace/beauty/ioctl.c: In function 'ioctl__scnprintf_tty_cmd':
    trace/beauty/ioctl.c:25:17: error: 'TIOCGEXCL' undeclared (first use in this function)
    trace/beauty/ioctl.c:25:17: note: each undeclared identifier is reported only once for each function it appears in
    trace/beauty/ioctl.c:25:2: error: array index in initializer not of integer type
    trace/beauty/ioctl.c:25:2: error: (near initialization for 'ioctl_tty_cmd')

    This way we can build a tool on an older system and it will still be
    capable of processing perf.data files generated on newer systems.

    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Wang Nan
    Link: http://lkml.kernel.org/n/tip-8qvkv6txwuzua6d0yvt65wl3@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

31 Jul, 2017

1 commit

  • In 2be7e212d541 ("bpf: add bpf_skb_adjust_room helper") BPF_ADJ_ROOM_NET was
    added to include/uapi/linux/bpf.h but BPF_ADJ_ROOM_NET_OPS was added to
    tools/include/uapi/linux/bpf.h, making these files differ, fix it by using the
    same name in both, BPF_ADJ_ROOM_NET, the one in the kernel headers copy.

    Cc: Adrian Hunter
    Cc: Daniel Borkmann
    Cc: David Ahern
    Cc: David S. Miller
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Wang Nan
    Fixes: 2be7e212d541 ("bpf: add bpf_skb_adjust_room helper")
    Link: http://lkml.kernel.org/n/tip-2bmwovi9lymplyz6wsszppyf@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

30 Jul, 2017

2 commits


21 Jul, 2017

1 commit

  • Replacing prefixcmp(), same purpose, inverted result, so standardize on
    the kernel variant, to reduce silly differences among tools/ and the
    kernel sources, making it easier for people to work in both codebases.

    And then doing:

    if (strstarts(option, "no-"))

    Looks clearer than doing:

    if (!prefixcmp(option, "no-"))

    To figure out if option starts witn "no-".

    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Josh Poimboeuf
    Cc: Namhyung Kim
    Cc: Rusty Russell
    Cc: Wang Nan
    Link: http://lkml.kernel.org/n/tip-kaei42gi7lpa8subwtv7eug8@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

20 Jul, 2017

1 commit

  • So that we make sure we have recent enough defines for things
    such as 'perf trace' system call argument beautifiers.

    For instance, the 'clone' syscall argument 'flag' needs to use
    CLONE_NEWCGROUP, and that is not available in RHEL7.

    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Wang Nan
    Link: http://lkml.kernel.org/n/tip-81sln0ng4a2lcxrth14vcov4@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

19 Jul, 2017

1 commit

  • It is often useful to know the branch types while analyzing branch data.
    For example, a call is very different from a conditional branch.

    Currently we have to look it up in binary while the binary may later not
    be available and even the binary is available but user has to take some
    time. It is very useful for user to check it directly in perf report.

    Perf already has support for disassembling the branch instruction to get
    the x86 branch type.

    To keep consistent on kernel and userspace and make the classification
    more common, the patch adds the common branch type classification
    in perf_event.h.

    The patch only defines a minimum but most common set of branch types.

    PERF_BR_UNKNOWN : unknown
    PERF_BR_COND :conditional
    PERF_BR_UNCOND : unconditional
    PERF_BR_IND : indirect
    PERF_BR_CALL : function call
    PERF_BR_IND_CALL : indirect function call
    PERF_BR_RET : function return
    PERF_BR_SYSCALL : syscall
    PERF_BR_SYSRET : syscall return
    PERF_BR_COND_CALL : conditional function call
    PERF_BR_COND_RET : conditional function return

    The patch also adds a new field type (4 bits) in perf_branch_entry
    to record the branch type.

    Since the disassembling of branch instruction needs some overhead,
    a new PERF_SAMPLE_BRANCH_TYPE_SAVE is introduced to indicate if it
    needs to disassemble the branch instruction and record the branch
    type.

    Change log:

    v10: Not changed.

    v9: Not changed.

    v8: Change PERF_BR_NONE to PERF_BR_UNKNOWN.
    No other change.

    v7: Just keep the most common branch types.
    Others are removed.

    v6: Not changed.

    v5: Not changed. The v5 patch series just change the userspace.

    v4: Comparing to previous version, the major changes are:

    1. Remove the PERF_BR_JCC_FWD/PERF_BR_JCC_BWD, they will be
    computed later in userspace.

    2. Remove the "cross" field in perf_branch_entry. The cross page
    computing will be done later in userspace.

    Signed-off-by: Yao Jin
    Acked-by: Jiri Olsa
    Acked-by: Michael Ellerman
    Acked-by: Peter Zijlstra
    Cc: Alexander Shishkin
    Cc: Andi Kleen
    Cc: Kan Liang
    Link: http://lkml.kernel.org/r/1500379995-6449-2-git-send-email-yao.jin@linux.intel.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Jin Yao