aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYury Norov <yury.norov@gmail.com>2023-10-28 12:05:29 -0700
committerYury Norov <yury.norov@gmail.com>2023-12-03 10:28:17 -0800
commit27c82f14e6d2bcb9f085bad37fe339227571de60 (patch)
treeeb381cc01b87c64b93a04df8f9714b0cd4c496e9
parent92697139b01339b6c0767fa1305a4df9a7c1f37f (diff)
downloadlinux-27c82f14e6d2bcb9f085bad37fe339227571de60.tar.gz
lib/find: optimize find_*_bit_wrap
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@gmail.com>
-rw-r--r--include/linux/find.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/include/linux/find.h b/include/linux/find.h
index af63ae5b90137..c69598e383c16 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);