Message ID | 472c597cc8cc8f74f037acf971f7799fb381a647.1620829724.git.christophe.leroy@csgroup.eu (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [1/2] kprobes: Allow architectures to override optinsn page allocation | expand |
Related | show |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/apply_patch | success | Successfully applied on branch powerpc/merge (1fab3666d738e4af3a7450c44441310e4d7a7e53) |
snowpatch_ozlabs/checkpatch | warning | total: 0 errors, 1 warnings, 0 checks, 23 lines checked |
snowpatch_ozlabs/needsstable | success | Patch has no Fixes tags |
Hi Christophe, I love your patch! Perhaps something to improve: [auto build test WARNING on powerpc/next] [also build test WARNING on linus/master v5.13-rc1 next-20210512] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Christophe-Leroy/kprobes-Allow-architectures-to-override-optinsn-page-allocation/20210512-223121 base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next config: i386-randconfig-r012-20210512 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce (this is a W=1 build): # https://github.com/0day-ci/linux/commit/2a1f135a9ce3c4d86d3bdefed561aa17760f430f git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Christophe-Leroy/kprobes-Allow-architectures-to-override-optinsn-page-allocation/20210512-223121 git checkout 2a1f135a9ce3c4d86d3bdefed561aa17760f430f # save the attached .config to linux build tree make W=1 W=1 ARCH=i386 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All warnings (new ones prefixed by >>): >> kernel/kprobes.c:324:14: warning: no previous prototype for 'alloc_optinsn_page' [-Wmissing-prototypes] 324 | void __weak *alloc_optinsn_page(void) | ^~~~~~~~~~~~~~~~~~ >> kernel/kprobes.c:329:13: warning: no previous prototype for 'free_optinsn_page' [-Wmissing-prototypes] 329 | void __weak free_optinsn_page(void *page) | ^~~~~~~~~~~~~~~~~ vim +/alloc_optinsn_page +324 kernel/kprobes.c 322 323 #ifdef CONFIG_OPTPROBES > 324 void __weak *alloc_optinsn_page(void) 325 { 326 return alloc_insn_page(); 327 } 328 > 329 void __weak free_optinsn_page(void *page) 330 { 331 free_insn_page(page); 332 } 333 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
On Wed, 12 May 2021 14:29:26 +0000 (UTC) Christophe Leroy <christophe.leroy@csgroup.eu> wrote: > Some architectures like powerpc require a non standard > allocation of optinsn page, because module pages are > too far from the kernel for direct branches. > > Define weak alloc_optinsn_page() and free_optinsn_page(), that > fall back on alloc_insn_page() and free_insn_page() when not > overriden by the architecture. > Looks good to me :) Acked-by: Masami Hiramatsu <mhiramat@kernel.org> > Suggested-by: Masami Hiramatsu <mhiramat@kernel.org> > Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> > --- > kernel/kprobes.c | 14 ++++++++++++-- > 1 file changed, 12 insertions(+), 2 deletions(-) > > diff --git a/kernel/kprobes.c b/kernel/kprobes.c > index 745f08fdd7a6..8c0a6fdef771 100644 > --- a/kernel/kprobes.c > +++ b/kernel/kprobes.c > @@ -321,11 +321,21 @@ int kprobe_cache_get_kallsym(struct kprobe_insn_cache *c, unsigned int *symnum, > } > > #ifdef CONFIG_OPTPROBES > +void __weak *alloc_optinsn_page(void) > +{ > + return alloc_insn_page(); > +} > + > +void __weak free_optinsn_page(void *page) > +{ > + free_insn_page(page); > +} > + > /* For optimized_kprobe buffer */ > struct kprobe_insn_cache kprobe_optinsn_slots = { > .mutex = __MUTEX_INITIALIZER(kprobe_optinsn_slots.mutex), > - .alloc = alloc_insn_page, > - .free = free_insn_page, > + .alloc = alloc_optinsn_page, > + .free = free_optinsn_page, > .sym = KPROBE_OPTINSN_PAGE_SYM, > .pages = LIST_HEAD_INIT(kprobe_optinsn_slots.pages), > /* .insn_size is initialized later */ > -- > 2.25.0 >
On Thu, 13 May 2021 03:04:51 +0800 kernel test robot <lkp@intel.com> wrote: > Hi Christophe, > > I love your patch! Perhaps something to improve: > > [auto build test WARNING on powerpc/next] > [also build test WARNING on linus/master v5.13-rc1 next-20210512] > [If your patch is applied to the wrong git tree, kindly drop us a note. > And when submitting patch, we suggest to use '--base' as documented in > https://git-scm.com/docs/git-format-patch] > > url: https://github.com/0day-ci/linux/commits/Christophe-Leroy/kprobes-Allow-architectures-to-override-optinsn-page-allocation/20210512-223121 > base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next > config: i386-randconfig-r012-20210512 (attached as .config) > compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 > reproduce (this is a W=1 build): > # https://github.com/0day-ci/linux/commit/2a1f135a9ce3c4d86d3bdefed561aa17760f430f > git remote add linux-review https://github.com/0day-ci/linux > git fetch --no-tags linux-review Christophe-Leroy/kprobes-Allow-architectures-to-override-optinsn-page-allocation/20210512-223121 > git checkout 2a1f135a9ce3c4d86d3bdefed561aa17760f430f > # save the attached .config to linux build tree > make W=1 W=1 ARCH=i386 > > If you fix the issue, kindly add following tag as appropriate > Reported-by: kernel test robot <lkp@intel.com> > > All warnings (new ones prefixed by >>): > > >> kernel/kprobes.c:324:14: warning: no previous prototype for 'alloc_optinsn_page' [-Wmissing-prototypes] > 324 | void __weak *alloc_optinsn_page(void) > | ^~~~~~~~~~~~~~~~~~ > >> kernel/kprobes.c:329:13: warning: no previous prototype for 'free_optinsn_page' [-Wmissing-prototypes] > 329 | void __weak free_optinsn_page(void *page) > | ^~~~~~~~~~~~~~~~~ Ah, we need a prototype for those in include/linux/kprobes.h as same as alloc_insn_page() and free_insn_page(). Thank you,
diff --git a/kernel/kprobes.c b/kernel/kprobes.c index 745f08fdd7a6..8c0a6fdef771 100644 --- a/kernel/kprobes.c +++ b/kernel/kprobes.c @@ -321,11 +321,21 @@ int kprobe_cache_get_kallsym(struct kprobe_insn_cache *c, unsigned int *symnum, } #ifdef CONFIG_OPTPROBES +void __weak *alloc_optinsn_page(void) +{ + return alloc_insn_page(); +} + +void __weak free_optinsn_page(void *page) +{ + free_insn_page(page); +} + /* For optimized_kprobe buffer */ struct kprobe_insn_cache kprobe_optinsn_slots = { .mutex = __MUTEX_INITIALIZER(kprobe_optinsn_slots.mutex), - .alloc = alloc_insn_page, - .free = free_insn_page, + .alloc = alloc_optinsn_page, + .free = free_optinsn_page, .sym = KPROBE_OPTINSN_PAGE_SYM, .pages = LIST_HEAD_INIT(kprobe_optinsn_slots.pages), /* .insn_size is initialized later */
Some architectures like powerpc require a non standard allocation of optinsn page, because module pages are too far from the kernel for direct branches. Define weak alloc_optinsn_page() and free_optinsn_page(), that fall back on alloc_insn_page() and free_insn_page() when not overriden by the architecture. Suggested-by: Masami Hiramatsu <mhiramat@kernel.org> Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> --- kernel/kprobes.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-)