perf/core: Declare the __percpu attribute on non-deref types
authorMukesh Ojha <mojha@codeaurora.org>
Tue, 27 Nov 2018 09:13:32 +0000 (14:43 +0530)
committerIngo Molnar <mingo@kernel.org>
Tue, 11 Dec 2018 14:01:48 +0000 (15:01 +0100)
Sparse reports the current declaration of two perf percpu variables
with this warning:

  warning: incorrect type in initializer (different address spaces)
         expected void const [noderef] <asn:3>*__vpp_verify
         got struct perf_cpu_context *<noident>

While it's normally perfectly fine to place GCC attributes anywhere
in the definition, this particular attribute is for a checking
compiler's such as Sparse's benefit, which doesn't want __percpu
on pointers.

So reorder the attribute to come after the structure type, not after
the pointer type.

[ mingo: Rewrote the changelog. ]

Signed-off-by: Mukesh Ojha <mojha@codeaurora.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/1543310012-7967-1-git-send-email-mojha@codeaurora.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
include/linux/perf_event.h

index 53c500f0ca795e8e6cb22245bdcf12f1b899b336..1d5c551a5add50794e6d0ae38456b98380f800e6 100644 (file)
@@ -262,8 +262,8 @@ struct pmu {
         */
        int                             capabilities;
 
-       int * __percpu                  pmu_disable_count;
-       struct perf_cpu_context * __percpu pmu_cpu_context;
+       int __percpu                    *pmu_disable_count;
+       struct perf_cpu_context __percpu *pmu_cpu_context;
        atomic_t                        exclusive_cnt; /* < 0: cpu; > 0: tsk */
        int                             task_ctx_nr;
        int                             hrtimer_interval_ms;