22 Apr, 2020

1 commit

  • remap_vmalloc_range() has had various issues with the bounds checks it
    promises to perform ("This function checks that addr is a valid
    vmalloc'ed area, and that it is big enough to cover the vma") over time,
    e.g.:

    - not detecting pgoff<<<<
    Signed-off-by: Andrew Morton
    Cc: stable@vger.kernel.org
    Cc: Alexei Starovoitov
    Cc: Daniel Borkmann
    Cc: Martin KaFai Lau
    Cc: Song Liu
    Cc: Yonghong Song
    Cc: Andrii Nakryiko
    Cc: John Fastabend
    Cc: KP Singh
    Link: http://lkml.kernel.org/r/20200415222312.236431-1-jannh@google.com
    Signed-off-by: Linus Torvalds

    Jann Horn
     

08 Apr, 2020

2 commits

  • The 'data_breakpoint' test code is the only modular user of
    kallsyms_lookup_name(), which was exported as part of fixing the test in
    f60d24d2ad04 ("hw-breakpoints: Fix broken hw-breakpoint sample module").

    In preparation for un-exporting this symbol, switch the test over to using
    __symbol_get(), which can be used to place breakpoints on exported
    symbols.

    Signed-off-by: Will Deacon
    Signed-off-by: Andrew Morton
    Reviewed-by: Christoph Hellwig
    Reviewed-by: Masami Hiramatsu
    Reviewed-by: Quentin Perret
    Cc: K.Prasad
    Cc: Thomas Gleixner
    Cc: Greg Kroah-Hartman
    Cc: Frederic Weisbecker
    Cc: Alexei Starovoitov
    Cc: Miroslav Benes
    Cc: Petr Mladek
    Cc: Joe Lawrence
    Link: http://lkml.kernel.org/r/20200221114404.14641-3-will@kernel.org
    Signed-off-by: Linus Torvalds

    Will Deacon
     
  • Patch series "Unexport kallsyms_lookup_name() and kallsyms_on_each_symbol()".

    Despite having just a single modular in-tree user that I could spot,
    kallsyms_lookup_name() is exported to modules and provides a mechanism
    for out-of-tree modules to access and invoke arbitrary, non-exported
    kernel symbols when kallsyms is enabled.

    This patch series fixes up that one user and unexports the symbol along
    with kallsyms_on_each_symbol(), since that could also be abused in a
    similar manner.

    I would like to avoid out-of-tree modules being easily able to call
    functions that are not exported. kallsyms_lookup_name() makes this
    trivial to the point that there is very little incentive to rework these
    modules to either use upstream interfaces correctly or propose
    functionality which may be otherwise missing upstream. Both of these
    latter solutions would be pre-requisites to upstreaming these modules, and
    the current state of things actively discourages that approach.

    The background here is that we are aiming for Android devices to be able
    to use a generic binary kernel image closely following upstream, with any
    vendor extensions coming in as kernel modules. In this case, we (Google)
    end up maintaining the binary module ABI within the scope of a single LTS
    kernel. Monitoring and managing the ABI surface is not feasible if it
    effectively includes all data and functions via kallsyms_lookup_name().
    Of course, we could just carry this patch in the Android kernel tree, but
    we're aiming to carry as little as possible (ideally nothing) and I think
    it's a sensible change in its own right. I'm surprised you object to it,
    in all honesty.

    Now, you could turn around and say "that's not upstream's problem", but it
    still seems highly undesirable to me to have an upstream bypass for
    exported symbols that isn't even used by upstream modules. It's ripe for
    abuse and encourages people to work outside of the upstream tree. The
    usual rule is that we don't export symbols without a user in the tree and
    that seems especially relevant in this case.

    Joe Lawrence said:

    : FWIW, kallsyms was historically used by the out-of-tree kpatch support
    : module to resolve external symbols as well as call set_memory_r{w,o}()
    : API. All of that support code has been merged upstream, so modern kpatch
    : modules* no longer leverage kallsyms by default.
    :
    : That said, there are still some users who still use the deprecated support
    : module with newer kernels, but that is not officially supported by the
    : project.

    This patch (of 3):

    Given the name of a kernel symbol, the 'data_breakpoint' test claims to
    "report any write operations on the kernel symbol". However, it creates
    the breakpoint using both HW_BREAKPOINT_W and HW_BREAKPOINT_R, which menas
    it also fires for read access.

    Drop HW_BREAKPOINT_R from the breakpoint attributes.

    Signed-off-by: Will Deacon
    Signed-off-by: Andrew Morton
    Reviewed-by: Christoph Hellwig
    Reviewed-by: Masami Hiramatsu
    Reviewed-by: Quentin Perret
    Cc: K.Prasad
    Cc: Thomas Gleixner
    Cc: Greg Kroah-Hartman
    Cc: Frederic Weisbecker
    Cc: Alexei Starovoitov
    Cc: Miroslav Benes
    Cc: Petr Mladek
    Cc: Joe Lawrence
    Link: http://lkml.kernel.org/r/20200221114404.14641-2-will@kernel.org
    Signed-off-by: Linus Torvalds

    Will Deacon
     

04 Apr, 2020

1 commit

  • Pull SPDX updates from Greg KH:
    "Here are three SPDX patches for 5.7-rc1.

    One fixes up the SPDX tag for a single driver, while the other two go
    through the tree and add SPDX tags for all of the .gitignore files as
    needed.

    Nothing too complex, but you will get a merge conflict with your
    current tree, that should be trivial to handle (one file modified by
    two things, one file deleted.)

    All three of these have been in linux-next for a while, with no
    reported issues other than the merge conflict"

    * tag 'spdx-5.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/spdx:
    ASoC: MT6660: make spdxcheck.py happy
    .gitignore: add SPDX License Identifier
    .gitignore: remove too obvious comments

    Linus Torvalds
     

01 Apr, 2020

1 commit

  • Pull networking updates from David Miller:
    "Highlights:

    1) Fix the iwlwifi regression, from Johannes Berg.

    2) Support BSS coloring and 802.11 encapsulation offloading in
    hardware, from John Crispin.

    3) Fix some potential Spectre issues in qtnfmac, from Sergey
    Matyukevich.

    4) Add TTL decrement action to openvswitch, from Matteo Croce.

    5) Allow paralleization through flow_action setup by not taking the
    RTNL mutex, from Vlad Buslov.

    6) A lot of zero-length array to flexible-array conversions, from
    Gustavo A. R. Silva.

    7) Align XDP statistics names across several drivers for consistency,
    from Lorenzo Bianconi.

    8) Add various pieces of infrastructure for offloading conntrack, and
    make use of it in mlx5 driver, from Paul Blakey.

    9) Allow using listening sockets in BPF sockmap, from Jakub Sitnicki.

    10) Lots of parallelization improvements during configuration changes
    in mlxsw driver, from Ido Schimmel.

    11) Add support to devlink for generic packet traps, which report
    packets dropped during ACL processing. And use them in mlxsw
    driver. From Jiri Pirko.

    12) Support bcmgenet on ACPI, from Jeremy Linton.

    13) Make BPF compatible with RT, from Thomas Gleixnet, Alexei
    Starovoitov, and your's truly.

    14) Support XDP meta-data in virtio_net, from Yuya Kusakabe.

    15) Fix sysfs permissions when network devices change namespaces, from
    Christian Brauner.

    16) Add a flags element to ethtool_ops so that drivers can more simply
    indicate which coalescing parameters they actually support, and
    therefore the generic layer can validate the user's ethtool
    request. Use this in all drivers, from Jakub Kicinski.

    17) Offload FIFO qdisc in mlxsw, from Petr Machata.

    18) Support UDP sockets in sockmap, from Lorenz Bauer.

    19) Fix stretch ACK bugs in several TCP congestion control modules,
    from Pengcheng Yang.

    20) Support virtual functiosn in octeontx2 driver, from Tomasz
    Duszynski.

    21) Add region operations for devlink and use it in ice driver to dump
    NVM contents, from Jacob Keller.

    22) Add support for hw offload of MACSEC, from Antoine Tenart.

    23) Add support for BPF programs that can be attached to LSM hooks,
    from KP Singh.

    24) Support for multiple paths, path managers, and counters in MPTCP.
    From Peter Krystad, Paolo Abeni, Florian Westphal, Davide Caratti,
    and others.

    25) More progress on adding the netlink interface to ethtool, from
    Michal Kubecek"

    * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (2121 commits)
    net: ipv6: rpl_iptunnel: Fix potential memory leak in rpl_do_srh_inline
    cxgb4/chcr: nic-tls stats in ethtool
    net: dsa: fix oops while probing Marvell DSA switches
    net/bpfilter: remove superfluous testing message
    net: macb: Fix handling of fixed-link node
    net: dsa: ksz: Select KSZ protocol tag
    netdevsim: dev: Fix memory leak in nsim_dev_take_snapshot_write
    net: stmmac: add EHL 2.5Gbps PCI info and PCI ID
    net: stmmac: add EHL PSE0 & PSE1 1Gbps PCI info and PCI ID
    net: stmmac: create dwmac-intel.c to contain all Intel platform
    net: dsa: bcm_sf2: Support specifying VLAN tag egress rule
    net: dsa: bcm_sf2: Add support for matching VLAN TCI
    net: dsa: bcm_sf2: Move writing of CFP_DATA(5) into slicing functions
    net: dsa: bcm_sf2: Check earlier for FLOW_EXT and FLOW_MAC_EXT
    net: dsa: bcm_sf2: Disable learning for ASP port
    net: dsa: b53: Deny enslaving port 7 for 7278 into a bridge
    net: dsa: b53: Prevent tagged VLAN on port 7 for 7278
    net: dsa: b53: Restore VLAN entries upon (re)configuration
    net: dsa: bcm_sf2: Fix overflow checks
    hv_netvsc: Remove unnecessary round_up for recv_completion_cnt
    ...

    Linus Torvalds
     

