within_module_core() and within_module_init() are doing the exact same test, one on core_layout, the second on init_layout. In preparation of increasing the complexity of that verification, refactor it into a single function called within_module_layout(). Signed-off-by: Christophe Leroy <christophe.leroy@xxxxxxxxxx> --- include/linux/module.h | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/include/linux/module.h b/include/linux/module.h index c9f1200b2312..33b4db8f5ca5 100644 --- a/include/linux/module.h +++ b/include/linux/module.h @@ -565,18 +565,27 @@ bool __is_module_percpu_address(unsigned long addr, unsigned long *can_addr); bool is_module_percpu_address(unsigned long addr); bool is_module_text_address(unsigned long addr); +static inline bool within_range(unsigned long addr, void *base, unsigned int size) +{ + return addr >= (unsigned long)base && addr < (unsigned long)base + size; +} + +static inline bool within_module_layout(unsigned long addr, + const struct module_layout *layout) +{ + return within_range(addr, layout->base, layout->size); +} + static inline bool within_module_core(unsigned long addr, const struct module *mod) { - return (unsigned long)mod->core_layout.base <= addr && - addr < (unsigned long)mod->core_layout.base + mod->core_layout.size; + return within_module_layout(addr, &mod->core_layout); } static inline bool within_module_init(unsigned long addr, const struct module *mod) { - return (unsigned long)mod->init_layout.base <= addr && - addr < (unsigned long)mod->init_layout.base + mod->init_layout.size; + return within_module_layout(addr, &mod->init_layout); } static inline bool within_module(unsigned long addr, const struct module *mod) -- 2.33.1