Re: [jump_label_test] WARNING: CPU: 0 PID: 1 at kernel/jump_label.c:761 jump_label_test+0x63/0xab

From: Jason Baron
Date: Thu Nov 09 2017 - 15:14:32 EST


On 11/08/2017 02:01 AM, Fengguang Wu wrote:
> On Tue, Nov 07, 2017 at 05:17:38PM -0500, Jason Baron wrote:
>>
>>
>> On 11/07/2017 04:27 AM, Fengguang Wu wrote:
>>> Hello,
>>>
>>> FYI this happens in v4.14-rc8 -- it's not necessarily a new bug.
>>>
>>
>> Hi,
>>
>> So this looks like the branches aren't getting updated because the
>> WARN_ON()s are all from the second half of the test loop (where we
>> actually change the branch direction).
>>
>> I ran a kernel with a very similar .config on qemu-kvm/i386 as well, and
>> was not able to trigger the WARN_ON(). Do you know if it happens on
>> every boot or if there is some boot timing involved?
>>
>> You could try the patch below, to start to narrow down if this is a
>> problem with jump table setup or with the update process.
>
> The problem disappears after this patch.
>

Ok, I can reproduce the issue if I enable CONFIG_RCU_PERF_TEST and add
something like the following to the command-line: "rcuperf.shutdown=1
rcuperf.holdoff=2".

The issue is that the core jump label code uses kernel_text_address() to
ensure that it does not update branches in '__init' text after it has
been freed. The check uses 'system_state' variable from
core_kernel_text() to make the determination:

if (system_state < SYSTEM_RUNNING &&

init_kernel_text(addr))

return 1;

return 0;

So the general idea is that system_state is set to SYSTEM_RUNNING after
the __init text sections are freed, and thus we avoid updating jump
label branches.

However, in the case that rcuperf is enabled, it will call
kernel_power_off() which in turn sets system_state to SYSTEM_POWER_OFF
(which is > SYSTEM_RUNNING), potentially before the the initcalls have
even been run. In this case, the jump label selftests called from __init
via a late_initcall() can not update the branch direction, and thus we
get the above warnings (due to the fact that the branches don't get
udpated).

So this is really not a new issue and really is only triggered in a
debug setup, so I don't think this is 4.14 material in any way...

One way to clean this up is to add a call into the jump label code
similar to what ftrace does in ftrace_free_init_mem(). This gets called
after the initcalls have run but before they are freed. Something like
below.

Thanks,

-Jason

diff --git a/include/linux/jump_label.h b/include/linux/jump_label.h
index 3b7675b..0202c58 100644
--- a/include/linux/jump_label.h
+++ b/include/linux/jump_label.h
@@ -158,6 +158,7 @@ extern void arch_jump_label_transform(struct
jump_entry *entry,
extern void arch_jump_label_transform_static(struct jump_entry *entry,
enum jump_label_type type);
extern int jump_label_text_reserved(void *start, void *end);
+extern void jump_label_invalidate_init(struct module *mod);
extern void static_key_slow_inc(struct static_key *key);
extern void static_key_slow_dec(struct static_key *key);
extern void jump_label_apply_nops(struct module *mod);
@@ -235,6 +236,8 @@ static inline int jump_label_apply_nops(struct
module *mod)
return 0;
}

+static inline void jump_label_invalidate_init(struct module *mod) {}
+
static inline void static_key_enable(struct static_key *key)
{
STATIC_KEY_CHECK_USE();
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 4b484ab..23e3cba 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -471,6 +471,7 @@ extern unsigned long long memparse(const char *ptr,
char **retptr);
extern bool parse_option_str(const char *str, const char *option);
extern char *next_arg(char *args, char **param, char **val);

+extern int init_kernel_text(unsigned long addr);
extern int core_kernel_text(unsigned long addr);
extern int core_kernel_data(unsigned long addr);
extern int __kernel_text_address(unsigned long addr);
diff --git a/init/main.c b/init/main.c
index 0ee9c686..f4e5ab5 100644
--- a/init/main.c
+++ b/init/main.c
@@ -994,6 +994,7 @@ static int __ref kernel_init(void *unused)
/* need to finish all async __init code before freeing the memory */
async_synchronize_full();
ftrace_free_init_mem();
+ jump_label_invalidate_init(NULL);
free_initmem();
mark_readonly();
system_state = SYSTEM_RUNNING;
diff --git a/kernel/extable.c b/kernel/extable.c
index 9aa1cc4..1d69178 100644
--- a/kernel/extable.c
+++ b/kernel/extable.c
@@ -62,7 +62,7 @@ const struct exception_table_entry
*search_exception_tables(unsigned long addr)
return e;
}

