summaryrefslogtreecommitdiff
path: root/fs/jffs2/super.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@mtd.linutronix.de>2005-11-29 15:57:17 (GMT)
committerThomas Gleixner <tglx@mtd.linutronix.de>2005-11-29 15:57:17 (GMT)
commit21eeb7aa116b1f59fc23339521173cbb13e57f1a (patch)
treeaca16132a18dca8c8bf3417d118ad9d98834db32 /fs/jffs2/super.c
parentbc4117f8767203927e78b92e9e5b3ddb71d6a84d (diff)
downloadlinux-fsl-qoriq-21eeb7aa116b1f59fc23339521173cbb13e57f1a.tar.xz
[JFFS2] Fix the slab cache constructor of 'struct jffs2_inode_info' objects.
JFFS2 initialize f->sem mutex as "locked" in the slab constructor which is a bug. Objects are freed with unlocked f->sem mutex. So, when they allocated again, f->sem is unlocked because the slab cache constructor is not called for them. The constructor is called only once when memory pages are allocated for objects (namely, when the slab layer allocates new slabs). So, sometimes 'struct jffs2_inode_info' are allocated with unlocked f->sem, sometimes with locked. This is a bug. Instead, initialize f->sem as unlocked in the constructor. I.e., in the "constructed" state f->sem must be unlocked. From: Keijiro Yano <keijiro_yano@yahoo.co.jp> Acked-by: Artem B. Bityutskiy <dedekind@infradead.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'fs/jffs2/super.c')
-rw-r--r--fs/jffs2/super.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/jffs2/super.c b/fs/jffs2/super.c
index 9e0b545..9388381 100644
--- a/fs/jffs2/super.c
+++ b/fs/jffs2/super.c
@@ -51,7 +51,7 @@ static void jffs2_i_init_once(void * foo, kmem_cache_t * cachep, unsigned long f
if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) ==
SLAB_CTOR_CONSTRUCTOR) {
- init_MUTEX_LOCKED(&ei->sem);
+ init_MUTEX(&ei->sem);
inode_init_once(&ei->vfs_inode);
}
}