25 Mar, 2020

1 commit


24 Mar, 2020

2 commits

  • The bpf_program__attach of libbpf(using bpf_link) is much more intuitive
    than the previous method using ioctl.

    bpf_program__attach_perf_event manages the enable of perf_event and
    attach of BPF programs to it, so there's no neeed to do this
    directly with ioctl.

    In addition, bpf_link provides consistency in the use of API because it
    allows disable (detach, destroy) for multiple events to be treated as
    one bpf_link__destroy. Also, bpf_link__destroy manages the close() of
    perf_event fd.

    This commit refactors samples that attach the bpf program to perf_event
    by using libbbpf instead of ioctl. Also the bpf_load in the samples were
    removed and migrated to use libbbpf API.

    Signed-off-by: Daniel T. Lee
    Signed-off-by: Daniel Borkmann
    Acked-by: Andrii Nakryiko
    Link: https://lore.kernel.org/bpf/20200321100424.1593964-3-danieltimlee@gmail.com

    Daniel T. Lee
     
  • To reduce the reliance of trace samples (trace*_user) on bpf_load,
    move read_trace_pipe to trace_helpers. By moving this bpf_loader helper
    elsewhere, trace functions can be easily migrated to libbbpf.

    Signed-off-by: Daniel T. Lee
    Signed-off-by: Daniel Borkmann
    Acked-by: Andrii Nakryiko
    Link: https://lore.kernel.org/bpf/20200321100424.1593964-2-danieltimlee@gmail.com

    Daniel T. Lee
     

24 Feb, 2020

1 commit

  • We currently have the following devnode types:

    enum vfl_devnode_type {
    VFL_TYPE_GRABBER = 0,
    VFL_TYPE_VBI,
    VFL_TYPE_RADIO,
    VFL_TYPE_SUBDEV,
    VFL_TYPE_SDR,
    VFL_TYPE_TOUCH,
    VFL_TYPE_MAX /* Shall be the last one */
    };

    They all make sense, except for the first: GRABBER really refers to /dev/videoX
    devices, which can be capture, output or m2m, so 'grabber' doesn't even refer to
    their function anymore.

    Let's call a spade a spade and rename this to VFL_TYPE_VIDEO.

    Signed-off-by: Hans Verkuil
    Acked-by: Sakari Ailus
    Reviewed-by: Laurent Pinchart
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     

10 Feb, 2020

