[nfs:testing 41/45] include/linux/rculist.h:130:25: sparse: context imbalance in 'nfs_put_lock_context' - unexpected unlock

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tree:   git://git.linux-nfs.org/projects/trondmy/linux-nfs.git testing
head:   c925dd1e826cb81f1dafef462b1326ec33913b8e
commit: 9d097c9f0dd73d0e02ddfceb112e3bcdd8915524 [41/45] NFS: Convert lookups of the lock context to RCU
reproduce:
        # apt-get install sparse
        git checkout 9d097c9f0dd73d0e02ddfceb112e3bcdd8915524
        make ARCH=x86_64 allmodconfig
        make C=1 CF=-D__CHECK_ENDIAN__


sparse warnings: (new ones prefixed by >>)

   include/linux/nfs_fs.h:566:16: sparse: expression using sizeof(void)
   include/linux/nfs_fs.h:566:16: sparse: expression using sizeof(void)
   include/linux/nfs_fs.h:566:16: sparse: expression using sizeof(void)
   include/linux/nfs_fs.h:566:16: sparse: expression using sizeof(void)
   include/linux/nfs_fs.h:566:16: sparse: expression using sizeof(void)
>> include/linux/rculist.h:130:25: sparse: context imbalance in 'nfs_put_lock_context' - unexpected unlock
   include/linux/list.h:125:25: sparse: context imbalance in '__put_nfs_open_context' - unexpected unlock

vim +/nfs_put_lock_context +130 include/linux/rculist.h

82524746 Franck Bui-Huu 2008-05-12  103  
82524746 Franck Bui-Huu 2008-05-12  104  /**
82524746 Franck Bui-Huu 2008-05-12  105   * list_del_rcu - deletes entry from list without re-initialization
82524746 Franck Bui-Huu 2008-05-12  106   * @entry: the element to delete from the list.
82524746 Franck Bui-Huu 2008-05-12  107   *
82524746 Franck Bui-Huu 2008-05-12  108   * Note: list_empty() on entry does not return true after this,
82524746 Franck Bui-Huu 2008-05-12  109   * the entry is in an undefined state. It is useful for RCU based
82524746 Franck Bui-Huu 2008-05-12  110   * lockfree traversal.
82524746 Franck Bui-Huu 2008-05-12  111   *
82524746 Franck Bui-Huu 2008-05-12  112   * In particular, it means that we can not poison the forward
82524746 Franck Bui-Huu 2008-05-12  113   * pointers that may still be used for walking the list.
82524746 Franck Bui-Huu 2008-05-12  114   *
82524746 Franck Bui-Huu 2008-05-12  115   * The caller must take whatever precautions are necessary
82524746 Franck Bui-Huu 2008-05-12  116   * (such as holding appropriate locks) to avoid racing
82524746 Franck Bui-Huu 2008-05-12  117   * with another list-mutation primitive, such as list_del_rcu()
82524746 Franck Bui-Huu 2008-05-12  118   * or list_add_rcu(), running on this same list.
82524746 Franck Bui-Huu 2008-05-12  119   * However, it is perfectly legal to run concurrently with
82524746 Franck Bui-Huu 2008-05-12  120   * the _rcu list-traversal primitives, such as
82524746 Franck Bui-Huu 2008-05-12  121   * list_for_each_entry_rcu().
82524746 Franck Bui-Huu 2008-05-12  122   *
82524746 Franck Bui-Huu 2008-05-12  123   * Note that the caller is not permitted to immediately free
82524746 Franck Bui-Huu 2008-05-12  124   * the newly deleted entry.  Instead, either synchronize_rcu()
82524746 Franck Bui-Huu 2008-05-12  125   * or call_rcu() must be used to defer freeing until an RCU
82524746 Franck Bui-Huu 2008-05-12  126   * grace period has elapsed.
82524746 Franck Bui-Huu 2008-05-12  127   */
82524746 Franck Bui-Huu 2008-05-12  128  static inline void list_del_rcu(struct list_head *entry)
82524746 Franck Bui-Huu 2008-05-12  129  {
559f9bad Dave Jones     2012-03-14 @130  	__list_del_entry(entry);
82524746 Franck Bui-Huu 2008-05-12  131  	entry->prev = LIST_POISON2;
82524746 Franck Bui-Huu 2008-05-12  132  }
82524746 Franck Bui-Huu 2008-05-12  133  

:::::: The code at line 130 was first introduced by commit
:::::: 559f9badd11ddf399f88b18b4c0f110fd511ae53 rcu: List-debug variants of rcu list routines.

:::::: TO: Dave Jones <davej@xxxxxxxxxx>
:::::: CC: Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation



[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux