jffs2: Require jffs2_garbage_collect_trigger() to be called with lock held We're about to call this from a bunch of places which already hold c->erase_completion_lock, so add an assertion and change its existing callers to do the same. Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
diff --git a/fs/jffs2/background.c b/fs/jffs2/background.c index 3ff50da..55f1dde 100644 --- a/fs/jffs2/background.c +++ b/fs/jffs2/background.c
@@ -23,10 +23,9 @@ void jffs2_garbage_collect_trigger(struct jffs2_sb_info *c) { - spin_lock(&c->erase_completion_lock); + assert_spin_locked(&c->erase_completion_lock); if (c->gc_task && jffs2_thread_should_wake(c)) send_sig(SIGHUP, c->gc_task, 1); - spin_unlock(&c->erase_completion_lock); } /* This must only ever be called when no GC thread is currently running */
diff --git a/fs/jffs2/nodemgmt.c b/fs/jffs2/nodemgmt.c index 5ab5c85..dd2d920 100644 --- a/fs/jffs2/nodemgmt.c +++ b/fs/jffs2/nodemgmt.c
@@ -481,7 +481,9 @@ void jffs2_complete_reservation(struct jffs2_sb_info *c) { D1(printk(KERN_DEBUG "jffs2_complete_reservation()\n")); + spin_lock(&c->erase_completion_lock); jffs2_garbage_collect_trigger(c); + spin_unlock(&c->erase_completion_lock); mutex_unlock(&c->alloc_sem); }
diff --git a/fs/jffs2/super.c b/fs/jffs2/super.c index 9a80e8e..12cc967 100644 --- a/fs/jffs2/super.c +++ b/fs/jffs2/super.c
@@ -63,7 +63,9 @@ if (!(sb->s_flags & MS_RDONLY)) { D1(printk(KERN_DEBUG "jffs2_write_super()\n")); + spin_lock(&c->erase_completion_lock); jffs2_garbage_collect_trigger(c); + spin_unlock(&c->erase_completion_lock); jffs2_erase_pending_blocks(c, 0); jffs2_flush_wbuf_gc(c, 0); }