cpumask: Add a x86-specific cpumask_clear_cpu() helper
authorBorislav Petkov <bp@suse.de>
Fri, 4 Feb 2022 08:30:13 +0000 (09:30 +0100)
committerBorislav Petkov <bp@suse.de>
Sat, 12 Feb 2022 17:20:05 +0000 (18:20 +0100)
Add a x86-specific cpumask_clear_cpu() helper which will be used in
places where the explicit KASAN-instrumentation in the *_bit() helpers
is unwanted.

Also, always inline two more cpumask generic helpers.

allyesconfig:

     text    data     bss     dec     hex filename
  190553143       159425889       32076404        382055436       16c5b40c vmlinux.before
  190551812       159424945       32076404        382053161       16c5ab29 vmlinux.after

Signed-off-by: Borislav Petkov <bp@suse.de>
Acked-by: Marco Elver <elver@google.com>
Link: https://lore.kernel.org/r/20220204083015.17317-2-bp@alien8.de
arch/x86/include/asm/cpumask.h
include/linux/cpumask.h

index 3afa990..c5aed9e 100644 (file)
@@ -20,11 +20,21 @@ static __always_inline bool arch_cpu_online(int cpu)
 {
        return arch_test_bit(cpu, cpumask_bits(cpu_online_mask));
 }
+
+static __always_inline void arch_cpumask_clear_cpu(int cpu, struct cpumask *dstp)
+{
+       arch_clear_bit(cpumask_check(cpu), cpumask_bits(dstp));
+}
 #else
 static __always_inline bool arch_cpu_online(int cpu)
 {
        return cpu == 0;
 }
+
+static __always_inline void arch_cpumask_clear_cpu(int cpu, struct cpumask *dstp)
+{
+       return;
+}
 #endif
 
 #define arch_cpu_is_offline(cpu)       unlikely(!arch_cpu_online(cpu))
index 6b06c69..fe29ac7 100644 (file)
@@ -102,7 +102,7 @@ extern atomic_t __num_online_cpus;
 
 extern cpumask_t cpus_booted_once_mask;
 
-static inline void cpu_max_bits_warn(unsigned int cpu, unsigned int bits)
+static __always_inline void cpu_max_bits_warn(unsigned int cpu, unsigned int bits)
 {
 #ifdef CONFIG_DEBUG_PER_CPU_MAPS
        WARN_ON_ONCE(cpu >= bits);
@@ -110,7 +110,7 @@ static inline void cpu_max_bits_warn(unsigned int cpu, unsigned int bits)
 }
 
 /* verify cpu argument to cpumask_* operators */
-static inline unsigned int cpumask_check(unsigned int cpu)
+static __always_inline unsigned int cpumask_check(unsigned int cpu)
 {
        cpu_max_bits_warn(cpu, nr_cpumask_bits);
        return cpu;