CVE-2023-53810

CVE-2023-53810

High · published December 9, 2025

CVSS v3.1
7.8
EPSS
0%
Percentile
3.2
In the wild
Unconfirmed
What it is

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

blk-mq: release crypto keyslot before reporting I/O complete

Once all I/O using a blk_crypto_key has completed, filesystems can call

blk_crypto_evict_key(). However, the block layer currently doesn't call

blk_crypto_put_keyslot() until the request is being freed, which happens

after upper layers have been told (via bio_endio()) the I/O has

completed. This causes a race condition where blk_crypto_evict_key()

can see 'slot_refs != 0' without there being an actual bug.

This makes __blk_crypto_evict_key() hit the

'WARN_ON_ONCE(atomic_read(&slot->slot_refs) != 0)' and return without

doing anything, eventually causing a use-after-free in

blk_crypto_reprogram_all_keys(). (This is a very rare bug and has only

been seen when per-file keys are being used with fscrypt.)

There are two options to fix this: either release the keyslot before

bio_endio() is called on the request's last bio, or make

__blk_crypto_evict_key() ignore slot_refs. Let's go with the first

solution, since it preserves the ability to report bugs (via

WARN_ON_ONCE) where a key is evicted while still in-use.

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00142 · 3.2th percentile
Published
2025-12-09T06:16Z
References (6)
EPSS history
Timeline
  • 09 DEC 00:01Z
    blk-mq: release crypto keyslot before reporting I/O complete
    cvelistv5