lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 2 Aug 2017 09:08:10 +0800
From:   Zefan Li <lizefan@...wei.com>
To:     Paolo Bonzini <pbonzini@...hat.com>, <linux-kernel@...r.kernel.org>
CC:     Peter Zijlstra <peterz@...radead.org>
Subject: Re: [PATCH 3/3] cpuset: make nr_cpusets private

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@...radead.org>
> Cc: Zefan Li <lizefan@...wei.com>
> Signed-off-by: Paolo Bonzini <pbonzini@...hat.com>

Acked-by: Zefan Li <lizefan@...wei.com>

> ---
>  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()
>   *
> 

Powered by blists - more mailing lists