1 commit

  • Pull more Kbuild updates from Masahiro Yamada:

    - fix randconfig to generate a sane .config

    - rename hostprogs-y / always to hostprogs / always-y, which are more
    natual syntax.

    - optimize scripts/kallsyms

    - fix yes2modconfig and mod2yesconfig

    - make multiple directory targets ('make foo/ bar/') work

    * tag 'kbuild-v5.6-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
    kbuild: make multiple directory targets work
    kconfig: Invalidate all symbols after changing to y or m.
    kallsyms: fix type of kallsyms_token_table[]
    scripts/kallsyms: change table to store (strcut sym_entry *)
    scripts/kallsyms: rename local variables in read_symbol()
    kbuild: rename hostprogs-y/always to hostprogs/always-y
    kbuild: fix the document to use extra-y for vmlinux.lds
    kconfig: fix broken dependency in randconfig-generated .config

    Linus Torvalds
     

08 Feb, 2020

1 commit

  • Daniel Borkmann says:

    ====================
    pull-request: bpf 2020-02-07

    The following pull-request contains BPF updates for your *net* tree.

    We've added 15 non-merge commits during the last 10 day(s) which contain
    a total of 12 files changed, 114 insertions(+), 31 deletions(-).

    The main changes are:

    1) Various BPF sockmap fixes related to RCU handling in the map's tear-
    down code, from Jakub Sitnicki.

    2) Fix macro state explosion in BPF sk_storage map when calculating its
    bucket_log on allocation, from Martin KaFai Lau.

    3) Fix potential BPF sockmap update race by rechecking socket's established
    state under lock, from Lorenz Bauer.

    4) Fix crash in bpftool on missing xlated instructions when kptr_restrict
    sysctl is set, from Toke Høiland-Jørgensen.

    5) Fix i40e's XSK wakeup code to return proper error in busy state and
    various misc fixes in xdpsock BPF sample code, from Maciej Fijalkowski.

    6) Fix the way modifiers are skipped in BTF in the verifier while walking
    pointers to avoid program rejection, from Alexei Starovoitov.

    7) Fix Makefile for runqslower BPF tool to i) rebuild on libbpf changes and
    ii) to fix undefined reference linker errors for older gcc version due to
    order of passed gcc parameters, from Yulia Kartseva and Song Liu.

    8) Fix a trampoline_count BPF kselftest warning about missing braces around
    initializer, from Andrii Nakryiko.

    9) Fix up redundant "HAVE" prefix from large INSN limit kernel probe in
    bpftool, from Michal Rostecki.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     

06 Feb, 2020

2 commits

  • ndo_xsk_wakeup() can return -ENETDOWN and there's no particular reason
    to bail the whole application out on that case. Let's check in kick_tx()
    whether errno was set to mentioned value and basically allow application
    to further process frames.

    Fixes: 248c7f9c0e21 ("samples/bpf: convert xdpsock to use libbpf for AF_XDP access")
    Reported-by: Cameron Elliott
    Signed-off-by: Maciej Fijalkowski
    Signed-off-by: Daniel Borkmann
    Acked-by: Björn Töpel
    Link: https://lore.kernel.org/bpf/20200205045834.56795-4-maciej.fijalkowski@intel.com

    Maciej Fijalkowski
     
  • Seems that by accident there is a doubled declaration of global variable
    opt_xdp_bind_flags in xdpsock_user.c. The second one is uninitialized so
    compiler was simply ignoring it.

    To keep things clean, drop the doubled variable.

    Fixes: c543f5469822 ("samples/bpf: add unaligned chunks mode support to xdpsock")
    Signed-off-by: Maciej Fijalkowski
    Signed-off-by: Daniel Borkmann
    Acked-by: Björn Töpel
    Link: https://lore.kernel.org/bpf/20200205045834.56795-3-maciej.fijalkowski@intel.com

    Maciej Fijalkowski
     

04 Feb, 2020

2 commits

  • The most notable change is DEFINE_SHOW_ATTRIBUTE macro split in
    seq_file.h.

    Conversion rule is:

    llseek => proc_lseek
    unlocked_ioctl => proc_ioctl

    xxx => proc_xxx

    delete ".owner = THIS_MODULE" line

    [akpm@linux-foundation.org: fix drivers/isdn/capi/kcapi_proc.c]
    [sfr@canb.auug.org.au: fix kernel/sched/psi.c]
    Link: http://lkml.kernel.org/r/20200122180545.36222f50@canb.auug.org.au
    Link: http://lkml.kernel.org/r/20191225172546.GB13378@avx2
    Signed-off-by: Alexey Dobriyan
    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     
  • In old days, the "host-progs" syntax was used for specifying host
    programs. It was renamed to the current "hostprogs-y" in 2004.

    It is typically useful in scripts/Makefile because it allows Kbuild to
    selectively compile host programs based on the kernel configuration.

    This commit renames like follows:

    always -> always-y
    hostprogs-y -> hostprogs

    So, scripts/Makefile will look like this:

    always-$(CONFIG_BUILD_BIN2C) += ...
    always-$(CONFIG_KALLSYMS) += ...
    ...
    hostprogs := $(always-y) $(always-m)

    I think this makes more sense because a host program is always a host
    program, irrespective of the kernel configuration. We want to specify
    which ones to compile by CONFIG options, so always-y will be handier.

    The "always", "hostprogs-y", "hostprogs-m" will be kept for backward
    compatibility for a while.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

31 Jan, 2020

