diff --git a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_dbg.c b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_dbg.c
index 5ad8645..69e92db 100755
--- a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_dbg.c
+++ b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_dbg.c
@@ -265,7 +265,7 @@
 {
 	struct mtk_eth *eth = file->private_data;
 	char buf[32], *token, *p = buf;
-	u32 reg, value, phy;
+	unsigned long reg, value, phy;
 	int ret;
 
 	if (!mt7530_exist(eth))
@@ -314,7 +314,7 @@
 {
 	struct mtk_eth *eth = file->private_data;
 	char buf[32], *token, *p = buf;
-	u32 reg, value, phy;
+	unsigned long reg, value, phy;
 	int ret;
 
 	if (*off != 0)
@@ -766,7 +766,8 @@
 	seq_printf(seq, "cpu next free: %d\n", (int)(ring->next_free - ring->dma));
 	seq_printf(seq, "cpu last free: %d\n", (int)(ring->last_free - ring->dma));
 	for (i = 0; i < MTK_DMA_SIZE; i++) {
-		dma_addr_t tmp = ring->phys + i * eth->soc->txrx.txd_size;
+		dma_addr_t tmp = ring->phys +
+				 i * (dma_addr_t)eth->soc->txrx.txd_size;
 
 		tx_ring = ring->dma + i * eth->soc->txrx.txd_size;
 
@@ -807,7 +808,8 @@
 	int i = 0;
 
 	for (i = 0; i < MTK_DMA_SIZE; i++) {
-		dma_addr_t addr = eth->phy_scratch_ring + i * eth->soc->txrx.txd_size;
+		dma_addr_t addr = eth->phy_scratch_ring +
+				  i * (dma_addr_t)eth->soc->txrx.txd_size;
 
 		hwtx_ring = eth->scratch_ring + i * eth->soc->txrx.txd_size;
 
@@ -1062,6 +1064,9 @@
 		agg_cnt = RX_DMA_GET_AGG_CNT(rxd->rxd2);
 	}
 
+	if (idx >= MTK_HW_LRO_RING_NUM)
+		return;
+
 	agg_size = RX_DMA_GET_PLEN0(rxd->rxd2);
 
 	hw_lro_agg_size_cnt[idx][agg_size / 5000]++;
@@ -1084,6 +1089,9 @@
 		flush_reason = RX_DMA_GET_REV(rxd->rxd2);
 	}
 
+	if (idx >= MTK_HW_LRO_RING_NUM)
+		return;
+
 	if ((flush_reason & 0x7) == MTK_HW_LRO_AGG_FLUSH)
 		hw_lro_agg_flush_cnt[idx]++;
 	else if ((flush_reason & 0x7) == MTK_HW_LRO_AGE_FLUSH)
diff --git a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_path.c b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_path.c
index 04f3f26..c9b1a43 100755
--- a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_path.c
+++ b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_path.c
@@ -204,8 +204,10 @@
 		regmap_read(eth->ethsys, ETHSYS_SYSCFG0, &val);
 		val &= SYSCFG0_SGMII_MASK;
 
-		if ((path == MTK_GMAC1_RGMII && val == SYSCFG0_SGMII_GMAC1) ||
-		    (path == MTK_GMAC2_RGMII && val == SYSCFG0_SGMII_GMAC2))
+		if ((path == MTK_ETH_PATH_GMAC1_RGMII &&
+		     val == SYSCFG0_SGMII_GMAC1) ||
+		    (path == MTK_ETH_PATH_GMAC2_RGMII &&
+		     val == SYSCFG0_SGMII_GMAC2))
 			val = 0;
 		else
 			updated = false;
diff --git a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.c
index 0e34957..2d2797d 100755
--- a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -1143,7 +1143,8 @@
 	if (unlikely(dma_mapping_error(eth->dev, dma_addr)))
 		return -ENOMEM;
 
-	phy_ring_tail = eth->phy_scratch_ring + soc->txrx.txd_size * (cnt - 1);
+	phy_ring_tail = eth->phy_scratch_ring +
+			(dma_addr_t)soc->txrx.txd_size * (cnt - 1);
 
 	for (i = 0; i < cnt; i++) {
 		struct mtk_tx_dma_v2 *txd;
@@ -1738,7 +1739,7 @@
 	while (done < budget) {
 		struct net_device *netdev = NULL;
 		unsigned int pktlen;
-		dma_addr_t dma_addr;
+		dma_addr_t dma_addr = 0;
 		int mac = 0;
 
 		if (eth->hwlro)
@@ -2126,7 +2127,8 @@
 					       &ring->phys, GFP_KERNEL);
 	else {
 		ring->dma =  eth->scratch_ring + MTK_DMA_SIZE * sz;
-		ring->phys = eth->phy_scratch_ring + MTK_DMA_SIZE * sz;
+		ring->phys = eth->phy_scratch_ring +
+			     MTK_DMA_SIZE * (dma_addr_t)sz;
 	}
 
 	if (!ring->dma)
@@ -4035,8 +4037,13 @@
 					         "ethernet:fixed link", mac);
 			}
 
-			if (!of_property_read_string(to_of_node(fixed_node), "label", &label))
-				strcpy(phylink_priv->label, label);
+			if (!of_property_read_string(to_of_node(fixed_node),
+						     "label", &label)) {
+				if (strlen(label) < 16)
+					strcpy(phylink_priv->label, label);
+				else
+					dev_err(eth->dev, "insufficient space for label!\n");
+			}
 
 			phy_np = of_parse_phandle(to_of_node(fixed_node), "phy-handle", 0);
 			if (phy_np) {
diff --git a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_sgmii.c b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_sgmii.c
index d200b16..872c27e 100755
--- a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_sgmii.c
+++ b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_sgmii.c
@@ -102,7 +102,7 @@
 {
 	u32 id = mtk_mac2xgmii_id(ss->eth, mac_id);
 
-	if (id < 0 || id >= MTK_MAX_DEVS ||
+	if (id >= MTK_MAX_DEVS ||
 	    !ss->regmap_sgmii[id] || !ss->regmap_pextp[id])
 		return;
 
diff --git a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_usxgmii.c b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_usxgmii.c
index 7d4a3ed..bdd5231 100644
--- a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_usxgmii.c
+++ b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_usxgmii.c
@@ -118,7 +118,7 @@
 {
 	u32 id = mtk_mac2xgmii_id(ss->eth, mac_id);
 
-	if (id < 0 || id >= MTK_MAX_DEVS ||
+	if (id >= MTK_MAX_DEVS ||
 	    !ss->regmap_usxgmii[id] || !ss->regmap_pextp[id])
 		return;
 
@@ -189,7 +189,7 @@
 	unsigned int val;
 	u32 id = mtk_mac2xgmii_id(ss->eth, mac_id);
 
-	if (id < 0 || id >= MTK_MAX_DEVS ||
+	if (id >= MTK_MAX_DEVS ||
 	    !ss->regmap_usxgmii[id] || !ss->regmap_pextp[id])
 		return;
 
@@ -292,7 +292,7 @@
 	struct mtk_eth *eth = ss->eth;
 	u32 id = mtk_mac2xgmii_id(eth, mac_id);
 
-	if (id < 0 || id >= MTK_MAX_DEVS || !eth->toprgu)
+	if (id >= MTK_MAX_DEVS || !eth->toprgu)
 		return;
 
 	switch (mac_id) {
