Modified the function fns to resolve a calculation error by:
1. Reducing n first.
2. Adding 1 at the end to get the correct index.
This commit improves the accuracy and reliability of the code.
Signed-off-by: Chin-Chun Chen <[email protected]>
---
include/linux/bitops.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/linux/bitops.h b/include/linux/bitops.h
index 2ba557e067fe..2457610f74eb 100644
--- a/include/linux/bitops.h
+++ b/include/linux/bitops.h
@@ -258,8 +258,8 @@ static inline unsigned long fns(unsigned long word, unsigned int n)
while (word) {
bit = __ffs(word);
- if (n-- == 0)
- return bit;
+ if (--n == 0)
+ return bit + 1;
__clear_bit(bit, &word);
}
base-commit: 8f2c057754b25075aa3da132cd4fd4478cdab854
--
2.40.1
Modified the function fns to resolve a calculation error by reducing n first to correctly determine the n-th set bit instead of n+1.
This commit improves the accuracy and reliability of the code.
---
Changes since v1:
* Clarified the commit message.
* Fixed the incorrect operation.
Signed-off-by: Chin-Chun Chen <[email protected]>
---
include/linux/bitops.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/linux/bitops.h b/include/linux/bitops.h
index 2ba557e067fe..5842d7d03f19 100644
--- a/include/linux/bitops.h
+++ b/include/linux/bitops.h
@@ -258,7 +258,7 @@ static inline unsigned long fns(unsigned long word, unsigned int n)
while (word) {
bit = __ffs(word);
- if (n-- == 0)
+ if (--n == 0)
return bit;
__clear_bit(bit, &word);
}
base-commit: 8f2c057754b25075aa3da132cd4fd4478cdab854
--
2.40.1
On Sat, Apr 13, 2024 at 11:56:35PM +0800, Chin-Chun Chen wrote:
> Modified the function fns to resolve a calculation error by reducing n first to correctly determine the n-th set bit instead of n+1.
>
> This commit improves the accuracy and reliability of the code.
No it doesn't. Accuracy and reliability is tested in lib/test_bitmap.c.
Have you tried to run it before sending this patch?
What error did you mean? How does pre-decrement over post-increment fix it?
> ---
> Changes since v1:
> * Clarified the commit message.
> * Fixed the incorrect operation.
>
> Signed-off-by: Chin-Chun Chen <[email protected]>
> ---
> include/linux/bitops.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/include/linux/bitops.h b/include/linux/bitops.h
> index 2ba557e067fe..5842d7d03f19 100644
> --- a/include/linux/bitops.h
> +++ b/include/linux/bitops.h
> @@ -258,7 +258,7 @@ static inline unsigned long fns(unsigned long word, unsigned int n)
>
> while (word) {
> bit = __ffs(word);
> - if (n-- == 0)
> + if (--n == 0)
> return bit;
> __clear_bit(bit, &word);
> }
>
> base-commit: 8f2c057754b25075aa3da132cd4fd4478cdab854
What does this 'base-commit' mean?
Chin-Chun, if it's your first attempt to contribute to a public
project, you're very welcome. But you have to be more descriptive
on the error you're facing and trying to fix. The best practice is
to provide a test together with a fix.
Thanks,
Yury
--
It may be just my paranoia after UMN and xz stories, but... I
googled for this person and the email and found that it didn't
appear in public domain before now. Let's see...