mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 02:50:49 +09:00
selftests/damon: test debugfs file reads/writes with huge count
commitb4a002889dupstream. DAMON debugfs interface users were able to trigger warning by writing some files with arbitrarily large 'count' parameter. The issue is fixed with commitdb7a347b26("mm/damon/dbgfs: use '__GFP_NOWARN' for user-specified size buffer allocation"). This commit adds a test case for the issue in DAMON selftests to avoid future regressions. Link: https://lkml.kernel.org/r/20211201150440.1088-11-sj@kernel.org Signed-off-by: SeongJae Park <sj@kernel.org> Cc: Brendan Higgins <brendanhiggins@google.com> Cc: Shuah Khan <shuah@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
a272f990cb
commit
581b097951
2
tools/testing/selftests/damon/.gitignore
vendored
Normal file
2
tools/testing/selftests/damon/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
huge_count_read_write
|
||||
@@ -1,6 +1,8 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Makefile for damon selftests
|
||||
|
||||
TEST_GEN_FILES += huge_count_read_write
|
||||
|
||||
TEST_FILES = _chk_dependency.sh
|
||||
TEST_PROGS = debugfs_attrs.sh
|
||||
|
||||
|
||||
@@ -72,4 +72,22 @@ test_write_succ "$file" "" "$orig_content" "empty input"
|
||||
test_content "$file" "$orig_content" "" "empty input written"
|
||||
echo "$orig_content" > "$file"
|
||||
|
||||
# Test huge count read write
|
||||
# ==========================
|
||||
|
||||
dmesg -C
|
||||
|
||||
for file in "$DBGFS/"*
|
||||
do
|
||||
./huge_count_read_write "$file"
|
||||
done
|
||||
|
||||
if dmesg | grep -q WARNING
|
||||
then
|
||||
dmesg
|
||||
exit 1
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "PASS"
|
||||
|
||||
39
tools/testing/selftests/damon/huge_count_read_write.c
Normal file
39
tools/testing/selftests/damon/huge_count_read_write.c
Normal file
@@ -0,0 +1,39 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Author: SeongJae Park <sj@kernel.org>
|
||||
*/
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
|
||||
void write_read_with_huge_count(char *file)
|
||||
{
|
||||
int filedesc = open(file, O_RDWR);
|
||||
char buf[25];
|
||||
int ret;
|
||||
|
||||
printf("%s %s\n", __func__, file);
|
||||
if (filedesc < 0) {
|
||||
fprintf(stderr, "failed opening %s\n", file);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
write(filedesc, "", 0xfffffffful);
|
||||
perror("after write: ");
|
||||
ret = read(filedesc, buf, 0xfffffffful);
|
||||
perror("after read: ");
|
||||
close(filedesc);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
if (argc != 2) {
|
||||
fprintf(stderr, "Usage: %s <file>\n", argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
write_read_with_huge_count(argv[1]);
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user