1 commit

  • Pull drm updates from Davbe Airlie:
    "This is the main pull request for graphics for 5.6. Usual selection of
    changes all over.

    I've got one outstanding vmwgfx pull that touches mm so kept it
    separate until after all of this lands. I'll try and get it to you
    soon after this, but it might be early next week (nothing wrong with
    code, just my schedule is messy)

    This also hits a lot of fbdev drivers with some cleanups.

    Other notables:
    - vulkan timeline semaphore support added to syncobjs
    - nouveau turing secureboot/graphics support
    - Displayport MST display stream compression support

    Detailed summary:

    uapi:
    - dma-buf heaps added (and fixed)
    - command line add support for panel oreientation
    - command line allow overriding penguin count

    drm:
    - mipi dsi definition updates
    - lockdep annotations for dma_resv
    - remove dma-buf kmap/kunmap support
    - constify fb_ops in all fbdev drivers
    - MST fix for daisy chained hotplug-
    - CTA-861-G modes with VIC >= 193 added
    - fix drm_panel_of_backlight export
    - LVDS decoder support
    - more device based logging support
    - scanline alighment for dumb buffers
    - MST DSC helpers

    scheduler:
    - documentation fixes
    - job distribution improvements

    panel:
    - Logic PD type 28 panel support
    - Jimax8729d MIPI-DSI
    - igenic JZ4770
    - generic DSI devicetree bindings
    - sony acx424AKP panel
    - Leadtek LTK500HD1829
    - xinpeng XPP055C272
    - AUO B116XAK01
    - GiantPlus GPM940B0
    - BOE NV140FHM-N49
    - Satoz SAT050AT40H12R2
    - Sharp LS020B1DD01D panels.

    ttm:
    - use blocking WW lock

    i915:
    - hw/uapi state separation
    - Lock annotation improvements
    - selftest improvements
    - ICL/TGL DSI VDSC support
    - VBT parsing improvments
    - Display refactoring
    - DSI updates + fixes
    - HDCP 2.2 for CFL
    - CML PCI ID fixes
    - GLK+ fbc fix
    - PSR fixes
    - GEN/GT refactor improvments
    - DP MST fixes
    - switch context id alloc to xarray
    - workaround updates
    - LMEM debugfs support
    - tiled monitor fixes
    - ICL+ clock gating programming removed
    - DP MST disable sequence fixed
    - LMEM discontiguous object maps
    - prefaulting for discontiguous objects
    - use LMEM for dumb buffers if possible
    - add LMEM mmap support

    amdgpu:
    - enable sync object timelines for vulkan
    - MST atomic routines
    - enable MST DSC support
    - add DMCUB display microengine support
    - DC OEM i2c support
    - Renoir DC fixes
    - Initial HDCP 2.x support
    - BACO support for Arcturus
    - Use BACO for runtime PM power save
    - gfxoff on navi10
    - gfx10 golden updates and fixes
    - DCN support on POWER
    - GFXOFF for raven1 refresh
    - MM engine idle handlers cleanup
    - 10bpc EDP panel fixes
    - renoir watermark fixes
    - SR-IOV fixes
    - Arcturus VCN fixes
    - GDDR6 training fixes
    - freesync fixes
    - Pollock support

    amdkfd:
    - unify more codepath with amdgpu
    - use KIQ to setup HIQ rather than MMIO

    radeon:
    - fix vma fault handler race
    - PPC DMA fix
    - register check fixes for r100/r200

    nouveau:
    - mmap_sem vs dma_resv fix
    - rewrite the ACR secure boot code for Turing
    - TU10x graphics engine support (TU11x pending)
    - Page kind mapping for turing
    - 10-bit LUT support
    - GP10B Tegra fixes
    - HD audio regression fix

    hisilicon/hibmc:
    - use generic fbdev code and helpers

    rockchip:
    - dsi/px30 support

    virtio:
    - fb damage support
    - static some functions

    vc4:
    - use dma_resv lock wrappers

    msm:
    - use dma_resv lock wrappers
    - sc7180 display + DSI support
    - a618 support
    - UBWC support improvements

    vmwgfx:
    - updates + new logging uapi

    exynos:
    - enable/disable callback cleanups

    etnaviv:
    - use dma_resv lock wrappers

    atmel-hlcdc:
    - clock fixes

    mediatek:
    - cmdq support
    - non-smooth cursor fixes
    - ctm property support

    sun4i:
    - suspend support
    - A64 mipi dsi support

    rcar-du:
    - Color management module support
    - LVDS encoder dual-link support
    - R8A77980 support

    analogic:
    - add support for an6345

    ast:
    - atomic modeset support
    - primary plane garbage fix

    arcgpu:
    - fixes for fourcc handling

    tegra:
    - minor fixes and improvments

    mcde:
    - vblank support

    meson:
    - OSD1 plane AFBC commit

    gma500:
    - add pageflip support
    - reomve global drm_dev

    komeda:
    - tweak debugfs output
    - d32 support
    - runtime PM suppotr

    udl:
    - use generic shmem helpers
    - cleanup and fixes"

    * tag 'drm-next-2020-01-30' of git://anongit.freedesktop.org/drm/drm: (1998 commits)
    drm/nouveau/fb/gp102-: allow module to load even when scrubber binary is missing
    drm/nouveau/acr: return error when registering LSF if ACR not supported
    drm/nouveau/disp/gv100-: not all channel types support reporting error codes
    drm/nouveau/disp/nv50-: prevent oops when no channel method map provided
    drm/nouveau: support synchronous pushbuf submission
    drm/nouveau: signal pending fences when channel has been killed
    drm/nouveau: reject attempts to submit to dead channels
    drm/nouveau: zero vma pointer even if we only unreference it rather than free
    drm/nouveau: Add HD-audio component notifier support
    drm/nouveau: fix build error without CONFIG_IOMMU_API
    drm/nouveau/kms/nv04: remove set but not used variable 'width'
    drm/nouveau/kms/nv50: remove set but not unused variable 'nv_connector'
    drm/nouveau/mmu: fix comptag memory leak
    drm/nouveau/gr/gp10b: Use gp100_grctx and gp100_gr_zbc
    drm/nouveau/pmu/gm20b,gp10b: Fix Falcon bootstrapping
    drm/exynos: Rename Exynos to lowercase
    drm/exynos: change callback names
    drm/mst: Don't do atomic checks over disabled managers
    drm/amdgpu: add the lost mutex_init back
    drm/amd/display: skip opp blank or unblank if test pattern enabled
    ...

    Linus Torvalds
     

30 Jan, 2020

1 commit


29 Jan, 2020

