tree:   https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git 
rcu/dev
head:   b151f93a71fc9fecb560e823a92402d882516483
commit: b151f93a71fc9fecb560e823a92402d882516483 [62/62] torture: Eliminate 
torture_runnable
reproduce:
        # apt-get install sparse
        git checkout b151f93a71fc9fecb560e823a92402d882516483
        make ARCH=x86_64 allmodconfig
        make C=1 CF=-D__CHECK_ENDIAN__


sparse warnings: (new ones prefixed by >>)


vim +649 kernel/rcu/rcuperf.c

8704baab9 Paul E. McKenney 2015-12-31  638  
8704baab9 Paul E. McKenney 2015-12-31  639  static int __init
8704baab9 Paul E. McKenney 2015-12-31  640  rcu_perf_init(void)
8704baab9 Paul E. McKenney 2015-12-31  641  {
8704baab9 Paul E. McKenney 2015-12-31  642      long i;
8704baab9 Paul E. McKenney 2015-12-31  643      int firsterr = 0;
8704baab9 Paul E. McKenney 2015-12-31  644      static struct rcu_perf_ops 
*perf_ops[] = {
f60cb4d4c Paul E. McKenney 2017-04-19  645              &rcu_ops, &rcu_bh_ops, 
&srcu_ops, &srcud_ops, &sched_ops,
f1dbc54b9 Paul E. McKenney 2017-05-25  646              &tasks_ops,
8704baab9 Paul E. McKenney 2015-12-31  647      };
8704baab9 Paul E. McKenney 2015-12-31  648  
8704baab9 Paul E. McKenney 2015-12-31 @649      if 
(!torture_init_begin(perf_type, verbose, &perf_runnable))
8704baab9 Paul E. McKenney 2015-12-31  650              return -EBUSY;
8704baab9 Paul E. McKenney 2015-12-31  651  
8704baab9 Paul E. McKenney 2015-12-31  652      /* Process args and tell the 
world that the perf'er is on the job. */
8704baab9 Paul E. McKenney 2015-12-31  653      for (i = 0; i < 
ARRAY_SIZE(perf_ops); i++) {
8704baab9 Paul E. McKenney 2015-12-31  654              cur_ops = perf_ops[i];
8704baab9 Paul E. McKenney 2015-12-31  655              if (strcmp(perf_type, 
cur_ops->name) == 0)
8704baab9 Paul E. McKenney 2015-12-31  656                      break;
8704baab9 Paul E. McKenney 2015-12-31  657      }
8704baab9 Paul E. McKenney 2015-12-31  658      if (i == ARRAY_SIZE(perf_ops)) {
8704baab9 Paul E. McKenney 2015-12-31  659              pr_alert("rcu-perf: 
invalid perf type: \"%s\"\n",
8704baab9 Paul E. McKenney 2015-12-31  660                       perf_type);
8704baab9 Paul E. McKenney 2015-12-31  661              pr_alert("rcu-perf 
types:");
8704baab9 Paul E. McKenney 2015-12-31  662              for (i = 0; i < 
ARRAY_SIZE(perf_ops); i++)
8704baab9 Paul E. McKenney 2015-12-31  663                      pr_alert(" %s", 
perf_ops[i]->name);
8704baab9 Paul E. McKenney 2015-12-31  664              pr_alert("\n");
8704baab9 Paul E. McKenney 2015-12-31  665              firsterr = -EINVAL;
8704baab9 Paul E. McKenney 2015-12-31  666              goto unwind;
8704baab9 Paul E. McKenney 2015-12-31  667      }
8704baab9 Paul E. McKenney 2015-12-31  668      if (cur_ops->init)
8704baab9 Paul E. McKenney 2015-12-31  669              cur_ops->init();
8704baab9 Paul E. McKenney 2015-12-31  670  
8704baab9 Paul E. McKenney 2015-12-31  671      nrealwriters = 
compute_real(nwriters);
8704baab9 Paul E. McKenney 2015-12-31  672      nrealreaders = 
compute_real(nreaders);
8704baab9 Paul E. McKenney 2015-12-31  673      
atomic_set(&n_rcu_perf_reader_started, 0);
8704baab9 Paul E. McKenney 2015-12-31  674      
atomic_set(&n_rcu_perf_writer_started, 0);
8704baab9 Paul E. McKenney 2015-12-31  675      
atomic_set(&n_rcu_perf_writer_finished, 0);
8704baab9 Paul E. McKenney 2015-12-31  676      
rcu_perf_print_module_parms(cur_ops, "Start of test");
8704baab9 Paul E. McKenney 2015-12-31  677  
8704baab9 Paul E. McKenney 2015-12-31  678      /* Start up the kthreads. */
8704baab9 Paul E. McKenney 2015-12-31  679  
8704baab9 Paul E. McKenney 2015-12-31  680      if (shutdown) {
8704baab9 Paul E. McKenney 2015-12-31  681              
init_waitqueue_head(&shutdown_wq);
8704baab9 Paul E. McKenney 2015-12-31  682              firsterr = 
torture_create_kthread(rcu_perf_shutdown, NULL,
8704baab9 Paul E. McKenney 2015-12-31  683                                      
          shutdown_task);
8704baab9 Paul E. McKenney 2015-12-31  684              if (firsterr)
8704baab9 Paul E. McKenney 2015-12-31  685                      goto unwind;
8704baab9 Paul E. McKenney 2015-12-31  686              
schedule_timeout_uninterruptible(1);
8704baab9 Paul E. McKenney 2015-12-31  687      }
8704baab9 Paul E. McKenney 2015-12-31  688      reader_tasks = 
kcalloc(nrealreaders, sizeof(reader_tasks[0]),
8704baab9 Paul E. McKenney 2015-12-31  689                             
GFP_KERNEL);
8704baab9 Paul E. McKenney 2015-12-31  690      if (reader_tasks == NULL) {
8704baab9 Paul E. McKenney 2015-12-31  691              
VERBOSE_PERFOUT_ERRSTRING("out of memory");
8704baab9 Paul E. McKenney 2015-12-31  692              firsterr = -ENOMEM;
8704baab9 Paul E. McKenney 2015-12-31  693              goto unwind;
8704baab9 Paul E. McKenney 2015-12-31  694      }
8704baab9 Paul E. McKenney 2015-12-31  695      for (i = 0; i < nrealreaders; 
i++) {
6b558c4c7 Paul E. McKenney 2016-01-12  696              firsterr = 
torture_create_kthread(rcu_perf_reader, (void *)i,
8704baab9 Paul E. McKenney 2015-12-31  697                                      
          reader_tasks[i]);
8704baab9 Paul E. McKenney 2015-12-31  698              if (firsterr)
8704baab9 Paul E. McKenney 2015-12-31  699                      goto unwind;
8704baab9 Paul E. McKenney 2015-12-31  700      }
8704baab9 Paul E. McKenney 2015-12-31  701      while 
(atomic_read(&n_rcu_perf_reader_started) < nrealreaders)
8704baab9 Paul E. McKenney 2015-12-31  702              
schedule_timeout_uninterruptible(1);
8704baab9 Paul E. McKenney 2015-12-31  703      writer_tasks = 
kcalloc(nrealwriters, sizeof(reader_tasks[0]),
8704baab9 Paul E. McKenney 2015-12-31  704                             
GFP_KERNEL);
8704baab9 Paul E. McKenney 2015-12-31  705      writer_durations = 
kcalloc(nrealwriters, sizeof(*writer_durations),
8704baab9 Paul E. McKenney 2015-12-31  706                                 
GFP_KERNEL);
8704baab9 Paul E. McKenney 2015-12-31  707      writer_n_durations =
8704baab9 Paul E. McKenney 2015-12-31  708              kcalloc(nrealwriters, 
sizeof(*writer_n_durations),
8704baab9 Paul E. McKenney 2015-12-31  709                      GFP_KERNEL);
8704baab9 Paul E. McKenney 2015-12-31  710      if (!writer_tasks || 
!writer_durations || !writer_n_durations) {
8704baab9 Paul E. McKenney 2015-12-31  711              
VERBOSE_PERFOUT_ERRSTRING("out of memory");
8704baab9 Paul E. McKenney 2015-12-31  712              firsterr = -ENOMEM;
8704baab9 Paul E. McKenney 2015-12-31  713              goto unwind;
8704baab9 Paul E. McKenney 2015-12-31  714      }
8704baab9 Paul E. McKenney 2015-12-31  715      for (i = 0; i < nrealwriters; 
i++) {
8704baab9 Paul E. McKenney 2015-12-31  716              writer_durations[i] =
8704baab9 Paul E. McKenney 2015-12-31  717                      
kcalloc(MAX_MEAS, sizeof(*writer_durations[i]),
8704baab9 Paul E. McKenney 2015-12-31  718                              
GFP_KERNEL);
05dbbfe75 Wei Yongjun      2016-06-13  719              if 
(!writer_durations[i]) {
05dbbfe75 Wei Yongjun      2016-06-13  720                      firsterr = 
-ENOMEM;
8704baab9 Paul E. McKenney 2015-12-31  721                      goto unwind;
05dbbfe75 Wei Yongjun      2016-06-13  722              }
8704baab9 Paul E. McKenney 2015-12-31  723              firsterr = 
torture_create_kthread(rcu_perf_writer, (void *)i,
8704baab9 Paul E. McKenney 2015-12-31  724                                      
          writer_tasks[i]);
8704baab9 Paul E. McKenney 2015-12-31  725              if (firsterr)
8704baab9 Paul E. McKenney 2015-12-31  726                      goto unwind;
8704baab9 Paul E. McKenney 2015-12-31  727      }
8704baab9 Paul E. McKenney 2015-12-31  728      torture_init_end();
8704baab9 Paul E. McKenney 2015-12-31  729      return 0;
8704baab9 Paul E. McKenney 2015-12-31  730  
8704baab9 Paul E. McKenney 2015-12-31  731  unwind:
8704baab9 Paul E. McKenney 2015-12-31  732      torture_init_end();
8704baab9 Paul E. McKenney 2015-12-31  733      rcu_perf_cleanup();
8704baab9 Paul E. McKenney 2015-12-31  734      return firsterr;
8704baab9 Paul E. McKenney 2015-12-31  735  }
8704baab9 Paul E. McKenney 2015-12-31  736  

:::::: The code at line 649 was first introduced by commit
:::::: 8704baab9bc848b58c129fed6b591bb84ec02f41 rcutorture: Add RCU 
grace-period performance tests

:::::: TO: Paul E. McKenney <paul...@linux.vnet.ibm.com>
:::::: CC: Paul E. McKenney <paul...@linux.vnet.ibm.com>

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

Reply via email to