Browse Source

qlcnic: Correct off-by-one errors in bounds checks

o Bound checks should be >= instead of > for number of receive descriptors
  and number of receive rings.

Signed-off-by: Manish Chopra <manish.chopra@qlogic.com>
Signed-off-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Manish Chopra 11 years ago
parent
commit
462bed4870
1 changed files with 4 additions and 4 deletions
  1. 4 4
      drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c

+ 4 - 4
drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c

@@ -1150,13 +1150,13 @@ qlcnic_process_lro(struct qlcnic_adapter *adapter,
 	u16 lro_length, length, data_offset, t_vid, vid = 0xffff;
 	u16 lro_length, length, data_offset, t_vid, vid = 0xffff;
 	u32 seq_number;
 	u32 seq_number;
 
 
-	if (unlikely(ring > adapter->max_rds_rings))
+	if (unlikely(ring >= adapter->max_rds_rings))
 		return NULL;
 		return NULL;
 
 
 	rds_ring = &recv_ctx->rds_rings[ring];
 	rds_ring = &recv_ctx->rds_rings[ring];
 
 
 	index = qlcnic_get_lro_sts_refhandle(sts_data0);
 	index = qlcnic_get_lro_sts_refhandle(sts_data0);
-	if (unlikely(index > rds_ring->num_desc))
+	if (unlikely(index >= rds_ring->num_desc))
 		return NULL;
 		return NULL;
 
 
 	buffer = &rds_ring->rx_buf_arr[index];
 	buffer = &rds_ring->rx_buf_arr[index];
@@ -1662,13 +1662,13 @@ qlcnic_83xx_process_lro(struct qlcnic_adapter *adapter,
 	u16 vid = 0xffff;
 	u16 vid = 0xffff;
 	int err;
 	int err;
 
 
-	if (unlikely(ring > adapter->max_rds_rings))
+	if (unlikely(ring >= adapter->max_rds_rings))
 		return NULL;
 		return NULL;
 
 
 	rds_ring = &recv_ctx->rds_rings[ring];
 	rds_ring = &recv_ctx->rds_rings[ring];
 
 
 	index = qlcnic_83xx_hndl(sts_data[0]);
 	index = qlcnic_83xx_hndl(sts_data[0]);
-	if (unlikely(index > rds_ring->num_desc))
+	if (unlikely(index >= rds_ring->num_desc))
 		return NULL;
 		return NULL;
 
 
 	buffer = &rds_ring->rx_buf_arr[index];
 	buffer = &rds_ring->rx_buf_arr[index];