From 16cfd09d71ffb5f172b51f3690d1b64ece3d2a33 Mon Sep 17 00:00:00 2001 From: duanhaoqiang <127735789+duanhaoqiang@users.noreply.github.com> Date: Wed, 15 Mar 2023 18:20:59 +0800 Subject: [PATCH] nvme: Enforce length to a multiple of 4 in get_log_page When calculating NUMDL and NUMDU we assume that the controller is only able to handle dword aligment (see Figure 117: SGL Data Block descriptor). Hence we just need to allocate a buffer which is a multiple of 4. [dwagner: added commit message] Signed-off-by: Daniel Wagner --- nvme.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nvme.c b/nvme.c index 52b10d3b..3bc4b2a8 100644 --- a/nvme.c +++ b/nvme.c @@ -2257,8 +2257,8 @@ static int get_log(int argc, char **argv, struct command *cmd, struct plugin *pl cfg.log_id = (cfg.aen >> 16) & 0xff; } - if (!cfg.log_len) { - fprintf(stderr, "non-zero log-len is required param\n"); + if (!cfg.log_len || cfg.log_len & 0x3) { + fprintf(stderr, "non-zero or non-dw alignment log-len is required param\n"); err = -EINVAL; goto close_dev; } -- 2.49.0