Merge branch 'for-3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 12 Dec 2014 02:36:26 +0000 (18:36 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 12 Dec 2014 02:36:26 +0000 (18:36 -0800)
Pull percpu updates from Tejun Heo:
 "Nothing interesting.  A patch to convert the remaining __get_cpu_var()
  users, another to fix non-critical off-by-one in an assertion and a
  cosmetic conversion to lockless_dereference() in percpu-ref.

  The back-merge from mainline is to receive lockless_dereference()"

* 'for-3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu:
  percpu: Replace smp_read_barrier_depends() with lockless_dereference()
  percpu: Convert remaining __get_cpu_var uses in 3.18-rcX
  percpu: off by one in BUG_ON()

1  2 
include/linux/percpu-refcount.h
kernel/time/tick-sched.c

index 530b249f7ea49faf2b9a252c1f114f6a0a87e365,6b0c818721427d8d6c8f1c6406937c99fe0052b4..b4337646388be2cfa76c8a3b1e09c48e29bc1851
@@@ -128,18 -128,10 +128,16 @@@ static inline void percpu_ref_kill(stru
  static inline bool __ref_is_percpu(struct percpu_ref *ref,
                                          unsigned long __percpu **percpu_countp)
  {
-       unsigned long percpu_ptr = ACCESS_ONCE(ref->percpu_count_ptr);
        /* paired with smp_store_release() in percpu_ref_reinit() */
-       smp_read_barrier_depends();
+       unsigned long percpu_ptr = lockless_dereference(ref->percpu_count_ptr);
  
 -      if (unlikely(percpu_ptr & __PERCPU_REF_ATOMIC))
 +      /*
 +       * Theoretically, the following could test just ATOMIC; however,
 +       * then we'd have to mask off DEAD separately as DEAD may be
 +       * visible without ATOMIC if we race with percpu_ref_kill().  DEAD
 +       * implies ATOMIC anyway.  Test them together.
 +       */
 +      if (unlikely(percpu_ptr & __PERCPU_REF_ATOMIC_DEAD))
                return false;
  
        *percpu_countp = (unsigned long __percpu *)percpu_ptr;
Simple merge