mtd/fs/jffs2 fs.c,1.69,1.70 super.c,1.111,1.112
Artem Bityutskiy
dedekind at infradead.org
Thu Nov 24 11:13:28 EST 2005
- Previous message: mtd/drivers/mtd/chips cfi_cmdset_0001.c,1.185,1.186
- Next message: mtd/Documentation/jffs3 gc.tex, NONE, 1.1 JFFS3design.tex, 1.30,
1.31 Makefile, 1.5, 1.6 definit.tex, 1.4, 1.5 intro.tex, 1.4,
1.5 jffs2.tex, 1.4, 1.5 jffs3req.tex, 1.4, 1.5 ref.tex, 1.4,
1.5 super.tex, 1.4, 1.5 tree.tex, 1.4, 1.5
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /home/cvs/mtd/fs/jffs2
In directory phoenix.infradead.org:/tmp/cvs-serv28895
Modified Files:
fs.c super.c
Log Message:
[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 at yahoo.co.jp>
Acked-by: Artem B. Bityutskiy <dedekind at infradead.org>
Index: fs.c
===================================================================
RCS file: /home/cvs/mtd/fs/jffs2/fs.c,v
retrieving revision 1.69
retrieving revision 1.70
diff -u -r1.69 -r1.70
--- fs.c 11 Nov 2005 08:51:38 -0000 1.69
+++ fs.c 24 Nov 2005 16:13:24 -0000 1.70
@@ -234,6 +234,7 @@
c = JFFS2_SB_INFO(inode->i_sb);
jffs2_init_inode_info(f);
+ down(&f->sem);
ret = jffs2_do_read_inode(c, f, inode->i_ino, &latest_node);
@@ -400,6 +401,7 @@
f = JFFS2_INODE_INFO(inode);
jffs2_init_inode_info(f);
+ down(&f->sem);
memset(ri, 0, sizeof(*ri));
/* Set OS-specific defaults for new inodes */
Index: super.c
===================================================================
RCS file: /home/cvs/mtd/fs/jffs2/super.c,v
retrieving revision 1.111
retrieving revision 1.112
diff -u -r1.111 -r1.112
--- super.c 11 Nov 2005 08:51:39 -0000 1.111
+++ super.c 24 Nov 2005 16:13:25 -0000 1.112
@@ -51,7 +51,7 @@
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);
}
}
- Previous message: mtd/drivers/mtd/chips cfi_cmdset_0001.c,1.185,1.186
- Next message: mtd/Documentation/jffs3 gc.tex, NONE, 1.1 JFFS3design.tex, 1.30,
1.31 Makefile, 1.5, 1.6 definit.tex, 1.4, 1.5 intro.tex, 1.4,
1.5 jffs2.tex, 1.4, 1.5 jffs3req.tex, 1.4, 1.5 ref.tex, 1.4,
1.5 super.tex, 1.4, 1.5 tree.tex, 1.4, 1.5
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the linux-mtd-cvs
mailing list