ath10k: coredump: use struct_size() helper
authorGustavo A. R. Silva <gustavo@embeddedor.com>
Wed, 3 Apr 2019 19:06:36 +0000 (14:06 -0500)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 7 May 2019 13:52:39 +0000 (16:52 +0300)
Make use of the struct_size() helper instead of an open-coded version
in order to avoid any potential type mistakes, in particular in the
context in which this code is being used.

So, replace code of the following form:

sizeof(*ce_hdr) + CE_COUNT * sizeof(ce_hdr->entries[0])

with:

struct_size(ce_hdr, entries, CE_COUNT)

This code was detected with the help of Coccinelle.

Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/ath10k/coredump.c

index 33838d9c1cb6068b56099f403b6fd668b04fb620..7825b6a1b1043a29f8820eb57472385e03d39c2b 100644 (file)
@@ -1192,8 +1192,8 @@ static struct ath10k_dump_file_data *ath10k_coredump_build(struct ath10k *ar)
        if (test_bit(ATH10K_FW_CRASH_DUMP_CE_DATA, &ath10k_coredump_mask)) {
                dump_tlv = (struct ath10k_tlv_dump_data *)(buf + sofar);
                dump_tlv->type = cpu_to_le32(ATH10K_FW_CRASH_DUMP_CE_DATA);
-               dump_tlv->tlv_len = cpu_to_le32(sizeof(*ce_hdr) +
-                                               CE_COUNT * sizeof(ce_hdr->entries[0]));
+               dump_tlv->tlv_len = cpu_to_le32(struct_size(ce_hdr, entries,
+                                                           CE_COUNT));
                ce_hdr = (struct ath10k_ce_crash_hdr *)(dump_tlv->tlv_data);
                ce_hdr->ce_count = cpu_to_le32(CE_COUNT);
                memset(ce_hdr->reserved, 0, sizeof(ce_hdr->reserved));