From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pg1-f180.google.com (mail-pg1-f180.google.com [209.85.215.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A1E6F2C0299 for ; Sat, 30 May 2026 14:35:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.180 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780151728; cv=none; b=prgej8aZuJV6vys0HPKjEYSDy/Ap61kDPauL1GcW7HYvL2EONB7pcsPG0DQd6kg1wtuvMrrFX9vdxLG7fWbt6ePp7JL5eI+0KATKrPwr+pQQlfngndE7ouvxOUMhqVdU1TYMeDnYS8734cw9mh35Qm94uRytkIU40A4nf11KhH8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780151728; c=relaxed/simple; bh=MSDhO8kmXxGFOzcEOVnsceyiE3UMPChHvO3j6B5hL9w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=a7dxkGzkzckBnL1QWWAS2BhIrFOlouSDaFXXQ0xiTSfLi/8aRniWiDOwyJG+GWOTQlOzfiqNxWoVLEN6+nQ1v38GH/ctTB6ovdfH/6cYIO6qF92EyxTas2y9yxmgm3Yz1westhrZdYUVdVMoTikIC/6Rm+53B3Upv360iksHmsM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=jUEPKShl; arc=none smtp.client-ip=209.85.215.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jUEPKShl" Received: by mail-pg1-f180.google.com with SMTP id 41be03b00d2f7-c85631bab7cso121596a12.1 for ; Sat, 30 May 2026 07:35:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780151727; x=1780756527; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hzViUSPWZPFCueI/zqrhP6OZ0oxKngJz6Ipnb5MmOes=; b=jUEPKShlVtxxIOX3XsyUcw9Zb50MqYe8ch5Y2kahN7S7TwSByWFm82NgN5D7c5vDth MeYSiguYyJwCZ3F06QYQZemdcQjx4OyXK6U7Od5p6G6EzJ6f3AForUXw/2bE0QVPfEfW bvqKpMauCThVJpWdPgtkF4NAG6tj8A1StqqRZRe9THauMhid45EYd9r24nhGImXhP4XW 65920tWaO6NPxYXG31Ey4M03h9hu1BBYbrI7dMelsJmTEwL1/PtWwIp+tUdb7OJC6fey Ih9hFnnIWMUI9WvMhZ+YkCDtBH70KnpcwlnFvhSHPX+smkpLoniTnPCNyzMV/TLEN6qE Jy6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780151727; x=1780756527; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=hzViUSPWZPFCueI/zqrhP6OZ0oxKngJz6Ipnb5MmOes=; b=ft9aNa592eu/3ixfzHMsxGTBm7ZSy8VO8xVaRKg2T2tBK7P1ccYq+cjav3br1htrJc owfa1c5ESR/qDQ1bslqPw5igudsorskZP9Cz58BfiitDatOLe31dKmEv/Wx2YRkVluPa 2YFqK3sRJ3w7y87y/ZzoLNUDet1Pk4WZ9oCvS8eIz5BMQWRYjicDcHQqBDp0Xnar33zT OOtCZPka4CHQ256zhqJLcUb9inTcylWHbc6LHYhvoMi6Va+S0JuVtCqawrzSTV9UMSk2 wNEU/JyzwFLspWl+vPxvKJzUby9f3/npIoxIym0FYoWlmVg/fmxdVtYpjxdnlPEgOt8i U5hA== X-Forwarded-Encrypted: i=1; AFNElJ9cax20seS3DqmIzRl7vN4xjdig5enf/i/BQ0LxPJO8wo38rgqSPeUHFL+7jdwrJu5da74msDvjRKXjk00=@vger.kernel.org X-Gm-Message-State: AOJu0YwYDd9LTdp5B5SalEu4C6R5l1RgwPXYAXz+jWV7V+NRXM5hmhjq Tx2kaonWO7YuZhb45D3JzKbY4nV9Jsoz5um1ln8yvcL/o9G0V546Zuz7A/6LMA== X-Gm-Gg: Acq92OFUw7u/LMtpY1v9lWuckGr/Q4/qr0eSXq3RggGokknPLESbWqGtWwoPCBtT99D //y7tuy9sYHHGqaTVTuoL9pR78Euy/j3ZN/kYzSGMliO2qBuYm91LLbMfKbaIwMvb7iEpJzPoZL hwu5IVLTU3M7faNx1kZaOTmRHjZGh6Zptowt/3JOwgykZ1zqTE83mYK1jlrDhKYAaMrqdklZQJ1 9g35iJxCrKvjnKjZMFmyCzD36gRFZrMlExZkorZBBk5sRkd0dGop6d3XxifnczvDHvAuOweLFPU b2VE5NpP8ECrsatT6OFTUre/KOxl230sC2jKz/wNFHMvD3m5Fkyh1vJLB6Yh7U8+8tN530R9Kqp m4uJ1PM5EEKk7mTAm/eI1s/S07Gx/Tpkj5DwixDqDMRvjifzdpPFgaKUYW0VzOyZpLRWHaU3FDq Y+by5XuAYewbq7SXsHZGTr18Rrc74= X-Received: by 2002:a05:6a00:3c89:b0:841:dc7e:b42e with SMTP id d2e1a72fcca58-842251b90d8mr2102711b3a.0.1780151726961; Sat, 30 May 2026 07:35:26 -0700 (PDT) Received: from ser8.. ([221.156.231.192]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84214b2acb7sm5832280b3a.13.2026.05.30.07.35.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 07:35:26 -0700 (PDT) From: DaeMyung Kang To: Namjae Jeon , Hyunchul Lee Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, DaeMyung Kang Subject: [PATCH v4 2/6] ntfs: do not replace volume name after lookup errors Date: Sat, 30 May 2026 23:35:10 +0900 Message-ID: <20260530143514.3083601-3-charsyam@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530143514.3083601-1-charsyam@gmail.com> References: <20260530143514.3083601-1-charsyam@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit ntfs_write_volume_label() removes an existing $VOLUME_NAME attribute and then adds the replacement. The old code only distinguished lookup success from all other results, so any lookup error was treated like an absent label and the add path still ran. That is unsafe once lookup-time validation rejects corrupt $VOLUME_NAME records with -EIO: the corrupt record would remain in place and a second $VOLUME_NAME record could be appended next to it. Only add the replacement after the old label was removed successfully or after lookup returned -ENOENT. Propagate all other lookup errors, and also stop if removing the old attribute fails. Signed-off-by: DaeMyung Kang --- fs/ntfs/super.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/fs/ntfs/super.c b/fs/ntfs/super.c index a2648d1c8fd0..140b8c8a811e 100644 --- a/fs/ntfs/super.c +++ b/fs/ntfs/super.c @@ -452,10 +452,15 @@ int ntfs_write_volume_label(struct ntfs_volume *vol, char *label) goto out; } - if (!ntfs_attr_lookup(AT_VOLUME_NAME, NULL, 0, 0, 0, NULL, 0, - ctx)) - ntfs_attr_record_rm(ctx); + ret = ntfs_attr_lookup(AT_VOLUME_NAME, NULL, 0, 0, 0, NULL, 0, + ctx); + if (!ret) + ret = ntfs_attr_record_rm(ctx); + else if (ret == -ENOENT) + ret = 0; ntfs_attr_put_search_ctx(ctx); + if (ret) + goto out; ret = ntfs_resident_attr_record_add(vol_ni, AT_VOLUME_NAME, AT_UNNAMED, 0, (u8 *)uname, uname_len * sizeof(__le16), 0); -- 2.43.0