In the Linux kernel, the following vulnerability has been resolved:
fsdax: Fix infinite loop in daxiomaprw()
I got an infinite loop and a WARNING report when executing a tail command in virtiofs.
WARNING: CPU: 10 PID: 964 at fs/iomap/iter.c:34 iomapiter+0x3a2/0x3d0 Modules linked in: CPU: 10 PID: 964 Comm: tail Not tainted 5.19.0-rc7 Call Trace: <TASK> daxiomaprw+0xea/0x620 ? _thiscpupreemptcheck+0x13/0x20 fusedaxreaditer+0x47/0x80 fusefilereaditer+0xae/0xd0 newsyncread+0xfe/0x180 ? 0xffffffff81000000 vfsread+0x14d/0x1a0 ksysread+0x6d/0xf0 _x64sysread+0x1a/0x20 dosyscall64+0x3b/0x90 entrySYSCALL64afterhwframe+0x63/0xcd
The tail command will call read() with a count of 0. In this case, iomapiter() will report this WARNING, and always return 1 which casuing the infinite loop in daxiomap_rw().
Fixing by checking count whether is 0 in daxiomaprw().
[
{
"deprecated": false,
"signature_version": "v1",
"digest": {
"length": 662.0,
"function_hash": "82363617718878527804138322566284111625"
},
"id": "CVE-2022-48635-2bf5c278",
"signature_type": "Function",
"target": {
"file": "fs/dax.c",
"function": "dax_iomap_rw"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@17d9c15c9b9e7fb285f7ac5367dfb5f00ff575e3"
},
{
"deprecated": false,
"signature_version": "v1",
"digest": {
"length": 662.0,
"function_hash": "82363617718878527804138322566284111625"
},
"id": "CVE-2022-48635-445a5e93",
"signature_type": "Function",
"target": {
"file": "fs/dax.c",
"function": "dax_iomap_rw"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@60644dffac87b1bb47bdb393aa29d5f2ffcf41a0"
},
{
"deprecated": false,
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"206276453984365871074242193410811883253",
"289250276376751320576241632979159914378",
"94857421077250562658921107379871075166"
]
},
"id": "CVE-2022-48635-6c4da7ee",
"signature_type": "Line",
"target": {
"file": "fs/dax.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@17d9c15c9b9e7fb285f7ac5367dfb5f00ff575e3"
},
{
"deprecated": false,
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"206276453984365871074242193410811883253",
"289250276376751320576241632979159914378",
"94857421077250562658921107379871075166"
]
},
"id": "CVE-2022-48635-c459320a",
"signature_type": "Line",
"target": {
"file": "fs/dax.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@60644dffac87b1bb47bdb393aa29d5f2ffcf41a0"
}
]