Showing error 1135

User: Jiri Slaby
Error type: Double Lock
Error type description: Some lock is locked twice unintentionally in a sequence
File location: fs/jffs2/erase.c
Line in file: 153
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2012-04-29 14:49:11 UTC


Source:

123
124                        if (!--count) {
125                                D1(printk(KERN_DEBUG "Count reached. jffs2_erase_pending_blocks leaving\n"));
126                                goto done;
127                        }
128
129                } else if (!list_empty(&c->erase_pending_list)) {
130                        jeb = list_entry(c->erase_pending_list.next, struct jffs2_eraseblock, list);
131                        D1(printk(KERN_DEBUG "Starting erase of pending block 0x%08x\n", jeb->offset));
132                        list_del(&jeb->list);
133                        c->erasing_size += c->sector_size;
134                        c->wasted_size -= jeb->wasted_size;
135                        c->free_size -= jeb->free_size;
136                        c->used_size -= jeb->used_size;
137                        c->dirty_size -= jeb->dirty_size;
138                        jeb->wasted_size = jeb->used_size = jeb->dirty_size = jeb->free_size = 0;
139                        jffs2_free_jeb_node_refs(c, jeb);
140                        list_add(&jeb->list, &c->erasing_list);
141                        spin_unlock(&c->erase_completion_lock);
142                        mutex_unlock(&c->erase_free_sem);
143
144                        jffs2_erase_block(c, jeb);
145
146                } else {
147                        BUG();
148                }
149
150                /* Be nice */
151                yield();
152                mutex_lock(&c->erase_free_sem);
153                spin_lock(&c->erase_completion_lock);
154        }
155
156        spin_unlock(&c->erase_completion_lock);
157        mutex_unlock(&c->erase_free_sem);
158 done:
159        D1(printk(KERN_DEBUG "jffs2_erase_pending_blocks completed\n"));
160}
161
162static void jffs2_erase_succeeded(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb)
163{
Show full sources