1 commit

  • Pull networking updates from David Miller:

    1) Add WireGuard

    2) Add HE and TWT support to ath11k driver, from John Crispin.

    3) Add ESP in TCP encapsulation support, from Sabrina Dubroca.

    4) Add variable window congestion control to TIPC, from Jon Maloy.

    5) Add BCM84881 PHY driver, from Russell King.

    6) Start adding netlink support for ethtool operations, from Michal
    Kubecek.

    7) Add XDP drop and TX action support to ena driver, from Sameeh
    Jubran.

    8) Add new ipv4 route notifications so that mlxsw driver does not have
    to handle identical routes itself. From Ido Schimmel.

    9) Add BPF dynamic program extensions, from Alexei Starovoitov.

    10) Support RX and TX timestamping in igc, from Vinicius Costa Gomes.

    11) Add support for macsec HW offloading, from Antoine Tenart.

    12) Add initial support for MPTCP protocol, from Christoph Paasch,
    Matthieu Baerts, Florian Westphal, Peter Krystad, and many others.

    13) Add Octeontx2 PF support, from Sunil Goutham, Geetha sowjanya, Linu
    Cherian, and others.

    * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (1469 commits)
    net: phy: add default ARCH_BCM_IPROC for MDIO_BCM_IPROC
    udp: segment looped gso packets correctly
    netem: change mailing list
    qed: FW 8.42.2.0 debug features
    qed: rt init valid initialization changed
    qed: Debug feature: ilt and mdump
    qed: FW 8.42.2.0 Add fw overlay feature
    qed: FW 8.42.2.0 HSI changes
    qed: FW 8.42.2.0 iscsi/fcoe changes
    qed: Add abstraction for different hsi values per chip
    qed: FW 8.42.2.0 Additional ll2 type
    qed: Use dmae to write to widebus registers in fw_funcs
    qed: FW 8.42.2.0 Parser offsets modified
    qed: FW 8.42.2.0 Queue Manager changes
    qed: FW 8.42.2.0 Expose new registers and change windows
    qed: FW 8.42.2.0 Internal ram offsets modifications
    MAINTAINERS: Add entry for Marvell OcteonTX2 Physical Function driver
    Documentation: net: octeontx2: Add RVU HW and drivers overview
    octeontx2-pf: ethtool RSS config support
    octeontx2-pf: Add basic ethtool support
    ...

    Linus Torvalds
     

28 Jan, 2020

1 commit

  • Pull livepatching updates from Jiri Kosina:
    "Fixes for selftests and samples for 'shadow variables' livepatching
    feature, from Petr Mladek"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/livepatching/livepatching:
    livepatch: Handle allocation failure in the sample of shadow variable API
    livepatch/samples/selftest: Use klp_shadow_alloc() API correctly
    livepatch/selftest: Clean up shadow variable names and type
    livepatch/sample: Use the right type for the leaking data pointer

    Linus Torvalds
     

23 Jan, 2020

1 commit

  • Alexei Starovoitov says:

    ====================
    pull-request: bpf-next 2020-01-22

    The following pull-request contains BPF updates for your *net-next* tree.

    We've added 92 non-merge commits during the last 16 day(s) which contain
    a total of 320 files changed, 7532 insertions(+), 1448 deletions(-).

    The main changes are:

    1) function by function verification and program extensions from Alexei.

    2) massive cleanup of selftests/bpf from Toke and Andrii.

    3) batched bpf map operations from Brian and Yonghong.

    4) tcp congestion control in bpf from Martin.

    5) bulking for non-map xdp_redirect form Toke.

    6) bpf_send_signal_thread helper from Yonghong.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     

22 Jan, 2020

1 commit

  • The code in the 'samples' subdirectory isn't part of the kernel, so
    there's no need to validate it.

    Reported-by: Randy Dunlap
    Signed-off-by: Josh Poimboeuf
    Signed-off-by: Ingo Molnar
    Link: https://lore.kernel.org/r/c4cb4ef635ec606454ab834cb49fc3e9381fb1b1.1579543924.git.jpoimboe@redhat.com

    Josh Poimboeuf
     

21 Jan, 2020

2 commits

  • Fix all files in samples/bpf to include libbpf header files with the bpf/
    prefix, to be consistent with external users of the library. Also ensure
    that all includes of exported libbpf header files (those that are exported
    on 'make install' of the library) use bracketed includes instead of quoted.

    To make sure no new files are introduced that doesn't include the bpf/
    prefix in its include, remove tools/lib/bpf from the include path entirely,
    and use tools/lib instead.

    Fixes: 6910d7d3867a ("selftests/bpf: Ensure bpf_helper_defs.h are taken from selftests dir")
    Signed-off-by: Toke Høiland-Jørgensen
    Signed-off-by: Alexei Starovoitov
    Acked-by: Jesper Dangaard Brouer
    Acked-by: Andrii Nakryiko
    Link: https://lore.kernel.org/bpf/157952560911.1683545.8795966751309534150.stgit@toke.dk

    Toke Høiland-Jørgensen
     
  • The 'clean' rule in the samples/bpf Makefile tries to remove backup
    files (ending in ~). However, if no such files exist, it will instead try
    to remove the user's home directory. While the attempt is mostly harmless,
    it does lead to a somewhat scary warning like this:

    rm: cannot remove '~': Is a directory

    Fix this by using find instead of shell expansion to locate any actual
    backup files that need to be removed.

    Fixes: b62a796c109c ("samples/bpf: allow make to be run from samples/bpf/ directory")
    Signed-off-by: Toke Høiland-Jørgensen
    Signed-off-by: Alexei Starovoitov
    Acked-by: Jesper Dangaard Brouer
    Link: https://lore.kernel.org/bpf/157952560126.1683545.7273054725976032511.stgit@toke.dk

    Toke Høiland-Jørgensen
     

20 Jan, 2020

1 commit


17 Jan, 2020

