Re: [PATCH] sched/sysctl: Fix attributes of some extern declarations

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This fixes a bug I was seeing as well:
https://www.reddit.com/r/kernel/comments/78t4vd/easy_good_first_bug/dowi022/

Reviewed-by: Nick Desaulniers <nick.desaulniers@xxxxxxxxx>

On Fri, Oct 27, 2017 at 4:40 PM, Matthias Kaehlcke <mka@xxxxxxxxxxxx> wrote:
> The definition of sysctl_sched_migration_cost, sysctl_sched_nr_migrate
> and sysctl_sched_time_avg includes the attribute const_debug. This
> attribute is not part of the extern declaration of these variables in
> include/linux/sched/sysctl.h, as a result clang generates warnings like
> this:
>
>   kernel/sched/sched.h:1618:33: warning: section attribute is specified on
>     redeclared variable [-Wsection]
>   extern const_debug unsigned int sysctl_sched_time_avg;
>                                 ^
>   ./include/linux/sched/sysctl.h:42:21: note: previous declaration is here
>   extern unsigned int sysctl_sched_time_avg;
>
> The header only declares the variables when CONFIG_SCHED_DEBUG is defined,
> therefore it is not necessary to duplicate the definition of const_debug
> (or put it in a common header). Instead we can use the attribute
> __read_mostly, which is the expansion of const_debug when CONFIG_SCHED_DEBUG
> is set.
>
> Signed-off-by: Matthias Kaehlcke <mka@xxxxxxxxxxxx>
> ---
>  include/linux/sched/sysctl.h | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/include/linux/sched/sysctl.h b/include/linux/sched/sysctl.h
> index 0f5ecd4d298e..f09afd55ecb5 100644
> --- a/include/linux/sched/sysctl.h
> +++ b/include/linux/sched/sysctl.h
> @@ -1,6 +1,7 @@
>  #ifndef _LINUX_SCHED_SYSCTL_H
>  #define _LINUX_SCHED_SYSCTL_H
>
> +#include <linux/static_key.h>
>  #include <linux/types.h>
>
>  struct ctl_table;
> @@ -37,9 +38,9 @@ extern unsigned int sysctl_numa_balancing_scan_period_max;
>  extern unsigned int sysctl_numa_balancing_scan_size;
>
>  #ifdef CONFIG_SCHED_DEBUG
> -extern unsigned int sysctl_sched_migration_cost;
> -extern unsigned int sysctl_sched_nr_migrate;
> -extern unsigned int sysctl_sched_time_avg;
> +extern __read_mostly unsigned int sysctl_sched_migration_cost;
> +extern __read_mostly unsigned int sysctl_sched_nr_migrate;
> +extern __read_mostly unsigned int sysctl_sched_time_avg;
>
>  int sched_proc_update_handler(struct ctl_table *table, int write,
>                 void __user *buffer, size_t *length,
> --
> 2.15.0.rc2.357.g7e34df9404-goog
>
--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux