In the Linux kernel, the following vulnerability has been resolved:
iouring/tctx: work around xastore() allocation error issue
syzbot triggered the following WARN_ON:
WARNING: CPU: 0 PID: 16 at iouring/tctx.c:51 _iouringfree+0xfa/0x140 io_uring/tctx.c:51
which is the
WARNONONCE(!xa_empty(&tctx->xa));
sanity check in _iouringfree() when a iouringtask is going through its final put. The syzbot test case includes injecting memory allocation failures, and it very much looks like xastore() can fail one of its memory allocations and end up with ->head being non-NULL even though no entries exist in the xarray.
Until this issue gets sorted out, work around it by attempting to iterate entries in our xarray, and WARNONONCE() if one is found.