[PATCH] inode: always initialize mapping->wb_err

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Creating a file reuses the inode object by kmem_cache_alloc without
initializing maping->wb_err. If it contains an unseen writeback error,
fsync will report an error on the file, even if no error has ever occurred
after the file was created.

Before commit b4678df184b3 ("errseq: Always report a writeback error
once"), any errors that occur before the file descriptor is opened will be
ignored, causing the issue not to be found. Afterward, any unseen writeback
error will be reported once, including, of course, the uninitialized
maping->wb_err, which exposes this problem.

Signed-off-by: Lu Fengqi <lufq.fnst@xxxxxxxxxxxxxx>
---
 fs/inode.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/fs/inode.c b/fs/inode.c
index 13ceb98c3bd3..bf02dc9d1837 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -182,6 +182,7 @@ int inode_init_always(struct super_block *sb, struct inode *inode)
 	mapping_set_gfp_mask(mapping, GFP_HIGHUSER_MOVABLE);
 	mapping->private_data = NULL;
 	mapping->writeback_index = 0;
+	mapping->wb_err = 0;
 	inode->i_private = NULL;
 	inode->i_mapping = mapping;
 	INIT_HLIST_HEAD(&inode->i_dentry);	/* buggered by rcu freeing */
-- 
2.17.0






[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux