rcu_cpu_has_callbacks() is declared int. The current declaration was introduced
in commit c0f4dfd4f90f (rcu: Make RCU_FAST_NO_HZ take advantage of numbered
callbacks). But it is actually returning bool and as the function description
states " * Return true if the specified CPU has any callback....", this probably
should be a bool as all (3) call-sites currently treat it as bool.
Type-checking coccinelle spatches are being used to locate type mismatches
between function signatures and return values in this case this produced:
./kernel/rcu/tree.c:3538 WARNING: return of wrong type
int != bool,
Patch was compile tested with x86_64_defconfig (implies CONFIG_TREE_RCU=y)
Patch is against 4.1-rc3 (localversion-next is -next-20150511) and fixes
Signed-off-by: Nicholas Mc Guire <[email protected]>
---
V4: fix-up to include the origin of the issue being fixed as requeseted by
Steven Rostedt <[email protected]>.
kernel/rcu/tree.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index bcc5943..599550c 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -3516,7 +3516,7 @@ static int rcu_pending(void)
* non-NULL, store an indication of whether all callbacks are lazy.
* (If there are no callbacks, all of them are deemed to be lazy.)
*/
-static int __maybe_unused rcu_cpu_has_callbacks(bool *all_lazy)
+static bool __maybe_unused rcu_cpu_has_callbacks(bool *all_lazy)
{
bool al = true;
bool hc = false;
--
1.7.10.4
On Mon, May 11, 2015 at 06:12:27PM +0200, Nicholas Mc Guire wrote:
> rcu_cpu_has_callbacks() is declared int. The current declaration was introduced
> in commit c0f4dfd4f90f (rcu: Make RCU_FAST_NO_HZ take advantage of numbered
> callbacks). But it is actually returning bool and as the function description
> states " * Return true if the specified CPU has any callback....", this probably
> should be a bool as all (3) call-sites currently treat it as bool.
>
> Type-checking coccinelle spatches are being used to locate type mismatches
> between function signatures and return values in this case this produced:
> ./kernel/rcu/tree.c:3538 WARNING: return of wrong type
> int != bool,
>
> Patch was compile tested with x86_64_defconfig (implies CONFIG_TREE_RCU=y)
>
> Patch is against 4.1-rc3 (localversion-next is -next-20150511) and fixes
>
> Signed-off-by: Nicholas Mc Guire <[email protected]>
Seems like a reasonable addition.
Reviewed-by: Josh Triplett <[email protected]>
> ---
>
> V4: fix-up to include the origin of the issue being fixed as requeseted by
> Steven Rostedt <[email protected]>.
>
> kernel/rcu/tree.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
> index bcc5943..599550c 100644
> --- a/kernel/rcu/tree.c
> +++ b/kernel/rcu/tree.c
> @@ -3516,7 +3516,7 @@ static int rcu_pending(void)
> * non-NULL, store an indication of whether all callbacks are lazy.
> * (If there are no callbacks, all of them are deemed to be lazy.)
> */
> -static int __maybe_unused rcu_cpu_has_callbacks(bool *all_lazy)
> +static bool __maybe_unused rcu_cpu_has_callbacks(bool *all_lazy)
> {
> bool al = true;
> bool hc = false;
> --
> 1.7.10.4
>