From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) (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 2985F37C0F0 for ; Sat, 25 Apr 2026 18:42:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777142575; cv=none; b=SyEt0lV8QNMeQ/agw/UHxTD8mMC6UOB8LvVvxXn22ktV07r2LrVwYKT1ixBdc7kFdKvgaZsz+qF2XVVaGvsYvSpre8RI19kyFzbP8H5fDzApJwRXsEFB4hoATcQzDhNL9oRltWCfi3emXU/xMeMg8fB6fdP/MtPIPzcUJk8G19Q= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777142575; c=relaxed/simple; bh=sbgyC0F1QWWxsqlHMSvDUx3fIhaVIHxnzkP3GsRbJtI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=M7zj3+93/AC50MSwuDEjmLYnrxGDjRui6pWiNwcp6QT+U4m7ursnXrWDf2tcjvpL7RyVbEbAUUL45giBFDyW0580aOQKeLA8INOjCPfvAOUPDqJ4zsZZMUSyWCBb9jjHZNSH22sXCbJJ/9HlvdqCqlaCXw/h3IxAvc/8FK62OkI= 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=Mg3SoQKp; arc=none smtp.client-ip=209.85.214.172 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="Mg3SoQKp" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-2ae3a007bd1so9241925ad.2 for ; Sat, 25 Apr 2026 11:42:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777142573; x=1777747373; 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=ozsUMKbqTO/Xk5E69vfQ7nhFZDCs1d2jRIQqTzB9tKU=; b=Mg3SoQKp3Zya2ZB9/NL/Vdf/F2LXWV35L0/g4BV+Vv1tX1B5nQa48JJYlT09idTZeH PKgJzzK8WdfFOy+valuQt0IbyRRBBI51Sz344zykfwZTAbA8P4n0tDAtyCiAWODfr9xO GjAsS/5NzXIUXZqSzFNVOeFFJJART8ss6iK5RdnWuD5pHiu4pcBkXbx3IOQdyBbZGmHN 0wIyBIIJ1HQsOJJrw0ymxTtHyycwxwqzuCh8DnHLqhE2WQP69L6R2iptvVXGGBiB49kU wPEEC235TCkZp27Sgh6GHDUdrqn1GCA4Z71g+vhIRe9j47PmWBnMRof5WbFGe7oZ+TQA CpYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777142573; x=1777747373; 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=ozsUMKbqTO/Xk5E69vfQ7nhFZDCs1d2jRIQqTzB9tKU=; b=fUpUbmG78epkNLhMUrghsGrfKwzceJZ5HDxEHDl5XeBiZ/A7MbfBF2vF47YJGgUJhv 5OBXZdG7MEz52VWBbbUadWu195z3iaNtIAzSIiyHsMt5sZAvWLglzBe1JWnUJ6Dj5fB4 AeZnU5Fu7Jd4bi4CSUNRJ7m9ylSUM93Cglh2gOsFLkEMxZxbgWGHTJfhkHp85KE3kJtX 90M79beQnuoPYWKtIun0+CfSPdnWPVdYB7UehiqiQ2YOzoBCxHILBPomT7FtrMzUdZkc 8L3LBhydT4BO4oy40fDIbzAhcGLcAUZVxj4gR0XmOz/0B3aQusknsyY4PW0H/V4jbOSq KEVQ== X-Forwarded-Encrypted: i=1; AFNElJ/mJ+SrUr9E3F8msqWq4hvYw4SNzYakrAOH/TpORF9UMDwHZsR+KON8kKDMU4HB4Se5So5IwNoOZaR+rDU=@vger.kernel.org X-Gm-Message-State: AOJu0Yzdyb8bQybkfnF3InVzTkcWU0Sr9mDEJnv6n8ejehBcjHJdXIdH VpchSoYvDuGi5riLXLnnDIeHTh9iqC4xXm2PPsc+pNv/I62nXI66WY3l X-Gm-Gg: AeBDies93DGK/JyIlRXcw/dCob9TXnRbT6m7ClxpNNV6GIffJ5ywoPdtTbqbEn0BS2W LbeB767DhNuDMM2W+GO2md6dyHoqJu6Uu16gMFy4Us8lHkC3BbL7p5sSX7NZ0AtHq6s5XjiVswC kBsfgqMyRezbzTj1HpqvTXIhMa/jv+5oGbxmao9omyhKjnhvvc70lAqi85Wvx2XwFAnZr4jeL0r xCpU5DkXrMC79ZFTzqKPf2mOdgGwR2Zeyk3OckgKqnh5krzvdeo0nAbiXBZBjtihPRGB5phee6p xWcRMB8fUayZurKlAJCfqWALmcC/iRVgJPt8UR49Ypp9M6KXESyzCOSG39ffU0wqPbS/TK8GaRO fEkUPuLLXC5XR4c/HDhiFV24YlS6NefUKiC2Q09OMytwD0KZm27hpOUii3jTikR+7fGsaHHjJBO +IMEI5EOophzePNZGqsClM178vXfQ= X-Received: by 2002:a05:6a21:7001:b0:3a3:1814:20a2 with SMTP id adf61e73a8af0-3a3181421d7mr8896061637.5.1777142573521; Sat, 25 Apr 2026 11:42:53 -0700 (PDT) Received: from ser8.. ([221.156.231.192]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8ebba485sm33975874b3a.38.2026.04.25.11.42.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 25 Apr 2026 11:42:53 -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 2/2] ntfs: fix WSL symlink target leak on reparse failure Date: Sun, 26 Apr 2026 03:42:43 +0900 Message-ID: <20260425184243.116396-3-charsyam@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260425184243.116396-1-charsyam@gmail.com> References: <20260425184243.116396-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_reparse_set_wsl_symlink() converts the symlink target into an allocated NLS string and transfers ownership to ni->target only after ntfs_set_ntfs_reparse_data() succeeds. If setting the reparse data fails, the converted target is left unreferenced and leaks. Free the converted target on the reparse update failure path. Use kfree() for the other local failure path as well, matching the ntfs_ucstonls() allocation contract. Fixes: fc053f05ca28 ("ntfs: add reparse and ea operations") Signed-off-by: DaeMyung Kang --- fs/ntfs/reparse.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fs/ntfs/reparse.c b/fs/ntfs/reparse.c index 8f60ec6f66c1..74713716813f 100644 --- a/fs/ntfs/reparse.c +++ b/fs/ntfs/reparse.c @@ -505,7 +505,6 @@ int ntfs_reparse_set_wsl_symlink(struct ntfs_inode *ni, struct reparse_point *reparse; struct wsl_link_reparse_data *data; - utarget = (char *)NULL; len = ntfs_ucstonls(ni->vol, target, target_len, &utarget, 0); if (len <= 0) return -EINVAL; @@ -514,7 +513,7 @@ int ntfs_reparse_set_wsl_symlink(struct ntfs_inode *ni, reparse = kvzalloc(reparse_len, GFP_NOFS); if (!reparse) { err = -ENOMEM; - kvfree(utarget); + kfree(utarget); } else { data = (struct wsl_link_reparse_data *)reparse->reparse_data; reparse->reparse_tag = IO_REPARSE_TAG_LX_SYMLINK; @@ -528,6 +527,8 @@ int ntfs_reparse_set_wsl_symlink(struct ntfs_inode *ni, kvfree(reparse); if (!err) ni->target = utarget; + else + kfree(utarget); } return err; } -- 2.43.0