04 Aug, 2020

20 commits

  • Pull objtool updates from Ingo Molnar:

    - Add support for non-rela relocations, in preparation to merge
    'recordmcount' functionality into objtool

    - Fix assumption that broke under --ffunction-sections (LTO) builds

    - Misc cleanups

    * tag 'objtool-core-2020-08-03' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    objtool: Add support for relocations without addends
    objtool: Rename rela to reloc
    objtool: Use sh_info to find the base for .rela sections
    objtool: Do not assume order of parent/child functions

    Linus Torvalds
     
  • Pull locking updates from Ingo Molnar:

    - LKMM updates: mostly documentation changes, but also some new litmus
    tests for atomic ops.

    - KCSAN updates: the most important change is that GCC 11 now has all
    fixes in place to support KCSAN, so GCC support can be enabled again.
    Also more annotations.

    - futex updates: minor cleanups and simplifications

    - seqlock updates: merge preparatory changes/cleanups for the
    'associated locks' facilities.

    - lockdep updates:
    - simplify IRQ trace event handling
    - add various new debug checks
    - simplify header dependencies, split out ,
    decouple lockdep from other low level headers some more
    - fix NMI handling

    - misc cleanups and smaller fixes

    * tag 'locking-core-2020-08-03' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (60 commits)
    kcsan: Improve IRQ state trace reporting
    lockdep: Refactor IRQ trace events fields into struct
    seqlock: lockdep assert non-preemptibility on seqcount_t write
    lockdep: Add preemption enabled/disabled assertion APIs
    seqlock: Implement raw_seqcount_begin() in terms of raw_read_seqcount()
    seqlock: Add kernel-doc for seqcount_t and seqlock_t APIs
    seqlock: Reorder seqcount_t and seqlock_t API definitions
    seqlock: seqcount_t latch: End read sections with read_seqcount_retry()
    seqlock: Properly format kernel-doc code samples
    Documentation: locking: Describe seqlock design and usage
    locking/qspinlock: Do not include atomic.h from qspinlock_types.h
    locking/atomic: Move ATOMIC_INIT into linux/types.h
    lockdep: Move list.h inclusion into lockdep.h
    locking/lockdep: Fix TRACE_IRQFLAGS vs. NMIs
    futex: Remove unused or redundant includes
    futex: Consistently use fshared as boolean
    futex: Remove needless goto's
    futex: Remove put_futex_key()
    rwsem: fix commas in initialisation
    docs: locking: Replace HTTP links with HTTPS ones
    ...

    Linus Torvalds
     
  • Pull RCU updates from Ingo Molnar:

    - kfree_rcu updates

    - RCU tasks updates

    - Read-side scalability tests

    - SRCU updates

    - Torture-test updates

    - Documentation updates

    - Miscellaneous fixes

    * tag 'core-rcu-2020-08-03' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (109 commits)
    torture: Remove obsolete "cd $KVM"
    torture: Avoid duplicate specification of qemu command
    torture: Dump ftrace at shutdown only if requested
    torture: Add kvm-tranform.sh script for qemu-cmd files
    torture: Add more tracing crib notes to kvm.sh
    torture: Improve diagnostic for KCSAN-incapable compilers
    torture: Correctly summarize build-only runs
    torture: Pass --kmake-arg to all make invocations
    rcutorture: Check for unwatched readers
    torture: Abstract out console-log error detection
    torture: Add a stop-run capability
    torture: Create qemu-cmd in --buildonly runs
    rcu/rcutorture: Replace 0 with false
    torture: Add --allcpus argument to the kvm.sh script
    torture: Remove whitespace from identify_qemu_vcpus output
    rcutorture: NULL rcu_torture_current earlier in cleanup code
    rcutorture: Handle non-statistic bang-string error messages
    torture: Set configfile variable to current scenario
    rcutorture: Add races with task-exit processing
    locktorture: Use true and false to assign to bool variables
    ...

    Linus Torvalds
     
  • Pull header cleanup from Ingo Molnar:
    "Separate out the instrumentation_begin()/end() bits from compiler.h"

    * tag 'core-headers-2020-08-03' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    compiler.h: Move instrumentation_begin()/end() to new header

    Linus Torvalds
     
  • Pull debugobjects cleanup from Ingo Molnar:
    "A single commit which simplifies a debugfs attribute definition"

    * tag 'core-debugobjects-2020-08-03' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    debugobjects: Convert to DEFINE_SHOW_ATTRIBUTE

    Linus Torvalds
     
  • Pull irq fixes from Ingo Molnar:
    "Fix a recent IRQ affinities regression, add in a missing debugfs
    printout that helps the debugging of IRQ affinity logic bugs, and fix
    a memory leak"

    * tag 'irq-urgent-2020-08-02' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    genirq/debugfs: Add missing irqchip flags
    genirq/affinity: Make affinity setting if activated opt-in
    irqdomain/treewide: Free firmware node after domain removal

    Linus Torvalds
     
  • Pull arm64 and cross-arch updates from Catalin Marinas:
    "Here's a slightly wider-spread set of updates for 5.9.

    Going outside the usual arch/arm64/ area is the removal of
    read_barrier_depends() series from Will and the MSI/IOMMU ID
    translation series from Lorenzo.

    The notable arm64 updates include ARMv8.4 TLBI range operations and
    translation level hint, time namespace support, and perf.

    Summary:

    - Removal of the tremendously unpopular read_barrier_depends()
    barrier, which is a NOP on all architectures apart from Alpha, in
    favour of allowing architectures to override READ_ONCE() and do
    whatever dance they need to do to ensure address dependencies
    provide LOAD -> LOAD/STORE ordering.

    This work also offers a potential solution if compilers are shown
    to convert LOAD -> LOAD address dependencies into control
    dependencies (e.g. under LTO), as weakly ordered architectures will
    effectively be able to upgrade READ_ONCE() to smp_load_acquire().
    The latter case is not used yet, but will be discussed further at
    LPC.

    - Make the MSI/IOMMU input/output ID translation PCI agnostic,
    augment the MSI/IOMMU ACPI/OF ID mapping APIs to accept an input ID
    bus-specific parameter and apply the resulting changes to the
    device ID space provided by the Freescale FSL bus.

    - arm64 support for TLBI range operations and translation table level
    hints (part of the ARMv8.4 architecture version).

    - Time namespace support for arm64.

    - Export the virtual and physical address sizes in vmcoreinfo for
    makedumpfile and crash utilities.

    - CPU feature handling cleanups and checks for programmer errors
    (overlapping bit-fields).

    - ACPI updates for arm64: disallow AML accesses to EFI code regions
    and kernel memory.

    - perf updates for arm64.

    - Miscellaneous fixes and cleanups, most notably PLT counting
    optimisation for module loading, recordmcount fix to ignore
    relocations other than R_AARCH64_CALL26, CMA areas reserved for
    gigantic pages on 16K and 64K configurations.

    - Trivial typos, duplicate words"

    Link: http://lkml.kernel.org/r/20200710165203.31284-1-will@kernel.org
    Link: http://lkml.kernel.org/r/20200619082013.13661-1-lorenzo.pieralisi@arm.com

    * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (82 commits)
    arm64: use IRQ_STACK_SIZE instead of THREAD_SIZE for irq stack
    arm64/mm: save memory access in check_and_switch_context() fast switch path
    arm64: sigcontext.h: delete duplicated word
    arm64: ptrace.h: delete duplicated word
    arm64: pgtable-hwdef.h: delete duplicated words
    bus: fsl-mc: Add ACPI support for fsl-mc
    bus/fsl-mc: Refactor the MSI domain creation in the DPRC driver
    of/irq: Make of_msi_map_rid() PCI bus agnostic
    of/irq: make of_msi_map_get_device_domain() bus agnostic
    dt-bindings: arm: fsl: Add msi-map device-tree binding for fsl-mc bus
    of/device: Add input id to of_dma_configure()
    of/iommu: Make of_map_rid() PCI agnostic
    ACPI/IORT: Add an input ID to acpi_dma_configure()
    ACPI/IORT: Remove useless PCI bus walk
    ACPI/IORT: Make iort_msi_map_rid() PCI agnostic
    ACPI/IORT: Make iort_get_device_domain IRQ domain agnostic
    ACPI/IORT: Make iort_match_node_callback walk the ACPI namespace for NC
    arm64: enable time namespace support
    arm64/vdso: Restrict splitting VVAR VMA
    arm64/vdso: Handle faults on timens page
    ...

    Linus Torvalds
     
  • Pull m68k updates from Geert Uytterhoeven:

    - several Kbuild improvements

    - several Mac fixes

    - minor cleanups and fixes

    - defconfig updates

    * tag 'm68k-for-v5.9-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
    m68k: defconfig: Update defconfigs for v5.8-rc3
    m68k: Use CLEAN_FILES to clean up files
    m68k: mac: Improve IOP debug messages
    m68k: mac: Don't send uninitialized data in IOP message reply
    m68k: mac: Fix IOP status/control register writes
    m68k: mac: Don't send IOP message until channel is idle
    m68k: atari: Annotate dummy read in ROM port IO code as __maybe_unused
    m68k: Use sizeof_field() helper
    m68k: Pass -D options to KBUILD_CPPFLAGS instead of KBUILD_{A,C}FLAGS
    m68k: Optimize cc-option calls for cpuflags-y
    m68k: sun3: Descend to prom from arch/m68k/sun3
    m68k: Add arch/m68k/Kbuild

    Linus Torvalds
     
  • Pull unicore32 removal from Mike Rapoport:
    "Remove unicore32 support.

    The unicore32 port do not seem maintained for a long time now, there
    is no upstream toolchain that can create unicore32 binaries and all
    the links to prebuilt toolchains for unicore32 are dead. Even
    compilers that were available are not supported by the kernel anymore.

    Guenter Roeck says:
    "I have stopped building unicore32 images since v4.19 since there is
    no available compiler that is still supported by the kernel. I am
    surprised that support for it has not been removed from the kernel"

    However, it's worth pointing out two things:

    - Guan Xuetao is still listed as maintainer and asked for the port to
    be kept around the last time Arnd suggested removing it two years
    ago. He promised that there would be compiler sources (presumably
    llvm), but has not made those available since.

    - https://github.com/gxt has patches to linux-4.9 and qemu-2.7, both
    released in 2016, with patches dated early 2019. These patches
    mainly restore a syscall ABI that was never part of mainline Linux
    but apparently used in production. qemu-2.8 removed support for
    that ABI and newer kernels (4.19+) can no longer be built with the
    old toolchain, so apparently there will not be any future updates
    to that git tree"

    * tag 'rm-unicore32' of git://git.kernel.org/pub/scm/linux/kernel/git/rppt/linux:
    MAINTAINERS: remove "PKUNITY SOC DRIVERS" entry
    rtc: remove fb-puv3 driver
    video: fbdev: remove fb-puv3 driver
    pwm: remove pwm-puv3 driver
    input: i8042: remove support for 8042-unicore32io
    i2c/buses: remove i2c-puv3 driver
    cpufreq: remove unicore32 driver
    arch: remove unicore32 port

    Linus Torvalds
     
  • Pull s390 updates from Heiko Carstens:

    - Add support for function error injection.

    - Add support for custom exception handlers, as required by
    BPF_PROBE_MEM.

    - Add support for BPF_PROBE_MEM.

    - Add trace events for idle enter / exit for the s390 specific idle
    implementation.

    - Remove unused zcore memmmap device.

    - Remove unused "raw view" from s390 debug feature.

    - AP bus + zcrypt device driver code refactoring.

    - Provide cex4 cca sysfs attributes for cex3 for zcrypt device driver.

    - Expose only minimal interface to walk physmem for mm/memblock. This
    is a common code change and it has been agreed on with Mike Rapoport
    and Andrew Morton that this can go upstream via the s390 tree.

    - Rework of the s390 vmem/vmmemap code to allow for future memory hot
    remove.

    - Get rid of FORCE_MAX_ZONEORDER to finally allow for order-10
    allocations again, instead of only order-8 allocations.

    - Various small improvements and fixes.

    * tag 's390-5.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (48 commits)
    s390/vmemmap: coding style updates
    s390/vmemmap: avoid memset(PAGE_UNUSED) when adding consecutive sections
    s390/vmemmap: remember unused sub-pmd ranges
    s390/vmemmap: fallback to PTEs if mapping large PMD fails
    s390/vmem: cleanup empty page tables
    s390/vmemmap: take the vmem_mutex when populating/freeing
    s390/vmemmap: cleanup when vmemmap_populate() fails
    s390/vmemmap: extend modify_pagetable() to handle vmemmap
    s390/vmem: consolidate vmem_add_range() and vmem_remove_range()
    s390/vmem: rename vmem_add_mem() to vmem_add_range()
    s390: enable HAVE_FUNCTION_ERROR_INJECTION
    s390/pci: clarify comment in s390_mmio_read/write
    s390/time: improve comparison for tod steering
    s390/time: select CLOCKSOURCE_VALIDATE_LAST_CYCLE
    s390/time: use CLOCKSOURCE_MASK
    s390/bpf: implement BPF_PROBE_MEM
    s390/kernel: expand exception table logic to allow new handling options
    s390/kernel: unify EX_TABLE* implementations
    s390/mm: allow order 10 allocations
    s390/mm: avoid trimming to MAX_ORDER
    ...

    Linus Torvalds
     
  • Pull io_uring updates from Jens Axboe:
    "Lots of cleanups in here, hardening the code and/or making it easier
    to read and fixing bugs, but a core feature/change too adding support
    for real async buffered reads. With the latter in place, we just need
    buffered write async support and we're done relying on kthreads for
    the fast path. In detail:

    - Cleanup how memory accounting is done on ring setup/free (Bijan)

    - sq array offset calculation fixup (Dmitry)

    - Consistently handle blocking off O_DIRECT submission path (me)

    - Support proper async buffered reads, instead of relying on kthread
    offload for that. This uses the page waitqueue to drive retries
    from task_work, like we handle poll based retry. (me)

    - IO completion optimizations (me)

    - Fix race with accounting and ring fd install (me)

    - Support EPOLLEXCLUSIVE (Jiufei)

    - Get rid of the io_kiocb unionizing, made possible by shrinking
    other bits (Pavel)

    - Completion side cleanups (Pavel)

    - Cleanup REQ_F_ flags handling, and kill off many of them (Pavel)

    - Request environment grabbing cleanups (Pavel)

    - File and socket read/write cleanups (Pavel)

    - Improve kiocb_set_rw_flags() (Pavel)

    - Tons of fixes and cleanups (Pavel)

    - IORING_SQ_NEED_WAKEUP clear fix (Xiaoguang)"

    * tag 'for-5.9/io_uring-20200802' of git://git.kernel.dk/linux-block: (127 commits)
    io_uring: flip if handling after io_setup_async_rw
    fs: optimise kiocb_set_rw_flags()
    io_uring: don't touch 'ctx' after installing file descriptor
    io_uring: get rid of atomic FAA for cq_timeouts
    io_uring: consolidate *_check_overflow accounting
    io_uring: fix stalled deferred requests
    io_uring: fix racy overflow count reporting
    io_uring: deduplicate __io_complete_rw()
    io_uring: de-unionise io_kiocb
    io-wq: update hash bits
    io_uring: fix missing io_queue_linked_timeout()
    io_uring: mark ->work uninitialised after cleanup
    io_uring: deduplicate io_grab_files() calls
    io_uring: don't do opcode prep twice
    io_uring: clear IORING_SQ_NEED_WAKEUP after executing task works
    io_uring: batch put_task_struct()
    tasks: add put_task_struct_many()
    io_uring: return locked and pinned page accounting
    io_uring: don't miscount pinned memory
    io_uring: don't open-code recv kbuf managment
    ...

    Linus Torvalds
     
  • Pull core block updates from Jens Axboe:
    "Good amount of cleanups and tech debt removals in here, and as a
    result, the diffstat shows a nice net reduction in code.

    - Softirq completion cleanups (Christoph)

    - Stop using ->queuedata (Christoph)

    - Cleanup bd claiming (Christoph)

    - Use check_events, moving away from the legacy media change
    (Christoph)

    - Use inode i_blkbits consistently (Christoph)

    - Remove old unused writeback congestion bits (Christoph)

    - Cleanup/unify submission path (Christoph)

    - Use bio_uninit consistently, instead of bio_disassociate_blkg
    (Christoph)

    - sbitmap cleared bits handling (John)

    - Request merging blktrace event addition (Jan)

    - sysfs add/remove race fixes (Luis)

    - blk-mq tag fixes/optimizations (Ming)

    - Duplicate words in comments (Randy)

    - Flush deferral cleanup (Yufen)

    - IO context locking/retry fixes (John)

    - struct_size() usage (Gustavo)

    - blk-iocost fixes (Chengming)

    - blk-cgroup IO stats fixes (Boris)

    - Various little fixes"

    * tag 'for-5.9/block-20200802' of git://git.kernel.dk/linux-block: (135 commits)
    block: blk-timeout: delete duplicated word
    block: blk-mq-sched: delete duplicated word
    block: blk-mq: delete duplicated word
    block: genhd: delete duplicated words
    block: elevator: delete duplicated word and fix typos
    block: bio: delete duplicated words
    block: bfq-iosched: fix duplicated word
    iocost_monitor: start from the oldest usage index
    iocost: Fix check condition of iocg abs_vdebt
    block: Remove callback typedefs for blk_mq_ops
    block: Use non _rcu version of list functions for tag_set_list
    blk-cgroup: show global disk stats in root cgroup io.stat
    blk-cgroup: make iostat functions visible to stat printing
    block: improve discard bio alignment in __blkdev_issue_discard()
    block: change REQ_OP_ZONE_RESET and REQ_OP_ZONE_RESET_ALL to be odd numbers
    block: defer flush request no matter whether we have elevator
    block: make blk_timeout_init() static
    block: remove retry loop in ioc_release_fn()
    block: remove unnecessary ioc nested locking
    block: integrate bd_start_claiming into __blkdev_get
    ...

    Linus Torvalds
     
  • Pull mtd fix from Richard Weinberger.

    * 'mtd/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux:
    mtd: properly check all write ioctls for permissions

    Linus Torvalds
     
  • Instead of waiting in a loop for the userfaultfd condition to become
    true, just wait once and return VM_FAULT_RETRY.

    We've already dropped the mmap lock, we know we can't really
    successfully handle the fault at this point and the caller will have to
    retry anyway. So there's no point in making the wait any more
    complicated than it needs to be - just schedule away.

    And once you don't have that complexity with explicit looping, you can
    also just lose all the 'userfaultfd_signal_pending()' complexity,
    because once we've set the correct process sleeping state, and don't
    loop, the act of scheduling itself will be checking if there are any
    pending signals before going to sleep.

    We can also drop the VM_FAULT_MAJOR games, since we'll be treating all
    retried faults as major soon anyway (series to regularize and share more
    of fault handling across architectures in a separate series by Peter Xu,
    and in the meantime we won't worry about the possible minor - I'll be
    here all week, try the veal - accounting difference).

    Cc: Andrea Arcangeli
    Cc: Peter Xu
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • Pull file locking fix from Jeff Layton:
    "Just a single, one-line patch to fix an inefficiency in the posix
    locking code that can lead to it doing more wakeups than necessary"

    * tag 'filelock-v5.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/jlayton/linux:
    locks: add locks_move_blocks in posix_lock_inode

    Linus Torvalds
     
  • Pull crypto updates from Herbert Xu:
    "API:
    - Add support for allocating transforms on a specific NUMA Node
    - Introduce the flag CRYPTO_ALG_ALLOCATES_MEMORY for storage users

    Algorithms:
    - Drop PMULL based ghash on arm64
    - Fixes for building with clang on x86
    - Add sha256 helper that does the digest in one go
    - Add SP800-56A rev 3 validation checks to dh

    Drivers:
    - Permit users to specify NUMA node in hisilicon/zip
    - Add support for i.MX6 in imx-rngc
    - Add sa2ul crypto driver
    - Add BA431 hwrng driver
    - Add Ingenic JZ4780 and X1000 hwrng driver
    - Spread IRQ affinity in inside-secure and marvell/cesa"

    * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (157 commits)
    crypto: sa2ul - Fix inconsistent IS_ERR and PTR_ERR
    hwrng: core - remove redundant initialization of variable ret
    crypto: x86/curve25519 - Remove unused carry variables
    crypto: ingenic - Add hardware RNG for Ingenic JZ4780 and X1000
    dt-bindings: RNG: Add Ingenic RNG bindings.
    crypto: caam/qi2 - add module alias
    crypto: caam - add more RNG hw error codes
    crypto: caam/jr - remove incorrect reference to caam_jr_register()
    crypto: caam - silence .setkey in case of bad key length
    crypto: caam/qi2 - create ahash shared descriptors only once
    crypto: caam/qi2 - fix error reporting for caam_hash_alloc
    crypto: caam - remove deadcode on 32-bit platforms
    crypto: ccp - use generic power management
    crypto: xts - Replace memcpy() invocation with simple assignment
    crypto: marvell/cesa - irq balance
    crypto: inside-secure - irq balance
    crypto: ecc - SP800-56A rev 3 local public key validation
    crypto: dh - SP800-56A rev 3 local public key validation
    crypto: dh - check validity of Z before export
    lib/mpi: Add mpi_sub_ui()
    ...

    Linus Torvalds
     
  • Pull fsverity update from Eric Biggers:
    "One fix for fs/verity/ to strengthen a memory barrier which might be
    too weak. This mirrors a similar fix in fs/crypto/"

    * tag 'fsverity-for-linus' of git://git.kernel.org/pub/scm/fs/fscrypt/fscrypt:
    fs-verity: use smp_load_acquire() for ->i_verity_info

    Linus Torvalds
     
  • Pull fscrypt updates from Eric Biggers:
    "This release, we add support for inline encryption via the blk-crypto
    framework which was added in 5.8.

    Now when an ext4 or f2fs filesystem is mounted with '-o inlinecrypt',
    the contents of encrypted files will be encrypted/decrypted via
    blk-crypto, instead of directly using the crypto API. This model
    allows taking advantage of the inline encryption hardware that is
    integrated into the UFS or eMMC host controllers on most mobile SoCs.

    Note that this is just an alternate implementation; the ciphertext
    written to disk stays the same.

    (This pull request does *not* include support for direct I/O on
    encrypted files, which blk-crypto makes possible, since that part is
    still being discussed.)

    Besides the above feature update, there are also a few fixes and
    cleanups, e.g. strengthening some memory barriers that may be too
    weak.

    All these patches have been in linux-next with no reported issues.
    I've also tested them with the fscrypt xfstests, as usual. It's also
    been tested that the inline encryption support works with the support
    for Qualcomm and Mediatek inline encryption hardware that will be in
    the scsi pull request for 5.9. Also, several SoC vendors are already
    using a previous, functionally equivalent version of these patches"

    * tag 'fscrypt-for-linus' of git://git.kernel.org/pub/scm/fs/fscrypt/fscrypt:
    fscrypt: don't load ->i_crypt_info before it's known to be valid
    fscrypt: document inline encryption support
    fscrypt: use smp_load_acquire() for ->i_crypt_info
    fscrypt: use smp_load_acquire() for ->s_master_keys
    fscrypt: use smp_load_acquire() for fscrypt_prepared_key
    fscrypt: switch fscrypt_do_sha256() to use the SHA-256 library
    fscrypt: restrict IV_INO_LBLK_* to AES-256-XTS
    fscrypt: rename FS_KEY_DERIVATION_NONCE_SIZE
    fscrypt: add comments that describe the HKDF info strings
    ext4: add inline encryption support
    f2fs: add inline encryption support
    fscrypt: add inline encryption support
    fs: introduce SB_INLINECRYPT

    Linus Torvalds
     
  • Pull btrfs updates from David Sterba:
    "We don't have any big feature updates this time, there are lots of
    small enhacements or fixes. A highlight perhaps is the parallel fsync
    performance improvements, numbers below.

    Regarding the dio/iomap that was reverted last time, the required API
    changes are likely to land in the upcoming cycle, the btrfs part will
    be updated afterwards.

    User visible changes:

    - new mount option rescue= to group all recovery-related mount
    options so we don't have many specific options, currently
    introducing only aliases for existing options, future extensions
    are in development to allow read-only mount with partially damaged
    structures:
    - usebackuproot is an alias for rescue=usebackuproot
    - nologreplay is an alias for rescue=nologreplay

    - start deprecation of mount option inode_cache, removal scheduled to
    v5.11

    - removed deprecated mount options alloc_start and subvolrootid

    - device stats corruption counter gets incremented when a checksum
    mismatch is found

    - qgroup information exported in /sys/fs/btrfs//qgroups/
    using sysfs

    - add link /sys/fs/btrfs//bdi pointing to the associated
    backing dev info

    - FS_INFO ioctl enhancements:
    - add flags to request/describe newly added items
    - new item: numeric checksum type and checksum size
    - new item: generation
    - new item: metadata_uuid

    - seed device: with one new read-write device added, print the new
    device information in /proc/mounts

    - balance: detect cancellation by Ctrl-C in existing cancellation
    points

    Performance improvements:

    - optimized versions of various helpers on little-endian
    architectures, where we don't have to do LE/BE conversion from
    on-disk format

    - tree-log/fsync optimizations leading to lower max latency reported
    by dbench, reduced by about 12%

    - all chunk tree leaves are prefetched at mount time, can improve
    mount time on large (terabyte-sized) filesystems

    - speed up parallel fsync of files with reflinked/deduped extents,
    with jobs 16 to 1024 the throughput gets improved roughly by 50% on
    average and runtime decreased roughly by 30% on average, notable
    outlier is 128 jobs with +121.2% on throughput and -54.6% runtime

    - another speed up of parallel fsync, reduce number of checksum tree
    lookups and contention, the improvements start to show up with 2
    tasks with +20% throughput and -16% runtime up to 64 with +200%
    throughput and -66% runtime

    Core:

    - umount-time qgroup leak checker

    - qgroups
    - add a way to unreserve partial range after failure, avoiding
    some EDQUOT errors
    - improved flushing logic when EDQUOT is hit

    - possible EINTR interruption caused by failed reservations after
    transaction start is better handled and documented

    - transaction abort errors are unified to EROFS in case it's not the
    original reason of abort or we don't have other way to determine
    the reason

    Fixes:

    - make truncate succeed on a NOCOW file even if data space is
    exhausted

    - fix cancelling balance on filesystem with exhausted metadata space

    - anon block device:
    - preallocate anon bdev when subvolume is created to report
    failure early
    - shorten time the anon bdev id is allocated
    - don't allocate anon bdev for internal roots

    - minor memory leak in ref-verify

    - refuse invalid combinations of compression and NOCOW file flags

    - lockdep fixes, updating the device locks

    - remove obsolete fallback logic for block group profile adjustments
    when switching from 1 to more devices, causing allocation of
    unwanted block groups

    Other cleanups, refactoring, simplifications:

    - conversions from struct inode to struct btrfs_inode in internal
    functions

    - removal of unused struct members"

    * tag 'for-5.9-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux: (151 commits)
    btrfs: do not set the full sync flag on the inode during page release
    btrfs: release old extent maps during page release
    btrfs: fix race between page release and a fast fsync
    btrfs: open-code remount flag setting in btrfs_remount
    btrfs: if we're restriping, use the target restripe profile
    btrfs: don't adjust bg flags and use default allocation profiles
    btrfs: fix lockdep splat from btrfs_dump_space_info
    btrfs: move the chunk_mutex in btrfs_read_chunk_tree
    btrfs: open device without device_list_mutex
    btrfs: sysfs: use NOFS for device creation
    btrfs: return EROFS for BTRFS_FS_STATE_ERROR cases
    btrfs: document special case error codes for fs errors
    btrfs: don't WARN if we abort a transaction with EROFS
    btrfs: reduce contention on log trees when logging checksums
    btrfs: remove done label in writepage_delalloc
    btrfs: add comments for btrfs_reserve_flush_enum
    btrfs: relocation: review the call sites which can be interrupted by signal
    btrfs: avoid possible signal interruption of btrfs_drop_snapshot() on relocation tree
    btrfs: relocation: allow signal to cancel balance
    btrfs: raid56: remove out label in __raid56_parity_recover
    ...

    Linus Torvalds
     
  • Pull tpm updates from Jarkko Sakkinen:
    "An issue was fixed with the TPM space buffer size. The buffer is used
    to store in-TPM objects while swapped out of the TPM for a /dev/tpmrm0
    session. The code incorrectly used PAGE_SIZE, which obviously can
    vary. With these changes the buffer has a fixed size of 16 kB.

    In addition, this contains support for acquiring TPM even log from
    TPM2 ACPI table. This method is used by QEMU in particular"

    * tag 'tpmdd-next-v5.9' of git://git.infradead.org/users/jjs/linux-tpmdd:
    tpm: Add support for event log pointer found in TPM2 ACPI table
    acpi: Extend TPM2 ACPI table with missing log fields
    tpm: Unify the mismatching TPM space buffer sizes
    tpm: Require that all digests are present in TCG_PCR_EVENT2 structures

    Linus Torvalds
     

