---
id: CVE-2023-53511
title: 'io_uring: fix fget leak when fs don''t support nowait buffered read'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  io_uring: fix fget leak when fs don't support nowait buffered read

  Heming reported a BUG when using io_uring doing link-cp on ocfs2. [1]

  Do the following steps can re…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= a196c78b5443fc61af2c0490213b9d125482cbd1 <
    75a499fc9d66a32271e2b3e4ca71156e8ad3b484
  - >-
    Linux >= a196c78b5443fc61af2c0490213b9d125482cbd1 <
    10fb2e16ee6ffaf1716b9e90d007e6b300bfa457
  - >-
    Linux >= a196c78b5443fc61af2c0490213b9d125482cbd1 <
    54aa7f2330b82884f4a1afce0220add6e8312f8b
  - Linux cef27a7d36026bd3c86f4fdfb4611ebbe2814af4
  - Linux >= 5.17.9 < 5.18
  - Linux 5.18
ssvc:
  exploitation: none
  automatable: 'no'
  technicalImpact: partial
  timestamp: '2026-11-05T20:22:39.001478Z'
published: '2025-10-01'
updated: '2026-11-05'
sourceUpdated: '2026-11-05T20:31:12.425Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2023-53511'
references:
  - url: 'https://git.kernel.org/stable/c/75a499fc9d66a32271e2b3e4ca71156e8ad3b484'
  - url: 'https://git.kernel.org/stable/c/10fb2e16ee6ffaf1716b9e90d007e6b300bfa457'
  - url: 'https://git.kernel.org/stable/c/54aa7f2330b82884f4a1afce0220add6e8312f8b'
tags:
  - cve.org
epss: 0.00146
epssPercentile: 0.03901
ingestedAt: '2026-11-05T22:38:31.804Z'
---

## Overview

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

io_uring: fix fget leak when fs don't support nowait buffered read

Heming reported a BUG when using io_uring 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 mnt_get_count() 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.

io_issue_sqe
|-io_assign_file  // do fget() first
  |-io_read
  |-io_iter_do_read
    |-ocfs2_file_read_iter  // return -EOPNOTSUPP
  |-kiocb_done
    |-io_rw_done
      |-__io_complete_rw_common  // set REQ_F_REISSUE
    |-io_resubmit_prep
      |-io_req_prep_async  // 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

- `Linux >= a196c78b5443fc61af2c0490213b9d125482cbd1 < 75a499fc9d66a32271e2b3e4ca71156e8ad3b484`
- `Linux >= a196c78b5443fc61af2c0490213b9d125482cbd1 < 10fb2e16ee6ffaf1716b9e90d007e6b300bfa457`
- `Linux >= a196c78b5443fc61af2c0490213b9d125482cbd1 < 54aa7f2330b82884f4a1afce0220add6e8312f8b`
- `Linux cef27a7d36026bd3c86f4fdfb4611ebbe2814af4`
- `Linux >= 5.17.9 < 5.18`
- `Linux 5.18`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
