[PATCH] lib/find: optimize find_*_bit_wrap

From: Yury Norov
Date: Sat Oct 28 2023 - 15:07:22 EST


When an offset is 0, there's no need to search a bitmap from the
beginning after the 1st search failed, because each bit has already
been tested.

Signed-off-by: Yury Norov <yury.norov@xxxxxxxxx>
---
include/linux/find.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/linux/find.h b/include/linux/find.h
index 5e4f39ef2e72..241b6d028eda 100644
--- a/include/linux/find.h
+++ b/include/linux/find.h
@@ -405,7 +405,7 @@ unsigned long find_next_and_bit_wrap(const unsigned long *addr1,
{
unsigned long bit = find_next_and_bit(addr1, addr2, size, offset);

- if (bit < size)
+ if (bit < size || offset == 0)
return bit;

bit = find_first_and_bit(addr1, addr2, offset);
@@ -427,7 +427,7 @@ unsigned long find_next_bit_wrap(const unsigned long *addr,
{
unsigned long bit = find_next_bit(addr, size, offset);

- if (bit < size)
+ if (bit < size || offset == 0)
return bit;

bit = find_first_bit(addr, offset);
--
2.39.2