03 Aug, 2020

7 commits

  • Signed-off-by: Ingo Molnar

    Ingo Molnar
     
  • That gives us ordering guarantees around the pair.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • It turns out that wait_on_page_bit_common() had several problems,
    ranging from just unfair behavioe due to re-queueing at the end of the
    wait queue when re-trying, and an outright bug that could result in
    missed wakeups (but probably never happened in practice).

    This rewrites the whole logic to avoid both issues, by simply moving the
    logic to check (and possibly take) the bit lock into the wakeup path
    instead.

    That makes everything much more straightforward, and means that we never
    need to re-queue the wait entry: if we get woken up, we'll be notified
    through WQ_FLAG_WOKEN, and the wait queue entry will have been removed,
    and everything will have been done for us.

    Link: https://lore.kernel.org/lkml/CAHk-=wjJA2Z3kUFb-5s=6+n0qbTs8ELqKFt9B3pH85a8fGD73w@mail.gmail.com/
    Link: https://lore.kernel.org/lkml/alpine.LSU.2.11.2007221359450.1017@eggly.anvils/
    Reported-by: Oleg Nesterov
    Reported-by: Hugh Dickins
    Cc: Michal Hocko
    Reviewed-by: Oleg Nesterov
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • Linus Torvalds
     
  • Pull x86 fix from Ingo Molnar:
    "A single fix for a potential deadlock when printing a message about
    spurious interrupts"

    * tag 'x86-urgent-2020-08-02' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/i8259: Use printk_deferred() to prevent deadlock

    Linus Torvalds
     
  • …/masahiroy/linux-kbuild

    Pull Kbuild fixes from Masahiro Yamada:

    - clean the generated moc file for xconfig

    - fix xconfig bugs, and revert some bad commits

    * tag 'kbuild-fixes-v5.8-4' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
    kbuild: remove redundant FORCE definition in scripts/Makefile.modpost
    kconfig: qconf: remove wrong ConfigList::firstChild()
    Revert "kconfig: qconf: don't show goback button on splitMode"
    Revert "kconfig: qconf: Change title for the item window"
    kconfig: qconf: remove "goBack" debug message
    kconfig: qconf: use delete[] instead of delete to free array
    kconfig: qconf: compile moc object separately
    kconfig: qconf: use if_changed for qconf.moc rule
    modpost: explain why we can't use strsep

    Linus Torvalds
     
  • Pull KVM fixes from Paolo Bonzini:
    "Bugfixes and strengthening the validity checks on inputs from new
    userspace APIs.

    Now I know why I shouldn't prepare pull requests on the weekend, it's
    hard to concentrate if your son is shouting about his latest Minecraft
    builds in your ear. Fortunately all the patches were ready and I just
    had to check the test results..."

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
    KVM: SVM: Fix disable pause loop exit/pause filtering capability on SVM
    KVM: LAPIC: Prevent setting the tscdeadline timer if the lapic is hw disabled
    KVM: arm64: Don't inherit exec permission across page-table levels
    KVM: arm64: Prevent vcpu_has_ptrauth from generating OOL functions
    KVM: nVMX: check for invalid hdr.vmx.flags
    KVM: nVMX: check for required but missing VMCS12 in KVM_SET_NESTED_STATE
    selftests: kvm: do not set guest mode flag

    Linus Torvalds
     

