All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/5] nvme: validate and decode controller supplied values
@ 2026-11-14 17:27 shao.mingyin
  2026-11-14 17:27 ` [PATCH 1/5] nvme: zns: reject an out-of-range zone append size limit shao.mingyin
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: shao.mingyin @ 2026-11-14 17:27 UTC (permalink / raw)
  To: kbusch, axboe, hch, sagi, linux-nvme; +Cc: linux-kernel, stable

This series adds missing validation and endian decoding for values that
come from a controller, a backing controller or a user request.

Patch 1 rejects an invalid ZASL from the controller.  nvme_set_max_append()
shifts 1 by zasl + 3; a value of 29 or more shifts a 32-bit value by 32 or
more, and the old code also used a signed int for the shift.

Patch 2 maps the user data buffer whenever the ioctl length is non-zero,
not only when the user address is non-zero.  With addr 0 and a non-zero
length the command was submitted without a data buffer, and the target
rejected it with an invalid SGL status instead of the host rejecting the
user buffer.

Patch 3 rejects an Identify Namespace from a passthrough backing
controller whose nlbaf does not fit the 64-entry LBA format table.  The
old loop cleared fields past the table and returned an inconsistent
Identify structure.

Patch 4 decodes the FDP Get Features result as the little-endian dword
the controller returns, instead of passing a four-byte structure to the
u32 result pointer and reading it in host byte order.

Patch 5 bounds the reservation report retry loop.  A target that keeps
changing the registrant count made the ioctl loop forever, allocating a
full status buffer on every iteration.

The five patches are independent and can be applied in any order.  All
carry Fixes: and Cc: stable.

Testing: all apply to next-20261105, pass checkpatch.pl --strict with
0 errors/0 warnings/0 checks, and zns.c, ioctl.c, passthru.c, core.c
and pr.c build with the corresponding options under W=1.  Each patch's
--- notes describe its QEMU/TCG A/B test with a test-only target hook;
no hardware was used.

Shao Mingyin (5):
  nvme: zns: reject an out-of-range zone append size limit
  nvme: map passthrough data when the length is nonzero
  nvmet: validate the LBA format count of a passthrough namespace
  nvme: decode the FDP Get Features result as a dword
  nvme: bound the reservation report retry loop

 drivers/nvme/host/core.c       |  6 +++---
 drivers/nvme/host/ioctl.c      |  2 +-
 drivers/nvme/host/pr.c         |  4 +++-
 drivers/nvme/host/zns.c        | 11 ++++++++---
 drivers/nvme/target/passthru.c |  5 +++++
 5 files changed, 20 insertions(+), 8 deletions(-)

---
base-commit: ddfe51b0a0f5dc9e415cc2c8ad8db17532dd426b

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-11-14 17:37 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-14 17:27 [PATCH 0/5] nvme: validate and decode controller supplied values shao.mingyin
2026-11-14 17:27 ` [PATCH 1/5] nvme: zns: reject an out-of-range zone append size limit shao.mingyin
2026-11-14 17:27 ` [PATCH 2/5] nvme: map passthrough data when the length is nonzero shao.mingyin
2026-11-14 17:27 ` [PATCH 3/5] nvmet: validate the LBA format count of a passthrough namespace shao.mingyin
2026-11-14 17:27 ` [PATCH 4/5] nvme: decode the FDP Get Features result as a dword shao.mingyin
2026-11-14 17:37   ` sashiko-bot
2026-11-14 17:27 ` [PATCH 5/5] nvme: bound the reservation report retry loop shao.mingyin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.