Messages in this thread | | | Subject | Re: [PATCH 2/4] kasan: MODULE_VADDR is not available on all archs | From | Andrey Ryabinin <> | Date | Thu, 3 Sep 2015 11:25:09 +0300 |
| |
On 09/03/2015 10:54 AM, Aneesh Kumar K.V wrote: > Use is_module_text_address instead >
It should be is_module_address().
We use kernel_or_module_addr() to determine whether this address belongs to some global variable or not. And variables are in .data section, .text is only code.
Something like is_module_data_address() would be more precise here. But since we don't have it, we can just use is_module_address(). Definitely not is_module_text_address().
> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> > --- > mm/kasan/report.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/mm/kasan/report.c b/mm/kasan/report.c > index 6c3f82b0240b..01d2efec8ea4 100644 > --- a/mm/kasan/report.c > +++ b/mm/kasan/report.c > @@ -22,6 +22,7 @@ > #include <linux/string.h> > #include <linux/types.h> > #include <linux/kasan.h> > +#include <linux/module.h> > > #include <asm/sections.h> > > @@ -85,9 +86,11 @@ static void print_error_description(struct kasan_access_info *info) > > static inline bool kernel_or_module_addr(const void *addr) > { > - return (addr >= (void *)_stext && addr < (void *)_end) > - || (addr >= (void *)MODULES_VADDR > - && addr < (void *)MODULES_END); > + if (addr >= (void *)_stext && addr < (void *)_end) > + return true; > + if (is_module_text_address((unsigned long)addr)) > + return true; > + return false; > } > > static inline bool init_task_stack_addr(const void *addr) >
| |