diff options
| author | Christian Aurich Zanettini Martins <christian.aurichzm@gmail.com> | 2026-10-27 16:47:10 -0300 |
|---|---|---|
| committer | Keith Busch <kbusch@kernel.org> | 2026-10-28 08:25:36 -0700 |
| commit | cf54a0dff38435bb3b7652872717cd02fdbac0ca (patch) | |
| tree | fb3834c9b6c1f7c967bdbfe9ac9936483d8a9294 /tools/lib/python/kdoc/python_version.py | |
| parent | 12c20e2903563acfb949342967adb900310a24d4 (diff) | |
nvme-tcp: fix request PDU size when header digest is enabled
Since commit 61b0ed3be81b ("nvme-tcp: parallelize I/O queue allocation
and startup") the I/O tag set is allocated before the I/O queues.
nvme_tcp_init_request() sizes the PDU with nvme_tcp_hdgst_len(queue),
but queue->hdr_digest is only set later by nvme_tcp_alloc_queue(), so
every I/O PDU is allocated without room for the header digest.
With hdr_digest enabled, the digest is then written 4 bytes past the
PDU, over the header of the next PDU in the page_frag cache, and the
target drops the connection on the first I/O:
nvmet_tcp: unexpected pdu type 159
nvmet: ctrl 1 fatal error occurred!
Queues that a later reconnect adds for the first time have the same
problem.
Set queue->hdr_digest when allocating the controller, together with
pf_cache_lock, so it is valid before any request is initialized.
Fixes: 61b0ed3be81b ("nvme-tcp: parallelize I/O queue allocation and startup")
Signed-off-by: Christian Aurich Zanettini Martins <christian.aurichzm@gmail.com>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Diffstat (limited to 'tools/lib/python/kdoc/python_version.py')
0 files changed, 0 insertions, 0 deletions