02 Aug, 2020

9 commits

  • The same code exists a few lines above.

    Fixes: 436b2ac603d5 ("modpost: invoke modpost only when input files are updated")
    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • This function returns the first child object, but the returned pointer
    is not compatible with (ConfigItem *).

    Commit cc1c08edccaf ("kconfig: qconf: don't show goback button on
    splitMode") uncovered this issue because using the pointer from this
    function would make qconf crash. (https://lkml.org/lkml/2020/7/18/411)

    This function does not work. Remove.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Pull networking fixes from David Miller:

    1) Encap offset calculation is incorrect in esp6, from Sabrina Dubroca.

    2) Better parameter validation in pfkey_dump(), from Mark Salyzyn.

    3) Fix several clang issues on powerpc in selftests, from Tanner Love.

    4) cmsghdr_from_user_compat_to_kern() uses the wrong length, from Al
    Viro.

    5) Out of bounds access in mlx5e driver, from Raed Salem.

    6) Fix transfer buffer memleak in lan78xx, from Johan Havold.

    7) RCU fixups in rhashtable, from Herbert Xu.

    8) Fix ipv6 nexthop refcnt leak, from Xiyu Yang.

    9) vxlan FDB dump must be done under RCU, from Ido Schimmel.

    10) Fix use after free in mlxsw, from Ido Schimmel.

    11) Fix map leak in HASH_OF_MAPS bpf code, from Andrii Nakryiko.

    12) Fix bug in mac80211 Tx ack status reporting, from Vasanthakumar
    Thiagarajan.

    13) Fix memory leaks in IPV6_ADDRFORM code, from Cong Wang.

    14) Fix bpf program reference count leaks in mlx5 during
    mlx5e_alloc_rq(), from Xin Xiong.

    * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (86 commits)
    vxlan: fix memleak of fdb
    rds: Prevent kernel-infoleak in rds_notify_queue_get()
    net/sched: The error lable position is corrected in ct_init_module
    net/mlx5e: fix bpf_prog reference count leaks in mlx5e_alloc_rq
    net/mlx5e: E-Switch, Specify flow_source for rule with no in_port
    net/mlx5e: E-Switch, Add misc bit when misc fields changed for mirroring
    net/mlx5e: CT: Support restore ipv6 tunnel
    net: gemini: Fix missing clk_disable_unprepare() in error path of gemini_ethernet_port_probe()
    ionic: unlock queue mutex in error path
    atm: fix atm_dev refcnt leaks in atmtcp_remove_persistent
    net: ethernet: mtk_eth_soc: fix MTU warnings
    net: nixge: fix potential memory leak in nixge_probe()
    devlink: ignore -EOPNOTSUPP errors on dumpit
    rxrpc: Fix race between recvmsg and sendmsg on immediate call failure
    MAINTAINERS: Replace Thor Thayer as Altera Triple Speed Ethernet maintainer
    selftests/bpf: fix netdevsim trap_flow_action_cookie read
    ipv6: fix memory leaks on IPV6_ADDRFORM path
    net/bpfilter: Initialize pos in __bpfilter_process_sockopt
    igb: reinit_locked() should be called with rtnl_lock
    e1000e: continue to init PHY even when failed to disable ULP
    ...

    Linus Torvalds
     
  • Pull thread fix from Christian Brauner:
    "A simple spelling fix for dequeue_synchronous_signal()"

    * tag 'for-linus-2020-08-01' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux:
    signal: fix typo in dequeue_synchronous_signal()

    Linus Torvalds
     
  • Pull perf tooling fixes from Arnaldo Carvalho de Melo:

    - Fix libtraceevent build with binutils 2.35

    - Fix memory leak in process_dynamic_array_len in libtraceevent

    - Fix 'perf test 68' zstd compression for s390

    - Fix record failure when mixed with ARM SPE event

    * tag 'perf-tools-fixes-2020-08-01' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux:
    libtraceevent: Fix build with binutils 2.35
    perf tools: Fix record failure when mixed with ARM SPE event
    perf tests: Fix test 68 zstd compression for s390
    tools lib traceevent: Fix memory leak in process_dynamic_array_len

    Linus Torvalds
     
  • When vxlan interface is deleted, all fdbs are deleted by vxlan_flush().
    vxlan_flush() flushes fdbs but it doesn't delete fdb, which contains
    all-zeros-mac because it is deleted by vxlan_uninit().
    But vxlan_uninit() deletes only the fdb, which contains both all-zeros-mac
    and default vni.
    So, the fdb, which contains both all-zeros-mac and non-default vni
    will not be deleted.

    Test commands:
    ip link add vxlan0 type vxlan dstport 4789 external
    ip link set vxlan0 up
    bridge fdb add to 00:00:00:00:00:00 dst 172.0.0.1 dev vxlan0 via lo \
    src_vni 10000 self permanent
    ip link del vxlan0

    kmemleak reports as follows:
    unreferenced object 0xffff9486b25ced88 (size 96):
    comm "bridge", pid 2151, jiffies 4294701712 (age 35506.901s)
    hex dump (first 32 bytes):
    02 00 00 00 ac 00 00 01 40 00 09 b1 86 94 ff ff ........@.......
    46 02 00 00 00 00 00 00 a7 03 00 00 12 b5 6a 6b F.............jk
    backtrace:
    [] vxlan_fdb_append.part.51+0x3c/0xf0 [vxlan]
    [] vxlan_fdb_create+0x184/0x1a0 [vxlan]
    [] vxlan_fdb_update+0x12f/0x220 [vxlan]
    [] vxlan_fdb_add+0x12a/0x1b0 [vxlan]
    [] rtnl_fdb_add+0x187/0x270
    [] rtnetlink_rcv_msg+0x264/0x490
    [] netlink_rcv_skb+0x4a/0x110
    [] netlink_unicast+0x18e/0x250
    [] netlink_sendmsg+0x2e9/0x400
    [] ____sys_sendmsg+0x237/0x260
    [] ___sys_sendmsg+0x88/0xd0
    [] __sys_sendmsg+0x4e/0x80
    [] do_syscall_64+0x56/0xe0
    [] entry_SYSCALL_64_after_hwframe+0x44/0xa9
    unreferenced object 0xffff9486b1c40080 (size 128):
    comm "bridge", pid 2157, jiffies 4294701754 (age 35506.866s)
    hex dump (first 32 bytes):
    00 00 00 00 00 00 00 00 f8 dc 42 b2 86 94 ff ff ..........B.....
    6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
    backtrace:
    [] vxlan_fdb_create+0x67/0x1a0 [vxlan]
    [] vxlan_fdb_update+0x12f/0x220 [vxlan]
    [] vxlan_fdb_add+0x12a/0x1b0 [vxlan]
    [] rtnl_fdb_add+0x187/0x270
    [] rtnetlink_rcv_msg+0x264/0x490
    [] netlink_rcv_skb+0x4a/0x110
    [] netlink_unicast+0x18e/0x250
    [] netlink_sendmsg+0x2e9/0x400
    [] ____sys_sendmsg+0x237/0x260
    [] ___sys_sendmsg+0x88/0xd0
    [] __sys_sendmsg+0x4e/0x80
    [] do_syscall_64+0x56/0xe0
    [] entry_SYSCALL_64_after_hwframe+0x44/0xa9

    Fixes: 3ad7a4b141eb ("vxlan: support fdb and learning in COLLECT_METADATA mode")
    Signed-off-by: Taehee Yoo
    Acked-by: Roopa Prabhu
    Signed-off-by: David S. Miller

    Taehee Yoo
     
  • Pull pin control fix from Linus Walleij:
    "A single last minute pin control fix to the Qualcomm driver fixing
    missing dual edge PCH interrupts"

    * tag 'pinctrl-v5.8-4' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
    pinctrl: qcom: Handle broken/missing PDC dual edge IRQs on sc7180

    Linus Torvalds
     
  • As recently done with with send/recv, flip the if after
    rw_verify_aread() in io_{read,write}() and tabulise left bits left.
    This removes mispredicted by a compiler jump on the success/fast path.

    Signed-off-by: Pavel Begunkov
    Signed-off-by: Jens Axboe

    Pavel Begunkov
     
  • Use a local var to collect flags in kiocb_set_rw_flags(). That spares
    some memory writes and allows to replace most of the jumps with MOVEcc.

    Signed-off-by: Pavel Begunkov
    Reviewed-by: Matthew Wilcox (Oracle)
    Signed-off-by: Jens Axboe

    Pavel Begunkov
     

