[PATCH v2 3/3] net/r8169: fix issues reported by Coverity
Howard Wang
howard_wang at realsil.com.cn
Wed Oct 29 03:08:38 CET 2025
Coverity issue: 472838
Coverity issue: 472836
Coverity issue: 472834
Coverity issue: 472831
Coverity issue: 472829
Fixes: d9ee71b5f1bc ("net/r8169: support RTL8168 series")
Coverity issue: 472830
Fixes: 619f6ebce115 ("net/r8169: support hardware configuration")
Signed-off-by: Howard Wang <howard_wang at realsil.com.cn>
---
drivers/net/r8169/r8169_hw.c | 10 ++++-----
drivers/net/r8169/r8169_phy.c | 2 +-
drivers/net/r8169/r8169_rxtx.c | 37 +++++++++++++++++++---------------
3 files changed, 27 insertions(+), 22 deletions(-)
diff --git a/drivers/net/r8169/r8169_hw.c b/drivers/net/r8169/r8169_hw.c
index f69f87c202..e1521f5f9d 100644
--- a/drivers/net/r8169/r8169_hw.c
+++ b/drivers/net/r8169/r8169_hw.c
@@ -346,16 +346,16 @@ rtl_oob_mutex_lock(struct rtl_hw *hw)
}
rtl_ocp_write(hw, ocp_reg_mutex_ib, 1, BIT_0);
- reg_16 = rtl_ocp_read(hw, ocp_reg_mutex_oob, 1);
+ reg_16 = (u8)rtl_ocp_read(hw, ocp_reg_mutex_oob, 1);
wait_cnt_0 = 0;
while (reg_16) {
- reg_a0 = rtl_ocp_read(hw, ocp_reg_mutex_prio, 1);
+ reg_a0 = (u8)rtl_ocp_read(hw, ocp_reg_mutex_prio, 1);
if (reg_a0) {
rtl_ocp_write(hw, ocp_reg_mutex_ib, 1, 0x00);
- reg_a0 = rtl_ocp_read(hw, ocp_reg_mutex_prio, 1);
+ reg_a0 = (u8)rtl_ocp_read(hw, ocp_reg_mutex_prio, 1);
wait_cnt_1 = 0;
while (reg_a0) {
- reg_a0 = rtl_ocp_read(hw, ocp_reg_mutex_prio, 1);
+ reg_a0 = (u8)rtl_ocp_read(hw, ocp_reg_mutex_prio, 1);
wait_cnt_1++;
@@ -364,7 +364,7 @@ rtl_oob_mutex_lock(struct rtl_hw *hw)
};
rtl_ocp_write(hw, ocp_reg_mutex_ib, 1, BIT_0);
}
- reg_16 = rtl_ocp_read(hw, ocp_reg_mutex_oob, 1);
+ reg_16 = (u8)rtl_ocp_read(hw, ocp_reg_mutex_oob, 1);
wait_cnt_0++;
diff --git a/drivers/net/r8169/r8169_phy.c b/drivers/net/r8169/r8169_phy.c
index 9bb5774672..50c24d1504 100644
--- a/drivers/net/r8169/r8169_phy.c
+++ b/drivers/net/r8169/r8169_phy.c
@@ -807,7 +807,7 @@ rtl8168_phy_ram_code_check(struct rtl_hw *hw)
retval = FALSE;
}
- retval = rtl_clear_phy_mcu_patch_request(hw);
+ rtl_clear_phy_mcu_patch_request(hw);
rte_delay_ms(2);
}
diff --git a/drivers/net/r8169/r8169_rxtx.c b/drivers/net/r8169/r8169_rxtx.c
index 50a47c3670..37f4c4da80 100644
--- a/drivers/net/r8169/r8169_rxtx.c
+++ b/drivers/net/r8169/r8169_rxtx.c
@@ -1707,9 +1707,6 @@ rtl8125_tx_clean(struct rtl_hw *hw, struct rtl_tx_queue *txq)
uint32_t tx_left;
uint32_t tx_desc_closed;
- if (!txq)
- return;
-
if (enable_tx_no_close) {
txq->NextHwDesCloPtr = rtl_get_hw_clo_ptr(txq);
tx_desc_closed = rtl_fast_mod_mask(txq->NextHwDesCloPtr -
@@ -1755,9 +1752,6 @@ rtl8168_tx_clean(struct rtl_hw *hw __rte_unused, struct rtl_tx_queue *txq)
int head = txq->tx_head;
uint16_t desc_freed = 0;
- if (!txq)
- return;
-
while (1) {
txd = &txq->hw_ring[head];
@@ -1794,13 +1788,13 @@ static int
rtl8125_tx_done_cleanup(void *tx_queue, uint32_t free_cnt)
{
struct rtl_tx_queue *txq = tx_queue;
- struct rtl_hw *hw = txq->hw;
- struct rtl_tx_entry *sw_ring = txq->sw_ring;
+ struct rtl_hw *hw;
+ struct rtl_tx_entry *sw_ring;
struct rtl_tx_entry *txe;
struct rtl_tx_desc *txd;
- const uint8_t enable_tx_no_close = hw->EnableTxNoClose;
- const uint16_t nb_tx_desc = txq->nb_tx_desc;
- uint16_t head = txq->tx_head;
+ uint8_t enable_tx_no_close;
+ uint16_t nb_tx_desc;
+ uint16_t head;
uint16_t desc_freed = 0;
uint32_t tx_left;
uint32_t count = 0;
@@ -1810,6 +1804,12 @@ rtl8125_tx_done_cleanup(void *tx_queue, uint32_t free_cnt)
if (!txq)
return -ENODEV;
+ hw = txq->hw;
+ enable_tx_no_close = hw->EnableTxNoClose;
+ sw_ring = txq->sw_ring;
+ nb_tx_desc = txq->nb_tx_desc;
+ head = txq->tx_head;
+
if (enable_tx_no_close) {
txq->NextHwDesCloPtr = rtl_get_hw_clo_ptr(txq);
tx_desc_closed = rtl_fast_mod_mask(txq->NextHwDesCloPtr -
@@ -1860,19 +1860,24 @@ static int
rtl8168_tx_done_cleanup(void *tx_queue, uint32_t free_cnt)
{
struct rtl_tx_queue *txq = tx_queue;
- struct rtl_tx_entry *sw_ring = txq->sw_ring;
+ struct rtl_tx_entry *sw_ring;
struct rtl_tx_entry *txe;
struct rtl_tx_desc *txd;
- const uint16_t nb_tx_desc = txq->nb_tx_desc;
- const int tx_tail = txq->tx_tail % nb_tx_desc;
- int head = txq->tx_head;
+ uint16_t nb_tx_desc;
uint16_t desc_freed = 0;
- int count = 0;
uint32_t status;
+ int tx_tail;
+ int head;
+ int count = 0;
if (!txq)
return -ENODEV;
+ sw_ring = txq->sw_ring;
+ nb_tx_desc = txq->nb_tx_desc;
+ tx_tail = txq->tx_tail % nb_tx_desc;
+ head = txq->tx_head;
+
while (1) {
txd = &txq->hw_ring[head];
--
2.34.1
More information about the dev
mailing list