linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [next:master 452/458] undefined reference to `__bad_size_call_parameter'
@ 2014-03-06 14:48 kbuild test robot
  2014-03-06 21:18 ` Andrew Morton
  0 siblings, 1 reply; 4+ messages in thread
From: kbuild test robot @ 2014-03-06 14:48 UTC (permalink / raw)
  To: Christoph Lameter; +Cc: Linux Memory Management List, Andrew Morton, kbuild-all

tree:   git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   0ffb2fe7b9c30082876fa3a17da018bf0632cf03
commit: 3b0fc5a9f85472be761e51de110e0aa8d15e7f41 [452/458] sh: replace __get_cpu_var uses
config: make ARCH=sh r7785rp_defconfig

All error/warnings:

   arch/sh/kernel/built-in.o: In function `kprobe_exceptions_notify':
>> (.kprobes.text+0x8c8): undefined reference to `__bad_size_call_parameter'

---
0-DAY kernel build testing backend              Open Source Technology Center
http://lists.01.org/mailman/listinfo/kbuild                 Intel Corporation

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [next:master 452/458] undefined reference to `__bad_size_call_parameter'
  2014-03-06 14:48 [next:master 452/458] undefined reference to `__bad_size_call_parameter' kbuild test robot
@ 2014-03-06 21:18 ` Andrew Morton
  2014-03-07 17:07   ` Christoph Lameter
  0 siblings, 1 reply; 4+ messages in thread
From: Andrew Morton @ 2014-03-06 21:18 UTC (permalink / raw)
  To: kbuild test robot
  Cc: Christoph Lameter, Linux Memory Management List, kbuild-all

On Thu, 06 Mar 2014 22:48:11 +0800 kbuild test robot <fengguang.wu@intel.com> wrote:

> tree:   git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> head:   0ffb2fe7b9c30082876fa3a17da018bf0632cf03
> commit: 3b0fc5a9f85472be761e51de110e0aa8d15e7f41 [452/458] sh: replace __get_cpu_var uses
> config: make ARCH=sh r7785rp_defconfig
> 
> All error/warnings:
> 
>    arch/sh/kernel/built-in.o: In function `kprobe_exceptions_notify':
> >> (.kprobes.text+0x8c8): undefined reference to `__bad_size_call_parameter'

This has me stumped - the same code 

	p = __this_cpu_read(current_kprobe);

works OK elsewhere in that file.  I'm suspecting a miscompile - it's
not unknown for gcc to screw up when we use this trick.

I can reproduce it with gcc-3.4.5 for sh.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [next:master 452/458] undefined reference to `__bad_size_call_parameter'
  2014-03-06 21:18 ` Andrew Morton
@ 2014-03-07 17:07   ` Christoph Lameter
  2014-03-07 21:00     ` Andrew Morton
  0 siblings, 1 reply; 4+ messages in thread
From: Christoph Lameter @ 2014-03-07 17:07 UTC (permalink / raw)
  To: Andrew Morton; +Cc: kbuild test robot, Linux Memory Management List, kbuild-all

On Thu, 6 Mar 2014, Andrew Morton wrote:

> On Thu, 06 Mar 2014 22:48:11 +0800 kbuild test robot
> <fengguang.wu@intel.com> wrote:
> This has me stumped - the same code
>
> 	p = __this_cpu_read(current_kprobe);
>
> works OK elsewhere in that file.  I'm suspecting a miscompile - it's
> not unknown for gcc to screw up when we use this trick.
>
> I can reproduce it with gcc-3.4.5 for sh.

This is again the autoconversion not applying because current_kprobe is
probably a pointer. __bad_size_call_parameter is failure because reads
from structures larger than word size are not supported.

p = this_cpu_ptr(&current_kprobe);

would fix it.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [next:master 452/458] undefined reference to `__bad_size_call_parameter'
  2014-03-07 17:07   ` Christoph Lameter
@ 2014-03-07 21:00     ` Andrew Morton
  0 siblings, 0 replies; 4+ messages in thread
From: Andrew Morton @ 2014-03-07 21:00 UTC (permalink / raw)
  To: Christoph Lameter
  Cc: kbuild test robot, Linux Memory Management List, kbuild-all

On Fri, 7 Mar 2014 11:07:45 -0600 (CST) Christoph Lameter <cl@linux.com> wrote:

> On Thu, 6 Mar 2014, Andrew Morton wrote:
> 
> > On Thu, 06 Mar 2014 22:48:11 +0800 kbuild test robot
> > <fengguang.wu@intel.com> wrote:
> > This has me stumped - the same code
> >
> > 	p = __this_cpu_read(current_kprobe);
> >
> > works OK elsewhere in that file.  I'm suspecting a miscompile - it's
> > not unknown for gcc to screw up when we use this trick.
> >
> > I can reproduce it with gcc-3.4.5 for sh.
> 
> This is again the autoconversion not applying because current_kprobe is
> probably a pointer. __bad_size_call_parameter is failure because reads
> from structures larger than word size are not supported.
> 

But there are two instances of

	__this_cpu_read(current_kprobe);

in arch/sh/kernel/kprobes.c.  One generates the bad_size thing and one
does not.

> p = this_cpu_ptr(&current_kprobe);
> 
> would fix it.

This compiles:

--- a/arch/sh/kernel/kprobes.c~a
+++ a/arch/sh/kernel/kprobes.c
@@ -511,7 +511,7 @@ int __kprobes kprobe_exceptions_notify(s
 				if (kprobe_handler(args->regs)) {
 					ret = NOTIFY_STOP;
 				} else {
-					p = __this_cpu_read(current_kprobe);
+					p = *this_cpu_ptr(&current_kprobe);
 					if (p->break_handler &&
 					    p->break_handler(p, args->regs))
 						ret = NOTIFY_STOP;

But still generates a reference to __bad_size_call_parameter.

As does this:

--- a/arch/sh/kernel/kprobes.c~a
+++ a/arch/sh/kernel/kprobes.c
@@ -249,7 +249,7 @@ static int __kprobes kprobe_handler(stru
 			kcb->kprobe_status = KPROBE_REENTER;
 			return 1;
 		} else {
-			p = __this_cpu_read(current_kprobe);
+			p = *this_cpu_ptr(&current_kprobe);
 			if (p->break_handler && p->break_handler(p, regs)) {
 				goto ss_probe;
 			}
@@ -511,7 +511,7 @@ int __kprobes kprobe_exceptions_notify(s
 				if (kprobe_handler(args->regs)) {
 					ret = NOTIFY_STOP;
 				} else {
-					p = __this_cpu_read(current_kprobe);
+					p = *this_cpu_ptr(&current_kprobe);
 					if (p->break_handler &&
 					    p->break_handler(p, args->regs))
 						ret = NOTIFY_STOP;
_

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-03-07 21:00 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-06 14:48 [next:master 452/458] undefined reference to `__bad_size_call_parameter' kbuild test robot
2014-03-06 21:18 ` Andrew Morton
2014-03-07 17:07   ` Christoph Lameter
2014-03-07 21:00     ` Andrew Morton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).