Showing error 626

User: Jiri Slaby
Error type: Double Unlock
Error type description: Some lock is unlocked twice unintentionally in a sequence
File location: fs/dcache.c
Line in file: 112
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2011-11-07 22:20:57 UTC


Source:

  82}
  83
  84/*
  85 * no dcache_lock, please.  The caller must decrement dentry_stat.nr_dentry
  86 * inside dcache_lock.
  87 */
  88static void d_free(struct dentry *dentry)
  89{
  90        if (dentry->d_op && dentry->d_op->d_release)
  91                dentry->d_op->d_release(dentry);
  92        /* if dentry was never inserted into hash, immediate free is OK */
  93        if (hlist_unhashed(&dentry->d_hash))
  94                __d_free(dentry);
  95        else
  96                call_rcu(&dentry->d_u.d_rcu, d_callback);
  97}
  98
  99/*
 100 * Release the dentry's inode, using the filesystem
 101 * d_iput() operation if defined.
 102 */
 103static void dentry_iput(struct dentry * dentry)
 104        __releases(dentry->d_lock)
 105        __releases(dcache_lock)
 106{
 107        struct inode *inode = dentry->d_inode;
 108        if (inode) {
 109                dentry->d_inode = NULL;
 110                list_del_init(&dentry->d_alias);
 111                spin_unlock(&dentry->d_lock);
 112                spin_unlock(&dcache_lock);
 113                if (!inode->i_nlink)
 114                        fsnotify_inoderemove(inode);
 115                if (dentry->d_op && dentry->d_op->d_iput)
 116                        dentry->d_op->d_iput(dentry, inode);
 117                else
 118                        iput(inode);
 119        } else {
 120                spin_unlock(&dentry->d_lock);
 121                spin_unlock(&dcache_lock);
 122        }
Show full sources