Hi Matthew, I love your patch! Yet something to improve: [auto build test ERROR on rcu/rcu/next] [also build test ERROR on v4.16-rc6 next-20180323] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Matthew-Wilcox/Add-free-function/20180324-140756 base: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git rcu/next config: x86_64-randconfig-s0-03241416 (attached as .config) compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All errors (new ones prefixed by >>): In file included from kernel/rcu/tree.c:4210:0: kernel/rcu/tree_plugin.h: In function '__call_rcu_nocb': kernel/rcu/tree_plugin.h:2020:6: error: implicit declaration of function '__is_kfree_rcu_offset' [-Werror=implicit-function-declaration] if (__is_kfree_rcu_offset((unsigned long)rhp->func)) ^~~~~~~~~~~~~~~~~~~~~ >> kernel/rcu/tree_plugin.h:2021:3: error: implicit declaration of function 'trace_rcu_kfree_callback' [-Werror=implicit-function-declaration] trace_rcu_kfree_callback(rdp->rsp->name, rhp, ^~~~~~~~~~~~~~~~~~~~~~~~ Cyclomatic Complexity 5 include/linux/compiler.h:__read_once_size Cyclomatic Complexity 5 include/linux/compiler.h:__write_once_size Cyclomatic Complexity 1 arch/x86/include/asm/bitops.h:constant_test_bit Cyclomatic Complexity 1 arch/x86/include/asm/bitops.h:variable_test_bit Cyclomatic Complexity 1 arch/x86/include/asm/arch_hweight.h:__arch_hweight64 Cyclomatic Complexity 2 include/linux/bitops.h:hweight_long Cyclomatic Complexity 1 include/linux/kernel.h:tracing_off Cyclomatic Complexity 1 include/linux/kernel.h:ftrace_dump Cyclomatic Complexity 1 include/linux/list.h:INIT_LIST_HEAD Cyclomatic Complexity 2 include/linux/list.h:__list_add Cyclomatic Complexity 1 include/linux/list.h:list_add Cyclomatic Complexity 1 include/linux/list.h:list_add_tail Cyclomatic Complexity 1 include/linux/list.h:__list_del Cyclomatic Complexity 2 include/linux/list.h:__list_del_entry Cyclomatic Complexity 1 include/linux/list.h:list_del_init Cyclomatic Complexity 1 include/linux/list.h:list_empty Cyclomatic Complexity 1 include/linux/percpu-defs.h:__this_cpu_preempt_check Cyclomatic Complexity 1 arch/x86/include/asm/current.h:get_current Cyclomatic Complexity 3 include/linux/bitmap.h:bitmap_zero Cyclomatic Complexity 3 include/linux/bitmap.h:bitmap_and Cyclomatic Complexity 3 include/linux/bitmap.h:bitmap_subset Cyclomatic Complexity 3 include/linux/bitmap.h:bitmap_empty Cyclomatic Complexity 3 include/linux/bitmap.h:bitmap_weight Cyclomatic Complexity 1 include/linux/cpumask.h:cpumask_check Cyclomatic Complexity 1 include/linux/cpumask.h:cpumask_next Cyclomatic Complexity 1 include/linux/cpumask.h:cpumask_test_cpu Cyclomatic Complexity 1 include/linux/cpumask.h:cpumask_clear Cyclomatic Complexity 1 include/linux/cpumask.h:cpumask_and Cyclomatic Complexity 1 include/linux/cpumask.h:cpumask_subset Cyclomatic Complexity 1 include/linux/cpumask.h:cpumask_empty Cyclomatic Complexity 1 include/linux/cpumask.h:cpulist_parse Cyclomatic Complexity 1 include/linux/cpumask.h:zalloc_cpumask_var Cyclomatic Complexity 1 include/linux/cpumask.h:alloc_bootmem_cpumask_var Cyclomatic Complexity 1 include/linux/cpumask.h:cpumask_available Cyclomatic Complexity 1 include/linux/cpumask.h:get_cpu_mask Cyclomatic Complexity 1 arch/x86/include/asm/paravirt.h:arch_local_save_flags Cyclomatic Complexity 1 arch/x86/include/asm/paravirt.h:arch_local_irq_restore Cyclomatic Complexity 1 arch/x86/include/asm/paravirt.h:arch_local_irq_disable Cyclomatic Complexity 1 arch/x86/include/asm/paravirt.h:arch_local_irq_save Cyclomatic Complexity 1 include/linux/err.h:IS_ERR Cyclomatic Complexity 1 arch/x86/include/asm/irqflags.h:arch_irqs_disabled_flags Cyclomatic Complexity 1 arch/x86/include/asm/atomic.h:atomic_read Cyclomatic Complexity 1 arch/x86/include/asm/atomic.h:atomic_set Cyclomatic Complexity 1 arch/x86/include/asm/atomic.h:atomic_add Cyclomatic Complexity 1 arch/x86/include/asm/atomic.h:atomic_inc Cyclomatic Complexity 1 arch/x86/include/asm/atomic.h:atomic_dec_and_test Cyclomatic Complexity 1 arch/x86/include/asm/atomic.h:atomic_add_return Cyclomatic Complexity 1 arch/x86/include/asm/atomic.h:atomic_cmpxchg Cyclomatic Complexity 1 arch/x86/include/asm/atomic.h:atomic_xchg Cyclomatic Complexity 1 arch/x86/include/asm/atomic.h:atomic_and Cyclomatic Complexity 1 arch/x86/include/asm/atomic64_64.h:atomic64_read Cyclomatic Complexity 1 arch/x86/include/asm/atomic64_64.h:atomic64_set Cyclomatic Complexity 1 arch/x86/include/asm/atomic64_64.h:atomic64_add Cyclomatic Complexity 1 include/linux/atomic.h:atomic_andnot Cyclomatic Complexity 1 include/asm-generic/atomic-long.h:atomic_long_read Cyclomatic Complexity 1 include/asm-generic/atomic-long.h:atomic_long_set Cyclomatic Complexity 1 include/asm-generic/atomic-long.h:atomic_long_add Cyclomatic Complexity 2 include/linux/thread_info.h:test_ti_thread_flag Cyclomatic Complexity 1 arch/x86/include/asm/preempt.h:preempt_count Cyclomatic Complexity 5 arch/x86/include/asm/preempt.h:__preempt_count_add Cyclomatic Complexity 1 arch/x86/include/asm/preempt.h:__preempt_count_dec_and_test Cyclomatic Complexity 1 include/linux/bottom_half.h:__local_bh_disable_ip Cyclomatic Complexity 1 include/linux/bottom_half.h:local_bh_disable Cyclomatic Complexity 1 include/linux/bottom_half.h:local_bh_enable Cyclomatic Complexity 1 include/linux/lockdep.h:lock_is_held Cyclomatic Complexity 1 include/linux/spinlock.h:spinlock_check Cyclomatic Complexity 1 include/linux/spinlock.h:spin_lock Cyclomatic Complexity 1 include/linux/spinlock.h:spin_unlock Cyclomatic Complexity 1 include/linux/rcutree.h:synchronize_rcu_bh_expedited Cyclomatic Complexity 1 include/linux/rcupdate.h:rcu_lock_acquire Cyclomatic Complexity 1 include/linux/rcupdate.h:rcu_lock_release Cyclomatic Complexity 1 include/linux/completion.h:__init_completion Cyclomatic Complexity 1 include/linux/workqueue.h:__init_work Cyclomatic Complexity 1 include/linux/workqueue.h:queue_work Cyclomatic Complexity 1 include/linux/sched.h:is_idle_task Cyclomatic Complexity 1 include/linux/sched.h:task_thread_info Cyclomatic Complexity 1 include/linux/sched.h:test_tsk_thread_flag Cyclomatic Complexity 1 include/linux/sched.h:_cond_resched Cyclomatic Complexity 1 include/linux/sched.h:need_resched Cyclomatic Complexity 1 include/linux/sched.h:task_cpu Cyclomatic Complexity 1 include/linux/nmi.h:touch_softlockup_watchdog Cyclomatic Complexity 1 include/linux/nmi.h:arch_touch_nmi_watchdog Cyclomatic Complexity 1 include/linux/nmi.h:touch_nmi_watchdog Cyclomatic Complexity 1 include/linux/nmi.h:trigger_single_cpu_backtrace Cyclomatic Complexity 1 include/linux/irq_work.h:init_irq_work Cyclomatic Complexity 1 include/linux/cpu.h:cpus_read_lock Cyclomatic Complexity 1 include/linux/cpu.h:cpus_read_unlock Cyclomatic Complexity 1 include/linux/cpu.h:get_online_cpus Cyclomatic Complexity 1 include/linux/cpu.h:put_online_cpus Cyclomatic Complexity 1 include/linux/kernel_stat.h:kstat_softirqs_cpu Cyclomatic Complexity 1 include/linux/sched/signal.h:signal_pending Cyclomatic Complexity 1 kernel/rcu/rcu_segcblist.h:rcu_cblist_dequeued_lazy Cyclomatic Complexity 1 kernel/rcu/rcu_segcblist.h:rcu_segcblist_empty Cyclomatic Complexity 1 kernel/rcu/rcu_segcblist.h:rcu_segcblist_n_cbs Cyclomatic Complexity 1 kernel/rcu/rcu_segcblist.h:rcu_segcblist_n_lazy_cbs Cyclomatic Complexity 1 kernel/rcu/rcu_segcblist.h:rcu_segcblist_n_nonlazy_cbs Cyclomatic Complexity 1 kernel/rcu/rcu_segcblist.h:rcu_segcblist_is_enabled Cyclomatic Complexity 1 kernel/rcu/rcu_segcblist.h:rcu_segcblist_restempty vim +/trace_rcu_kfree_callback +2021 kernel/rcu/tree_plugin.h 3fbfbf7a3b kernel/rcutree_plugin.h Paul E. McKenney 2012-08-19 2016 d1e43fa5f8 kernel/rcutree_plugin.h Frederic Weisbecker 2013-03-26 2017 if (!rcu_is_nocb_cpu(rdp->cpu)) c271d3a957 kernel/rcu/tree_plugin.h Pranith Kumar 2014-07-08 2018 return false; 96d3fd0d31 kernel/rcu/tree_plugin.h Paul E. McKenney 2013-10-04 2019 __call_rcu_nocb_enqueue(rdp, rhp, &rhp->next, 1, lazy, flags); 21e7a60874 kernel/rcutree_plugin.h Paul E. McKenney 2013-02-09 @2020 if (__is_kfree_rcu_offset((unsigned long)rhp->func)) 21e7a60874 kernel/rcutree_plugin.h Paul E. McKenney 2013-02-09 @2021 trace_rcu_kfree_callback(rdp->rsp->name, rhp, 21e7a60874 kernel/rcutree_plugin.h Paul E. McKenney 2013-02-09 2022 (unsigned long)rhp->func, 756cbf6bef kernel/rcutree_plugin.h Paul E. McKenney 2013-08-15 2023 -atomic_long_read(&rdp->nocb_q_count_lazy), 756cbf6bef kernel/rcutree_plugin.h Paul E. McKenney 2013-08-15 2024 -atomic_long_read(&rdp->nocb_q_count)); 21e7a60874 kernel/rcutree_plugin.h Paul E. McKenney 2013-02-09 2025 else 21e7a60874 kernel/rcutree_plugin.h Paul E. McKenney 2013-02-09 2026 trace_rcu_callback(rdp->rsp->name, rhp, 756cbf6bef kernel/rcutree_plugin.h Paul E. McKenney 2013-08-15 2027 -atomic_long_read(&rdp->nocb_q_count_lazy), 756cbf6bef kernel/rcutree_plugin.h Paul E. McKenney 2013-08-15 2028 -atomic_long_read(&rdp->nocb_q_count)); 1772947bd0 kernel/rcu/tree_plugin.h Paul E. McKenney 2014-08-12 2029 1772947bd0 kernel/rcu/tree_plugin.h Paul E. McKenney 2014-08-12 2030 /* 1772947bd0 kernel/rcu/tree_plugin.h Paul E. McKenney 2014-08-12 2031 * If called from an extended quiescent state with interrupts 1772947bd0 kernel/rcu/tree_plugin.h Paul E. McKenney 2014-08-12 2032 * disabled, invoke the RCU core in order to allow the idle-entry 1772947bd0 kernel/rcu/tree_plugin.h Paul E. McKenney 2014-08-12 2033 * deferred-wakeup check to function. 1772947bd0 kernel/rcu/tree_plugin.h Paul E. McKenney 2014-08-12 2034 */ 1772947bd0 kernel/rcu/tree_plugin.h Paul E. McKenney 2014-08-12 2035 if (irqs_disabled_flags(flags) && 1772947bd0 kernel/rcu/tree_plugin.h Paul E. McKenney 2014-08-12 2036 !rcu_is_watching() && 1772947bd0 kernel/rcu/tree_plugin.h Paul E. McKenney 2014-08-12 2037 cpu_online(smp_processor_id())) 1772947bd0 kernel/rcu/tree_plugin.h Paul E. McKenney 2014-08-12 2038 invoke_rcu_core(); 1772947bd0 kernel/rcu/tree_plugin.h Paul E. McKenney 2014-08-12 2039 c271d3a957 kernel/rcu/tree_plugin.h Pranith Kumar 2014-07-08 2040 return true; 3fbfbf7a3b kernel/rcutree_plugin.h Paul E. McKenney 2012-08-19 2041 } 3fbfbf7a3b kernel/rcutree_plugin.h Paul E. McKenney 2012-08-19 2042 :::::: The code at line 2021 was first introduced by commit :::::: 21e7a6087480451804124cee27c0a7d0a7de1564 rcu: Add event tracing for no-CBs CPUs' callback registration :::::: TO: Paul E. McKenney :::::: CC: Paul E. McKenney --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation