Find a file
Jens Axboe b00c51ef8f io_uring/net: cache provided buffer group value for multishot receives
If we're using ring provided buffers with multishot receive, and we end
up doing an io-wq based issue at some points that also needs to select
a buffer, we'll lose the initially assigned buffer group as
io_ring_buffer_select() correctly clears the buffer group list as the
issue isn't serialized by the ctx uring_lock. This is fine for normal
receives as the request puts the buffer and finishes, but for multishot,
we will re-arm and do further receives. On the next trigger for this
multishot receive, the receive will try and pick from a buffer group
whose value is the same as the buffer ID of the las receive. That is
obviously incorrect, and will result in a premature -ENOUFS error for
the receive even if we had available buffers in the correct group.

Cache the buffer group value at prep time, so we can restore it for
future receives. This only needs doing for the above mentioned case, but
just do it by default to keep it easier to read.

Cc: stable@vger.kernel.org
Fixes: b3fdea6ecb ("io_uring: multishot recv")
Fixes: 9bb66906f2 ("io_uring: support multishot in recvmsg")
Cc: Dylan Yudaken <dylany@meta.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2023-01-23 07:08:08 -07:00
arch MM patches for 6.2-rc1. 2022-12-13 19:29:45 -08:00
block for-6.2/block-2022-12-08 2022-12-13 10:43:59 -08:00
certs certs: make system keyring depend on built-in x509 parser 2022-09-24 04:31:18 +09:00
crypto iov_iter work; most of that is about getting rid of 2022-12-12 18:29:54 -08:00
Documentation MM patches for 6.2-rc1. 2022-12-13 19:29:45 -08:00
drivers MM patches for 6.2-rc1. 2022-12-13 19:29:45 -08:00
fs MM patches for 6.2-rc1. 2022-12-13 19:29:45 -08:00
include io_uring: move 'poll_multi_queue' bool in io_ring_ctx 2023-01-04 13:49:54 -07:00
init modules changes for v6.2-rc1 2022-12-13 14:05:39 -08:00
io_uring io_uring/net: cache provided buffer group value for multishot receives 2023-01-23 07:08:08 -07:00
ipc Non-MM patches for 6.2-rc1. 2022-12-12 17:28:58 -08:00
kernel MM patches for 6.2-rc1. 2022-12-13 19:29:45 -08:00
lib MM patches for 6.2-rc1. 2022-12-13 19:29:45 -08:00
LICENSES LICENSES/LGPL-2.1: Add LGPL-2.1-or-later as valid identifiers 2021-12-16 14:33:10 +01:00
mm MM patches for 6.2-rc1. 2022-12-13 19:29:45 -08:00
net Networking changes for 6.2. 2022-12-13 15:47:48 -08:00
rust rust: types: add Opaque type 2022-12-04 01:59:16 +01:00
samples Networking changes for 6.2. 2022-12-13 15:47:48 -08:00
scripts Networking changes for 6.2. 2022-12-13 15:47:48 -08:00
security integrity-v6.2 2022-12-13 14:22:50 -08:00
sound sound updates for 6.2-rc1 2022-12-13 11:27:26 -08:00
tools MM patches for 6.2-rc1. 2022-12-13 19:29:45 -08:00
usr usr/gen_init_cpio.c: remove unnecessary -1 values from int file 2022-10-03 14:21:44 -07:00
virt Merge branch 'kvm-dwmw2-fixes' into HEAD 2022-11-23 18:59:45 -05:00
.clang-format printk changes for 6.2 2022-12-12 09:01:36 -08:00
.cocciconfig
.get_maintainer.ignore get_maintainer: add Alan to .get_maintainer.ignore 2022-08-20 15:17:44 -07:00
.gitattributes .gitattributes: use 'dts' diff driver for dts files 2019-12-04 19:44:11 -08:00
.gitignore kbuild: Cleanup DT Overlay intermediate files as appropriate 2022-11-18 14:45:30 -06:00
.mailmap Non-MM patches for 6.2-rc1. 2022-12-12 17:28:58 -08:00
.rustfmt.toml rust: add .rustfmt.toml 2022-09-28 09:02:20 +02:00
COPYING COPYING: state that all contributions really are covered by this file 2020-02-10 13:32:20 -08:00
CREDITS MAINTAINERS: Remove Michal Marek from Kbuild maintainers 2022-11-16 14:53:00 +09:00
Kbuild Kbuild updates for v6.1 2022-10-10 12:00:45 -07:00
Kconfig kbuild: ensure full rebuild when the compiler is updated 2020-05-12 13:28:33 +09:00
MAINTAINERS MAINTAINERS: io_uring: Add include/trace/events/io_uring.h 2022-12-19 09:56:09 -07:00
Makefile This was a not-too-busy cycle for documentation; highlights include: 2022-12-12 17:18:50 -08:00
README Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.