nvme: fix write_stream_granularity initialization
authorCaleb Sander Mateos <csander@purestorage.com>
Tue, 6 May 2025 17:54:12 +0000 (11:54 -0600)
committerJens Axboe <axboe@kernel.dk>
Tue, 6 May 2025 19:13:49 +0000 (13:13 -0600)
write_stream_granularity is set to max(info->runs, U32_MAX), which means
that any RUNS value less than 2 ** 32 becomes U32_MAX, and any larger
value is silently truncated to an unsigned int.

Use min() instead to provide the correct semantics, capping RUNS values
at U32_MAX.

Signed-off-by: Caleb Sander Mateos <csander@purestorage.com>
Fixes: 30b5f20bb2dd ("nvme: register fdp parameters with the block layer")
Reviewed-by: Keith Busch <kbusch@kernel.org>
Link: https://lore.kernel.org/r/20250506175413.1936110-1-csander@purestorage.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/nvme/host/core.c

index 52331a14bce174f4c9195dd9f621d382d7bd5abb..a9fb8cd544200f7732b29cd00f7a9281011e3a49 100644 (file)
@@ -2392,7 +2392,7 @@ static int nvme_update_ns_info_block(struct nvme_ns *ns,
 
        lim.max_write_streams = ns->head->nr_plids;
        if (lim.max_write_streams)
-               lim.write_stream_granularity = max(info->runs, U32_MAX);
+               lim.write_stream_granularity = min(info->runs, U32_MAX);
        else
                lim.write_stream_granularity = 0;