Lucene search

K
cvelistLinuxCVELIST:CVE-2023-52903
HistoryAug 21, 2024 - 6:10 a.m.

CVE-2023-52903 io_uring: lock overflowing for IOPOLL

2024-08-2106:10:43
Linux
www.cve.org
2
linux kernel
vulnerability
io_uring
lock overflowing
iopoll
syzbot
cpu
pid
comm
workqueue
event overflow
req cqe
fill cqe req
do iopoll
try reap events
try cancel requests
ring exit work
process one work
worker thread
kthread
ret from fork

EPSS

0

Percentile

5.1%

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

io_uring: lock overflowing for IOPOLL

syzbot reports an issue with overflow filling for IOPOLL:

WARNING: CPU: 0 PID: 28 at io_uring/io_uring.c:734 io_cqring_event_overflow+0x1c0/0x230 io_uring/io_uring.c:734
CPU: 0 PID: 28 Comm: kworker/u4:1 Not tainted 6.2.0-rc3-syzkaller-16369-g358a161a6a9e #0
Workqueue: events_unbound io_ring_exit_work
Call trace:
Ā io_cqring_event_overflow+0x1c0/0x230 io_uring/io_uring.c:734
Ā io_req_cqe_overflow+0x5c/0x70 io_uring/io_uring.c:773
Ā io_fill_cqe_req io_uring/io_uring.h:168 [inline]
Ā io_do_iopoll+0x474/0x62c io_uring/rw.c:1065
Ā io_iopoll_try_reap_events+0x6c/0x108 io_uring/io_uring.c:1513
Ā io_uring_try_cancel_requests+0x13c/0x258 io_uring/io_uring.c:3056
Ā io_ring_exit_work+0xec/0x390 io_uring/io_uring.c:2869
Ā process_one_work+0x2d8/0x504 kernel/workqueue.c:2289
Ā worker_thread+0x340/0x610 kernel/workqueue.c:2436
Ā kthread+0x12c/0x158 kernel/kthread.c:376
Ā ret_from_fork+0x10/0x20 arch/arm64/kernel/entry.S:863

There is no real problem for normal IOPOLL as flush is also called with
uring_lock taken, but itā€™s getting more complicated for IOPOLL|SQPOLL,
for which __io_cqring_overflow_flush() happens from the CQ waiting path.

CNA Affected

[
  {
    "product": "Linux",
    "vendor": "Linux",
    "defaultStatus": "unaffected",
    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
    "programFiles": [
      "io_uring/rw.c"
    ],
    "versions": [
      {
        "version": "1da177e4c3f4",
        "lessThan": "de77faee2801",
        "status": "affected",
        "versionType": "git"
      },
      {
        "version": "1da177e4c3f4",
        "lessThan": "ed4629d1e968",
        "status": "affected",
        "versionType": "git"
      },
      {
        "version": "1da177e4c3f4",
        "lessThan": "7fc3990dad04",
        "status": "affected",
        "versionType": "git"
      },
      {
        "version": "1da177e4c3f4",
        "lessThan": "544d163d659d",
        "status": "affected",
        "versionType": "git"
      }
    ]
  },
  {
    "product": "Linux",
    "vendor": "Linux",
    "defaultStatus": "affected",
    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
    "programFiles": [
      "io_uring/rw.c"
    ],
    "versions": [
      {
        "version": "5.10.165",
        "lessThanOrEqual": "5.10.*",
        "status": "unaffected",
        "versionType": "custom"
      },
      {
        "version": "5.15.89",
        "lessThanOrEqual": "5.15.*",
        "status": "unaffected",
        "versionType": "custom"
      },
      {
        "version": "6.1.7",
        "lessThanOrEqual": "6.1.*",
        "status": "unaffected",
        "versionType": "custom"
      },
      {
        "version": "6.2",
        "lessThanOrEqual": "*",
        "status": "unaffected",
        "versionType": "original_commit_for_fix"
      }
    ]
  }
]

EPSS

0

Percentile

5.1%