1. 12 Jul, 2019 31 commits
  2. 11 Jul, 2019 9 commits
    • Linus Torvalds's avatar
      Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 753c8d9b
      Linus Torvalds authored
      Pull x86 fixes from Thomas Gleixner:
       "A collection of assorted fixes:
      
         - Fix for the pinned cr0/4 fallout which escaped all testing efforts
           because the kvm-intel module was never loaded when the kernel was
           compiled with CONFIG_PARAVIRT=n. The cr0/4 accessors are moved out
           of line and static key is now solely used in the core code and
           therefore can stay in the RO after init section. So the kvm-intel
           and other modules do not longer reference the (read only) static
           key which the module loader tried to update.
      
         - Prevent an infinite loop in arch_stack_walk_user() by breaking out
           of the loop once the return address is detected to be 0.
      
         - Prevent the int3_emulate_call() selftest from corrupting the stack
           when KASAN is enabled. KASASN clobbers more registers than covered
           by the emulated call implementation. Convert the int3_magic()
           selftest to a ASM function so the compiler cannot KASANify it.
      
         - Unbreak the build with old GCC versions and with the Gold linker by
           reverting the 'Move of _etext to the actual end of .text'. In both
           cases the build fails with 'Invalid absolute R_X86_64_32S
           relocation: _etext'
      
         - Initialize the context lock for init_mm, which was never an issue
           until the alternatives code started to use a temporary mm for
           patching.
      
         - Fix a build warning vs. the LOWMEM_PAGES constant where clang
           complains rightfully about a signed integer overflow in the shift
           operation by converting the operand to an ULL.
      
         - Adjust the misnamed ENDPROC() of common_spurious in the 32bit entry
           code"
      
      * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/stacktrace: Prevent infinite loop in arch_stack_walk_user()
        x86/asm: Move native_write_cr0/4() out of line
        x86/pgtable/32: Fix LOWMEM_PAGES constant
        x86/alternatives: Fix int3_emulate_call() selftest stack corruption
        x86/entry/32: Fix ENDPROC of common_spurious
        Revert "x86/build: Move _etext to actual end of .text"
        x86/ldt: Initialize the context lock for init_mm
      753c8d9b
    • Linus Torvalds's avatar
      Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · d7fe42a6
      Linus Torvalds authored
      Pull timer fixes from Thomas Gleixner:
       "Two small fixes from the timer departement:
      
         - Prevent the compiler from converting the nanoseconds adjustment
           loop in the VDSO update function to a division (__udivdi3) by using
           the __iter_div_u64_rem() inline function which exists to prevent
           exactly that problem.
      
         - Fix the wrong argument order of the GENMASK macro in the NPCM timer
           driver"
      
      * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        timekeeping/vsyscall: Use __iter_div_u64_rem()
        clocksource/drivers/npcm: Fix misuse of GENMASK macro
      d7fe42a6
    • Linus Torvalds's avatar
      Merge branch 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 02150fab
      Linus Torvalds authored
      Pull stacktrace fix from Thomas Gleixner:
       "Fix yet another instance of kernel thread check which ignores that
        kernel threads can call use_mm()"
      
      * 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        stacktrace: Use PF_KTHREAD to check for kernel threads
      02150fab
    • Linus Torvalds's avatar
      Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 3a83f575
      Linus Torvalds authored
      Pull irq fixes from Thomas Gleixner:
       "Two small fixes for interrupt chip drivers:
      
         - Prevent UAF in the new RZA1 chip driver
      
         - Fix the wrong argument order of the GENMASK macro in the GIC code"
      
      * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        irqchip/gic-v3-its: Fix misuse of GENMASK macro
        irqchip/renesas-rza1: Prevent use-after-free in rza1_irqc_probe()
      3a83f575
    • Linus Torvalds's avatar
      Merge tag 'acpi-5.3-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · a131c2bf
      Linus Torvalds authored
      Pull ACPI fix from Rafael Wysocki:
       "Revert a recent ACPICA commit causing systems to hang at boot time"
      
      * tag 'acpi-5.3-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        Revert "ACPICA: Update table load object initialization"
      a131c2bf
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next · 237f83df
      Linus Torvalds authored
      Pull networking updates from David Miller:
       "Some highlights from this development cycle:
      
         1) Big refactoring of ipv6 route and neigh handling to support
            nexthop objects configurable as units from userspace. From David
            Ahern.
      
         2) Convert explored_states in BPF verifier into a hash table,
            significantly decreased state held for programs with bpf2bpf
            calls, from Alexei Starovoitov.
      
         3) Implement bpf_send_signal() helper, from Yonghong Song.
      
         4) Various classifier enhancements to mvpp2 driver, from Maxime
            Chevallier.
      
         5) Add aRFS support to hns3 driver, from Jian Shen.
      
         6) Fix use after free in inet frags by allocating fqdirs dynamically
            and reworking how rhashtable dismantle occurs, from Eric Dumazet.
      
         7) Add act_ctinfo packet classifier action, from Kevin
            Darbyshire-Bryant.
      
         8) Add TFO key backup infrastructure, from Jason Baron.
      
         9) Remove several old and unused ISDN drivers, from Arnd Bergmann.
      
        10) Add devlink notifications for flash update status to mlxsw driver,
            from Jiri Pirko.
      
        11) Lots of kTLS offload infrastructure fixes, from Jakub Kicinski.
      
        12) Add support for mv88e6250 DSA chips, from Rasmus Villemoes.
      
        13) Various enhancements to ipv6 flow label handling, from Eric
            Dumazet and Willem de Bruijn.
      
        14) Support TLS offload in nfp driver, from Jakub Kicinski, Dirk van
            der Merwe, and others.
      
        15) Various improvements to axienet driver including converting it to
            phylink, from Robert Hancock.
      
        16) Add PTP support to sja1105 DSA driver, from Vladimir Oltean.
      
        17) Add mqprio qdisc offload support to dpaa2-eth, from Ioana
            Radulescu.
      
        18) Add devlink health reporting to mlx5, from Moshe Shemesh.
      
        19) Convert stmmac over to phylink, from Jose Abreu.
      
        20) Add PTP PHC (Physical Hardware Clock) support to mlxsw, from
            Shalom Toledo.
      
        21) Add nftables SYNPROXY support, from Fernando Fernandez Mancera.
      
        22) Convert tcp_fastopen over to use SipHash, from Ard Biesheuvel.
      
        23) Track spill/fill of constants in BPF verifier, from Alexei
            Starovoitov.
      
        24) Support bounded loops in BPF, from Alexei Starovoitov.
      
        25) Various page_pool API fixes and improvements, from Jesper Dangaard
            Brouer.
      
        26) Just like ipv4, support ref-countless ipv6 route handling. From
            Wei Wang.
      
        27) Support VLAN offloading in aquantia driver, from Igor Russkikh.
      
        28) Add AF_XDP zero-copy support to mlx5, from Maxim Mikityanskiy.
      
        29) Add flower GRE encap/decap support to nfp driver, from Pieter
            Jansen van Vuuren.
      
        30) Protect against stack overflow when using act_mirred, from John
            Hurley.
      
        31) Allow devmap map lookups from eBPF, from Toke Høiland-Jørgensen.
      
        32) Use page_pool API in netsec driver, Ilias Apalodimas.
      
        33) Add Google gve network driver, from Catherine Sullivan.
      
        34) More indirect call avoidance, from Paolo Abeni.
      
        35) Add kTLS TX HW offload support to mlx5, from Tariq Toukan.
      
        36) Add XDP_REDIRECT support to bnxt_en, from Andy Gospodarek.
      
        37) Add MPLS manipulation actions to TC, from John Hurley.
      
        38) Add sending a packet to connection tracking from TC actions, and
            then allow flower classifier matching on conntrack state. From
            Paul Blakey.
      
        39) Netfilter hw offload support, from Pablo Neira Ayuso"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (2080 commits)
        net/mlx5e: Return in default case statement in tx_post_resync_params
        mlx5: Return -EINVAL when WARN_ON_ONCE triggers in mlx5e_tls_resync().
        net: dsa: add support for BRIDGE_MROUTER attribute
        pkt_sched: Include const.h
        net: netsec: remove static declaration for netsec_set_tx_de()
        net: netsec: remove superfluous if statement
        netfilter: nf_tables: add hardware offload support
        net: flow_offload: rename tc_cls_flower_offload to flow_cls_offload
        net: flow_offload: add flow_block_cb_is_busy() and use it
        net: sched: remove tcf block API
        drivers: net: use flow block API
        net: sched: use flow block API
        net: flow_offload: add flow_block_cb_{priv, incref, decref}()
        net: flow_offload: add list handling functions
        net: flow_offload: add flow_block_cb_alloc() and flow_block_cb_free()
        net: flow_offload: rename TCF_BLOCK_BINDER_TYPE_* to FLOW_BLOCK_BINDER_TYPE_*
        net: flow_offload: rename TC_BLOCK_{UN}BIND to FLOW_BLOCK_{UN}BIND
        net: flow_offload: add flow_block_cb_setup_simple()
        net: hisilicon: Add an tx_desc to adapt HI13X1_GMAC
        net: hisilicon: Add an rx_desc to adapt HI13X1_GMAC
        ...
      237f83df
    • Linus Torvalds's avatar
      Merge tag 'clone3-v5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux · 8f6ccf61
      Linus Torvalds authored
      Pull clone3 system call from Christian Brauner:
       "This adds the clone3 syscall which is an extensible successor to clone
        after we snagged the last flag with CLONE_PIDFD during the 5.2 merge
        window for clone(). It cleanly supports all of the flags from clone()
        and thus all legacy workloads.
      
        There are few user visible differences between clone3 and clone.
        First, CLONE_DETACHED will cause EINVAL with clone3 so we can reuse
        this flag. Second, the CSIGNAL flag is deprecated and will cause
        EINVAL to be reported. It is superseeded by a dedicated "exit_signal"
        argument in struct clone_args thus freeing up even more flags. And
        third, clone3 gives CLONE_PIDFD a dedicated return argument in struct
        clone_args instead of abusing CLONE_PARENT_SETTID's parent_tidptr
        argument.
      
        The clone3 uapi is designed to be easy to handle on 32- and 64 bit:
      
          /* uapi */
          struct clone_args {
                  __aligned_u64 flags;
                  __aligned_u64 pidfd;
                  __aligned_u64 child_tid;
                  __aligned_u64 parent_tid;
                  __aligned_u64 exit_signal;
                  __aligned_u64 stack;
                  __aligned_u64 stack_size;
                  __aligned_u64 tls;
          };
      
        and a separate kernel struct is used that uses proper kernel typing:
      
          /* kernel internal */
          struct kernel_clone_args {
                  u64 flags;
                  int __user *pidfd;
                  int __user *child_tid;
                  int __user *parent_tid;
                  int exit_signal;
                  unsigned long stack;
                  unsigned long stack_size;
                  unsigned long tls;
          };
      
        The system call comes with a size argument which enables the kernel to
        detect what version of clone_args userspace is passing in. clone3
        validates that any additional bytes a given kernel does not know about
        are set to zero and that the size never exceeds a page.
      
        A nice feature is that this patchset allowed us to cleanup and
        simplify various core kernel codepaths in kernel/fork.c by making the
        internal _do_fork() function take struct kernel_clone_args even for
        legacy clone().
      
        This patch also unblocks the time namespace patchset which wants to
        introduce a new CLONE_TIMENS flag.
      
        Note, that clone3 has only been wired up for x86{_32,64}, arm{64}, and
        xtensa. These were the architectures that did not require special
        massaging.
      
        Other architectures treat fork-like system calls individually and
        after some back and forth neither Arnd nor I felt confident that we
        dared to add clone3 unconditionally to all architectures. We agreed to
        leave this up to individual architecture maintainers. This is why
        there's an additional patch that introduces __ARCH_WANT_SYS_CLONE3
        which any architecture can set once it has implemented support for
        clone3. The patch also adds a cond_syscall(clone3) for architectures
        such as nios2 or h8300 that generate their syscall table by simply
        including asm-generic/unistd.h. The hope is to get rid of
        __ARCH_WANT_SYS_CLONE3 and cond_syscall() rather soon"
      
      * tag 'clone3-v5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux:
        arch: handle arches who do not yet define clone3
        arch: wire-up clone3() syscall
        fork: add clone3
      8f6ccf61
    • Eiichi Tsukata's avatar
      x86/stacktrace: Prevent infinite loop in arch_stack_walk_user() · cbf5b73d
      Eiichi Tsukata authored
      arch_stack_walk_user() checks `if (fp == frame.next_fp)` to prevent a
      infinite loop by self reference but it's not enogh for circular reference.
      
      Once a lack of return address is found, there is no point to continue the
      loop, so break out.
      
      Fixes: 02b67518 ("tracing: add support for userspace stacktraces in tracing/iter_ctrl")
      Signed-off-by: default avatarEiichi Tsukata <devel@etsukata.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Acked-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Link: https://lkml.kernel.org/r/20190711023501.963-1-devel@etsukata.com
      cbf5b73d
    • Linus Torvalds's avatar
      Merge tag 'pidfd-updates-v5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux · 5450e8a3
      Linus Torvalds authored
      Pull pidfd updates from Christian Brauner:
       "This adds two main features.
      
         - First, it adds polling support for pidfds. This allows process
           managers to know when a (non-parent) process dies in a race-free
           way.
      
           The notification mechanism used follows the same logic that is
           currently used when the parent of a task is notified of a child's
           death. With this patchset it is possible to put pidfds in an
           {e}poll loop and get reliable notifications for process (i.e.
           thread-group) exit.
      
         - The second feature compliments the first one by making it possible
           to retrieve pollable pidfds for processes that were not created
           using CLONE_PIDFD.
      
           A lot of processes get created with traditional PID-based calls
           such as fork() or clone() (without CLONE_PIDFD). For these
           processes a caller can currently not create a pollable pidfd. This
           is a problem for Android's low memory killer (LMK) and service
           managers such as systemd.
      
        Both patchsets are accompanied by selftests.
      
        It's perhaps worth noting that the work done so far and the work done
        in this branch for pidfd_open() and polling support do already see
        some adoption:
      
         - Android is in the process of backporting this work to all their LTS
           kernels [1]
      
         - Service managers make use of pidfd_send_signal but will need to
           wait until we enable waiting on pidfds for full adoption.
      
         - And projects I maintain make use of both pidfd_send_signal and
           CLONE_PIDFD [2] and will use polling support and pidfd_open() too"
      
      [1] https://android-review.googlesource.com/q/topic:%22pidfd+polling+support+4.9+backport%22
          https://android-review.googlesource.com/q/topic:%22pidfd+polling+support+4.14+backport%22
          https://android-review.googlesource.com/q/topic:%22pidfd+polling+support+4.19+backport%22
      
      [2] https://github.com/lxc/lxc/blob/aab6e3eb73c343231cdde775db938994fc6f2803/src/lxc/start.c#L1753
      
      * tag 'pidfd-updates-v5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux:
        tests: add pidfd_open() tests
        arch: wire-up pidfd_open()
        pid: add pidfd_open()
        pidfd: add polling selftests
        pidfd: add polling support
      5450e8a3