From: Kefeng Wang <wangkefeng.wang@huawei.com>
To: Arnd Bergmann <arnd@arndb.de>, <linux-arch@vger.kernel.org>,
<linux-kernel@vger.kernel.org>
Cc: Kefeng Wang <wangkefeng.wang@huawei.com>,
Andrey Ryabinin <ryabinin.a.a@gmail.com>
Subject: [PATCH 6/9] sections: Add new is_kernel() and is_kernel_text()
Date: Sat, 26 Jun 2021 15:34:36 +0800 [thread overview]
Message-ID: <20210626073439.150586-7-wangkefeng.wang@huawei.com> (raw)
In-Reply-To: <20210626073439.150586-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 9d622416a59c..06066d89137d 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 814e1cc8eabf..60460df66e83 100644
--- a/include/linux/kallsyms.h
+++ b/include/linux/kallsyms.h
@@ -25,14 +25,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 8fff1825b22c..3971917c73c5 100644
--- a/mm/kasan/report.c
+++ b/mm/kasan/report.c
@@ -212,7 +212,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-06-26 7:27 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-26 7:34 [PATCH 0/9] sections: Unify kernel sections range check and use Kefeng Wang
2021-06-26 7:34 ` [PATCH 1/9] kallsyms: Remove arch specific text and data check Kefeng Wang
2021-06-26 7:34 ` [PATCH 2/9] kallsyms: Fix address-checks for kernel related range Kefeng Wang
2021-07-05 3:35 ` Sergey Senozhatsky
2021-07-07 12:43 ` Petr Mladek
2021-06-26 7:34 ` [PATCH 3/9] sections: Move and rename core_kernel_data() to is_kernel_data() Kefeng Wang
2021-06-29 1:05 ` Steven Rostedt
2021-06-29 6:36 ` Kefeng Wang
2021-06-26 7:34 ` [PATCH 4/9] sections: Move is_kernel_inittext() into sections.h Kefeng Wang
2021-06-26 7:34 ` [PATCH 5/9] kallsyms: Rename is_kernel() and is_kernel_text() Kefeng Wang
2021-06-26 7:34 ` Kefeng Wang [this message]
2021-06-26 7:34 ` [PATCH 7/9] s390: kprobes: Use is_kernel() helper Kefeng Wang
2021-06-28 10:02 ` Heiko Carstens
2021-06-28 11:09 ` Kefeng Wang
2021-06-26 7:34 ` [PATCH 8/9] powerpc/mm: Use is_kernel_text() and is_kernel_inittext() helper Kefeng Wang
2021-06-26 7:34 ` [PATCH 9/9] dma-debug: Use memory_intersects() directly Kefeng Wang
2021-06-28 6:11 ` Christoph Hellwig
2021-06-28 6:29 ` 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=20210626073439.150586-7-wangkefeng.wang@huawei.com \
--to=wangkefeng.wang@huawei.com \
--cc=arnd@arndb.de \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ryabinin.a.a@gmail.com \
/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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).