From: Thibaut VARÈNE Date: Fri, 5 Jun 2020 11:59:41 +0000 (+0200) Subject: generic: platform/mikrotik: fix routerboot_tag_show_u32s() X-Git-Tag: v21.02.0-rc1~2326 X-Git-Url: http://git.openwrt.org/?a=commitdiff_plain;h=5c4b431a3cd00bd0e7d0d66abe5ff02d669a9266;p=openwrt%2Fopenwrt.git generic: platform/mikrotik: fix routerboot_tag_show_u32s() The routine would only accurately print out the first word. Signed-off-by: Thibaut VARÈNE Fixes: 5ecf7d96 ("generic: routerboot sysfs platform driver") --- diff --git a/target/linux/generic/files/drivers/platform/mikrotik/routerboot.c b/target/linux/generic/files/drivers/platform/mikrotik/routerboot.c index 47e4471f8e..4c8c0bfac5 100644 --- a/target/linux/generic/files/drivers/platform/mikrotik/routerboot.c +++ b/target/linux/generic/files/drivers/platform/mikrotik/routerboot.c @@ -194,18 +194,18 @@ ssize_t routerboot_tag_show_string(const u8 *pld, u16 pld_len, char *buf) ssize_t routerboot_tag_show_u32s(const u8 *pld, u16 pld_len, char *buf) { char *out = buf; - u32 data; // cpu-endian + u32 *data; // cpu-endian /* Caller ensures pld_len > 0 */ - if (pld_len % sizeof(data)) + if (pld_len % sizeof(*data)) return -EINVAL; - data = *(u32 *)pld; + data = (u32 *)pld; do { - out += sprintf(out, "0x%08x\n", data); + out += sprintf(out, "0x%08x\n", *data); data++; - } while ((pld_len -= sizeof(data))); + } while ((pld_len -= sizeof(*data))); return out - buf; }