kernel_samsung_a53x/tools/testing/selftests
Dev Jain 07ebdd0939 selftests/mm: compaction_test: fix bogus test success on Aarch64
[ Upstream commit d4202e66a4b1fe6968f17f9f09bbc30d08f028a1 ]

Patch series "Fixes for compaction_test", v2.

The compaction_test memory selftest introduces fragmentation in memory
and then tries to allocate as many hugepages as possible. This series
addresses some problems.

On Aarch64, if nr_hugepages == 0, then the test trivially succeeds since
compaction_index becomes 0, which is less than 3, due to no division by
zero exception being raised. We fix that by checking for division by
zero.

Secondly, correctly set the number of hugepages to zero before trying
to set a large number of them.

Now, consider a situation in which, at the start of the test, a non-zero
number of hugepages have been already set (while running the entire
selftests/mm suite, or manually by the admin). The test operates on 80%
of memory to avoid OOM-killer invocation, and because some memory is
already blocked by hugepages, it would increase the chance of OOM-killing.
Also, since mem_free used in check_compaction() is the value before we
set nr_hugepages to zero, the chance that the compaction_index will
be small is very high if the preset nr_hugepages was high, leading to a
bogus test success.

This patch (of 3):

Currently, if at runtime we are not able to allocate a huge page, the test
will trivially pass on Aarch64 due to no exception being raised on
division by zero while computing compaction_index.  Fix that by checking
for nr_hugepages == 0.  Anyways, in general, avoid a division by zero by
exiting the program beforehand.  While at it, fix a typo, and handle the
case where the number of hugepages may overflow an integer.

Link: https://lkml.kernel.org/r/20240521074358.675031-1-dev.jain@arm.com
Link: https://lkml.kernel.org/r/20240521074358.675031-2-dev.jain@arm.com
Fixes: bd67d5c15cc1 ("Test compaction of mlocked memory")
Signed-off-by: Dev Jain <dev.jain@arm.com>
Cc: Anshuman Khandual <anshuman.khandual@arm.com>
Cc: Shuah Khan <shuah@kernel.org>
Cc: Sri Jayaramappa <sjayaram@akamai.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-11-19 14:19:02 +01:00
..
android Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
arm64 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
bpf selftests/bpf: Fix umount cgroup2 error in test_sockmap 2024-11-19 12:26:54 +01:00
breakpoints Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
capabilities Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cgroup Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clone3 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
core Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cpu-hotplug Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cpufreq Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
damon Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dmabuf-heaps Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
drivers selftests: netdevsim: fix the udp_tunnel_nic test 2024-11-18 12:13:01 +01:00
efivarfs selftests/efivarfs: create-read: fix a resource leak 2024-11-18 11:43:13 +01:00
exec Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
filesystems selftests/binderfs: use the Makefile's rules, not Make's implicit rules 2024-11-19 12:26:56 +01:00
firmware Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
fpu Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ftrace tracing/selftests: Fix kprobe event name test for .isra. functions 2024-11-19 14:19:00 +01:00
futex Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gpio Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ia64 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
intel_pstate Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ipc Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ir Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kcmp selftests/kcmp: remove unused open mode 2024-11-19 12:26:59 +01:00
kexec Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kmod Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kselftest Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kvm Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
lib Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
livepatch Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
lkdtm Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
locking Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
media_tests Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
membarrier Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
memfd Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
memory-hotplug Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mincore Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mount Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mqueue selftests/mqueue: Set timeout to 180 seconds 2024-11-19 09:22:15 +01:00
net selftests: reuseaddr_conflict: add missing new line at the end of the output 2024-11-19 09:22:47 +01:00
netfilter Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
nsfs Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ntb Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
openat2 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pid_namespace Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pidfd selftests/pidfd: Fix ksft print formats 2024-11-18 11:43:02 +01:00
powerpc selftests/powerpc: Fix error handling in FPU/VMX preemption tests 2024-11-18 12:12:20 +01:00
prctl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
proc Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pstore Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ptp Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ptrace Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
rcutorture Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
resctrl selftests/resctrl: Ensure the benchmark commands fits to its array 2024-11-18 11:43:02 +01:00
rseq Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
rtc Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
safesetid Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
seccomp Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sigaltstack Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
size Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sparc64 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
splice Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
static_keys Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sync Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sysctl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tc-testing Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
timens Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
timers selftests: timers: Fix valid-adjtimex signed left-shift undefined behavior 2024-11-19 11:32:44 +01:00
tmpfs Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tpm2 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
uevent Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
user Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vDSO Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vm selftests/mm: compaction_test: fix bogus test success on Aarch64 2024-11-19 14:19:02 +01:00
watchdog Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
wireguard Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
x86 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
zram Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gen_kselftest_tar.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kselftest.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kselftest_deps.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kselftest_harness.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kselftest_install.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kselftest_module.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
lib.mk Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
run_kselftest.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00