4 commits

  • klp_shadow_alloc() is not handled in the sample of shadow variable API.
    It is not strictly necessary because livepatch_fix1_dummy_free() is
    able to handle the potential failure. But it is an example and it should
    use the API a clean way.

    Signed-off-by: Petr Mladek
    Reviewed-by: Joe Lawrence
    Acked-by: Miroslav Benes
    Reviewed-by: Kamalesh Babulal
    Signed-off-by: Jiri Kosina

    Petr Mladek
     
  • The commit e91c2518a5d22a ("livepatch: Initialize shadow variables
    safely by a custom callback") leads to the following static checker
    warning:

    samples/livepatch/livepatch-shadow-fix1.c:86 livepatch_fix1_dummy_alloc()
    error: 'klp_shadow_alloc()' 'leak' too small (4 vs 8)

    It is because klp_shadow_alloc() is used a wrong way:

    int *leak;
    shadow_leak = klp_shadow_alloc(d, SV_LEAK, sizeof(leak), GFP_KERNEL,
    shadow_leak_ctor, leak);

    The code is supposed to store the "leak" pointer into the shadow variable.
    3rd parameter correctly passes size of the data (size of pointer). But
    the 5th parameter is wrong. It should pass pointer to the data (pointer
    to the pointer) but it passes the pointer directly.

    It works because shadow_leak_ctor() handle "ctor_data" as the data
    instead of pointer to the data. But it is semantically wrong and
    confusing.

    The same problem is also in the module used by selftests. In this case,
    "pvX" variables are introduced. They represent the data stored in
    the shadow variables.

    Reported-by: Dan Carpenter
    Signed-off-by: Petr Mladek
    Reviewed-by: Joe Lawrence
    Acked-by: Miroslav Benes
    Reviewed-by: Kamalesh Babulal
    Signed-off-by: Jiri Kosina

    Petr Mladek
     
  • The "leak" pointer, in the sample of shadow variable API, is allocated
    as sizeof(int). Let's help developers and static analyzers with
    understanding the code by using the appropriate pointer type.

    Reported-by: Dan Carpenter
    Signed-off-by: Petr Mladek
    Reviewed-by: Joe Lawrence
    Acked-by: Miroslav Benes
    Reviewed-by: Kamalesh Babulal
    Signed-off-by: Jiri Kosina

    Petr Mladek
     
  • Now that we don't have a reference to a devmap when flushing the device
    bulk queue, let's change the the devmap_xmit tracepoint to remote the
    map_id and map_index fields entirely. Rearrange the fields so 'drops' and
    'sent' stay in the same position in the tracepoint struct, to make it
    possible for the xdp_monitor utility to read both the old and the new
    format.

    Signed-off-by: Jesper Dangaard Brouer
    Signed-off-by: Toke Høiland-Jørgensen
    Signed-off-by: Alexei Starovoitov
    Link: https://lore.kernel.org/bpf/157918768613.1458396.9165902403373826572.stgit@toke.dk

    Jesper Dangaard Brouer
     

10 Jan, 2020

1 commit


03 Jan, 2020

1 commit

  • The sizes by which seccomp_notif and seccomp_notif_resp are allocated are
    based on the SECCOMP_GET_NOTIF_SIZES ioctl. This allows for graceful
    extension of these datastructures. If userspace zeroes out the
    datastructure based on its version, and it is lagging behind the kernel's
    version, it will end up sending trailing garbage. On the other hand,
    if it is ahead of the kernel version, it will write extra zero space,
    and potentially cause corruption.

    Signed-off-by: Sargun Dhillon
    Suggested-by: Tycho Andersen
    Link: https://lore.kernel.org/r/20191230203503.4925-1-sargun@sargun.me
    Fixes: fec7b6690541 ("samples: add an example of seccomp user trap")
    Cc: stable@vger.kernel.org
    Signed-off-by: Kees Cook

    Sargun Dhillon
     

28 Dec, 2019

1 commit

  • Daniel Borkmann says:

    ====================
    pull-request: bpf-next 2019-12-27

    The following pull-request contains BPF updates for your *net-next* tree.

    We've added 127 non-merge commits during the last 17 day(s) which contain
    a total of 110 files changed, 6901 insertions(+), 2721 deletions(-).

    There are three merge conflicts. Conflicts and resolution looks as follows:

    1) Merge conflict in net/bpf/test_run.c:

    There was a tree-wide cleanup c593642c8be0 ("treewide: Use sizeof_field() macro")
    which gets in the way with b590cb5f802d ("bpf: Switch to offsetofend in
    BPF_PROG_TEST_RUN"):

    <<<<<<< HEAD
    if (!range_is_zero(__skb, offsetof(struct __sk_buff, priority) +
    sizeof_field(struct __sk_buff, priority),
    =======
    if (!range_is_zero(__skb, offsetofend(struct __sk_buff, priority),
    >>>>>>> 7c8dce4b166113743adad131b5a24c4acc12f92c

    There are a few occasions that look similar to this. Always take the chunk with
    offsetofend(). Note that there is one where the fields differ in here:

    <<<<<<< HEAD
    if (!range_is_zero(__skb, offsetof(struct __sk_buff, tstamp) +
    sizeof_field(struct __sk_buff, tstamp),
    =======
    if (!range_is_zero(__skb, offsetofend(struct __sk_buff, gso_segs),
    >>>>>>> 7c8dce4b166113743adad131b5a24c4acc12f92c

    Just take the one with offsetofend() /and/ gso_segs. Latter is correct due to
    850a88cc4096 ("bpf: Expose __sk_buff wire_len/gso_segs to BPF_PROG_TEST_RUN").

    2) Merge conflict in arch/riscv/net/bpf_jit_comp.c:

    (I'm keeping Bjorn in Cc here for a double-check in case I got it wrong.)

    <<<<<<< HEAD
    if (is_13b_check(off, insn))
    return -1;
    emit(rv_blt(tcc, RV_REG_ZERO, off >> 1), ctx);
    =======
    emit_branch(BPF_JSLT, RV_REG_T1, RV_REG_ZERO, off, ctx);
    >>>>>>> 7c8dce4b166113743adad131b5a24c4acc12f92c

    Result should look like:

    emit_branch(BPF_JSLT, tcc, RV_REG_ZERO, off, ctx);

    3) Merge conflict in arch/riscv/include/asm/pgtable.h:

    <<<<<<< HEAD
    =======
    #define VMALLOC_SIZE (KERN_VIRT_SIZE >> 1)
    #define VMALLOC_END (PAGE_OFFSET - 1)
    #define VMALLOC_START (PAGE_OFFSET - VMALLOC_SIZE)

    #define BPF_JIT_REGION_SIZE (SZ_128M)
    #define BPF_JIT_REGION_START (PAGE_OFFSET - BPF_JIT_REGION_SIZE)
    #define BPF_JIT_REGION_END (VMALLOC_END)

    /*
    * Roughly size the vmemmap space to be large enough to fit enough
    * struct pages to map half the virtual address space. Then
    * position vmemmap directly below the VMALLOC region.
    */
    #define VMEMMAP_SHIFT \
    (CONFIG_VA_BITS - PAGE_SHIFT - 1 + STRUCT_PAGE_MAX_SHIFT)
    #define VMEMMAP_SIZE BIT(VMEMMAP_SHIFT)
    #define VMEMMAP_END (VMALLOC_START - 1)
    #define VMEMMAP_START (VMALLOC_START - VMEMMAP_SIZE)

    #define vmemmap ((struct page *)VMEMMAP_START)

    >>>>>>> 7c8dce4b166113743adad131b5a24c4acc12f92c

    Only take the BPF_* defines from there and move them higher up in the
    same file. Remove the rest from the chunk. The VMALLOC_* etc defines
    got moved via 01f52e16b868 ("riscv: define vmemmap before pfn_to_page
    calls"). Result:

    [...]
    #define __S101 PAGE_READ_EXEC
    #define __S110 PAGE_SHARED_EXEC
    #define __S111 PAGE_SHARED_EXEC

    #define VMALLOC_SIZE (KERN_VIRT_SIZE >> 1)
    #define VMALLOC_END (PAGE_OFFSET - 1)
    #define VMALLOC_START (PAGE_OFFSET - VMALLOC_SIZE)

    #define BPF_JIT_REGION_SIZE (SZ_128M)
    #define BPF_JIT_REGION_START (PAGE_OFFSET - BPF_JIT_REGION_SIZE)
    #define BPF_JIT_REGION_END (VMALLOC_END)

    /*
    * Roughly size the vmemmap space to be large enough to fit enough
    * struct pages to map half the virtual address space. Then
    * position vmemmap directly below the VMALLOC region.
    */
    #define VMEMMAP_SHIFT \
    (CONFIG_VA_BITS - PAGE_SHIFT - 1 + STRUCT_PAGE_MAX_SHIFT)
    #define VMEMMAP_SIZE BIT(VMEMMAP_SHIFT)
    #define VMEMMAP_END (VMALLOC_START - 1)
    #define VMEMMAP_START (VMALLOC_START - VMEMMAP_SIZE)

    [...]

    Let me know if there are any other issues.

    Anyway, the main changes are:

    1) Extend bpftool to produce a struct (aka "skeleton") tailored and specific
    to a provided BPF object file. This provides an alternative, simplified API
    compared to standard libbpf interaction. Also, add libbpf extern variable
    resolution for .kconfig section to import Kconfig data, from Andrii Nakryiko.

    2) Add BPF dispatcher for XDP which is a mechanism to avoid indirect calls by
    generating a branch funnel as discussed back in bpfconf'19 at LSF/MM. Also,
    add various BPF riscv JIT improvements, from Björn Töpel.

    3) Extend bpftool to allow matching BPF programs and maps by name,
    from Paul Chaignon.

    4) Support for replacing cgroup BPF programs attached with BPF_F_ALLOW_MULTI
    flag for allowing updates without service interruption, from Andrey Ignatov.

    5) Cleanup and simplification of ring access functions for AF_XDP with a
    bonus of 0-5% performance improvement, from Magnus Karlsson.

    6) Enable BPF JITs for x86-64 and arm64 by default. Also, final version of
    audit support for BPF, from Daniel Borkmann and latter with Jiri Olsa.

    7) Move and extend test_select_reuseport into BPF program tests under
    BPF selftests, from Jakub Sitnicki.

    8) Various BPF sample improvements for xdpsock for customizing parameters
    to set up and benchmark AF_XDP, from Jay Jayatheerthan.

    9) Improve libbpf to provide a ulimit hint on permission denied errors.
    Also change XDP sample programs to attach in driver mode by default,
    from Toke Høiland-Jørgensen.

    10) Extend BPF test infrastructure to allow changing skb mark from tc BPF
    programs, from Nikita V. Shirokov.

    11) Optimize prologue code sequence in BPF arm32 JIT, from Russell King.

    12) Fix xdp_redirect_cpu BPF sample to manually attach to tracepoints after
    libbpf conversion, from Jesper Dangaard Brouer.

    13) Minor misc improvements from various others.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     

