Re: [PATCH 3/3] cpuset: make nr_cpusets private

From: Zefan Li
Date: Tue Aug 01 2017 - 21:09:38 EST


On 2017/8/1 23:24, Paolo Bonzini wrote:
> Any use of key->enabled (that is static_key_enabled and static_key_count)
> outside jump_label_lock should handle its own serialization. In the case
> of cpusets_enabled_key, the key is always incremented/decremented under
> cpuset_mutex, and hence the same rule applies to nr_cpusets. The rule
> *is* respected currently, but the mutex is static so nr_cpusets should
> be static too.
>
> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> Cc: Zefan Li <lizefan@xxxxxxxxxx>
> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx>

Acked-by: Zefan Li <lizefan@xxxxxxxxxx>

> ---
> include/linux/cpuset.h | 6 ------
> kernel/cgroup/cpuset.c | 7 +++++++
> 2 files changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/include/linux/cpuset.h b/include/linux/cpuset.h
> index 119a3f9604b0..cedcc910b7a7 100644
> --- a/include/linux/cpuset.h
> +++ b/include/linux/cpuset.h
> @@ -24,12 +24,6 @@ static inline bool cpusets_enabled(void)
> return static_branch_unlikely(&cpusets_enabled_key);
> }
>
> -static inline int nr_cpusets(void)
> -{
> - /* jump label reference count + the top-level cpuset */
> - return static_key_count(&cpusets_enabled_key.key) + 1;
> -}
> -
> static inline void cpuset_inc(void)
> {
> static_branch_inc(&cpusets_enabled_key);
> diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c
> index ae643412948a..f65db17e9e23 100644
> --- a/kernel/cgroup/cpuset.c
> +++ b/kernel/cgroup/cpuset.c
> @@ -576,6 +576,13 @@ static void update_domain_attr_tree(struct sched_domain_attr *dattr,
> rcu_read_unlock();
> }
>
> +/* Must be called with cpuset_mutex held. */
> +static inline int nr_cpusets(void)
> +{
> + /* jump label reference count + the top-level cpuset */
> + return static_key_count(&cpusets_enabled_key.key) + 1;
> +}
> +
> /*
> * generate_sched_domains()
> *
>