Re: [RESEND PATCH v6 2/4] mm: move is_kernel_rodata() to asm-generic/sections.h

Greg Kroah-Hartman
2018-10-16T10:53:15Z

On Sun, Oct 14, 2018 at 05:20:08PM +0200, Bartosz Golaszewski wrote:
> Export this routine so that we can use it later in devm_kstrdup_const()
> and devm_kfree().
>
> Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
> Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> Acked-by: Mike Rapoport <rppt@linux.vnet.ibm.com>
> Acked-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
> include/asm-generic/sections.h | 14 ++++++++++++++
> mm/util.c | 7 -------
> 2 files changed, 14 insertions(+), 7 deletions(-)
>
> diff --git a/include/asm-generic/sections.h b/include/asm-generic/sections.h
> index 849cd8eb5ca0..d79abca81a52 100644
> --- a/include/asm-generic/sections.h
> +++ b/include/asm-generic/sections.h
> @@ -141,4 +141,18 @@ static inline bool init_section_intersects(void *virt, size_t size)
> return memory_intersects(__init_begin, __init_end, virt, size);
> }
>
> +/**
> + * is_kernel_rodata - checks if the pointer address is located in the
> + * .rodata section
> + *
> + * @addr: address to check
> + *
> + * Returns: true if the address is located in .rodata, false otherwise.
> + */
> +static inline bool is_kernel_rodata(unsigned long addr)
> +{
> + return addr >= (unsigned long)__start_rodata &&
> + addr < (unsigned long)__end_rodata;

Those symbols are not exported, are you sure this is going to work for a
kernel module that ends up using this function?

I'll take it, but be aware of the future complications that might happen
here...

thanks,

greg k-h