From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.cn.fujitsu.com ([183.91.158.132]:44648 "EHLO heian.cn.fujitsu.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1030648AbeEZCnD (ORCPT ); Fri, 25 May 2018 22:43:03 -0400 From: Lu Fengqi To: CC: , Subject: [PATCH] inode: always initialize mapping->wb_err Date: Sat, 26 May 2018 10:42:54 +0800 Message-ID: <20180526024254.21114-1-lufq.fnst@cn.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-fsdevel-owner@vger.kernel.org List-ID: 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 --- 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