Re: next: WARNING: CPU: 0 PID: 1200 at mm/page_alloc.c:4744 __alloc_pages+0x2e8/0x3a0

From: Geert Uytterhoeven
Date: Sun Jun 25 2023 - 11:34:22 EST


Hi Chuck,

On Sun, Jun 25, 2023 at 5:17 PM Chuck Lever III <chuck.lever@xxxxxxxxxx> wrote:
> > On Jun 25, 2023, at 4:46 AM, Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote:
> > On Sat, May 13, 2023 at 10:54 AM Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote:
> >> On Fri, May 12, 2023 at 01:56:30PM +0000, Chuck Lever III wrote:
> >>>> On May 12, 2023, at 6:32 AM, Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote:
> >>>> I'm pretty sure Chuck Lever did this intentionally, but he's not on the
> >>>> CC list. Let's add him.
> >>>>
> >>>> regards,
> >>>> dan carpenter
> >>>>
> >>>> On Fri, May 12, 2023 at 06:15:04PM +0530, Naresh Kamboju wrote:
> >>>>> Following kernel warning has been noticed on qemu-arm64 while running kunit
> >>>>> tests while booting Linux 6.4.0-rc1-next-20230512 and It was started from
> >>>>> 6.3.0-rc7-next-20230420.
> >>>>>
> >>>>> Reported-by: Linux Kernel Functional Testing <lkft@xxxxxxxxxx>
> >>>>>
> >>>>> This is always reproducible on qemu-arm64, qemu-arm, qemu-x86 and qemu-i386.
> >>>>> Is this expected warning as a part of kunit tests ?
> >>>
> >>> Dan's correct, this Kunit test is supposed to check the
> >>> behavior of the API when a too-large privsize is specified.
> >>>
> >>> I'm not sure how to make this work without the superfluous
> >>> warning. Would adding GFP_NOWARN to the allocation help?
> >>
> >> That would silence the splat, yes.
> >
> > But introduce a build failure, as GFP_NOWARN does not exist.
>
> This is the fix that went in:
>
> commit b21c7ba6d9a5532add3827a3b49f49cbc0cb9779
> Author: Chuck Lever <chuck.lever@xxxxxxxxxx>
> AuthorDate: Fri May 19 13:12:50 2023 -0400
> Commit: Jakub Kicinski <kuba@xxxxxxxxxx>
> CommitDate: Mon May 22 19:24:52 2023 -0700
>
> net/handshake: Squelch allocation warning during Kunit test
>
> The "handshake_req_alloc excessive privsize" kunit test is intended
> to check what happens when the maximum privsize is exceeded. The
> WARN_ON_ONCE_GFP at mm/page_alloc.c:4744 can be disabled safely for
> this test.
>
> Reported-by: Linux Kernel Functional Testing <lkft@xxxxxxxxxx>
> Fixes: 88232ec1ec5e ("net/handshake: Add Kunit tests for the handshake consumer API")
> Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx>
> Link: https://lore.kernel.org/r/168451636052.47152.9600443326570457947.stgit@xxxxxxxxxxxxxxxxxxxxxxx
> Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx>
>
> diff --git a/net/handshake/handshake-test.c b/net/handshake/handshake-test.c
> index e6adc5dec11a..6193e46ee6d9 100644
> --- a/net/handshake/handshake-test.c
> +++ b/net/handshake/handshake-test.c
> @@ -102,7 +102,7 @@ struct handshake_req_alloc_test_param handshake_req_alloc_params[] = {
> {
> .desc = "handshake_req_alloc excessive privsize",
> .proto = &handshake_req_alloc_proto_6,
> - .gfp = GFP_KERNEL,
> + .gfp = GFP_KERNEL | __GFP_NOWARN,
> .expect_success = false,
> },
> {
>
> Is there a platform where __GPF_NOWARN is not defined?

"git grep" says all of them, as you misspelled it in your question ;-)

"__GFP_NOWARN" is defined in include/linux/gfp_types.h,
so it should be available everywhere.

Note the use of "__GFP_NOWARN" instead of "GFP_NOWARN".
Once in a while, people do submit patches using "GFP_NOWARN"...

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds