]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
nvme-cli: fix endianness for the structure field
authorChaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Fri, 26 Oct 2018 17:08:33 +0000 (10:08 -0700)
committerKeith Busch <keith.busch@intel.com>
Mon, 29 Oct 2018 22:01:34 +0000 (16:01 -0600)
Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
plugins/wdc/wdc-nvme.c

index 604a8a91d8319be505b56499dfbdc9eac63aa66f..5ef965d64702f5d8d0403ab36b0b430aa0820bb2 100644 (file)
@@ -668,13 +668,14 @@ static int wdc_nvme_check_supported_log_page(int fd, __u8 log_id)
 
        hdr_ptr = (struct wdc_c2_log_page_header *)data;
 
-       if (hdr_ptr->length > WDC_C2_LOG_BUF_LEN) {
-               fprintf(stderr, "ERROR : WDC : data length > buffer size : 0x%x\n", hdr_ptr->length);
+       if (le32_to_cpu(hdr_ptr->length) > WDC_C2_LOG_BUF_LEN) {
+               fprintf(stderr, "ERROR : WDC : data length > buffer size : 0x%x\n",
+                               le32_to_cpu(hdr_ptr->length));
                goto out;
        }
 
        ret = nvme_get_log(fd, 0xFFFFFFFF, WDC_NVME_GET_AVAILABLE_LOG_PAGES_OPCODE,
-                          false,  hdr_ptr->length, data);
+                          false,  le32_to_cpu(hdr_ptr->length), data);
        /* parse the data until the List of log page ID's is found */
        if (ret) {
                fprintf(stderr, "ERROR : WDC : Unable to read C2 Log Page data, ret = %d\n", ret);
@@ -682,13 +683,13 @@ static int wdc_nvme_check_supported_log_page(int fd, __u8 log_id)
        }
 
        length = sizeof(struct wdc_c2_log_page_header);
-       while (length < hdr_ptr->length) {
+       while (length < le32_to_cpu(hdr_ptr->length)) {
                sph = (struct wdc_c2_log_subpage_header *)(data + length);
 
-               if (sph->entry_id == WDC_C2_LOG_PAGES_SUPPORTED_ID) {
+               if (le32_to_cpu(sph->entry_id) == WDC_C2_LOG_PAGES_SUPPORTED_ID) {
                        cbs_data = (struct wdc_c2_cbs_data *)&sph->data;
 
-                       for (i = 0; i < cbs_data->length; i++) {
+                       for (i = 0; i < le32_to_cpu(cbs_data->length); i++) {
                                if (log_id == cbs_data->data[i]) {
                                        found = 1;
                                        ret = 0;
@@ -700,7 +701,7 @@ static int wdc_nvme_check_supported_log_page(int fd, __u8 log_id)
                                fprintf(stderr, "ERROR : WDC : Log Page 0x%x not supported\n", log_id);
                                fprintf(stderr, "WDC : Supported Log Pages:\n");
                                /* print the supported pages */
-                               d((__u8 *)&sph->data + 4, sph->length - 12, 16, 1);
+                               d((__u8 *)&sph->data + 4, le32_to_cpu(sph->length) - 12, 16, 1);
                                ret = -1;
                        }
                        break;