1. 03 Jul, 2023 8 commits
    • Bob Peterson's avatar
      gfs2: Add quota_change type · 432928c9
      Bob Peterson authored
      Function do_qc has two main uses: (1) to re-sync the local quota changes
      (qd) to the master quotas, and (2) normal quota changes. In the case of
      normal quota changes, the change can be positive or negative, as the
      quota usage goes up and down.
      
      Before this patch function do_qc was distinguishing one from another by
      whether the resulting value is or isn't zero: In the case of a re-sync
      (called do_sync) the quota value is moved from the temporary value to a
      master value, so the amount is added to one and subtracted from the
      other. The problem is that since the values can be positive or negative
      we can occasionally run into situations where we are not doing a re-sync
      but the quota change just happens to cancel out the previous value.
      
      In the case of a re-sync extra references and locks are taken, and so
      do_qc needs to release them. In the case of a normal quota change, no
      extra references and locks are taken, so it must not try to release
      them.
      
      The problem is: if the quota change is not a re-sync but the value just
      happens to cancel out the original quota change, the resulting zero
      value fools do_qc into thinking this is a re-sync and therefore it must
      release the extra references. This results in problems, mainly having to
      do with slot reference numbers going smaller than zero.
      
      This patch introduces new constants, QC_SYNC and QC_CHANGE so do_qc can
      really tell the difference. For QC_SYNC calls it must release the extra
      references acquired by gfs2_quota_unlock's call to qd_check_sync. For
      QC_CHANGE calls it does not have extra references to put.
      
      Note that this allows quota changes back to a value of zero, and so I
      removed an assert warning related to that.
      Signed-off-by: default avatarBob Peterson <rpeterso@redhat.com>
      Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
      432928c9
    • Andreas Gruenbacher's avatar
      gfs2: Use memcpy_{from,to}_page where appropriate · d68d0c6c
      Andreas Gruenbacher authored
      Replace kmap_local_page() + memcpy() + kunmap_local() sequences with
      memcpy_{from,to}_page() where we are not doing anything else with the
      mapped page.
      Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
      d68d0c6c
    • Andreas Gruenbacher's avatar
      gfs2: Convert remaining kmap_atomic calls to kmap_local_page · b0c21c6d
      Andreas Gruenbacher authored
      Replace the remaining instances of kmap_atomic() ... kunmap_atomic()
      with kmap_local_page() ... kunmap_local().
      
      In gfs2_write_buf_to_page(), we can call flush_dcache_page() after
      unmapping the page.
      Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
      b0c21c6d
    • Deepak R Varma's avatar
      gfs2: Replace deprecated kmap_atomic with kmap_local_page · 58721bd4
      Deepak R Varma authored
      kmap_atomic() is deprecated in favor of kmap_local_{folio,page}().
      
      Therefore, replace kmap_atomic() with kmap_local_page() in
      gfs2_internal_read() and stuffed_readpage().
      
      kmap_atomic() disables page-faults and preemption (the latter only for
      !PREEMPT_RT kernels), However, the code within the mapping/un-mapping in
      gfs2_internal_read() and stuffed_readpage() does not depend on the
      above-mentioned side effects.
      
      Therefore, a mere replacement of the old API with the new one is all that
      is required (i.e., there is no need to explicitly add any calls to
      pagefault_disable() and/or preempt_disable()).
      Signed-off-by: default avatarDeepak R Varma <drv@mailo.com>
      Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
      58721bd4
    • Andreas Gruenbacher's avatar
      gfs: Get rid of unnucessary locking in inode_go_dump · f246dd4b
      Andreas Gruenbacher authored
      Commit 27a2660f ("gfs2: Dump nrpages for inodes and their glocks")
      added some locking around reading inode->i_data.nrpages.  That locking
      doesn't do anything really, so get rid of it.
      
      With that, the glock argument to ->go_dump() can be made const again as
      well.
      Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
      f246dd4b
    • Andreas Gruenbacher's avatar
      gfs2: gfs2_freeze_lock_shared cleanup · 6c7410f4
      Andreas Gruenbacher authored
      All the remaining users of gfs2_freeze_lock_shared() set freeze_gh to
      &sdp->sd_freeze_gh and flags to 0, so remove those two parameters.
      Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
      6c7410f4
    • Andreas Gruenbacher's avatar
      gfs2: Replace sd_freeze_state with SDF_FROZEN flag · 5432af15
      Andreas Gruenbacher authored
      Replace sd_freeze_state with a new SDF_FROZEN flag.
      
      There no longer is a need for indicating that a freeze is in progress
      (SDF_STARTING_FREEZE); we are now protecting the critical sections with
      the sd_freeze_mutex.
      Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
      5432af15
    • Andreas Gruenbacher's avatar
      gfs2: Rework freeze / thaw logic · b77b4a48
      Andreas Gruenbacher authored
      So far, at mount time, gfs2 would take the freeze glock in shared mode
      and then immediately drop it again, turning it into a cached glock that
      can be reclaimed at any time.  To freeze the filesystem cluster-wide,
      the node initiating the freeze would take the freeze glock in exclusive
      mode, which would cause the freeze glock's freeze_go_sync() callback to
      run on each node.  There, gfs2 would freeze the filesystem and schedule
      gfs2_freeze_func() to run.  gfs2_freeze_func() would re-acquire the
      freeze glock in shared mode, thaw the filesystem, and drop the freeze
      glock again.  The initiating node would keep the freeze glock held in
      exclusive mode.  To thaw the filesystem, the initiating node would drop
      the freeze glock again, which would allow gfs2_freeze_func() to resume
      on all nodes, leaving the filesystem in the thawed state.
      
      It turns out that in freeze_go_sync(), we cannot reliably and safely
      freeze the filesystem.  This is primarily because the final unmount of a
      filesystem takes a write lock on the s_umount rw semaphore before
      calling into gfs2_put_super(), and freeze_go_sync() needs to call
      freeze_super() which also takes a write lock on the same semaphore,
      causing a deadlock.  We could work around this by trying to take an
      active reference on the super block first, which would prevent unmount
      from running at the same time.  But that can fail, and freeze_go_sync()
      isn't actually allowed to fail.
      
      To get around this, this patch changes the freeze glock locking scheme
      as follows:
      
      At mount time, each node takes the freeze glock in shared mode.  To
      freeze a filesystem, the initiating node first freezes the filesystem
      locally and then drops and re-acquires the freeze glock in exclusive
      mode.  All other nodes notice that there is contention on the freeze
      glock in their go_callback callbacks, and they schedule
      gfs2_freeze_func() to run.  There, they freeze the filesystem locally
      and drop and re-acquire the freeze glock before re-thawing the
      filesystem.  This is happening outside of the glock state engine, so
      there, we are allowed to fail.
      
      From a cluster point of view, taking and immediately dropping a glock is
      indistinguishable from taking the glock and only dropping it upon
      contention, so this new scheme is compatible with the old one.
      
      Thanks to Li Dong <lidong@vivo.com> for reporting a locking bug in
      gfs2_freeze_func() in a previous version of this commit.
      Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
      b77b4a48
  2. 15 Jun, 2023 5 commits
  3. 13 Jun, 2023 2 commits
  4. 12 Jun, 2023 2 commits
  5. 06 Jun, 2023 9 commits
  6. 05 Jun, 2023 2 commits
  7. 04 Jun, 2023 9 commits
    • Linus Torvalds's avatar
      Linux 6.4-rc5 · 9561de3a
      Linus Torvalds authored
      9561de3a
    • Linus Torvalds's avatar
      Merge tag 'irq_urgent_for_v6.4_rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 6f64a5eb
      Linus Torvalds authored
      Pull irq fix from Borislav Petkov:
      
       - Fix open firmware quirks validation so that they don't get applied
         wrongly
      
      * tag 'irq_urgent_for_v6.4_rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        irqchip/gic: Correctly validate OF quirk descriptors
      6f64a5eb
    • Linus Torvalds's avatar
      Merge tag 'media/v6.4-4' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · 5e89d62e
      Linus Torvalds authored
      Pull media fixes from Mauro Carvalho Chehab:
       "Some driver fixes:
         - a regression fix for the verisilicon driver
         - uvcvideo: don't expose unsupported video formats to userspace
         - camss-video: don't zero subdev format after init
         - mediatek: some fixes for 4K decoder formats
         - fix a Sphinx build warning (missing doc for client_caps)
         - some fixes for imx and atomisp staging drivers
      
        And two CEC core fixes:
         - don't set last_initiator if TX in progress
         - disable adapter in cec_devnode_unregister"
      
      * tag 'media/v6.4-4' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
        media: uvcvideo: Don't expose unsupported formats to userspace
        media: v4l2-subdev: Fix missing kerneldoc for client_caps
        media: staging: media: imx: initialize hs_settle to avoid warning
        media: v4l2-mc: Drop subdev check in v4l2_create_fwnode_links_to_pad()
        media: staging: media: atomisp: init high & low vars
        media: cec: core: don't set last_initiator if tx in progress
        media: cec: core: disable adapter in cec_devnode_unregister
        media: mediatek: vcodec: Only apply 4K frame sizes on decoder formats
        media: camss: camss-video: Don't zero subdev format again after initialization
        media: verisilicon: Additional fix for the crash when opening the driver
      5e89d62e
    • Linus Torvalds's avatar
      Merge tag 'char-misc-6.4-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc · 209835e8
      Linus Torvalds authored
      Pull char/misc driver fixes from Greg KH:
       "Here are a bunch of tiny char/misc/other driver fixes for 6.4-rc5 that
        resolve a number of reported issues. Included in here are:
      
         - iio driver fixes
      
         - fpga driver fixes
      
         - test_firmware bugfixes
      
         - fastrpc driver tiny bugfixes
      
         - MAINTAINERS file updates for some subsystems
      
        All of these have been in linux-next this past week with no reported
        issues"
      
      * tag 'char-misc-6.4-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (34 commits)
        test_firmware: fix the memory leak of the allocated firmware buffer
        test_firmware: fix a memory leak with reqs buffer
        test_firmware: prevent race conditions by a correct implementation of locking
        firmware_loader: Fix a NULL vs IS_ERR() check
        MAINTAINERS: Vaibhav Gupta is the new ipack maintainer
        dt-bindings: fpga: replace Ivan Bornyakov maintainership
        MAINTAINERS: update Microchip MPF FPGA reviewers
        misc: fastrpc: reject new invocations during device removal
        misc: fastrpc: return -EPIPE to invocations on device removal
        misc: fastrpc: Reassign memory ownership only for remote heap
        misc: fastrpc: Pass proper scm arguments for secure map request
        iio: imu: inv_icm42600: fix timestamp reset
        iio: adc: ad_sigma_delta: Fix IRQ issue by setting IRQ_DISABLE_UNLAZY flag
        dt-bindings: iio: adc: renesas,rcar-gyroadc: Fix adi,ad7476 compatible value
        iio: dac: mcp4725: Fix i2c_master_send() return value handling
        iio: accel: kx022a fix irq getting
        iio: bu27034: Ensure reset is written
        iio: dac: build ad5758 driver when AD5758 is selected
        iio: addac: ad74413: fix resistance input processing
        iio: light: vcnl4035: fixed chip ID check
        ...
      209835e8
    • Linus Torvalds's avatar
      Merge tag 'driver-core-6.4-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core · 41f3ab2d
      Linus Torvalds authored
      Pull driver core fixes from Greg KH:
       "Here are two small driver core cacheinfo fixes for 6.4-rc5 that
        resolve a number of reported issues with that file. These changes have
        been in linux-next this past week with no reported problems"
      
      * tag 'driver-core-6.4-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
        drivers: base: cacheinfo: Update cpu_map_populated during CPU Hotplug
        drivers: base: cacheinfo: Fix shared_cpu_map changes in event of CPU hotplug
      41f3ab2d
    • Linus Torvalds's avatar
      Merge tag 'tty-6.4-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty · 12c2f77b
      Linus Torvalds authored
      Pull tty/serial driver fixes from Greg KH:
       "Here are some small tty/serial driver fixes for 6.4-rc5 that have all
        been in linux-next this past week with no reported problems. Included
        in here are:
      
         - 8250_tegra driver bugfix
      
         - fsl uart driver bugfixes
      
         - Kconfig fix for dependancy issue
      
         - dt-bindings fix for the 8250_omap driver"
      
      * tag 'tty-6.4-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
        dt-bindings: serial: 8250_omap: add rs485-rts-active-high
        serial: cpm_uart: Fix a COMPILE_TEST dependency
        soc: fsl: cpm1: Fix TSA and QMC dependencies in case of COMPILE_TEST
        tty: serial: fsl_lpuart: use UARTCTRL_TXINV to send break instead of UARTCTRL_SBK
        serial: 8250_tegra: Fix an error handling path in tegra_uart_probe()
      12c2f77b
    • Linus Torvalds's avatar
      Merge tag 'usb-6.4-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb · 8b435e40
      Linus Torvalds authored
      Pull USB fixes from Greg KH:
       "Here are some USB driver and core fixes for 6.4-rc5. Most of these are
        tiny driver fixes, including:
      
         - udc driver bugfix
      
         - f_fs gadget driver bugfix
      
         - cdns3 driver bugfix
      
         - typec bugfixes
      
        But the "big" thing in here is a fix yet-again for how the USB buffers
        are handled from userspace when dealing with DMA issues. The changes
        were discussed a lot, and tested a lot, on the list, and acked by the
        relevant mm maintainers and have been in linux-next all this past week
        with no reported problems"
      
      * tag 'usb-6.4-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
        usb: typec: tps6598x: Fix broken polling mode after system suspend/resume
        mm: page_table_check: Ensure user pages are not slab pages
        mm: page_table_check: Make it dependent on EXCLUSIVE_SYSTEM_RAM
        usb: usbfs: Use consistent mmap functions
        usb: usbfs: Enforce page requirements for mmap
        dt-bindings: usb: snps,dwc3: Fix "snps,hsphy_interface" type
        usb: gadget: udc: fix NULL dereference in remove()
        usb: gadget: f_fs: Add unbind event before functionfs_unbind
        usb: cdns3: fix NCM gadget RX speed 20x slow than expection at iMX8QM
      8b435e40
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · b066935b
      Linus Torvalds authored
      Pull kvm fixes from Paolo Bonzini:
       "ARM:
      
         - Address some fallout of the locking rework, this time affecting the
           way the vgic is configured
      
         - Fix an issue where the page table walker frees a subtree and then
           proceeds with walking what it has just freed...
      
         - Check that a given PA donated to the guest is actually memory (only
           affecting pKVM)
      
         - Correctly handle MTE CMOs by Set/Way
      
         - Fix the reported address of a watchpoint forwarded to userspace
      
         - Fix the freeing of the root of stage-2 page tables
      
         - Stop creating spurious PMU events to perform detection of the
           default PMU and use the existing PMU list instead
      
        x86:
      
         - Fix a memslot lookup bug in the NX recovery thread that could
           theoretically let userspace bypass the NX hugepage mitigation
      
         - Fix a s/BLOCKING/PENDING bug in SVM's vNMI support
      
         - Account exit stats for fastpath VM-Exits that never leave the super
           tight run-loop
      
         - Fix an out-of-bounds bug in the optimized APIC map code, and add a
           regression test for the race"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
        KVM: selftests: Add test for race in kvm_recalculate_apic_map()
        KVM: x86: Bail from kvm_recalculate_phys_map() if x2APIC ID is out-of-bounds
        KVM: x86: Account fastpath-only VM-Exits in vCPU stats
        KVM: SVM: vNMI pending bit is V_NMI_PENDING_MASK not V_NMI_BLOCKING_MASK
        KVM: x86/mmu: Grab memslot for correct address space in NX recovery worker
        KVM: arm64: Document default vPMU behavior on heterogeneous systems
        KVM: arm64: Iterate arm_pmus list to probe for default PMU
        KVM: arm64: Drop last page ref in kvm_pgtable_stage2_free_removed()
        KVM: arm64: Populate fault info for watchpoint
        KVM: arm64: Reload PTE after invoking walker callback on preorder traversal
        KVM: arm64: Handle trap of tagged Set/Way CMOs
        arm64: Add missing Set/Way CMO encodings
        KVM: arm64: Prevent unconditional donation of unmapped regions from the host
        KVM: arm64: vgic: Fix a comment
        KVM: arm64: vgic: Fix locking comment
        KVM: arm64: vgic: Wrap vgic_its_create() with config_lock
        KVM: arm64: vgic: Fix a circular locking issue
      b066935b
    • Linus Torvalds's avatar
      Merge tag 'powerpc-6.4-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · 9455b4b6
      Linus Torvalds authored
      Pull powerpc fixes from Michael Ellerman:
      
       - Fix link errors in new aes-gcm-p10 code when built-in with other
         drivers
      
       - Limit number of TCEs passed to H_STUFF_TCE hcall as per spec
      
       - Use KSYM_NAME_LEN in xmon array size to avoid possible OOB write
      
      Thanks to Gaurav Batra and Maninder Singh Vishal Chourasia.
      
      * tag 'powerpc-6.4-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
        powerpc/xmon: Use KSYM_NAME_LEN in array size
        powerpc/iommu: Limit number of TCEs to 512 for H_STUFF_TCE hcall
        powerpc/crypto: Fix aes-gcm-p10 link errors
      9455b4b6
  8. 03 Jun, 2023 3 commits
    • Paolo Bonzini's avatar
      Merge tag 'kvm-x86-fixes-6.4' of https://github.com/kvm-x86/linux into HEAD · f211b450
      Paolo Bonzini authored
      KVM x86 fixes for 6.4
      
       - Fix a memslot lookup bug in the NX recovery thread that could
         theoretically let userspace bypass the NX hugepage mitigation
      
       - Fix a s/BLOCKING/PENDING bug in SVM's vNMI support
      
       - Account exit stats for fastpath VM-Exits that never leave the super
         tight run-loop
      
       - Fix an out-of-bounds bug in the optimized APIC map code, and add a
         regression test for the race.
      f211b450
    • Paolo Bonzini's avatar
      Merge tag 'kvmarm-fixes-6.4-3' of... · 49661a52
      Paolo Bonzini authored
      Merge tag 'kvmarm-fixes-6.4-3' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD
      
      KVM/arm64 fixes for 6.4, take #3
      
      - Fix the reported address of a watchpoint forwarded to userspace
      
      - Fix the freeing of the root of stage-2 page tables
      
      - Stop creating spurious PMU events to perform detection of the
        default PMU and use the existing PMU list instead.
      49661a52
    • Paolo Bonzini's avatar
      Merge tag 'kvmarm-fixes-6.4-2' of... · 26f31498
      Paolo Bonzini authored
      Merge tag 'kvmarm-fixes-6.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD
      
      KVM/arm64 fixes for 6.4, take #2
      
      - Address some fallout of the locking rework, this time affecting
        the way the vgic is configured
      
      - Fix an issue where the page table walker frees a subtree and
        then proceeds with walking what it has just freed...
      
      - Check that a given PA donated to the gues is actually memory
        (only affecting pKVM)
      
      - Correctly handle MTE CMOs by Set/Way
      26f31498