From nobody Tue Feb 10 00:58:27 2026 Received: from szxga04-in.huawei.com (szxga04-in.huawei.com [45.249.212.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5975B13D299 for ; Wed, 10 Apr 2024 07:46:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.249.212.190 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712735188; cv=none; b=m0dJaSoCZmq+IBqhlRzAkCLQe5f/xyR0uzd38R2igCVqBz3VceSIk8sTu9hr4mrVSmCikFLsFs+fBvvWwee42XOq39omkfuwVNOZXTSZpq0muzDuQCj5XAnQ026YrbdKw4i6cmdHkOTf76aNHpfvkh1myF0G4eI49NOt9YjL59Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712735188; c=relaxed/simple; bh=6enRpkCtRRhSMRNuro77x5hwv78gHH59C5x6cX07ujA=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=pWYYScdF0/ll7luBjMkwko1Gsf0nM0l8Ybje3yH08c4s/EdoaYcINgLTcsmRuz41xedM4gplP++2GV8qUk/yPHc1GNouBAiZIe7RZV9BUsoqxKUZ0/bFN5ATt8qSCTWNtoaHiHFaTFQ7ML5kWprbg7PP9fHQcpJFQSEAcO947nk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=huawei.com; spf=pass smtp.mailfrom=huawei.com; arc=none smtp.client-ip=45.249.212.190 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=huawei.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huawei.com Received: from mail.maildlp.com (unknown [172.19.88.163]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4VDvvm6Jn4z29lMv; Wed, 10 Apr 2024 15:43:32 +0800 (CST) Received: from kwepemm600013.china.huawei.com (unknown [7.193.23.68]) by mail.maildlp.com (Postfix) with ESMTPS id A876218001A; Wed, 10 Apr 2024 15:46:24 +0800 (CST) Received: from huawei.com (10.175.104.67) by kwepemm600013.china.huawei.com (7.193.23.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Wed, 10 Apr 2024 15:46:21 +0800 From: Zhihao Cheng To: CC: , , Subject: [PATCH 6/9] ubifs: Move ui->data initialization after initializing security Date: Wed, 10 Apr 2024 15:37:48 +0800 Message-ID: <20240410073751.2522830-7-chengzhihao1@huawei.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240410073751.2522830-1-chengzhihao1@huawei.com> References: <20240410073751.2522830-1-chengzhihao1@huawei.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To kwepemm600013.china.huawei.com (7.193.23.68) Content-Type: text/plain; charset="utf-8" Host inode and its' xattr will be written on disk after initializing security when creating symlink or dev, then the host inode and its dentry will be written again in ubifs_jnl_update. There is no need to write inode data in the security initialization pass, just move the ui->data initialization after initializing security. Signed-off-by: Zhihao Cheng --- fs/ubifs/dir.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c index 551148de66cd..848988f2b7dc 100644 --- a/fs/ubifs/dir.c +++ b/fs/ubifs/dir.c @@ -1102,16 +1102,18 @@ static int ubifs_mknod(struct mnt_idmap *idmap, str= uct inode *dir, goto out_fname; } =20 + err =3D ubifs_init_security(dir, inode, &dentry->d_name); + if (err) { + kfree(dev); + goto out_inode; + } + init_special_inode(inode, inode->i_mode, rdev); inode->i_size =3D ubifs_inode(inode)->ui_size =3D devlen; ui =3D ubifs_inode(inode); ui->data =3D dev; ui->data_len =3D devlen; =20 - err =3D ubifs_init_security(dir, inode, &dentry->d_name); - if (err) - goto out_inode; - mutex_lock(&dir_ui->ui_mutex); dir->i_size +=3D sz_change; dir_ui->ui_size =3D dir->i_size; @@ -1184,6 +1186,10 @@ static int ubifs_symlink(struct mnt_idmap *idmap, st= ruct inode *dir, goto out_fname; } =20 + err =3D ubifs_init_security(dir, inode, &dentry->d_name); + if (err) + goto out_inode; + ui =3D ubifs_inode(inode); ui->data =3D kmalloc(disk_link.len, GFP_NOFS); if (!ui->data) { @@ -1209,10 +1215,6 @@ static int ubifs_symlink(struct mnt_idmap *idmap, st= ruct inode *dir, ui->data_len =3D disk_link.len - 1; inode->i_size =3D ubifs_inode(inode)->ui_size =3D disk_link.len - 1; =20 - err =3D ubifs_init_security(dir, inode, &dentry->d_name); - if (err) - goto out_inode; - mutex_lock(&dir_ui->ui_mutex); dir->i_size +=3D sz_change; dir_ui->ui_size =3D dir->i_size; --=20 2.39.2