null_blk: use DEFINE_MUTEX for the file-scope mutex
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 6.1.188, 6.6.157, 6.12.110, 6.18.52, 7.2.6
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: null_blk: use DEFINE_MUTEX for the file-scope mutex In null_init(), mutex_init(&lock) currently happens after configfs_register_subsystem(), which exposes the nullb subsystem to userspace. A racing mkdir() into /sys/kernel/config/nullb/ can reach null_find_dev_by_name() -> mutex_lock(&lock) before the mutex is initialized, trigger warning: [ 123.137788] DEBUG_LOCKS_WARN_ON(lock->magic != lock) [ 123.137796] WARNING: kernel/locking/mutex.c:159 at mutex_lock+0x171/0x1c0, CPU#13: mkdir/1301 [ 123.140090] Modules linked in: null_blk(+) nft_fib_inet nft_fib_ipv4 ...... [ 123.154926] Call Trace: [ 123.155172] <TASK> [ 123.155419] ? __pfx_mutex_lock+0x10/0x10 [ 123.156181] ? pfxraw_spin_lock+0x10/0x10 [ 123.156571] nullb_group_make_group+0x20/0x100 [null_blk] [ 123.157011] configfs_mkdir+0x47b/0xc70 [ 123.157337] ? __pfx_configfs_mkdir+0x10/0x10 [ 123.157719] ? may_create_dentry+0x242/0x2e0 [ 123.158061] vfs_mkdir+0x2a9/0x6c0 [ 123.158352] filename_mkdirat+0x3dc/0x500 [ 123.158710] ? __pfx_filename_mkdirat+0x10/0x10 [ 123.159070] ? strncpy_from_user+0x3a/0x1d0 [ 123.159413] __x64_sys_mkdir+0x6b/0x90 [ 123.159760] do_syscall_64+0xea/0x600 Replace the runtime mutex_init(&lock) with a static DEFINE_MUTEX(lock) declaration to fix this issue.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 49c3b9266a718dbd73c42e004288b4bb2ea0ac0b · fixed in f9f4ca45c770b7eec83fea6c9b727b26e691b513; From 49c3b9266a718dbd73c42e004288b4bb2ea0ac0b · fixed in 349903f7ee72f7ac5b7a98840d701b2082d140a3; From 49c3b9266a718dbd73c42e004288b4bb2ea0ac0b · fixed in 0a8c2f7b95981913ac370683e34db4906970c210; From 49c3b9266a718dbd73c42e004288b4bb2ea0ac0b · fixed in c7dea90c9b4ef1dfbd2e4df36de180c76fd7c33c; From 49c3b9266a718dbd73c42e004288b4bb2ea0ac0b · fixed in 234117949da3b3f9705a21b66094f9f30bbe681d; From 49c3b9266a718dbd73c42e004288b4bb2ea0ac0b · fixed in 017dac7670909eaea3eb36e6b3b5a8be9ce0a14d
- Linux Linux
5.19
- KernelLinux
From 5.19.0 · fixed in 6.1.188; From 6.2.0 · fixed in 6.6.157; From 6.7.0 · fixed in 6.12.110; From 6.13.0 · fixed in 6.18.52; From 6.19.0 · fixed in 7.2.6