CVE-2023-53511: io_uring: fix fget leak when fs don't support nowait buffered read
In the Linux kernel, the following vulnerability has been resolved:
iouring: fix fget leak when fs don't support nowait buffered read
Heming reported a BUG when using iouring doing link-cp on ocfs2. [1]
Do the following steps can reproduce this BUG: mount -t ocfs2 /dev/vdc /mnt/ocfs2 cp testfile /mnt/ocfs2/ ./link-cp /mnt/ocfs2/testfile /mnt/ocfs2/testfile.1 umount /mnt/ocfs2
Then umount will fail, and it outputs: umount: /mnt/ocfs2: target is busy.
While tracing umount, it blames mntgetcount() not return as expected. Do a deep investigation for fget()/fput() on related code flow, I've finally found that fget() leaks since ocfs2 doesn't support nowait buffered read.
ioissuesqe |-ioassignfile // do fget() first |-ioread |-ioiterdoread |-ocfs2filereaditer // return -EOPNOTSUPP |-kiocbdone |-iorwdone |-iocompleterwcommon // set REQFREISSUE |-ioresubmitprep |-ioreqprepasync // override req->file, leak happens
This was introduced by commit a196c78b5443 in v5.18. Fix it by don't re-assign req->file if it has already been assigned.
[1] https://lore.kernel.org/ocfs2-devel/ab580a75-91c8-d68a-3455-40361be1bfa8@linux.alibaba.com/T/#t
Affected Software
Remediation
Event History
Frequently Asked Questions
What is the severity of CVE-2023-53511?
CVE-2023-53511 has a medium severity rating due to a potential fget leak issue in the Linux kernel.
How do I fix CVE-2023-53511?
To fix CVE-2023-53511, you should update your Linux kernel to the latest version where the vulnerability has been patched.
What systems are affected by CVE-2023-53511?
CVE-2023-53511 affects the Linux kernel, specifically systems using io_uring with ocfs2.
What type of vulnerability is CVE-2023-53511?
CVE-2023-53511 is a resource management vulnerability that can lead to a file descriptor leak.
Who reported the issue related to CVE-2023-53511?
The issue related to CVE-2023-53511 was reported by a user named Heming.