sections: move and rename core_kernel_data() to is_kernel_core_data()
Move core_kernel_data() into sections.h and rename it to is_kernel_core_data(), also make it return bool value, then update all the callers. Link: https://lkml.kernel.org/r/20210930071143.63410-4-wangkefeng.wang@huawei.com Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com> Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Ingo Molnar <mingo@redhat.com> Cc: "David S. Miller" <davem@davemloft.net> Cc: Alexander Potapenko <glider@google.com> Cc: Alexei Starovoitov <ast@kernel.org> Cc: Andrey Konovalov <andreyknvl@gmail.com> Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Borislav Petkov <bp@alien8.de> Cc: Christophe Leroy <christophe.leroy@csgroup.eu> Cc: Dmitry Vyukov <dvyukov@google.com> Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru> Cc: Matt Turner <mattst88@gmail.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Michal Simek <monstr@monstr.eu> Cc: Paul Mackerras <paulus@samba.org> Cc: Petr Mladek <pmladek@suse.com> Cc: Richard Henderson <rth@twiddle.net> Cc: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
e7d5c4b0eb
commit
a20deb3a34
|
@ -128,6 +128,22 @@ static inline bool init_section_intersects(void *virt, size_t size)
|
||||||
return memory_intersects(__init_begin, __init_end, virt, size);
|
return memory_intersects(__init_begin, __init_end, virt, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* is_kernel_core_data - checks if the pointer address is located in the
|
||||||
|
* .data section
|
||||||
|
*
|
||||||
|
* @addr: address to check
|
||||||
|
*
|
||||||
|
* Returns: true if the address is located in .data, false otherwise.
|
||||||
|
* Note: On some archs it may return true for core RODATA, and false
|
||||||
|
* for others. But will always be true for core RW data.
|
||||||
|
*/
|
||||||
|
static inline bool is_kernel_core_data(unsigned long addr)
|
||||||
|
{
|
||||||
|
return addr >= (unsigned long)_sdata &&
|
||||||
|
addr < (unsigned long)_edata;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* is_kernel_rodata - checks if the pointer address is located in the
|
* is_kernel_rodata - checks if the pointer address is located in the
|
||||||
* .rodata section
|
* .rodata section
|
||||||
|
|
|
@ -227,7 +227,6 @@ extern char *next_arg(char *args, char **param, char **val);
|
||||||
|
|
||||||
extern int core_kernel_text(unsigned long addr);
|
extern int core_kernel_text(unsigned long addr);
|
||||||
extern int init_kernel_text(unsigned long addr);
|
extern int init_kernel_text(unsigned long addr);
|
||||||
extern int core_kernel_data(unsigned long addr);
|
|
||||||
extern int __kernel_text_address(unsigned long addr);
|
extern int __kernel_text_address(unsigned long addr);
|
||||||
extern int kernel_text_address(unsigned long addr);
|
extern int kernel_text_address(unsigned long addr);
|
||||||
extern int func_ptr_is_kernel_text(void *ptr);
|
extern int func_ptr_is_kernel_text(void *ptr);
|
||||||
|
|
|
@ -82,24 +82,6 @@ int notrace core_kernel_text(unsigned long addr)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* core_kernel_data - tell if addr points to kernel data
|
|
||||||
* @addr: address to test
|
|
||||||
*
|
|
||||||
* Returns true if @addr passed in is from the core kernel data
|
|
||||||
* section.
|
|
||||||
*
|
|
||||||
* Note: On some archs it may return true for core RODATA, and false
|
|
||||||
* for others. But will always be true for core RW data.
|
|
||||||
*/
|
|
||||||
int core_kernel_data(unsigned long addr)
|
|
||||||
{
|
|
||||||
if (addr >= (unsigned long)_sdata &&
|
|
||||||
addr < (unsigned long)_edata)
|
|
||||||
return 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int __kernel_text_address(unsigned long addr)
|
int __kernel_text_address(unsigned long addr)
|
||||||
{
|
{
|
||||||
if (kernel_text_address(addr))
|
if (kernel_text_address(addr))
|
||||||
|
|
|
@ -323,7 +323,7 @@ int __register_ftrace_function(struct ftrace_ops *ops)
|
||||||
if (!ftrace_enabled && (ops->flags & FTRACE_OPS_FL_PERMANENT))
|
if (!ftrace_enabled && (ops->flags & FTRACE_OPS_FL_PERMANENT))
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
|
|
||||||
if (!core_kernel_data((unsigned long)ops))
|
if (!is_kernel_core_data((unsigned long)ops))
|
||||||
ops->flags |= FTRACE_OPS_FL_DYNAMIC;
|
ops->flags |= FTRACE_OPS_FL_DYNAMIC;
|
||||||
|
|
||||||
add_ftrace_ops(&ftrace_ops_list, ops);
|
add_ftrace_ops(&ftrace_ops_list, ops);
|
||||||
|
|
|
@ -144,7 +144,7 @@ static void ensure_safe_net_sysctl(struct net *net, const char *path,
|
||||||
addr = (unsigned long)ent->data;
|
addr = (unsigned long)ent->data;
|
||||||
if (is_module_address(addr))
|
if (is_module_address(addr))
|
||||||
where = "module";
|
where = "module";
|
||||||
else if (core_kernel_data(addr))
|
else if (is_kernel_core_data(addr))
|
||||||
where = "kernel";
|
where = "kernel";
|
||||||
else
|
else
|
||||||
continue;
|
continue;
|
||||||
|
|
Loading…
Reference in New Issue