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().