23 Dec, 2019

1 commit

  • Pull networking fixes from David Miller:

    1) Several nf_flow_table_offload fixes from Pablo Neira Ayuso,
    including adding a missing ipv6 match description.

    2) Several heap overflow fixes in mwifiex from qize wang and Ganapathi
    Bhat.

    3) Fix uninit value in bond_neigh_init(), from Eric Dumazet.

    4) Fix non-ACPI probing of nxp-nci, from Stephan Gerhold.

    5) Fix use after free in tipc_disc_rcv(), from Tuong Lien.

    6) Enforce limit of 33 tail calls in mips and riscv JIT, from Paul
    Chaignon.

    7) Multicast MAC limit test is off by one in qede, from Manish Chopra.

    8) Fix established socket lookup race when socket goes from
    TCP_ESTABLISHED to TCP_LISTEN, because there lacks an intervening
    RCU grace period. From Eric Dumazet.

    9) Don't send empty SKBs from tcp_write_xmit(), also from Eric Dumazet.

    10) Fix active backup transition after link failure in bonding, from
    Mahesh Bandewar.

    11) Avoid zero sized hash table in gtp driver, from Taehee Yoo.

    12) Fix wrong interface passed to ->mac_link_up(), from Russell King.

    13) Fix DSA egress flooding settings in b53, from Florian Fainelli.

    14) Memory leak in gmac_setup_txqs(), from Navid Emamdoost.

    15) Fix double free in dpaa2-ptp code, from Ioana Ciornei.

    16) Reject invalid MTU values in stmmac, from Jose Abreu.

    17) Fix refcount leak in error path of u32 classifier, from Davide
    Caratti.

    18) Fix regression causing iwlwifi firmware crashes on boot, from Anders
    Kaseorg.

    19) Fix inverted return value logic in llc2 code, from Chan Shu Tak.

    20) Disable hardware GRO when XDP is attached to qede, frm Manish
    Chopra.

    21) Since we encode state in the low pointer bits, dst metrics must be
    at least 4 byte aligned, which is not necessarily true on m68k. Add
    annotations to fix this, from Geert Uytterhoeven.

    * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (160 commits)
    sfc: Include XDP packet headroom in buffer step size.
    sfc: fix channel allocation with brute force
    net: dst: Force 4-byte alignment of dst_metrics
    selftests: pmtu: fix init mtu value in description
    hv_netvsc: Fix unwanted rx_table reset
    net: phy: ensure that phy IDs are correctly typed
    mod_devicetable: fix PHY module format
    qede: Disable hardware gro when xdp prog is installed
    net: ena: fix issues in setting interrupt moderation params in ethtool
    net: ena: fix default tx interrupt moderation interval
    net/smc: unregister ib devices in reboot_event
    net: stmmac: platform: Fix MDIO init for platforms without PHY
    llc2: Fix return statement of llc_stat_ev_rx_null_dsap_xid_c (and _test_c)
    net: hisilicon: Fix a BUG trigered by wrong bytes_compl
    net: dsa: ksz: use common define for tag len
    s390/qeth: don't return -ENOTSUPP to userspace
    s390/qeth: fix promiscuous mode after reset
    s390/qeth: handle error due to unsupported transport mode
    cxgb4: fix refcount init for TC-MQPRIO offload
    tc-testing: initial tdc selftests for cls_u32
    ...

    Linus Torvalds
     

