On Mon, Jul 05, 2021 at 12:37PM +0100, Mel Gorman wrote: > On Mon, Jul 05, 2021 at 12:38:06PM +0200, Marco Elver wrote: > > This reverts commit f7173090033c70886d925995e9dfdfb76dbb2441. > > > > Commit 76cd61739fd1 ("mm/error_inject: Fix allow_error_inject function > > signatures") explicitly made should_fail_alloc_page() non-static, due to > > worries of remaining compiler optimizations in the absence of function > > side-effects while being noinline. > > > > Furthermore, kernel/bpf/verifier.c pushes should_fail_alloc_page onto > > the btf_non_sleepable_error_inject BTF IDs set, which when enabling > > CONFIG_DEBUG_INFO_BTF results in an error at the BTFIDS stage: > > > > FAILED unresolved symbol should_fail_alloc_page > > > > To avoid the W=1 warning, add a function declaration right above the > > function itself, with a comment it is required in a BTF IDs set. > > > > Fixes: f7173090033c ("mm/page_alloc: make should_fail_alloc_page() static") > > Cc: Mel Gorman <mgorman@xxxxxxxxxxxxxxxxxxx> > > Cc: Alexei Starovoitov <ast@xxxxxxxxxx> > > Signed-off-by: Marco Elver <elver@xxxxxxxxxx> > > Acked-by: Mel Gorman <mgorman@xxxxxxxxxxxxxxxxxxx> > > Out of curiousity though, why does block/blk-core.c not require > something similar for should_fail_bio? It seems kernel/bpf/verifier.c doesn't refer to it in an BTF IDs set. Looks like should_fail_alloc_page is special for BPF purposes. I'm not a BPF maintainer, so hopefully someone can explain why should_fail_alloc_page is special for BPF. Thanks, -- Marco