From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtpbgsg2.qq.com (smtpbgsg2.qq.com [54.254.200.128]) (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 317AE31F9B4 for ; Thu, 30 Jul 2026 01:58:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=54.254.200.128 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785376723; cv=none; b=NAT5QpcC2E4vGxC3Yb5rMqDFLg5vfAqQDpvqpm5YgRGa0LTC+zdbv+CmV9w4GliaWhhvDY/21dEC+6VXq+8/46zZ0UD1A5WhsgOdRleUUOTm3h5hTMWOwF8yLrkpZZhVkw9MDzUj221aEYZ+vrA8A4KD367s1O31CQ4AJoMXW7g= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785376723; c=relaxed/simple; bh=Fy6KnUxyAY4ObqeqhX1VwR/0cSdSTEmdzskCfQAIUvI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=GSNq3CjndpWMQV2B0Yy5ovauY6i96RGfKRGUyv85pm54lPKmRvKv7/d599Tn7av8M3kZXqfb5+gC6795IWFVslEb6yaGo0jyeuJKoPLZU1BSMY1UQ2QzPY7DzIs454VQbAcQBjwhCNWK/VUuifRXoQctkyB+6zZQvWP9a8L4dUE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ugreen.com; spf=pass smtp.mailfrom=ugreen.com; dkim=pass (1024-bit key) header.d=ugreen.com header.i=@ugreen.com header.b=I3WAuBgp; arc=none smtp.client-ip=54.254.200.128 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ugreen.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ugreen.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ugreen.com header.i=@ugreen.com header.b="I3WAuBgp" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ugreen.com; s=pkvm2402; t=1785376699; bh=mz/vF1+MIOcbgrfsM9T1ETaqVlnKJAEoM6Ierr9UBVg=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=I3WAuBgphak9hUgaeKMyhtkbytDBA1vCsfg5JIPDtvqilGi+sa/TJhXVnUJdhldbU jiBAvSOrgri02LEwJV1TMKnxOVb7ymsrBoq8JYLO96ErUneYDsbLunZAz1b2DYx/b3 Hd9SOtxY14oxcc5Agjb3OaHi1ruxSNCgvKaJh7bo= X-QQ-mid: zesmtpgz9t1785376698t57f6e66a X-QQ-Originating-IP: TuP62bFv3KNDgy434RwiwTPgF3ZWAnB+uhMr4+4GS4M= Received: from debian12.. ( [14.153.244.156]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 30 Jul 2026 09:58:11 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 8791580703209932218 EX-QQ-RecipientCnt: 4 From: Warren Xiong To: Andrew Morton Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Warren Xiong Subject: [PATCH v2] tools/mm: prevent page_owner_sort from truncating input Date: Thu, 30 Jul 2026 09:58:09 +0800 Message-Id: <20260730015809.3819606-1-warren.xiong@ugreen.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260729053812.882137-1-warren.xiong@ugreen.com> References: <20260729053812.882137-1-warren.xiong@ugreen.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 X-QQ-SENDSIZE: 520 Feedback-ID: zesmtpgz:ugreen.com:qybglogicsvrgz:qybglogicsvrgz6b-0 X-QQ-XMAILINFO: OO2wLqYBHUeBqYBJX+FmDYsGhQm5jdjufCNlyEe9+ASipmMkSPabawEk KAqwFwnZZtja2/J75CS3YVEOgz+A2L/msdH+CBqPBT/Qn14hewICz4LcgxmFdx9VVHeEjoT nyjxkt/+hmiEwTCS5k1xSBOzh1k2rcwaU3nKss7QyMi+l4pfpwh7kGegOhDDOCfz/TdZ1TF M5LBJ5gLNULH16VrypA4LdCNwqOyHXVVCMlLnH7u3D10CFIjfnKDcur6nkLgMY4wnVCQzcC QrmP2wx2dFWcYZRM3XleFMD5u7l03+twhGdj5BKF43ym2/4wt/OyC6KVgsP5FtRae+JykO7 ahhsuuDs2shyMcwBcHBT9qs2M8h0oaXQImACsp/PZPpBJ2rFh+6Erioha0ZHwhlxy+RLMsD IuJCAJDjWj4cM9qRtOEP57/QdD0VuTkxBDT2knRn9RM2OmHr47mft+Uvsyzwz3tTNZJQKeF k5bdGIX1cT0AcidI6b2JY5Amk1ylbTR88Dr5oFNfhwJnygPOjUEYnUECoZsRteU6LFqsItY SWuN0Iy0FBtbVzPdlOt9yF029p4Clf8irlqqENnzs48vvBCSxQf+5NwJe+3tyN/vQ/6QSi2 WID+vkaJ4zG9qMvj2gayYj/Tb1g8OGuXrrRpQ7+AuI6ZgvVR0Cq1Qki3P/NkMlq5XaeTU0K XxgdiC6/6LMKRgIh2xOa3Rk+/ywvqwWhl9JWngs4tEOgRxC4LxH4dfTfzYtc68GDiFt0DgL 4631fQFv9fYC53/3MI/ZGXkRuEtmngIO4d1Uno4CvTb0rY9l4B5z5GmJFpltV+pHBUUHxkU yKHFe/tUWXU9f/VHpWL4r/OGYr0BCLvpi0UyW/IkElfgJmDaQplznNOvjNN+fPVGcGRHljz 2EMKjyRWLMT+CO3M78rbIrLI+0iFR2pgE2TKXYAv9Ra4JhNkDwfYweYFSBfq9P0tuom5U9G hAZ52fyh5Gtcw0h85DRVnWnhcZsgUvdRWm76zgFFS6DIl34Ia3YyTqqqefqOlM2CYX6K5BC Z+GCDsanB01oeGf21FdtapzsxLP7nTxHgLe0lE6duJvqxDYSRB X-QQ-XMRINFO: Mp0Kj//9VHAxzExpfF+O8yhSrljjwrznVg== X-QQ-RECHKSPAM: 0 page_owner_sort opens the output file with "w" before reading the input. If both paths refer to the same file, this truncates the input and the tool silently processes zero records before returning success. Delay opening the output file until all input records have been loaded into memory. This allows the tool to sort a file in place without truncating data before it has been consumed. Signed-off-by: Warren Xiong --- Changes in v2: - Delay opening the output file until after all input has been loaded, as suggested by Andrew Morton. - Allow in-place sorting instead of rejecting matching input and output files. Tested with distinct paths, the same path, a hard-link alias, and a symbolic-link alias. Link to v1: https://lore.kernel.org/r/20260729053812.882137-1-warren.xiong@ugreen.com tools/mm/page_owner_sort.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tools/mm/page_owner_sort.c b/tools/mm/page_owner_sort.c index 35d3d2549..22b3b500d 100644 --- a/tools/mm/page_owner_sort.c +++ b/tools/mm/page_owner_sort.c @@ -836,8 +836,7 @@ int main(int argc, char **argv) } fin = fopen(argv[optind], "r"); - fout = fopen(argv[optind + 1], "w"); - if (!fin || !fout) { + if (!fin) { usage(); perror("open: "); exit(1); @@ -874,6 +873,13 @@ int main(int argc, char **argv) goto out_free; } + fout = fopen(argv[optind + 1], "w"); + if (!fout) { + usage(); + perror("open: "); + exit(1); + } + printf("loaded %d\n", list_size); printf("sorting ....\n"); -- 2.39.5