linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Anshuman Khandual <anshuman.khandual@arm.com>
To: Andrew Morton <akpm@linux-foundation.org>,
	kbuild test robot <lkp@intel.com>
Cc: kbuild-all@01.org, Dave Hansen <dave.hansen@linux.intel.com>,
	Linux Memory Management List <linux-mm@kvack.org>
Subject: Re: [linux-next:master 6470/6646] include/linux/kprobes.h:477:9: error: implicit declaration of function 'kprobe_fault_handler'; did you mean 'kprobe_page_fault'?
Date: Thu, 20 Jun 2019 14:30:25 +0530	[thread overview]
Message-ID: <702ba0e8-0ef5-c5df-a350-b928ac984d58@arm.com> (raw)
In-Reply-To: <20190617190734.e044c1ba48d69a3cb3e01f59@linux-foundation.org>

Hello Andrew,

On 06/18/2019 07:37 AM, Andrew Morton wrote:
> On Sat, 15 Jun 2019 10:55:07 +0800 kbuild test robot <lkp@intel.com> wrote:
> 
>> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
>> head:   f4788d37bc84e27ac9370be252afb451bf6ef718
>> commit: 4dd635bce90e8b6ed31c08cd654deca29f4d9d66 [6470/6646] mm, kprobes: generalize and rename notify_page_fault() as kprobe_page_fault()
>> config: mips-allmodconfig (attached as .config)
>> compiler: mips-linux-gcc (GCC) 7.4.0
>> reproduce:
>>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>>         chmod +x ~/bin/make.cross
>>         git checkout 4dd635bce90e8b6ed31c08cd654deca29f4d9d66
>>         # save the attached .config to linux build tree
>>         GCC_VERSION=7.4.0 make.cross ARCH=mips 
>>
>> If you fix the issue, kindly add following tag
>> Reported-by: kbuild test robot <lkp@intel.com>
>>
>> All errors (new ones prefixed by >>):
>>
>>    In file included from net//sctp/offload.c:11:0:
>>    include/linux/kprobes.h: In function 'kprobe_page_fault':
>>>> include/linux/kprobes.h:477:9: error: implicit declaration of function 'kprobe_fault_handler'; did you mean 'kprobe_page_fault'? [-Werror=implicit-function-declaration]
>>      return kprobe_fault_handler(regs, trap);
> 
> Urgh, OK, thanks.
> 
> kprobe_fault_handler() is only ever defined and referenced in arch code
> and generic code has no right to be assuming that the architecture
> actually provides it.  And so it is with mips (at least).

Hmm, so the problem really is that on mips arch even though CONFIG_KPROBES
is enabled, it does not export (though it defines) a kprobe_fault_handler()
implementation unlike all other architectures.

Now that generic code calls kprobe_fault_handler(), should not all arch be
providing one when they subscribe to CONFIG_KPROBES ? In which case mips
should just export it's existing definition to fix this build problem.

> 
> The !CONFIG_KPROBES stub version of kprobe_fault_handler() should not
> have been placed in include/linux/kprobes.h!  Each arch should have
> defined its own, if that proved necessary.

I guess its there in include/linux/kprobes.h! because !CONFIG_KPROBES stub
version for all archs will exactly look the same.

> 
> Oh well, ho hum.  Hopefully Anshuman will be able to come up with a fix
> for mips and any similarly-affected architectures.

Will export it's existing definition via arch/mips/include/asm/kprobes.h
unless that is problematic for other reasons. Another solution would be
to define an weak symbol in include/linux/kprobes.h for CONFIG_KPROBES.
But that will not be correct because kprobe_fault_handler() by all means
is always platform specific.

> 
> Also, please very carefully check that this patchset is correct for all
> architectures!  kprobe_fault_handler() could conceivably do different
> things on different architectures.

Agreed.


      reply	other threads:[~2019-06-20  9:00 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-15  2:55 kbuild test robot
2019-06-18  2:07 ` Andrew Morton
2019-06-20  9:00   ` Anshuman Khandual [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=702ba0e8-0ef5-c5df-a350-b928ac984d58@arm.com \
    --to=anshuman.khandual@arm.com \
    --cc=akpm@linux-foundation.org \
    --cc=dave.hansen@linux.intel.com \
    --cc=kbuild-all@01.org \
    --cc=linux-mm@kvack.org \
    --cc=lkp@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox