CC: [email protected]
CC: [email protected]
TO: Daniel Bristot de Oliveira <[email protected]>
CC: "Steven Rostedt (VMware)" <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   4634129ad9fdc89d10b597fc6f8f4336fb61e105
commit: 498627b4ac85780b9962ed9b5c5abbefd884ef8e trace/osnoise: Fix return 
value on osnoise_init_hotplug_support
date:   7 months ago
:::::: branch date: 17 hours ago
:::::: commit date: 7 months ago
compiler: arc-elf-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


cppcheck possible warnings: (new ones prefixed by >>, may not real problems)

>> kernel/trace/trace_osnoise.c:1611:8: warning: snprintf format string 
>> requires 2 parameters but only 1 is given. [wrongPrintfScanfArgNum]
    len = snprintf(NULL, 0, "%*pbln", cpumask_pr_args(&osnoise_cpumask)) + 1;
          ^
   kernel/trace/trace_osnoise.c:1618:8: warning: snprintf format string 
requires 2 parameters but only 1 is given. [wrongPrintfScanfArgNum]
    len = snprintf(mask_str, len, "%*pbln", cpumask_pr_args(&osnoise_cpumask));
          ^

vim +1471 kernel/trace/trace_osnoise.c

c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1453  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1454  /*
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1455   * start_kthread - 
Start a workload tread
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1456   */
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1457  static int 
start_kthread(unsigned int cpu)
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1458  {
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1459      struct 
task_struct *kthread;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1460      void *main = 
osnoise_main;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1461      char comm[24];
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1462  
a955d7eac1779b Daniel Bristot de Oliveira 2021-06-22  1463  #ifdef 
CONFIG_TIMERLAT_TRACER
a955d7eac1779b Daniel Bristot de Oliveira 2021-06-22  1464      if 
(osnoise_data.timerlat_tracer) {
a955d7eac1779b Daniel Bristot de Oliveira 2021-06-22  1465              
snprintf(comm, 24, "timerlat/%d", cpu);
a955d7eac1779b Daniel Bristot de Oliveira 2021-06-22  1466              main = 
timerlat_main;
a955d7eac1779b Daniel Bristot de Oliveira 2021-06-22  1467      } else {
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1468              
snprintf(comm, 24, "osnoise/%d", cpu);
a955d7eac1779b Daniel Bristot de Oliveira 2021-06-22  1469      }
a955d7eac1779b Daniel Bristot de Oliveira 2021-06-22  1470  #else
a955d7eac1779b Daniel Bristot de Oliveira 2021-06-22 @1471      snprintf(comm, 
24, "osnoise/%d", cpu);
a955d7eac1779b Daniel Bristot de Oliveira 2021-06-22  1472  #endif
a955d7eac1779b Daniel Bristot de Oliveira 2021-06-22  1473      kthread = 
kthread_create_on_cpu(main, NULL, cpu, comm);
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1474  
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1475      if 
(IS_ERR(kthread)) {
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1476              
pr_err(BANNER "could not start sampling thread\n");
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1477              
stop_per_cpu_kthreads();
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1478              return 
-ENOMEM;
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1479      }
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1480  
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1481      
per_cpu(per_cpu_osnoise_var, cpu).kthread = kthread;
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1482      
wake_up_process(kthread);
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1483  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1484      return 0;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1485  }
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1486  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1487  /*
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1488   * 
start_per_cpu_kthread - Kick off per-cpu osnoise sampling kthreads
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1489   *
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1490   * This starts the 
kernel thread that will look for osnoise on many
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1491   * cpus.
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1492   */
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1493  static int 
start_per_cpu_kthreads(struct trace_array *tr)
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1494  {
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1495      struct cpumask 
*current_mask = &save_cpumask;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1496      int retval;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1497      int cpu;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1498  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1499      
get_online_cpus();
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1500      /*
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1501       * Run only on 
CPUs in which trace and osnoise are allowed to run.
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1502       */
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1503      
cpumask_and(current_mask, tr->tracing_cpumask, &osnoise_cpumask);
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1504      /*
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1505       * And the CPU 
is online.
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1506       */
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1507      
cpumask_and(current_mask, cpu_online_mask, current_mask);
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1508  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1509      
for_each_possible_cpu(cpu)
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1510              
per_cpu(per_cpu_osnoise_var, cpu).kthread = NULL;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1511  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1512      
for_each_cpu(cpu, current_mask) {
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1513              retval 
= start_kthread(cpu);
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1514              if 
(retval) {
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1515                      
stop_per_cpu_kthreads();
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1516                      
return retval;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1517              }
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1518      }
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1519  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1520      
put_online_cpus();
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1521  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1522      return 0;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1523  }
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1524  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1525  #ifdef 
CONFIG_HOTPLUG_CPU
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1526  static void 
osnoise_hotplug_workfn(struct work_struct *dummy)
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1527  {
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1528      struct 
trace_array *tr = osnoise_trace;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1529      unsigned int 
cpu = smp_processor_id();
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1530  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1531  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1532      
mutex_lock(&trace_types_lock);
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1533  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1534      if 
(!osnoise_busy)
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1535              goto 
out_unlock_trace;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1536  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1537      
mutex_lock(&interface_lock);
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1538      
get_online_cpus();
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1539  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1540      if 
(!cpumask_test_cpu(cpu, &osnoise_cpumask))
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1541              goto 
out_unlock;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1542  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1543      if 
(!cpumask_test_cpu(cpu, tr->tracing_cpumask))
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1544              goto 
out_unlock;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1545  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1546      
start_kthread(cpu);
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1547  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1548  out_unlock:
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1549      
put_online_cpus();
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1550      
mutex_unlock(&interface_lock);
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1551  out_unlock_trace:
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1552      
mutex_unlock(&trace_types_lock);
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1553  }
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1554  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1555  static 
DECLARE_WORK(osnoise_hotplug_work, osnoise_hotplug_workfn);
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1556  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1557  /*
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1558   * osnoise_cpu_init 
- CPU hotplug online callback function
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1559   */
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1560  static int 
osnoise_cpu_init(unsigned int cpu)
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1561  {
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1562      
schedule_work_on(cpu, &osnoise_hotplug_work);
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1563      return 0;
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1564  }
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1565  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1566  /*
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1567   * osnoise_cpu_die 
- CPU hotplug offline callback function
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1568   */
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1569  static int 
osnoise_cpu_die(unsigned int cpu)
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1570  {
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1571      
stop_kthread(cpu);
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1572      return 0;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1573  }
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1574  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1575  static void 
osnoise_init_hotplug_support(void)
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1576  {
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1577      int ret;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1578  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1579      ret = 
cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "trace/osnoise:online",
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1580                      
        osnoise_cpu_init, osnoise_cpu_die);
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1581      if (ret < 0)
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1582              
pr_warn(BANNER "Error to init cpu hotplug support\n");
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1583  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1584      return;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1585  }
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1586  #else /* 
CONFIG_HOTPLUG_CPU */
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1587  static void 
osnoise_init_hotplug_support(void)
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1588  {
498627b4ac8578 Daniel Bristot de Oliveira 2021-06-28  1589      return;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1590  }
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1591  #endif /* 
CONFIG_HOTPLUG_CPU */
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1592  
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1593  /*
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1594   * 
osnoise_cpus_read - Read function for reading the "cpus" file
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1595   * @filp: The 
active open file structure
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1596   * @ubuf: The 
userspace provided buffer to read value into
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1597   * @cnt: The 
maximum number of bytes to read
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1598   * @ppos: The 
current "file" position
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1599   *
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1600   * Prints the 
"cpus" output into the user-provided buffer.
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1601   */
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1602  static ssize_t
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1603  
osnoise_cpus_read(struct file *filp, char __user *ubuf, size_t count,
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1604                
loff_t *ppos)
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1605  {
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1606      char *mask_str;
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1607      int len;
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1608  
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1609      
mutex_lock(&interface_lock);
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1610  
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22 @1611      len = 
snprintf(NULL, 0, "%*pbl\n", cpumask_pr_args(&osnoise_cpumask)) + 1;
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1612      mask_str = 
kmalloc(len, GFP_KERNEL);
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1613      if (!mask_str) {
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1614              count = 
-ENOMEM;
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1615              goto 
out_unlock;
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1616      }
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1617  
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1618      len = 
snprintf(mask_str, len, "%*pbl\n", cpumask_pr_args(&osnoise_cpumask));
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1619      if (len >= 
count) {
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1620              count = 
-EINVAL;
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1621              goto 
out_free;
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1622      }
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1623  
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1624      count = 
simple_read_from_buffer(ubuf, count, ppos, mask_str, len);
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1625  
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1626  out_free:
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1627      kfree(mask_str);
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1628  out_unlock:
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1629      
mutex_unlock(&interface_lock);
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1630  
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1631      return count;
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1632  }
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1633  

:::::: The code at line 1471 was first introduced by commit
:::::: a955d7eac1779b437ceb24fc352026a2cbcec140 trace: Add timerlat tracer

:::::: TO: Daniel Bristot de Oliveira <[email protected]>
:::::: CC: Steven Rostedt (VMware) <[email protected]>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to