1. 07 Sep, 2014 28 commits
  2. 01 Sep, 2014 3 commits
  3. 31 Aug, 2014 8 commits
  4. 28 Aug, 2014 1 commit
    • Andreea-Cristina Bernat's avatar
      carl9170: tx: Replace rcu_assign_pointer() with RCU_INIT_POINTER() · 6a5d088a
      Andreea-Cristina Bernat authored
      According to RCU_INIT_POINTER()'s block comment 3.a, it can be used if
      "3.   The referenced data structure has already been exposed to readers either
      at compile time or via rcu_assign_pointer() -and-
       a.   You have not made -any- reader-visible changes to this structure since
      then".
      
      This case fulfills the conditions above because between the rcu_dereference()
      call (cvif = rcu_dereference(ar->beacon_iter);) and the rcu_assign_pointer()
      call there is no update of the "cvif" variable.
      Therefore, this patch makes the replacement.
      
      The following Coccinelle semantic patch was used:
      @@
      identifier v;
      @@
      
      v = rcu_dereference(...);
      ... when != rcu_dereference(...);
          when != v = ...;
          when != (<+...v...+>)++;
          when != \(memcpy\|memset\)(...);
      (
      - rcu_assign_pointer
      + RCU_INIT_POINTER
        (..., v);
      |
       if(...) {
      ... when != v = ...;
      - rcu_assign_pointer
      + RCU_INIT_POINTER
        (..., v);
      ... when any
       }
      )
      
      Because there are cases where between a “rcu_dereference()” call and a
      “rcu_assign_pointer()” call might be updates of the value that interests us,
      the Coccinelle semantic patch ignores them and replaces with
      "RCU_INIT_POINTER()" only when the update is not happening.
      Signed-off-by: default avatarAndreea-Cristina Bernat <bernat.ada@gmail.com>
      Acked-by: default avatarChristian Lamparter <chunkeey@googlemail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      6a5d088a