Логотип exploitDog
Консоль
Логотип exploitDog

exploitDog

suse-cvrf логотип

openSUSE-SU-2026:20965-1

Опубликовано: 15 июн. 2026
Источник: suse-cvrf

Описание

Security update for the Linux Kernel

The SUSE Linux Enterprise 16.0 kernel was updated to fix various security issues

The following security issues were fixed:

  • CVE-2026-23254: net: gro: fix outer network offset (bsc#1259884).
  • CVE-2026-23303: smb: client: Don't log plaintext credentials in cifs_set_cifscreds (bsc#1260502).
  • CVE-2026-23327: cxl/mbox: validate payload size before accessing contents in cxl_payload_from_user_allowed() (bsc#1260548).
  • CVE-2026-23438: net: mvpp2: guard flow control update with global_tx_fc in buffer switching (bsc#1261619).
  • CVE-2026-31396: net: macb: fix use-after-free access to PTP clock (bsc#1261791).
  • CVE-2026-31401: HID: bpf: prevent buffer overflow in hid_hw_request (bsc#1261603).
  • CVE-2026-31446: ext4: fix use-after-free in update_super_work when racing with umount (bsc#1262619).
  • CVE-2026-31448: ext4: avoid infinite loops caused by residual data (bsc#1262622).
  • CVE-2026-31454: xfs: save ailp before dropping the AIL lock in push callbacks (bsc#1262624).
  • CVE-2026-31455: xfs: stop reclaim before pushing AIL during unmount (bsc#1262615).
  • CVE-2026-31518: esp: fix skb leak with espintcp and async crypto (bsc#1262606).
  • CVE-2026-31546: net: bonding: fix NULL deref in bond_debug_rlb_hash_show (bsc#1263006).
  • CVE-2026-31556: xfs: scrub: unlock dquot before early return in quota scrub (bsc#1263062).
  • CVE-2026-31562: drm/mediatek: dsi: Store driver data before invoking mipi_dsi_host_register (bsc#1263058).
  • CVE-2026-31584: media: mediatek: vcodec: fix use-after-free in encoder release path (bsc#1263180).
  • CVE-2026-31645: net: lan966x: fix page pool leak in error paths (bsc#1263794).
  • CVE-2026-31648: mm: filemap: fix nr_pages calculation overflow in filemap_map_pages() (bsc#1263579).
  • CVE-2026-31655: pmdomain: imx8mp-blk-ctrl: Keep the NOC_HDCP clock enabled (bsc#1263724).
  • CVE-2026-31671: xfrm_user: fix info leak in build_report() (bsc#1263115).
  • CVE-2026-31683: batman-adv: avoid OGM aggregation when skb tailroom is insufficient (bsc#1263594).
  • CVE-2026-31703: writeback: Fix use after free in inode_switch_wbs_work_fn() (bsc#1263883).
  • CVE-2026-31774: io_uring/net: fix slab-out-of-bounds read in io_bundle_nbufs() (bsc#1264040).
  • CVE-2026-43026: netfilter: ctnetlink: zero expect NAT fields when CTA_EXPECT_NAT absent (bsc#1263932).
  • CVE-2026-43030: bpf: Fix regsafe() for pointers to packet (bsc#1264000).
  • CVE-2026-43040: net: ipv6: ndisc: fix ndisc_ra_useropt to initialize nduseropt_padX fields to zero to prevent an info-leak (bsc#1264091).
  • CVE-2026-43063: xfs: don't irele after failing to iget in xfs_attri_recover_work (bsc#1264196).
  • CVE-2026-43065: ext4: always drain queued discard work in ext4_mb_release() (bsc#1264243).
  • CVE-2026-43066: ext4: fix iloc.bh leak in ext4_fc_replay_inode() error paths (bsc#1264245).
  • CVE-2026-43068: ext4: avoid allocate block from corrupted group in ext4_mb_find_by_goal() (bsc#1264255).
  • CVE-2026-43109: x86: shadow stacks: proper error handling for mmap lock (bsc#1264484).
  • CVE-2026-43150: perf/arm-cmn: Reject unsupported hardware configurations (bsc#1264415).
  • CVE-2026-43184: rnbd-srv: Zero the rsp buffer before using it (bsc#1264622).
  • CVE-2026-43197: netconsole: avoid OOB reads, msg is not nul-terminated (bsc#1264609).
  • CVE-2026-43332: thermal: core: Fix thermal zone device registration error path (bsc#1265114).
  • CVE-2026-43393: btrfs: fix chunk map leak in btrfs_map_block() after btrfs_chunk_map_num_copies() (bsc#1264723).
  • CVE-2026-43394: nfsd: Fix cred ref leak in nfsd_nl_listener_set_doit() (bsc#1265081).
  • CVE-2026-43411: tipc: fix divide-by-zero in tipc_sk_filter_connect() (bsc#1264672).
  • CVE-2026-43455: net: mctp: Ensure keys maintain only one ref to corresponding dev (bsc#1264765).
  • CVE-2026-45842: slip: reject VJ receive packets on instances with no rstate array (bsc#1266400).
  • CVE-2026-45846: bareudp: fix NULL pointer dereference in bareudp_fill_metadata_dst() (bsc#1266394).
  • CVE-2026-45852: RDMA/rxe: Fix double free in rxe_srq_from_init (bsc#1266711).
  • CVE-2026-45856: RDMA/uverbs: Validate wqe_size before using it in ib_uverbs_post_send (bsc#1266720).
  • CVE-2026-45886: bpf: Fix bpf_xdp_store_bytes proto for read-only arg (bsc#1266810).
  • CVE-2026-45898: RDMA/iwcm: Fix workqueue list corruption by removing work_list (bsc#1266888).
  • CVE-2026-45910: RDMA/rxe: Fix race condition in QP timer handlers (bsc#1266889).
  • CVE-2026-45932: bpf: Fix tcx/netkit detach permissions when prog fd isn't given (bsc#1266827).
  • CVE-2026-45942: ext4: fix e4b bitmap inconsistency reports (bsc#1266914).
  • CVE-2026-45970: bonding: alb: fix UAF in rlb_arp_recv during bond up/down (bsc#1267205).
  • CVE-2026-45984: gfs2: Fix use-after-free in iomap inline data write path (bsc#1267214).
  • CVE-2026-46021: thermal: core: Fix thermal zone governor cleanup issues (bsc#1267220).
  • CVE-2026-46043: RDMA/rxe: Validate pad and ICRC before payload_size() in rxe_rcv (bsc#1266901).
  • CVE-2026-46083: spi: fix resource leaks on device setup failure (bsc#1266696).
  • CVE-2026-46090: ALSA: aloop: Use guard() for spin locks (bsc#1267531).
  • CVE-2026-46094: ext4: fix bounds check in check_xattrs() to prevent out-of-bounds access (bsc#1266927).
  • CVE-2026-46114: RDMA/rxe: Reject non-8-byte ATOMIC_WRITE payloads (bsc#1266972).
  • CVE-2026-46159: btrfs: fix btrfs_ioctl_space_info() slot_count TOCTOU which can lead to info-leak (bsc#1267652).
  • CVE-2026-46176: RDMA/mlx5: Fix error path fall-through in mlx5_ib_dev_res_srq_init() (bsc#1266816).
  • CVE-2026-46181: RDMA/mlx4: Fix mis-use of RCU in mlx4_srq_event() (bsc#1266826).

The following non security issues were fixed:

  • accel/ivpu: Add bounds checks for firmware log indices (git-fixes).
  • accel/ivpu: Add buffer overflow check in MS get_info_ioctl (git-fixes).
  • ALSA: PCM: Fix wait queue list corruption in snd_pcm_drain() on linked streams (git-fixes).
  • ALSA: seq: dummy: fix UMP event stack overread (git-fixes).
  • arm64: tlb: Allow XZR argument to TLBI ops (git-fixes).
  • arm64: tlb: Optimize ARM64_WORKAROUND_REPEAT_TLBI (git-fixes).
  • Bluetooth: bnep: reject short frames before parsing (git-fixes).
  • Bluetooth: hci_sync: reject oversized Broadcast Announcement prepend (git-fixes).
  • Bluetooth: ISO: Fix not releasing hdev reference on iso_conn_big_sync (git-fixes).
  • Bluetooth: MGMT: Fix backward compatibility with userspace (git-fixes).
  • Bluetooth: MGMT: validate advertising TLV before type checks (git-fixes).
  • Bluetooth: RFCOMM: hold listener socket in rfcomm_connect_ind() (git-fixes).
  • Bluetooth: RFCOMM: validate skb length in MCC handlers (git-fixes).
  • config: remove DEBUG_FS_DISALLOW_MOUNT
  • debugfs: Remove broken no-mount mode (bsc#1265186).
  • debugfs: Fix default access mode config check (bsc#1265186).
  • debugfs: Remove broken no-mount mode (bsc#1265186).
  • debugfs: Remove redundant access mode checks (bsc#1265186).
  • drm/amd/display: Bound VBIOS record-chain walk loops (git-fixes).
  • drm/amd/display: Clamp HDMI HDCP2 rx_id_list read to buffer size (git-fixes).
  • drm/amd/display: Fix NULL deref and buffer over-read in SDP debugfs (git-fixes).
  • drm/amd/display: Reject gpio_bitshift >= 32 in bios_parser_get_gpio_pin_info() (git-fixes).
  • drm/amd/display: Use krealloc_array() in dal_vector_reserve() (git-fixes).
  • drm/amdkfd: Fix buffer overflow in SDMA queue checkpoint/restore on GFX11 (git-fixes).
  • drm/amdkfd: fix NULL dereference in get_queue_ids() (git-fixes).
  • drm/imx: Fix three kernel-doc warnings in dcss-scaler.c (git-fixes).
  • drm/v3d: Fix vaddr leak when indirect CSD has zeroed workgroups (git-fixes).
  • drm/xe: Clear pending_disable before signaling suspend fence (git-fixes).
  • ima: return error early if file xattr cannot be changed (bsc#1261041).
  • Input: atkbd - skip deactivate for HONOR BCC-N's internal keyboard (git-fixes).
  • KVM: arm64: Reassign nested_mmus array behind mmu_lock (git-fixes).
  • KVM: arm64: Take the SRCU lock for page table walks in fault injection and AT emulation (git-fixes).
  • KVM: arm64: vgic-its: Drop the translation cache reference only for the erased entry (git-fixes).
  • KVM: SEV: Check PSC request indices against the actual size of the buffer (git-fixes).
  • KVM: SEV: Compute the correct max length of the in-GHCB scratch area (git-fixes).
  • KVM: SEV: Don't explicitly pass PSC buffer to snp_begin_psc() (git-fixes).
  • KVM: SEV: Ignore MMIO requests of length '0' (git-fixes).
  • KVM: SEV: Ignore Port I/O requests of length '0' (git-fixes).
  • KVM: SEV: Reject MMIO requests larger than 8 bytes with GHCB v2+ (git-fixes).
  • KVM: SEV: Require in-GHCB scratch area if GHCB v2+ is in use (git-fixes).
  • KVM: SEV: Use READ_ONCE() when reading entries/indices from PSC buffer (git-fixes).
  • KVM: SEV: Use the size of the PSC header as the minimum size for PSC requests (git-fixes).
  • KVM: SEV: WARN if KVM attempts to setup scratch area with min_len==0 (git-fixes).
  • KVM: SVM: Convert plain error code numbers to defines (git-fixes).
  • KVM: SVM: Flush the current TLB when transitioning from xAVIC => x2AVIC (git-fixes).
  • KVM: SVM: Provide helpers to set the error code (git-fixes).
  • KVM: x86: Consolidate SEV-ES MMIO emulation into a single public API (git-fixes).
  • KVM: x86: Dedup kvm_sev_es_mmio_{read,write}() (git-fixes).
  • KVM: x86: Harden SEV-ES MMIO against on-stack use-after-free (git-fixes).
  • KVM: x86: Move MMIO write tracing into vcpu_mmio_write() (git-fixes).
  • KVM: x86: Open code handling of completed MMIO reads in emulator_read_write() (git-fixes).
  • KVM: x86: Open code read vs. write userspace MMIO exits in emulator_read_write() (git-fixes).
  • KVM: x86: Trace unsatisfied MMIO reads on a per-page basis (git-fixes).
  • KVM: x86: Use local MMIO fragment variable to clean up emulator_read_write() (git-fixes).
  • mmc: core: Fix host controller programming for fixed driver type (git-fixes).
  • mmc: dw_mmc-rockchip: Add missing private data for very old controllers (git-fixes).
  • mmc: litex_mmc: Set mandatory idle clocks before CMD0 (git-fixes).
  • mmc: litex_mmc: Use DIV_ROUND_UP for more accurate clock calculation (git-fixes).
  • mmc: renesas_sdhi: Add OF entry for RZ/G2H SoC (git-fixes).
  • mmc: sdhci: add signal voltage switch in sdhci_resume_host (git-fixes).
  • wifi: mac80211: limit injected antenna index in ieee80211_parse_tx_radiotap (git-fixes).
  • wifi: nl80211: reject oversized EMA RNR lists (git-fixes).

Список пакетов

openSUSE Leap 16.0
cluster-md-kmp-64kb-6.12.0-160000.35.1
cluster-md-kmp-azure-6.12.0-160000.35.1
cluster-md-kmp-default-6.12.0-160000.35.1
cluster-md-kmp-rt-6.12.0-160000.35.1
dlm-kmp-64kb-6.12.0-160000.35.1
dlm-kmp-azure-6.12.0-160000.35.1
dlm-kmp-default-6.12.0-160000.35.1
dlm-kmp-rt-6.12.0-160000.35.1
dtb-allwinner-6.12.0-160000.35.1
dtb-altera-6.12.0-160000.35.1
dtb-amazon-6.12.0-160000.35.1
dtb-amd-6.12.0-160000.35.1
dtb-amlogic-6.12.0-160000.35.1
dtb-apm-6.12.0-160000.35.1
dtb-apple-6.12.0-160000.35.1
dtb-arm-6.12.0-160000.35.1
dtb-broadcom-6.12.0-160000.35.1
dtb-cavium-6.12.0-160000.35.1
dtb-exynos-6.12.0-160000.35.1
dtb-freescale-6.12.0-160000.35.1
dtb-hisilicon-6.12.0-160000.35.1
dtb-lg-6.12.0-160000.35.1
dtb-marvell-6.12.0-160000.35.1
dtb-mediatek-6.12.0-160000.35.1
dtb-nvidia-6.12.0-160000.35.1
dtb-qcom-6.12.0-160000.35.1
dtb-renesas-6.12.0-160000.35.1
dtb-rockchip-6.12.0-160000.35.1
dtb-socionext-6.12.0-160000.35.1
dtb-sprd-6.12.0-160000.35.1
dtb-xilinx-6.12.0-160000.35.1
gfs2-kmp-64kb-6.12.0-160000.35.1
gfs2-kmp-azure-6.12.0-160000.35.1
gfs2-kmp-default-6.12.0-160000.35.1
gfs2-kmp-rt-6.12.0-160000.35.1
kernel-64kb-6.12.0-160000.35.1
kernel-64kb-devel-6.12.0-160000.35.1
kernel-64kb-extra-6.12.0-160000.35.1
kernel-64kb-optional-6.12.0-160000.35.1
kernel-azure-6.12.0-160000.35.1
kernel-azure-devel-6.12.0-160000.35.1
kernel-azure-extra-6.12.0-160000.35.1
kernel-azure-optional-6.12.0-160000.35.1
kernel-azure-vdso-6.12.0-160000.35.1
kernel-default-6.12.0-160000.35.1
kernel-default-base-6.12.0-160000.35.1.160000.2.16
kernel-default-devel-6.12.0-160000.35.1
kernel-default-extra-6.12.0-160000.35.1
kernel-default-optional-6.12.0-160000.35.1
kernel-default-vdso-6.12.0-160000.35.1
kernel-devel-6.12.0-160000.35.1
kernel-docs-6.12.0-160000.35.1
kernel-docs-html-6.12.0-160000.35.1
kernel-kvmsmall-6.12.0-160000.35.1
kernel-kvmsmall-devel-6.12.0-160000.35.1
kernel-kvmsmall-vdso-6.12.0-160000.35.1
kernel-macros-6.12.0-160000.35.1
kernel-obs-build-6.12.0-160000.35.1
kernel-obs-qa-6.12.0-160000.35.1
kernel-rt-6.12.0-160000.35.1
kernel-rt-devel-6.12.0-160000.35.1
kernel-rt-extra-6.12.0-160000.35.1
kernel-rt-optional-6.12.0-160000.35.1
kernel-rt-vdso-6.12.0-160000.35.1
kernel-source-6.12.0-160000.35.1
kernel-source-vanilla-6.12.0-160000.35.1
kernel-syms-6.12.0-160000.35.1
kernel-zfcpdump-6.12.0-160000.35.1
kselftests-kmp-64kb-6.12.0-160000.35.1
kselftests-kmp-azure-6.12.0-160000.35.1
kselftests-kmp-default-6.12.0-160000.35.1
kselftests-kmp-rt-6.12.0-160000.35.1
ocfs2-kmp-64kb-6.12.0-160000.35.1
ocfs2-kmp-azure-6.12.0-160000.35.1
ocfs2-kmp-default-6.12.0-160000.35.1
ocfs2-kmp-rt-6.12.0-160000.35.1

Описание

In the Linux kernel, the following vulnerability has been resolved: net: gro: fix outer network offset The udp GRO complete stage assumes that all the packets inserted the RX have the `encapsulation` flag zeroed. Such assumption is not true, as a few H/W NICs can set such flag when H/W offloading the checksum for an UDP encapsulated traffic, the tun driver can inject GSO packets with UDP encapsulation and the problematic layout can also be created via a veth based setup. Due to the above, in the problematic scenarios, udp4_gro_complete() uses the wrong network offset (inner instead of outer) to compute the outer UDP header pseudo checksum, leading to csum validation errors later on in packet processing. Address the issue always clearing the encapsulation flag at GRO completion time. Such flag will be set again as needed for encapsulated packets by udp_gro_complete().


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: smb: client: Don't log plaintext credentials in cifs_set_cifscreds When debug logging is enabled, cifs_set_cifscreds() logs the key payload and exposes the plaintext username and password. Remove the debug log to avoid exposing credentials.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: cxl/mbox: validate payload size before accessing contents in cxl_payload_from_user_allowed() cxl_payload_from_user_allowed() casts and dereferences the input payload without first verifying its size. When a raw mailbox command is sent with an undersized payload (ie: 1 byte for CXL_MBOX_OP_CLEAR_LOG, which expects a 16-byte UUID), uuid_equal() reads past the allocated buffer, triggering a KASAN splat: BUG: KASAN: slab-out-of-bounds in memcmp+0x176/0x1d0 lib/string.c:683 Read of size 8 at addr ffff88810130f5c0 by task syz.1.62/2258 CPU: 2 UID: 0 PID: 2258 Comm: syz.1.62 Not tainted 6.19.0-dirty #3 PREEMPT(voluntary) Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.17.0-0-gb52ca86e094d-prebuilt.qemu.org 04/01/2014 Call Trace: <TASK> __dump_stack lib/dump_stack.c:94 [inline] dump_stack_lvl+0xab/0xe0 lib/dump_stack.c:120 print_address_description mm/kasan/report.c:378 [inline] print_report+0xce/0x650 mm/kasan/report.c:482 kasan_report+0xce/0x100 mm/kasan/report.c:595 memcmp+0x176/0x1d0 lib/string.c:683 uuid_equal include/linux/uuid.h:73 [inline] cxl_payload_from_user_allowed drivers/cxl/core/mbox.c:345 [inline] cxl_mbox_cmd_ctor drivers/cxl/core/mbox.c:368 [inline] cxl_validate_cmd_from_user drivers/cxl/core/mbox.c:522 [inline] cxl_send_cmd+0x9c0/0xb50 drivers/cxl/core/mbox.c:643 __cxl_memdev_ioctl drivers/cxl/core/memdev.c:698 [inline] cxl_memdev_ioctl+0x14f/0x190 drivers/cxl/core/memdev.c:713 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:597 [inline] __se_sys_ioctl fs/ioctl.c:583 [inline] __x64_sys_ioctl+0x18e/0x210 fs/ioctl.c:583 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0xa8/0x330 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7fdaf331ba79 Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007fdaf1d77038 EFLAGS: 00000246 ORIG_RAX: 0000000000000010 RAX: ffffffffffffffda RBX: 00007fdaf3585fa0 RCX: 00007fdaf331ba79 RDX: 00002000000001c0 RSI: 00000000c030ce02 RDI: 0000000000000003 RBP: 00007fdaf33749df R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13: 00007fdaf3586038 R14: 00007fdaf3585fa0 R15: 00007ffced2af768 </TASK> Add 'in_size' parameter to cxl_payload_from_user_allowed() and validate the payload is large enough.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net: mvpp2: guard flow control update with global_tx_fc in buffer switching mvpp2_bm_switch_buffers() unconditionally calls mvpp2_bm_pool_update_priv_fc() when switching between per-cpu and shared buffer pool modes. This function programs CM3 flow control registers via mvpp2_cm3_read()/mvpp2_cm3_write(), which dereference priv->cm3_base without any NULL check. When the CM3 SRAM resource is not present in the device tree (the third reg entry added by commit 60523583b07c ("dts: marvell: add CM3 SRAM memory to cp11x ethernet device tree")), priv->cm3_base remains NULL and priv->global_tx_fc is false. Any operation that triggers mvpp2_bm_switch_buffers(), for example an MTU change that crosses the jumbo frame threshold, will crash: Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000 Mem abort info: ESR = 0x0000000096000006 EC = 0x25: DABT (current EL), IL = 32 bits pc : readl+0x0/0x18 lr : mvpp2_cm3_read.isra.0+0x14/0x20 Call trace: readl+0x0/0x18 mvpp2_bm_pool_update_fc+0x40/0x12c mvpp2_bm_pool_update_priv_fc+0x94/0xd8 mvpp2_bm_switch_buffers.isra.0+0x80/0x1c0 mvpp2_change_mtu+0x140/0x380 __dev_set_mtu+0x1c/0x38 dev_set_mtu_ext+0x78/0x118 dev_set_mtu+0x48/0xa8 dev_ifsioc+0x21c/0x43c dev_ioctl+0x2d8/0x42c sock_ioctl+0x314/0x378 Every other flow control call site in the driver already guards hardware access with either priv->global_tx_fc or port->tx_fc. mvpp2_bm_switch_buffers() is the only place that omits this check. Add the missing priv->global_tx_fc guard to both the disable and re-enable calls in mvpp2_bm_switch_buffers(), consistent with the rest of the driver.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net: macb: fix use-after-free access to PTP clock PTP clock is registered on every opening of the interface and destroyed on every closing. However it may be accessed via get_ts_info ethtool call which is possible while the interface is just present in the kernel. BUG: KASAN: use-after-free in ptp_clock_index+0x47/0x50 drivers/ptp/ptp_clock.c:426 Read of size 4 at addr ffff8880194345cc by task syz.0.6/948 CPU: 1 PID: 948 Comm: syz.0.6 Not tainted 6.1.164+ #109 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.1-0-g3208b098f51a-prebuilt.qemu.org 04/01/2014 Call Trace: <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x8d/0xba lib/dump_stack.c:106 print_address_description mm/kasan/report.c:316 [inline] print_report+0x17f/0x496 mm/kasan/report.c:420 kasan_report+0xd9/0x180 mm/kasan/report.c:524 ptp_clock_index+0x47/0x50 drivers/ptp/ptp_clock.c:426 gem_get_ts_info+0x138/0x1e0 drivers/net/ethernet/cadence/macb_main.c:3349 macb_get_ts_info+0x68/0xb0 drivers/net/ethernet/cadence/macb_main.c:3371 __ethtool_get_ts_info+0x17c/0x260 net/ethtool/common.c:558 ethtool_get_ts_info net/ethtool/ioctl.c:2367 [inline] __dev_ethtool net/ethtool/ioctl.c:3017 [inline] dev_ethtool+0x2b05/0x6290 net/ethtool/ioctl.c:3095 dev_ioctl+0x637/0x1070 net/core/dev_ioctl.c:510 sock_do_ioctl+0x20d/0x2c0 net/socket.c:1215 sock_ioctl+0x577/0x6d0 net/socket.c:1320 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+0x18c/0x210 fs/ioctl.c:856 do_syscall_x64 arch/x86/entry/common.c:46 [inline] do_syscall_64+0x35/0x80 arch/x86/entry/common.c:76 entry_SYSCALL_64_after_hwframe+0x6e/0xd8 </TASK> Allocated by task 457: kmalloc include/linux/slab.h:563 [inline] kzalloc include/linux/slab.h:699 [inline] ptp_clock_register+0x144/0x10e0 drivers/ptp/ptp_clock.c:235 gem_ptp_init+0x46f/0x930 drivers/net/ethernet/cadence/macb_ptp.c:375 macb_open+0x901/0xd10 drivers/net/ethernet/cadence/macb_main.c:2920 __dev_open+0x2ce/0x500 net/core/dev.c:1501 __dev_change_flags+0x56a/0x740 net/core/dev.c:8651 dev_change_flags+0x92/0x170 net/core/dev.c:8722 do_setlink+0xaf8/0x3a80 net/core/rtnetlink.c:2833 __rtnl_newlink+0xbf4/0x1940 net/core/rtnetlink.c:3608 rtnl_newlink+0x63/0xa0 net/core/rtnetlink.c:3655 rtnetlink_rcv_msg+0x3c6/0xed0 net/core/rtnetlink.c:6150 netlink_rcv_skb+0x15d/0x430 net/netlink/af_netlink.c:2511 netlink_unicast_kernel net/netlink/af_netlink.c:1318 [inline] netlink_unicast+0x6d7/0xa30 net/netlink/af_netlink.c:1344 netlink_sendmsg+0x97e/0xeb0 net/netlink/af_netlink.c:1872 sock_sendmsg_nosec net/socket.c:718 [inline] __sock_sendmsg+0x14b/0x180 net/socket.c:730 __sys_sendto+0x320/0x3b0 net/socket.c:2152 __do_sys_sendto net/socket.c:2164 [inline] __se_sys_sendto net/socket.c:2160 [inline] __x64_sys_sendto+0xdc/0x1b0 net/socket.c:2160 do_syscall_x64 arch/x86/entry/common.c:46 [inline] do_syscall_64+0x35/0x80 arch/x86/entry/common.c:76 entry_SYSCALL_64_after_hwframe+0x6e/0xd8 Freed by task 938: kasan_slab_free include/linux/kasan.h:177 [inline] slab_free_hook mm/slub.c:1729 [inline] slab_free_freelist_hook mm/slub.c:1755 [inline] slab_free mm/slub.c:3687 [inline] __kmem_cache_free+0xbc/0x320 mm/slub.c:3700 device_release+0xa0/0x240 drivers/base/core.c:2507 kobject_cleanup lib/kobject.c:681 [inline] kobject_release lib/kobject.c:712 [inline] kref_put include/linux/kref.h:65 [inline] kobject_put+0x1cd/0x350 lib/kobject.c:729 put_device+0x1b/0x30 drivers/base/core.c:3805 ptp_clock_unregister+0x171/0x270 drivers/ptp/ptp_clock.c:391 gem_ptp_remove+0x4e/0x1f0 drivers/net/ethernet/cadence/macb_ptp.c:404 macb_close+0x1c8/0x270 drivers/net/ethernet/cadence/macb_main.c:2966 __dev_close_many+0x1b9/0x310 net/core/dev.c:1585 __dev_close net/core/dev.c:1597 [inline] __dev_change_flags+0x2bb/0x740 net/core/dev.c:8649 dev_change_fl ---truncated---


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: HID: bpf: prevent buffer overflow in hid_hw_request right now the returned value is considered to be always valid. However, when playing with HID-BPF, the return value can be arbitrary big, because it's the return value of dispatch_hid_bpf_raw_requests(), which calls the struct_ops and we have no guarantees that the value makes sense.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: ext4: fix use-after-free in update_super_work when racing with umount Commit b98535d09179 ("ext4: fix bug_on in start_this_handle during umount filesystem") moved ext4_unregister_sysfs() before flushing s_sb_upd_work to prevent new error work from being queued via /proc/fs/ext4/xx/mb_groups reads during unmount. However, this introduced a use-after-free because update_super_work calls ext4_notify_error_sysfs() -> sysfs_notify() which accesses the kobject's kernfs_node after it has been freed by kobject_del() in ext4_unregister_sysfs(): update_super_work ext4_put_super ----------------- -------------- ext4_unregister_sysfs(sb) kobject_del(&sbi->s_kobj) __kobject_del() sysfs_remove_dir() kobj->sd = NULL sysfs_put(sd) kernfs_put() // RCU free ext4_notify_error_sysfs(sbi) sysfs_notify(&sbi->s_kobj) kn = kobj->sd // stale pointer kernfs_get(kn) // UAF on freed kernfs_node ext4_journal_destroy() flush_work(&sbi->s_sb_upd_work) Instead of reordering the teardown sequence, fix this by making ext4_notify_error_sysfs() detect that sysfs has already been torn down by checking s_kobj.state_in_sysfs, and skipping the sysfs_notify() call in that case. A dedicated mutex (s_error_notify_mutex) serializes ext4_notify_error_sysfs() against kobject_del() in ext4_unregister_sysfs() to prevent TOCTOU races where the kobject could be deleted between the state_in_sysfs check and the sysfs_notify() call.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: ext4: avoid infinite loops caused by residual data On the mkdir/mknod path, when mapping logical blocks to physical blocks, if inserting a new extent into the extent tree fails (in this example, because the file system disabled the huge file feature when marking the inode as dirty), ext4_ext_map_blocks() only calls ext4_free_blocks() to reclaim the physical block without deleting the corresponding data in the extent tree. This causes subsequent mkdir operations to reference the previously reclaimed physical block number again, even though this physical block is already being used by the xattr block. Therefore, a situation arises where both the directory and xattr are using the same buffer head block in memory simultaneously. The above causes ext4_xattr_block_set() to enter an infinite loop about "inserted" and cannot release the inode lock, ultimately leading to the 143s blocking problem mentioned in [1]. If the metadata is corrupted, then trying to remove some extent space can do even more harm. Also in case EXT4_GET_BLOCKS_DELALLOC_RESERVE was passed, remove space wrongly update quota information. Jan Kara suggests distinguishing between two cases: 1) The error is ENOSPC or EDQUOT - in this case the filesystem is fully consistent and we must maintain its consistency including all the accounting. However these errors can happen only early before we've inserted the extent into the extent tree. So current code works correctly for this case. 2) Some other error - this means metadata is corrupted. We should strive to do as few modifications as possible to limit damage. So I'd just skip freeing of allocated blocks. [1] INFO: task syz.0.17:5995 blocked for more than 143 seconds. Call Trace: inode_lock_nested include/linux/fs.h:1073 [inline] __start_dirop fs/namei.c:2923 [inline] start_dirop fs/namei.c:2934 [inline]


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: xfs: save ailp before dropping the AIL lock in push callbacks In xfs_inode_item_push() and xfs_qm_dquot_logitem_push(), the AIL lock is dropped to perform buffer IO. Once the cluster buffer no longer protects the log item from reclaim, the log item may be freed by background reclaim or the dquot shrinker. The subsequent spin_lock() call dereferences lip->li_ailp, which is a use-after-free. Fix this by saving the ailp pointer in a local variable while the AIL lock is held and the log item is guaranteed to be valid.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: xfs: stop reclaim before pushing AIL during unmount The unmount sequence in xfs_unmount_flush_inodes() pushed the AIL while background reclaim and inodegc are still running. This is broken independently of any use-after-free issues - background reclaim and inodegc should not be running while the AIL is being pushed during unmount, as inodegc can dirty and insert inodes into the AIL during the flush, and background reclaim can race to abort and free dirty inodes. Reorder xfs_unmount_flush_inodes() to stop inodegc and cancel background reclaim before pushing the AIL. Stop inodegc before cancelling m_reclaim_work because the inodegc worker can re-queue m_reclaim_work via xfs_inodegc_set_reclaimable.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: esp: fix skb leak with espintcp and async crypto When the TX queue for espintcp is full, esp_output_tail_tcp will return an error and not free the skb, because with synchronous crypto, the common xfrm output code will drop the packet for us. With async crypto (esp_output_done), we need to drop the skb when esp_output_tail_tcp returns an error.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net: bonding: fix NULL deref in bond_debug_rlb_hash_show rlb_clear_slave intentionally keeps RLB hash-table entries on the rx_hashtbl_used_head list with slave set to NULL when no replacement slave is available. However, bond_debug_rlb_hash_show visites client_info->slave without checking if it's NULL. Other used-list iterators in bond_alb.c already handle this NULL-slave state safely: - rlb_update_client returns early on !client_info->slave - rlb_req_update_slave_clients, rlb_clear_slave, and rlb_rebalance compare slave values before visiting - lb_req_update_subnet_clients continues if slave is NULL The following NULL deref crash can be trigger in bond_debug_rlb_hash_show: [ 1.289791] BUG: kernel NULL pointer dereference, address: 0000000000000000 [ 1.292058] RIP: 0010:bond_debug_rlb_hash_show (drivers/net/bonding/bond_debugfs.c:41) [ 1.293101] RSP: 0018:ffffc900004a7d00 EFLAGS: 00010286 [ 1.293333] RAX: 0000000000000000 RBX: ffff888102b48200 RCX: ffff888102b48204 [ 1.293631] RDX: ffff888102b48200 RSI: ffffffff839daad5 RDI: ffff888102815078 [ 1.293924] RBP: ffff888102815078 R08: ffff888102b4820e R09: 0000000000000000 [ 1.294267] R10: 0000000000000000 R11: 0000000000000000 R12: ffff888100f929c0 [ 1.294564] R13: ffff888100f92a00 R14: 0000000000000001 R15: ffffc900004a7ed8 [ 1.294864] FS: 0000000001395380(0000) GS:ffff888196e75000(0000) knlGS:0000000000000000 [ 1.295239] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 1.295480] CR2: 0000000000000000 CR3: 0000000102adc004 CR4: 0000000000772ef0 [ 1.295897] Call Trace: [ 1.296134] seq_read_iter (fs/seq_file.c:231) [ 1.296341] seq_read (fs/seq_file.c:164) [ 1.296493] full_proxy_read (fs/debugfs/file.c:378 (discriminator 1)) [ 1.296658] vfs_read (fs/read_write.c:572) [ 1.296981] ksys_read (fs/read_write.c:717) [ 1.297132] do_syscall_64 (arch/x86/entry/syscall_64.c:63 (discriminator 1) arch/x86/entry/syscall_64.c:94 (discriminator 1)) [ 1.297325] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130) Add a NULL check and print "(none)" for entries with no assigned slave.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: xfs: scrub: unlock dquot before early return in quota scrub xchk_quota_item can return early after calling xchk_fblock_process_error. When that helper returns false, the function returned immediately without dropping dq->q_qlock, which can leave the dquot lock held and risk lock leaks or deadlocks in later quota operations. Fix this by unlocking dq->q_qlock before the early return.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: drm/mediatek: dsi: Store driver data before invoking mipi_dsi_host_register The call to mipi_dsi_host_register triggers a callback to mtk_dsi_bind, which uses dev_get_drvdata to retrieve the mtk_dsi struct, so this structure needs to be stored inside the driver data before invoking it. As drvdata is currently uninitialized it leads to a crash when registering the DSI DRM encoder right after acquiring the mode_config.idr_mutex, blocking all subsequent DRM operations. Fixes the following crash during mediatek-drm probe (tested on Xiaomi Smart Clock x04g): Unable to handle kernel NULL pointer dereference at virtual address 0000000000000040 [...] Modules linked in: mediatek_drm(+) drm_display_helper cec drm_client_lib drm_dma_helper drm_kms_helper panel_simple [...] Call trace: drm_mode_object_add+0x58/0x98 (P) __drm_encoder_init+0x48/0x140 drm_encoder_init+0x6c/0xa0 drm_simple_encoder_init+0x20/0x34 [drm_kms_helper] mtk_dsi_bind+0x34/0x13c [mediatek_drm] component_bind_all+0x120/0x280 mtk_drm_bind+0x284/0x67c [mediatek_drm] try_to_bring_up_aggregate_device+0x23c/0x320 __component_add+0xa4/0x198 component_add+0x14/0x20 mtk_dsi_host_attach+0x78/0x100 [mediatek_drm] mipi_dsi_attach+0x2c/0x50 panel_simple_dsi_probe+0x4c/0x9c [panel_simple] mipi_dsi_drv_probe+0x1c/0x28 really_probe+0xc0/0x3dc __driver_probe_device+0x80/0x160 driver_probe_device+0x40/0x120 __device_attach_driver+0xbc/0x17c bus_for_each_drv+0x88/0xf0 __device_attach+0x9c/0x1cc device_initial_probe+0x54/0x60 bus_probe_device+0x34/0xa0 device_add+0x5b0/0x800 mipi_dsi_device_register_full+0xdc/0x16c mipi_dsi_host_register+0xc4/0x17c mtk_dsi_probe+0x10c/0x260 [mediatek_drm] platform_probe+0x5c/0xa4 really_probe+0xc0/0x3dc __driver_probe_device+0x80/0x160 driver_probe_device+0x40/0x120 __driver_attach+0xc8/0x1f8 bus_for_each_dev+0x7c/0xe0 driver_attach+0x24/0x30 bus_add_driver+0x11c/0x240 driver_register+0x68/0x130 __platform_register_drivers+0x64/0x160 mtk_drm_init+0x24/0x1000 [mediatek_drm] do_one_initcall+0x60/0x1d0 do_init_module+0x54/0x240 load_module+0x1838/0x1dc0 init_module_from_file+0xd8/0xf0 __arm64_sys_finit_module+0x1b4/0x428 invoke_syscall.constprop.0+0x48/0xc8 do_el0_svc+0x3c/0xb8 el0_svc+0x34/0xe8 el0t_64_sync_handler+0xa0/0xe4 el0t_64_sync+0x198/0x19c Code: 52800022 941004ab 2a0003f3 37f80040 (29005a80)


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: media: mediatek: vcodec: fix use-after-free in encoder release path The fops_vcodec_release() function frees the context structure (ctx) without first cancelling any pending or running work in ctx->encode_work. This creates a race window where the workqueue handler (mtk_venc_worker) may still be accessing the context memory after it has been freed. Race condition: CPU 0 (release path) CPU 1 (workqueue) --------------------- ------------------ fops_vcodec_release() v4l2_m2m_ctx_release() v4l2_m2m_cancel_job() // waits for m2m job "done" mtk_venc_worker() v4l2_m2m_job_finish() // m2m job "done" // BUT worker still running! // post-job_finish access: other ctx dereferences // UAF if ctx already freed // returns (job "done") kfree(ctx) // ctx freed Root cause: The v4l2_m2m_ctx_release() only waits for the m2m job lifecycle (via TRANS_RUNNING flag), not the workqueue lifecycle. After v4l2_m2m_job_finish() is called, the m2m framework considers the job complete and v4l2_m2m_ctx_release() returns, but the worker function continues executing and may still access ctx. The work is queued during encode operations via: queue_work(ctx->dev->encode_workqueue, &ctx->encode_work) The worker function accesses ctx->m2m_ctx, ctx->dev, and other ctx fields even after calling v4l2_m2m_job_finish(). This vulnerability was confirmed with KASAN by running an instrumented test module that widens the post-job_finish race window. KASAN detected: BUG: KASAN: slab-use-after-free in mtk_venc_worker+0x159/0x180 Read of size 4 at addr ffff88800326e000 by task kworker/u8:0/12 Workqueue: mtk_vcodec_enc_wq mtk_venc_worker Allocated by task 47: __kasan_kmalloc+0x7f/0x90 fops_vcodec_open+0x85/0x1a0 Freed by task 47: __kasan_slab_free+0x43/0x70 kfree+0xee/0x3a0 fops_vcodec_release+0xb7/0x190 Fix this by calling cancel_work_sync(&ctx->encode_work) before kfree(ctx). This ensures the workqueue handler is both cancelled (if pending) and synchronized (waits for any running handler to complete) before the context is freed. Placement rationale: The fix is placed after v4l2_ctrl_handler_free() and before list_del_init(&ctx->list). At this point, all m2m operations are done (v4l2_m2m_ctx_release() has returned), and we need to ensure the workqueue is synchronized before removing ctx from the list and freeing it. Note: The open error path does NOT need cancel_work_sync() because INIT_WORK() only initializes the work structure - it does not schedule it. Work is only scheduled later during device_run() operations.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net: lan966x: fix page pool leak in error paths lan966x_fdma_rx_alloc() creates a page pool but does not destroy it if the subsequent fdma_alloc_coherent() call fails, leaking the pool. Similarly, lan966x_fdma_init() frees the coherent DMA memory when lan966x_fdma_tx_alloc() fails but does not destroy the page pool that was successfully created by lan966x_fdma_rx_alloc(), leaking it. Add the missing page_pool_destroy() calls in both error paths.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: mm: filemap: fix nr_pages calculation overflow in filemap_map_pages() When running stress-ng on my Arm64 machine with v7.0-rc3 kernel, I encountered some very strange crash issues showing up as "Bad page state": " [ 734.496287] BUG: Bad page state in process stress-ng-env pfn:415735fb [ 734.496427] page: refcount:0 mapcount:1 mapping:0000000000000000 index:0x4cf316 pfn:0x415735fb [ 734.496434] flags: 0x57fffe000000800(owner_2|node=1|zone=2|lastcpupid=0x3ffff) [ 734.496439] raw: 057fffe000000800 0000000000000000 dead000000000122 0000000000000000 [ 734.496440] raw: 00000000004cf316 0000000000000000 0000000000000000 0000000000000000 [ 734.496442] page dumped because: nonzero mapcount " After analyzing this page's state, it is hard to understand why the mapcount is not 0 while the refcount is 0, since this page is not where the issue first occurred. By enabling the CONFIG_DEBUG_VM config, I can reproduce the crash as well and captured the first warning where the issue appears: " [ 734.469226] page: refcount:33 mapcount:0 mapping:00000000bef2d187 index:0x81a0 pfn:0x415735c0 [ 734.469304] head: order:5 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0 [ 734.469315] memcg:ffff000807a8ec00 [ 734.469320] aops:ext4_da_aops ino:100b6f dentry name(?):"stress-ng-mmaptorture-9397-0-2736200540" [ 734.469335] flags: 0x57fffe400000069(locked|uptodate|lru|head|node=1|zone=2|lastcpupid=0x3ffff) ...... [ 734.469364] page dumped because: VM_WARN_ON_FOLIO((_Generic((page + nr_pages - 1), const struct page *: (const struct folio *)_compound_head(page + nr_pages - 1), struct page *: (struct folio *)_compound_head(page + nr_pages - 1))) != folio) [ 734.469390] ------------[ cut here ]------------ [ 734.469393] WARNING: ./include/linux/rmap.h:351 at folio_add_file_rmap_ptes+0x3b8/0x468, CPU#90: stress-ng-mlock/9430 [ 734.469551] folio_add_file_rmap_ptes+0x3b8/0x468 (P) [ 734.469555] set_pte_range+0xd8/0x2f8 [ 734.469566] filemap_map_folio_range+0x190/0x400 [ 734.469579] filemap_map_pages+0x348/0x638 [ 734.469583] do_fault_around+0x140/0x198 ...... [ 734.469640] el0t_64_sync+0x184/0x188 " The code that triggers the warning is: "VM_WARN_ON_FOLIO(page_folio(page + nr_pages - 1) != folio, folio)", which indicates that set_pte_range() tried to map beyond the large folio's size. By adding more debug information, I found that 'nr_pages' had overflowed in filemap_map_pages(), causing set_pte_range() to establish mappings for a range exceeding the folio size, potentially corrupting fields of pages that do not belong to this folio (e.g., page->_mapcount). After above analysis, I think the possible race is as follows: CPU 0 CPU 1 filemap_map_pages() ext4_setattr() //get and lock folio with old inode->i_size next_uptodate_folio() ....... //shrink the inode->i_size i_size_write(inode, attr->ia_size); //calculate the end_pgoff with the new inode->i_size file_end = DIV_ROUND_UP(i_size_read(mapping->host), PAGE_SIZE) - 1; end_pgoff = min(end_pgoff, file_end); ...... //nr_pages can be overflowed, cause xas.xa_index > end_pgoff end = folio_next_index(folio) - 1; nr_pages = min(end, end_pgoff) - xas.xa_index + 1; ...... //map large folio filemap_map_folio_range() ...... //truncate folios truncate_pagecache(inode, inode->i_size); To fix this issue, move the 'end_pgoff' calculation before next_uptodate_folio(), so the retrieved folio stays consistent with the file end to avoid ---truncated---


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: pmdomain: imx8mp-blk-ctrl: Keep the NOC_HDCP clock enabled Keep the NOC_HDCP clock always enabled to fix the potential hang caused by the NoC ADB400 port power down handshake.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: xfrm_user: fix info leak in build_report() struct xfrm_user_report is a __u8 proto field followed by a struct xfrm_selector which means there is three "empty" bytes of padding, but the padding is never zeroed before copying to userspace. Fix that up by zeroing the structure before setting individual member variables.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: batman-adv: avoid OGM aggregation when skb tailroom is insufficient When OGM aggregation state is toggled at runtime, an existing forwarded packet may have been allocated with only packet_len bytes, while a later packet can still be selected for aggregation. Appending in this case can hit skb_put overflow conditions. Reject aggregation when the target skb tailroom cannot accommodate the new packet. The caller then falls back to creating a new forward packet instead of appending.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: writeback: Fix use after free in inode_switch_wbs_work_fn() inode_switch_wbs_work_fn() has a loop like: wb_get(new_wb); while (1) { list = llist_del_all(&new_wb->switch_wbs_ctxs); /* Nothing to do? */ if (!list) break; ... process the items ... } Now adding of items to the list looks like: wb_queue_isw() if (llist_add(&isw->list, &wb->switch_wbs_ctxs)) queue_work(isw_wq, &wb->switch_work); Because inode_switch_wbs_work_fn() loops when processing isw items, it can happen that wb->switch_work is pending while wb->switch_wbs_ctxs is empty. This is a problem because in that case wb can get freed (no isw items -> no wb reference) while the work is still pending causing use-after-free issues. We cannot just fix this by cancelling work when freeing wb because that could still trigger problematic 0 -> 1 transitions on wb refcount due to wb_get() in inode_switch_wbs_work_fn(). It could be all handled with more careful code but that seems unnecessarily complex so let's avoid that until it is proven that the looping actually brings practical benefit. Just remove the loop from inode_switch_wbs_work_fn() instead. That way when wb_queue_isw() queues work, we are guaranteed we have added the first item to wb->switch_wbs_ctxs and nobody is going to remove it (and drop the wb reference it holds) until the queued work runs.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: io_uring/net: fix slab-out-of-bounds read in io_bundle_nbufs() sqe->len is __u32 but gets stored into sr->len which is int. When userspace passes sqe->len values exceeding INT_MAX (e.g. 0xFFFFFFFF), sr->len overflows to a negative value. This negative value propagates through the bundle recv/send path: 1. io_recv(): sel.val = sr->len (ssize_t gets -1) 2. io_recv_buf_select(): arg.max_len = sel->val (size_t gets 0xFFFFFFFFFFFFFFFF) 3. io_ring_buffers_peek(): buf->len is not clamped because max_len is astronomically large 4. iov[].iov_len = 0xFFFFFFFF flows into io_bundle_nbufs() 5. io_bundle_nbufs(): min_t(int, 0xFFFFFFFF, ret) yields -1, causing ret to increase instead of decrease, creating an infinite loop that reads past the allocated iov[] array This results in a slab-out-of-bounds read in io_bundle_nbufs() from the kmalloc-64 slab, as nbufs increments past the allocated iovec entries. BUG: KASAN: slab-out-of-bounds in io_bundle_nbufs+0x128/0x160 Read of size 8 at addr ffff888100ae05c8 by task exp/145 Call Trace: io_bundle_nbufs+0x128/0x160 io_recv_finish+0x117/0xe20 io_recv+0x2db/0x1160 Fix this by rejecting negative sr->len values early in both io_sendmsg_prep() and io_recvmsg_prep(). Since sqe->len is __u32, any value > INT_MAX indicates overflow and is not a valid length.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: netfilter: ctnetlink: zero expect NAT fields when CTA_EXPECT_NAT absent ctnetlink_alloc_expect() allocates expectations from a non-zeroing slab cache via nf_ct_expect_alloc(). When CTA_EXPECT_NAT is not present in the netlink message, saved_addr and saved_proto are never initialized. Stale data from a previous slab occupant can then be dumped to userspace by ctnetlink_exp_dump_expect(), which checks these fields to decide whether to emit CTA_EXPECT_NAT. The safe sibling nf_ct_expect_init(), used by the packet path, explicitly zeroes these fields. Zero saved_addr, saved_proto and dir in the else branch, guarded by IS_ENABLED(CONFIG_NF_NAT) since these fields only exist when NAT is enabled. Confirmed by priming the expect slab with NAT-bearing expectations, freeing them, creating a new expectation without CTA_EXPECT_NAT, and observing that the ctnetlink dump emits a spurious CTA_EXPECT_NAT containing stale data from the prior allocation.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: bpf: Fix regsafe() for pointers to packet In case rold->reg->range == BEYOND_PKT_END && rcur->reg->range == N regsafe() may return true which may lead to current state with valid packet range not being explored. Fix the bug.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net: ipv6: ndisc: fix ndisc_ra_useropt to initialize nduseropt_padX fields to zero to prevent an info-leak When processing Router Advertisements with user options the kernel builds an RTM_NEWNDUSEROPT netlink message. The nduseroptmsg struct has three padding fields that are never zeroed and can leak kernel data The fix is simple, just zeroes the padding fields.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: xfs: don't irele after failing to iget in xfs_attri_recover_work xlog_recovery_iget* never set @ip to a valid pointer if they return an error, so this irele will walk off a dangling pointer. Fix that.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: ext4: always drain queued discard work in ext4_mb_release() While reviewing recent ext4 patch[1], Sashiko raised the following concern[2]: > If the filesystem is initially mounted with the discard option, > deleting files will populate sbi->s_discard_list and queue > s_discard_work. If it is then remounted with nodiscard, the > EXT4_MOUNT_DISCARD flag is cleared, but the pending s_discard_work is > neither cancelled nor flushed. [1] https://lore.kernel.org/r/20260319094545.19291-1-qiang.zhang@linux.dev/ [2] https://sashiko.dev/#/patchset/20260319094545.19291-1-qiang.zhang%40linux.dev The concern was valid, but it had nothing to do with the patch[1]. One of the problems with Sashiko in its current (early) form is that it will detect pre-existing issues and report it as a problem with the patch that it is reviewing. In practice, it would be hard to hit deliberately (unless you are a malicious syzkaller fuzzer), since it would involve mounting the file system with -o discard, and then deleting a large number of files, remounting the file system with -o nodiscard, and then immediately unmounting the file system before the queued discard work has a change to drain on its own. Fix it because it's a real bug, and to avoid Sashiko from raising this concern when analyzing future patches to mballoc.c.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: ext4: fix iloc.bh leak in ext4_fc_replay_inode() error paths During code review, Joseph found that ext4_fc_replay_inode() calls ext4_get_fc_inode_loc() to get the inode location, which holds a reference to iloc.bh that must be released via brelse(). However, several error paths jump to the 'out' label without releasing iloc.bh: - ext4_handle_dirty_metadata() failure - sync_dirty_buffer() failure - ext4_mark_inode_used() failure - ext4_iget() failure Fix this by introducing an 'out_brelse' label placed just before the existing 'out' label to ensure iloc.bh is always released. Additionally, make ext4_fc_replay_inode() propagate errors properly instead of always returning 0.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: ext4: avoid allocate block from corrupted group in ext4_mb_find_by_goal() There's issue as follows: ... EXT4-fs (mmcblk0p1): Delayed block allocation failed for inode 206 at logical offset 0 with max blocks 1 with error 117 EXT4-fs (mmcblk0p1): This should not happen!! Data will be lost EXT4-fs (mmcblk0p1): Delayed block allocation failed for inode 206 at logical offset 0 with max blocks 1 with error 117 EXT4-fs (mmcblk0p1): This should not happen!! Data will be lost EXT4-fs (mmcblk0p1): Delayed block allocation failed for inode 206 at logical offset 0 with max blocks 1 with error 117 EXT4-fs (mmcblk0p1): This should not happen!! Data will be lost EXT4-fs (mmcblk0p1): Delayed block allocation failed for inode 206 at logical offset 0 with max blocks 1 with error 117 EXT4-fs (mmcblk0p1): This should not happen!! Data will be lost EXT4-fs (mmcblk0p1): Delayed block allocation failed for inode 2243 at logical offset 0 with max blocks 1 with error 117 EXT4-fs (mmcblk0p1): This should not happen!! Data will be lost EXT4-fs (mmcblk0p1): Delayed block allocation failed for inode 2239 at logical offset 0 with max blocks 1 with error 117 EXT4-fs (mmcblk0p1): This should not happen!! Data will be lost EXT4-fs (mmcblk0p1): error count since last fsck: 1 EXT4-fs (mmcblk0p1): initial error at time 1765597433: ext4_mb_generate_buddy:760 EXT4-fs (mmcblk0p1): last error at time 1765597433: ext4_mb_generate_buddy:760 ... According to the log analysis, blocks are always requested from the corrupted block group. This may happen as follows: ext4_mb_find_by_goal ext4_mb_load_buddy ext4_mb_load_buddy_gfp ext4_mb_init_cache ext4_read_block_bitmap_nowait ext4_wait_block_bitmap ext4_validate_block_bitmap if (!grp || EXT4_MB_GRP_BBITMAP_CORRUPT(grp)) return -EFSCORRUPTED; // There's no logs. if (err) return err; // Will return error ext4_lock_group(ac->ac_sb, group); if (unlikely(EXT4_MB_GRP_BBITMAP_CORRUPT(e4b->bd_info))) // Unreachable goto out; After commit 9008a58e5dce ("ext4: make the bitmap read routines return real error codes") merged, Commit 163a203ddb36 ("ext4: mark block group as corrupt on block bitmap error") is no real solution for allocating blocks from corrupted block groups. This is because if 'EXT4_MB_GRP_BBITMAP_CORRUPT(e4b->bd_info)' is true, then 'ext4_mb_load_buddy()' may return an error. This means that the block allocation will fail. Therefore, check block group if corrupted when ext4_mb_load_buddy() returns error.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: x86: shadow stacks: proper error handling for mmap lock 김영민 reports that shstk_pop_sigframe() doesn't check for errors from mmap_read_lock_killable(), which is a silly oversight, and also shows that we haven't marked those functions with "__must_check", which would have immediately caught it. So let's fix both issues.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: perf/arm-cmn: Reject unsupported hardware configurations So far we've been fairly lax about accepting both unknown CMN models (at least with a warning), and unknown revisions of those which we do know, as although things do frequently change between releases, typically enough remains the same to be somewhat useful for at least some basic bringup checks. However, we also make assumptions of the maximum supported sizes and numbers of things in various places, and there's no guarantee that something new might not be bigger and lead to nasty array overflows. Make sure we only try to run on things that actually match our assumptions and so will not risk memory corruption. We have at least always failed on completely unknown node types, so update that error message for clarity and consistency too.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: rnbd-srv: Zero the rsp buffer before using it Before using the data buffer to send back the response message, zero it completely. This prevents any stray bytes to be picked up by the client side when there the message is exchanged between different protocol versions.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: netconsole: avoid OOB reads, msg is not nul-terminated msg passed to netconsole from the console subsystem is not guaranteed to be nul-terminated. Before recent commit 7eab73b18630 ("netconsole: convert to NBCON console infrastructure") the message would be placed in printk_shared_pbufs, a static global buffer, so KASAN had harder time catching OOB accesses. Now we see: printk: console [netcon_ext0] enabled BUG: KASAN: slab-out-of-bounds in string+0x1f7/0x240 Read of size 1 at addr ffff88813b6d4c00 by task pr/netcon_ext0/594 CPU: 65 UID: 0 PID: 594 Comm: pr/netcon_ext0 Not tainted 6.19.0-11754-g4246fd6547c9 Call Trace: kasan_report+0xe4/0x120 string+0x1f7/0x240 vsnprintf+0x655/0xba0 scnprintf+0xba/0x120 netconsole_write+0x3fe/0xa10 nbcon_emit_next_record+0x46e/0x860 nbcon_kthread_func+0x623/0x750 Allocated by task 1: nbcon_alloc+0x1ea/0x450 register_console+0x26b/0xe10 init_netconsole+0xbb0/0xda0 The buggy address belongs to the object at ffff88813b6d4000 which belongs to the cache kmalloc-4k of size 4096 The buggy address is located 0 bytes to the right of allocated 3072-byte region [ffff88813b6d4000, ffff88813b6d4c00)


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: thermal: core: Fix thermal zone device registration error path If thermal_zone_device_register_with_trips() fails after registering a thermal zone device, it needs to wait for the tz->removal completion like thermal_zone_device_unregister(), in case user space has managed to take a reference to the thermal zone device's kobject, in which case thermal_release() may not be called by the error path itself and tz may be freed prematurely. Add the missing wait_for_completion() call to the thermal zone device registration error path.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: btrfs: fix chunk map leak in btrfs_map_block() after btrfs_chunk_map_num_copies() Fix a chunk map leak in btrfs_map_block(): if we return early with -EINVAL, we're not freeing the chunk map that we've just looked up.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: nfsd: Fix cred ref leak in nfsd_nl_listener_set_doit(). nfsd_nl_listener_set_doit() uses get_current_cred() without put_cred(). As we can see from other callers, svc_xprt_create_from_sa() does not require the extra refcount. nfsd_nl_listener_set_doit() is always in the process context, sendmsg(), and current->cred does not go away. Let's use current_cred() in nfsd_nl_listener_set_doit().


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: tipc: fix divide-by-zero in tipc_sk_filter_connect() A user can set conn_timeout to any value via setsockopt(TIPC_CONN_TIMEOUT), including values less than 4. When a SYN is rejected with TIPC_ERR_OVERLOAD and the retry path in tipc_sk_filter_connect() executes: delay %= (tsk->conn_timeout / 4); If conn_timeout is in the range [0, 3], the integer division yields 0, and the modulo operation triggers a divide-by-zero exception, causing a kernel oops/panic. Fix this by clamping conn_timeout to a minimum of 4 at the point of use in tipc_sk_filter_connect(). Oops: divide error: 0000 [#1] SMP KASAN NOPTI CPU: 0 UID: 0 PID: 119 Comm: poc-F144 Not tainted 7.0.0-rc2+ RIP: 0010:tipc_sk_filter_rcv (net/tipc/socket.c:2236 net/tipc/socket.c:2362) Call Trace: tipc_sk_backlog_rcv (include/linux/instrumented.h:82 include/linux/atomic/atomic-instrumented.h:32 include/net/sock.h:2357 net/tipc/socket.c:2406) __release_sock (include/net/sock.h:1185 net/core/sock.c:3213) release_sock (net/core/sock.c:3797) tipc_connect (net/tipc/socket.c:2570) __sys_connect (include/linux/file.h:62 include/linux/file.h:83 net/socket.c:2098)


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: mctp: route: hold key->lock in mctp_flow_prepare_output() mctp_flow_prepare_output() checks key->dev and may call mctp_dev_set_key(), but it does not hold key->lock while doing so. mctp_dev_set_key() and mctp_dev_release_key() are annotated with __must_hold(&key->lock), so key->dev access is intended to be serialized by key->lock. The mctp_sendmsg() transmit path reaches mctp_flow_prepare_output() via mctp_local_output() -> mctp_dst_output() without holding key->lock, so the check-and-set sequence is racy. Example interleaving: CPU0 CPU1 ---- ---- mctp_flow_prepare_output(key, devA) if (!key->dev) // sees NULL mctp_flow_prepare_output( key, devB) if (!key->dev) // still NULL mctp_dev_set_key(devB, key) mctp_dev_hold(devB) key->dev = devB mctp_dev_set_key(devA, key) mctp_dev_hold(devA) key->dev = devA // overwrites devB Now both devA and devB references were acquired, but only the final key->dev value is tracked for release. One reference can be lost, causing a resource leak as mctp_dev_release_key() would only decrease the reference on one dev. Fix by taking key->lock around the key->dev check and mctp_dev_set_key() call.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: slip: reject VJ receive packets on instances with no rstate array slhc_init() accepts rslots == 0 as a valid configuration, with the documented meaning of 'no receive compression'. In that case the allocation loop in slhc_init() is skipped, so comp->rstate stays NULL and comp->rslot_limit stays 0 (from the kzalloc of struct slcompress). The receive helpers do not defend against that configuration. slhc_uncompress() dereferences comp->rstate[x] when the VJ header carries an explicit connection ID, and slhc_remember() later assigns cs = &comp->rstate[...] after only comparing the packet's slot number to comp->rslot_limit. Because rslot_limit is 0, slot 0 passes the range check, and the code dereferences a NULL rstate. The configuration is reachable in-tree through PPP. PPPIOCSMAXCID stores its argument in a signed int, and (val >> 16) uses arithmetic shift. Passing 0xffff0000 therefore sign-extends to -1, so val2 + 1 is 0 and ppp_generic.c ends up calling slhc_init(0, 1). Because /dev/ppp open is gated by ns_capable(CAP_NET_ADMIN), the whole path is reachable from an unprivileged user namespace. Once the malformed VJ state is installed, any inbound VJ-compressed or VJ-uncompressed frame that selects slot 0 crashes the kernel in softirq context: Oops: general protection fault, probably for non-canonical address 0xdffffc0000000000: 0000 [#1] SMP KASAN NOPTI KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007] RIP: 0010:slhc_uncompress (drivers/net/slip/slhc.c:519) Call Trace: <TASK> ppp_receive_nonmp_frame (drivers/net/ppp/ppp_generic.c:2466) ppp_input (drivers/net/ppp/ppp_generic.c:2359) ppp_async_process (drivers/net/ppp/ppp_async.c:492) tasklet_action_common (kernel/softirq.c:926) handle_softirqs (kernel/softirq.c:623) run_ksoftirqd (kernel/softirq.c:1055) smpboot_thread_fn (kernel/smpboot.c:160) kthread (kernel/kthread.c:436) ret_from_fork (arch/x86/kernel/process.c:164) </TASK> Reject the receive side on such instances instead of touching rstate. slhc_uncompress() falls through to its existing 'bad' label, which bumps sls_i_error and enters the toss state. slhc_remember() mirrors that with an explicit sls_i_error increment followed by slhc_toss(); the sls_i_runt counter is not used here because a missing rstate is an internal configuration state, not a runt packet. The transmit path is unaffected: the only in-tree caller that picks rslots from userspace (ppp_generic.c) still supplies tslots >= 1, and slip.c always calls slhc_init(16, 16), so comp->tstate remains valid and slhc_compress() continues to work.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: bareudp: fix NULL pointer dereference in bareudp_fill_metadata_dst() bareudp_fill_metadata_dst() passes bareudp->sock to udp_tunnel6_dst_lookup() in the IPv6 path without a NULL check. The socket is only created in bareudp_open() and NULLed in bareudp_stop(), so calling this function while the device is down triggers a NULL dereference via sock->sk. BUG: kernel NULL pointer dereference, address: 0000000000000018 RIP: 0010:udp_tunnel6_dst_lookup (net/ipv6/ip6_udp_tunnel.c:160) Call Trace: <TASK> bareudp_fill_metadata_dst (drivers/net/bareudp.c:532) do_execute_actions (net/openvswitch/actions.c:901) ovs_execute_actions (net/openvswitch/actions.c:1589) ovs_packet_cmd_execute (net/openvswitch/datapath.c:700) genl_family_rcv_msg_doit (net/netlink/genetlink.c:1114) genl_rcv_msg (net/netlink/genetlink.c:1209) netlink_rcv_skb (net/netlink/af_netlink.c:2550) </TASK> Add a NULL check returning -ESHUTDOWN, consistent with the xmit paths in the same driver.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: RDMA/rxe: Fix double free in rxe_srq_from_init In rxe_srq_from_init(), the queue pointer 'q' is assigned to 'srq->rq.queue' before copying the SRQ number to user space. If copy_to_user() fails, the function calls rxe_queue_cleanup() to free the queue, but leaves the now-invalid pointer in 'srq->rq.queue'. The caller of rxe_srq_from_init() (rxe_create_srq) eventually calls rxe_srq_cleanup() upon receiving the error, which triggers a second rxe_queue_cleanup() on the same memory, leading to a double free. The call trace looks like this: kmem_cache_free+0x.../0x... rxe_queue_cleanup+0x1a/0x30 [rdma_rxe] rxe_srq_cleanup+0x42/0x60 [rdma_rxe] rxe_elem_release+0x31/0x70 [rdma_rxe] rxe_create_srq+0x12b/0x1a0 [rdma_rxe] ib_create_srq_user+0x9a/0x150 [ib_core] Fix this by moving 'srq->rq.queue = q' after copy_to_user.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: RDMA/uverbs: Validate wqe_size before using it in ib_uverbs_post_send ib_uverbs_post_send() uses cmd.wqe_size from userspace without any validation before passing it to kmalloc() and using the allocated buffer as struct ib_uverbs_send_wr. If a user provides a small wqe_size value (e.g., 1), kmalloc() will succeed, but subsequent accesses to user_wr->opcode, user_wr->num_sge, and other fields will read beyond the allocated buffer, resulting in an out-of-bounds read from kernel heap memory. This could potentially leak sensitive kernel information to userspace. Additionally, providing an excessively large wqe_size can trigger a WARNING in the memory allocation path, as reported by syzkaller. This is inconsistent with ib_uverbs_unmarshall_recv() which properly validates that wqe_size >= sizeof(struct ib_uverbs_recv_wr) before proceeding. Add the same validation for ib_uverbs_post_send() to ensure wqe_size is at least sizeof(struct ib_uverbs_send_wr).


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: bpf: Fix bpf_xdp_store_bytes proto for read-only arg While making some maps in Cilium read-only from the BPF side, we noticed that the bpf_xdp_store_bytes proto is incorrect. In particular, the verifier was throwing the following error: ; ret = ctx_store_bytes(ctx, l3_off + offsetof(struct iphdr, saddr), &nat->address, 4, 0); 635: (79) r1 = *(u64 *)(r10 -144) ; R1=ctx() R10=fp0 fp-144=ctx() 636: (b4) w2 = 26 ; R2=26 637: (b4) w4 = 4 ; R4=4 638: (b4) w5 = 0 ; R5=0 639: (85) call bpf_xdp_store_bytes#190 write into map forbidden, value_size=6 off=0 size=4 nat comes from a BPF_F_RDONLY_PROG map, so R3 is a PTR_TO_MAP_VALUE. The verifier checks the helper's memory access to R3 in check_mem_size_reg, as it reaches ARG_CONST_SIZE argument. The third argument has expected type ARG_PTR_TO_UNINIT_MEM, which includes the MEM_WRITE flag. The verifier thus checks for a BPF_WRITE access on R3. Given R3 points to a read-only map, the check fails. Conversely, ARG_PTR_TO_UNINIT_MEM can also lead to the helper reading from uninitialized memory. This patch simply fixes the expected argument type to match that of bpf_skb_store_bytes.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: RDMA/iwcm: Fix workqueue list corruption by removing work_list The commit e1168f0 ("RDMA/iwcm: Simplify cm_event_handler()") changed the work submission logic to unconditionally call queue_work() with the expectation that queue_work() would have no effect if work was already pending. The problem is that a free list of struct iwcm_work is used (for which struct work_struct is embedded), so each call to queue_work() is basically unique and therefore does indeed queue the work. This causes a problem in the work handler which walks the work_list until it's empty to process entries. This means that a single run of the work handler could process item N+1 and release it back to the free list while the actual workqueue entry is still queued. It could then get reused (INIT_WORK...) and lead to list corruption in the workqueue logic. Fix this by just removing the work_list. The workqueue already does this for us. This fixes the following error that was observed when stress testing with ucmatose on an Intel E830 in iWARP mode: [ 151.465780] list_del corruption. next->prev should be ffff9f0915c69c08, but was ffff9f0a1116be08. (next=ffff9f0a15b11c08) [ 151.466639] ------------[ cut here ]------------ [ 151.466986] kernel BUG at lib/list_debug.c:67! [ 151.467349] Oops: invalid opcode: 0000 [#1] SMP NOPTI [ 151.467753] CPU: 14 UID: 0 PID: 2306 Comm: kworker/u64:18 Not tainted 6.19.0-rc4+ #1 PREEMPT(voluntary) [ 151.468466] Hardware name: QEMU Ubuntu 24.04 PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 [ 151.469192] Workqueue: 0x0 (iw_cm_wq) [ 151.469478] RIP: 0010:__list_del_entry_valid_or_report+0xf0/0x100 [ 151.469942] Code: c7 58 5f 4c b2 e8 10 50 aa ff 0f 0b 48 89 ef e8 36 57 cb ff 48 8b 55 08 48 89 e9 48 89 de 48 c7 c7 a8 5f 4c b2 e8 f0 4f aa ff <0f> 0b 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 90 90 90 90 90 90 [ 151.471323] RSP: 0000:ffffb15644e7bd68 EFLAGS: 00010046 [ 151.471712] RAX: 000000000000006d RBX: ffff9f0915c69c08 RCX: 0000000000000027 [ 151.472243] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff9f0a37d9c600 [ 151.472768] RBP: ffff9f0a15b11c08 R08: 0000000000000000 R09: c0000000ffff7fff [ 151.473294] R10: 0000000000000001 R11: ffffb15644e7bba8 R12: ffff9f092339ee68 [ 151.473817] R13: ffff9f0900059c28 R14: ffff9f092339ee78 R15: 0000000000000000 [ 151.474344] FS: 0000000000000000(0000) GS:ffff9f0a847b5000(0000) knlGS:0000000000000000 [ 151.474934] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 151.475362] CR2: 0000559e233a9088 CR3: 000000020296b004 CR4: 0000000000770ef0 [ 151.475895] PKRU: 55555554 [ 151.476118] Call Trace: [ 151.476331] <TASK> [ 151.476497] move_linked_works+0x49/0xa0 [ 151.476792] __pwq_activate_work.isra.46+0x2f/0xa0 [ 151.477151] pwq_dec_nr_in_flight+0x1e0/0x2f0 [ 151.477479] process_scheduled_works+0x1c8/0x410 [ 151.477823] worker_thread+0x125/0x260 [ 151.478108] ? __pfx_worker_thread+0x10/0x10 [ 151.478430] kthread+0xfe/0x240 [ 151.478671] ? __pfx_kthread+0x10/0x10 [ 151.478955] ? __pfx_kthread+0x10/0x10 [ 151.479240] ret_from_fork+0x208/0x270 [ 151.479523] ? __pfx_kthread+0x10/0x10 [ 151.479806] ret_from_fork_asm+0x1a/0x30 [ 151.480103] </TASK>


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: RDMA/rxe: Fix race condition in QP timer handlers I encontered the following warning: WARNING: drivers/infiniband/sw/rxe/rxe_task.c:249 at rxe_sched_task+0x1c8/0x238 [rdma_rxe], CPU#0: swapper/0/0 ... libsha1 [last unloaded: ip6_udp_tunnel] CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Tainted: G C 6.19.0-rc5-64k-v8+ #37 PREEMPT Tainted: [C]=CRAP Hardware name: Raspberry Pi 4 Model B Rev 1.2 Call trace: rxe_sched_task+0x1c8/0x238 [rdma_rxe] (P) retransmit_timer+0x130/0x188 [rdma_rxe] call_timer_fn+0x68/0x4d0 __run_timers+0x630/0x888 ... WARNING: drivers/infiniband/sw/rxe/rxe_task.c:38 at rxe_sched_task+0x1c0/0x238 [rdma_rxe], CPU#0: swapper/0/0 ... WARNING: drivers/infiniband/sw/rxe/rxe_task.c:111 at do_work+0x488/0x5c8 [rdma_rxe], CPU#3: kworker/u17:4/93400 ... refcount_t: underflow; use-after-free. WARNING: lib/refcount.c:28 at refcount_warn_saturate+0x138/0x1a0, CPU#3: kworker/u17:4/93400 The issue is caused by a race condition between retransmit_timer() and rxe_destroy_qp, leading to the Queue Pair's (QP) reference count dropping to zero during timer handler execution. It seems this warning is harmless because rxe_qp_do_cleanup() will flush all pending timers and requests. Example of flow causing the issue: CPU0 CPU1 retransmit_timer() { spin_lock_irqsave rxe_destroy_qp() __rxe_cleanup() __rxe_put() // qp->ref_count decrease to 0 rxe_qp_do_cleanup() { if (qp->valid) { rxe_sched_task() { WARN_ON(rxe_read(task->qp) <= 0); } } spin_unlock_irqrestore } spin_lock_irqsave qp->valid = 0 spin_unlock_irqrestore } Ensure the QP's reference count is maintained and its validity is checked within the timer callbacks by adding calls to rxe_get(qp) and corresponding rxe_put(qp) after use.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: bpf: Fix tcx/netkit detach permissions when prog fd isn't given This commit fixes a security issue where BPF_PROG_DETACH on tcx or netkit devices could be executed by any user when no program fd was provided, bypassing permission checks. The fix adds a capability check for CAP_NET_ADMIN or CAP_SYS_ADMIN in this case.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: ext4: fix e4b bitmap inconsistency reports A bitmap inconsistency issue was observed during stress tests under mixed huge-page workloads. Ext4 reported multiple e4b bitmap check failures like: ext4_mb_complex_scan_group:2508: group 350, 8179 free clusters as per group info. But got 8192 blocks Analysis and experimentation confirmed that the issue is caused by a race condition between page migration and bitmap modification. Although this timing window is extremely narrow, it is still hit in practice: folio_lock ext4_mb_load_buddy __migrate_folio check ref count folio_mc_copy __filemap_get_folio folio_try_get(folio) ...... mb_mark_used ext4_mb_unload_buddy __folio_migrate_mapping folio_ref_freeze folio_unlock The root cause of this issue is that the fast path of load_buddy only increments the folio's reference count, which is insufficient to prevent concurrent folio migration. We observed that the folio migration process acquires the folio lock. Therefore, we can determine whether to take the fast path in load_buddy by checking the lock status. If the folio is locked, we opt for the slow path (which acquires the lock) to close this concurrency window. Additionally, this change addresses the following issues: When the DOUBLE_CHECK macro is enabled to inspect bitmap-related issues, the following error may be triggered: corruption in group 324 at byte 784(6272): f in copy != ff on disk/prealloc Analysis reveals that this is a false positive. There is a specific race window where the bitmap and the group descriptor become momentarily inconsistent, leading to this error report: ext4_mb_load_buddy ext4_mb_load_buddy __filemap_get_folio(create|lock) folio_lock ext4_mb_init_cache folio_mark_uptodate __filemap_get_folio(no lock) ...... mb_mark_used mb_mark_used_double mb_cmp_bitmaps mb_set_bits(e4b->bd_bitmap) folio_unlock The original logic assumed that since mb_cmp_bitmaps is called when the bitmap is newly loaded from disk, the folio lock would be sufficient to prevent concurrent access. However, this overlooks a specific race condition: if another process attempts to load buddy and finds the folio is already in an uptodate state, it will immediately begin using it without holding folio lock.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: bonding: alb: fix UAF in rlb_arp_recv during bond up/down The ALB RX path may access rx_hashtbl concurrently with bond teardown. During rapid bond up/down cycles, rlb_deinitialize() frees rx_hashtbl while RX handlers are still running, leading to a null pointer dereference detected by KASAN. However, the root cause is that rlb_arp_recv() can still be accessed after setting recv_probe to NULL, which is actually a use-after-free (UAF) issue. That is the reason for using the referenced commit in the Fixes tag. [ 214.174138] Oops: general protection fault, probably for non-canonical address 0xdffffc000000001d: 0000 [#1] SMP KASAN PTI [ 214.186478] KASAN: null-ptr-deref in range [0x00000000000000e8-0x00000000000000ef] [ 214.194933] CPU: 30 UID: 0 PID: 2375 Comm: ping Kdump: loaded Not tainted 6.19.0-rc8+ #2 PREEMPT(voluntary) [ 214.205907] Hardware name: Dell Inc. PowerEdge R730/0WCJNT, BIOS 2.14.0 01/14/2022 [ 214.214357] RIP: 0010:rlb_arp_recv+0x505/0xab0 [bonding] [ 214.220320] Code: 0f 85 2b 05 00 00 48 b8 00 00 00 00 00 fc ff df 40 0f b6 ed 48 c1 e5 06 49 03 ad 78 01 00 00 48 8d 7d 28 48 89 fa 48 c1 ea 03 <0f> b6 04 02 84 c0 74 06 0f 8e 12 05 00 00 80 7d 28 00 0f 84 8c 00 [ 214.241280] RSP: 0018:ffffc900073d8870 EFLAGS: 00010206 [ 214.247116] RAX: dffffc0000000000 RBX: ffff888168556822 RCX: ffff88816855681e [ 214.255082] RDX: 000000000000001d RSI: dffffc0000000000 RDI: 00000000000000e8 [ 214.263048] RBP: 00000000000000c0 R08: 0000000000000002 R09: ffffed11192021c8 [ 214.271013] R10: ffff8888c9010e43 R11: 0000000000000001 R12: 1ffff92000e7b119 [ 214.278978] R13: ffff8888c9010e00 R14: ffff888168556822 R15: ffff888168556810 [ 214.286943] FS: 00007f85d2d9cb80(0000) GS:ffff88886ccb3000(0000) knlGS:0000000000000000 [ 214.295966] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 214.302380] CR2: 00007f0d047b5e34 CR3: 00000008a1c2e002 CR4: 00000000001726f0 [ 214.310347] Call Trace: [ 214.313070] <IRQ> [ 214.315318] ? __pfx_rlb_arp_recv+0x10/0x10 [bonding] [ 214.320975] bond_handle_frame+0x166/0xb60 [bonding] [ 214.326537] ? __pfx_bond_handle_frame+0x10/0x10 [bonding] [ 214.332680] __netif_receive_skb_core.constprop.0+0x576/0x2710 [ 214.339199] ? __pfx_arp_process+0x10/0x10 [ 214.343775] ? sched_balance_find_src_group+0x98/0x630 [ 214.349513] ? __pfx___netif_receive_skb_core.constprop.0+0x10/0x10 [ 214.356513] ? arp_rcv+0x307/0x690 [ 214.360311] ? __pfx_arp_rcv+0x10/0x10 [ 214.364499] ? __lock_acquire+0x58c/0xbd0 [ 214.368975] __netif_receive_skb_one_core+0xae/0x1b0 [ 214.374518] ? __pfx___netif_receive_skb_one_core+0x10/0x10 [ 214.380743] ? lock_acquire+0x10b/0x140 [ 214.385026] process_backlog+0x3f1/0x13a0 [ 214.389502] ? process_backlog+0x3aa/0x13a0 [ 214.394174] __napi_poll.constprop.0+0x9f/0x370 [ 214.399233] net_rx_action+0x8c1/0xe60 [ 214.403423] ? __pfx_net_rx_action+0x10/0x10 [ 214.408193] ? lock_acquire.part.0+0xbd/0x260 [ 214.413058] ? sched_clock_cpu+0x6c/0x540 [ 214.417540] ? mark_held_locks+0x40/0x70 [ 214.421920] handle_softirqs+0x1fd/0x860 [ 214.426302] ? __pfx_handle_softirqs+0x10/0x10 [ 214.431264] ? __neigh_event_send+0x2d6/0xf50 [ 214.436131] do_softirq+0xb1/0xf0 [ 214.439830] </IRQ> The issue is reproducible by repeatedly running ip link set bond0 up/down while receiving ARP messages, where rlb_arp_recv() can race with rlb_deinitialize() and dereference a freed rx_hashtbl entry. Fix this by setting recv_probe to NULL and then calling synchronize_net() to wait for any concurrent RX processing to finish. This ensures that no RX handler can access rx_hashtbl after it is freed in bond_alb_deinitialize().


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: gfs2: Fix use-after-free in iomap inline data write path The inline data buffer head (dibh) is being released prematurely in gfs2_iomap_begin() via release_metapath() while iomap->inline_data still points to dibh->b_data. This causes a use-after-free when iomap_write_end_inline() later attempts to write to the inline data area. The bug sequence: 1. gfs2_iomap_begin() calls gfs2_meta_inode_buffer() to read inode metadata into dibh 2. Sets iomap->inline_data = dibh->b_data + sizeof(struct gfs2_dinode) 3. Calls release_metapath() which calls brelse(dibh), dropping refcount to 0 4. kswapd reclaims the page (~39ms later in the syzbot report) 5. iomap_write_end_inline() tries to memcpy() to iomap->inline_data 6. KASAN detects use-after-free write to freed memory Fix by storing dibh in iomap->private and incrementing its refcount with get_bh() in gfs2_iomap_begin(). The buffer is then properly released in gfs2_iomap_end() after the inline write completes, ensuring the page stays alive for the entire iomap operation. Note: A C reproducer is not available for this issue. The fix is based on analysis of the KASAN report and code review showing the buffer head is freed before use. [agruenba: Take buffer head reference in gfs2_iomap_begin() to avoid leaks in gfs2_iomap_get() and gfs2_iomap_alloc().]


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: thermal: core: Fix thermal zone governor cleanup issues If thermal_zone_device_register_with_trips() fails after adding a thermal governor to the thermal zone being registered, the governor is not removed from it as appropriate which may lead to a memory leak. In turn, thermal_zone_device_unregister() calls thermal_set_governor() without acquiring the thermal zone lock beforehand which may race with a governor update via sysfs and may lead to a use-after-free in that case. Address these issues by adding two thermal_set_governor() calls, one to thermal_release() to remove the governor from the given thermal zone, and one to the thermal zone registration error path to cover failures preceding the thermal zone device registration.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: RDMA/rxe: Validate pad and ICRC before payload_size() in rxe_rcv rxe_rcv() currently checks only that the incoming packet is at least header_size(pkt) bytes long before payload_size() is used. However, payload_size() subtracts both the attacker-controlled BTH pad field and RXE_ICRC_SIZE from pkt->paylen: payload_size = pkt->paylen - offset[RXE_PAYLOAD] - bth_pad(pkt) - RXE_ICRC_SIZE This means a short packet can still make payload_size() underflow even if it includes enough bytes for the fixed headers. Simply requiring header_size(pkt) + RXE_ICRC_SIZE is not sufficient either, because a packet with a forged non-zero BTH pad can still leave payload_size() negative and pass an underflowed value to later receive-path users. Fix this by validating pkt->paylen against the full minimum length required by payload_size(): header_size(pkt) + bth_pad(pkt) + RXE_ICRC_SIZE.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: spi: fix resource leaks on device setup failure Make sure to call controller cleanup() if spi_setup() fails while registering a device to avoid leaking any resources allocated by setup().


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: ALSA: aloop: Fix peer runtime UAF during format-change stop loopback_check_format() may stop the capture side when playback starts with parameters that no longer match a running capture stream. Commit 826af7fa62e3 ("ALSA: aloop: Fix racy access at PCM trigger") moved the peer lookup under cable->lock, but the actual snd_pcm_stop() still runs after dropping that lock. A concurrent close can clear the capture entry from cable->streams[] and detach or free its runtime while the playback trigger path still holds a stale peer substream pointer. Keep a per-cable count of in-flight peer stops before dropping cable->lock, and make free_cable() wait for those stops before detaching the runtime. This preserves the existing behavior while making the peer runtime lifetime explicit.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: ext4: fix bounds check in check_xattrs() to prevent out-of-bounds access The bounds check for the next xattr entry in check_xattrs() uses (void *)next >= end, which allows next to point within sizeof(u32) bytes of end. On the next loop iteration, IS_LAST_ENTRY() reads 4 bytes via *(__u32 *)(entry), which can overrun the valid xattr region. For example, if next lands at end - 1, the check passes since next < end, but IS_LAST_ENTRY() reads 4 bytes starting at end - 1, accessing 3 bytes beyond the valid region. Fix this by changing the check to (void *)next + sizeof(u32) > end, ensuring there is always enough space for the IS_LAST_ENTRY() read on the subsequent iteration.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: RDMA/rxe: Reject non-8-byte ATOMIC_WRITE payloads atomic_write_reply() at drivers/infiniband/sw/rxe/rxe_resp.c unconditionally dereferences 8 bytes at payload_addr(pkt): value = *(u64 *)payload_addr(pkt); check_rkey() previously accepted an ATOMIC_WRITE request with pktlen == resid == 0 because the length validation only compared pktlen against resid. A remote initiator that sets the RETH length to 0 therefore reaches atomic_write_reply() with a zero-byte logical payload, and the responder reads sizeof(u64) bytes from past the logical end of the packet into skb->head tailroom, then writes those 8 bytes into the attacker's MR via rxe_mr_do_atomic_write(). That is a remote disclosure of 4 bytes of kernel tailroom per probe (the other 4 bytes are the packet's own trailing ICRC). IBA oA19-28 defines ATOMIC_WRITE as exactly 8 bytes. Anything else is protocol-invalid. Hoist a strict length check into check_rkey() so the responder never reaches the unchecked dereference, and keep the existing WRITE-family length logic for the normal RDMA WRITE path. Reproduced on mainline with an unmodified rxe driver: a sustained zero-length ATOMIC_WRITE probe repeatedly leaks adjacent skb head-buffer bytes into the attacker's MR, including recognisable kernel strings and partial kernel-direct-map pointer words. With this patch applied the responder rejects the PDU and the MR stays all-zero.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: btrfs: fix btrfs_ioctl_space_info() slot_count TOCTOU which can lead to info-leak btrfs_ioctl_space_info() has a TOCTOU race between two passes over the block group RAID type lists. The first pass counts entries to determine the allocation size, then the second pass fills the buffer. The groups_sem rwlock is released between passes, allowing concurrent block group removal to reduce the entry count. When the second pass fills fewer entries than the first pass counted, copy_to_user() copies the full alloc_size bytes including trailing uninitialized kmalloc bytes to userspace. Fix by copying only total_spaces entries (the actually-filled count from the second pass) instead of alloc_size bytes, and switch to kzalloc so any future copy size mismatch cannot leak heap data.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: RDMA/mlx5: Fix error path fall-through in mlx5_ib_dev_res_srq_init() mlx5_ib_dev_res_srq_init() allocates two SRQs, s0 and s1. When ib_create_srq() fails for s1, the error branch destroys s0 but falls through and unconditionally assigns the freed s0 and the ERR_PTR s1 to devr->s0 and devr->s1. This leads to several problems: the lock-free fast path checks "if (devr->s1) return 0;" and treats the ERR_PTR as already initialised; users in mlx5_ib_create_qp() dereference the freed SRQ or ERR_PTR via to_msrq(devr->s0)->msrq.srqn; and mlx5_ib_dev_res_cleanup() dereferences the ERR_PTR and double-frees s0 on teardown. Fix by adding the same `goto unlock` in the s1 failure path.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: RDMA/mlx4: Fix mis-use of RCU in mlx4_srq_event() Sashiko points out the radix_tree itself is RCU safe, but nothing ever frees the mlx4_srq struct with RCU, and it isn't even accessed within the RCU critical section. It also will crash if an event is delivered before the srq object is finished initializing. Use the spinlock since it isn't easy to make RCU work, use refcount_inc_not_zero() to protect against partially initialized objects, and order the refcount_set() to be after the srq is fully initialized.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: vgic-its: Drop the translation cache reference only for the erased entry vgic_its_invalidate_cache() walks the per-ITS translation cache with xa_for_each() and drops the cache's reference on each entry with vgic_put_irq(). It puts the iterated pointer, though, rather than the value returned by xa_erase(). The function is called from contexts that do not exclude one another: the ITS command handlers hold its_lock, the GITS_CTLR write path holds cmd_lock, and the path that clears EnableLPIs in a redistributor's GICR_CTLR holds neither. Two or more of them can drain the same cache concurrently, and if each one observes the same entry, erases it and then puts it, the single reference the cache holds on that entry is dropped more than once. The entry can then be freed while an ITE still maps it. xa_erase() is atomic and returns the previous entry, so put only the entry that this context actually removed. The cache reference is then dropped exactly once per entry even when the invalidations run concurrently, and the behavior is unchanged when only one context runs.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: Reassign nested_mmus array behind mmu_lock kvm->arch.nested_mmus[] is walked under kvm->mmu_lock, including from the MMU notifier path (kvm_unmap_gfn_range() -> kvm_nested_s2_unmap()), which can run at any time. kvm_vcpu_init_nested() reallocates the array and frees the old buffer while holding only kvm->arch.config_lock, so such a walker can reference the freed array. Allocate the new array outside of mmu_lock, as the allocation can sleep. Under the lock, copy the existing entries, fix up the back pointers and reassign the array. Free the old buffer after dropping the lock, as kvfree() can sleep as well.


Затронутые продукты
openSUSE Leap 16.0:cluster-md-kmp-64kb-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-azure-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-default-6.12.0-160000.35.1
openSUSE Leap 16.0:cluster-md-kmp-rt-6.12.0-160000.35.1

Ссылки