From: Kefeng Wang <wangkefeng.wang@huawei.com> To: <arnd@arndb.de>, <linux-arch@vger.kernel.org>, <linux-kernel@vger.kernel.org>, <linuxppc-dev@lists.ozlabs.org>, <rostedt@goodmis.org>, <mingo@redhat.com>, <davem@davemloft.net>, <ast@kernel.org>, <ryabinin.a.a@gmail.com> Cc: <mpe@ellerman.id.au>, <benh@kernel.crashing.org>, <paulus@samba.org>, Kefeng Wang <wangkefeng.wang@huawei.com> Subject: [PATCH v2 6/7] sections: Add new is_kernel() and is_kernel_text() Date: Wed, 28 Jul 2021 16:13:19 +0800 [thread overview] Message-ID: <20210728081320.20394-7-wangkefeng.wang@huawei.com> (raw) In-Reply-To: <20210728081320.20394-1-wangkefeng.wang@huawei.com> The new is_kernel() check the kernel address ranges, and the new is_kernel_text() check the kernel text section ranges. Then use them to make some code clear. Cc: Arnd Bergmann <arnd@arndb.de> Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com> Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com> --- include/asm-generic/sections.h | 27 +++++++++++++++++++++++++++ include/linux/kallsyms.h | 4 ++-- kernel/extable.c | 3 +-- mm/kasan/report.c | 2 +- 4 files changed, 31 insertions(+), 5 deletions(-) diff --git a/include/asm-generic/sections.h b/include/asm-generic/sections.h index 4f2f32aa2b7a..6b143637ab88 100644 --- a/include/asm-generic/sections.h +++ b/include/asm-generic/sections.h @@ -170,6 +170,20 @@ static inline bool is_kernel_rodata(unsigned long addr) addr < (unsigned long)__end_rodata; } +/** + * is_kernel_text - checks if the pointer address is located in the + * .text section + * + * @addr: address to check + * + * Returns: true if the address is located in .text, false otherwise. + */ +static inline bool is_kernel_text(unsigned long addr) +{ + return addr >= (unsigned long)_stext && + addr < (unsigned long)_etext; +} + /** * is_kernel_inittext - checks if the pointer address is located in the * .init.text section @@ -184,4 +198,17 @@ static inline bool is_kernel_inittext(unsigned long addr) addr < (unsigned long)_einittext; } +/** + * is_kernel - checks if the pointer address is located in the kernel range + * + * @addr: address to check + * + * Returns: true if the address is located in kernel range, false otherwise. + */ +static inline bool is_kernel(unsigned long addr) +{ + return addr >= (unsigned long)_stext && + addr < (unsigned long)_end; +} + #endif /* _ASM_GENERIC_SECTIONS_H_ */ diff --git a/include/linux/kallsyms.h b/include/linux/kallsyms.h index 4f501ac9c2c2..897d5720884f 100644 --- a/include/linux/kallsyms.h +++ b/include/linux/kallsyms.h @@ -26,14 +26,14 @@ struct module; static inline int is_kernel_text_or_gate_area(unsigned long addr) { - if ((addr >= (unsigned long)_stext && addr < (unsigned long)_etext)) + if (is_kernel_text(addr)) return 1; return in_gate_area_no_mm(addr); } static inline int is_kernel_or_gate_area(unsigned long addr) { - if (addr >= (unsigned long)_stext && addr < (unsigned long)_end) + if (is_kernel(addr)) return 1; return in_gate_area_no_mm(addr); } diff --git a/kernel/extable.c b/kernel/extable.c index 98ca627ac5ef..0ba383d850ff 100644 --- a/kernel/extable.c +++ b/kernel/extable.c @@ -64,8 +64,7 @@ const struct exception_table_entry *search_exception_tables(unsigned long addr) int notrace core_kernel_text(unsigned long addr) { - if (addr >= (unsigned long)_stext && - addr < (unsigned long)_etext) + if (is_kernel_text(addr)) return 1; if (system_state < SYSTEM_RUNNING && diff --git a/mm/kasan/report.c b/mm/kasan/report.c index 884a950c7026..88f5b0c058b7 100644 --- a/mm/kasan/report.c +++ b/mm/kasan/report.c @@ -235,7 +235,7 @@ static void describe_object(struct kmem_cache *cache, void *object, static inline bool kernel_or_module_addr(const void *addr) { - if (addr >= (void *)_stext && addr < (void *)_end) + if (is_kernel((unsigned long)addr)) return true; if (is_module_address((unsigned long)addr)) return true; -- 2.26.2
next prev parent reply other threads:[~2021-07-28 8:07 UTC|newest] Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-07-28 8:13 [PATCH v2 0/7] sections: Unify kernel sections range check and use Kefeng Wang 2021-07-28 8:13 ` [PATCH v2 1/7] kallsyms: Remove arch specific text and data check Kefeng Wang 2021-07-28 8:13 ` [PATCH v2 2/7] kallsyms: Fix address-checks for kernel related range Kefeng Wang 2021-07-28 14:46 ` Steven Rostedt 2021-07-29 2:03 ` Kefeng Wang 2021-07-28 8:13 ` [PATCH v2 3/7] sections: Move and rename core_kernel_data() to is_kernel_core_data() Kefeng Wang 2021-07-28 8:13 ` [PATCH v2 4/7] sections: Move is_kernel_inittext() into sections.h Kefeng Wang 2021-07-28 8:13 ` [PATCH v2 5/7] kallsyms: Rename is_kernel() and is_kernel_text() Kefeng Wang 2021-07-28 15:28 ` Steven Rostedt 2021-07-29 2:00 ` Kefeng Wang 2021-07-29 4:05 ` Steven Rostedt 2021-07-29 11:06 ` Kefeng Wang 2021-07-28 8:13 ` Kefeng Wang [this message] 2021-07-28 15:32 ` [PATCH v2 6/7] sections: Add new " Steven Rostedt 2021-07-29 2:02 ` Kefeng Wang 2021-07-28 8:13 ` [PATCH v2 7/7] powerpc/mm: Use is_kernel_text() and is_kernel_inittext() helper Kefeng Wang
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210728081320.20394-7-wangkefeng.wang@huawei.com \ --to=wangkefeng.wang@huawei.com \ --cc=arnd@arndb.de \ --cc=ast@kernel.org \ --cc=benh@kernel.crashing.org \ --cc=davem@davemloft.net \ --cc=linux-arch@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linuxppc-dev@lists.ozlabs.org \ --cc=mingo@redhat.com \ --cc=mpe@ellerman.id.au \ --cc=paulus@samba.org \ --cc=rostedt@goodmis.org \ --cc=ryabinin.a.a@gmail.com \ --subject='Re: [PATCH v2 6/7] sections: Add new is_kernel() and is_kernel_text()' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).