Checks
Context | Check | Description |
---|---|---|
ci/checkpatch | success | coding style OK |
Commit Message
Leyi Rong
June 19, 2019, 3:18 p.m. UTC
Fix ice_cp_bitmap to copy the entire storage. Fixes: c9e37832c95f ("net/ice/base: rework on bit ops") Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> Signed-off-by: Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com> Signed-off-by: Leyi Rong <leyi.rong@intel.com> --- drivers/net/ice/base/ice_bitops.h | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-)
diff --git a/drivers/net/ice/base/ice_bitops.h b/drivers/net/ice/base/ice_bitops.h index aca5529a6..c74407d9d 100644 --- a/drivers/net/ice/base/ice_bitops.h +++ b/drivers/net/ice/base/ice_bitops.h @@ -306,21 +306,14 @@ static inline bool ice_is_any_bit_set(ice_bitmap_t *bitmap, u16 size) * @src: bitmap to copy from * @size: Size of the bitmaps in bits * - * This function copy bitmap from src to dst. + * This function copy bitmap from src to dst. Note that this function assumes + * it is operating on a bitmap declared using ice_declare_bitmap. It will copy + * the entire last chunk even if this contains bits beyond the size. */ static inline void ice_cp_bitmap(ice_bitmap_t *dst, ice_bitmap_t *src, u16 size) { - ice_bitmap_t mask; - u16 i; - - /* Handle all but last chunk*/ - for (i = 0; i < BITS_TO_CHUNKS(size) - 1; i++) - dst[i] = src[i]; - - /* We want to only copy bits within the size.*/ - mask = LAST_CHUNK_MASK(size); - dst[i] &= ~mask; - dst[i] |= src[i] & mask; + ice_memcpy(dst, src, BITS_TO_CHUNKS(size) * sizeof(ice_bitmap_t), + ICE_NONDMA_TO_NONDMA); } /**