[][Fix coverity scan check errors in mtk eth driver]
[Description]
Fix coverity scan check errors in mtk eth driver
[Release-log]
N/A
Change-Id: Idd57117afcc0478c107ef0e683a4993eb80221c0
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/5108909
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 4396762..ca88795 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
@@ -107,8 +107,8 @@
write_data &= 0xffff;
mtk_w32(eth, PHY_IAC_ACCESS | PHY_IAC_START | PHY_IAC_WRITE |
- (phy_register << PHY_IAC_REG_SHIFT) |
- (phy_addr << PHY_IAC_ADDR_SHIFT) | write_data,
+ ((phy_register & 0x1f) << PHY_IAC_REG_SHIFT) |
+ ((phy_addr & 0x1f) << PHY_IAC_ADDR_SHIFT) | write_data,
MTK_PHY_IAC);
if (mtk_mdio_busy_wait(eth))
@@ -125,8 +125,8 @@
return 0xffff;
mtk_w32(eth, PHY_IAC_ACCESS | PHY_IAC_START | PHY_IAC_READ |
- (phy_reg << PHY_IAC_REG_SHIFT) |
- (phy_addr << PHY_IAC_ADDR_SHIFT),
+ ((phy_reg & 0x1f) << PHY_IAC_REG_SHIFT) |
+ ((phy_addr & 0x1f) << PHY_IAC_ADDR_SHIFT),
MTK_PHY_IAC);
if (mtk_mdio_busy_wait(eth))
@@ -249,7 +249,7 @@
phylink_config);
struct mtk_eth *eth = mac->hw;
u32 mcr_cur, mcr_new, sid, i;
- int val, ge_mode, err;
+ int val, ge_mode, err=0;
/* MT76x8 has no hardware settings between for the MAC */
if (!MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628) &&
@@ -614,7 +614,10 @@
eth->mii_bus->priv = eth;
eth->mii_bus->parent = eth->dev;
- snprintf(eth->mii_bus->id, MII_BUS_ID_SIZE, "%pOFn", mii_np);
+ if(snprintf(eth->mii_bus->id, MII_BUS_ID_SIZE, "%pOFn", mii_np)) {
+ ret = -ENOMEM;
+ goto err_put_node;
+ }
ret = of_mdiobus_register(eth->mii_bus, mii_np);
err_put_node:
@@ -1331,12 +1334,9 @@
{
int i;
- if (!eth->hwlro) {
- if (unlikely(!ring))
- dev_info(eth->dev, "Update Rx cpu index failed !\n");
-
+ if (!eth->hwlro)
mtk_w32(eth, ring->calc_idx, ring->crx_idx_reg);
- } else {
+ else {
for (i = 0; i < MTK_MAX_RX_RING_NUM; i++) {
ring = ð->rx_ring[i];
if (ring->calc_idx_update) {
@@ -1525,7 +1525,7 @@
return done;
}
-static int mtk_poll_tx_qdma(struct mtk_eth *eth, int budget,
+static void mtk_poll_tx_qdma(struct mtk_eth *eth, int budget,
unsigned int *done, unsigned int *bytes)
{
struct mtk_tx_ring *ring = ð->tx_ring;
@@ -1571,11 +1571,9 @@
ring->last_free_ptr = cpu;
mtk_w32(eth, cpu, MTK_QTX_CRX_PTR);
-
- return budget;
}
-static int mtk_poll_tx_pdma(struct mtk_eth *eth, int budget,
+static void mtk_poll_tx_pdma(struct mtk_eth *eth, int budget,
unsigned int *done, unsigned int *bytes)
{
struct mtk_tx_ring *ring = ð->tx_ring;
@@ -1609,8 +1607,6 @@
}
ring->cpu_idx = cpu;
-
- return budget;
}
static int mtk_poll_tx(struct mtk_eth *eth, int budget)
@@ -1624,9 +1620,9 @@
memset(bytes, 0, sizeof(bytes));
if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA))
- budget = mtk_poll_tx_qdma(eth, budget, done, bytes);
+ mtk_poll_tx_qdma(eth, budget, done, bytes);
else
- budget = mtk_poll_tx_pdma(eth, budget, done, bytes);
+ mtk_poll_tx_pdma(eth, budget, done, bytes);
for (i = 0; i < MTK_MAC_COUNT; i++) {
if (!eth->netdev[i] || !done[i])
@@ -3291,7 +3287,7 @@
}
id = be32_to_cpup(_id);
- if (id >= MTK_MAC_COUNT) {
+ if (id < 0 || id >= MTK_MAC_COUNT) {
dev_err(eth->dev, "%d is not a valid mac id\n", id);
return -EINVAL;
}
diff --git a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.h b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.h
index b8c0728..3922064 100755
--- a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.h
+++ b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.h
@@ -1221,7 +1221,7 @@
* @hw_stats: Packet statistics counter
*/
struct mtk_mac {
- int id;
+ unsigned int id;
phy_interface_t interface;
unsigned int mode;
int speed;
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 2785666..50bdbd8 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
@@ -37,7 +37,7 @@
return 0;
}
-int mtk_sgmii_setup_mode_an(struct mtk_sgmii *ss, int id)
+int mtk_sgmii_setup_mode_an(struct mtk_sgmii *ss, unsigned int id)
{
unsigned int val;
@@ -67,7 +67,7 @@
return 0;
}
-int mtk_sgmii_setup_mode_force(struct mtk_sgmii *ss, int id,
+int mtk_sgmii_setup_mode_force(struct mtk_sgmii *ss, unsigned int id,
const struct phylink_link_state *state)
{
unsigned int val;