1. 05 Apr, 2018 4 commits
    • Linus Torvalds's avatar
      Merge tag 'tty-4.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty · 9abf8ace
      Linus Torvalds authored
      Pull tty/serial driver updates from Greg KH:
       "Here is the big set of tty and serial driver patches for 4.17-rc1
      
        Not all that big really, most are just small fixes and additions to
        existing drivers. There's a bunch of work on the imx serial driver
        recently for some reason, and a new embedded serial driver added as
        well.
      
        Full details are in the shortlog.
      
        All of these have been in the linux-next tree for a while with no
        reported issues"
      
      * tag 'tty-4.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (66 commits)
        serial: expose buf_overrun count through proc interface
        serial: mvebu-uart: fix tx lost characters
        tty: serial: msm_geni_serial: Fix return value check in qcom_geni_serial_probe()
        tty: serial: msm_geni_serial: Add serial driver support for GENI based QUP
        8250-men-mcb: add support for 16z025 and 16z057
        powerpc: Mark the variable earlycon_acpi_spcr_enable maybe_unused
        serial: stm32: fix initialization of RS485 mode
        ARM: dts: STi: Remove "console=ttyASN" from bootargs for STi boards
        vt: change SGR 21 to follow the standards
        serdev: Fix typo in serdev_device_alloc
        ARM: dts: STi: Fix aliases property name for STi boards
        tty: st-asc: Update tty alias
        serial: stm32: add support for RS485 hardware control mode
        dt-bindings: serial: stm32: add RS485 optional properties
        selftests: add devpts selftests
        devpts: comment devpts_mntget()
        devpts: resolve devpts bind-mounts
        devpts: hoist out check for DEVPTS_SUPER_MAGIC
        serial: 8250: Add Nuvoton NPCM UART
        serial: mxs-auart: disable clks of Alphascale ASM9260
        ...
      9abf8ace
    • Linus Torvalds's avatar
      Merge tag 'usb-4.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb · ac9053d2
      Linus Torvalds authored
      Pull USB/PHY updates from Greg KH:
       "Here is the big set of USB and PHY driver patches for 4.17-rc1.
      
        Lots of USB typeC work happened this round, with code moving from the
        staging directory into the "real" part of the kernel, as well as new
        infrastructure being added to be able to handle the different types of
        "roles" that typeC requires.
      
        There is also the normal huge set of USB gadget controller and driver
        updates, along with XHCI changes, and a raft of other tiny fixes all
        over the USB tree. And the PHY driver updates are merged in here as
        well as they interacted with the USB drivers in some places.
      
        All of these have been in linux-next for a while with no reported
        issues"
      
      * tag 'usb-4.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (250 commits)
        Revert "USB: serial: ftdi_sio: add Id for Physik Instrumente E-870"
        usb: musb: gadget: misplaced out of bounds check
        usb: chipidea: imx: Fix ULPI on imx53
        usb: chipidea: imx: Cleanup ci_hdrc_imx_platform_flag
        usb: chipidea: usbmisc: small clean up
        usb: chipidea: usbmisc: evdo can be set e/o reset
        usb: chipidea: usbmisc: evdo is only specific to OTG port
        USB: serial: ftdi_sio: add Id for Physik Instrumente E-870
        usb: dwc3: gadget: never call ->complete() from ->ep_queue()
        usb: gadget: udc: core: update usb_ep_queue() documentation
        usb: host: Remove the deprecated ATH79 USB host config options
        usb: roles: Fix return value check in intel_xhci_usb_probe()
        USB: gadget: f_midi: fixing a possible double-free in f_midi
        usb: core: Add USB_QUIRK_DELAY_CTRL_MSG to usbcore quirks
        usb: core: Copy parameter string correctly and remove superfluous null check
        USB: announce bcdDevice as well as idVendor, idProduct.
        USB:fix USB3 devices behind USB3 hubs not resuming at hibernate thaw
        usb: hub: Reduce warning to notice on power loss
        USB: serial: ftdi_sio: add support for Harman FirmwareHubEmulator
        USB: serial: cp210x: add ELDAT Easywave RX09 id
        ...
      ac9053d2
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · f9ca6a56
      Linus Torvalds authored
      Pull networking fixes from David Miller:
       "This fixes some fallout from the net-next merge the other day, plus
        some non-merge-window-related bug fixes:
      
        1) Fix sparse warnings in bcmgenet, systemport, b53, and mt7530
           (Florian Fainelli)
      
        2) pptp does a bogus dst_release() on a route we have a single
           refcount on, and attached to a socket, which needs that refcount
           (Eric Dumazet)
      
        3) UDP connected sockets on ipv6 can race with route update handling,
           resulting in a pre-PMTU update route still stuck on the socket and
           thus continuing to get ICMPV6_PKT_TOOBIG errors. We end up never
           seeing the updated route. (Alexey Kodanev)
      
        4) Missing list initializer(s) in TIPC (Jon Maloy)
      
        5) Connect phy early to prevent crashes in lan78xx driver (Alexander
           Graf)
      
        6) Fix build with modular NVMEM (Arnd Bergmann)
      
        7) netdevsim canot mark nsim_devlink_net_ops and nsim_fib_net_ops as
           __net_initdata, as these are references from module unload
           unconditionally (Arnd Bergmann)"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (23 commits)
        netdevsim: remove incorrect __net_initdata annotations
        sfc: remove ctpio_dmabuf_start from stats
        inet: frags: fix ip6frag_low_thresh boundary
        tipc: Fix namespace violation in tipc_sk_fill_sock_diag
        net: avoid unneeded atomic operation in ip*_append_data()
        nvmem: disallow modular CONFIG_NVMEM
        net: hns3: fix length overflow when CONFIG_ARM64_64K_PAGES
        nfp: use full 40 bits of the NSP buffer address
        lan78xx: Connect phy early
        nfp: add a separate counter for packets with CHECKSUM_COMPLETE
        tipc: Fix missing list initializations in struct tipc_subscription
        ipv6: udp: set dst cache for a connected sk if current not valid
        ipv6: udp: convert 'connected' to bool type in udpv6_sendmsg()
        ipv6: allow to cache dst for a connected sk in ip6_sk_dst_lookup_flow()
        ipv6: add a wrapper for ip6_dst_store() with flowi6 checks
        net: phy: marvell10g: add thermal hwmon device
        pptp: remove a buggy dst release in pptp_connect()
        net: dsa: mt7530: Use NULL instead of plain integer
        net: dsa: b53: Fix sparse warnings in b53_mmap.c
        af_unix: remove redundant lockdep class
        ...
      f9ca6a56
    • Linus Torvalds's avatar
      Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 · 9eb31227
      Linus Torvalds authored
      Pull crypto updates from Herbert Xu:
       "API:
      
         - add AEAD support to crypto engine
      
         - allow batch registration in simd
      
        Algorithms:
      
         - add CFB mode
      
         - add speck block cipher
      
         - add sm4 block cipher
      
         - new test case for crct10dif
      
         - improve scheduling latency on ARM
      
         - scatter/gather support to gcm in aesni
      
         - convert x86 crypto algorithms to skcihper
      
        Drivers:
      
         - hmac(sha224/sha256) support in inside-secure
      
         - aes gcm/ccm support in stm32
      
         - stm32mp1 support in stm32
      
         - ccree driver from staging tree
      
         - gcm support over QI in caam
      
         - add ks-sa hwrng driver"
      
      * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (212 commits)
        crypto: ccree - remove unused enums
        crypto: ahash - Fix early termination in hash walk
        crypto: brcm - explicitly cast cipher to hash type
        crypto: talitos - don't leak pointers to authenc keys
        crypto: qat - don't leak pointers to authenc keys
        crypto: picoxcell - don't leak pointers to authenc keys
        crypto: ixp4xx - don't leak pointers to authenc keys
        crypto: chelsio - don't leak pointers to authenc keys
        crypto: caam/qi - don't leak pointers to authenc keys
        crypto: caam - don't leak pointers to authenc keys
        crypto: lrw - Free rctx->ext with kzfree
        crypto: talitos - fix IPsec cipher in length
        crypto: Deduplicate le32_to_cpu_array() and cpu_to_le32_array()
        crypto: doc - clarify hash callbacks state machine
        crypto: api - Keep failed instances alive
        crypto: api - Make crypto_alg_lookup static
        crypto: api - Remove unused crypto_type lookup function
        crypto: chelsio - Remove declaration of static function from header
        crypto: inside-secure - hmac(sha224) support
        crypto: inside-secure - hmac(sha256) support
        ..
      9eb31227
  2. 04 Apr, 2018 36 commits
    • Linus Torvalds's avatar
      Merge tag 'riscv-for-linus-4.17-mw0' of... · 527cd207
      Linus Torvalds authored
      Merge tag 'riscv-for-linus-4.17-mw0' of git://git.kernel.org/pub/scm/linux/kernel/git/palmer/riscv-linux
      
      Pull RISC-V updates from Palmer Dabbelt:
       "This contains the new features we'd like to incorporate into the
        RISC-V port for 4.17. We might have a bit more stuff land later in the
        merge window, but I wanted to get this out earlier just so everyone
        can see where we currently stand.
      
        A short summary of the changes is:
      
         - We've added support for dynamic ftrace on RISC-V targets.
      
         - There have been a handful of cleanups to our atomic and locking
           routines. They now more closely match the released RISC-V memory
           model draft.
      
         - Our module loading support has been cleaned up and is now enabled
           by default, despite some limitations still existing.
      
         - A patch to define COMMANDLINE_FORCE instead of COMMANDLINE_OVERRIDE
           so the generic device tree code picks up handling all our command
           line stuff.
      
        There's more information in the merge commits for each patch set"
      
      * tag 'riscv-for-linus-4.17-mw0' of git://git.kernel.org/pub/scm/linux/kernel/git/palmer/riscv-linux: (21 commits)
        RISC-V: Rename CONFIG_CMDLINE_OVERRIDE to CONFIG_CMDLINE_FORCE
        RISC-V: Add definition of relocation types
        RISC-V: Enable module support in defconfig
        RISC-V: Support SUB32 relocation type in kernel module
        RISC-V: Support ADD32 relocation type in kernel module
        RISC-V: Support ALIGN relocation type in kernel module
        RISC-V: Support RVC_BRANCH/JUMP relocation type in kernel modulewq
        RISC-V: Support HI20/LO12_I/LO12_S relocation type in kernel module
        RISC-V: Support CALL relocation type in kernel module
        RISC-V: Support GOT_HI20/CALL_PLT relocation type in kernel module
        RISC-V: Add section of GOT.PLT for kernel module
        RISC-V: Add sections of PLT and GOT for kernel module
        riscv/atomic: Strengthen implementations with fences
        riscv/spinlock: Strengthen implementations with fences
        riscv/barrier: Define __smp_{store_release,load_acquire}
        riscv/ftrace: Add HAVE_FUNCTION_GRAPH_RET_ADDR_PTR support
        riscv/ftrace: Add DYNAMIC_FTRACE_WITH_REGS support
        riscv/ftrace: Add ARCH_SUPPORTS_FTRACE_OPS support
        riscv/ftrace: Add dynamic function graph tracer support
        riscv/ftrace: Add dynamic function tracer support
        ...
      527cd207
    • Linus Torvalds's avatar
      Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux · 23221d99
      Linus Torvalds authored
      Pull arm64 updates from Will Deacon:
       "Nothing particularly stands out here, probably because people were
        tied up with spectre/meltdown stuff last time around. Still, the main
        pieces are:
      
         - Rework of our CPU features framework so that we can whitelist CPUs
           that don't require kpti even in a heterogeneous system
      
         - Support for the IDC/DIC architecture extensions, which allow us to
           elide instruction and data cache maintenance when writing out
           instructions
      
         - Removal of the large memory model which resulted in suboptimal
           codegen by the compiler and increased the use of literal pools,
           which could potentially be used as ROP gadgets since they are
           mapped as executable
      
         - Rework of forced signal delivery so that the siginfo_t is
           well-formed and handling of show_unhandled_signals is consolidated
           and made consistent between different fault types
      
         - More siginfo cleanup based on the initial patches from Eric
           Biederman
      
         - Workaround for Cortex-A55 erratum #1024718
      
         - Some small ACPI IORT updates and cleanups from Lorenzo Pieralisi
      
         - Misc cleanups and non-critical fixes"
      
      * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (70 commits)
        arm64: uaccess: Fix omissions from usercopy whitelist
        arm64: fpsimd: Split cpu field out from struct fpsimd_state
        arm64: tlbflush: avoid writing RES0 bits
        arm64: cmpxchg: Include linux/compiler.h in asm/cmpxchg.h
        arm64: move percpu cmpxchg implementation from cmpxchg.h to percpu.h
        arm64: cmpxchg: Include build_bug.h instead of bug.h for BUILD_BUG
        arm64: lse: Include compiler_types.h and export.h for out-of-line LL/SC
        arm64: fpsimd: include <linux/init.h> in fpsimd.h
        drivers/perf: arm_pmu_platform: do not warn about affinity on uniprocessor
        perf: arm_spe: include linux/vmalloc.h for vmap()
        Revert "arm64: Revert L1_CACHE_SHIFT back to 6 (64-byte cache line size)"
        arm64: cpufeature: Avoid warnings due to unused symbols
        arm64: Add work around for Arm Cortex-A55 Erratum 1024718
        arm64: Delay enabling hardware DBM feature
        arm64: Add MIDR encoding for Arm Cortex-A55 and Cortex-A35
        arm64: capabilities: Handle shared entries
        arm64: capabilities: Add support for checks based on a list of MIDRs
        arm64: Add helpers for checking CPU MIDR against a range
        arm64: capabilities: Clean up midr range helpers
        arm64: capabilities: Change scope of VHE to Boot CPU feature
        ...
      23221d99
    • Linus Torvalds's avatar
      Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 5b1f3dc9
      Linus Torvalds authored
      Pull irq updates from Thomas Gleixner:
       "The usual pile of boring changes:
      
         - Consolidate tasklet functions to share code instead of duplicating
           it
      
         - The first step for making the low level entry handler management on
           multi-platform kernels generic
      
         - A new sysfs file which allows to retrieve the wakeup state of
           interrupts.
      
         - Ensure that the interrupt thread follows the effective affinity and
           not the programmed affinity to avoid cross core wakeups.
      
         - Two new interrupt controller drivers (Microsemi Ocelot and Qualcomm
           PDC)
      
         - Fix the wakeup path clock handling for Reneasas interrupt chips.
      
         - Rework the boot time register reset for ARM GIC-V2/3
      
         - Better suspend/resume support for ARM GIV-V3/ITS
      
         - Add missing locking to the ARM GIC set_type() callback
      
         - Small fixes for the irq simulator code
      
         - SPDX identifiers for the irq core code and removal of boiler plate
      
         - Small cleanups all over the place"
      
      * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (37 commits)
        openrisc: Set CONFIG_MULTI_IRQ_HANDLER
        arm64: Set CONFIG_MULTI_IRQ_HANDLER
        genirq: Make GENERIC_IRQ_MULTI_HANDLER depend on !MULTI_IRQ_HANDLER
        irqchip/gic: Take lock when updating irq type
        irqchip/gic: Update supports_deactivate static key to modern api
        irqchip/gic-v3: Ensure GICR_CTLR.EnableLPI=0 is observed before enabling
        irqchip: Add a driver for the Microsemi Ocelot controller
        dt-bindings: interrupt-controller: Add binding for the Microsemi Ocelot interrupt controller
        irqchip/gic-v3: Probe for SCR_EL3 being clear before resetting AP0Rn
        irqchip/gic-v3: Don't try to reset AP0Rn
        irqchip/gic-v3: Do not check trigger configuration of partitionned LPIs
        genirq: Remove license boilerplate/references
        genirq: Add missing SPDX identifiers
        genirq/matrix: Cleanup SPDX identifier
        genirq: Cleanup top of file comments
        genirq: Pass desc to __irq_free instead of irq number
        irqchip/gic-v3: Loudly complain about the use of IRQ_TYPE_NONE
        irqchip/gic: Loudly complain about the use of IRQ_TYPE_NONE
        RISC-V: Move to the new GENERIC_IRQ_MULTI_HANDLER handler
        genirq: Add CONFIG_GENERIC_IRQ_MULTI_HANDLER
        ...
      5b1f3dc9
    • Linus Torvalds's avatar
      Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 680014d6
      Linus Torvalds authored
      Pull time(r) updates from Thomas Gleixner:
       "A small set of updates for timers and timekeeping:
      
         - The most interesting change is the consolidation of clock MONOTONIC
           and clock BOOTTIME.
      
           Clock MONOTONIC behaves now exactly like clock BOOTTIME and does
           not longer ignore the time spent in suspend. A new clock
           MONOTONIC_ACTIVE is provived which behaves like clock MONOTONIC in
           kernels before this change. This allows applications to
           programmatically check for the clock MONOTONIC behaviour.
      
           As discussed in the review thread, this has the potential of
           breaking user space and we might have to revert this. Knock on wood
           that we can avoid that exercise.
      
         - Updates to the NTP mechanism to improve accuracy
      
         - A new kernel internal data structure to aid the ongoing Y2038 work.
      
         - Cleanups and simplifications of the clocksource code.
      
         - Make the alarmtimer code play nicely with debugobjects"
      
      * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        alarmtimer: Init nanosleep alarm timer on stack
        y2038: Introduce struct __kernel_old_timeval
        tracing: Unify the "boot" and "mono" tracing clocks
        hrtimer: Unify MONOTONIC and BOOTTIME clock behavior
        posix-timers: Unify MONOTONIC and BOOTTIME clock behavior
        timekeeping: Remove boot time specific code
        Input: Evdev - unify MONOTONIC and BOOTTIME clock behavior
        timekeeping: Make the MONOTONIC clock behave like the BOOTTIME clock
        timekeeping: Add the new CLOCK_MONOTONIC_ACTIVE clock
        timekeeping/ntp: Determine the multiplier directly from NTP tick length
        timekeeping/ntp: Don't align NTP frequency adjustments to ticks
        clocksource: Use ATTRIBUTE_GROUPS
        clocksource: Use DEVICE_ATTR_RW/RO/WO to define device attributes
        clocksource: Don't walk the clocksource list for empty override
      680014d6
    • Linus Torvalds's avatar
      Merge tag 'random_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/random · 0c21fd6e
      Linus Torvalds authored
      Pull /dev/random updates from Ted Ts'o:
       "A few random (cough, cough) cleanups for the /dev/random driver"
      
      * tag 'random_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/random:
        drivers/char/random.c: remove unused dont_count_entropy
        random: optimize add_interrupt_randomness
        random: always fill buffer in get_random_bytes_wait
        random: use a tighter cap in credit_entropy_bits_safe()
      0c21fd6e
    • Linus Torvalds's avatar
      Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 · 3e968c9f
      Linus Torvalds authored
      Pull ext4 updates from Ted Ts'o:
       "Cleanups and bugfixes for ext4, including some fixes to make ext4 more
        robust against maliciously crafted file system images.
      
        (I still don't recommend that container folks hold any delusions that
        mounting arbitary images that can be crafted by malicious attackers
        should be considered sane thing to do, though!)"
      
      * tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (29 commits)
        ext4: force revalidation of directory pointer after seekdir(2)
        ext4: add extra checks to ext4_xattr_block_get()
        ext4: add bounds checking to ext4_xattr_find_entry()
        ext4: move call to ext4_error() into ext4_xattr_check_block()
        ext4: don't show data=<mode> option if defaulted
        ext4: omit init_itable=n in procfs when disabled
        ext4: show more binary mount options in procfs
        ext4: simplify kobject usage
        ext4: remove unused parameters in sysfs code
        ext4: null out kobject* during sysfs cleanup
        ext4: don't allow r/w mounts if metadata blocks overlap the superblock
        ext4: always initialize the crc32c checksum driver
        ext4: fail ext4_iget for root directory if unallocated
        ext4: limit xattr size to INT_MAX
        ext4: add validity checks for bitmap block numbers
        ext4: fix comments in ext4_swap_extents()
        ext4: use generic_writepages instead of __writepage/write_cache_pages
        ext4: don't complain about incorrect features when probing
        ext4: remove EXT4_STATE_DIOREAD_LOCK flag
        ext4: fix offset overflow on 32-bit archs in ext4_iomap_begin()
        ...
      3e968c9f
    • Linus Torvalds's avatar
      Merge tag '4.17-SMB3-Fixes' of git://git.samba.org/sfrench/cifs-2.6 · a8f8e8ac
      Linus Torvalds authored
      Pull cifs updates from Steve French:
       "Includes SMB3.11 security improvements, as well as various fixes for
        stable and some debugging improvements"
      
      * tag '4.17-SMB3-Fixes' of git://git.samba.org/sfrench/cifs-2.6:
        cifs: Add minor debug message during negprot
        smb3: Fix root directory when server returns inode number of zero
        cifs: fix sparse warning on previous patch in a few printks
        cifs: add server->vals->header_preamble_size
        cifs: smbd: disconnect transport on RDMA errors
        cifs: smbd: avoid reconnect lockup
        Don't log confusing message on reconnect by default
        Don't log expected error on DFS referral request
        fs: cifs: Replace _free_xid call in cifs_root_iget function
        SMB3.1.1 dialect is no longer experimental
        Tree connect for SMB3.1.1 must be signed for non-encrypted shares
        fix smb3-encryption breakage when CONFIG_DEBUG_SG=y
        CIFS: fix sha512 check in cifs_crypto_secmech_release
        CIFS: implement v3.11 preauth integrity
        CIFS: add sha512 secmech
        CIFS: refactor crypto shash/sdesc allocation&free
        Update README file for cifs.ko
        Update TODO list for cifs.ko
        cifs: fix memory leak in SMB2_open()
        CIFS: SMBD: fix spelling mistake: "faield" and "legnth"
      a8f8e8ac
    • Linus Torvalds's avatar
      Merge tag 'gfs2-4.17.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2 · 2bd99df5
      Linus Torvalds authored
      Pull gfs2 updates from Bob Peterson:
       "We've only got nine GFS2 patches for this merge window:
      
         - report journal recovery times more accurately during journal replay
           (Abhi Das)
      
         - fix fallocate chunk size (Andreas Gruenbacher)
      
         - correctly dirty inodes during rename (Andreas Gruenbacher)
      
         - improve the comment for function gfs2_block_map (Andreas
           Gruenbacher)
      
         - improve kernel trace point iomap end: The physical block address
           was added (Andreas Gruenbacher)
      
         - fix a nasty file system corruption bug that surfaced in xfstests
           476 in punch-hole/truncate (Andreas Gruenbacher)
      
         - fix a problem Christoph Helwig pointed out, namely, that GFS2 was
           misusing the IOMAP_ZERO flag. The zeroing of new blocks was moved
           to the proper fallocate code (Andreas Gruenbacher)
      
         - declare function gfs2_remove_from_ail as static (Bob Peterson)
      
         - only set PageChecked for jdata page writes (Bob Peterson)"
      
      * tag 'gfs2-4.17.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2:
        gfs2: time journal recovery steps accurately
        gfs2: Zero out fallocated blocks in fallocate_chunk
        gfs2: Check for the end of metadata in punch_hole
        gfs2: gfs2_iomap_end tracepoint: log block address
        gfs2: Improve gfs2_block_map comment
        GFS2: Only set PageChecked for jdata pages
        GFS2: Make function gfs2_remove_from_ail static
        gfs2: Dirty source inode during rename
        gfs2: Fix fallocate chunk size
      2bd99df5
    • Linus Torvalds's avatar
      Merge tag 'for-4.17-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux · 94514bbe
      Linus Torvalds authored
      Pull btrfs updates from David Sterba:
       "There are a several user visible changes, the rest is mostly invisible
        and continues to clean up the whole code base.
      
        User visible changes:
         - new mount option nossd_spread (pair for ssd_spread)
      
         - mount option subvolid will detect junk after the number and fail
           the mount
      
         - add message after cancelled device replace
      
         - direct module dependency on libcrc32, removed own crc wrappers
      
         - removed user space transaction ioctls
      
         - use lighter locking when reading /proc/self/mounts, RCU instead of
           mutex to avoid unnecessary contention
      
        Enhancements:
         - skip writeback of last page when truncating file to same size
      
         - send: do not issue unnecessary truncate operations
      
         - mount option token specifiers: use %u for unsigned values, more
           validation
      
         - selftests: more tree block validations
      
        qgroups:
         - preparatory work for splitting reservation types for data and
           metadata, this should allow for more accurate tracking and fix some
           issues with underflows or do further enhancements
      
         - split metadata reservations for started and joined transaction so
           they do not get mixed up and are accounted correctly at commit time
      
         - with the above, it's possible to revert patch that potentially
           deadlocks when trying to make more space by explicitly committing
           when the quota limit is hit
      
         - fix root item corruption when multiple same source snapshots are
           created with quota enabled
      
        RAID56:
         - make sure target is identical to source when raid56 rebuild fails
           after dev-replace
      
         - faster rebuild during scrub, batch by stripes and not
           block-by-block
      
         - make more use of cached data when rebuilding from a missing device
      
        Fixes:
         - null pointer deref when device replace target is missing
      
         - fix fsync after hole punching when using no-holes feature
      
         - fix lockdep splat when allocating percpu data with wrong GFP flags
      
        Cleanups, refactoring, core changes:
         - drop redunant parameters from various functions
      
         - kill and opencode trivial helpers
      
         - __cold/__exit function annotations
      
         - dead code removal
      
         - continued audit and documentation of memory barriers
      
         - error handling: handle removal from uuid tree
      
         - error handling: remove handling of impossible condtitons
      
         - more debugging or error messages
      
         - updated tracepoints
      
         - one VLA use removal (and one still left)"
      
      * tag 'for-4.17-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux: (164 commits)
        btrfs: lift errors from add_extent_changeset to the callers
        Btrfs: print error messages when failing to read trees
        btrfs: user proper type for btrfs_mask_flags flags
        btrfs: split dev-replace locking helpers for read and write
        btrfs: remove stale comments about fs_mutex
        btrfs: use RCU in btrfs_show_devname for device list traversal
        btrfs: update barrier in should_cow_block
        btrfs: use lockdep_assert_held for mutexes
        btrfs: use lockdep_assert_held for spinlocks
        btrfs: Validate child tree block's level and first key
        btrfs: tests/qgroup: Fix wrong tree backref level
        Btrfs: fix copy_items() return value when logging an inode
        Btrfs: fix fsync after hole punching when using no-holes feature
        btrfs: use helper to set ulist aux from a qgroup
        Revert "btrfs: qgroups: Retry after commit on getting EDQUOT"
        btrfs: qgroup: Update trace events for metadata reservation
        btrfs: qgroup: Use root::qgroup_meta_rsv_* to record qgroup meta reserved space
        btrfs: delayed-inode: Use new qgroup meta rsv for delayed inode and item
        btrfs: qgroup: Use separate meta reservation type for delalloc
        btrfs: qgroup: Introduce function to convert META_PREALLOC into META_PERTRANS
        ...
      94514bbe
    • Linus Torvalds's avatar
      Merge tag 'xfs-4.17-merge-1' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux · 547c43d7
      Linus Torvalds authored
      Pull xfs updates from Darrick Wong:
       "Here's the first round of fixes for XFS for 4.17.
      
        The biggest new features this time around are the addition of lazytime
        support, further enhancement of the on-disk inode metadata verifiers,
        and a patch to smooth over some of the AGFL padding problems that have
        intermittently plagued users since 4.5. I forsee sending a second pull
        request next week with further bug fixes and speedups in the online
        scrub code and elsewhere.
      
        This series has been run through a full xfstests run over the weekend
        and through a quick xfstests run against this morning's master, with
        no major failures reported.
      
        Summary of changes for this release:
      
         - Various cleanups and code fixes
      
         - Implement lazytime as a mount option
      
         - Convert various on-disk metadata checks from asserts to -EFSCORRUPTED
      
         - Fix accounting problems with the rmap per-ag reservations
      
         - Refactorings and cleanups for xfs_log_force
      
         - Various bugfixes for the reflink code
      
         - Work around v5 AGFL padding problems to prevent fs shutdowns
      
         - Establish inode fork verifiers to inspect on-disk metadata
           correctness
      
         - Various online scrub fixes
      
         - Fix v5 swapext blowing up on deleted inodes"
      
      * tag 'xfs-4.17-merge-1' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux: (49 commits)
        xfs: do not log/recover swapext extent owner changes for deleted inodes
        xfs: clean up xfs_mount allocation and dynamic initializers
        xfs: remove dead inode version setting code
        xfs: catch inode allocation state mismatch corruption
        xfs: xfs_scrub_iallocbt_xref_rmap_inodes should use xref_set_corrupt
        xfs: flag inode corruption if parent ptr doesn't get us a real inode
        xfs: don't accept inode buffers with suspicious unlinked chains
        xfs: move inode extent size hint validation to libxfs
        xfs: record inode buf errors as a xref error in inobt scrubber
        xfs: remove xfs_buf parameter from inode scrub methods
        xfs: inode scrubber shouldn't bother with raw checks
        xfs: bmap scrubber should do rmap xref with bmap for sparse files
        xfs: refactor inode buffer verifier error logging
        xfs: refactor inode verifier error logging
        xfs: refactor bmap record validation
        xfs: sanity-check the unused space before trying to use it
        xfs: detect agfl count corruption and reset agfl
        xfs: unwind the try_again loop in xfs_log_force
        xfs: refactor xfs_log_force_lsn
        xfs: minor cleanup for xfs_reflink_end_cow
        ...
      547c43d7
    • Linus Torvalds's avatar
      Merge branch 'work.dcache' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 2e08edc5
      Linus Torvalds authored
      Pull vfs dcache updates from Al Viro:
       "Part of this is what the trylock loop elimination series has turned
        into, part making d_move() preserve the parent (and thus the path) of
        victim, plus some general cleanups"
      
      * 'work.dcache' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (22 commits)
        d_genocide: move export to definition
        fold dentry_lock_for_move() into its sole caller and clean it up
        make non-exchanging __d_move() copy ->d_parent rather than swap them
        oprofilefs: don't oops on allocation failure
        lustre: get rid of pointless casts to struct dentry *
        debugfs_lookup(): switch to lookup_one_len_unlocked()
        fold lookup_real() into __lookup_hash()
        take out orphan externs (empty_string/slash_string)
        split d_path() and friends into a separate file
        dcache.c: trim includes
        fs/dcache: Avoid a try_lock loop in shrink_dentry_list()
        get rid of trylock loop around dentry_kill()
        handle move to LRU in retain_dentry()
        dput(): consolidate the "do we need to retain it?" into an inlined helper
        split the slow part of lock_parent() off
        now lock_parent() can't run into killed dentry
        get rid of trylock loop in locking dentries on shrink list
        d_delete(): get rid of trylock loop
        fs/dcache: Move dentry_kill() below lock_parent()
        fs/dcache: Remove stale comment from dentry_kill()
        ...
      2e08edc5
    • Arnd Bergmann's avatar
      netdevsim: remove incorrect __net_initdata annotations · 87248d31
      Arnd Bergmann authored
      The __net_initdata section cannot currently be used for structures that
      get cleaned up in an exitcall using unregister_pernet_operations:
      
      WARNING: vmlinux.o(.text+0x868c34): Section mismatch in reference from the function nsim_devlink_exit() to the (unknown reference) .init.data:(unknown)
      The function nsim_devlink_exit() references
      the (unknown reference) __initdata (unknown).
      This is often because nsim_devlink_exit lacks a __initdata
      annotation or the annotation of (unknown) is wrong.
      WARNING: vmlinux.o(.text+0x868c64): Section mismatch in reference from the function nsim_devlink_init() to the (unknown reference) .init.data:(unknown)
      WARNING: vmlinux.o(.text+0x8692bc): Section mismatch in reference from the function nsim_fib_exit() to the (unknown reference) .init.data:(unknown)
      WARNING: vmlinux.o(.text+0x869300): Section mismatch in reference from the function nsim_fib_init() to the (unknown reference) .init.data:(unknown)
      
      As that warning tells us, discarding the structure after a module is
      loaded would lead to a undefined behavior when that module is removed.
      
      It might be possible to change that annotation so it has no effect for
      loadable modules, but I have not figured out exactly how to do that, and
      we want this to be fixed in -rc1.
      
      This just removes the annotations, just like we do for all other such
      modules.
      
      Fixes: 37923ed6 ("netdevsim: Add simple FIB resource controller via devlink")
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      87248d31
    • Bert Kenward's avatar
      sfc: remove ctpio_dmabuf_start from stats · 458bd99e
      Bert Kenward authored
      The ctpio_dmabuf_start entry is not actually a stat and shouldn't
      be exposed to ethtool.
      
      Fixes: 2c0b6ee8 ("sfc: expose CTPIO stats on NICs that support them")
      Signed-off-by: default avatarBert Kenward <bkenward@solarflare.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      458bd99e
    • Eric Dumazet's avatar
      inet: frags: fix ip6frag_low_thresh boundary · 3d234012
      Eric Dumazet authored
      Giving an integer to proc_doulongvec_minmax() is dangerous on 64bit arches,
      since linker might place next to it a non zero value preventing a change
      to ip6frag_low_thresh.
      
      ip6frag_low_thresh is not used anymore in the kernel, but we do not
      want to prematuraly break user scripts wanting to change it.
      
      Since specifying a minimal value of 0 for proc_doulongvec_minmax()
      is moot, let's remove these zero values in all defrag units.
      
      Fixes: 6e00f7dd ("ipv6: frags: fix /proc/sys/net/ipv6/ip6frag_low_thresh")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reported-by: default avatarMaciej Żenczykowski <maze@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3d234012
    • GhantaKrishnamurthy MohanKrishna's avatar
      tipc: Fix namespace violation in tipc_sk_fill_sock_diag · 4b2e6877
      GhantaKrishnamurthy MohanKrishna authored
      To fetch UID info for socket diagnostics, we determine the
      namespace of user context using tipc socket instance. This
      may cause namespace violation, as the kernel will remap based
      on UID.
      
      We fix this by fetching namespace info using the calling userspace
      netlink socket.
      
      Fixes: c30b70de (tipc: implement socket diagnostics for AF_TIPC)
      Reported-by: syzbot+326e587eff1074657718@syzkaller.appspotmail.com
      Acked-by: default avatarJon Maloy <jon.maloy@ericsson.com>
      Signed-off-by: default avatarGhantaKrishnamurthy MohanKrishna <mohan.krishna.ghanta.krishnamurthy@ericsson.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4b2e6877
    • Paolo Abeni's avatar
      net: avoid unneeded atomic operation in ip*_append_data() · 9e8445a5
      Paolo Abeni authored
      After commit 694aba69 ("ipv4: factorize sk_wmem_alloc updates
      done by __ip_append_data()") and commit 1f4c6eb2 ("ipv6:
      factorize sk_wmem_alloc updates done by __ip6_append_data()"),
      when transmitting sub MTU datagram, an addtional, unneeded atomic
      operation is performed in ip*_append_data() to update wmem_alloc:
      in the above condition the delta is 0.
      
      The above cause small but measurable performance regression in UDP
      xmit tput test with packet size below MTU.
      
      This change avoids such overhead updating wmem_alloc only if
      wmem_alloc_delta is non zero.
      
      The error path is left intentionally unmodified: it's a slow path
      and simplicity is preferred to performances.
      
      Fixes: 694aba69 ("ipv4: factorize sk_wmem_alloc updates done by __ip_append_data()")
      Fixes: 1f4c6eb2 ("ipv6: factorize sk_wmem_alloc updates done by __ip6_append_data()")
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9e8445a5
    • Arnd Bergmann's avatar
      nvmem: disallow modular CONFIG_NVMEM · 2a37ce25
      Arnd Bergmann authored
      The new of_get_nvmem_mac_address() helper function causes a link error
      with CONFIG_NVMEM=m:
      
      drivers/of/of_net.o: In function `of_get_nvmem_mac_address':
      of_net.c:(.text+0x168): undefined reference to `of_nvmem_cell_get'
      of_net.c:(.text+0x19c): undefined reference to `nvmem_cell_read'
      of_net.c:(.text+0x1a8): undefined reference to `nvmem_cell_put'
      
      I could not come up with a good solution for this, as the code is always
      built-in. Using an #if IS_REACHABLE() check around it would solve the
      link time issue but then stop it from working in that configuration.
      Making of_nvmem_cell_get() an inline function could also solve that, but
      seems a bit ugly since it's somewhat larger than most inline functions,
      and it would just bring that problem into the callers.  Splitting the
      function into a separate file might be an alternative.
      
      This uses the big hammer by making CONFIG_NVMEM itself a 'bool' symbol,
      which avoids the problem entirely but makes the vmlinux larger for anyone
      that might use NVMEM support but doesn't need it built-in otherwise.
      
      Fixes: 9217e566 ("of_net: Implement of_get_nvmem_mac_address helper")
      Cc: Mike Looijmans <mike.looijmans@topic.nl>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Cc: Andrew Lunn <andrew@lunn.ch>
      Cc: David S. Miller <davem@davemloft.net>
      Cc: netdev@vger.kernel.org
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: Mike Looijmans
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2a37ce25
    • Tan Xiaojun's avatar
      net: hns3: fix length overflow when CONFIG_ARM64_64K_PAGES · 48d154e7
      Tan Xiaojun authored
      When enable the config item "CONFIG_ARM64_64K_PAGES", the size of PAGE_SIZE
      is 65536(64K). But the type of length is u16, it will overflow. So change it
      to u32.
      Signed-off-by: default avatarTan Xiaojun <tanxiaojun@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      48d154e7
    • Dirk van der Merwe's avatar
      nfp: use full 40 bits of the NSP buffer address · 1489bbd1
      Dirk van der Merwe authored
      The NSP default buffer is a piece of NFP memory where additional
      command data can be placed.  Its format has been copied from
      host buffer, but the PCIe selection bits do not make sense in
      this case.  If those get masked out from a NFP address - writes
      to random place in the chip memory may be issued and crash the
      device.
      
      Even in the general NSP buffer case, it doesn't make sense to have the
      PCIe selection bits there anymore. These are unused at the moment, and
      when it becomes necessary, the PCIe selection bits should rather be
      moved to another register to utilise more bits for the buffer address.
      
      This has never been an issue because the buffer used to be
      allocated in memory with less-than-38-bit-long address but that
      is about to change.
      
      Fixes: 1a64821c ("nfp: add support for service processor access")
      Signed-off-by: default avatarDirk van der Merwe <dirk.vandermerwe@netronome.com>
      Reviewed-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1489bbd1
    • Alexander Graf's avatar
      lan78xx: Connect phy early · 92571a1a
      Alexander Graf authored
      When using wicked with a lan78xx device attached to the system, we
      end up with ethtool commands issued on the device before an ifup
      got issued. That lead to the following crash:
      
          Unable to handle kernel NULL pointer dereference at virtual address 0000039c
          pgd = ffff800035b30000
          [0000039c] *pgd=0000000000000000
          Internal error: Oops: 96000004 [#1] SMP
          Modules linked in: [...]
          Supported: Yes
          CPU: 3 PID: 638 Comm: wickedd Tainted: G            E      4.12.14-0-default #1
          Hardware name: raspberrypi rpi/rpi, BIOS 2018.03-rc2 02/21/2018
          task: ffff800035e74180 task.stack: ffff800036718000
          PC is at phy_ethtool_ksettings_get+0x20/0x98
          LR is at lan78xx_get_link_ksettings+0x44/0x60 [lan78xx]
          pc : [<ffff0000086f7f30>] lr : [<ffff000000dcca84>] pstate: 20000005
          sp : ffff80003671bb20
          x29: ffff80003671bb20 x28: ffff800035e74180
          x27: ffff000008912000 x26: 000000000000001d
          x25: 0000000000000124 x24: ffff000008f74d00
          x23: 0000004000114809 x22: 0000000000000000
          x21: ffff80003671bbd0 x20: 0000000000000000
          x19: ffff80003671bbd0 x18: 000000000000040d
          x17: 0000000000000001 x16: 0000000000000000
          x15: 0000000000000000 x14: ffffffffffffffff
          x13: 0000000000000000 x12: 0000000000000020
          x11: 0101010101010101 x10: fefefefefefefeff
          x9 : 7f7f7f7f7f7f7f7f x8 : fefefeff31677364
          x7 : 0000000080808080 x6 : ffff80003671bc9c
          x5 : ffff80003671b9f8 x4 : ffff80002c296190
          x3 : 0000000000000000 x2 : 0000000000000000
          x1 : ffff80003671bbd0 x0 : ffff80003671bc00
          Process wickedd (pid: 638, stack limit = 0xffff800036718000)
          Call trace:
          Exception stack(0xffff80003671b9e0 to 0xffff80003671bb20)
          b9e0: ffff80003671bc00 ffff80003671bbd0 0000000000000000 0000000000000000
          ba00: ffff80002c296190 ffff80003671b9f8 ffff80003671bc9c 0000000080808080
          ba20: fefefeff31677364 7f7f7f7f7f7f7f7f fefefefefefefeff 0101010101010101
          ba40: 0000000000000020 0000000000000000 ffffffffffffffff 0000000000000000
          ba60: 0000000000000000 0000000000000001 000000000000040d ffff80003671bbd0
          ba80: 0000000000000000 ffff80003671bbd0 0000000000000000 0000004000114809
          baa0: ffff000008f74d00 0000000000000124 000000000000001d ffff000008912000
          bac0: ffff800035e74180 ffff80003671bb20 ffff000000dcca84 ffff80003671bb20
          bae0: ffff0000086f7f30 0000000020000005 ffff80002c296000 ffff800035223900
          bb00: 0000ffffffffffff 0000000000000000 ffff80003671bb20 ffff0000086f7f30
          [<ffff0000086f7f30>] phy_ethtool_ksettings_get+0x20/0x98
          [<ffff000000dcca84>] lan78xx_get_link_ksettings+0x44/0x60 [lan78xx]
          [<ffff0000087cbc40>] ethtool_get_settings+0x68/0x210
          [<ffff0000087cc0d4>] dev_ethtool+0x214/0x2180
          [<ffff0000087e5008>] dev_ioctl+0x400/0x630
          [<ffff00000879dd00>] sock_do_ioctl+0x70/0x88
          [<ffff00000879f5f8>] sock_ioctl+0x208/0x368
          [<ffff0000082cde10>] do_vfs_ioctl+0xb0/0x848
          [<ffff0000082ce634>] SyS_ioctl+0x8c/0xa8
          Exception stack(0xffff80003671bec0 to 0xffff80003671c000)
          bec0: 0000000000000009 0000000000008946 0000fffff4e841d0 0000aa0032687465
          bee0: 0000aaaafa2319d4 0000fffff4e841d4 0000000032687465 0000000032687465
          bf00: 000000000000001d 7f7fff7f7f7f7f7f 72606b622e71ff4c 7f7f7f7f7f7f7f7f
          bf20: 0101010101010101 0000000000000020 ffffffffffffffff 0000ffff7f510c68
          bf40: 0000ffff7f6a9d18 0000ffff7f44ce30 000000000000040d 0000ffff7f6f98f0
          bf60: 0000fffff4e842c0 0000000000000001 0000aaaafa2c2e00 0000ffff7f6ab000
          bf80: 0000fffff4e842c0 0000ffff7f62a000 0000aaaafa2b9f20 0000aaaafa2c2e00
          bfa0: 0000fffff4e84818 0000fffff4e841a0 0000ffff7f5ad0cc 0000fffff4e841a0
          bfc0: 0000ffff7f44ce3c 0000000080000000 0000000000000009 000000000000001d
          bfe0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
      
      The culprit is quite simple: The driver tries to access the phy left and right,
      but only actually has a working reference to it when the device is up.
      
      The fix thus is quite simple too: Get a reference to the phy on probe already
      and keep it even when the device is going down.
      
      With this patch applied, I can successfully run wicked on my system and bring
      the interface up and down as many times as I want, without getting NULL pointer
      dereferences in between.
      Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      92571a1a
    • Jakub Kicinski's avatar
      nfp: add a separate counter for packets with CHECKSUM_COMPLETE · 0df57e60
      Jakub Kicinski authored
      We are currently counting packets with CHECKSUM_COMPLETE as
      "hw_rx_csum_ok".  This is confusing.  Add a new counter.
      To make sure it fits in the same cacheline move the less used
      error counter to a different location.
      Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
      Reviewed-by: default avatarDirk van der Merwe <dirk.vandermerwe@netronome.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0df57e60
    • Jon Maloy's avatar
      tipc: Fix missing list initializations in struct tipc_subscription · b714295a
      Jon Maloy authored
      When an item of struct tipc_subscription is created, we fail to
      initialize the two lists aggregated into the struct. This has so far
      never been a problem, since the items are just added to a root
      object by list_add(), which does not require the addee list to be
      pre-initialized. However, syzbot is provoking situations where this
      addition fails, whereupon the attempted removal if the item from
      the list causes a crash.
      
      This problem seems to always have been around, despite that the code
      for creating this object was rewritten in commit 242e82cc ("tipc:
      collapse subscription creation functions"), which is still in net-next.
      
      We fix this for that commit by initializing the two lists properly.
      
      Fixes: 242e82cc ("tipc: collapse subscription creation functions")
      Reported-by: syzbot+0bb443b74ce09197e970@syzkaller.appspotmail.com
      Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b714295a
    • David S. Miller's avatar
      Merge branch 'ipv6-udp-set-dst-cache-for-a-connected-sk-if-current-not-valid' · f51ffde9
      David S. Miller authored
      Alexey Kodanev says:
      
      ====================
      ipv6: udp: set dst cache for a connected sk if current not valid
      
      A new RTF_CACHE route can be created with the socket's dst cache
      update between the below calls in udpv6_sendmsg(), when datagram
      sending results to ICMPV6_PKT_TOOBIG error:
      
         dst = ip6_sk_dst_lookup_flow(...)
         ...
      release_dst:
          if (dst) {
              if (connected) {
                  ip6_dst_store(sk, dst)
      
      Therefore, the new socket's dst cache reset to the old one on
      "release_dst:".
      
      The first three patches prepare the code to store dst cache
      with ip6_sk_dst_lookup_flow():
      
        * the first patch adds ip6_sk_dst_store_flow() function with
          commonly used source and destiantion addresses checks using
          the flow information.
      
        * the second patch adds a new argument to ip6_sk_dst_lookup_flow()
          and ability to store dst in the socket's cache. Also, the two
          users of the function are updated without enabling the new
          behavior: pingv6_sendmsg() and udpv6_sendmsg().
      
        * the third patch makes 'connected' variable in udpv6_sendmsg()
          to be consistent with ip6_sk_dst_store_flow(), changes its type
          from int to bool.
      
      The last patch contains the actual fix that removes sk dst cache
      update in the end of udpv6_sendmsg(), and allows to do it in
      ip6_sk_dst_lookup_flow().
      
      v6: * use bool type for a new parameter in ip_sk_dst_lookup_flow()
          * add one more patch to convert 'connected' variable in
            udpv6_sendmsg() from int to bool type. If it shouldn't be
            here I will resend it when the net-next is opened.
      
      v5: * relocate ip6_sk_dst_store_flow() to net/ipv6/route.c and
            rename ip6_dst_store_flow() to ip6_sk_dst_store_flow() as
            suggested by Martin
      
      v4: * fix the error in the build of ip_dst_store_flow() reported by
            kbuild test robot due to missing checks for CONFIG_IPV6: add
            new function to ip6_output.c instead of ip6_route.h
          * add 'const' to struct flowi6 in ip6_dst_store_flow()
          * minor commit messages fixes
      
      v3: * instead of moving ip6_dst_store() above udp_v6_send_skb(),
            update socket's dst cache inside ip6_sk_dst_lookup_flow()
            if the current one is invalid
          * the issue not reproduced in 4.1, but starting from 4.2. Add
            one more 'Fixes:' commit that creates new RTF_CACHE route.
            Though, it is also mentioned in the first one
      ====================
      Acked-by: default avatarMartin KaFai Lau <kafai@fb.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f51ffde9
    • Alexey Kodanev's avatar
      ipv6: udp: set dst cache for a connected sk if current not valid · 4f858c56
      Alexey Kodanev authored
      A new RTF_CACHE route can be created between ip6_sk_dst_lookup_flow()
      and ip6_dst_store() calls in udpv6_sendmsg(), when datagram sending
      results to ICMPV6_PKT_TOOBIG error:
      
          udp_v6_send_skb(), for example with vti6 tunnel:
              vti6_xmit(), get ICMPV6_PKT_TOOBIG error
                  skb_dst_update_pmtu(), can create a RTF_CACHE clone
                  icmpv6_send()
          ...
          udpv6_err()
              ip6_sk_update_pmtu()
                 ip6_update_pmtu(), can create a RTF_CACHE clone
                 ...
                 ip6_datagram_dst_update()
                      ip6_dst_store()
      
      And after commit 33c162a9 ("ipv6: datagram: Update dst cache of
      a connected datagram sk during pmtu update"), the UDPv6 error handler
      can update socket's dst cache, but it can happen before the update in
      the end of udpv6_sendmsg(), preventing getting the new dst cache on
      the next udpv6_sendmsg() calls.
      
      In order to fix it, save dst in a connected socket only if the current
      socket's dst cache is invalid.
      
      The previous patch prepared ip6_sk_dst_lookup_flow() to do that with
      the new argument, and this patch enables it in udpv6_sendmsg().
      
      Fixes: 33c162a9 ("ipv6: datagram: Update dst cache of a connected datagram sk during pmtu update")
      Fixes: 45e4fd26 ("ipv6: Only create RTF_CACHE routes after encountering pmtu exception")
      Signed-off-by: default avatarAlexey Kodanev <alexey.kodanev@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4f858c56
    • Alexey Kodanev's avatar
      ipv6: udp: convert 'connected' to bool type in udpv6_sendmsg() · 9f542f61
      Alexey Kodanev authored
      This should make it consistent with ip6_sk_dst_lookup_flow()
      that is accepting the new 'connected' parameter of type bool.
      Signed-off-by: default avatarAlexey Kodanev <alexey.kodanev@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9f542f61
    • Alexey Kodanev's avatar
      ipv6: allow to cache dst for a connected sk in ip6_sk_dst_lookup_flow() · 96818159
      Alexey Kodanev authored
      Add 'connected' parameter to ip6_sk_dst_lookup_flow() and update
      the cache only if ip6_sk_dst_check() returns NULL and a socket
      is connected.
      
      The function is used as before, the new behavior for UDP sockets
      in udpv6_sendmsg() will be enabled in the next patch.
      Signed-off-by: default avatarAlexey Kodanev <alexey.kodanev@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      96818159
    • Alexey Kodanev's avatar
      ipv6: add a wrapper for ip6_dst_store() with flowi6 checks · 7d6850f7
      Alexey Kodanev authored
      Move commonly used pattern of ip6_dst_store() usage to a separate
      function - ip6_sk_dst_store_flow(), which will check the addresses
      for equality using the flow information, before saving them.
      
      There is no functional changes in this patch. In addition, it will
      be used in the next patch, in ip6_sk_dst_lookup_flow().
      Signed-off-by: default avatarAlexey Kodanev <alexey.kodanev@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7d6850f7
    • Russell King's avatar
      net: phy: marvell10g: add thermal hwmon device · 0d3ad854
      Russell King authored
      Add a thermal monitoring device for the Marvell 88x3310, which updates
      once a second.  We also need to hook into the suspend/resume mechanism
      to ensure that the thermal monitoring is reconfigured when we resume.
      Suggested-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0d3ad854
    • Eric Dumazet's avatar
      pptp: remove a buggy dst release in pptp_connect() · bfacfb45
      Eric Dumazet authored
      Once dst has been cached in socket via sk_setup_caps(),
      it is illegal to call ip_rt_put() (or dst_release()),
      since sk_setup_caps() did not change dst refcount.
      
      We can still dereference it since we hold socket lock.
      
      Caugth by syzbot :
      
      BUG: KASAN: use-after-free in atomic_dec_return include/asm-generic/atomic-instrumented.h:198 [inline]
      BUG: KASAN: use-after-free in dst_release+0x27/0xa0 net/core/dst.c:185
      Write of size 4 at addr ffff8801c54dc040 by task syz-executor4/20088
      
      CPU: 1 PID: 20088 Comm: syz-executor4 Not tainted 4.16.0+ #376
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
      Call Trace:
       __dump_stack lib/dump_stack.c:17 [inline]
       dump_stack+0x1a7/0x27d lib/dump_stack.c:53
       print_address_description+0x73/0x250 mm/kasan/report.c:256
       kasan_report_error mm/kasan/report.c:354 [inline]
       kasan_report+0x23c/0x360 mm/kasan/report.c:412
       check_memory_region_inline mm/kasan/kasan.c:260 [inline]
       check_memory_region+0x137/0x190 mm/kasan/kasan.c:267
       kasan_check_write+0x14/0x20 mm/kasan/kasan.c:278
       atomic_dec_return include/asm-generic/atomic-instrumented.h:198 [inline]
       dst_release+0x27/0xa0 net/core/dst.c:185
       sk_dst_set include/net/sock.h:1812 [inline]
       sk_dst_reset include/net/sock.h:1824 [inline]
       sock_setbindtodevice net/core/sock.c:610 [inline]
       sock_setsockopt+0x431/0x1b20 net/core/sock.c:707
       SYSC_setsockopt net/socket.c:1845 [inline]
       SyS_setsockopt+0x2ff/0x360 net/socket.c:1828
       do_syscall_64+0x281/0x940 arch/x86/entry/common.c:287
       entry_SYSCALL_64_after_hwframe+0x42/0xb7
      RIP: 0033:0x4552d9
      RSP: 002b:00007f4878126c68 EFLAGS: 00000246 ORIG_RAX: 0000000000000036
      RAX: ffffffffffffffda RBX: 00007f48781276d4 RCX: 00000000004552d9
      RDX: 0000000000000019 RSI: 0000000000000001 RDI: 0000000000000013
      RBP: 000000000072bea0 R08: 0000000000000010 R09: 0000000000000000
      R10: 00000000200010c0 R11: 0000000000000246 R12: 00000000ffffffff
      R13: 0000000000000526 R14: 00000000006fac30 R15: 0000000000000000
      
      Allocated by task 20088:
       save_stack+0x43/0xd0 mm/kasan/kasan.c:447
       set_track mm/kasan/kasan.c:459 [inline]
       kasan_kmalloc+0xad/0xe0 mm/kasan/kasan.c:552
       kasan_slab_alloc+0x12/0x20 mm/kasan/kasan.c:489
       kmem_cache_alloc+0x12e/0x760 mm/slab.c:3542
       dst_alloc+0x11f/0x1a0 net/core/dst.c:104
       rt_dst_alloc+0xe9/0x540 net/ipv4/route.c:1520
       __mkroute_output net/ipv4/route.c:2265 [inline]
       ip_route_output_key_hash_rcu+0xa49/0x2c60 net/ipv4/route.c:2493
       ip_route_output_key_hash+0x20b/0x370 net/ipv4/route.c:2322
       __ip_route_output_key include/net/route.h:126 [inline]
       ip_route_output_flow+0x26/0xa0 net/ipv4/route.c:2577
       ip_route_output_ports include/net/route.h:163 [inline]
       pptp_connect+0xa84/0x1170 drivers/net/ppp/pptp.c:453
       SYSC_connect+0x213/0x4a0 net/socket.c:1639
       SyS_connect+0x24/0x30 net/socket.c:1620
       do_syscall_64+0x281/0x940 arch/x86/entry/common.c:287
       entry_SYSCALL_64_after_hwframe+0x42/0xb7
      
      Freed by task 20082:
       save_stack+0x43/0xd0 mm/kasan/kasan.c:447
       set_track mm/kasan/kasan.c:459 [inline]
       __kasan_slab_free+0x11a/0x170 mm/kasan/kasan.c:520
       kasan_slab_free+0xe/0x10 mm/kasan/kasan.c:527
       __cache_free mm/slab.c:3486 [inline]
       kmem_cache_free+0x83/0x2a0 mm/slab.c:3744
       dst_destroy+0x266/0x380 net/core/dst.c:140
       dst_destroy_rcu+0x16/0x20 net/core/dst.c:153
       __rcu_reclaim kernel/rcu/rcu.h:178 [inline]
       rcu_do_batch kernel/rcu/tree.c:2675 [inline]
       invoke_rcu_callbacks kernel/rcu/tree.c:2930 [inline]
       __rcu_process_callbacks kernel/rcu/tree.c:2897 [inline]
       rcu_process_callbacks+0xd6c/0x17b0 kernel/rcu/tree.c:2914
       __do_softirq+0x2d7/0xb85 kernel/softirq.c:285
      
      The buggy address belongs to the object at ffff8801c54dc000
       which belongs to the cache ip_dst_cache of size 168
      The buggy address is located 64 bytes inside of
       168-byte region [ffff8801c54dc000, ffff8801c54dc0a8)
      The buggy address belongs to the page:
      page:ffffea0007153700 count:1 mapcount:0 mapping:ffff8801c54dc000 index:0x0
      flags: 0x2fffc0000000100(slab)
      raw: 02fffc0000000100 ffff8801c54dc000 0000000000000000 0000000100000010
      raw: ffffea0006b34b20 ffffea0006b6c1e0 ffff8801d674a1c0 0000000000000000
      page dumped because: kasan: bad access detected
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bfacfb45
    • Florian Fainelli's avatar
      net: dsa: mt7530: Use NULL instead of plain integer · 18bd5949
      Florian Fainelli authored
      We would be passing 0 instead of NULL as the rsp argument to
      mt7530_fdb_cmd(), fix that.
      
      Fixes: b8f126a8 ("net-next: dsa: add dsa support for Mediatek MT7530 switch")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Acked-by: default avatarSean Wang <sean.wang@mediatek.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      18bd5949
    • Florian Fainelli's avatar
      net: dsa: b53: Fix sparse warnings in b53_mmap.c · 861690d0
      Florian Fainelli authored
      sparse complains about the following warnings:
      
      drivers/net/dsa/b53/b53_mmap.c:33:31: warning: incorrect type in
      initializer (different address spaces)
      drivers/net/dsa/b53/b53_mmap.c:33:31:    expected unsigned char
      [noderef] [usertype] <asn:2>*regs
      drivers/net/dsa/b53/b53_mmap.c:33:31:    got void *priv
      
      and indeed, while what we are doing is functional, we are dereferencing
      a void * pointer into a void __iomem * which is not great. Just use the
      defined b53_mmap_priv structure which holds our register base and use
      that.
      
      Fixes: 967dd82f ("net: dsa: b53: Add support for Broadcom RoboSwitch")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      861690d0
    • Cong Wang's avatar
      af_unix: remove redundant lockdep class · 3848ec5d
      Cong Wang authored
      After commit 581319c5 ("net/socket: use per af lockdep classes for sk queues")
      sock queue locks now have per-af lockdep classes, including unix socket.
      It is no longer necessary to workaround it.
      
      I noticed this while looking at a syzbot deadlock report, this patch
      itself doesn't fix it (this is why I don't add Reported-by).
      
      Fixes: 581319c5 ("net/socket: use per af lockdep classes for sk queues")
      Cc: Paolo Abeni <pabeni@redhat.com>
      Signed-off-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
      Acked-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3848ec5d
    • David S. Miller's avatar
      Merge branch 'net-Broadcom-drivers-sparse-fixes' · 51508179
      David S. Miller authored
      Florian Fainelli says:
      
      ====================
      net: Broadcom drivers sparse fixes
      
      This patch series fixes the same warning reported by sparse in bcmsysport and
      bcmgenet in the code that deals with inserting the TX checksum pointers:
      
      drivers/net/ethernet/broadcom/bcmsysport.c:1155:26: warning: cast from restricted __be16
      drivers/net/ethernet/broadcom/bcmsysport.c:1155:26: warning: incorrect type in argument 1 (different base types)
      drivers/net/ethernet/broadcom/bcmsysport.c:1155:26:    expected unsigned short [unsigned] [usertype] val
      drivers/net/ethernet/broadcom/bcmsysport.c:1155:26:    got restricted __be16 [usertype] protocol
      
      This patch fixes both issues by using the same construct and not swapping
      skb->protocol but instead the values we are checking against.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      51508179
    • Florian Fainelli's avatar
      net: systemport: Fix sparse warnings in bcm_sysport_insert_tsb() · c0eb0558
      Florian Fainelli authored
      skb->protocol is a __be16 which we would be calling htons() against,
      while this is not wrong per-se as it correctly results in swapping the
      value on LE hosts, this still upsets sparse. Adopt a similar pattern to
      what other drivers do and just assign ip_ver to skb->protocol, and then
      use htons() against the different constants such that the compiler can
      resolve the values at build time.
      
      Fixes: 80105bef ("net: systemport: add Broadcom SYSTEMPORT Ethernet MAC driver")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c0eb0558
    • Florian Fainelli's avatar
      net: bcmgenet: Fix sparse warnings in bcmgenet_put_tx_csum() · 6f894211
      Florian Fainelli authored
      skb->protocol is a __be16 which we would be calling htons() against,
      while this is not wrong per-se as it correctly results in swapping the
      value on LE hosts, this still upsets sparse. Adopt a similar pattern to
      what other drivers do and just assign ip_ver to skb->protocol, and then
      use htons() against the different constants such that the compiler can
      resolve the values at build time.
      
      Fixes: 1c1008c7 ("net: bcmgenet: add main driver file")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6f894211
    • David Howells's avatar
      rxrpc: Fix undefined packet handling · b41d7cfe
      David Howells authored
      By analogy with other Rx implementations, RxRPC packet types 9, 10 and 11
      should just be discarded rather than being aborted like other undefined
      packet types.
      Reported-by: default avatarJeffrey Altman <jaltman@auristor.com>
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b41d7cfe