Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp1012604pxf; Thu, 11 Mar 2021 22:53:33 -0800 (PST) X-Google-Smtp-Source: ABdhPJzyrr0qex8WUatE9f8SfgaWszT2ffiyvEPuSu97KeobITbD6sseYiqS5nmc+e1DYr2oAoGM X-Received: by 2002:a17:907:162b:: with SMTP id hb43mr7137903ejc.41.1615532013610; Thu, 11 Mar 2021 22:53:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615532013; cv=none; d=google.com; s=arc-20160816; b=eceOpGT5vKrcSd6Cyi+yNDbJDA1c3FA32F89KvUaL9j2bW5ccKxAFNQcCO2fCW9oar fT0N+DElp1IvcyZ+2Hn3Lj1iQK/RqtdvUhoMXwX9GIEkXsiBrD7jEx2AUEUD3o4W7FBT 9QvVVNaDybZPJAI+gYTVz9dPXHCpCN10jH1dMyFSmywvIzhT8HktjmiXDeJDugdgorjV bw4KcL7ESRPJDmT7fp0IosH9vie/TvTUanyKdoYSH3T1E5LYcZKSpYdgaeNjXZDGjwv+ IkkDKQjaNsPyusv8AoRZEsRqYaFlsiah6oSkWI1CilFxBRRdDt5NMaeatt1p9bTOaxRx jcaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=7bTizxuOCFG14L9JQTArWzGsUEVCtLzARdgiuW5ydMM=; b=T1dJGVX9d02KdHUxAxSiYFWBEKDmdUivKd1dIlhgKC/CORLnW9fB9dq/QVkEY3m10S omgFKVXu1S7OYiPlEFKq44zAtad9q5jlOfbJno7eEktehzzrGRedsX89q4n4YA91g76j DUGyOC/eXv4l8RsmnoQa4TGU6tL9m3PQSiUBFYx7rEU8tZOSZmkMYX00r8x5EPsom9ip 7k5ow7NPNnSCKPKiSFfabtfmHW8HymbU4DuDeuIKMiisnplSXXqgHt5O2Ezv2qwk/fka 5XnM9bTWpSkYxLsfWuCPZX7VQjTXTms1mBXi2u+GGMO7bhYuMJfwQE7eY1hRV/QiIDGQ L4Fg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id co11si3317506edb.280.2021.03.11.22.53.06; Thu, 11 Mar 2021 22:53:33 -0800 (PST) Received-SPF: pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231620AbhCLGwF (ORCPT + 99 others); Fri, 12 Mar 2021 01:52:05 -0500 Received: from szxga04-in.huawei.com ([45.249.212.190]:13148 "EHLO szxga04-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230179AbhCLGvk (ORCPT ); Fri, 12 Mar 2021 01:51:40 -0500 Received: from DGGEMS413-HUB.china.huawei.com (unknown [172.30.72.59]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4DxbyS4x8nzmVqY; Fri, 12 Mar 2021 14:49:20 +0800 (CST) Received: from huawei.com (10.175.104.175) by DGGEMS413-HUB.china.huawei.com (10.3.19.213) with Microsoft SMTP Server id 14.3.498.0; Fri, 12 Mar 2021 14:51:28 +0800 From: Shijie Luo To: CC: , , Subject: [PATCH] ext4: fix potential error in ext4_do_update_inode Date: Fri, 12 Mar 2021 01:50:51 -0500 Message-ID: <20210312065051.36314-1-luoshijie1@huawei.com> X-Mailer: git-send-email 2.19.1 MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [10.175.104.175] X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org If set_large_file = 1 and errors occur in ext4_handle_dirty_metadata(), the error code will be overridden, go to out_brelse to avoid this situation. Signed-off-by: Shijie Luo --- fs/ext4/inode.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 650c5acd2f2d..8074ae0e976d 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -5026,7 +5026,7 @@ static int ext4_do_update_inode(handle_t *handle, struct ext4_inode_info *ei = EXT4_I(inode); struct buffer_head *bh = iloc->bh; struct super_block *sb = inode->i_sb; - int err = 0, rc, block; + int err = 0, block; int need_datasync = 0, set_large_file = 0; uid_t i_uid; gid_t i_gid; @@ -5138,9 +5138,9 @@ static int ext4_do_update_inode(handle_t *handle, bh->b_data); BUFFER_TRACE(bh, "call ext4_handle_dirty_metadata"); - rc = ext4_handle_dirty_metadata(handle, NULL, bh); - if (!err) - err = rc; + err = ext4_handle_dirty_metadata(handle, NULL, bh); + if (err) + goto out_brelse; ext4_clear_inode_state(inode, EXT4_STATE_NEW); if (set_large_file) { BUFFER_TRACE(EXT4_SB(sb)->s_sbh, "get write access"); -- 2.19.1