From nobody Sun Feb 8 20:35:41 2026 Received: from m16.mail.163.com (m16.mail.163.com [117.135.210.4]) (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 6D69F226165 for ; Tue, 6 Jan 2026 02:55:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=117.135.210.4 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767668158; cv=none; b=A1pls3ZdgsL9EAKLFHx+uCNJYdv+6U8lMzSvCbWEy7hnK/0YEq8w1TpI3Y6IOqhttgtdww/HCrv7mKMxI8cGKNSUvtnqytzXyk4gG1VGr0Nullzwca8df82QFCASid78xZ1TE5YYRXxS36FeTGp+e1FyFgPDbrei07t2pIHL16o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767668158; c=relaxed/simple; bh=yWpJExnkkrdC9eGyXdgbrYotcjH5DPHpyvgHak5MdPM=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=BQ66GzcOOKhx58fK3TLREYT/5nEvwxkE//FV6/4cPSkfHBTIYFNWwgqPrQyxb3qsL9agEGw9O2K5nbLHfmBGOmPf2fbv8sKm3Db4Tndh8Uzxnsr5yd5nedm3QtY3k7FIt/Np8HhPMCJ7y5uUT+Py34RI6G2G5hz1fLF1tf9B1gI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com; spf=pass smtp.mailfrom=163.com; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b=HbuXaH2X; arc=none smtp.client-ip=117.135.210.4 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=163.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b="HbuXaH2X" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:To:Subject:Date:Message-Id:MIME-Version; bh=20 nfw3Plmnsmkkkz6LG9IBFsg+zccJwfHvu7Z9UX6fs=; b=HbuXaH2Xp0d0DMmk7i TGK17vqglg/HjWQIjSl0Ip/S7XJgjmJHjiUqMTNRIZiHpcmnCl92URQFxCa+SlnU aeKojGlK38BrbItFy+h4I7PACJkR7o5SG6WsON+yRnIy/jC6N6/bxnNANn7HgbQq VSvsvswWc6llYC+rlceKuCcz8= Received: from liubaolin-VMware-Virtual-Platform.localdomain (unknown []) by gzsmtp5 (Coremail) with SMTP id QCgvCgDXX4+OeVxpsvBmKQ--.146S2; Tue, 06 Jan 2026 10:55:15 +0800 (CST) From: Baolin Liu To: xiang@kernel.org, chao@kernel.org Cc: zbestahu@gmail.com, jefflexu@linux.alibaba.com, dhavale@google.com, lihongbo22@huawei.com, guochunhai@vivo.com, linux-erofs@lists.ozlabs.org, linux-kernel@vger.kernel.org, Baolin Liu Subject: [PATCH v1] erofs: Fix state inconsistency when updating fsid/domain_id Date: Tue, 6 Jan 2026 10:55:02 +0800 Message-Id: <20260106025502.133470-1-liubaolin12138@163.com> X-Mailer: git-send-email 2.39.2 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-CM-TRANSID: QCgvCgDXX4+OeVxpsvBmKQ--.146S2 X-Coremail-Antispam: 1Uf129KBjvJXoW7uF1DCr4fJFWfKFWfKw4kWFg_yoW8GF4rpF 93K3WFy3y7Aw1UXF92gF48Xr98C340ya48Kws5Kws7X345JF4vgrWSqF1jkryfZrZ3Jw40 qFnFqw48uryUAa7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07jbZ2-UUUUU= X-CM-SenderInfo: xolxutxrol0iasrtmqqrwthudrp/xtbC6RPzvmlceZOuDQAA3L Content-Type: text/plain; charset="utf-8" From: Baolin Liu When updating fsid or domain_id, the code frees the old pointer before allocating a new one. If allocation fails, the pointer becomes NULL while the old value is already freed, causing state inconsistency. Fix by allocating the new value first, and only freeing the old value on success. Signed-off-by: Baolin Liu --- fs/erofs/super.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/fs/erofs/super.c b/fs/erofs/super.c index 937a215f626c..6e083d7e634c 100644 --- a/fs/erofs/super.c +++ b/fs/erofs/super.c @@ -509,16 +509,22 @@ static int erofs_fc_parse_param(struct fs_context *fc, break; #ifdef CONFIG_EROFS_FS_ONDEMAND case Opt_fsid: - kfree(sbi->fsid); - sbi->fsid =3D kstrdup(param->string, GFP_KERNEL); - if (!sbi->fsid) + char *new_fsid; + + new_fsid =3D kstrdup(param->string, GFP_KERNEL); + if (!new_fsid) return -ENOMEM; + kfree(sbi->fsid); + sbi->fsid =3D new_fsid; break; case Opt_domain_id: - kfree(sbi->domain_id); - sbi->domain_id =3D kstrdup(param->string, GFP_KERNEL); - if (!sbi->domain_id) + char *new_domain_id; + + new_domain_id =3D kstrdup(param->string, GFP_KERNEL); + if (!new_domain_id) return -ENOMEM; + kfree(sbi->domain_id); + sbi->domain_id =3D new_domain_id; break; #else case Opt_fsid: --=20 2.39.2