From 6567f9d59a749be59583e18bc429752d8139563f Mon Sep 17 00:00:00 2001 From: Leyi Rong Date: Wed, 19 Jun 2019 23:18:35 +0800 Subject: [PATCH] net/ice/base: fix zeroing bitmap Fix ice_zero_bitmap to zero the entire storage. Fixes: c9e37832c95f ("net/ice/base: rework on bit ops") Cc: stable@dpdk.org Signed-off-by: Jacob Keller Signed-off-by: Paul M Stillwell Jr Signed-off-by: Leyi Rong Acked-by: Qi Zhang --- drivers/net/ice/base/ice_bitops.h | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/drivers/net/ice/base/ice_bitops.h b/drivers/net/ice/base/ice_bitops.h index f527130218..aca5529a61 100644 --- a/drivers/net/ice/base/ice_bitops.h +++ b/drivers/net/ice/base/ice_bitops.h @@ -147,22 +147,15 @@ ice_test_and_set_bit(u16 nr, ice_bitmap_t *bitmap) * @bmp: bitmap to set zeros * @size: Size of the bitmaps in bits * - * This function sets bits of a bitmap to zero. + * Set all of the bits in a bitmap to zero. Note that this function assumes it + * operates on an ice_bitmap_t which was declared using ice_declare_bitmap. It + * will zero every bit in the last chunk, even if those bits are beyond the + * size. */ static inline void ice_zero_bitmap(ice_bitmap_t *bmp, u16 size) { - ice_bitmap_t mask; - u16 i; - - /* Handle all but last chunk*/ - for (i = 0; i < BITS_TO_CHUNKS(size) - 1; i++) - bmp[i] = 0; - /* For the last chunk, we want to take care of not to modify bits - * outside the size boundary. ~mask take care of all the bits outside - * the boundary. - */ - mask = LAST_CHUNK_MASK(size); - bmp[i] &= ~mask; + ice_memset(bmp, 0, BITS_TO_CHUNKS(size) * sizeof(ice_bitmap_t), + ICE_NONDMA_MEM); } /** -- 2.20.1