[v2] net/iavf: fix endless loop

Message ID 20190725043829.19440-1-qi.z.zhang@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Qi Zhang
Headers
Series [v2] net/iavf: fix endless loop |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/mellanox-Performance-Testing success Performance Testing PASS
ci/intel-Performance-Testing success Performance Testing PASS

Commit Message

Qi Zhang July 25, 2019, 4:38 a.m. UTC
  Change loop index from uint16_t to uint32_t since max
index 65535 could be exceeded when ring size is 2k+.

Fixes: 69dd4c3d0898 ("net/avf: enable queue and device")
Cc: stable@dpdk.org

Reported-by: Lei Yao <lei.yao@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
---
v2:
- add missing fix in reset_tx_queue.

 drivers/net/iavf/iavf_rxtx.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
  

Comments

Xiaolong Ye July 25, 2019, 12:47 p.m. UTC | #1
On 07/25, Qi Zhang wrote:
>Change loop index from uint16_t to uint32_t since max
>index 65535 could be exceeded when ring size is 2k+.
>
>Fixes: 69dd4c3d0898 ("net/avf: enable queue and device")
>Cc: stable@dpdk.org
>
>Reported-by: Lei Yao <lei.yao@intel.com>
>Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
>---
>v2:
>- add missing fix in reset_tx_queue.
>
> drivers/net/iavf/iavf_rxtx.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
>diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c
>index d8eb6d296..22d7bb612 100644
>--- a/drivers/net/iavf/iavf_rxtx.c
>+++ b/drivers/net/iavf/iavf_rxtx.c
>@@ -144,7 +144,8 @@ check_rx_bulk_allow(struct iavf_rx_queue *rxq)
> static inline void
> reset_rx_queue(struct iavf_rx_queue *rxq)
> {
>-	uint16_t len, i;
>+	uint16_t len;
>+	uint32_t i;
> 
> 	if (!rxq)
> 		return;
>@@ -174,7 +175,8 @@ static inline void
> reset_tx_queue(struct iavf_tx_queue *txq)
> {
> 	struct iavf_tx_entry *txe;
>-	uint16_t i, prev, size;
>+	uint32_t i, size;
>+	uint16_t prev;
> 
> 	if (!txq) {
> 		PMD_DRV_LOG(DEBUG, "Pointer to txq is NULL");
>-- 
>2.13.6
>

Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
  
Qi Zhang July 26, 2019, 4:46 a.m. UTC | #2
> -----Original Message-----
> From: Ye, Xiaolong
> Sent: Thursday, July 25, 2019 8:47 PM
> To: Zhang, Qi Z <qi.z.zhang@intel.com>
> Cc: Lu, Wenzhuo <wenzhuo.lu@intel.com>; Wu, Jingjing
> <jingjing.wu@intel.com>; Yao, Lei <lei.yao@intel.com>; dev@dpdk.org;
> stable@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v2] net/iavf: fix endless loop
> 
> On 07/25, Qi Zhang wrote:
> >Change loop index from uint16_t to uint32_t since max index 65535 could
> >be exceeded when ring size is 2k+.
> >
> >Fixes: 69dd4c3d0898 ("net/avf: enable queue and device")
> >Cc: stable@dpdk.org
> >
> >Reported-by: Lei Yao <lei.yao@intel.com>
> >Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
> >---
> 
> Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>

Applied to dpdk-next-net-intel.

Thanks
Qi
  

Patch

diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c
index d8eb6d296..22d7bb612 100644
--- a/drivers/net/iavf/iavf_rxtx.c
+++ b/drivers/net/iavf/iavf_rxtx.c
@@ -144,7 +144,8 @@  check_rx_bulk_allow(struct iavf_rx_queue *rxq)
 static inline void
 reset_rx_queue(struct iavf_rx_queue *rxq)
 {
-	uint16_t len, i;
+	uint16_t len;
+	uint32_t i;
 
 	if (!rxq)
 		return;
@@ -174,7 +175,8 @@  static inline void
 reset_tx_queue(struct iavf_tx_queue *txq)
 {
 	struct iavf_tx_entry *txe;
-	uint16_t i, prev, size;
+	uint32_t i, size;
+	uint16_t prev;
 
 	if (!txq) {
 		PMD_DRV_LOG(DEBUG, "Pointer to txq is NULL");