]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
nvme-print-binary: fix to output phy rx eom log length
authorTokunori Ikegami <ikegami.t@gmail.com>
Sun, 16 Feb 2025 06:58:04 +0000 (15:58 +0900)
committerDaniel Wagner <wagi@monom.org>
Mon, 17 Feb 2025 14:39:11 +0000 (15:39 +0100)
Previously incorrectly the log length is calculated by the LE log data.
So fix to convert the value from LE to host endian for the calculation.

Signed-off-by: Tokunori Ikegami <ikegami.t@gmail.com>
nvme-print-binary.c

index 2e9d7724268722dedca87d23fcc538d2585608e8..640727d49b1f70bdf7e9483383edfb1230613390 100644 (file)
@@ -65,14 +65,12 @@ static void binary_boot_part_log(void *bp_log, const char *devname,
        d_raw((unsigned char *)bp_log, size);
 }
 
-static void binary_phy_rx_eom_log(struct nvme_phy_rx_eom_log *log,
-       __u16 controller)
+static void binary_phy_rx_eom_log(struct nvme_phy_rx_eom_log *log, __u16 controller)
 {
-       size_t len;
+       size_t len = le16_to_cpu(log->hsize);
+
        if (log->eomip == NVME_PHY_RX_EOM_COMPLETED)
-               len = log->hsize + log->dsize * log->nd;
-       else
-               len = log->hsize;
+               len += (size_t)le32_to_cpu(log->dsize) * le16_to_cpu(log->nd);
 
        d_raw((unsigned char *)log, len);
 }