FAILED: patch "[PATCH] ntfs: fix resource leak in ntfs_new_attr_flags" failed to apply to 7.2-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 7.2-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-7.2.y
git checkout FETCH_HEAD
git cherry-pick -x 9969d58a9b0417393d033b24c670d57b686cabbf
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026090333-reformat-subplot-1cbe@gregkh' --subject-prefix 'PATCH 7.2.y' 'HEAD^..'
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 9969d58a9b0417393d033b24c670d57b686cabbf Mon Sep 17 00:00:00 2001
From: Hongling Zeng <[email protected]>
Date: Thu, 20 Aug 2026 16:14:10 +0800
Subject: [PATCH] ntfs: fix resource leak in ntfs_new_attr_flags
When handling resident attributes that don't need sparse/compressed changes, ntfs_new_attr_flags() returns 0 directly at line 678 without calling unmap_mft_record() or ntfs_attr_put_search_ctx(). This leaks the MFT record mapping and attribute search context.
An unprivileged user can cause a denial of service by repeatedly calling setxattr(2) with system.ntfs_attrib on files with resident attributes, eventually exhausting kernel memory.
Fix by replacing the direct return with goto err_out to ensure proper cleanup of resources via the existing cleanup code.
fs/ntfs/ea.c +4 -2
@@ -674,8 +674,10 @@ static int ntfs_new_attr_flags(struct ntfs_inode *ni, __le32 fattr) }if (!a->non_resident) { -if (!(new_aflags & (ATTR_IS_SPARSE |ATTR_IS_COMPRESSED ))) -return 0 ; +if (!(new_aflags & (ATTR_IS_SPARSE |ATTR_IS_COMPRESSED ))) { + err =0 ; + goto err_out; + }if (le32_to_cpu (a->data.resident.value_length)) {pr_err ("Can't change sparse/compressed for non-empty file" );