page alloc wrapper: Fix get_pfnblock_flags_mask prototype stable-2.12
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:58:57 +0000 (15:58 -0400)
commit7a03a49a221efa744ef2de0562dcd24cde911603
tree9060efdc355c017fd16db80325cf1a80af9ac89e
parenta208676d5d136b1d52cc598f85374750e368587c
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
wrapper/page_alloc.c
This page took 0.026264 seconds and 4 git commands to generate.