include/linux/kprobes.h:332:2: error: invalid use of undefined type 'struct kprobe_ctlblk'

From: kbuild test robot
Date: Sat Jun 25 2016 - 21:25:55 EST


Hi,

FYI, the error/warning still remains.

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: da2f6aba4a21f8da3331e5251a117c52764da579
commit: abec1a806e0c3cf168999667d5fb6218398ef12a percpu: Make __verify_pcu_ptr handle per cpu pointers to arrays
date: 2 years, 10 months ago
config: mn10300-allyesconfig (attached as .config)
compiler: am33_2.0-linux-gcc (GCC) 4.9.0
reproduce:
wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout abec1a806e0c3cf168999667d5fb6218398ef12a
# save the attached .config to linux build tree
make.cross ARCH=mn10300

All errors (new ones prefixed by >>):

In file included from arch/mn10300/kernel/kprobes.c:20:0:
include/linux/kprobes.h: In function 'get_kprobe_ctlblk':
>> include/linux/kprobes.h:332:2: error: invalid use of undefined type 'struct kprobe_ctlblk'
return (&__get_cpu_var(kprobe_ctlblk));
^
In file included from arch/mn10300/include/asm/percpu.h:1:0,
from include/linux/percpu.h:10,
from include/linux/kprobes.h:38,
from arch/mn10300/kernel/kprobes.c:20:
include/asm-generic/percpu.h:83:29: error: dereferencing pointer to incomplete type
#define __get_cpu_var(var) (*VERIFY_PERCPU_PTR(&(var)))
^
include/linux/kprobes.h:332:11: note: in expansion of macro '__get_cpu_var'
return (&__get_cpu_var(kprobe_ctlblk));
^
--
In file included from kernel/kprobes.c:34:0:
include/linux/kprobes.h: In function 'get_kprobe_ctlblk':
>> include/linux/kprobes.h:332:2: error: invalid use of undefined type 'struct kprobe_ctlblk'
return (&__get_cpu_var(kprobe_ctlblk));
^
In file included from arch/mn10300/include/asm/percpu.h:1:0,
from include/linux/percpu.h:10,
from include/linux/kprobes.h:38,
from kernel/kprobes.c:34:
include/asm-generic/percpu.h:83:29: error: dereferencing pointer to incomplete type
#define __get_cpu_var(var) (*VERIFY_PERCPU_PTR(&(var)))
^
include/linux/kprobes.h:332:11: note: in expansion of macro '__get_cpu_var'
return (&__get_cpu_var(kprobe_ctlblk));
^
In file included from include/linux/cpumask.h:9:0,
from include/linux/smp.h:12,
from arch/mn10300/include/asm/irqflags.h:17,
from arch/mn10300/include/asm/atomic.h:14,
from include/linux/atomic.h:4,
from include/linux/mutex.h:18,
from include/linux/notifier.h:13,
from include/linux/kprobes.h:35,
from kernel/kprobes.c:34:
kernel/kprobes.c: In function 'write_enabled_file_bool':
include/linux/kernel.h:663:17: warning: comparison of distinct pointer types lacks a cast
(void) (&_min1 == &_min2); \
^
kernel/kprobes.c:2321:13: note: in expansion of macro 'min'
buf_size = min(count, (sizeof(buf)-1));
^
kernel/kprobes.c: At top level:
kernel/kprobes.c:1188:23: warning: 'cleanup_rp_inst' defined but not used [-Wunused-function]
static void __kprobes cleanup_rp_inst(struct kretprobe *rp)
^

vim +332 include/linux/kprobes.h

ef53d9c5 Srinivasa D S 2008-07-25 316 void kretprobe_hash_unlock(struct task_struct *tsk, unsigned long *flags);
b94cce92 Hien Nguyen 2005-06-23 317 struct hlist_head * kretprobe_inst_table_head(struct task_struct *tsk);
^1da177e Linus Torvalds 2005-04-16 318
e6584523 Ananth N Mavinakayanahalli 2005-11-07 319 /* kprobe_running() will just return the current_kprobe on this CPU */
e6584523 Ananth N Mavinakayanahalli 2005-11-07 320 static inline struct kprobe *kprobe_running(void)
e6584523 Ananth N Mavinakayanahalli 2005-11-07 321 {
b76834bc Christoph Lameter 2010-12-06 322 return (__this_cpu_read(current_kprobe));
e6584523 Ananth N Mavinakayanahalli 2005-11-07 323 }
e6584523 Ananth N Mavinakayanahalli 2005-11-07 324
e6584523 Ananth N Mavinakayanahalli 2005-11-07 325 static inline void reset_current_kprobe(void)
e6584523 Ananth N Mavinakayanahalli 2005-11-07 326 {
b76834bc Christoph Lameter 2010-12-06 327 __this_cpu_write(current_kprobe, NULL);
e6584523 Ananth N Mavinakayanahalli 2005-11-07 328 }
e6584523 Ananth N Mavinakayanahalli 2005-11-07 329
e6584523 Ananth N Mavinakayanahalli 2005-11-07 330 static inline struct kprobe_ctlblk *get_kprobe_ctlblk(void)
e6584523 Ananth N Mavinakayanahalli 2005-11-07 331 {
e6584523 Ananth N Mavinakayanahalli 2005-11-07 @332 return (&__get_cpu_var(kprobe_ctlblk));
e6584523 Ananth N Mavinakayanahalli 2005-11-07 333 }
e6584523 Ananth N Mavinakayanahalli 2005-11-07 334
^1da177e Linus Torvalds 2005-04-16 335 int register_kprobe(struct kprobe *p);
^1da177e Linus Torvalds 2005-04-16 336 void unregister_kprobe(struct kprobe *p);
9861668f Masami Hiramatsu 2008-04-28 337 int register_kprobes(struct kprobe **kps, int num);
9861668f Masami Hiramatsu 2008-04-28 338 void unregister_kprobes(struct kprobe **kps, int num);
^1da177e Linus Torvalds 2005-04-16 339 int setjmp_pre_handler(struct kprobe *, struct pt_regs *);
^1da177e Linus Torvalds 2005-04-16 340 int longjmp_break_handler(struct kprobe *, struct pt_regs *);

:::::: The code at line 332 was first introduced by commit
:::::: e65845235c8120be63001fc1a4ac00c819194bbe [PATCH] Kprobes: Track kprobe on a per_cpu basis - base changes

:::::: TO: Ananth N Mavinakayanahalli <ananth@xxxxxxxxxx>
:::::: CC: Linus Torvalds <torvalds@xxxxxxxxxxx>

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: Binary data