summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@kernel.org>2023-05-15 19:00:10 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-09-23 11:01:05 +0200
commit3f72fdb20f6d1103ded73b1594ad9c26a6026a24 (patch)
tree986729e61d6147db835e053ec0e79e2107d985f5 /kernel
parent55887adc76e19aec9763186e2c1d0a3481d20e96 (diff)
downloadlinux-3f72fdb20f6d1103ded73b1594ad9c26a6026a24.tar.gz
linux-3f72fdb20f6d1103ded73b1594ad9c26a6026a24.tar.bz2
linux-3f72fdb20f6d1103ded73b1594ad9c26a6026a24.zip
scftorture: Forgive memory-allocation failure if KASAN
[ Upstream commit 013608cd0812bdb21fc26d39ed8fdd2fc76e8b9b ] Kernels built with CONFIG_KASAN=y quarantine newly freed memory in order to better detect use-after-free errors. However, this can exhaust memory more quickly in allocator-heavy tests, which can result in spurious scftorture failure. This commit therefore forgives memory-allocation failure in kernels built with CONFIG_KASAN=y, but continues counting the errors for use in detailed test-result analyses. Signed-off-by: Paul E. McKenney <paulmck@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/scftorture.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/scftorture.c b/kernel/scftorture.c
index 060ee0b1569a..be86207a2ab6 100644
--- a/kernel/scftorture.c
+++ b/kernel/scftorture.c
@@ -158,7 +158,8 @@ static void scf_torture_stats_print(void)
scfs.n_all_wait += scf_stats_p[i].n_all_wait;
}
if (atomic_read(&n_errs) || atomic_read(&n_mb_in_errs) ||
- atomic_read(&n_mb_out_errs) || atomic_read(&n_alloc_errs))
+ atomic_read(&n_mb_out_errs) ||
+ (!IS_ENABLED(CONFIG_KASAN) && atomic_read(&n_alloc_errs)))
bangstr = "!!! ";
pr_alert("%s %sscf_invoked_count %s: %lld single: %lld/%lld single_ofl: %lld/%lld many: %lld/%lld all: %lld/%lld ",
SCFTORT_FLAG, bangstr, isdone ? "VER" : "ver", invoked_count,
@@ -306,7 +307,8 @@ static void scftorture_invoke_one(struct scf_statistics *scfp, struct torture_ra
preempt_disable();
if (scfsp->scfs_prim == SCF_PRIM_SINGLE || scfsp->scfs_wait) {
scfcp = kmalloc(sizeof(*scfcp), GFP_ATOMIC);
- if (WARN_ON_ONCE(!scfcp)) {
+ if (!scfcp) {
+ WARN_ON_ONCE(!IS_ENABLED(CONFIG_KASAN));
atomic_inc(&n_alloc_errs);
} else {
scfcp->scfc_cpu = -1;