1. 11 May, 2020 2 commits
    • Luke Nelson's avatar
      bpf, arm64: Optimize AND,OR,XOR,JSET BPF_K using arm64 logical immediates · fd49591c
      Luke Nelson authored
      The current code for BPF_{AND,OR,XOR,JSET} BPF_K loads the immediate to
      a temporary register before use.
      
      This patch changes the code to avoid using a temporary register
      when the BPF immediate is encodable using an arm64 logical immediate
      instruction. If the encoding fails (due to the immediate not being
      encodable), it falls back to using a temporary register.
      
      Example of generated code for BPF_ALU32_IMM(BPF_AND, R0, 0x80000001):
      
      without optimization:
      
        24: mov  w10, #0x8000ffff
        28: movk w10, #0x1
        2c: and  w7, w7, w10
      
      with optimization:
      
        24: and  w7, w7, #0x80000001
      
      Since the encoding process is quite complex, the JIT reuses existing
      functionality in arch/arm64/kernel/insn.c for encoding logical immediates
      rather than duplicate it in the JIT.
      Co-developed-by: default avatarXi Wang <xi.wang@gmail.com>
      Signed-off-by: default avatarXi Wang <xi.wang@gmail.com>
      Signed-off-by: default avatarLuke Nelson <luke.r.nels@gmail.com>
      Acked-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Link: https://lore.kernel.org/r/20200508181547.24783-3-luke.r.nels@gmail.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
      fd49591c
    • Luke Nelson's avatar
      arm64: insn: Fix two bugs in encoding 32-bit logical immediates · 579d1b3f
      Luke Nelson authored
      This patch fixes two issues present in the current function for encoding
      arm64 logical immediates when using the 32-bit variants of instructions.
      
      First, the code does not correctly reject an all-ones 32-bit immediate,
      and returns an undefined instruction encoding.
      
      Second, the code incorrectly rejects some 32-bit immediates that are
      actually encodable as logical immediates. The root cause is that the code
      uses a default mask of 64-bit all-ones, even for 32-bit immediates.
      This causes an issue later on when the default mask is used to fill the
      top bits of the immediate with ones, shown here:
      
        /*
         * Pattern: 0..01..10..01..1
         *
         * Fill the unused top bits with ones, and check if
         * the result is a valid immediate (all ones with a
         * contiguous ranges of zeroes).
         */
        imm |= ~mask;
        if (!range_of_ones(~imm))
                return AARCH64_BREAK_FAULT;
      
      To see the problem, consider an immediate of the form 0..01..10..01..1,
      where the upper 32 bits are zero, such as 0x80000001. The code checks
      if ~(imm | ~mask) contains a range of ones: the incorrect mask yields
      1..10..01..10..0, which fails the check; the correct mask yields
      0..01..10..0, which succeeds.
      
      The fix for both issues is to generate a correct mask based on the
      instruction immediate size, and use the mask to check for all-ones,
      all-zeroes, and values wider than the mask.
      
      Currently, arch/arm64/kvm/va_layout.c is the only user of this function,
      which uses 64-bit immediates and therefore won't trigger these bugs.
      
      We tested the new code against llvm-mc with all 1,302 encodable 32-bit
      logical immediates and all 5,334 encodable 64-bit logical immediates.
      
      Fixes: ef3935ee ("arm64: insn: Add encoder for bitwise operations using literals")
      Suggested-by: default avatarWill Deacon <will@kernel.org>
      Co-developed-by: default avatarXi Wang <xi.wang@gmail.com>
      Signed-off-by: default avatarXi Wang <xi.wang@gmail.com>
      Signed-off-by: default avatarLuke Nelson <luke.r.nels@gmail.com>
      Reviewed-by: default avatarMarc Zyngier <maz@kernel.org>
      Link: https://lore.kernel.org/r/20200508181547.24783-2-luke.r.nels@gmail.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
      579d1b3f
  2. 26 Apr, 2020 11 commits
    • Linus Torvalds's avatar
      Linux 5.7-rc3 · 6a8b55ed
      Linus Torvalds authored
      6a8b55ed
    • Linus Torvalds's avatar
      Merge tag '5.7-rc2-smb3-fixes' of git://git.samba.org/sfrench/cifs-2.6 · d4fb4bfb
      Linus Torvalds authored
      Pull cifs fixes from Steve French:
       "Five cifs/smb3 fixes:two for DFS reconnect failover, one lease fix for
        stable and the others to fix a missing spinlock during reconnect"
      
      * tag '5.7-rc2-smb3-fixes' of git://git.samba.org/sfrench/cifs-2.6:
        cifs: fix uninitialised lease_key in open_shroot()
        cifs: ensure correct super block for DFS reconnect
        cifs: do not share tcons with DFS
        cifs: minor update to comments around the cifs_tcp_ses_lock mutex
        cifs: protect updating server->dstaddr with a spinlock
      d4fb4bfb
    • Linus Torvalds's avatar
      Merge tag 'usb-5.7-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb · e9a61afb
      Linus Torvalds authored
      Pull USB fixes from Greg KH:
       "Here are a number of USB driver fixes for 5.7-rc3.
      
        Nothing huge, just the usual collection of:
      
         - xhci fixes
      
         - gadget driver fixes
      
         - syzkaller fuzzing fixes
      
         - new device ids and DT bindings
      
         - new quirks added for broken devices
      
        A few of the gadget driver fixes show up twice here as they were
        applied to my branch, and also by Felipe to his branch which I then
        pulled in as we got out of sync a bit.
      
        All of these have been in linux-next with no reported issues"
      
      * tag 'usb-5.7-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (33 commits)
        USB: sisusbvga: Change port variable from signed to unsigned
        usb-storage: Add unusual_devs entry for JMicron JMS566
        USB: hub: Revert commit bd0e6c96 ("usb: hub: try old enumeration scheme first for high speed devices")
        USB: hub: Fix handling of connect changes during sleep
        usb: typec: altmode: Fix typec_altmode_get_partner sometimes returning an invalid pointer
        xhci: Don't clear hub TT buffer on ep0 protocol stall
        xhci: prevent bus suspend if a roothub port detected a over-current condition
        xhci: Fix handling halted endpoint even if endpoint ring appears empty
        usb: raw-gadget: Fix copy_to/from_user() checks
        usb: raw-gadget: fix raw_event_queue_fetch locking
        usb: gadget: udc: atmel: Fix vbus disconnect handling
        usb: dwc3: gadget: Fix request completion check
        USB: Add USB_QUIRK_DELAY_CTRL_MSG and USB_QUIRK_DELAY_INIT for Corsair K70 RGB RAPIDFIRE
        phy: tegra: Select USB_COMMON for usb_get_maximum_speed()
        usb: typec: tcpm: Ignore CC and vbus changes in PORT_RESET change
        usb: f_fs: Clear OS Extended descriptor counts to zero in ffs_data_reset()
        cdc-acm: introduce a cool down
        cdc-acm: close race betrween suspend() and acm_softint
        UAS: fix deadlock in error handling and PM flushing work
        UAS: no use logging any details in case of ENODEV
        ...
      e9a61afb
    • Linus Torvalds's avatar
      Merge tag 'tty-5.7-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty · c5f33785
      Linus Torvalds authored
      Pull tty/serial fixes from Greg KH:
       "Here are some tty and serial driver fixes for 5.7-rc3.
      
        The "largest" in here are a number of reverts for previous changes to
        the uartps serial driver that turned out to not be a good idea at all.
      
        The others are just small fixes found by people and tools. Included in
        here is a much-reported symbol export needed by previous changes that
        happened in 5.7-rc1. All of these have been in linux-next for a while
        with no reported issues"
      
      * tag 'tty-5.7-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
        tty: hvc: fix buffer overflow during hvc_alloc().
        tty: rocket, avoid OOB access
        tty: serial: bcm63xx: fix missing clk_put() in bcm63xx_uart
        vt: don't hardcode the mem allocation upper bound
        tty: serial: owl: add "much needed" clk_prepare_enable()
        vt: don't use kmalloc() for the unicode screen buffer
        tty/sysrq: Export sysrq_mask(), sysrq_toggle_support()
        serial: sh-sci: Make sure status register SCxSR is read in correct sequence
        serial: sunhv: Initialize lock for non-registered console
        Revert "serial: uartps: Register own uart console and driver structures"
        Revert "serial: uartps: Move Port ID to device data structure"
        Revert "serial: uartps: Change uart ID port allocation"
        Revert "serial: uartps: Do not allow use aliases >= MAX_UART_INSTANCES"
        Revert "serial: uartps: Fix error path when alloc failed"
        Revert "serial: uartps: Use the same dynamic major number for all ports"
        Revert "serial: uartps: Fix uartps_major handling"
      c5f33785
    • Linus Torvalds's avatar
      Merge tag 'char-misc-5.7-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc · f6da8bd1
      Linus Torvalds authored
      Pull char/misc driver fixes from Greg KH:
       "Here are 4 small misc driver fixes for 5.7-rc3:
      
         - mei driver fix
      
         - interconnect driver fix
      
         - two fpga driver fixes
      
        All have been in linux-next with no reported issues"
      
      * tag 'char-misc-5.7-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
        interconnect: qcom: Fix uninitialized tcs_cmd::wait
        mei: me: fix irq number stored in hw struct
        fpga: dfl: pci: fix return value of cci_pci_sriov_configure
        fpga: zynq: Remove clk_get error message for probe defer
      f6da8bd1
    • Linus Torvalds's avatar
      Merge tag 'staging-5.7-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging · edf17b28
      Linus Torvalds authored
      Pull staging/IIO driver fixes from Greg KH:
       "Here are some small staging and IIO driver fixes for 5.7-rc3
      
        Lots of tiny things for reported issues in staging and IIO drivers,
        including a counter driver fix as well (the iio drivers seem to be
        tied to those). Full details of the fixes are in the shortlog.
      
        All of these have been in linux-next for a while with no reported
        issues"
      
      * tag 'staging-5.7-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (27 commits)
        staging: vt6656: Fix calling conditions of vnt_set_bss_mode
        staging: comedi: Fix comedi_device refcnt leak in comedi_open
        staging: vt6656: Fix pairwise key entry save.
        staging: vt6656: Fix drivers TBTT timing counter.
        staging: vt6656: Don't set RCR_MULTICAST or RCR_BROADCAST by default.
        MAINTAINERS: remove Stefan Popa's email
        iio: adc: ad7192: fix null pointer de-reference crash during probe
        iio: core: remove extra semi-colon from devm_iio_device_register() macro
        iio: adc: ti-ads8344: properly byte swap value
        iio: imu: inv_mpu6050: fix suspend/resume with runtime power
        iio: st_sensors: rely on odr mask to know if odr can be set
        iio: xilinx-xadc: Make sure not exceed maximum samplerate
        iio: xilinx-xadc: Fix sequencer configuration for aux channels in simultaneous mode
        iio: xilinx-xadc: Fix clearing interrupt when enabling trigger
        iio: xilinx-xadc: Fix ADC-B powerdown
        iio: dac: ad5770r: fix off-by-one check on maximum number of channels
        iio: imu: st_lsm6dsx: flush hw FIFO before resetting the device
        iio: core: Fix handling of 'dB'
        dt-bindings: iio: adc: stm32-adc: fix id relative path
        counter: 104-quad-8: Add lock guards - generic interface
        ...
      edf17b28
    • Linus Torvalds's avatar
      Merge tag 'driver-core-5.7-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core · a8a0e2a9
      Linus Torvalds authored
      Pull driver core fixes from Greg KH:
       "Here are some small firmware/driver core/debugfs fixes for 5.7-rc3.
      
        The debugfs change is now possible as now the last users of
        debugfs_create_u32() have been fixed up in the different trees that
        got merged into 5.7-rc1, and I don't want it creeping back in.
      
        The firmware changes did cause a regression in linux-next, so the
        final patch here reverts part of that, re-exporting the symbol to
        resolve that issue. All of these patches, with the exception of the
        final one, have been in linux-next with only that one reported issue"
      
      * tag 'driver-core-5.7-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
        firmware_loader: revert removal of the fw_fallback_config export
        debugfs: remove return value of debugfs_create_u32()
        firmware_loader: remove unused exports
        firmware: imx: fix compile-testing
      a8a0e2a9
    • Linus Torvalds's avatar
      Merge tag 's390-5.7-3' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · 749f0461
      Linus Torvalds authored
      Pull s390 fixes from Vasily Gorbik:
      
       - Add a few notrace annotations to avoid potential crashes when
         switching ftrace tracers.
      
       - Avoid setting affinity for floating irqs in pci code.
      
       - Fix build issue found by kbuild test robot.
      
      * tag 's390-5.7-3' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
        s390/protvirt: fix compilation issue
        s390/pci: do not set affinity for floating irqs
        s390/ftrace: fix potential crashes when switching tracers
      749f0461
    • Linus Torvalds's avatar
      Merge tag 'powerpc-5.7-3' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · 670bcd79
      Linus Torvalds authored
      Pull powerpc fixes from Michael Ellerman:
      
       - One important fix for a bug in the way we find the cache-line size
         from the device tree, which was leading to the wrong size being
         reported to userspace on some platforms.
      
       - A fix for 8xx STRICT_KERNEL_RWX which was leaving TLB entries around
         leading to a window at boot when the strict mapping wasn't enforced.
      
       - A fix to enable our KUAP (kernel user access prevention) debugging on
         PPC32.
      
       - A build fix for clang in lib/mpi.
      
      Thanks to: Chris Packham, Christophe Leroy, Nathan Chancellor, Qian Cai.
      
      * tag 'powerpc-5.7-3' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
        lib/mpi: Fix building for powerpc with clang
        powerpc/mm: Fix CONFIG_PPC_KUAP_DEBUG on PPC32
        powerpc/8xx: Fix STRICT_KERNEL_RWX startup test failure
        powerpc/setup_64: Set cache-line-size based on cache-block-size
      670bcd79
    • Linus Torvalds's avatar
      Merge tag 'devicetree-fixes-for-5.7-2' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux · 58792882
      Linus Torvalds authored
      Pull more Devicetree fixes from Rob Herring:
       "A couple of schema and kbuild fixes"
      
      * tag 'devicetree-fixes-for-5.7-2' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux:
        dt-bindings: phy: qcom-qusb2: Fix defaults
        dt-bindings: Fix erroneous 'additionalProperties'
        dt-bindings: Fix command line length limit calling dt-mk-schema
        dt-bindings: Re-enable core schemas for dtbs_check
      58792882
    • Luis Chamberlain's avatar
      firmware_loader: revert removal of the fw_fallback_config export · 5a357703
      Luis Chamberlain authored
      Christoph's patch removed two unsused exported symbols, however, one
      symbol is used by the firmware_loader itself.  If CONFIG_FW_LOADER=m so
      the firmware_loader is modular but CONFIG_FW_LOADER_USER_HELPER=y we fail
      the build at mostpost.
      
      ERROR: modpost: "fw_fallback_config" [drivers/base/firmware_loader/firmware_class.ko] undefined!
      
      This happens because the variable fw_fallback_config is built into the
      kernel if CONFIG_FW_LOADER_USER_HELPER=y always, so we need to grant
      access to the firmware loader module by exporting it.
      
      Revert only one hunk from his patch.
      
      Fixes: 73960473 ("firmware_loader: remove unused exports")
      Reported-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Signed-off-by: default avatarLuis Chamberlain <mcgrof@kernel.org>
      Link: https://lore.kernel.org/r/20200424184916.22843-1-mcgrof@kernel.orgSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5a357703
  3. 25 Apr, 2020 19 commits
  4. 24 Apr, 2020 8 commits