lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Wed, 16 Sep 2020 13:42:14 -0700
From:   "Paul E. McKenney" <paulmck@...nel.org>
To:     kernel test robot <lkp@...el.com>
Cc:     kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org
Subject: Re: [rcu:dev.2020.09.10a 35/35] kernel/rcu/rcutorture.c:698:20:
 error: 'show_rcu_tasks_classic_gp_kthread' undeclared here (not in a
 function)

On Thu, Sep 17, 2020 at 01:56:10AM +0800, kernel test robot wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev.2020.09.10a
> head:   ccb38b2f3e160fbfecedbd0c80bde97a7dfcbdec
> commit: ccb38b2f3e160fbfecedbd0c80bde97a7dfcbdec [35/35] rcutorture: Make grace-period kthread report match RCU flavor being tested
> config: sh-allmodconfig (attached as .config)
> compiler: sh4-linux-gcc (GCC) 9.3.0
> reproduce (this is a W=1 build):
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         git checkout ccb38b2f3e160fbfecedbd0c80bde97a7dfcbdec
>         # save the attached .config to linux build tree
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=sh 
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@...el.com>
> 
> All errors (new ones prefixed by >>):
> 
> >> kernel/rcu/rcutorture.c:698:20: error: 'show_rcu_tasks_classic_gp_kthread' undeclared here (not in a function)
>      698 |  .gp_kthread_dbg = show_rcu_tasks_classic_gp_kthread,
>          |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >> kernel/rcu/rcutorture.c:768:20: error: 'show_rcu_tasks_rude_gp_kthread' undeclared here (not in a function)
>      768 |  .gp_kthread_dbg = show_rcu_tasks_rude_gp_kthread,
>          |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >> kernel/rcu/rcutorture.c:807:20: error: 'show_rcu_tasks_trace_gp_kthread' undeclared here (not in a function)
>      807 |  .gp_kthread_dbg = show_rcu_tasks_trace_gp_kthread,
>          |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Good catch, folding in fix with attribution, thank you!

							Thanx, Paul

