kernel-5.14.0-687.50.1.el9_8
エラータID: AXSA:2026-2164:110
The kernel packages contain the Linux kernel, the core of any Linux operating system.
Security Fix(es):
* kernel: crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg (CVE-2025-39964)
* kernel: iommu/vt-d: Clear Present bit before tearing down PASID entry (CVE-2026-45894)
* kernel: crypto: ccp - Fix a crash due to incorrect cleanup usage of kfree (CVE-2026-45959)
* kernel: dm cache policy smq: fix missing locks in invalidating cache blocks (CVE-2026-53062)
* kernel: keys: Pin request_key_auth payload in instantiate paths (CVE-2026-63823)
* kernel: net/mlx5: Fix MCIA register buffer overflow on 32 dword reads (CVE-2026-68293)
* kernel: Linux kernel: libceph null pointer dereference leads to denial of service (CVE-2026-68157)
* kernel: Linux kernel Bluetooth RFCOMM: Denial of Service via use-after-free in set_termios (CVE-2026-68188)
* kernel: libceph: refresh auth->authorizer_buf{,_len} after authorizer update (CVE-2026-68156)
* kernel: Linux kernel (libceph): Denial of Service due to malformed monitor maps (CVE-2026-68155)
* kernel: Bluetooth: mgmt: hold reference for hci_conn in mgmt_pending_cmds (CVE-2026-68391)
* kernel: net/mlx5e: macsec: fix use-after-free of metadata_dst on RX SC delete (CVE-2026-72072)
* kernel: mm/hugetlb: fix list corruption in allocate_file_region_entries() (CVE-2026-74518)
Bug Fix(es) and Enhancement(s):
* [Intel 9.8 FEAT] ice: Driver Update [rhel-9.8.z] (JIRA:RHEL-213003)
* RHEL 9.8: Multiuser Kerberized DFS shares fail to mount with UID mount option [rhel-9.8.z] (JIRA:RHEL-254108)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
CVE-2025-39964
In the Linux kernel, the following vulnerability has been resolved: crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg Issuing two writes to the same af_alg socket is bogus as the data will be interleaved in an unpredictable fashion. Furthermore, concurrent writes may create inconsistencies in the internal socket state. Disallow this by adding a new ctx->write field that indiciates exclusive ownership for writing.
CVE-2026-45894
In the Linux kernel, the following vulnerability has been resolved: iommu/vt-d: Clear Present bit before tearing down PASID entry The Intel VT-d Scalable Mode PASID table entry consists of 512 bits (64 bytes). When tearing down an entry, the current implementation zeros the entire 64-byte structure immediately using multiple 64-bit writes. Since the IOMMU hardware may fetch these 64 bytes using multiple internal transactions (e.g., four 128-bit bursts), updating or zeroing the entire entry while it is active (P=1) risks a "torn" read. If a hardware fetch occurs simultaneously with the CPU zeroing the entry, the hardware could observe an inconsistent state, leading to unpredictable behavior or spurious faults. Follow the "Guidance to Software for Invalidations" in the VT-d spec (Section 6.5.3.3) by implementing the recommended ownership handshake: 1. Clear only the 'Present' (P) bit of the PASID entry. 2. Use a dma_wmb() to ensure the cleared bit is visible to hardware before proceeding. 3. Execute the required invalidation sequence (PASID cache, IOTLB, and Device-TLB flush) to ensure the hardware has released all cached references. 4. Only after the flushes are complete, zero out the remaining fields of the PASID entry. Also, add a dma_wmb() in pasid_set_present() to ensure that all other fields of the PASID entry are visible to the hardware before the Present bit is set.
CVE-2026-45959
In the Linux kernel, the following vulnerability has been resolved: crypto: ccp - Fix a crash due to incorrect cleanup usage of kfree Annotating a local pointer variable, which will be assigned with the kmalloc-family functions, with the `__cleanup(kfree)` attribute will make the address of the local variable, rather than the address returned by kmalloc, passed to kfree directly and lead to a crash due to invalid deallocation of stack address. According to other places in the repo, the correct usage should be `__free(kfree)`. The code coincidentally compiled because the parameter type `void *` of kfree is compatible with the desired type `struct { ... } **`.
CVE-2026-53062
In the Linux kernel, the following vulnerability has been resolved: dm cache policy smq: fix missing locks in invalidating cache blocks In passthrough mode, the policy invalidate_mapping operation is called simultaneously from multiple workers, thus it should be protected by a lock. Otherwise, we might end up with data races on the allocated blocks counter, or even use-after-free issues with internal data structures when doing concurrent writes. Note that the existing FIXME in smq_invalidate_mapping() doesn't affect passthrough mode since migration tasks don't exist there, but would need attention if supporting fast device shrinking via suspend/resume without target reloading. Reproduce steps: 1. Create a cache device consisting of 1024 cache entries dmsetup create cmeta --table "0 8192 linear /dev/sdc 0" dmsetup create cdata --table "0 131072 linear /dev/sdc 8192" dmsetup create corig --table "0 262144 linear /dev/sdc 262144" dd if=/dev/zero of=/dev/mapper/cmeta bs=4k count=1 oflag=direct dmsetup create cache --table "0 262144 cache /dev/mapper/cmeta \ /dev/mapper/cdata /dev/mapper/corig 128 2 metadata2 writethrough smq 0" 2. Populate the cache, and record the number of cached blocks fio --name=populate --filename=/dev/mapper/cache --rw=randwrite --bs=4k \ --size=64m --direct=1 nr_cached=$(dmsetup status cache | awk '{split($7, a, "/"); print a[1]}') 3. Reload the cache into passthrough mode dmsetup suspend cache dmsetup reload cache --table "0 262144 cache /dev/mapper/cmeta \ /dev/mapper/cdata /dev/mapper/corig 128 2 metadata2 passthrough smq 0" dmsetup resume cache 4. Write to the passthrough cache. By setting multiple jobs with I/O size equal to the cache block size, cache blocks are invalidated concurrently from different workers. fio --filename=/dev/mapper/cache --name=test --rw=randwrite --bs=64k \ --direct=1 --numjobs=2 --randrepeat=0 --size=64m 5. Check if demoted matches cached block count. These numbers should match but may differ due to the data race. nr_demoted=$(dmsetup status cache | awk '{print $12}') echo "$nr_cached, $nr_demoted"
CVE-2026-63823
In the Linux kernel, the following vulnerability has been resolved: keys: Pin request_key_auth payload in instantiate paths A: request_key() B: KEYCTL_INSTANTIATE_IOV ================ ========================= create auth key store rka in auth key wait for helper get auth key load rka from auth key copy user payload sleep on #PF helper completed detach and free rka destroy auth key wake up use rka->target_key **USE-AFTER-FREE** Give request_key_auth payloads a refcount. Take a payload reference while authkey->sem stabilizes the payload and revocation state. Hold that reference across the instantiate and reject paths. Drop the auth key owning reference from revoke and destroy. [jarkko: Replaced the first two paragraphs of text with an actual concurrency scenario.]
CVE-2026-68155
In the Linux kernel, the following vulnerability has been resolved: libceph: Reject monmaps advertising zero monitors A message of type CEPH_MSG_MON_MAP contains a monmap that is sent from a monitor to the client. This monmap contains information about the existing monitors in the cluster. Currently, a monmap indicating that there are zero monitors in the cluster is treated as valid. However, it is impossible to have zero monitors in the cluster and still receive a valid monmap from a monitor. Therefore, such a monmap must be corrupted and should be treated as invalid. Furthermore, a monmap with a monitor count of zero can subsequently crash the client when attempting to open a session with a monitor in __open_session(). This happens because the "BUG_ON(monc->monmap->num_mon < 1)" assertion in pick_new_mon() is triggered. This patch extends a check in ceph_monmap_decode() to also reject arriving mon_maps with num_mon == 0 rather than only with num_mon > CEPH_MAX_MON. [ idryomov: drop "log output for unusual values of num_mon" part ]
CVE-2026-68156
In the Linux kernel, the following vulnerability has been resolved: libceph: refresh auth->authorizer_buf{,_len} after authorizer update ceph_x_create_authorizer() caches au->buf->vec.iov_base and au->buf->vec.iov_len in struct ceph_auth_handshake. These cached values are then used by the messenger connect code when sending the authorizer. ceph_x_update_authorizer() can rebuild the authorizer when a newer service ticket is available. If the rebuilt authorizer no longer fits in the existing buffer, ceph_x_build_authorizer() drops its reference to au->buf and allocates a new one. If this is the final reference, ceph_buffer_put() frees the old ceph_buffer and its vec.iov_base, but auth->authorizer_buf still points at that freed memory. A subsequent msgr1 reconnect can therefore queue the stale pointer and trigger a KASAN slab-use-after-free in _copy_from_iter() while tcp_sendmsg() copies the authorizer. Refresh auth->authorizer_buf and auth->authorizer_buf_len after a successful authorizer rebuild so the messenger sends the current buffer.
CVE-2026-68157
In the Linux kernel, the following vulnerability has been resolved: libceph: guard missing CRUSH type name lookup Localized read selection can walk a parent bucket whose name exists in the CRUSH map while its type has no matching entry in type_names. get_immediate_parent() then dereferences a NULL type_cn and passes an invalid pointer into strcmp(), causing a null-ptr-deref. Skip such malformed parent buckets unless both the bucket name and type name metadata are present. This keeps malformed hierarchy data from crashing locality lookup and safely falls back to "not local". [ idryomov: add WARN_ON_ONCE ]
CVE-2026-68188
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: RFCOMM: Fix session UAF in set_termios rfcomm_tty_set_termios() tests dlc->session without rfcomm_mutex and later passes the pointer to rfcomm_send_rpn(). The latter dereferences both session->initiator and session->sock. Meanwhile, krfcommd can unlink the DLC and free the session while holding rfcomm_mutex. The race can proceed as follows: TTY ioctl task krfcommd -------------- -------- load dlc->session enter rfcomm_send_rpn() lock rfcomm_mutex clear dlc->session free session unlock rfcomm_mutex read session->initiator KASAN reported: BUG: KASAN: slab-use-after-free in rfcomm_send_rpn+0x297/0x2a0 Read of size 4 at addr ffff88810012a850 by task poc/92 Call Trace: rfcomm_send_rpn+0x297/0x2a0 rfcomm_tty_set_termios+0x50d/0x850 tty_set_termios+0x596/0x950 set_termios+0x46a/0x6e0 tty_mode_ioctl+0x152/0xbd0 tty_ioctl+0x915/0x1240 __x64_sys_ioctl+0x134/0x1c0 Allocated by task 92: rfcomm_session_add+0x9e/0x2e0 rfcomm_dlc_open+0x8b1/0xe00 rfcomm_dev_activate+0x85/0x1a0 rfcomm_tty_open+0x90/0x280 Freed by task 68: kfree+0x131/0x3c0 rfcomm_session_del+0x119/0x180 rfcomm_run+0x737/0x4710 Add rfcomm_dlc_send_rpn(), which holds rfcomm_mutex while it verifies that the DLC is still attached and sends the RPN frame. Have the TTY path use the helper and drop its unlocked session check. This keeps the session valid through both the frame construction and socket send.
CVE-2026-68293
In the Linux kernel, the following vulnerability has been resolved: net/mlx5: Fix MCIA register buffer overflow on 32 dword reads The MCIA register can return up to 32 dwords (128 bytes) when the device advertises the mcia_32dwords capability, but struct mlx5_ifc_mcia_reg_bits only defines dword_0..11, leaving room for just 12 dwords (48 bytes) of data. mlx5_query_mcia() clamps the read size to mlx5_mcia_max_bytes() and then memcpy()s that many bytes out of the register, potentially reading past the end of the 'out' buffer. On kernels built with FORTIFY_SOURCE this is caught as a buffer overflow while reading the module EEPROM via ethtool: detected buffer overflow in memcpy kernel BUG at lib/string_helpers.c:1048! RIP: 0010:fortify_panic+0x13/0x20 Call Trace: mlx5_query_mcia.isra.0+0x200/0x210 [mlx5_core] mlx5_query_module_eeprom_by_page+0x4a/0xa0 [mlx5_core] mlx5e_get_module_eeprom_by_page+0xbb/0x120 [mlx5_core] eeprom_prepare_data+0xf3/0x170 ethnl_default_doit+0xf1/0x3b0 Extend the mcia_reg layout to 32 dwords.
CVE-2026-68391
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: mgmt: hold reference for hci_conn in mgmt_pending_cmds Dereferencing RCU-protected pointers outside critical sections is invalid and may lead to UAF. Use of hci_conn in hci_sync callbacks also needs to hold refcount to avoid UAF. Take appropriate locks for hci_conn lookups, and take refcount for hci_conn pointers stored in mgmt_pending_cmd so that the pointer stays valid. When accessing conn->state, ensure hdev->lock is held to avoid data race.
CVE-2026-72072
In the Linux kernel, the following vulnerability has been resolved: net/mlx5e: macsec: fix use-after-free of metadata_dst on RX SC delete When an offloaded MACsec RX SC is deleted, macsec_del_rxsc_ctx() freed the per-SC metadata_dst with metadata_dst_free(), which kfree()s the object unconditionally and ignores the dst reference count. The RX datapath in mlx5e_macsec_offload_handle_rx_skb() looks up the SC under rcu_read_lock() via xa_load(), takes a reference with dst_hold() and attaches the dst to the skb with skb_dst_set(). A reader that already obtained the rx_sc pointer can race with the delete path and operate on freed memory. Fix the owner side by dropping the reference with dst_release() instead of freeing unconditionally, and convert the RX datapath to dst_hold_safe() so a reader racing the SC delete cannot attach a dst whose last reference was just dropped; only attach it when a reference was actually taken. mlx5e_macsec_add_rxsc() also published sc_xarray_element via xa_alloc() before rx_sc->md_dst was allocated and initialised, so a datapath reader that looked the SC up by fs_id could observe rx_sc with md_dst still NULL or, on weakly-ordered architectures, a non-NULL md_dst pointer whose contents were not yet visible. NULL-check the xa_load() result and md_dst on the datapath, and reorder add_rxsc() so the xa_alloc() publish happens only after md_dst is fully initialised; the xarray RCU publish then pairs with the rcu_read_lock()/xa_load() in the datapath. Note: macsec_del_rxsc_ctx() also kfree()s rx_sc->sc_xarray_element without an RCU grace period while the same datapath reads it under rcu_read_lock(); that is a separate pre-existing issue left to a follow-up patch. Found by 0sec automated security-research tooling (https://0sec.ai).
CVE-2026-74518
In the Linux kernel, the following vulnerability has been resolved: mm/hugetlb: fix list corruption in allocate_file_region_entries() allocate_file_region_entries() tops up resv->region_cache with freshly allocated file_region descriptors. The allocation uses GFP_KERNEL, so resv->lock is dropped around it: the new entries are gathered on a stack-local list head, allocated_regions, and spliced into resv->region_cache once the lock is re-acquired. The splice used list_splice(), which moves the entries but does not re-initialize the source head, so allocated_regions is left pointing at an entry that now lives on resv->region_cache. The top-up runs in a while loop that re-checks the cache deficit after re-acquiring the lock. For a shared mapping the resv_map is shared by every mapper of the hugetlbfs inode, so a concurrent region_chg()/region_add()/region_del() on the same resv_map can consume cache entries during the unlocked window and force a second iteration. That iteration calls list_add() on the stale head and corrupts the list; with CONFIG_DEBUG_LIST the __list_add_valid() check trips: list_add corruption. next->prev should be prev (ffffc900011ff7f8), but was ffff88814c281460. (next=ffff88814c545640). kernel BUG at lib/list_debug.c:31! allocate_file_region_entries+0x191/0x420 region_chg+0x267/0x300 hugetlb_reserve_pages+0x387/0xc80 hugetlbfs_file_mmap+0x2ce/0x3f0 mmap_region+0x1348/0x1a80 do_mmap+0x85e/0xb90 vm_mmap_pgoff+0x18c/0x330 ksys_mmap_pgoff+0x2a1/0x3e0 do_syscall_64+0xd7/0x420 Without CONFIG_DEBUG_LIST the bad list_add() silently links a kernel-stack address into resv->region_cache, leading to later use-after-free. This was observed as a real host panic on a dense KVM host where a QEMU guest-RAM hugetlbfs file was mapped MAP_SHARED by both QEMU and a separate SPDK/DPDK vhost-user target, generating concurrent region_* traffic on one shared resv_map. Use list_splice_init() so the source head is re-initialized empty after each splice, making the retry loop safe.
Update packages.
In the Linux kernel, the following vulnerability has been resolved: crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg Issuing two writes to the same af_alg socket is bogus as the data will be interleaved in an unpredictable fashion. Furthermore, concurrent writes may create inconsistencies in the internal socket state. Disallow this by adding a new ctx->write field that indiciates exclusive ownership for writing.
In the Linux kernel, the following vulnerability has been resolved: iommu/vt-d: Clear Present bit before tearing down PASID entry The Intel VT-d Scalable Mode PASID table entry consists of 512 bits (64 bytes). When tearing down an entry, the current implementation zeros the entire 64-byte structure immediately using multiple 64-bit writes. Since the IOMMU hardware may fetch these 64 bytes using multiple internal transactions (e.g., four 128-bit bursts), updating or zeroing the entire entry while it is active (P=1) risks a "torn" read. If a hardware fetch occurs simultaneously with the CPU zeroing the entry, the hardware could observe an inconsistent state, leading to unpredictable behavior or spurious faults. Follow the "Guidance to Software for Invalidations" in the VT-d spec (Section 6.5.3.3) by implementing the recommended ownership handshake: 1. Clear only the 'Present' (P) bit of the PASID entry. 2. Use a dma_wmb() to ensure the cleared bit is visible to hardware before proceeding. 3. Execute the required invalidation sequence (PASID cache, IOTLB, and Device-TLB flush) to ensure the hardware has released all cached references. 4. Only after the flushes are complete, zero out the remaining fields of the PASID entry. Also, add a dma_wmb() in pasid_set_present() to ensure that all other fields of the PASID entry are visible to the hardware before the Present bit is set.
In the Linux kernel, the following vulnerability has been resolved: crypto: ccp - Fix a crash due to incorrect cleanup usage of kfree Annotating a local pointer variable, which will be assigned with the kmalloc-family functions, with the `__cleanup(kfree)` attribute will make the address of the local variable, rather than the address returned by kmalloc, passed to kfree directly and lead to a crash due to invalid deallocation of stack address. According to other places in the repo, the correct usage should be `__free(kfree)`. The code coincidentally compiled because the parameter type `void *` of kfree is compatible with the desired type `struct { ... } **`.
In the Linux kernel, the following vulnerability has been resolved: dm cache policy smq: fix missing locks in invalidating cache blocks In passthrough mode, the policy invalidate_mapping operation is called simultaneously from multiple workers, thus it should be protected by a lock. Otherwise, we might end up with data races on the allocated blocks counter, or even use-after-free issues with internal data structures when doing concurrent writes. Note that the existing FIXME in smq_invalidate_mapping() doesn't affect passthrough mode since migration tasks don't exist there, but would need attention if supporting fast device shrinking via suspend/resume without target reloading. Reproduce steps: 1. Create a cache device consisting of 1024 cache entries dmsetup create cmeta --table "0 8192 linear /dev/sdc 0" dmsetup create cdata --table "0 131072 linear /dev/sdc 8192" dmsetup create corig --table "0 262144 linear /dev/sdc 262144" dd if=/dev/zero of=/dev/mapper/cmeta bs=4k count=1 oflag=direct dmsetup create cache --table "0 262144 cache /dev/mapper/cmeta \ /dev/mapper/cdata /dev/mapper/corig 128 2 metadata2 writethrough smq 0" 2. Populate the cache, and record the number of cached blocks fio --name=populate --filename=/dev/mapper/cache --rw=randwrite --bs=4k \ --size=64m --direct=1 nr_cached=$(dmsetup status cache | awk '{split($7, a, "/"); print a[1]}') 3. Reload the cache into passthrough mode dmsetup suspend cache dmsetup reload cache --table "0 262144 cache /dev/mapper/cmeta \ /dev/mapper/cdata /dev/mapper/corig 128 2 metadata2 passthrough smq 0" dmsetup resume cache 4. Write to the passthrough cache. By setting multiple jobs with I/O size equal to the cache block size, cache blocks are invalidated concurrently from different workers. fio --filename=/dev/mapper/cache --name=test --rw=randwrite --bs=64k \ --direct=1 --numjobs=2 --randrepeat=0 --size=64m 5. Check if demoted matches cached block count. These numbers should match but may differ due to the data race. nr_demoted=$(dmsetup status cache | awk '{print $12}') echo "$nr_cached, $nr_demoted"
In the Linux kernel, the following vulnerability has been resolved: keys: Pin request_key_auth payload in instantiate paths A: request_key() B: KEYCTL_INSTANTIATE_IOV ================ ========================= create auth key store rka in auth key wait for helper get auth key load rka from auth key copy user payload sleep on #PF helper completed detach and free rka destroy auth key wake up use rka->target_key **USE-AFTER-FREE** Give request_key_auth payloads a refcount. Take a payload reference while authkey->sem stabilizes the payload and revocation state. Hold that reference across the instantiate and reject paths. Drop the auth key owning reference from revoke and destroy. [jarkko: Replaced the first two paragraphs of text with an actual concurrency scenario.]
In the Linux kernel, the following vulnerability has been resolved: libceph: Reject monmaps advertising zero monitors A message of type CEPH_MSG_MON_MAP contains a monmap that is sent from a monitor to the client. This monmap contains information about the existing monitors in the cluster. Currently, a monmap indicating that there are zero monitors in the cluster is treated as valid. However, it is impossible to have zero monitors in the cluster and still receive a valid monmap from a monitor. Therefore, such a monmap must be corrupted and should be treated as invalid. Furthermore, a monmap with a monitor count of zero can subsequently crash the client when attempting to open a session with a monitor in __open_session(). This happens because the "BUG_ON(monc->monmap->num_mon < 1)" assertion in pick_new_mon() is triggered. This patch extends a check in ceph_monmap_decode() to also reject arriving mon_maps with num_mon == 0 rather than only with num_mon > CEPH_MAX_MON. [ idryomov: drop "log output for unusual values of num_mon" part ]
In the Linux kernel, the following vulnerability has been resolved: libceph: refresh auth->authorizer_buf{,_len} after authorizer update ceph_x_create_authorizer() caches au->buf->vec.iov_base and au->buf->vec.iov_len in struct ceph_auth_handshake. These cached values are then used by the messenger connect code when sending the authorizer. ceph_x_update_authorizer() can rebuild the authorizer when a newer service ticket is available. If the rebuilt authorizer no longer fits in the existing buffer, ceph_x_build_authorizer() drops its reference to au->buf and allocates a new one. If this is the final reference, ceph_buffer_put() frees the old ceph_buffer and its vec.iov_base, but auth->authorizer_buf still points at that freed memory. A subsequent msgr1 reconnect can therefore queue the stale pointer and trigger a KASAN slab-use-after-free in _copy_from_iter() while tcp_sendmsg() copies the authorizer. Refresh auth->authorizer_buf and auth->authorizer_buf_len after a successful authorizer rebuild so the messenger sends the current buffer.
In the Linux kernel, the following vulnerability has been resolved: libceph: guard missing CRUSH type name lookup Localized read selection can walk a parent bucket whose name exists in the CRUSH map while its type has no matching entry in type_names. get_immediate_parent() then dereferences a NULL type_cn and passes an invalid pointer into strcmp(), causing a null-ptr-deref. Skip such malformed parent buckets unless both the bucket name and type name metadata are present. This keeps malformed hierarchy data from crashing locality lookup and safely falls back to "not local". [ idryomov: add WARN_ON_ONCE ]
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: RFCOMM: Fix session UAF in set_termios rfcomm_tty_set_termios() tests dlc->session without rfcomm_mutex and later passes the pointer to rfcomm_send_rpn(). The latter dereferences both session->initiator and session->sock. Meanwhile, krfcommd can unlink the DLC and free the session while holding rfcomm_mutex. The race can proceed as follows: TTY ioctl task krfcommd -------------- -------- load dlc->session enter rfcomm_send_rpn() lock rfcomm_mutex clear dlc->session free session unlock rfcomm_mutex read session->initiator KASAN reported: BUG: KASAN: slab-use-after-free in rfcomm_send_rpn+0x297/0x2a0 Read of size 4 at addr ffff88810012a850 by task poc/92 Call Trace: rfcomm_send_rpn+0x297/0x2a0 rfcomm_tty_set_termios+0x50d/0x850 tty_set_termios+0x596/0x950 set_termios+0x46a/0x6e0 tty_mode_ioctl+0x152/0xbd0 tty_ioctl+0x915/0x1240 __x64_sys_ioctl+0x134/0x1c0 Allocated by task 92: rfcomm_session_add+0x9e/0x2e0 rfcomm_dlc_open+0x8b1/0xe00 rfcomm_dev_activate+0x85/0x1a0 rfcomm_tty_open+0x90/0x280 Freed by task 68: kfree+0x131/0x3c0 rfcomm_session_del+0x119/0x180 rfcomm_run+0x737/0x4710 Add rfcomm_dlc_send_rpn(), which holds rfcomm_mutex while it verifies that the DLC is still attached and sends the RPN frame. Have the TTY path use the helper and drop its unlocked session check. This keeps the session valid through both the frame construction and socket send.
In the Linux kernel, the following vulnerability has been resolved: net/mlx5: Fix MCIA register buffer overflow on 32 dword reads The MCIA register can return up to 32 dwords (128 bytes) when the device advertises the mcia_32dwords capability, but struct mlx5_ifc_mcia_reg_bits only defines dword_0..11, leaving room for just 12 dwords (48 bytes) of data. mlx5_query_mcia() clamps the read size to mlx5_mcia_max_bytes() and then memcpy()s that many bytes out of the register, potentially reading past the end of the 'out' buffer. On kernels built with FORTIFY_SOURCE this is caught as a buffer overflow while reading the module EEPROM via ethtool: detected buffer overflow in memcpy kernel BUG at lib/string_helpers.c:1048! RIP: 0010:fortify_panic+0x13/0x20 Call Trace: mlx5_query_mcia.isra.0+0x200/0x210 [mlx5_core] mlx5_query_module_eeprom_by_page+0x4a/0xa0 [mlx5_core] mlx5e_get_module_eeprom_by_page+0xbb/0x120 [mlx5_core] eeprom_prepare_data+0xf3/0x170 ethnl_default_doit+0xf1/0x3b0 Extend the mcia_reg layout to 32 dwords.
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: mgmt: hold reference for hci_conn in mgmt_pending_cmds Dereferencing RCU-protected pointers outside critical sections is invalid and may lead to UAF. Use of hci_conn in hci_sync callbacks also needs to hold refcount to avoid UAF. Take appropriate locks for hci_conn lookups, and take refcount for hci_conn pointers stored in mgmt_pending_cmd so that the pointer stays valid. When accessing conn->state, ensure hdev->lock is held to avoid data race.
In the Linux kernel, the following vulnerability has been resolved: net/mlx5e: macsec: fix use-after-free of metadata_dst on RX SC delete When an offloaded MACsec RX SC is deleted, macsec_del_rxsc_ctx() freed the per-SC metadata_dst with metadata_dst_free(), which kfree()s the object unconditionally and ignores the dst reference count. The RX datapath in mlx5e_macsec_offload_handle_rx_skb() looks up the SC under rcu_read_lock() via xa_load(), takes a reference with dst_hold() and attaches the dst to the skb with skb_dst_set(). A reader that already obtained the rx_sc pointer can race with the delete path and operate on freed memory. Fix the owner side by dropping the reference with dst_release() instead of freeing unconditionally, and convert the RX datapath to dst_hold_safe() so a reader racing the SC delete cannot attach a dst whose last reference was just dropped; only attach it when a reference was actually taken. mlx5e_macsec_add_rxsc() also published sc_xarray_element via xa_alloc() before rx_sc->md_dst was allocated and initialised, so a datapath reader that looked the SC up by fs_id could observe rx_sc with md_dst still NULL or, on weakly-ordered architectures, a non-NULL md_dst pointer whose contents were not yet visible. NULL-check the xa_load() result and md_dst on the datapath, and reorder add_rxsc() so the xa_alloc() publish happens only after md_dst is fully initialised; the xarray RCU publish then pairs with the rcu_read_lock()/xa_load() in the datapath. Note: macsec_del_rxsc_ctx() also kfree()s rx_sc->sc_xarray_element without an RCU grace period while the same datapath reads it under rcu_read_lock(); that is a separate pre-existing issue left to a follow-up patch. Found by 0sec automated security-research tooling (https://0sec.ai).
In the Linux kernel, the following vulnerability has been resolved: mm/hugetlb: fix list corruption in allocate_file_region_entries() allocate_file_region_entries() tops up resv->region_cache with freshly allocated file_region descriptors. The allocation uses GFP_KERNEL, so resv->lock is dropped around it: the new entries are gathered on a stack-local list head, allocated_regions, and spliced into resv->region_cache once the lock is re-acquired. The splice used list_splice(), which moves the entries but does not re-initialize the source head, so allocated_regions is left pointing at an entry that now lives on resv->region_cache. The top-up runs in a while loop that re-checks the cache deficit after re-acquiring the lock. For a shared mapping the resv_map is shared by every mapper of the hugetlbfs inode, so a concurrent region_chg()/region_add()/region_del() on the same resv_map can consume cache entries during the unlocked window and force a second iteration. That iteration calls list_add() on the stale head and corrupts the list; with CONFIG_DEBUG_LIST the __list_add_valid() check trips: list_add corruption. next->prev should be prev (ffffc900011ff7f8), but was ffff88814c281460. (next=ffff88814c545640). kernel BUG at lib/list_debug.c:31! allocate_file_region_entries+0x191/0x420 region_chg+0x267/0x300 hugetlb_reserve_pages+0x387/0xc80 hugetlbfs_file_mmap+0x2ce/0x3f0 mmap_region+0x1348/0x1a80 do_mmap+0x85e/0xb90 vm_mmap_pgoff+0x18c/0x330 ksys_mmap_pgoff+0x2a1/0x3e0 do_syscall_64+0xd7/0x420 Without CONFIG_DEBUG_LIST the bad list_add() silently links a kernel-stack address into resv->region_cache, leading to later use-after-free. This was observed as a real host panic on a dense KVM host where a QEMU guest-RAM hugetlbfs file was mapped MAP_SHARED by both QEMU and a separate SPDK/DPDK vhost-user target, generating concurrent region_* traffic on one shared resv_map. Use list_splice_init() so the source head is re-initialized empty after each splice, making the retry loop safe.
N/A
SRPMS
- kernel-5.14.0-687.50.1.el9_8.src.rpm
MD5: 00180cc3b659bde8343ca39f708b506a
SHA-256: ca8cfcc6487a10f8f2c7faf986695a4d0cb3053f7705f51fffb5223f06916754
Size: 145.53 MB
Asianux Server 9 for x86_64
- kernel-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: d6057288e57196e72dbcff559effe4dd
SHA-256: 58a6bd0257158eff5ae918b8ab15205376397acf936b7f9c7bb2a2873821edb2
Size: 1.01 MB - kernel-abi-stablelists-5.14.0-687.50.1.el9_8.noarch.rpm
MD5: 139dc698cfe60bcf8440c3ae3258ae27
SHA-256: 280fd0f152375efee29c0473723a0ffbe742d3332e8b9cc4de47c20ddec27146
Size: 1.05 MB - kernel-core-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: bbfac132a23369a8f675a46c3e878634
SHA-256: f435a0bf38950723e6eef1e16fbda8b3350e67cef4ff7c47b9511c7d4ec8b61f
Size: 17.34 MB - kernel-cross-headers-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 2380e76fb0b31979f7cecf841cc318dd
SHA-256: 1efc0de8262d034a1e4886393651e50c7392fa51f912cf488948c9aef3f0e321
Size: 8.08 MB - kernel-debug-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 7b46410c3d46ef20ddefd0612392673e
SHA-256: 377e6875dd51ffa356231ac8c67011edac7395e67d9e8f27696a6d6e4291638a
Size: 1.01 MB - kernel-debug-core-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: b2eddaa392ae61fa99a92782182c7760
SHA-256: da9bbf77867bf47f7e6f9dac9b8d295d13a29458b998a28e919fc73236263bb8
Size: 31.20 MB - kernel-debug-devel-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 246fb6c98a636c6f53a21121efbb3bbf
SHA-256: e6bcc050bce3fc0c04ca41eba7065610cee043179ebbd63bf828697794ae1dba
Size: 21.44 MB - kernel-debug-devel-matched-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: cf1afade2455f8fb53680f20e77ae541
SHA-256: 2ddb5ffb98d6f81920cbc6eeb7af17375793bfc2f6ea7c7ec9c0ac0e6759ce7c
Size: 1.01 MB - kernel-debug-modules-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 57ad3f4f3479a05eff8dd0bd78187a55
SHA-256: b826471dc57451c13b9da5da688512de31bef1a39d6d161af32459f17d44e89b
Size: 70.21 MB - kernel-debug-modules-core-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 26117bf7f032b5f8d2ded4d4315df2ad
SHA-256: ad54e43839a9eb94d7566abf6baf9289860a6200f4e3d64d768c9d37a2cb1ad0
Size: 49.92 MB - kernel-debug-modules-extra-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 847d2c562dde19e666b91b0fa6664d64
SHA-256: d6b1a1f10aefc6582ea16650f7e58ee26f80356e688cc7c5a0d98c8cf55780cf
Size: 1.82 MB - kernel-debug-uki-virt-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 8a27979ff182ff3d58a887fa4b37dc26
SHA-256: 4beeeef58456a5193e0bc31a212810d347416485657739ec9ef4c08a8d40d046
Size: 88.17 MB - kernel-devel-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: c8f3754dd0d26359b61c4c4aa0dea7a2
SHA-256: a6d039171d658db53e64793f403d96a0ee4fc50adc04c156bbc55cc57a9fa4c7
Size: 21.24 MB - kernel-devel-matched-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 277ed6f940c65996dd7c5ce26d0c88b9
SHA-256: 09144b66950dcda271d6834718843fece911af9ca97015c87aa8b19735d94daf
Size: 1.01 MB - kernel-doc-5.14.0-687.50.1.el9_8.noarch.rpm
MD5: 319347bbb4baec922f86b4fc558a3828
SHA-256: f801c932f56793ca87206bd1dcbfd5a243bc8787e4f35439d036bd536dea8000
Size: 39.02 MB - kernel-headers-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 2a936e2c5e3f35b8b6a99ad03499c6f2
SHA-256: 63c0a8d2dd79a8d5c216775ed67a51bd1570b9f459e0b822bdb4e7213fe89806
Size: 2.80 MB - kernel-modules-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 781cfcbcf3ef98df655d9a5eba0e6cb0
SHA-256: 506fab2a554bd2dec5955809cc754978148646fd93ef84ec090814e0597ae171
Size: 39.99 MB - kernel-modules-core-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: e1fc586eb81e6a925f1568ca306d8b13
SHA-256: ef683dfdfae5c3381f132134e8288900bde6023c1d269fe663eb0f763d7ab3b0
Size: 31.08 MB - kernel-modules-extra-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 1e440906c3d3772de4aaf0ceefa58045
SHA-256: 503dee1a6f87bec9c47a9f19e4130cbf75d718e9b0e4bc7123c5c3fdbec6312a
Size: 1.45 MB - kernel-rt-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 65dd1b401caa45a8c11ef503f28ff32c
SHA-256: f9cc239001225038f223723b1d7bf7a7e03115521bbb0b5e9bda0e45c272a0bc
Size: 1.01 MB - kernel-rt-core-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 56902e121704ab1a37f21be28146750e
SHA-256: 6051cacf028be03f77d64acec2f8f94aa8fd6383c67678f98875fa2338f208b2
Size: 17.24 MB - kernel-rt-debug-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: dc2b6073bc196f541de04ece58437376
SHA-256: 0e91970c68be2f67c9d6dfbb7e54ccfa8d6f3bc4f10c50a87307d7011c506825
Size: 1.01 MB - kernel-rt-debug-core-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 4113a109e7d221a35dceb20fba31b5d9
SHA-256: 3e5b82694d33b6ae5e7e94dfce08aa1d705a6b5a471f6d51360acb16c03ff730
Size: 18.70 MB - kernel-rt-debug-devel-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 1c810bf83b83f09a0b43ae3ee50e18c1
SHA-256: a08f78ec507c20d334547f723e3db9af902590f1992b4d21307add8edab9f614
Size: 21.37 MB - kernel-rt-debug-modules-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: b6266df79c8e098f74d9386f9ccb588a
SHA-256: 79fe8ef1e8d4514960001fe686c1c4648f9741546b89fbe9e3d8fa1760bc59ba
Size: 41.59 MB - kernel-rt-debug-modules-core-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: eb066455d0ab46992ecc14fda0a17f6f
SHA-256: 7045f88063f3acd9053c240a46da72d3d4cfc03d1e214efa51e5698038dfbfcb
Size: 32.25 MB - kernel-rt-debug-modules-extra-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 75bd2426f3c62870c1beaf2e824e4ac5
SHA-256: 365930f64347084d091c18c90ff12af344b77b763cf6e2b7b8d5082aa363aa37
Size: 1.48 MB - kernel-rt-devel-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 6b0e5685f0ef5a3511596837cb1a5614
SHA-256: 0cdaaf69a79546ebe2f511cefaed8250c85cb0d88fd9ed0a8165aa8e27fd3c55
Size: 21.22 MB - kernel-rt-modules-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 4190e7ee04827f267fde1cb163f12ccc
SHA-256: 4fa2da964050c8dc64de68ab3886cae08c3e2594438c2452f6418c75a65395e7
Size: 40.05 MB - kernel-rt-modules-core-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 510e4137ea914410b21369f99f42a041
SHA-256: 1b1aa95cccca3ae13aa0367d85584422b862d70d624c42b334bc6e73fb5fe433
Size: 31.15 MB - kernel-rt-modules-extra-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: d3e67b5810201cf54fc93d5c27f83954
SHA-256: c0f9e527a52ce9835eb9e317399dc08ef81c0a92362ac27d17949b832445e19e
Size: 1.45 MB - kernel-tools-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 74762013d2fb2a72c199be2fd03dc5fd
SHA-256: c07602f74e7c2f260aa05c9f2dc93729c7b996eae42577d6c0cd71138108c459
Size: 1.30 MB - kernel-tools-libs-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 4136f3f742bee944c188dd699a776a7a
SHA-256: 0c659777c4ed3975081745d3a6a5264a782ece76a9bbb5245579209d451db1d1
Size: 1.02 MB - kernel-tools-libs-devel-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 4267508f2be611f6e474e0a5774ba062
SHA-256: 76012476903284e62f18eb8ed178ae1cec796ad3f2b736bc17346a765df866d2
Size: 1.01 MB - kernel-uki-virt-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 8bb4e5691348dad144e9872cc37d0d6c
SHA-256: a8124df49bbfcbe4fe319ac26484821002fb6f44752016b6ccccdceec908867a
Size: 66.04 MB - kernel-uki-virt-addons-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 56b2920fd4d66f8b2c441cbdb38929b0
SHA-256: 538cf8a7fa2f829b0447074bdf6e786406e8597600471877336c01bbf68eff03
Size: 1.03 MB - libperf-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 5808bce55ecdf5d55467182819827c9f
SHA-256: f38df3bd53a128135e5e80722cebea8ffb20e68b4b47d70cd4b181b839bfcef3
Size: 1.03 MB - perf-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 2785265d1d0d32f1a245aabee86025af
SHA-256: fc228b40e5ea7865d568bf17ef7612f076894562e3d25f79e1de14f776bebd25
Size: 3.43 MB - python3-perf-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: e97295ff56f067e950a65ddedd3c3790
SHA-256: 8e1d66d68b41f997ce4e1c66a0cf1eca358e44c4939e1b933378185013f71aa8
Size: 2.60 MB - rtla-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: efa719e3862c523fbc07ae7d571ce78f
SHA-256: 33fec208569e72abdbcf7b4397217bb85dc6ec2fb458c2969afc37bddd2d4d6b
Size: 1.08 MB - rv-5.14.0-687.50.1.el9_8.x86_64.rpm
MD5: 05f16246df6355f8bffb6c9d779437e1
SHA-256: da71ba2d57e1a98b5b6c63304e76609c9fac401e4798165a05344764699dc873
Size: 1.03 MB