CVE-2023-53791

Source
https://nvd.nist.gov/vuln/detail/CVE-2023-53791
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2023-53791.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2023-53791
Downstream
Published
2025-12-09T00:00:48.301Z
Modified
2025-12-09T03:34:40.484993Z
Summary
md: fix warning for holder mismatch from export_rdev()
Details

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

md: fix warning for holder mismatch from export_rdev()

Commit a1d767191096 ("md: use mddev->external to select holder in exportrdev()") fix the problem that 'claimrdev' is used for blkdevgetbydev() while 'rdev' is used for blkdevput().

However, if mddev->external is changed from 0 to 1, then 'rdev' is used for blkdevgetbydev() while 'claimrdev' is used for blkdev_put(). And this problem can be reporduced reliably by following:

New file: mdadm/tests/23rdev-lifetime

devname=${dev0##*/} devt=cat /sys/block/$devname/dev pid="" runtime=2

cleanuptest() { pill -9 $pid echo clear > /sys/block/md0/md/array_state }

trap 'cleanuptest' EXIT

addbysysfs() { while true; do echo $devt > /sys/block/md0/md/new_dev done }

removebysysfs(){ while true; do echo remove > /sys/block/md0/md/dev-${devname}/state done }

echo md0 > /sys/module/mdmod/parameters/newarray || die "create md0 failed"

addbysysfs & pid="$pid $!"

removebysysfs & pid="$pid $!"

sleep $runtime exit 0

Test cmd:

./test --save-logs --logdir=/tmp/ --keep-going --dev=loop --tests=23rdev-lifetime

Test result:

------------[ cut here ]------------ WARNING: CPU: 0 PID: 960 at block/bdev.c:618 blkdevput+0x27c/0x330 Modules linked in: multipath mdmod loop CPU: 0 PID: 960 Comm: test Not tainted 6.5.0-rc2-00121-g01e55c376936-dirty #50 RIP: 0010:blkdevput+0x27c/0x330 Call Trace: <TASK> exportrdev.isra.23+0x50/0xa0 [mdmod] mddevunlock+0x19d/0x300 [mdmod] rdevattrstore+0xec/0x190 [mdmod] sysfskfwrite+0x52/0x70 kernfsfopwriteiter+0x19a/0x2a0 vfswrite+0x3b5/0x770 ksyswrite+0x74/0x150 _x64syswrite+0x22/0x30 dosyscall64+0x40/0x90 entrySYSCALL64afterhwframe+0x63/0xcd

Fix the problem by recording if 'rdev' is used as holder.

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/53xxx/CVE-2023-53791.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
a1d7671910965ca9f8f0377e7e3bfd1179fba4d8
Fixed
99fcd427178d0f58f5520f8f01df727f8eaeb2c7
Fixed
99892147f028d711f9d40fefad4f33632593864c

Affected versions

v6.*

v6.4
v6.4-rc3
v6.4-rc4
v6.4-rc5
v6.4-rc6
v6.4-rc7
v6.5
v6.5-rc1
v6.5-rc2
v6.5-rc3
v6.5-rc4
v6.5-rc5
v6.5-rc6
v6.5-rc7
v6.5.1
v6.5.2
v6.5.3
v6.5.4

Database specific

source

"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2023-53791.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
6.5.0
Fixed
6.5.5

Database specific

source

"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2023-53791.json"