> # https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git/commit/?id=ccb38b2f3e160fbfecedbd0c80bde97a7dfcbdec
> git remote add rcu https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
> git fetch --no-tags rcu dev.2020.09.10a
> git checkout ccb38b2f3e160fbfecedbd0c80bde97a7dfcbdec
> vim +/show_rcu_tasks_classic_gp_kthread +698 kernel/rcu/rcutorture.c
> 
>    685	
>    686	static struct rcu_torture_ops tasks_ops = {
>    687		.ttype		= RCU_TASKS_FLAVOR,
>    688		.init		= rcu_sync_torture_init,
>    689		.readlock	= tasks_torture_read_lock,
>    690		.read_delay	= rcu_read_delay,  /* just reuse rcu's version. */
>    691		.readunlock	= tasks_torture_read_unlock,
>    692		.get_gp_seq	= rcu_no_completed,
>    693		.deferred_free	= rcu_tasks_torture_deferred_free,
>    694		.sync		= synchronize_rcu_tasks,
>    695		.exp_sync	= synchronize_rcu_mult_test,
>    696		.call		= call_rcu_tasks,
>    697		.cb_barrier	= rcu_barrier_tasks,
>  > 698		.gp_kthread_dbg	= show_rcu_tasks_classic_gp_kthread,
>    699		.fqs		= NULL,
>    700		.stats		= NULL,
>    701		.irq_capable	= 1,
>    702		.slow_gps	= 1,
>    703		.name		= "tasks"
>    704	};
>    705	
>    706	/*
>    707	 * Definitions for trivial CONFIG_PREEMPT=n-only torture testing.
>    708	 * This implementation does not necessarily work well with CPU hotplug.
>    709	 */
>    710	
>    711	static void synchronize_rcu_trivial(void)
>    712	{
>    713		int cpu;
>    714	
>    715		for_each_online_cpu(cpu) {
>    716			rcutorture_sched_setaffinity(current->pid, cpumask_of(cpu));
>    717			WARN_ON_ONCE(raw_smp_processor_id() != cpu);
>    718		}
>    719	}
>    720	
>    721	static int rcu_torture_read_lock_trivial(void) __acquires(RCU)
>    722	{
>    723		preempt_disable();
>    724		return 0;
>    725	}
>    726	
>    727	static void rcu_torture_read_unlock_trivial(int idx) __releases(RCU)
>    728	{
>    729		preempt_enable();
>    730	}
>    731	
>    732	static struct rcu_torture_ops trivial_ops = {
>    733		.ttype		= RCU_TRIVIAL_FLAVOR,
>    734		.init		= rcu_sync_torture_init,
>    735		.readlock	= rcu_torture_read_lock_trivial,
>    736		.read_delay	= rcu_read_delay,  /* just reuse rcu's version. */
>    737		.readunlock	= rcu_torture_read_unlock_trivial,
>    738		.get_gp_seq	= rcu_no_completed,
>    739		.sync		= synchronize_rcu_trivial,
>    740		.exp_sync	= synchronize_rcu_trivial,
>    741		.fqs		= NULL,
>    742		.stats		= NULL,
>    743		.irq_capable	= 1,
>    744		.name		= "trivial"
>    745	};
>    746	
>    747	/*
>    748	 * Definitions for rude RCU-tasks torture testing.
>    749	 */
>    750	
>    751	static void rcu_tasks_rude_torture_deferred_free(struct rcu_torture *p)
>    752	{
>    753		call_rcu_tasks_rude(&p->rtort_rcu, rcu_torture_cb);
>    754	}
>    755	
>    756	static struct rcu_torture_ops tasks_rude_ops = {
>    757		.ttype		= RCU_TASKS_RUDE_FLAVOR,
>    758		.init		= rcu_sync_torture_init,
>    759		.readlock	= rcu_torture_read_lock_trivial,
>    760		.read_delay	= rcu_read_delay,  /* just reuse rcu's version. */
>    761		.readunlock	= rcu_torture_read_unlock_trivial,
>    762		.get_gp_seq	= rcu_no_completed,
>    763		.deferred_free	= rcu_tasks_rude_torture_deferred_free,
>    764		.sync		= synchronize_rcu_tasks_rude,
>    765		.exp_sync	= synchronize_rcu_tasks_rude,
>    766		.call		= call_rcu_tasks_rude,
>    767		.cb_barrier	= rcu_barrier_tasks_rude,
>  > 768		.gp_kthread_dbg	= show_rcu_tasks_rude_gp_kthread,
>    769		.fqs		= NULL,
>    770		.stats		= NULL,
>    771		.irq_capable	= 1,
>    772		.name		= "tasks-rude"
>    773	};
>    774	
>    775	/*
>    776	 * Definitions for tracing RCU-tasks torture testing.
>    777	 */
>    778	
>    779	static int tasks_tracing_torture_read_lock(void)
>    780	{
>    781		rcu_read_lock_trace();
>    782		return 0;
>    783	}
>    784	
>    785	static void tasks_tracing_torture_read_unlock(int idx)
>    786	{
>    787		rcu_read_unlock_trace();
>    788	}
>    789	
>    790	static void rcu_tasks_tracing_torture_deferred_free(struct rcu_torture *p)
>    791	{
>    792		call_rcu_tasks_trace(&p->rtort_rcu, rcu_torture_cb);
>    793	}
>    794	
>    795	static struct rcu_torture_ops tasks_tracing_ops = {
>    796		.ttype		= RCU_TASKS_TRACING_FLAVOR,
>    797		.init		= rcu_sync_torture_init,
>    798		.readlock	= tasks_tracing_torture_read_lock,
>    799		.read_delay	= srcu_read_delay,  /* just reuse srcu's version. */
>    800		.readunlock	= tasks_tracing_torture_read_unlock,
>    801		.get_gp_seq	= rcu_no_completed,
>    802		.deferred_free	= rcu_tasks_tracing_torture_deferred_free,
>    803		.sync		= synchronize_rcu_tasks_trace,
>    804		.exp_sync	= synchronize_rcu_tasks_trace,
>    805		.call		= call_rcu_tasks_trace,
>    806		.cb_barrier	= rcu_barrier_tasks_trace,
>  > 807		.gp_kthread_dbg	= show_rcu_tasks_trace_gp_kthread,
>    808		.fqs		= NULL,
>    809		.stats		= NULL,
>    810		.irq_capable	= 1,
>    811		.slow_gps	= 1,
>    812		.name		= "tasks-tracing"
>    813	};
>    814	
> 
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org


Powered by blists - more mailing lists