]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
nvme: Enforce length to a multiple of 4 in get_log_page
authorduanhaoqiang <127735789+duanhaoqiang@users.noreply.github.com>
Wed, 15 Mar 2023 10:20:59 +0000 (18:20 +0800)
committerDaniel Wagner <dwagner@suse.de>
Wed, 22 Mar 2023 14:27:38 +0000 (15:27 +0100)
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 <dwagner@suse.de>
nvme.c

diff --git a/nvme.c b/nvme.c
index 52b10d3b63642da6ca63f6eeaa4022c90dee9e1c..3bc4b2a8ef8ff17b4963412dc3f6dd6d0bd768d3 100644 (file)
--- 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;
        }