page alloc wrapper: Fix get_pfnblock_flags_mask prototype
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 9 May 2024 18:43:05 +0000 (14:43 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 9 May 2024 19:40:16 +0000 (15:40 -0400)
commit5b4650535a3bef3e27e2f14786db72120b1a1ea1
treebaadba70d54b4235f6d3c55c440557a661ba4210
parentbe561e3e547774b807f5b3200887f12adbf61551
page alloc wrapper: Fix get_pfnblock_flags_mask prototype

The canary __canary__get_pfnblock_flags_mask has never done its job of
detecting changes to the prototype of get_pfnblock_flags_mask because
it was actually calling the wrapper, because the wrapper/page_alloc.h
header maps get_pfnblock_flags_mask to wrapper_get_pfnblock_flags_mask.

Unfortunately, this wrapper is included by page_alloc.c only _after_ the
linux/pageblock-flags.h header is included, which means the
get_pfnblock_flags_mask prototype does _not_ have the wrapper prefix,
which prevents it from being useful for any kind of type validation.

This has been detected by a compiler warning stating that
wrapper_get_pfnblock_flags_mask() does not have a prior declaration.

Move the wrapper/page_alloc.h include _before_ including
pageblock-flags.h. This ensures the declaration has the wrapper_ prefix,
and therefore the compiler compares the declaration with the definition
of wrapper_get_pfnblock_flags_mask within page_alloc.c. The canary
function can be removed because it is redundant with this type check.

With this proper type check in place, we notice the following two
changes upstream:

commit 535b81e209219 ("mm/page_alloc.c: remove unnecessary end_bitidx for [set|get]_pfnblock_flags_mask()")
introduced in v5.9 removes the end_bitidx argument.

commit ca891f41c4c79 ("mm: constify get_pfnblock_flags_mask and get_pfnblock_migratetype")
introduced in v5.14 adds a const qualifier to the struct page pointer.

Adapt the code to match the evolution of this prototype.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I51b7871edfbff0f74ba1cf4d0ad988eb8d642b4e
src/wrapper/page_alloc.c
This page took 0.030377 seconds and 4 git commands to generate.