Message ID | 20190402030956.48166-1-trong@android.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v3] gcov: fix when CONFIG_MODULES is not set | expand |
On 4/1/19 8:09 PM, trong@android.com wrote: > From: Tri Vo <trong@android.com> > > Fixes: 8c3d220cb6b5 ("gcov: clang support") > > Cc: Greg Hackmann <ghackmann@android.com> > Cc: Peter Oberparleiter <oberpar@linux.ibm.com> > Cc: linux-mm@kvack.org > Cc: kbuild-all@01.org > Reported-by: Randy Dunlap <rdunlap@infradead.org> > Reported-by: kbuild test robot <lkp@intel.com> > Link: https://marc.info/?l=linux-mm&m=155384681109231&w=2 > Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> > Signed-off-by: Tri Vo <trong@android.com> Acked-by: Randy Dunlap <rdunlap@infradead.org> # build-tested Thanks. > --- > kernel/gcov/clang.c | 4 ++++ > kernel/gcov/gcc_3_4.c | 4 ++++ > kernel/gcov/gcc_4_7.c | 4 ++++ > 3 files changed, 12 insertions(+) > > diff --git a/kernel/gcov/clang.c b/kernel/gcov/clang.c > index 125c50397ba2..cfb9ce5e0fed 100644 > --- a/kernel/gcov/clang.c > +++ b/kernel/gcov/clang.c > @@ -223,7 +223,11 @@ void gcov_info_unlink(struct gcov_info *prev, struct gcov_info *info) > */ > bool gcov_info_within_module(struct gcov_info *info, struct module *mod) > { > +#ifdef CONFIG_MODULES > return within_module((unsigned long)info->filename, mod); > +#else > + return false; > +#endif > } > > /* Symbolic links to be created for each profiling data file. */ > diff --git a/kernel/gcov/gcc_3_4.c b/kernel/gcov/gcc_3_4.c > index 801ee4b0b969..8fc30f178351 100644 > --- a/kernel/gcov/gcc_3_4.c > +++ b/kernel/gcov/gcc_3_4.c > @@ -146,7 +146,11 @@ void gcov_info_unlink(struct gcov_info *prev, struct gcov_info *info) > */ > bool gcov_info_within_module(struct gcov_info *info, struct module *mod) > { > +#ifdef CONFIG_MODULES > return within_module((unsigned long)info, mod); > +#else > + return false; > +#endif > } > > /* Symbolic links to be created for each profiling data file. */ > diff --git a/kernel/gcov/gcc_4_7.c b/kernel/gcov/gcc_4_7.c > index ec37563674d6..0b6886d4a4dd 100644 > --- a/kernel/gcov/gcc_4_7.c > +++ b/kernel/gcov/gcc_4_7.c > @@ -159,7 +159,11 @@ void gcov_info_unlink(struct gcov_info *prev, struct gcov_info *info) > */ > bool gcov_info_within_module(struct gcov_info *info, struct module *mod) > { > +#ifdef CONFIG_MODULES > return within_module((unsigned long)info, mod); > +#else > + return false; > +#endif > } > > /* Symbolic links to be created for each profiling data file. */ >
On Tue, Apr 02, 2019 at 10:09:56AM +0700, trong@android.com wrote: > From: Tri Vo <trong@android.com> > > Fixes: 8c3d220cb6b5 ("gcov: clang support") I think this is the wrong fix. Why not simply: +++ b/include/linux/module.h @@ -709,6 +709,11 @@ static inline bool is_module_text_address(unsigned long addr) return false; } +static inline bool within_module(unsigned long addr, const struct module *mod) +{ + return false; +} + /* Get/put a kernel symbol (calls should be symmetric) */ #define symbol_get(x) ({ extern typeof(x) x __attribute__((weak)); &(x); }) #define symbol_put(x) do { } while (0)
On Wed, Apr 3, 2019 at 8:27 AM Matthew Wilcox <willy@infradead.org> wrote: > > On Tue, Apr 02, 2019 at 10:09:56AM +0700, trong@android.com wrote: > > From: Tri Vo <trong@android.com> > > > > Fixes: 8c3d220cb6b5 ("gcov: clang support") > > I think this is the wrong fix. Why not simply: I spoke with Tri quickly about this proposal and we agree it's a better fix. Andrew, would you mind dropping: https://ozlabs.org/~akpm/mmotm/broken-out/gcov-clang-support-fix.patch ? Matthew, would you please send that patch with a commit message? Or if you would prefer us to send with your suggested-by tag, we can do that, too. Whichever you prefer, please let me know. Thanks for the suggestion. > > +++ b/include/linux/module.h > @@ -709,6 +709,11 @@ static inline bool is_module_text_address(unsigned long addr) > return false; > } > > +static inline bool within_module(unsigned long addr, const struct module *mod) > +{ > + return false; > +} > + > /* Get/put a kernel symbol (calls should be symmetric) */ > #define symbol_get(x) ({ extern typeof(x) x __attribute__((weak)); &(x); }) > #define symbol_put(x) do { } while (0) >
diff --git a/kernel/gcov/clang.c b/kernel/gcov/clang.c index 125c50397ba2..cfb9ce5e0fed 100644 --- a/kernel/gcov/clang.c +++ b/kernel/gcov/clang.c @@ -223,7 +223,11 @@ void gcov_info_unlink(struct gcov_info *prev, struct gcov_info *info) */ bool gcov_info_within_module(struct gcov_info *info, struct module *mod) { +#ifdef CONFIG_MODULES return within_module((unsigned long)info->filename, mod); +#else + return false; +#endif } /* Symbolic links to be created for each profiling data file. */ diff --git a/kernel/gcov/gcc_3_4.c b/kernel/gcov/gcc_3_4.c index 801ee4b0b969..8fc30f178351 100644 --- a/kernel/gcov/gcc_3_4.c +++ b/kernel/gcov/gcc_3_4.c @@ -146,7 +146,11 @@ void gcov_info_unlink(struct gcov_info *prev, struct gcov_info *info) */ bool gcov_info_within_module(struct gcov_info *info, struct module *mod) { +#ifdef CONFIG_MODULES return within_module((unsigned long)info, mod); +#else + return false; +#endif } /* Symbolic links to be created for each profiling data file. */ diff --git a/kernel/gcov/gcc_4_7.c b/kernel/gcov/gcc_4_7.c index ec37563674d6..0b6886d4a4dd 100644 --- a/kernel/gcov/gcc_4_7.c +++ b/kernel/gcov/gcc_4_7.c @@ -159,7 +159,11 @@ void gcov_info_unlink(struct gcov_info *prev, struct gcov_info *info) */ bool gcov_info_within_module(struct gcov_info *info, struct module *mod) { +#ifdef CONFIG_MODULES return within_module((unsigned long)info, mod); +#else + return false; +#endif } /* Symbolic links to be created for each profiling data file. */