22 Dec, 2019

1 commit

  • trace_printk schedules work via irq_work_queue(), but doesn't
    wait until it was processed. The kprobe_module.tc testcase does:

    :;: "Load module again, which means the event1 should be recorded";:
    modprobe trace-printk
    grep "event1:" trace

    so the grep which checks the trace file might run before the irq work
    was processed. Fix this by adding a irq_work_sync().

    Link: http://lore.kernel.org/linux-trace-devel/20191218074427.96184-3-svens@linux.ibm.com

    Cc: stable@vger.kernel.org
    Fixes: af2a0750f3749 ("selftests/ftrace: Improve kprobe on module testcase to load/unload module")
    Signed-off-by: Sven Schnelle
    Signed-off-by: Steven Rostedt (VMware)

    Sven Schnelle
     

21 Dec, 2019

7 commits

  • When sample xdp_redirect_cpu was converted to use libbpf, the
    tracepoints used by this sample were not getting attached automatically
    like with bpf_load.c. The BPF-maps was still getting loaded, thus
    nobody notice that the tracepoints were not updating these maps.

    This fix doesn't use the new skeleton code, as this bug was introduced
    in v5.1 and stable might want to backport this. E.g. Red Hat QA uses
    this sample as part of their testing.

    Fixes: bbaf6029c49c ("samples/bpf: Convert XDP samples to libbpf usage")
    Signed-off-by: Jesper Dangaard Brouer
    Signed-off-by: Alexei Starovoitov
    Acked-by: Andrii Nakryiko
    Link: https://lore.kernel.org/bpf/157685877642.26195.2798780195186786841.stgit@firesoul

    Jesper Dangaard Brouer
     
  • The UDP payload fill pattern can be specified using '-P' or '--tx-pkt-pattern'
    option. It is an unsigned 32 bit field and defaulted to 0x12345678.

    The IP and UDP checksum is calculated by the code as per the content of
    the packet before transmission.

    Signed-off-by: Jay Jayatheerthan
    Signed-off-by: Alexei Starovoitov
    Link: https://lore.kernel.org/bpf/20191220085530.4980-7-jay.jayatheerthan@intel.com

    Jay Jayatheerthan
     
  • New option '-s' or '--tx-pkt-size' has been added to specify the transmit
    packet size. The packet size ranges from 47 to 4096 bytes. When this
    option is not provided, it defaults to 64 byte packet.

    The code uses struct ethhdr, struct iphdr and struct udphdr to form the
    transmit packet. The MAC address, IP address and UDP ports are set to default
    values.

    The code calculates IP and UDP checksums before sending the packet.
    Checksum calculation code in Linux kernel is used for this purpose.
    The Ethernet FCS is not filled by the code.

    Signed-off-by: Jay Jayatheerthan
    Signed-off-by: Alexei Starovoitov
    Link: https://lore.kernel.org/bpf/20191220085530.4980-6-jay.jayatheerthan@intel.com

    Jay Jayatheerthan
     
  • Use '-C' or '--tx-pkt-count' to specify number of packets to send.
    If it is not specified, the application sends packets forever. If packet
    count is not a multiple of batch size, last batch sent is less than the
    batch size.

    Signed-off-by: Jay Jayatheerthan
    Signed-off-by: Alexei Starovoitov
    Link: https://lore.kernel.org/bpf/20191220085530.4980-5-jay.jayatheerthan@intel.com

    Jay Jayatheerthan
     
  • New option to specify batch size for tx, rx and l2fwd has been added. This
    allows fine tuning to maximize performance. It is specified using '-b' or
    '--batch_size' options. When not specified default is 64.

    Signed-off-by: Jay Jayatheerthan
    Signed-off-by: Alexei Starovoitov
    Link: https://lore.kernel.org/bpf/20191220085530.4980-4-jay.jayatheerthan@intel.com

    Jay Jayatheerthan
     
  • Add code to do cleanup for signals and application completion in a unified
    fashion. The signal handler sets benckmark_done flag terminating the
    threads. The cleanup is called before returning from main() function.

    Signed-off-by: Jay Jayatheerthan
    Signed-off-by: Alexei Starovoitov
    Link: https://lore.kernel.org/bpf/20191220085530.4980-3-jay.jayatheerthan@intel.com

    Jay Jayatheerthan
     
  • The application now supports '-d' or '--duration' option to specify number of
    seconds to run. This is used in tx, rx and l2fwd features. If this option is
    not provided, the application runs forever.

    Signed-off-by: Jay Jayatheerthan
    Signed-off-by: Alexei Starovoitov
    Link: https://lore.kernel.org/bpf/20191220085530.4980-2-jay.jayatheerthan@intel.com

    Jay Jayatheerthan