-static inline int init_kernel_text(unsigned long addr)
+int init_kernel_text(unsigned long addr)
{
if (addr >= (unsigned long)_sinittext &&
addr < (unsigned long)_einittext)
diff --git a/kernel/jump_label.c b/kernel/jump_label.c
index 0bf2e8f5..3f804f4 100644
--- a/kernel/jump_label.c
+++ b/kernel/jump_label.c
@@ -359,16 +359,44 @@ static void __jump_label_update(struct static_key
*key,
struct jump_entry *stop)
{
for (; (entry < stop) && (jump_entry_key(entry) == key); entry++) {
- /*
- * entry->code set to 0 invalidates module init text
sections
- * kernel_text_address() verifies we are not in core kernel
- * init code, see jump_label_invalidate_module_init().
- */
- if (entry->code && kernel_text_address(entry->code))
+ /* entry->code set to 0 invalidates __init text sections */
+ if (entry->code)
arch_jump_label_transform(entry,
jump_label_type(entry));
}
}

+void jump_label_invalidate_init(struct module *mod)
+{
+ struct jump_entry *iter_start = mod->jump_entries;
+ struct jump_entry *iter_stop = iter_start + mod->num_jump_entries;
+ struct jump_entry *iter;
+
+ if (mod) {
+ iter_start = mod->jump_entries;
+ iter_stop = iter_start + mod->num_jump_entries;
+ } else {
+ jump_label_lock();
+ iter_start = __start___jump_table;
+ iter_stop = __stop___jump_table;
+ }
+
+ for (iter = iter_start; iter < iter_stop; iter++) {
+ if (mod) {
+ if (!within_module_init(iter->code, mod) &&
+ !within_module_init(iter->target, mod))
+ continue;
+ } else {
+ if (!init_kernel_text(iter->code) &&
+ !init_kernel_text(iter->target))
+ continue;
+ }
+ iter->code = 0;
+ }
+
+ if (!mod)
+ jump_label_unlock();
+}
+
void __init jump_label_init(void)
{
struct jump_entry *iter_start = __start___jump_table;
@@ -627,18 +655,6 @@ static void jump_label_del_module(struct module *mod)
}
}

-static void jump_label_invalidate_module_init(struct module *mod)
-{
- struct jump_entry *iter_start = mod->jump_entries;
- struct jump_entry *iter_stop = iter_start + mod->num_jump_entries;
- struct jump_entry *iter;
-
- for (iter = iter_start; iter < iter_stop; iter++) {
- if (within_module_init(iter->code, mod))
- iter->code = 0;
- }
-}
-
static int
jump_label_module_notify(struct notifier_block *self, unsigned long val,
void *data)
@@ -661,7 +677,7 @@ jump_label_module_notify(struct notifier_block
*self, unsigned long val,
jump_label_del_module(mod);
break;
case MODULE_STATE_LIVE:
- jump_label_invalidate_module_init(mod);
+ jump_label_invalidate_init(mod);
break;
}




