vulnerability

Alma Linux: CVE-2025-21739: Moderate: kernel security update (ALSA-2025-20518)

Severity
7
CVSS
(AV:L/AC:L/Au:S/C:C/I:C/A:C)
Published
Nov 11, 2025
Added
Nov 20, 2025
Modified
Nov 20, 2025

Description

In the Linux kernel, the following vulnerability has been resolved:

scsi: ufs: core: Fix use-after free in init error and remove paths

devm_blk_crypto_profile_init() registers a cleanup handler to run when
the associated (platform-) device is being released. For UFS, the
crypto private data and pointers are stored as part of the ufs_hba's
data structure 'struct ufs_hba::crypto_profile'. This structure is
allocated as part of the underlying ufshcd and therefore Scsi_host
allocation.

During driver release or during error handling in ufshcd_pltfrm_init(),
this structure is released as part of ufshcd_dealloc_host() before the
(platform-) device associated with the crypto call above is released.
Once this device is released, the crypto cleanup code will run, using
the just-released 'struct ufs_hba::crypto_profile'. This causes a
use-after-free situation:

Call trace:
kfree+0x60/0x2d8 (P)
kvfree+0x44/0x60
blk_crypto_profile_destroy_callback+0x28/0x70
devm_action_release+0x1c/0x30
release_nodes+0x6c/0x108
devres_release_all+0x98/0x100
device_unbind_cleanup+0x20/0x70
really_probe+0x218/0x2d0

In other words, the initialisation code flow is:

platform-device probe
ufshcd_pltfrm_init()
ufshcd_alloc_host()
scsi_host_alloc()
allocation of struct ufs_hba
creation of scsi-host devices
devm_blk_crypto_profile_init()
devm registration of cleanup handler using platform-device

and during error handling of ufshcd_pltfrm_init() or during driver
removal:

ufshcd_dealloc_host()
scsi_host_put()
put_device(scsi-host)
release of struct ufs_hba
put_device(platform-device)
crypto cleanup handler

To fix this use-after free, change ufshcd_alloc_host() to register a
devres action to automatically cleanup the underlying SCSI device on
ufshcd destruction, without requiring explicit calls to
ufshcd_dealloc_host(). This way:

* the crypto profile and all other ufs_hba-owned resources are
destroyed before SCSI (as they've been registered after)
* a memleak is plugged in tc-dwc-g210-pci.c remove() as a
side-effect
* EXPORT_SYMBOL_GPL(ufshcd_dealloc_host) can be removed fully as
it's not needed anymore
* no future drivers using ufshcd_alloc_host() could ever forget
adding the cleanup

Solutions

alma-upgrade-kernelalma-upgrade-kernel-64kalma-upgrade-kernel-64k-corealma-upgrade-kernel-64k-debugalma-upgrade-kernel-64k-debug-corealma-upgrade-kernel-64k-debug-develalma-upgrade-kernel-64k-debug-devel-matchedalma-upgrade-kernel-64k-debug-modulesalma-upgrade-kernel-64k-debug-modules-corealma-upgrade-kernel-64k-debug-modules-extraalma-upgrade-kernel-64k-develalma-upgrade-kernel-64k-devel-matchedalma-upgrade-kernel-64k-modulesalma-upgrade-kernel-64k-modules-corealma-upgrade-kernel-64k-modules-extraalma-upgrade-kernel-abi-stablelistsalma-upgrade-kernel-corealma-upgrade-kernel-cross-headersalma-upgrade-kernel-debugalma-upgrade-kernel-debug-corealma-upgrade-kernel-debug-develalma-upgrade-kernel-debug-devel-matchedalma-upgrade-kernel-debug-modulesalma-upgrade-kernel-debug-modules-corealma-upgrade-kernel-debug-modules-extraalma-upgrade-kernel-debug-uki-virtalma-upgrade-kernel-develalma-upgrade-kernel-devel-matchedalma-upgrade-kernel-docalma-upgrade-kernel-headersalma-upgrade-kernel-modulesalma-upgrade-kernel-modules-corealma-upgrade-kernel-modules-extraalma-upgrade-kernel-rtalma-upgrade-kernel-rt-64kalma-upgrade-kernel-rt-64k-corealma-upgrade-kernel-rt-64k-debugalma-upgrade-kernel-rt-64k-debug-corealma-upgrade-kernel-rt-64k-debug-develalma-upgrade-kernel-rt-64k-debug-modulesalma-upgrade-kernel-rt-64k-debug-modules-corealma-upgrade-kernel-rt-64k-debug-modules-extraalma-upgrade-kernel-rt-64k-develalma-upgrade-kernel-rt-64k-modulesalma-upgrade-kernel-rt-64k-modules-corealma-upgrade-kernel-rt-64k-modules-extraalma-upgrade-kernel-rt-corealma-upgrade-kernel-rt-debugalma-upgrade-kernel-rt-debug-corealma-upgrade-kernel-rt-debug-develalma-upgrade-kernel-rt-debug-modulesalma-upgrade-kernel-rt-debug-modules-corealma-upgrade-kernel-rt-debug-modules-extraalma-upgrade-kernel-rt-develalma-upgrade-kernel-rt-modulesalma-upgrade-kernel-rt-modules-corealma-upgrade-kernel-rt-modules-extraalma-upgrade-kernel-toolsalma-upgrade-kernel-tools-libsalma-upgrade-kernel-tools-libs-develalma-upgrade-kernel-uki-virtalma-upgrade-kernel-uki-virt-addonsalma-upgrade-kernel-zfcpdumpalma-upgrade-kernel-zfcpdump-corealma-upgrade-kernel-zfcpdump-develalma-upgrade-kernel-zfcpdump-devel-matchedalma-upgrade-kernel-zfcpdump-modulesalma-upgrade-kernel-zfcpdump-modules-corealma-upgrade-kernel-zfcpdump-modules-extraalma-upgrade-libperfalma-upgrade-perfalma-upgrade-python3-perfalma-upgrade-rtlaalma-upgrade-rv
Title
NEW

Explore Exposure Command

Confidently identify and prioritize exposures from endpoint to cloud with full attack surface visibility and threat-aware risk context.