Skip to content
  1. Sep 06, 2023
  2. Jul 29, 2023
    • Matthew Wilcox (Oracle)'s avatar
      XArray: Do not return sibling entries from xa_load() · cbc02854
      Matthew Wilcox (Oracle) authored
      
      
      It is possible for xa_load() to observe a sibling entry pointing to
      another sibling entry.  An example:
      
      Thread A:		Thread B:
      			xa_store_range(xa, entry, 188, 191, gfp);
      xa_load(xa, 191);
      entry = xa_entry(xa, node, 63);
      [entry is a sibling of 188]
      			xa_store_range(xa, entry, 184, 191, gfp);
      if (xa_is_sibling(entry))
      offset = xa_to_sibling(entry);
      entry = xa_entry(xas->xa, node, offset);
      [entry is now a sibling of 184]
      
      It is sufficient to go around this loop until we hit a non-sibling entry.
      Sibling entries always point earlier in the node, so we are guaranteed
      to terminate this search.
      
      Signed-off-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
      Fixes: 6b24ca4a ("mm: Use multi-index entries in the page cache")
      Cc: stable@vger.kernel.org
      cbc02854
    • Linus Torvalds's avatar
      Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux · f837f0a3
      Linus Torvalds authored
      Pull arm64 fixes from Catalin Marinas:
      
       - A couple of SME updates for recent fixes (one of which went to
         stable): reverting the flushing of the SME hardware state along with
         the thread flushing and making sure we have the correct vector length
         before reallocating.
      
       - An ACPI/IORT fix to avoid skipping ID mappings whose "number of IDs"
         is 0 (the spec reports the number of IDs in the mapping range minus
         1).
      
      * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
        ACPI/IORT: Remove erroneous id_count check in iort_node_get_rmr_info()
        arm64/sme: Set new vector length before reallocating
        arm64/fpsimd: Don't flush SME register hardware state along with thread
      f837f0a3
    • Linus Torvalds's avatar
      Merge tag 'for-linus-6.5a-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip · 81eef890
      Linus Torvalds authored
      Pull xen fixes from Juergen Gross:
      
       - A fix for a performance problem in QubesOS, adding a way to drain the
         queue of grants experiencing delayed unmaps faster
      
       - A patch enabling the use of static event channels from user mode,
         which was omitted when introducing supporting static event channels
      
       - A fix for a problem where Xen related code didn't check properly for
         running in a Xen environment, resulting in a WARN splat
      
      * tag 'for-linus-6.5a-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
        xen: speed up grant-table reclaim
        xen/evtchn: Introduce new IOCTL to bind static evtchn
        xenbus: check xen_domain in xenbus_probe_initcall
      81eef890
    • Linus Torvalds's avatar
      Merge tag 'ceph-for-6.5-rc4' of https://github.com/ceph/ceph-client · e62e26d3
      Linus Torvalds authored
      Pull ceph fixes from Ilya Dryomov:
       "A patch to reduce the potential for erroneous RBD exclusive lock
        blocklisting (fencing) with a couple of prerequisites and a fixup to
        prevent metrics from being sent to the MDS even just once after that
        has been disabled by the user. All marked for stable"
      
      * tag 'ceph-for-6.5-rc4' of https://github.com/ceph/ceph-client:
        rbd: retrieve and check lock owner twice before blocklisting
        rbd: harden get_lock_owner_info() a bit
        rbd: make get_lock_owner_info() return a single locker or NULL
        ceph: never send metrics if disable_send_metrics is set
      e62e26d3
    • Linus Torvalds's avatar
      Merge tag '9p-fixes-6.5-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs · 28d79b74
      Linus Torvalds authored
      Pull 9p fixes from Eric Van Hensbergen:
       "Misc set of fixes for 9p.
      
        Most of these clean up warnings we've gotten out of compilation tools,
        but several of them were from inspection while hunting down a couple
        of regressions.
      
        The most important one is 75b39682 ("fs/9p: remove unnecessary and
        overrestrictive check") which caused a regression for some folks by
        restricting mmap in any case where writeback caches weren't enabled.
      
        Most of the other bugs caught via inspection were type mismatches"
      
      * tag '9p-fixes-6.5-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs:
        fs/9p: Remove unused extern declaration
        9p: remove dead stores (variable set again without being read)
        9p: virtio: skip incrementing unused variable
        9p: virtio: make sure 'offs' is initialized in zc_request
        9p: virtio: fix unlikely null pointer deref in handle_rerror
        9p: fix ignored return value in v9fs_dir_release
        fs/9p: remove unnecessary invalidate_inode_pages2
        fs/9p: fix type mismatch in file cache mode helper
        fs/9p: fix typo in comparison logic for cache mode
        fs/9p: remove unnecessary and overrestrictive check
        fs/9p: Fix a datatype used with V9FS_DIRECT_IO
      28d79b74
    • Linus Torvalds's avatar
      Merge tag 'block-6.5-2023-07-28' of git://git.kernel.dk/linux · 818680d1
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
       "A few fixes that should go into the current kernel release, mainly:
      
         - Set of fixes for dasd (Stefan)
      
         - Handle interruptible waits returning because of a signal for ublk
           (Ming)"
      
      * tag 'block-6.5-2023-07-28' of git://git.kernel.dk/linux:
        ublk: return -EINTR if breaking from waiting for existed users in DEL_DEV
        ublk: fail to recover device if queue setup is interrupted
        ublk: fail to start device if queue setup is interrupted
        block: Fix a source code comment in include/uapi/linux/blkzoned.h
        s390/dasd: print copy pair message only for the correct error
        s390/dasd: fix hanging device after request requeue
        s390/dasd: use correct number of retries for ERP requests
        s390/dasd: fix hanging device after quiesce/resume
      818680d1
    • Linus Torvalds's avatar
      Merge tag 'io_uring-6.5-2023-07-28' of git://git.kernel.dk/linux · 9c655058
      Linus Torvalds authored
      Pull io_uring fix from Jens Axboe:
       "Just a single tweak to a patch from last week, to avoid having idle
        cqring waits be attributed as iowait"
      
      * tag 'io_uring-6.5-2023-07-28' of git://git.kernel.dk/linux:
        io_uring: gate iowait schedule on having pending requests
      9c655058
    • Linus Torvalds's avatar
      Merge tag 'for-linus-iommufd' of git://git.kernel.org/pub/scm/linux/kernel/git/jgg/iommufd · 0299a13a
      Linus Torvalds authored
      Pull iommufd fixes from Jason Gunthorpe:
       "Two user triggerable problems:
      
         - Syzkaller found a way to trigger a WARN_ON and leak memory by
           racing destroy with other actions
      
         - There is still a bug in the "batch carry" stuff that gets invoked
           for complex cases with accesses and unmapping of huge pages. The
           test suite found this (triggers rarely)"
      
      * tag 'for-linus-iommufd' of git://git.kernel.org/pub/scm/linux/kernel/git/jgg/iommufd:
        iommufd: Set end correctly when doing batch carry
        iommufd: IOMMUFD_DESTROY should not increase the refcount
      0299a13a
    • Linus Torvalds's avatar
      Merge tag 'for-6.5/dm-fixes' of... · c75981a1
      Linus Torvalds authored
      Merge tag 'for-6.5/dm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm
      
      Pull device mapper fixes from Mike Snitzer:
      
       - Fix double free on memory allocation failure in DM integrity target's
         integrity_recalc()
      
       - Fix locking in DM raid target's raid_ctr() and around call to
         md_stop()
      
       - Fix DM cache target's cleaner policy to always allow work to be
         queued for writeback; even if cache isn't idle.
      
      * tag 'for-6.5/dm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
        dm cache policy smq: ensure IO doesn't prevent cleaner policy progress
        dm raid: protect md_stop() with 'reconfig_mutex'
        dm raid: clean up four equivalent goto tags in raid_ctr()
        dm raid: fix missing reconfig_mutex unlock in raid_ctr() error paths
        dm integrity: fix double free on memory allocation failure
      c75981a1
    • Linus Torvalds's avatar
      Merge tag 'sound-6.5-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 6fb9f7f8
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "A collection of device-specific small fixes such as ASoC Realtek codec
        fixes for PM issues, ASoC nau8821 quirk additions, and usual HD- and
        USB-audio quirks"
      
      * tag 'sound-6.5-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ALSA: hda/realtek: Support ASUS G713PV laptop
        ALSA: usb-audio: Update for native DSD support quirks
        ALSA: usb-audio: Add quirk for Microsoft Modern Wireless Headset
        ALSA: hda/relatek: Enable Mute LED on HP 250 G8
        ASoC: atmel: Fix the 8K sample parameter in I2SC master
        ASoC: rt711-sdca: fix for JD event handling in ClockStop Mode0
        ASoC: rt711: fix for JD event handling in ClockStop Mode0
        ASoC: rt722-sdca: fix for JD event handling in ClockStop Mode0
        ASoC: rt712-sdca: fix for JD event handling in ClockStop Mode0
        ASoc: codecs: ES8316: Fix DMIC config
        ASoC: rt5682-sdw: fix for JD event handling in ClockStop Mode0
        ASoC: wm8904: Fill the cache for WM8904_ADC_TEST_0 register
        ASoC: nau8821: Add DMI quirk mechanism for active-high jack-detect
        ASoC: da7219: Check for failure reading AAD IRQ events
        ASoC: da7219: Flush pending AAD IRQ when suspending
        ALSA: seq: remove redundant unsigned comparison to zero
        ASoC: fsl_spdif: Silence output on stop
      6fb9f7f8
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2023-07-28' of git://anongit.freedesktop.org/drm/drm · 17bf3df9
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "Regular scheduled fixes, msm and amdgpu leading the way, with some
        i915 and a single misc fbdev, all seems fine.
      
        fbdev:
         - remove unused function
      
        amdgpu:
         - gfxhub partition fix
         - Fix error handling in psp_sw_init()
         - SMU13 fix
         - DCN 3.1 fix
         - DCN 3.2 fix
         - Fix for display PHY programming sequence
         - DP MST error handling fix
         - GFX 9.4.3 fix
      
        amdkfd:
         - GFX11 trap handling fix
      
        i915:
         - Use shmem for dpt objects
         - Fix an error handling path in igt_write_huge()
      
        msm:
         - display:
            - Fix to correct the UBWC programming for decoder version 4.3 seen
              on SM8550
            - Add the missing flush and fetch bits for DMA4 and DMA5 SSPPs.
            - Fix to drop the unused dpu_core_perf_data_bus_id enum from the
              code
            - Drop the unused dsi_phy_14nm_17mA_regulators from QCM 2290 DSI
              cfg.
         - gpu:
            - Fix warn splat for newer devices without revn
            - Remove name/revn for a690.. we shouldn't be populating these for
              newer devices, for consistency, but it slipped through review
            - Fix a6xx gpu snapshot BINDLESS_DATA size (was listed in bytes
              instead of dwords, causing AHB faults on a6xx gen4/a660-family)
            - Disallow submit with fence id 0"
      
      * tag 'drm-fixes-2023-07-28' of git://anongit.freedesktop.org/drm/drm: (22 commits)
        drm/msm: Disallow submit with fence id 0
        drm/amdgpu: Restore HQD persistent state register
        drm/amd/display: Unlock on error path in dm_handle_mst_sideband_msg_ready_event()
        drm/amd/display: Exit idle optimizations before attempt to access PHY
        drm/amd/display: Don't apply FIFO resync W/A if rdivider = 0
        drm/amd/display: Guard DCN31 PHYD32CLK logic against chip family
        drm/amd/smu: use AverageGfxclkFrequency* to replace previous GFX Curr Clock
        drm/amd: Fix an error handling mistake in psp_sw_init()
        drm/amdgpu: Fix infinite loop in gfxhub_v1_2_xcc_gart_enable (v2)
        drm/amdkfd: fix trap handling work around for debugging
        drm/fb-helper: Remove unused inline function drm_fb_helper_defio_init()
        drm/i915: Fix an error handling path in igt_write_huge()
        drm/i915/dpt: Use shmem for dpt objects
        drm/msm: Fix hw_fence error path cleanup
        drm/msm: Fix IS_ERR_OR_NULL() vs NULL check in a5xx_submit_in_rb()
        drm/msm/adreno: Fix snapshot BINDLESS_DATA size
        drm/msm/a690: Remove revn and name
        drm/msm/adreno: Fix warn splat for devices without revn
        drm/msm/dsi: Drop unused regulators from QCM2290 14nm DSI PHY config
        drm/msm/dpu: drop enum dpu_core_perf_data_bus_id
        ...
      17bf3df9
    • Linus Torvalds's avatar
      Merge tag 'cxl-fixes-6.5-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl · f24767ca
      Linus Torvalds authored
      Pull cxl fixes from Vishal Verma:
      
       - Update MAINTAINERS for cxl
      
       - A few static analysis fixes
      
       - Fix a Kconfig dependency for CONFIG_FW_LOADER
      
      * tag 'cxl-fixes-6.5-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl:
        tools/testing/cxl: Remove unused SZ_512G macro
        cxl/acpi: Return 'rc' instead of '0' in cxl_parse_cfmws()
        cxl/acpi: Fix a use-after-free in cxl_parse_cfmws()
        cxl: Update MAINTAINERS
        cxl/mem: Fix a double shift bug
        cxl: fix CONFIG_FW_LOADER dependency
      f24767ca
    • Mike Rapoport (IBM)'s avatar
      Revert "mm,memblock: reset memblock.reserved to system init state to prevent UAF" · c442a957
      Mike Rapoport (IBM) authored
      This reverts commit 9e46e4dc
      
      .
      
      kbuild reports a warning in memblock_remove_region() because of a false
      positive caused by partial reset of the memblock state.
      
      Doing the full reset will remove the false positives, but will allow
      late use of memblock_free() to go unnoticed, so it is better to revert
      the offending commit.
      
         WARNING: CPU: 0 PID: 1 at mm/memblock.c:352 memblock_remove_region (kbuild/src/x86_64/mm/memblock.c:352 (discriminator 1))
         Modules linked in:
         CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.5.0-rc3-00001-g9e46e4dcd9d6 #2
         RIP: 0010:memblock_remove_region (kbuild/src/x86_64/mm/memblock.c:352 (discriminator 1))
         Call Trace:
           memblock_discard (kbuild/src/x86_64/mm/memblock.c:383)
           page_alloc_init_late (kbuild/src/x86_64/include/linux/find.h:208 kbuild/src/x86_64/include/linux/nodemask.h:266 kbuild/src/x86_64/mm/mm_init.c:2405)
           kernel_init_freeable (kbuild/src/x86_64/init/main.c:1325 kbuild/src/x86_64/init/main.c:1546)
           kernel_init (kbuild/src/x86_64/init/main.c:1439)
           ret_from_fork (kbuild/src/x86_64/arch/x86/kernel/process.c:145)
           ret_from_fork_asm (kbuild/src/x86_64/arch/x86/entry/entry_64.S:298)
      
      Reported-by: default avatarkernel test robot <oliver.sang@intel.com>
      Closes: https://lore.kernel.org/oe-lkp/202307271656.447aa17e-oliver.sang@intel.com
      
      
      Signed-off-by: default avatar"Mike Rapoport (IBM)" <rppt@kernel.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      c442a957
    • Jann Horn's avatar
      mm/mempolicy: Take VMA lock before replacing policy · 6c21e066
      Jann Horn authored
      
      
      mbind() calls down into vma_replace_policy() without taking the per-VMA
      locks, replaces the VMA's vma->vm_policy pointer, and frees the old
      policy.  That's bad; a concurrent page fault might still be using the
      old policy (in vma_alloc_folio()), resulting in use-after-free.
      
      Normally this will manifest as a use-after-free read first, but it can
      result in memory corruption, including because vma_alloc_folio() can
      call mpol_cond_put() on the freed policy, which conditionally changes
      the policy's refcount member.
      
      This bug is specific to CONFIG_NUMA, but it does also affect non-NUMA
      systems as long as the kernel was built with CONFIG_NUMA.
      
      Signed-off-by: default avatarJann Horn <jannh@google.com>
      Reviewed-by: default avatarSuren Baghdasaryan <surenb@google.com>
      Fixes: 5e31275c
      
       ("mm: add per-VMA lock and helper functions to control it")
      Cc: stable@kernel.org
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      6c21e066
  3. Jul 28, 2023
  4. Jul 27, 2023
    • Jason Gunthorpe's avatar
      iommufd: Set end correctly when doing batch carry · b7c822fa
      Jason Gunthorpe authored
      Even though the test suite covers this it somehow became obscured that
      this wasn't working.
      
      The test iommufd_ioas.mock_domain.access_domain_destory would blow up
      rarely.
      
      end should be set to 1 because this just pushed an item, the carry, to the
      pfns list.
      
      Sometimes the test would blow up with:
      
        BUG: kernel NULL pointer dereference, address: 0000000000000000
        #PF: supervisor read access in kernel mode
        #PF: error_code(0x0000) - not-present page
        PGD 0 P4D 0
        Oops: 0000 [#1] SMP
        CPU: 5 PID: 584 Comm: iommufd Not tainted 6.5.0-rc1-dirty #1236
        Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
        RIP: 0010:batch_unpin+0xa2/0x100 [iommufd]
        Code: 17 48 81 fe ff ff 07 00 77 70 48 8b 15 b7 be 97 e2 48 85 d2 74 14 48 8b 14 fa 48 85 d2 74 0b 40 0f b6 f6 48 c1 e6 04 48 01 f2 <48> 8b 3a 48 c1 e0 06 89 ca 48 89 de 48 83 e7 f0 48 01 c7 e8 96 dc
        RSP: 0018:ffffc90001677a58 EFLAGS: 00010246
        RAX: 00007f7e2646f000 RBX: 0000000000000000 RCX: 0000000000000001
        RDX: 0000000000000000 RSI: 00000000fefc4c8d RDI: 0000000000fefc4c
        RBP: ffffc90001677a80 R08: 0000000000000048 R09: 0000000000000200
        R10: 0000000000030b98 R11: ffffffff81f3bb40 R12: 0000000000000001
        R13: ffff888101f75800 R14: ffffc90001677ad0 R15: 00000000000001fe
        FS:  00007f9323679740(0000) GS:ffff8881ba540000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        CR2: 0000000000000000 CR3: 0000000105ede003 CR4: 00000000003706a0
        DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
        DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
        Call Trace:
         <TASK>
         ? show_regs+0x5c/0x70
         ? __die+0x1f/0x60
         ? page_fault_oops+0x15d/0x440
         ? lock_release+0xbc/0x240
         ? exc_page_fault+0x4a4/0x970
         ? asm_exc_page_fault+0x27/0x30
         ? batch_unpin+0xa2/0x100 [iommufd]
         ? batch_unpin+0xba/0x100 [iommufd]
         __iopt_area_unfill_domain+0x198/0x430 [iommufd]
         ? __mutex_lock+0x8c/0xb80
         ? __mutex_lock+0x6aa/0xb80
         ? xa_erase+0x28/0x30
         ? iopt_table_remove_domain+0x162/0x320 [iommufd]
         ? lock_release+0xbc/0x240
         iopt_area_unfill_domain+0xd/0x10 [iommufd]
         iopt_table_remove_domain+0x195/0x320 [iommufd]
         iommufd_hw_pagetable_destroy+0xb3/0x110 [iommufd]
         iommufd_object_destroy_user+0x8e/0xf0 [iommufd]
         iommufd_device_detach+0xc5/0x140 [iommufd]
         iommufd_selftest_destroy+0x1f/0x70 [iommufd]
         iommufd_object_destroy_user+0x8e/0xf0 [iommufd]
         iommufd_destroy+0x3a/0x50 [iommufd]
         iommufd_fops_ioctl+0xfb/0x170 [iommufd]
         __x64_sys_ioctl+0x40d/0x9a0
         do_syscall_64+0x3c/0x80
         entry_SYSCALL_64_after_hwframe+0x46/0xb0
      
      Link: https://lore.kernel.org/r/3-v1-85aacb2af554+bc-iommufd_syz3_jgg@nvidia.com
      Cc: <stable@vger.kernel.org>
      Fixes: f394576e
      
       ("iommufd: PFN handling for iopt_pages")
      Reviewed-by: default avatarKevin Tian <kevin.tian@intel.com>
      Tested-by: default avatarNicolin Chen <nicolinc@nvidia.com>
      Reported-by: default avatarNicolin Chen <nicolinc@nvidia.com>
      Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
      b7c822fa
    • Jason Gunthorpe's avatar
      iommufd: IOMMUFD_DESTROY should not increase the refcount · 99f98a7c
      Jason Gunthorpe authored
      syzkaller found a race where IOMMUFD_DESTROY increments the refcount:
      
             obj = iommufd_get_object(ucmd->ictx, cmd->id, IOMMUFD_OBJ_ANY);
             if (IS_ERR(obj))
                     return PTR_ERR(obj);
             iommufd_ref_to_users(obj);
             /* See iommufd_ref_to_users() */
             if (!iommufd_object_destroy_user(ucmd->ictx, obj))
      
      As part of the sequence to join the two existing primitives together.
      
      Allowing the refcount the be elevated without holding the destroy_rwsem
      violates the assumption that all temporary refcount elevations are
      protected by destroy_rwsem. Racing IOMMUFD_DESTROY with
      iommufd_object_destroy_user() will cause spurious failures:
      
        WARNING: CPU: 0 PID: 3076 at drivers/iommu/iommufd/device.c:477 iommufd_access_destroy+0x18/0x20 drivers/iommu/iommufd/device.c:478
        Modules linked in:
        CPU: 0 PID: 3076 Comm: syz-executor.0 Not tainted 6.3.0-rc1-syzkaller #0
        Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/03/2023
        RIP: 0010:iommufd_access_destroy+0x18/0x20 drivers/iommu/iommufd/device.c:477
        Code: e8 3d 4e 00 00 84 c0 74 01 c3 0f 0b c3 0f 1f 44 00 00 f3 0f 1e fa 48 89 fe 48 8b bf a8 00 00 00 e8 1d 4e 00 00 84 c0 74 01 c3 <0f> 0b c3 0f 1f 44 00 00 41 57 41 56 41 55 4c 8d ae d0 00 00 00 41
        RSP: 0018:ffffc90003067e08 EFLAGS: 00010246
        RAX: 0000000000000000 RBX: ffff888109ea0300 RCX: 0000000000000000
        RDX: 0000000000000001 RSI: 0000000000000000 RDI: 00000000ffffffff
        RBP: 0000000000000004 R08: 0000000000000000 R09: ffff88810bbb3500
        R10: ffff88810bbb3e48 R11: 0000000000000000 R12: ffffc90003067e88
        R13: ffffc90003067ea8 R14: ffff888101249800 R15: 00000000fffffffe
        FS:  00007ff7254fe6c0(0000) GS:ffff888237c00000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        CR2: 0000555557262da8 CR3: 000000010a6fd000 CR4: 0000000000350ef0
        Call Trace:
         <TASK>
         iommufd_test_create_access drivers/iommu/iommufd/selftest.c:596 [inline]
         iommufd_test+0x71c/0xcf0 drivers/iommu/iommufd/selftest.c:813
         iommufd_fops_ioctl+0x10f/0x1b0 drivers/iommu/iommufd/main.c:337
         vfs_ioctl fs/ioctl.c:51 [inline]
         __do_sys_ioctl fs/ioctl.c:870 [inline]
         __se_sys_ioctl fs/ioctl.c:856 [inline]
         __x64_sys_ioctl+0x84/0xc0 fs/ioctl.c:856
         do_syscall_x64 arch/x86/entry/common.c:50 [inline]
         do_syscall_64+0x38/0x80 arch/x86/entry/common.c:80
         entry_SYSCALL_64_after_hwframe+0x63/0xcd
      
      The solution is to not increment the refcount on the IOMMUFD_DESTROY path
      at all. Instead use the xa_lock to serialize everything. The refcount
      check == 1 and xa_erase can be done under a single critical region. This
      avoids the need for any refcount incrementing.
      
      It has the downside that if userspace races destroy with other operations
      it will get an EBUSY instead of waiting, but this is kind of racing is
      already dangerous.
      
      Fixes: 2ff4bed7 ("iommufd: File descriptor, context, kconfig and makefiles")
      Link: https://lore.kernel.org/r/2-v1-85aacb2af554+bc-iommufd_syz3_jgg@nvidia.com
      
      
      Reviewed-by: default avatarKevin Tian <kevin.tian@intel.com>
      Reported-by: default avatar <syzbot+7574ebfe589049630608@syzkaller.appspotmail.com>
      Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
      99f98a7c
    • Ming Lei's avatar
      ublk: return -EINTR if breaking from waiting for existed users in DEL_DEV · 3e9dce80
      Ming Lei authored
      If user interrupts wait_event_interruptible() in ublk_ctrl_del_dev(),
      return -EINTR and let user know what happens.
      
      Fixes: 0abe39de
      
       ("block: ublk: improve handling device deletion")
      Reported-by: default avatarStefano Garzarella <sgarzare@redhat.com>
      Signed-off-by: default avatarMing Lei <ming.lei@redhat.com>
      Reviewed-by: default avatarStefano Garzarella <sgarzare@redhat.com>
      Link: https://lore.kernel.org/r/20230726144502.566785-4-ming.lei@redhat.com
      
      
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      3e9dce80
    • Ming Lei's avatar
      ublk: fail to recover device if queue setup is interrupted · 0c0cbd4e
      Ming Lei authored
      In ublk_ctrl_end_recovery(), if wait_for_completion_interruptible() is
      interrupted by signal, queues aren't setup successfully yet, so we
      have to fail UBLK_CMD_END_USER_RECOVERY, otherwise kernel oops can be
      triggered.
      
      Fixes: c732a852
      
       ("ublk_drv: add START_USER_RECOVERY and END_USER_RECOVERY support")
      Reported-by: default avatarStefano Garzarella <sgarzare@redhat.com>
      Signed-off-by: default avatarMing Lei <ming.lei@redhat.com>
      Reviewed-by: default avatarStefano Garzarella <sgarzare@redhat.com>
      Link: https://lore.kernel.org/r/20230726144502.566785-3-ming.lei@redhat.com
      
      
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      0c0cbd4e
    • Ming Lei's avatar
      ublk: fail to start device if queue setup is interrupted · 53e7d08f
      Ming Lei authored
      In ublk_ctrl_start_dev(), if wait_for_completion_interruptible() is
      interrupted by signal, queues aren't setup successfully yet, so we
      have to fail UBLK_CMD_START_DEV, otherwise kernel oops can be triggered.
      
      Reported by German when working on qemu-storage-deamon which requires
      single thread ublk daemon.
      
      Fixes: 71f28f31
      
       ("ublk_drv: add io_uring based userspace block driver")
      Reported-by: default avatarGerman Maglione <gmaglione@redhat.com>
      Signed-off-by: default avatarMing Lei <ming.lei@redhat.com>
      Link: https://lore.kernel.org/r/20230726144502.566785-2-ming.lei@redhat.com
      
      
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      53e7d08f
    • Takashi Iwai's avatar
      Merge tag 'asoc-fix-v6.5-rc3' of... · 3b9adfbb
      Takashi Iwai authored
      Merge tag 'asoc-fix-v6.5-rc3' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
      
      ASoC: Fixes for v6.5
      
      A collection of device specific fixes, none particularly remarkable.
      There's a set of repetitive fixes for the RealTek drivers fixing an
      issue with suspend that was replicated in multiple drivers.
      3b9adfbb
    • Fedor Pchelkin's avatar
      tipc: stop tipc crypto on failure in tipc_node_create · de52e173
      Fedor Pchelkin authored
      If tipc_link_bc_create() fails inside tipc_node_create() for a newly
      allocated tipc node then we should stop its tipc crypto and free the
      resources allocated with a call to tipc_crypto_start().
      
      As the node ref is initialized to one to that point, just put the ref on
      tipc_link_bc_create() error case that would lead to tipc_node_free() be
      eventually executed and properly clean the node and its crypto resources.
      
      Found by Linux Verification Center (linuxtesting.org).
      
      Fixes: cb8092d7
      
       ("tipc: move bc link creation back to tipc_node_create")
      Suggested-by: default avatarXin Long <lucien.xin@gmail.com>
      Signed-off-by: default avatarFedor Pchelkin <pchelkin@ispras.ru>
      Reviewed-by: default avatarXin Long <lucien.xin@gmail.com>
      Link: https://lore.kernel.org/r/20230725214628.25246-1-pchelkin@ispras.ru
      
      
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      de52e173
    • Kuniyuki Iwashima's avatar
      af_unix: Terminate sun_path when bind()ing pathname socket. · ecb4534b
      Kuniyuki Iwashima authored
      kernel test robot reported slab-out-of-bounds access in strlen(). [0]
      
      Commit 06d4c8a8 ("af_unix: Fix fortify_panic() in unix_bind_bsd().")
      removed unix_mkname_bsd() call in unix_bind_bsd().
      
      If sunaddr->sun_path is not terminated by user and we don't enable
      CONFIG_INIT_STACK_ALL_ZERO=y, strlen() will do the out-of-bounds access
      during file creation.
      
      Let's go back to strlen()-with-sockaddr_storage way and pack all 108
      trickiness into unix_mkname_bsd() with bold comments.
      
      [0]:
      BUG: KASAN: slab-out-of-bounds in strlen (lib/string.c:?)
      Read of size 1 at addr ffff000015492777 by task fortify_strlen_/168
      
      CPU: 0 PID: 168 Comm: fortify_strlen_ Not tainted 6.5.0-rc1-00333-g3329b603ebba #16
      Hardware name: linux,dummy-virt (DT)
      Call trace:
       dump_backtrace (arch/arm64/kernel/stacktrace.c:235)
       show_stack (arch/arm64/kernel/stacktrace.c:242)
       dump_stack_lvl (lib/dump_stack.c:107)
       print_report (mm/kasan/report.c:365 mm/kasan/report.c:475)
       kasan_report (mm/kasan/report.c:590)
       __asan_report_load1_noabort (mm/kasan/report_generic.c:378)
       strlen (lib/string.c:?)
       getname_kernel (./include/linux/fortify-string.h:? fs/namei.c:226)
       kern_path_create (fs/namei.c:3926)
       unix_bind (net/unix/af_unix.c:1221 net/unix/af_unix.c:1324)
       __sys_bind (net/socket.c:1792)
       __arm64_sys_bind (net/socket.c:1801)
       invoke_syscall (arch/arm64/kernel/syscall.c:? arch/arm64/kernel/syscall.c:52)
       el0_svc_common (./include/linux/thread_info.h:127 arch/arm64/kernel/syscall.c:147)
       do_el0_svc (arch/arm64/kernel/syscall.c:189)
       el0_svc (./arch/arm64/include/asm/daifflags.h:28 arch/arm64/kernel/entry-common.c:133 arch/arm64/kernel/entry-common.c:144 arch/arm64/kernel/entry-common.c:648)
       el0t_64_sync_handler (arch/arm64/kernel/entry-common.c:?)
       el0t_64_sync (arch/arm64/kernel/entry.S:591)
      
      Allocated by task 168:
       kasan_set_track (mm/kasan/common.c:45 mm/kasan/common.c:52)
       kasan_save_alloc_info (mm/kasan/generic.c:512)
       __kasan_kmalloc (mm/kasan/common.c:383)
       __kmalloc (mm/slab_common.c:? mm/slab_common.c:998)
       unix_bind (net/unix/af_unix.c:257 net/unix/af_unix.c:1213 net/unix/af_unix.c:1324)
       __sys_bind (net/socket.c:1792)
       __arm64_sys_bind (net/socket.c:1801)
       invoke_syscall (arch/arm64/kernel/syscall.c:? arch/arm64/kernel/syscall.c:52)
       el0_svc_common (./include/linux/thread_info.h:127 arch/arm64/kernel/syscall.c:147)
       do_el0_svc (arch/arm64/kernel/syscall.c:189)
       el0_svc (./arch/arm64/include/asm/daifflags.h:28 arch/arm64/kernel/entry-common.c:133 arch/arm64/kernel/entry-common.c:144 arch/arm64/kernel/entry-common.c:648)
       el0t_64_sync_handler (arch/arm64/kernel/entry-common.c:?)
       el0t_64_sync (arch/arm64/kernel/entry.S:591)
      
      The buggy address belongs to the object at ffff000015492700
       which belongs to the cache kmalloc-128 of size 128
      The buggy address is located 0 bytes to the right of
       allocated 119-byte region [ffff000015492700, ffff000015492777)
      
      The buggy address belongs to the physical page:
      page:00000000aeab52ba refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x55492
      anon flags: 0x3fffc0000000200(slab|node=0|zone=0|lastcpupid=0xffff)
      page_type: 0xffffffff()
      raw: 03fffc0000000200 ffff0000084018c0 fffffc00003d0e00 0000000000000005
      raw: 0000000000000000 0000000080100010 00000001ffffffff 0000000000000000
      page dumped because: kasan: bad access detected
      
      Memory state around the buggy address:
       ffff000015492600: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
       ffff000015492680: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
      >ffff000015492700: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 fc
                                                                   ^
       ffff000015492780: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
       ffff000015492800: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      
      Fixes: 06d4c8a8
      
       ("af_unix: Fix fortify_panic() in unix_bind_bsd().")
      Reported-by: default avatarkernel test robot <oliver.sang@intel.com>
      Closes: https://lore.kernel.org/netdev/202307262110.659e5e8-oliver.sang@intel.com/
      
      
      Signed-off-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
      Reviewed-by: default avatarKees Cook <keescook@chromium.org>
      Link: https://lore.kernel.org/r/20230726190828.47874-1-kuniyu@amazon.com
      
      
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      ecb4534b
    • Yuanjun Gong's avatar
      tipc: check return value of pskb_trim() · e46e06ff
      Yuanjun Gong authored
      goto free_skb if an unexpected result is returned by pskb_tirm()
      in tipc_crypto_rcv_complete().
      
      Fixes: fc1b6d6d
      
       ("tipc: introduce TIPC encryption & authentication")
      Signed-off-by: default avatarYuanjun Gong <ruc_gongyuanjun@163.com>
      Reviewed-by: default avatarTung Nguyen <tung.q.nguyen@dektech.com.au>
      Link: https://lore.kernel.org/r/20230725064810.5820-1-ruc_gongyuanjun@163.com
      
      
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      e46e06ff
    • Yuanjun Gong's avatar
      benet: fix return value check in be_lancer_xmit_workarounds() · 5c85f706
      Yuanjun Gong authored
      in be_lancer_xmit_workarounds(), it should go to label 'tx_drop'
      if an unexpected value is returned by pskb_trim().
      
      Fixes: 93040ae5
      
       ("be2net: Fix to trim skb for padded vlan packets to workaround an ASIC Bug")
      Signed-off-by: default avatarYuanjun Gong <ruc_gongyuanjun@163.com>
      Link: https://lore.kernel.org/r/20230725032726.15002-1-ruc_gongyuanjun@163.com
      
      
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      5c85f706
    • Pavel Asyutchenko's avatar
      ALSA: hda/realtek: Support ASUS G713PV laptop · 8019a4ab
      Pavel Asyutchenko authored
      
      
      This laptop has CS35L41 amp connected via I2C.
      
      With this patch speakers begin to work if the
      missing _DSD properties are added to ACPI tables.
      
      Signed-off-by: default avatarPavel Asyutchenko <svenpavel@gmail.com>
      Cc: <stable@vger.kernel.org>
      Link: https://lore.kernel.org/r/20230726223732.20775-1-svenpavel@gmail.com
      
      
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      8019a4ab
    • Demi Marie Obenour's avatar
      xen: speed up grant-table reclaim · c04e9894
      Demi Marie Obenour authored
      
      
      When a grant entry is still in use by the remote domain, Linux must put
      it on a deferred list.  Normally, this list is very short, because
      the PV network and block protocols expect the backend to unmap the grant
      first.  However, Qubes OS's GUI protocol is subject to the constraints
      of the X Window System, and as such winds up with the frontend unmapping
      the window first.  As a result, the list can grow very large, resulting
      in a massive memory leak and eventual VM freeze.
      
      To partially solve this problem, make the number of entries that the VM
      will attempt to free at each iteration tunable.  The default is still
      10, but it can be overridden via a module parameter.
      
      This is Cc: stable because (when combined with appropriate userspace
      changes) it fixes a severe performance and stability problem for Qubes
      OS users.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarDemi Marie Obenour <demi@invisiblethingslab.com>
      Reviewed-by: default avatarJuergen Gross <jgross@suse.com>
      Link: https://lore.kernel.org/r/20230726165354.1252-1-demi@invisiblethingslab.com
      
      
      Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
      c04e9894
    • Jakub Kicinski's avatar
      Merge tag 'nf-23-07-26' of https://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf · ff0df208
      Jakub Kicinski authored
      Florian Westphal says:
      
      ====================
      netfilter fixes for net
      
      1. On-demand overlap detection in 'rbtree' set can cause memory leaks.
         This is broken since 6.2.
      
      2. An earlier fix in 6.4 to address an imbalance in refcounts during
         transaction error unwinding was incomplete, from Pablo Neira.
      
      3. Disallow adding a rule to a deleted chain, also from Pablo.
         Broken since 5.9.
      
      * tag 'nf-23-07-26' of https://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf:
        netfilter: nf_tables: disallow rule addition to bound chain via NFTA_RULE_CHAIN_ID
        netfilter: nf_tables: skip immediate deactivate in _PREPARE_ERROR
        netfilter: nft_set_rbtree: fix overlap expiration walk
      ====================
      
      Link: https://lore.kernel.org/r/20230726152524.26268-1-fw@strlen.de
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      ff0df208