]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
nvme-cli: add missing endianness conversions for telemetry log page
authorAkinobu Mita <akinobu.mita@gmail.com>
Sun, 5 May 2019 17:55:27 +0000 (10:55 -0700)
committerKeith Busch <keith.busch@intel.com>
Mon, 6 May 2019 13:31:51 +0000 (07:31 -0600)
Add missing endianness conversions for data area last block fields of
telemetry log page.

Cc: Keith Busch <keith.busch@intel.com>
Cc: Jens Axboe <axboe@fb.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
linux/nvme.h
nvme.c

index a1422a7764fecd06ff86486f9959d3ad1b60f263..f6d73413491e49e9aa49cef49ee15deee12679c3 100644 (file)
@@ -433,9 +433,9 @@ struct nvme_telemetry_log_page_hdr {
        __u8    lpi; /* Log page identifier */
        __u8    rsvd[4];
        __u8    iee_oui[3];
-       __u16   dalb1; /* Data area 1 last block */
-       __u16   dalb2; /* Data area 2 last block */
-       __u16   dalb3; /* Data area 3 last block */
+       __le16  dalb1; /* Data area 1 last block */
+       __le16  dalb2; /* Data area 2 last block */
+       __le16  dalb3; /* Data area 3 last block */
        __u8    rsvd1[368]; /* TODO verify */
        __u8    ctrlavail; /* Controller initiated data avail?*/
        __u8    ctrldgn; /* Controller initiated telemetry Data Gen # */
diff --git a/nvme.c b/nvme.c
index f4c027bcbb21eb572802de4c859c77b9ee8b5013..220fb18b502a8c8678ed01d51216a7c75c6a382d 100644 (file)
--- a/nvme.c
+++ b/nvme.c
@@ -376,13 +376,13 @@ static int get_telemetry_log(int argc, char **argv, struct command *cmd, struct
 
        switch (cfg.data_area) {
        case 1:
-               full_size = (hdr->dalb1 * bs) + offset;
+               full_size = (le16_to_cpu(hdr->dalb1) * bs) + offset;
                break;
        case 2:
-               full_size = (hdr->dalb2 * bs) + offset;
+               full_size = (le16_to_cpu(hdr->dalb2) * bs) + offset;
                break;
        case 3:
-               full_size = (hdr->dalb3 * bs) + offset;
+               full_size = (le16_to_cpu(hdr->dalb3) * bs) + offset;
                break;
        default:
                fprintf(stderr, "Invalid data area requested");