El Mon, Oct 30, 2017 at 09:26:12AM +0100 Peter Zijlstra ha dit: > On Fri, Oct 27, 2017 at 04:40:20PM -0700, Matthias Kaehlcke 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; > > Since they're already declared in sched/sysctl.h this redeclaration in > sched/sched.h seems pointless.
We could remove it, but it would require to move the definition of const_debug to the 'globally' visible header sched/sysctl.h. Would that be your preference? In that case we should probably use a more unique name, like const_sched_debug. > > ./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 <[email protected]> > > --- > > 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; > > That extra include also seems entirely pointless. Sorry, I wrongly associated the header with const_debug/__read_mostly since it is included right before the definition of const_debug. I should have double-checked.

