tools/mm: prevent page_owner_sort from truncating input

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.

Link: https://lore.kernel.org/20260730015809.3819606-1-warren.xiong@ugreen.com
Signed-off-by: Warren Xiong <warren.xiong@ugreen.com>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Vishal Moola <vishal.moola@gmail.com>
Cc: Ye Liu <ye.liu@linux.dev>
Cc: Zhen Ni <zhen.ni@easystack.cn>
Cc: Zi Yan <ziy@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
Warren Xiong 2026-07-30 09:58:09 +08:00 committed by Andrew Morton
parent aa27e55f24
commit 825cef942c

View File

@ -788,8 +788,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);
@ -826,6 +825,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");