On Fri, Dec 07, 2012 at 09:34:24AM +0800, Tao Ma wrote: > I think ext4_inode->xattr_sem should protect us? When we do xattr > corresponding operation, we just do > down_write/read(&EXT4_I(inode)->xattr_sem), so we should be fine with > this type of operation. Am I missing something here? We're not taking the xattr_sem in ext4_find_inline_data() before we call ext4_xattr_ibody_find(). So I think we need something like this: diff --git a/fs/ext4/inline.c b/fs/ext4/inline.c index 6b600b4..e96268d 100644 --- a/fs/ext4/inline.c +++ b/fs/ext4/inline.c @@ -143,7 +143,9 @@ int ext4_find_inline_data(struct inode *inode) if (error) return error; + down_read(&EXT4_I(inode)->xattr_sem); error = ext4_xattr_ibody_find(inode, &i, &is); + up_read(&EXT4_I(inode)->xattr_sem); if (error) goto out; - Ted -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html