01 Aug, 2020

4 commits

  • This reverts commit cc1c08edccaf5317d99a17a3231fe06381044e83.

    Maxim Levitsky reports 'make xconfig' crashes since that commit
    (https://lkml.org/lkml/2020/7/18/411)

    Or, the following is simple test code that makes it crash:

    menu "Menu"

    config FOO
    bool "foo"
    default y

    menuconfig BAR
    bool "bar"
    depends on FOO

    endmenu

    Select the Split View mode, and double-click "bar" in the right
    window, then you will see Segmentation fault.

    When 'last' is not set for symbolMode, the following code in
    ConfigList::updateList() calls firstChild().

    item = last ? last->nextSibling() : firstChild();

    However, the pointer returned by ConfigList::firstChild() does not
    seem to be compatible with (ConfigItem *), which seems another bug.

    I'd rather want to reconsider whether hiding the goback icon is the
    right thing to do.

    In the following test code, the Split View shows "Menu2" and "Menu3"
    in the right window. You can descend into "Menu3", but there is no way
    to ascend back to "Menu2" from "Menu3".

    menu "Menu1"

    config FOO
    bool "foo"
    default y

    menu "Menu2"
    depends on FOO

    menu "Menu3"

    config BAZ
    bool "baz"

    endmenu

    endmenu

    endmenu

    It is true that the goback button is currently not functional due to
    yet another bug, but hiding the problem is not the right way to go.

    Anyway, Segmentation fault is fatal. Revert the offending commit for
    now, and we should find the right solution.

    Reported-by: Maxim Levitsky
    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • This reverts commit 5752ff07fd90d764d96e3c586cc95c09598abfdd.

    It added dead code to ConfigList:ConfigList().

    The constructor of ConfigList has the initializer, mode(singleMode).

    if (mode == symbolMode)
    setHeaderLabels(QStringList() << "Item" << "Name" << "N" << "M" << "Y" << "Value");
    else
    setHeaderLabels(QStringList() << "Option" << "Name" << "N" << "M" << "Y" << "Value");

    ... always takes the else part.

    The change to ConfigList::updateSelection() is strange too.
    When you click the split view icon for the first time, the titles in
    both windows show "Option". After you click something in the right
    window, the title suddenly changes to "Item".

    ConfigList::updateSelection() is not the right place to do this,
    at least. It was not a good idea, I think.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Every time the goback icon is clicked, the annoying message "goBack"
    is displayed on the console.

    I guess this line is the left-over debug code of commit af737b4defe1
    ("kconfig: qconf: simplify the goBack() logic").

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • cppcheck reports "Mismatching allocation and deallocation".

    $ cppcheck scripts/kconfig/qconf.cc
    Checking scripts/kconfig/qconf.cc ...
    scripts/kconfig/qconf.cc:1242:10: error: Mismatching allocation and deallocation: data [mismatchAllocDealloc]
    delete data;
    ^
    scripts/kconfig/qconf.cc:1236:15: note: Mismatching allocation and deallocation: data
    char *data = new char[count + 1];
    ^
    scripts/kconfig/qconf.cc:1242:10: note: Mismatching allocation and deallocation: data
    delete data;
    ^
    scripts/kconfig/qconf.cc:1255:10: error: Mismatching allocation and deallocation: data [mismatchAllocDealloc]
    delete data;
    ^
    scripts/kconfig/qconf.cc:1236:15: note: Mismatching allocation and deallocation: data
    char *data = new char[count + 1];
    ^
    scripts/kconfig/qconf.cc:1255:10: note: Mismatching allocation and deallocation: data
    delete data;
    ^

    Fixes: c4f7398bee9c ("kconfig: qconf: make debug links work again")
    Reported-by: David Binderman
    Signed-off-by: Masahiro Yamada

    Masahiro Yamada