> The dmesg is now:
>
> [ÂÂÂ 7.342618] IRQ10 -> 0:10
> [ÂÂÂ 7.343025] IRQ11 -> 0:11
> [ÂÂÂ 7.343450] IRQ12 -> 0:12
> [ÂÂÂ 7.343770] IRQ13 -> 0:13
> [ÂÂÂ 7.344079] IRQ14 -> 0:14
> [ÂÂÂ 7.344379] IRQ15 -> 0:15
> [ÂÂÂ 7.344690] .................................... done.
> [ÂÂÂ 7.345271] Using IPI Shortcut mode
> [ÂÂÂ 7.345682] sched_clock: Marking stable (7344687295, 0)->(7595176493,
> -250489198)
> [ÂÂÂ 7.346516] __jump_label_update: key: 0xcd3a0dec, code: 0xcca65b30,
> target: 0xcca65b40
> [ÂÂÂ 7.347600] __jump_label_update: key: 0xcd3a0dec, code: 0xcca65999,
> target: 0xcca659b8
> [ÂÂÂ 7.349195] __jump_label_update: key: 0xcd3a0dec, code: 0xcca65c50,
> target: 0xcca65c9a
> [ÂÂÂ 7.350075] __jump_label_update: key: 0xcd3a0dec, code: 0xcca65bf0,
> target: 0xcca65bf8
> [ÂÂÂ 7.350963] __jump_label_update: key: 0xcd3a0dec, code: 0xcca65b90,
> target: 0xcca65b98
> [ÂÂÂ 7.351848] __jump_label_update: key: 0xcd3a0dec, code: 0xcca65b68,
> target: 0xcca65b63
> [ÂÂÂ 7.353000] jump_label: disable sk_true: cd2adc60
> [ÂÂÂ 7.353668] __jump_label_update: key: 0xcd2adc60, code: 0xcd31ae3c,
> target: 0xcd31ae9d
> [ÂÂÂ 7.354852] __jump_label_update: key: 0xcd2adc60, code: 0xcd31add7,
> target: 0xcd31adde
> [ÂÂÂ 7.356021] __jump_label_update: key: 0xcd2adc60, code: 0xcd31ae35,
> target: 0xcd31ae3c
> [ÂÂÂ 7.357023] __jump_label_update: key: 0xcd2adc60, code: 0xcd31add2,
> target: 0xcd31ae8f
> [ÂÂÂ 7.357970] jump_label: enable sk_false: cda8ef5c
> [ÂÂÂ 7.358682] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ae46,
> target: 0xcd31ae4d
> [ÂÂÂ 7.359858] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ade5,
> target: 0xcd31ae96
> [ÂÂÂ 7.361049] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ae41,
> target: 0xcd31aea1
> [ÂÂÂ 7.362235] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31adde,
> target: 0xcd31ade5
> [ÂÂÂ 7.363408] jump_label: enable sk_true: cd2adc60
> [ÂÂÂ 7.364100] __jump_label_update: key: 0xcd2adc60, code: 0xcd31ae3c,
> target: 0xcd31ae9d
> [ÂÂÂ 7.365282] __jump_label_update: key: 0xcd2adc60, code: 0xcd31add7,
> target: 0xcd31adde
> [ÂÂÂ 7.366465] __jump_label_update: key: 0xcd2adc60, code: 0xcd31ae35,
> target: 0xcd31ae3c
> [ÂÂÂ 7.367639] __jump_label_update: key: 0xcd2adc60, code: 0xcd31add2,
> target: 0xcd31ae8f
> [ÂÂÂ 7.368818] jump_label: disable sk_false: cda8ef5c
> [ÂÂÂ 7.369538] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ae46,
> target: 0xcd31ae4d
> [ÂÂÂ 7.370716] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ade5,
> target: 0xcd31ae96
> [ÂÂÂ 7.371900] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ae41,
> target: 0xcd31aea1
> [ÂÂÂ 7.373087] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31adde,
> target: 0xcd31ade5
> [ÂÂÂ 7.374275] jump_label: disable sk_true: cd2adc60
> [ÂÂÂ 7.374991] __jump_label_update: key: 0xcd2adc60, code: 0xcd31ae3c,
> target: 0xcd31ae9d
> [ÂÂÂ 7.376175] __jump_label_update: key: 0xcd2adc60, code: 0xcd31add7,
> target: 0xcd31adde
> [ÂÂÂ 7.377368] __jump_label_update: key: 0xcd2adc60, code: 0xcd31ae35,
> target: 0xcd31ae3c
> [ÂÂÂ 7.378565] __jump_label_update: key: 0xcd2adc60, code: 0xcd31add2,
> target: 0xcd31ae8f
> [ÂÂÂ 7.379750] jump_label: enable sk_false: cda8ef5c
> [ÂÂÂ 7.380459] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ae46,
> target: 0xcd31ae4d
> [ÂÂÂ 7.381654] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ade5,
> target: 0xcd31ae96
> [ÂÂÂ 7.382855] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ae41,
> target: 0xcd31aea1
> [ÂÂÂ 7.384046] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31adde,
> target: 0xcd31ade5
> [ÂÂÂ 7.385243] jump_label: enable sk_true: cd2adc60
> [ÂÂÂ 7.385944] __jump_label_update: key: 0xcd2adc60, code: 0xcd31ae3c,
> target: 0xcd31ae9d
> [ÂÂÂ 7.387109] __jump_label_update: key: 0xcd2adc60, code: 0xcd31add7,
> target: 0xcd31adde
> [ÂÂÂ 7.388276] __jump_label_update: key: 0xcd2adc60, code: 0xcd31ae35,
> target: 0xcd31ae3c
> [ÂÂÂ 7.389449] __jump_label_update: key: 0xcd2adc60, code: 0xcd31add2,
> target: 0xcd31ae8f
> [ÂÂÂ 7.390621] jump_label: disable sk_false: cda8ef5c
> [ÂÂÂ 7.391337] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ae46,
> target: 0xcd31ae4d
> [ÂÂÂ 7.392509] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ade5,
> target: 0xcd31ae96
> [ÂÂÂ 7.393973] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ae41,
> target: 0xcd31aea1
> [ÂÂÂ 7.395025] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31adde,
> target: 0xcd31ade5
> [ÂÂÂ 7.398024] debug: unmapping init [mem 0xcd305000-0xcd38ffff]
> [ÂÂÂ 7.398757] Write protecting the kernel text: 5796k
> [ÂÂÂ 7.399449] Write protecting the kernel read-only data: 2736k
>
> Thanks,
> Fengguang
>
>> Thanks,
>>
>> -Jason
>>
>>
>> diff --git a/kernel/jump_label.c b/kernel/jump_label.c
>> index 0bf2e8f5..433cc94 100644
>> --- a/kernel/jump_label.c
>> +++ b/kernel/jump_label.c
>> @@ -364,8 +364,13 @@ static void __jump_label_update(struct static_key
>> *key,
>> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ * kernel_text_address() verifies we are not in core
>> kernel
>> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ * init code, see jump_label_invalidate_module_init().
>> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ */
>> -ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ if (entry->code && kernel_text_address(entry->code))
>> +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ if (entry->code && kernel_text_address(entry->code)) {
>> +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ printk("%s: key: 0x%lx, code: 0x%lx, target:
>> 0x%lx\n",
>> +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ __func__, (unsigned
>> long)jump_entry_key(entry),
>> +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ (unsigned long)entry->code,
>> +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ (unsigned long)entry->target);
>> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ arch_jump_label_transform(entry,
>> jump_label_type(entry));
>> +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ }
>> ÂÂÂÂÂÂ }
>> }
>>
>> @@ -752,7 +757,9 @@ static __init int jump_label_test(void)
>> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ WARN_ON(static_branch_likely(&sk_false));
>> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ WARN_ON(static_branch_unlikely(&sk_false));
>>
>> +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ printk("jump_label: disable sk_true: %p\n", &sk_true);
>> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ static_branch_disable(&sk_true);
>> +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ printk("jump_label: enable sk_false: %p\n", &sk_false);
>> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ static_branch_enable(&sk_false);
>>
>> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ WARN_ON(static_key_enabled(&sk_true.key) == true);
>> @@ -763,7 +770,9 @@ static __init int jump_label_test(void)
>> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ WARN_ON(!static_branch_likely(&sk_false));
>> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ WARN_ON(!static_branch_unlikely(&sk_false));
>>
>> +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ printk("jump_label: enable sk_true: %p\n", &sk_true);
>> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ static_branch_enable(&sk_true);
>> +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ printk("jump_label: disable sk_false: %p\n", &sk_false);
>> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ static_branch_disable(&sk_false);
>> ÂÂÂÂÂÂ }
>>
>>
>>
>>
>>> [ÂÂ 15.214834] IRQ15 -> 0:15
>>> [ÂÂ 15.214834] .................................... done.
>>> [ÂÂ 15.214834] Using IPI Shortcut mode
>>> [ÂÂ 15.214834] sched_clock: Marking stable (15210834346,
>>> 0)->(15797181340, -586346994)
>>> [ÂÂ 17.667168] ------------[ cut here ]------------
>>> [ÂÂ 17.668895] WARNING: CPU: 0 PID: 1 at kernel/jump_label.c:761
>>> jump_label_test+0x63/0xab
>>> [ÂÂ 17.672346] Modules linked in:
>>> [ÂÂ 17.673475] CPU: 0 PID: 1 Comm: swapper Not tainted 4.14.0-rc8 #29
>>> [ÂÂ 17.675724] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
>>> BIOS 1.10.2-1 04/01/2014
>>> [ÂÂ 17.678755] task: c0020d00 task.stack: c0022000
>>> [ÂÂ 17.680423] EIP: jump_label_test+0x63/0xab
>>> [ÂÂ 17.681912] EFLAGS: 00210202 CPU: 0
>>> [ÂÂ 17.683206] EAX: 00000001 EBX: 00000002 ECX: 00000004 EDX: 00000000
>>> [ÂÂ 17.685501] ESI: c9918db6 EDI: 00000000 EBP: 00000000 ESP: c0023f40
>>> [ÂÂ 17.687787]Â DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
>>> [ÂÂ 17.689748] CR0: 80050033 CR2: 00000000 CR3: 09991000 CR4: 000006b0
>>> [ÂÂ 17.692019] Call Trace:
>>> [ÂÂ 17.692938]Â ? do_one_initcall+0x2c/0x13a
>>> [ÂÂ 17.694398]Â ? parse_args+0x1af/0x300
>>> [ÂÂ 17.695740]Â ? kernel_init_freeable+0xce/0x161
>>> [ÂÂ 17.697370]Â ? kernel_init_freeable+0xee/0x161
>>> [ÂÂ 17.698986]Â ? rest_init+0xb0/0xb0
>>> [ÂÂ 17.700236]Â ? kernel_init+0x5/0xe0
>>> [ÂÂ 17.701513]Â ? ret_from_fork+0x19/0x30
>>> [ÂÂ 17.702876] Code: c9 e8 3c 59 7b ff b8 5c cf 08 ca e8 a2 58 7b ff
>>> a1 60 bc 8a c9 85 c0 74 02 0f ff a1 5c cf 08 ca 85 c0 75 02 0f ff 3e
>>> 8d 74 26 00 <0f> ff e9 35 00 00 00 e9 34 00 00 00 3e 8d 74 26 00 0f
>>> ff b8 60
>>> [ÂÂ 17.709721] ---[ end trace f18711bfa2b1114e ]---
>>> [ÂÂ 17.711418] ------------[ cut here ]------------
>>> [ÂÂ 17.711418] ------------[ cut here ]------------
>>> [ÂÂ 17.713092] WARNING: CPU: 0 PID: 1 at kernel/jump_label.c:762
>>> jump_label_test+0x9f/0xab
>>> [ÂÂ 17.716534] Modules linked in:
>>> [ÂÂ 17.717665] CPU: 0 PID: 1 Comm: swapper Tainted: GÂÂÂÂÂÂÂ WÂÂÂÂÂÂ
>>> 4.14.0-rc8 #29
>>> [ÂÂ 17.720349] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
>>> BIOS 1.10.2-1 04/01/2014
>>> [ÂÂ 17.723362] task: c0020d00 task.stack: c0022000
>>> [ÂÂ 17.725004] EIP: jump_label_test+0x9f/0xab
>>> [ÂÂ 17.726516] EFLAGS: 00210202 CPU: 0
>>> [ÂÂ 17.727785] EAX: 00000001 EBX: 00000002 ECX: 00000004 EDX: 00000000
>>> [ÂÂ 17.730058] ESI: c9918db6 EDI: 00000000 EBP: 00000000 ESP: c0023f40
>>> [ÂÂ 17.732341]Â DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
>>> [ÂÂ 17.734300] CR0: 80050033 CR2: 00000000 CR3: 09991000 CR4: 000006b0
>>> [ÂÂ 17.736560] Call Trace:
>>> [ÂÂ 17.737476]Â ? do_one_initcall+0x2c/0x13a
>>> [ÂÂ 17.738943]Â ? parse_args+0x1af/0x300
>>> [ÂÂ 17.740326]Â ? kernel_init_freeable+0xce/0x161
>>> [ÂÂ 17.741943]Â ? kernel_init_freeable+0xee/0x161
>>> [ÂÂ 17.743571]Â ? rest_init+0xb0/0xb0
>>> [ÂÂ 17.744820]Â ? kernel_init+0x5/0xe0
>>> [ÂÂ 17.746095]Â ? ret_from_fork+0x19/0x30
>>> [ÂÂ 17.747474] Code: 0f ff b8 60 bc 8a c9 e8 6a 58 7b ff b8 5c cf 08
>>> ca e8 f0 58 7b ff 4b 74 1a bb 01 00 00 00 e9 6f ff ff ff 0f ff eb 86
>>> 0f ff eb 95 <0f> ff eb c7 0f ff eb c8 31 c0 5b c3 b8 68 bc 8a c9 e9
>>> 25 d4 77
>>> [ÂÂ 17.754356] ---[ end trace f18711bfa2b1114f ]---
>>> [ÂÂ 17.755649] ------------[ cut here ]------------
>>> [ÂÂ 17.755649] ------------[ cut here ]------------
>>> [ÂÂ 17.756863] WARNING: CPU: 0 PID: 1 at kernel/jump_label.c:763
>>> jump_label_test+0xa3/0xab
>>> [ÂÂ 17.759289] Modules linked in:
>>> [ÂÂ 17.760082] CPU: 0 PID: 1 Comm: swapper Tainted: GÂÂÂÂÂÂÂ WÂÂÂÂÂÂ
>>> 4.14.0-rc8 #29
>>> [ÂÂ 17.761983] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
>>> BIOS 1.10.2-1 04/01/2014
>>> [ÂÂ 17.764723] task: c0020d00 task.stack: c0022000
>>> [ÂÂ 17.766378] EIP: jump_label_test+0xa3/0xab
>>> [ÂÂ 17.767470] EFLAGS: 00210202 CPU: 0
>>> [ÂÂ 17.769223] EAX: 00000001 EBX: 00000002 ECX: 00000004 EDX: 00000000
>>> [ÂÂ 17.771188] ESI: c9918db6 EDI: 00000000 EBP: 00000000 ESP: c0023f40
>>> [ÂÂ 17.773495]Â DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
>>> [ÂÂ 17.774916] CR0: 80050033 CR2: 00000000 CR3: 09991000 CR4: 000006b0
>>> [ÂÂ 17.776576] Call Trace:
>>> [ÂÂ 17.777249]Â ? do_one_initcall+0x2c/0x13a
>>> [ÂÂ 17.778318]Â ? parse_args+0x1af/0x300
>>> [ÂÂ 17.779292]Â ? kernel_init_freeable+0xce/0x161
>>> [ÂÂ 17.780443]Â ? kernel_init_freeable+0xee/0x161
>>> [ÂÂ 17.781558]Â ? rest_init+0xb0/0xb0
>>> [ÂÂ 17.782463]Â ? kernel_init+0x5/0xe0
>>> [ÂÂ 17.783394]Â ? ret_from_fork+0x19/0x30
>>> [ÂÂ 17.784376] Code: bc 8a c9 e8 6a 58 7b ff b8 5c cf 08 ca e8 f0 58
>>> 7b ff 4b 74 1a bb 01 00 00 00 e9 6f ff ff ff 0f ff eb 86 0f ff eb 95
>>> 0f ff eb c7 <0f> ff eb c8 31 c0 5b c3 b8 68 bc 8a c9 e9 25 d4 77 ff
>>> 80 3d a0
>>> [ÂÂ 17.789290] ---[ end trace f18711bfa2b11150 ]---
>>> [ÂÂ 17.790487] ------------[ cut here ]------------
>>> [ÂÂ 17.790487] ------------[ cut here ]------------
>>> [ÂÂ 17.792555] WARNING: CPU: 0 PID: 1 at kernel/jump_label.c:764
>>> jump_label_test+0x74/0xab
>>> [ÂÂ 17.796930] Modules linked in:
>>> [ÂÂ 17.798391] CPU: 0 PID: 1 Comm: swapper Tainted: GÂÂÂÂÂÂÂ WÂÂÂÂÂÂ
>>> 4.14.0-rc8 #29
>>> [ÂÂ 17.801754] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
>>> BIOS 1.10.2-1 04/01/2014
>>> [ÂÂ 17.805496] task: c0020d00 task.stack: c0022000
>>> [ÂÂ 17.806702] EIP: jump_label_test+0x74/0xab
>>> [ÂÂ 17.807786] EFLAGS: 00210202 CPU: 0
>>> [ÂÂ 17.808726] EAX: 00000001 EBX: 00000002 ECX: 00000004 EDX: 00000000
>>> [ÂÂ 17.810368] ESI: c9918db6 EDI: 00000000 EBP: 00000000 ESP: c0023f40
>>> [ÂÂ 17.811994]Â DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
>>> [ÂÂ 17.813424] CR0: 80050033 CR2: 00000000 CR3: 09991000 CR4: 000006b0
>>> [ÂÂ 17.815063] Call Trace:
>>> [ÂÂ 17.815748]Â ? do_one_initcall+0x2c/0x13a
>>> [ÂÂ 17.816822]Â ? parse_args+0x1af/0x300
>>> [ÂÂ 17.817812]Â ? kernel_init_freeable+0xce/0x161
>>> [ÂÂ 17.818986]Â ? kernel_init_freeable+0xee/0x161
>>> [ÂÂ 17.820172]Â ? rest_init+0xb0/0xb0
>>> [ÂÂ 17.821081]Â ? kernel_init+0x5/0xe0
>>> [ÂÂ 17.822033]Â ? ret_from_fork+0x19/0x30
>>> [ÂÂ 17.823051] Code: 60 bc 8a c9 85 c0 74 02 0f ff a1 5c cf 08 ca 85
>>> c0 75 02 0f ff 3e 8d 74 26 00 0f ff e9 35 00 00 00 e9 34 00 00 00 3e
>>> 8d 74 26 00 <0f> ff b8 60 bc 8a c9 e8 6a 58 7b ff b8 5c cf 08 ca e8
>>> f0 58 7b
>>> [ÂÂ 17.828103] ---[ end trace f18711bfa2b11151 ]---
>>> [ÂÂ 17.829379] ------------[ cut here ]------------
>>> [ÂÂ 17.829379] ------------[ cut here ]------------
>>> [ÂÂ 17.830622] WARNING: CPU: 0 PID: 1 at kernel/jump_label.c:761
>>> jump_label_test+0x63/0xab
>>> [ÂÂ 17.833131] Modules linked in:
>>> [ÂÂ 17.833973] CPU: 0 PID: 1 Comm: swapper Tainted: GÂÂÂÂÂÂÂ WÂÂÂÂÂÂ
>>> 4.14.0-rc8 #29
>>> [ÂÂ 17.835923] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
>>> BIOS 1.10.2-1 04/01/2014
>>> [ÂÂ 17.838126] task: c0020d00 task.stack: c0022000
>>> [ÂÂ 17.839355] EIP: jump_label_test+0x63/0xab
>>> [ÂÂ 17.840447] EFLAGS: 00210202 CPU: 0
>>> [ÂÂ 17.841384] EAX: 00000001 EBX: 00000001 ECX: 00000004 EDX: 00000000
>>> [ÂÂ 17.843034] ESI: c9918db6 EDI: 00000000 EBP: 00000000 ESP: c0023f40
>>> [ÂÂ 17.844698]Â DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
>>> [ÂÂ 17.846127] CR0: 80050033 CR2: 00000000 CR3: 09991000 CR4: 000006b0
>>> [ÂÂ 17.847794] Call Trace:
>>> [ÂÂ 17.848472]Â ? do_one_initcall+0x2c/0x13a
>>> [ÂÂ 17.849547]Â ? parse_args+0x1af/0x300
>>> [ÂÂ 17.850590]Â ? kernel_init_freeable+0xce/0x161
>>> [ÂÂ 17.851783]Â ? kernel_init_freeable+0xee/0x161
>>> [ÂÂ 17.852977]Â ? rest_init+0xb0/0xb0
>>> [ÂÂ 17.854277]Â ? kernel_init+0x5/0xe0
>>> [ÂÂ 17.855571]Â ? ret_from_fork+0x19/0x30
>>> [ÂÂ 17.856955] Code: c9 e8 3c 59 7b ff b8 5c cf 08 ca e8 a2 58 7b ff
>>> a1 60 bc 8a c9 85 c0 74 02 0f ff a1 5c cf 08 ca 85 c0 75 02 0f ff 3e
>>> 8d 74 26 00 <0f> ff e9 35 00 00 00 e9 34 00 00 00 3e 8d 74 26 00 0f
>>> ff b8 60
>>> [ÂÂ 17.863904] ---[ end trace f18711bfa2b11152 ]---
>>> [ÂÂ 17.865629] ------------[ cut here ]------------
>>> [ÂÂ 17.865629] ------------[ cut here ]------------
>>> [ÂÂ 17.867438] WARNING: CPU: 0 PID: 1 at kernel/jump_label.c:762
>>> jump_label_test+0x9f/0xab
>>> [ÂÂ 17.871148] Modules linked in:
>>> [ÂÂ 17.872450] CPU: 0 PID: 1 Comm: swapper Tainted: GÂÂÂÂÂÂÂ WÂÂÂÂÂÂ
>>> 4.14.0-rc8 #29
>>> [ÂÂ 17.875124] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
>>> BIOS 1.10.2-1 04/01/2014
>>> [ÂÂ 17.878364] task: c0020d00 task.stack: c0022000
>>> [ÂÂ 17.880027] EIP: jump_label_test+0x9f/0xab
>>> [ÂÂ 17.881544] EFLAGS: 00210202 CPU: 0
>>> [ÂÂ 17.882901] EAX: 00000001 EBX: 00000001 ECX: 00000004 EDX: 00000000
>>> [ÂÂ 17.885473] ESI: c9918db6 EDI: 00000000 EBP: 00000000 ESP: c0023f40
>>> [ÂÂ 17.887934]Â DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
>>> [ÂÂ 17.890009] CR0: 80050033 CR2: 00000000 CR3: 09991000 CR4: 000006b0
>>> [ÂÂ 17.892339] Call Trace:
>>> [ÂÂ 17.893316]Â ? do_one_initcall+0x2c/0x13a
>>> [ÂÂ 17.894822]Â ? parse_args+0x1af/0x300
>>> [ÂÂ 17.896911]Â ? kernel_init_freeable+0xce/0x161
>>> [ÂÂ 17.899626]Â ? kernel_init_freeable+0xee/0x161
>>> [ÂÂ 17.902732]Â ? rest_init+0xb0/0xb0
>>> [ÂÂ 17.904894]Â ? kernel_init+0x5/0xe0
>>> [ÂÂ 17.907031]Â ? ret_from_fork+0x19/0x30
>>> [ÂÂ 17.909383] Code: 0f ff b8 60 bc 8a c9 e8 6a 58 7b ff b8 5c cf 08
>>> ca e8 f0 58 7b ff 4b 74 1a bb 01 00 00 00 e9 6f ff ff ff 0f ff eb 86
>>> 0f ff eb 95 <0f> ff eb c7 0f ff eb c8 31 c0 5b c3 b8 68 bc 8a c9 e9
>>> 25 d4 77
>>> [ÂÂ 17.928301] ---[ end trace f18711bfa2b11153 ]---
>>> [ÂÂ 17.931515] ------------[ cut here ]------------
>>> [ÂÂ 17.931515] ------------[ cut here ]------------
>>> [ÂÂ 17.943868] WARNING: CPU: 0 PID: 1 at kernel/jump_label.c:763
>>> jump_label_test+0xa3/0xab
>>> [ÂÂ 17.950147] Modules linked in:
>>> [ÂÂ 17.952135] CPU: 0 PID: 1 Comm: swapper Tainted: GÂÂÂÂÂÂÂ WÂÂÂÂÂÂ
>>> 4.14.0-rc8 #29
>>> [ÂÂ 17.956297] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
>>> BIOS 1.10.2-1 04/01/2014
>>> [ÂÂ 17.964556] task: c0020d00 task.stack: c0022000
>>> [ÂÂ 17.985804] EIP: jump_label_test+0xa3/0xab
>>> [ÂÂ 17.988269] EFLAGS: 00210202 CPU: 0
>>> [ÂÂ 17.990407] EAX: 00000001 EBX: 00000001 ECX: 00000004 EDX: 00000000
>>> [ÂÂ 17.996820] ESI: c9918db6 EDI: 00000000 EBP: 00000000 ESP: c0023f40
>>> [ÂÂ 18.000174]Â DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
>>> [ÂÂ 18.003505] CR0: 80050033 CR2: 00000000 CR3: 09991000 CR4: 000006b0
>>> [ÂÂ 18.007251] Call Trace:
>>> [ÂÂ 18.008897]Â ? do_one_initcall+0x2c/0x13a
>>> [ÂÂ 18.016611]Â ? parse_args+0x1af/0x300
>>> [ÂÂ 18.018854]Â ? kernel_init_freeable+0xce/0x161
>>> [ÂÂ 18.021573]Â ? kernel_init_freeable+0xee/0x161
>>> [ÂÂ 18.024418]Â ? rest_init+0xb0/0xb0
>>> [ÂÂ 18.026326]Â ? kernel_init+0x5/0xe0
>>> [ÂÂ 18.028418]Â ? ret_from_fork+0x19/0x30
>>> [ÂÂ 18.031569] Code: bc 8a c9 e8 6a 58 7b ff b8 5c cf 08 ca e8 f0 58
>>> 7b ff 4b 74 1a bb 01 00 00 00 e9 6f ff ff ff 0f ff eb 86 0f ff eb 95
>>> 0f ff eb c7 <0f> ff eb c8 31 c0 5b c3 b8 68 bc 8a c9 e9 25 d4 77 ff
>>> 80 3d a0
>>> [ÂÂ 18.050687] ---[ end trace f18711bfa2b11154 ]---
>>> [ÂÂ 18.060661] ------------[ cut here ]------------
>>> [ÂÂ 18.060661] ------------[ cut here ]------------
>>> [ÂÂ 18.064196] WARNING: CPU: 0 PID: 1 at kernel/jump_label.c:764
>>> jump_label_test+0x74/0xab
>>> [ÂÂ 18.076475] Modules linked in:
>>> [ÂÂ 18.083657] CPU: 0 PID: 1 Comm: swapper Tainted: GÂÂÂÂÂÂÂ WÂÂÂÂÂÂ
>>> 4.14.0-rc8 #29
>>> [ÂÂ 18.101662] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
>>> BIOS 1.10.2-1 04/01/2014
>>> [ÂÂ 18.109794] task: c0020d00 task.stack: c0022000
>>> [ÂÂ 18.112995] EIP: jump_label_test+0x74/0xab
>>> [ÂÂ 18.115714] EFLAGS: 00210202 CPU: 0
>>> [ÂÂ 18.118265] EAX: 00000001 EBX: 00000001 ECX: 00000004 EDX: 00000000
>>> [ÂÂ 18.125065] ESI: c9918db6 EDI: 00000000 EBP: 00000000 ESP: c0023f40
>>> [ÂÂ 18.128653]Â DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
>>> [ÂÂ 18.130955] CR0: 80050033 CR2: 00000000 CR3: 09991000 CR4: 000006b0
>>> [ÂÂ 18.136512] Call Trace:
>>> [ÂÂ 18.137684]Â ? do_one_initcall+0x2c/0x13a
>>> [ÂÂ 18.141253]Â ? parse_args+0x1af/0x300
>>> [ÂÂ 18.143612]Â ? kernel_init_freeable+0xce/0x161
>>> [ÂÂ 18.146407]Â ? kernel_init_freeable+0xee/0x161
>>> [ÂÂ 18.149921]Â ? rest_init+0xb0/0xb0
>>> [ÂÂ 18.151599]Â ? kernel_init+0x5/0xe0
>>> [ÂÂ 18.153257]Â ? ret_from_fork+0x19/0x30
>>> [ÂÂ 18.155487] Code: 60 bc 8a c9 85 c0 74 02 0f ff a1 5c cf 08 ca 85
>>> c0 75 02 0f ff 3e 8d 74 26 00 0f ff e9 35 00 00 00 e9 34 00 00 00 3e
>>> 8d 74 26 00 <0f> ff b8 60 bc 8a c9 e8 6a 58 7b ff b8 5c cf 08 ca e8
>>> f0 58 7b
>>> [ÂÂ 18.167223] ---[ end trace f18711bfa2b11155 ]---
>>>
>>> Attached the full dmesg and kconfig.
>>>
>>> Thanks,
>>> Fengguang
>>>
>>