1. 20 Oct, 2020 18 commits
    • Linus Torvalds's avatar
      Merge tag 'for-linus-5.10b-rc1b-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip · 4a5bb973
      Linus Torvalds authored
      Pull more xen updates from Juergen Gross:
      
       - A single patch to fix the Xen security issue XSA-331 (malicious
         guests can DoS dom0 by triggering NULL-pointer dereferences or access
         to stale data).
      
       - A larger series to fix the Xen security issue XSA-332 (malicious
         guests can DoS dom0 by sending events at high frequency leading to
         dom0's vcpus being busy in IRQ handling for elongated times).
      
      * tag 'for-linus-5.10b-rc1b-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
        xen/events: block rogue events for some time
        xen/events: defer eoi in case of excessive number of events
        xen/events: use a common cpu hotplug hook for event channels
        xen/events: switch user event channels to lateeoi model
        xen/pciback: use lateeoi irq binding
        xen/pvcallsback: use lateeoi irq binding
        xen/scsiback: use lateeoi irq binding
        xen/netback: use lateeoi irq binding
        xen/blkback: use lateeoi irq binding
        xen/events: add a new "late EOI" evtchn framework
        xen/events: fix race in evtchn_fifo_unmask()
        xen/events: add a proper barrier to 2-level uevent unmasking
        xen/events: avoid removing an event channel while handling it
      4a5bb973
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm · 709ebe6d
      Linus Torvalds authored
      Pull ARM updates from Russell King:
      
       - handle inexact watchpoint addresses (Douglas Anderson)
      
       - decompressor serial debug cleanups (Linus Walleij)
      
       - update L2 cache prefetch bits (Guillaume Tucker)
      
       - add text offset and malloc size to the decompressor kexec data
      
      * tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm:
        ARM: add malloc size to decompressor kexec size structure
        ARM: add TEXT_OFFSET to decompressor kexec image structure
        ARM: 9007/1: l2c: fix prefetch bits init in L2X0_AUX_CTRL using DT values
        ARM: 9010/1: uncompress: Print the location of appended DTB
        ARM: 9009/1: uncompress: Enable debug in head.S
        ARM: 9008/1: uncompress: Drop excess whitespace print
        ARM: 9006/1: uncompress: Wait for ready and busy in debug prints
        ARM: 9005/1: debug: Select flow control for all debug UARTs
        ARM: 9004/1: debug: Split waituart to CTS and TXRDY
        ARM: 9003/1: uncompress: Delete unused debug macros
        ARM: 8997/2: hw_breakpoint: Handle inexact watchpoint addresses
      709ebe6d
    • Linus Torvalds's avatar
      Merge tag 'arc-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc · b32649b8
      Linus Torvalds authored
      Pull ARC updates from Vineet Gupta:
       "The bulk of ARC pull request is removal of EZChip NPS platform which
        was suffering from constant bitrot. In recent years EZChip has gone
        though multiple successive acquisitions and I guess things and people
        move on. I would like to take this opportunity to recognize and thank
        all those good folks (Gilad, Noam, Ofer...) for contributing major
        bits to ARC port (SMP, Big Endian).
      
        Summary:
      
         - drop support for EZChip NPS platform
      
         - misc other fixes"
      
      * tag 'arc-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc:
        arc: include/asm: fix typos of "themselves"
        ARC: SMP: fix typo and use "come up" instead of "comeup"
        ARC: [dts] fix the errors detected by dtbs_check
        arc: plat-hsdk: fix kconfig dependency warning when !RESET_CONTROLLER
        ARC: [plat-eznps]: Drop support for EZChip NPS platform
      b32649b8
    • Juergen Gross's avatar
      xen/events: block rogue events for some time · 5f7f7740
      Juergen Gross authored
      In order to avoid high dom0 load due to rogue guests sending events at
      high frequency, block those events in case there was no action needed
      in dom0 to handle the events.
      
      This is done by adding a per-event counter, which set to zero in case
      an EOI without the XEN_EOI_FLAG_SPURIOUS is received from a backend
      driver, and incremented when this flag has been set. In case the
      counter is 2 or higher delay the EOI by 1 << (cnt - 2) jiffies, but
      not more than 1 second.
      
      In order not to waste memory shorten the per-event refcnt to two bytes
      (it should normally never exceed a value of 2). Add an overflow check
      to evtchn_get() to make sure the 2 bytes really won't overflow.
      
      This is part of XSA-332.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
      Reviewed-by: default avatarJan Beulich <jbeulich@suse.com>
      Reviewed-by: default avatarStefano Stabellini <sstabellini@kernel.org>
      Reviewed-by: default avatarWei Liu <wl@xen.org>
      5f7f7740
    • Juergen Gross's avatar
      xen/events: defer eoi in case of excessive number of events · e99502f7
      Juergen Gross authored
      In case rogue guests are sending events at high frequency it might
      happen that xen_evtchn_do_upcall() won't stop processing events in
      dom0. As this is done in irq handling a crash might be the result.
      
      In order to avoid that, delay further inter-domain events after some
      time in xen_evtchn_do_upcall() by forcing eoi processing into a
      worker on the same cpu, thus inhibiting new events coming in.
      
      The time after which eoi processing is to be delayed is configurable
      via a new module parameter "event_loop_timeout" which specifies the
      maximum event loop time in jiffies (default: 2, the value was chosen
      after some tests showing that a value of 2 was the lowest with an
      only slight drop of dom0 network throughput while multiple guests
      performed an event storm).
      
      How long eoi processing will be delayed can be specified via another
      parameter "event_eoi_delay" (again in jiffies, default 10, again the
      value was chosen after testing with different delay values).
      
      This is part of XSA-332.
      
      Cc: stable@vger.kernel.org
      Reported-by: default avatarJulien Grall <julien@xen.org>
      Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
      Reviewed-by: default avatarStefano Stabellini <sstabellini@kernel.org>
      Reviewed-by: default avatarWei Liu <wl@xen.org>
      e99502f7
    • Juergen Gross's avatar
      xen/events: use a common cpu hotplug hook for event channels · 7beb290c
      Juergen Gross authored
      Today only fifo event channels have a cpu hotplug callback. In order
      to prepare for more percpu (de)init work move that callback into
      events_base.c and add percpu_init() and percpu_deinit() hooks to
      struct evtchn_ops.
      
      This is part of XSA-332.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
      Reviewed-by: default avatarJan Beulich <jbeulich@suse.com>
      Reviewed-by: default avatarWei Liu <wl@xen.org>
      7beb290c
    • Juergen Gross's avatar
      xen/events: switch user event channels to lateeoi model · c44b849c
      Juergen Gross authored
      Instead of disabling the irq when an event is received and enabling
      it again when handled by the user process use the lateeoi model.
      
      This is part of XSA-332.
      
      Cc: stable@vger.kernel.org
      Reported-by: default avatarJulien Grall <julien@xen.org>
      Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
      Tested-by: default avatarStefano Stabellini <sstabellini@kernel.org>
      Reviewed-by: default avatarStefano Stabellini <sstabellini@kernel.org>
      Reviewed-by: default avatarJan Beulich <jbeulich@suse.com>
      Reviewed-by: default avatarWei Liu <wl@xen.org>
      c44b849c
    • Juergen Gross's avatar
      xen/pciback: use lateeoi irq binding · c2711441
      Juergen Gross authored
      In order to reduce the chance for the system becoming unresponsive due
      to event storms triggered by a misbehaving pcifront use the lateeoi irq
      binding for pciback and unmask the event channel only just before
      leaving the event handling function.
      
      Restructure the handling to support that scheme. Basically an event can
      come in for two reasons: either a normal request for a pciback action,
      which is handled in a worker, or in case the guest has finished an AER
      request which was requested by pciback.
      
      When an AER request is issued to the guest and a normal pciback action
      is currently active issue an EOI early in order to be able to receive
      another event when the AER request has been finished by the guest.
      
      Let the worker processing the normal requests run until no further
      request is pending, instead of starting a new worker ion that case.
      Issue the EOI only just before leaving the worker.
      
      This scheme allows to drop calling the generic function
      xen_pcibk_test_and_schedule_op() after processing of any request as
      the handling of both request types is now separated more cleanly.
      
      This is part of XSA-332.
      
      Cc: stable@vger.kernel.org
      Reported-by: default avatarJulien Grall <julien@xen.org>
      Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
      Reviewed-by: default avatarJan Beulich <jbeulich@suse.com>
      Reviewed-by: default avatarWei Liu <wl@xen.org>
      c2711441
    • Juergen Gross's avatar
      xen/pvcallsback: use lateeoi irq binding · c8d647a3
      Juergen Gross authored
      In order to reduce the chance for the system becoming unresponsive due
      to event storms triggered by a misbehaving pvcallsfront use the lateeoi
      irq binding for pvcallsback and unmask the event channel only after
      handling all write requests, which are the ones coming in via an irq.
      
      This requires modifying the logic a little bit to not require an event
      for each write request, but to keep the ioworker running until no
      further data is found on the ring page to be processed.
      
      This is part of XSA-332.
      
      Cc: stable@vger.kernel.org
      Reported-by: default avatarJulien Grall <julien@xen.org>
      Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
      Reviewed-by: default avatarStefano Stabellini <sstabellini@kernel.org>
      Reviewed-by: default avatarWei Liu <wl@xen.org>
      c8d647a3
    • Juergen Gross's avatar
      xen/scsiback: use lateeoi irq binding · 86991b6e
      Juergen Gross authored
      In order to reduce the chance for the system becoming unresponsive due
      to event storms triggered by a misbehaving scsifront use the lateeoi
      irq binding for scsiback and unmask the event channel only just before
      leaving the event handling function.
      
      In case of a ring protocol error don't issue an EOI in order to avoid
      the possibility to use that for producing an event storm. This at once
      will result in no further call of scsiback_irq_fn(), so the ring_error
      struct member can be dropped and scsiback_do_cmd_fn() can signal the
      protocol error via a negative return value.
      
      This is part of XSA-332.
      
      Cc: stable@vger.kernel.org
      Reported-by: default avatarJulien Grall <julien@xen.org>
      Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
      Reviewed-by: default avatarJan Beulich <jbeulich@suse.com>
      Reviewed-by: default avatarWei Liu <wl@xen.org>
      86991b6e
    • Juergen Gross's avatar
      xen/netback: use lateeoi irq binding · 23025393
      Juergen Gross authored
      In order to reduce the chance for the system becoming unresponsive due
      to event storms triggered by a misbehaving netfront use the lateeoi
      irq binding for netback and unmask the event channel only just before
      going to sleep waiting for new events.
      
      Make sure not to issue an EOI when none is pending by introducing an
      eoi_pending element to struct xenvif_queue.
      
      When no request has been consumed set the spurious flag when sending
      the EOI for an interrupt.
      
      This is part of XSA-332.
      
      Cc: stable@vger.kernel.org
      Reported-by: default avatarJulien Grall <julien@xen.org>
      Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
      Reviewed-by: default avatarJan Beulich <jbeulich@suse.com>
      Reviewed-by: default avatarWei Liu <wl@xen.org>
      23025393
    • Juergen Gross's avatar
      xen/blkback: use lateeoi irq binding · 01263a1f
      Juergen Gross authored
      In order to reduce the chance for the system becoming unresponsive due
      to event storms triggered by a misbehaving blkfront use the lateeoi
      irq binding for blkback and unmask the event channel only after
      processing all pending requests.
      
      As the thread processing requests is used to do purging work in regular
      intervals an EOI may be sent only after having received an event. If
      there was no pending I/O request flag the EOI as spurious.
      
      This is part of XSA-332.
      
      Cc: stable@vger.kernel.org
      Reported-by: default avatarJulien Grall <julien@xen.org>
      Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
      Reviewed-by: default avatarJan Beulich <jbeulich@suse.com>
      Reviewed-by: default avatarWei Liu <wl@xen.org>
      01263a1f
    • Juergen Gross's avatar
      xen/events: add a new "late EOI" evtchn framework · 54c9de89
      Juergen Gross authored
      In order to avoid tight event channel related IRQ loops add a new
      framework of "late EOI" handling: the IRQ the event channel is bound
      to will be masked until the event has been handled and the related
      driver is capable to handle another event. The driver is responsible
      for unmasking the event channel via the new function xen_irq_lateeoi().
      
      This is similar to binding an event channel to a threaded IRQ, but
      without having to structure the driver accordingly.
      
      In order to support a future special handling in case a rogue guest
      is sending lots of unsolicited events, add a flag to xen_irq_lateeoi()
      which can be set by the caller to indicate the event was a spurious
      one.
      
      This is part of XSA-332.
      
      Cc: stable@vger.kernel.org
      Reported-by: default avatarJulien Grall <julien@xen.org>
      Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
      Reviewed-by: default avatarJan Beulich <jbeulich@suse.com>
      Reviewed-by: default avatarStefano Stabellini <sstabellini@kernel.org>
      Reviewed-by: default avatarWei Liu <wl@xen.org>
      54c9de89
    • Juergen Gross's avatar
      xen/events: fix race in evtchn_fifo_unmask() · f0133719
      Juergen Gross authored
      Unmasking a fifo event channel can result in unmasking it twice, once
      directly in the kernel and once via a hypercall in case the event was
      pending.
      
      Fix that by doing the local unmask only if the event is not pending.
      
      This is part of XSA-332.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
      Reviewed-by: default avatarJan Beulich <jbeulich@suse.com>
      f0133719
    • Juergen Gross's avatar
      xen/events: add a proper barrier to 2-level uevent unmasking · 4d3fe31b
      Juergen Gross authored
      A follow-up patch will require certain write to happen before an event
      channel is unmasked.
      
      While the memory barrier is not strictly necessary for all the callers,
      the main one will need it. In order to avoid an extra memory barrier
      when using fifo event channels, mandate evtchn_unmask() to provide
      write ordering.
      
      The 2-level event handling unmask operation is missing an appropriate
      barrier, so add it. Fifo event channels are fine in this regard due to
      using sync_cmpxchg().
      
      This is part of XSA-332.
      
      Cc: stable@vger.kernel.org
      Suggested-by: default avatarJulien Grall <julien@xen.org>
      Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
      Reviewed-by: default avatarJulien Grall <jgrall@amazon.com>
      Reviewed-by: default avatarWei Liu <wl@xen.org>
      4d3fe31b
    • Juergen Gross's avatar
      xen/events: avoid removing an event channel while handling it · 073d0552
      Juergen Gross authored
      Today it can happen that an event channel is being removed from the
      system while the event handling loop is active. This can lead to a
      race resulting in crashes or WARN() splats when trying to access the
      irq_info structure related to the event channel.
      
      Fix this problem by using a rwlock taken as reader in the event
      handling loop and as writer when deallocating the irq_info structure.
      
      As the observed problem was a NULL dereference in evtchn_from_irq()
      make this function more robust against races by testing the irq_info
      pointer to be not NULL before dereferencing it.
      
      And finally make all accesses to evtchn_to_irq[row][col] atomic ones
      in order to avoid seeing partial updates of an array element in irq
      handling. Note that irq handling can be entered only for event channels
      which have been valid before, so any not populated row isn't a problem
      in this regard, as rows are only ever added and never removed.
      
      This is XSA-331.
      
      Cc: stable@vger.kernel.org
      Reported-by: default avatarMarek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
      Reported-by: default avatarJinoh Kang <luke1337@theori.io>
      Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
      Reviewed-by: default avatarStefano Stabellini <sstabellini@kernel.org>
      Reviewed-by: default avatarWei Liu <wl@xen.org>
      073d0552
    • Linus Torvalds's avatar
      Merge tag 'riscv-for-linus-5.10-mw0' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux · 270315b8
      Linus Torvalds authored
      Pull RISC-V updates from Palmer Dabbelt:
       "A handful of cleanups and new features:
      
         - A handful of cleanups for our page fault handling
      
         - Improvements to how we fill out cacheinfo
      
         - Support for EFI-based systems"
      
      * tag 'riscv-for-linus-5.10-mw0' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux: (22 commits)
        RISC-V: Add page table dump support for uefi
        RISC-V: Add EFI runtime services
        RISC-V: Add EFI stub support.
        RISC-V: Add PE/COFF header for EFI stub
        RISC-V: Implement late mapping page table allocation functions
        RISC-V: Add early ioremap support
        RISC-V: Move DT mapping outof fixmap
        RISC-V: Fix duplicate included thread_info.h
        riscv/mm/fault: Set FAULT_FLAG_INSTRUCTION flag in do_page_fault()
        riscv/mm/fault: Fix inline placement in vmalloc_fault() declaration
        riscv: Add cache information in AUX vector
        riscv: Define AT_VECTOR_SIZE_ARCH for ARCH_DLINFO
        riscv: Set more data to cacheinfo
        riscv/mm/fault: Move access error check to function
        riscv/mm/fault: Move FAULT_FLAG_WRITE handling in do_page_fault()
        riscv/mm/fault: Simplify mm_fault_error()
        riscv/mm/fault: Move fault error handling to mm_fault_error()
        riscv/mm/fault: Simplify fault error handling
        riscv/mm/fault: Move vmalloc fault handling to vmalloc_fault()
        riscv/mm/fault: Move bad area handling to bad_area()
        ...
      270315b8
    • Linus Torvalds's avatar
      Merge tag 'm68knommu-for-v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu · d3876ff7
      Linus Torvalds authored
      Pull m68knommu updates from Greg Ungerer:
       "A collection of fixes for 5.10:
      
         - switch to using asm-generic uaccess code
      
         - fix sparse warnings in signal code
      
         - fix compilation of ColdFire MMC support
      
         - support sysrq in ColdFire serial driver"
      
      * tag 'm68knommu-for-v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu:
        serial: mcf: add sysrq capability
        m68knommu: include SDHC support only when hardware has it
        m68knommu: fix sparse warnings in signal code
        m68knommu: switch to using asm-generic/uaccess.h
      d3876ff7
  2. 19 Oct, 2020 3 commits
    • Linus Torvalds's avatar
      Merge tag 'xfs-5.10-merge-5' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux · bbe85027
      Linus Torvalds authored
      Pull more xfs updates from Darrick Wong:
       "The second large pile of new stuff for 5.10, with changes even more
        monumental than last week!
      
        We are formally announcing the deprecation of the V4 filesystem format
        in 2030. All users must upgrade to the V5 format, which contains
        design improvements that greatly strengthen metadata validation,
        supports reflink and online fsck, and is the intended vehicle for
        handling timestamps past 2038. We're also deprecating the old Irix
        behavioral tweaks in September 2025.
      
        Coming along for the ride are two design changes to the deferred
        metadata ops subsystem. One of the improvements is to retain correct
        logical ordering of tasks and subtasks, which is a more logical design
        for upper layers of XFS and will become necessary when we add atomic
        file range swaps and commits. The second improvement to deferred ops
        improves the scalability of the log by helping the log tail to move
        forward during long-running operations. This reduces log contention
        when there are a large number of threads trying to run transactions.
      
        In addition to that, this fixes numerous small bugs in log recovery;
        refactors logical intent log item recovery to remove the last
        remaining place in XFS where we could have nested transactions; fixes
        a couple of ways that intent log item recovery could fail in ways that
        wouldn't have happened in the regular commit paths; fixes a deadlock
        vector in the GETFSMAP implementation (which improves its performance
        by 20%); and fixes serious bugs in the realtime growfs, fallocate, and
        bitmap handling code.
      
        Summary:
      
         - Deprecate the V4 filesystem format, some disused mount options, and
           some legacy sysctl knobs now that we can support dates into the
           25th century. Note that removal of V4 support will not happen until
           the early 2030s.
      
         - Fix some probles with inode realtime flag propagation.
      
         - Fix some buffer handling issues when growing a rt filesystem.
      
         - Fix a problem where a BMAP_REMAP unmap call would free rt extents
           even though the purpose of BMAP_REMAP is to avoid freeing the
           blocks.
      
         - Strengthen the dabtree online scrubber to check hash values on
           child dabtree blocks.
      
         - Actually log new intent items created as part of recovering log
           intent items.
      
         - Fix a bug where quotas weren't attached to an inode undergoing bmap
           intent item recovery.
      
         - Fix a buffer overrun problem with specially crafted log buffer
           headers.
      
         - Various cleanups to type usage and slightly inaccurate comments.
      
         - More cleanups to the xattr, log, and quota code.
      
         - Don't run the (slower) shared-rmap operations on attr fork
           mappings.
      
         - Fix a bug where we failed to check the LSN of finobt blocks during
           replay and could therefore overwrite newer data with older data.
      
         - Clean up the ugly nested transaction mess that log recovery uses to
           stage intent item recovery in the correct order by creating a
           proper data structure to capture recovered chains.
      
         - Use the capture structure to resume intent item chains with the
           same log space and block reservations as when they were captured.
      
         - Fix a UAF bug in bmap intent item recovery where we failed to
           maintain our reference to the incore inode if the bmap operation
           needed to relog itself to continue.
      
         - Rearrange the defer ops mechanism to finish newly created subtasks
           of a parent task before moving on to the next parent task.
      
         - Automatically relog intent items in deferred ops chains if doing so
           would help us avoid pinning the log tail. This will help fix some
           log scaling problems now and will facilitate atomic file updates
           later.
      
         - Fix a deadlock in the GETFSMAP implementation by using an internal
           memory buffer to reduce indirect calls and copies to userspace,
           thereby improving its performance by ~20%.
      
         - Fix various problems when calling growfs on a realtime volume would
           not fully update the filesystem metadata.
      
         - Fix broken Kconfig asking about deprecated XFS when XFS is
           disabled"
      
      * tag 'xfs-5.10-merge-5' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux: (48 commits)
        xfs: fix Kconfig asking about XFS_SUPPORT_V4 when XFS_FS=n
        xfs: fix high key handling in the rt allocator's query_range function
        xfs: annotate grabbing the realtime bitmap/summary locks in growfs
        xfs: make xfs_growfs_rt update secondary superblocks
        xfs: fix realtime bitmap/summary file truncation when growing rt volume
        xfs: fix the indent in xfs_trans_mod_dquot
        xfs: do the ASSERT for the arguments O_{u,g,p}dqpp
        xfs: fix deadlock and streamline xfs_getfsmap performance
        xfs: limit entries returned when counting fsmap records
        xfs: only relog deferred intent items if free space in the log gets low
        xfs: expose the log push threshold
        xfs: periodically relog deferred intent items
        xfs: change the order in which child and parent defer ops are finished
        xfs: fix an incore inode UAF in xfs_bui_recover
        xfs: clean up xfs_bui_item_recover iget/trans_alloc/ilock ordering
        xfs: clean up bmap intent item recovery checking
        xfs: xfs_defer_capture should absorb remaining transaction reservation
        xfs: xfs_defer_capture should absorb remaining block reservations
        xfs: proper replay of deferred ops queued during log recovery
        xfs: remove XFS_LI_RECOVERED
        ...
      bbe85027
    • Linus Torvalds's avatar
      Merge tag 'fuse-update-5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse · 69456535
      Linus Torvalds authored
      Pull fuse updates from Miklos Szeredi:
      
       - Support directly accessing host page cache from virtiofs. This can
         improve I/O performance for various workloads, as well as reducing
         the memory requirement by eliminating double caching. Thanks to Vivek
         Goyal for doing most of the work on this.
      
       - Allow automatic submounting inside virtiofs. This allows unique
         st_dev/ st_ino values to be assigned inside the guest to files
         residing on different filesystems on the host. Thanks to Max Reitz
         for the patches.
      
       - Fix an old use after free bug found by Pradeep P V K.
      
      * tag 'fuse-update-5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse: (25 commits)
        virtiofs: calculate number of scatter-gather elements accurately
        fuse: connection remove fix
        fuse: implement crossmounts
        fuse: Allow fuse_fill_super_common() for submounts
        fuse: split fuse_mount off of fuse_conn
        fuse: drop fuse_conn parameter where possible
        fuse: store fuse_conn in fuse_req
        fuse: add submount support to <uapi/linux/fuse.h>
        fuse: fix page dereference after free
        virtiofs: add logic to free up a memory range
        virtiofs: maintain a list of busy elements
        virtiofs: serialize truncate/punch_hole and dax fault path
        virtiofs: define dax address space operations
        virtiofs: add DAX mmap support
        virtiofs: implement dax read/write operations
        virtiofs: introduce setupmapping/removemapping commands
        virtiofs: implement FUSE_INIT map_alignment field
        virtiofs: keep a list of free dax memory ranges
        virtiofs: add a mount option to enable dax
        virtiofs: set up virtio_fs dax_device
        ...
      69456535
    • Linus Torvalds's avatar
      Merge tag 'zonefs-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/zonefs · 922a763a
      Linus Torvalds authored
      Pull zonefs updates from Damien Le Moal:
       "Add an 'explicit-open' mount option to automatically issue a
        REQ_OP_ZONE_OPEN command to the device whenever a sequential zone file
        is open for writing for the first time.
      
        This avoids 'insufficient zone resources' errors for write operations
        on some drives with limited zone resources or on ZNS drives with a
        limited number of active zones. From Johannes"
      
      * tag 'zonefs-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/zonefs:
        zonefs: document the explicit-open mount option
        zonefs: open/close zone on file open/close
        zonefs: provide no-lock zonefs_io_error variant
        zonefs: introduce helper for zone management
      922a763a
  3. 18 Oct, 2020 19 commits
    • Linus Torvalds's avatar
      Merge tag 'linux-kselftest-kunit-5.10-rc1' of... · 7cf726a5
      Linus Torvalds authored
      Merge tag 'linux-kselftest-kunit-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
      
      Pull more Kunit updates from Shuah Khan:
      
       - add Kunit to kernel_init() and remove KUnit from init calls entirely.
      
         This addresses the concern that Kunit would not work correctly during
         late init phase.
      
       - add a linker section where KUnit can put references to its test
         suites.
      
         This is the first step in transitioning to dispatching all KUnit
         tests from a centralized executor rather than having each as its own
         separate late_initcall.
      
       - add a centralized executor to dispatch tests rather than relying on
         late_initcall to schedule each test suite separately. Centralized
         execution is for built-in tests only; modules will execute tests when
         loaded.
      
       - convert bitfield test to use KUnit framework
      
       - Documentation updates for naming guidelines and how
         kunit_test_suite() works.
      
       - add test plan to KUnit TAP format
      
      * tag 'linux-kselftest-kunit-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
        lib: kunit: Fix compilation test when using TEST_BIT_FIELD_COMPILE
        lib: kunit: add bitfield test conversion to KUnit
        Documentation: kunit: add a brief blurb about kunit_test_suite
        kunit: test: add test plan to KUnit TAP format
        init: main: add KUnit to kernel init
        kunit: test: create a single centralized executor for all tests
        vmlinux.lds.h: add linker section for KUnit test suites
        Documentation: kunit: Add naming guidelines
      7cf726a5
    • Linus Torvalds's avatar
      Merge tag 'core-rcu-2020-10-12' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 41eea65e
      Linus Torvalds authored
      Pull RCU changes from Ingo Molnar:
      
       - Debugging for smp_call_function()
      
       - RT raw/non-raw lock ordering fixes
      
       - Strict grace periods for KASAN
      
       - New smp_call_function() torture test
      
       - Torture-test updates
      
       - Documentation updates
      
       - Miscellaneous fixes
      
      [ This doesn't actually pull the tag - I've dropped the last merge from
        the RCU branch due to questions about the series.   - Linus ]
      
      * tag 'core-rcu-2020-10-12' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (77 commits)
        smp: Make symbol 'csd_bug_count' static
        kernel/smp: Provide CSD lock timeout diagnostics
        smp: Add source and destination CPUs to __call_single_data
        rcu: Shrink each possible cpu krcp
        rcu/segcblist: Prevent useless GP start if no CBs to accelerate
        torture: Add gdb support
        rcutorture: Allow pointer leaks to test diagnostic code
        rcutorture: Hoist OOM registry up one level
        refperf: Avoid null pointer dereference when buf fails to allocate
        rcutorture: Properly synchronize with OOM notifier
        rcutorture: Properly set rcu_fwds for OOM handling
        torture: Add kvm.sh --help and update help message
        rcutorture: Add CONFIG_PROVE_RCU_LIST to TREE05
        torture: Update initrd documentation
        rcutorture: Replace HTTP links with HTTPS ones
        locktorture: Make function torture_percpu_rwsem_init() static
        torture: document --allcpus argument added to the kvm.sh script
        rcutorture: Output number of elapsed grace periods
        rcutorture: Remove KCSAN stubs
        rcu: Remove unused "cpu" parameter from rcu_report_qs_rdp()
        ...
      41eea65e
    • Linus Torvalds's avatar
      Merge tag 'mailbox-v5.10' of git://git.linaro.org/landing-teams/working/fujitsu/integration · 373014bb
      Linus Torvalds authored
      Pull mailbox updates from Jassi Brar:
      
       - arm: implementation of mhu as a doorbell driver and conversion of
         dt-bindings to json-schema
      
       - mediatek: fix platform_get_irq error handling
      
       - bcm: convert tasklets to use new tasklet_setup api
      
       - core: fix race cause by hrtimer starting inappropriately
      
      * tag 'mailbox-v5.10' of git://git.linaro.org/landing-teams/working/fujitsu/integration:
        mailbox: avoid timer start from callback
        maiblox: mediatek: Fix handling of platform_get_irq() error
        mailbox: arm_mhu: Add ARM MHU doorbell driver
        mailbox: arm_mhu: Match only if compatible is "arm,mhu"
        dt-bindings: mailbox: add doorbell support to ARM MHU
        dt-bindings: mailbox : arm,mhu: Convert to Json-schema
        mailbox: bcm: convert tasklets to use new tasklet_setup() API
      373014bb
    • Linus Torvalds's avatar
      Merge branch 'for-5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/jlawall/linux · f66179ca
      Linus Torvalds authored
      Pull coccinelle updates from Julia Lawall.
      
      * 'for-5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/jlawall/linux:
        coccinelle: api: add kfree_mismatch script
        coccinelle: iterators: Add for_each_child.cocci script
        scripts: coccicheck: Change default condition for parallelism
        scripts: coccicheck: Add quotes to improve portability
        coccinelle: api: kfree_sensitive: print memset position
        coccinelle: misc: add flexible_array.cocci script
        coccinelle: api: add kvmalloc script
        scripts: coccicheck: Change default value for parallelism
        coccinelle: misc: add excluded_middle.cocci script
        scripts: coccicheck: Improve error feedback when coccicheck fails
        coccinelle: api: update kzfree script to kfree_sensitive
        coccinelle: misc: add uninitialized_var.cocci script
        coccinelle: ifnullfree: add vfree(), kvfree*() functions
        coccinelle: api: add kobj_to_dev.cocci script
        coccinelle: add patch rule for dma_alloc_coherent
        scripts: coccicheck: Add chain mode to list of modes
      f66179ca
    • Linus Torvalds's avatar
      Merge branch 'akpm' (patches from Andrew) · 1912b04e
      Linus Torvalds authored
      Merge yet more updates from Andrew Morton:
       "Subsystems affected by this patch series: mm (memcg, migration,
        pagemap, gup, madvise, vmalloc), ia64, and misc"
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (31 commits)
        mm: remove duplicate include statement in mmu.c
        mm: remove the filename in the top of file comment in vmalloc.c
        mm: cleanup the gfp_mask handling in __vmalloc_area_node
        mm: remove alloc_vm_area
        x86/xen: open code alloc_vm_area in arch_gnttab_valloc
        xen/xenbus: use apply_to_page_range directly in xenbus_map_ring_pv
        drm/i915: use vmap in i915_gem_object_map
        drm/i915: stop using kmap in i915_gem_object_map
        drm/i915: use vmap in shmem_pin_map
        zsmalloc: switch from alloc_vm_area to get_vm_area
        mm: allow a NULL fn callback in apply_to_page_range
        mm: add a vmap_pfn function
        mm: add a VM_MAP_PUT_PAGES flag for vmap
        mm: update the documentation for vfree
        mm/madvise: introduce process_madvise() syscall: an external memory hinting API
        pid: move pidfd_get_pid() to pid.c
        mm/madvise: pass mm to do_madvise
        selftests/vm: 10x speedup for hmm-tests
        binfmt_elf: take the mmap lock around find_extend_vma()
        mm/gup_benchmark: take the mmap lock around GUP
        ...
      1912b04e
    • Linus Torvalds's avatar
      Merge tag 'for-linus-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml · 9453b2d4
      Linus Torvalds authored
      Pull UML updates from Richard Weinberger:
      
       - Improve support for non-glibc systems
      
       - Vector: Add support for scripting and dynamic tap devices
      
       - Various fixes for the vector networking driver
      
       - Various fixes for time travel mode
      
      * tag 'for-linus-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml:
        um: vector: Add dynamic tap interfaces and scripting
        um: Clean up stacktrace dump
        um: Fix incorrect assumptions about max pid length
        um: Remove dead usage of TIF_IA32
        um: Remove redundant NULL check
        um: change sigio_spinlock to a mutex
        um: time-travel: Return the sequence number in ACK messages
        um: time-travel: Fix IRQ handling in time_travel_handle_message()
        um: Allow static linking for non-glibc implementations
        um: Some fixes to build UML with musl
        um: vector: Use GFP_ATOMIC under spin lock
        um: Fix null pointer dereference in vector_user_bpf
      9453b2d4
    • Linus Torvalds's avatar
      Merge tag 'for-linus-5.10-rc1-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs · 42973127
      Linus Torvalds authored
      Pull more ubi and ubifs updates from Richard Weinberger:
       "UBI:
         - Correctly use kthread_should_stop in ubi worker
      
        UBIFS:
         - Fixes for memory leaks while iterating directory entries
         - Fix for a user triggerable error message
         - Fix for a space accounting bug in authenticated mode"
      
      * tag 'for-linus-5.10-rc1-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs:
        ubifs: journal: Make sure to not dirty twice for auth nodes
        ubifs: setflags: Don't show error message when vfs_ioc_setflags_prepare() fails
        ubifs: ubifs_jnl_change_xattr: Remove assertion 'nlink > 0' for host inode
        ubi: check kthread_should_stop() after the setting of task state
        ubifs: dent: Fix some potential memory leaks while iterating entries
        ubifs: xattr: Fix some potential memory leaks while iterating entries
      42973127
    • Linus Torvalds's avatar
      Merge tag 'for-linus-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs · a96fd1cc
      Linus Torvalds authored
      Pull ubifs updates from Richard Weinberger:
      
       - Kernel-doc fixes
      
       - Fixes for memory leaks in authentication option parsing
      
      * tag 'for-linus-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs:
        ubifs: mount_ubifs: Release authentication resource in error handling path
        ubifs: Don't parse authentication mount options in remount process
        ubifs: Fix a memleak after dumping authentication mount options
        ubifs: Fix some kernel-doc warnings in tnc.c
        ubifs: Fix some kernel-doc warnings in replay.c
        ubifs: Fix some kernel-doc warnings in gc.c
        ubifs: Fix 'hash' kernel-doc warning in auth.c
      a96fd1cc
    • Tian Tao's avatar
      mm: remove duplicate include statement in mmu.c · c922781f
      Tian Tao authored
      asm/sections.h is included more than once, Remove the one that isn't
      necessary.
      Signed-off-by: default avatarTian Tao <tiantao6@hisilicon.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Reviewed-by: default avatarMike Rapoport <rppt@linux.ibm.com>
      Link: https://lkml.kernel.org/r/1600088607-17327-1-git-send-email-tiantao6@hisilicon.comSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      c922781f
    • Christoph Hellwig's avatar
      mm: remove the filename in the top of file comment in vmalloc.c · b71df8de
      Christoph Hellwig authored
      No point in having the filename inside the file.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Cc: Uladzislau Rezki (Sony) <urezki@gmail.com>
      Link: https://lkml.kernel.org/r/20201002124035.1539300-3-hch@lst.deSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b71df8de
    • Christoph Hellwig's avatar
      mm: cleanup the gfp_mask handling in __vmalloc_area_node · f255935b
      Christoph Hellwig authored
      Patch series "two small vmalloc cleanups".
      
      This patch (of 2):
      
      __vmalloc_area_node currently has four different gfp_t variables to
      just express this simple logic:
      
       - use the passed in mask, plus __GFP_NOWARN and __GFP_HIGHMEM (if
         suitable) for the underlying page allocation
       - use just the reclaim flags from the passed in mask plus __GFP_ZERO
         for allocating the page array
      
      Simplify this down to just use the pre-existing nested_gfp as-is for
      the page array allocation, and just the passed in gfp_mask for the
      page allocation, after conditionally ORing __GFP_HIGHMEM into it.  This
      also makes the allocation warning a little more correct.
      
      Also initialize two variables at the time of declaration while touching
      this area.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Cc: Uladzislau Rezki (Sony) <urezki@gmail.com>
      Link: https://lkml.kernel.org/r/20201002124035.1539300-1-hch@lst.de
      Link: https://lkml.kernel.org/r/20201002124035.1539300-2-hch@lst.deSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f255935b
    • Christoph Hellwig's avatar
      mm: remove alloc_vm_area · 301fa9f2
      Christoph Hellwig authored
      All users are gone now.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Jani Nikula <jani.nikula@linux.intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Juergen Gross <jgross@suse.com>
      Cc: Matthew Auld <matthew.auld@intel.com>
      Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Stefano Stabellini <sstabellini@kernel.org>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Uladzislau Rezki (Sony) <urezki@gmail.com>
      Link: https://lkml.kernel.org/r/20201002122204.1534411-12-hch@lst.deSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      301fa9f2
    • Christoph Hellwig's avatar
      x86/xen: open code alloc_vm_area in arch_gnttab_valloc · 5dd63bf1
      Christoph Hellwig authored
      Replace the last call to alloc_vm_area with an open coded version using an
      iterator in struct gnttab_vm_area instead of the triple indirection magic
      in alloc_vm_area.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Reviewed-by: default avatarBoris Ostrovsky <boris.ostrovsky@oracle.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Jani Nikula <jani.nikula@linux.intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Juergen Gross <jgross@suse.com>
      Cc: Matthew Auld <matthew.auld@intel.com>
      Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Stefano Stabellini <sstabellini@kernel.org>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Uladzislau Rezki (Sony) <urezki@gmail.com>
      Link: https://lkml.kernel.org/r/20201002122204.1534411-11-hch@lst.deSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      5dd63bf1
    • Christoph Hellwig's avatar
      xen/xenbus: use apply_to_page_range directly in xenbus_map_ring_pv · b723caec
      Christoph Hellwig authored
      Replacing alloc_vm_area with get_vm_area_caller + apply_page_range allows
      to fill put the phys_addr values directly instead of doing another loop
      over all addresses.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Reviewed-by: default avatarBoris Ostrovsky <boris.ostrovsky@oracle.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Jani Nikula <jani.nikula@linux.intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Juergen Gross <jgross@suse.com>
      Cc: Matthew Auld <matthew.auld@intel.com>
      Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Stefano Stabellini <sstabellini@kernel.org>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Uladzislau Rezki (Sony) <urezki@gmail.com>
      Link: https://lkml.kernel.org/r/20201002122204.1534411-10-hch@lst.deSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b723caec
    • Christoph Hellwig's avatar
      drm/i915: use vmap in i915_gem_object_map · 534a6687
      Christoph Hellwig authored
      i915_gem_object_map implements fairly low-level vmap functionality in a
      driver.  Split it into two helpers, one for remapping kernel memory which
      can use vmap, and one for I/O memory that uses vmap_pfn.
      
      The only practical difference is that alloc_vm_area prefeaults the vmalloc
      area PTEs, which doesn't seem to be required here for the kernel memory
      case (and could be added to vmap using a flag if actually required).
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Jani Nikula <jani.nikula@linux.intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Juergen Gross <jgross@suse.com>
      Cc: Matthew Auld <matthew.auld@intel.com>
      Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Stefano Stabellini <sstabellini@kernel.org>
      Cc: Uladzislau Rezki (Sony) <urezki@gmail.com>
      Link: https://lkml.kernel.org/r/20201002122204.1534411-9-hch@lst.deSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      534a6687
    • Christoph Hellwig's avatar
      drm/i915: stop using kmap in i915_gem_object_map · 46ce3a62
      Christoph Hellwig authored
      kmap for !PageHighmem is just a convoluted way to say page_address, and
      kunmap is a no-op in that case.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Jani Nikula <jani.nikula@linux.intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Juergen Gross <jgross@suse.com>
      Cc: Matthew Auld <matthew.auld@intel.com>
      Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Stefano Stabellini <sstabellini@kernel.org>
      Cc: Uladzislau Rezki (Sony) <urezki@gmail.com>
      Link: https://lkml.kernel.org/r/20201002122204.1534411-8-hch@lst.deSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      46ce3a62
    • Christoph Hellwig's avatar
      drm/i915: use vmap in shmem_pin_map · bfed6708
      Christoph Hellwig authored
      shmem_pin_map somewhat awkwardly reimplements vmap using alloc_vm_area and
      manual pte setup.  The only practical difference is that alloc_vm_area
      prefeaults the vmalloc area PTEs, which doesn't seem to be required here
      (and could be added to vmap using a flag if actually required).  Switch to
      use vmap, and use vfree to free both the vmalloc mapping and the page
      array, as well as dropping the references to each page.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Jani Nikula <jani.nikula@linux.intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Juergen Gross <jgross@suse.com>
      Cc: Matthew Auld <matthew.auld@intel.com>
      Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Stefano Stabellini <sstabellini@kernel.org>
      Cc: Uladzislau Rezki (Sony) <urezki@gmail.com>
      Link: https://lkml.kernel.org/r/20201002122204.1534411-7-hch@lst.deSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      bfed6708
    • Christoph Hellwig's avatar
      zsmalloc: switch from alloc_vm_area to get_vm_area · d1b6d2e1
      Christoph Hellwig authored
      Just manually pre-fault the PTEs using apply_to_page_range.
      Co-developed-by: default avatarMinchan Kim <minchan@kernel.org>
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Jani Nikula <jani.nikula@linux.intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Juergen Gross <jgross@suse.com>
      Cc: Matthew Auld <matthew.auld@intel.com>
      Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Stefano Stabellini <sstabellini@kernel.org>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Uladzislau Rezki (Sony) <urezki@gmail.com>
      Link: https://lkml.kernel.org/r/20201002122204.1534411-6-hch@lst.deSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d1b6d2e1
    • Christoph Hellwig's avatar
      mm: allow a NULL fn callback in apply_to_page_range · eeb4a05f
      Christoph Hellwig authored
      Besides calling the callback on each page, apply_to_page_range also has
      the effect of pre-faulting all PTEs for the range.  To support callers
      that only need the pre-faulting, make the callback optional.
      
      Based on a patch from Minchan Kim <minchan@kernel.org>.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Jani Nikula <jani.nikula@linux.intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Juergen Gross <jgross@suse.com>
      Cc: Matthew Auld <matthew.auld@intel.com>
      Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Stefano Stabellini <sstabellini@kernel.org>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Uladzislau Rezki (Sony) <urezki@gmail.com>
      Link: https://lkml.kernel.org/r/20201002122204.1534411-5-hch@lst.deSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      eeb4a05f