Messages in this thread | | | From | Marco Elver <> | Date | Wed, 28 Dec 2022 22:12:01 +0100 | Subject | Re: [PATCH] kcsan: test: don't put the expect array on the stack |
| |
On Fri, 23 Dec 2022 at 08:42, Max Filippov <jcmvbkbc@gmail.com> wrote: > > Size of the 'expect' array in the __report_matches is 1536 bytes, which > is exactly the default frame size warning limit of the xtensa > architecture. > As a result allmodconfig xtensa kernel builds with the gcc that does not > support the compiler plugins (which otherwise would push the said > warning limit to 2K) fail with the following message: > > kernel/kcsan/kcsan_test.c:257:1: error: the frame size of 1680 bytes > is larger than 1536 bytes > > Fix it by dynamically alocating the 'expect' array. > > Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> > --- > kernel/kcsan/kcsan_test.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/kernel/kcsan/kcsan_test.c b/kernel/kcsan/kcsan_test.c > index dcec1b743c69..af62ec51bd5f 100644 > --- a/kernel/kcsan/kcsan_test.c > +++ b/kernel/kcsan/kcsan_test.c > @@ -159,7 +159,7 @@ static bool __report_matches(const struct expect_report *r) > const bool is_assert = (r->access[0].type | r->access[1].type) & KCSAN_ACCESS_ASSERT; > bool ret = false; > unsigned long flags; > - typeof(observed.lines) expect; > + typeof(*observed.lines) *expect; > const char *end; > char *cur; > int i; > @@ -168,6 +168,10 @@ static bool __report_matches(const struct expect_report *r) > if (!report_available()) > return false; > > + expect = kmalloc(sizeof(observed.lines), GFP_KERNEL); > + if (!expect)
WARN_ON(), because this may either spuriously fail or pass a test case, and we'd want to know about that.
Thanks, -- Marco
| |