diff options
| author | Christian Aurich Zanettini Martins <christian.aurichzm@gmail.com> | 2026-10-24 18:37:37 -0300 |
|---|---|---|
| committer | Keith Busch <kbusch@kernel.org> | 2026-10-28 08:11:22 -0700 |
| commit | 557114b52c1d73f45c603337ac3465bba6667e34 (patch) | |
| tree | 21f80c7300b71faf0b1ff83913bdc4a6e2c3143f /tools/lib/python/kdoc/python_version.py | |
| parent | 60385038754ed9fb05dab127b35f88c702252505 (diff) | |
nvme-rdma: fix NULL metadata_sgl dereference with T10-PI
Since commit 2a8513091d2f ("nvme-rdma: parallelize I/O queue allocation
and startup") the I/O tag set is allocated before the I/O queues.
nvme_rdma_init_request() only sets req->metadata_sgl if
queue->pi_support is set, but pi_support is only set later by
nvme_rdma_alloc_queue(), so every I/O request is left with a NULL
metadata_sgl.
With an RDMA device that supports integrity and a namespace formatted
with protection information, nvme_rdma_dma_map_req() then dereferences
the NULL pointer on the first integrity I/O, already during the
namespace scan when there is more than one I/O queue.
Queues that a later reconnect adds for the first time have the same
problem.
Check queue_idx and the controller's max_integrity_segments instead,
which is what nvme_rdma_alloc_queue() derives pi_support from.
Fixes: 2a8513091d2f ("nvme-rdma: 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
