[][openwrt][mt7988][tops][fix coverity issue]

[Description]
Fix TOPS coverity issue

[Release-log]
N/A

Change-Id: Ic4a5aaf30e66e7985ef3d13e7448a626ee8ba124
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/7922988
diff --git a/package-21.02/kernel/tops/src/firmware.c b/package-21.02/kernel/tops/src/firmware.c
index 20a7db1..646212f 100644
--- a/package-21.02/kernel/tops/src/firmware.c
+++ b/package-21.02/kernel/tops/src/firmware.c
@@ -377,7 +377,7 @@
 	u32 boot_addr = TOPS_DEFAULT_BOOT_ADDR;
 	u32 i;
 
-	for (i = TOPS_PART_TYPE_IRAM0; i < __TOPS_PART_TYPE_MAX; i++) {
+	for (i = TOPS_PART_TYPE_IRAM0; i < TOPS_PART_TYPE_METADATA; i++) {
 		hdr = part->hdr[i];
 
 		if (le16_to_cpu(hdr->flags) & FW_PART_BOOT_OVERRIDE) {
@@ -565,19 +565,21 @@
 	u32 meta_len;
 	u32 ofs = 0;
 	u32 nattr;
-	u32 i;
+	int i;
 
 	if (!tfw || !part)
 		return -EINVAL;
 
-	if (FW_ROLE(tfw) > __TOPS_ROLE_TYPE_MAX)
+	if (FW_ROLE(tfw) >= __TOPS_ROLE_TYPE_MAX)
 		return -EINVAL;
 
 	phdr = part->hdr[TOPS_PART_TYPE_METADATA];
 	payload = part->payload[TOPS_PART_TYPE_METADATA];
-	meta_len = le32_to_cpu(phdr->size);
+	if (!phdr || !payload)
+		return 0;
 
-	if (!phdr || !payload || !meta_len)
+	meta_len = le32_to_cpu(phdr->size);
+	if (!meta_len)
 		return 0;
 
 	fw_info = &npu.fw_info[FW_ROLE(tfw)];
diff --git a/package-21.02/kernel/tops/src/mcu.c b/package-21.02/kernel/tops/src/mcu.c
index 94f465c..30cb032 100644
--- a/package-21.02/kernel/tops/src/mcu.c
+++ b/package-21.02/kernel/tops/src/mcu.c
@@ -1387,7 +1387,7 @@
 		return -ENOMEM;
 
 	npu.pd_links = devm_kmalloc_array(dev, npu.pd_num,
-					  sizeof(struct device_link),
+					  sizeof(*npu.pd_links),
 					  GFP_KERNEL);
 	if (!npu.pd_links)
 		return -ENOMEM;
diff --git a/package-21.02/kernel/tops/src/tnl_offload.c b/package-21.02/kernel/tops/src/tnl_offload.c
index c989054..aa19f75 100644
--- a/package-21.02/kernel/tops/src/tnl_offload.c
+++ b/package-21.02/kernel/tops/src/tnl_offload.c
@@ -123,9 +123,7 @@
 
 static inline bool skb_tops_valid(struct sk_buff *skb)
 {
-	return (skb
-		&& skb_hnat_tops(skb) >= 0
-		&& skb_hnat_tops(skb) <= __TOPS_ENTRY_MAX);
+	return (skb && skb_hnat_tops(skb) <= __TOPS_ENTRY_MAX);
 }
 
 static inline struct tops_tnl_type *skb_to_tnl_type(struct sk_buff *skb)
diff --git a/package-21.02/kernel/tops/src/trm-fs.c b/package-21.02/kernel/tops/src/trm-fs.c
index f2bd9bf..3728ee1 100644
--- a/package-21.02/kernel/tops/src/trm-fs.c
+++ b/package-21.02/kernel/tops/src/trm-fs.c
@@ -36,10 +36,8 @@
 		if (likely(dst))
 			return dst;
 
-		if (rty++ < 3)
-			msleep(100);
-		else
-			break;
+		rty++;
+		msleep(100);
 	}
 
 	return ERR_PTR(-ENOMEM);
diff --git a/package-21.02/kernel/tops/src/trm.c b/package-21.02/kernel/tops/src/trm.c
index 11991cf..5fdc909 100644
--- a/package-21.02/kernel/tops/src/trm.c
+++ b/package-21.02/kernel/tops/src/trm.c
@@ -120,13 +120,11 @@
 
 	for (i = 0; i < __TRM_HARDWARE_MAX; i++) {
 		trm_hw_cfg = trm_hw_configs[i];
-		if (unlikely(!trm_hw_cfg))
+		if (unlikely(!trm_hw_cfg || !trm_hw_cfg->trm_cfgs))
 			continue;
 
 		for (j = 0; j < trm_hw_cfg->cfg_len; j++) {
 			trm_cfg = &trm_hw_cfg->trm_cfgs[j];
-			if (unlikely(!trm_cfg))
-				continue;
 
 			if (!strncmp(trm_cfg->name, name, strlen(name))) {
 				mutex_lock(&trm_lock);
@@ -178,7 +176,7 @@
 			total -= RLY_DUMP_SUBBUF_DATA_MAX;
 		} else {
 			frag_len = total;
-			total -= total;
+			total = 0;
 			trm_hdr.last_frag = true;
 		}