Showing error 1189

User: Jiri Slaby
Error type: Double Unlock
Error type description: Some lock is unlocked twice unintentionally in a sequence
File location: fs/jffs2/gc.c
Line in file: 286
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2012-04-30 10:52:00 UTC


Source:

 256                        spin_unlock(&c->erase_completion_lock);
 257                        mutex_unlock(&c->alloc_sem);
 258                        BUG();
 259                }
 260        }
 261        jeb->gc_node = raw;
 262
 263        D1(printk(KERN_DEBUG "Going to garbage collect node at 0x%08x\n", ref_offset(raw)));
 264
 265        if (!raw->next_in_ino) {
 266                /* Inode-less node. Clean marker, snapshot or something like that */
 267                spin_unlock(&c->erase_completion_lock);
 268                if (ref_flags(raw) == REF_PRISTINE) {
 269                        /* It's an unknown node with JFFS2_FEATURE_RWCOMPAT_COPY */
 270                        jffs2_garbage_collect_pristine(c, NULL, raw);
 271                } else {
 272                        /* Just mark it obsolete */
 273                        jffs2_mark_node_obsolete(c, raw);
 274                }
 275                mutex_unlock(&c->alloc_sem);
 276                goto eraseit_lock;
 277        }
 278
 279        ic = jffs2_raw_ref_to_ic(raw);
 280
 281#ifdef CONFIG_JFFS2_FS_XATTR
 282        /* When 'ic' refers xattr_datum/xattr_ref, this node is GCed as xattr.
 283         * We can decide whether this node is inode or xattr by ic->class.     */
 284        if (ic->class == RAWNODE_CLASS_XATTR_DATUM
 285            || ic->class == RAWNODE_CLASS_XATTR_REF) {
 286                spin_unlock(&c->erase_completion_lock);
 287
 288                if (ic->class == RAWNODE_CLASS_XATTR_DATUM) {
 289                        ret = jffs2_garbage_collect_xattr_datum(c, (struct jffs2_xattr_datum *)ic, raw);
 290                } else {
 291                        ret = jffs2_garbage_collect_xattr_ref(c, (struct jffs2_xattr_ref *)ic, raw);
 292                }
 293                goto test_gcnode;
 294        }
 295#endif
 296
Show full sources