CC: [email protected]
CC: [email protected]
TO: Saravana Kannan <[email protected]>
CC: Chanwoo Choi <[email protected]>
CC: Sibi Sankar <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux.git 
devfreq-testing
head:   5857e3d1820d85e10321ec180ed88e780fd0ec3e
commit: d678890dcdf858c25d2789793a35a81c4311e972 [2/4] PM / devfreq: Add cpu 
based scaling support to passive governor
:::::: branch date: 12 hours ago
:::::: commit date: 12 hours ago
config: x86_64-randconfig-m001-20211210 
(https://download.01.org/0day-ci/archive/20211211/[email protected]/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0

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

smatch warnings:
drivers/devfreq/governor_passive.c:346 cpufreq_passive_register_notifier() 
warn: possible memory leak of 'parent_cpu_data'

vim +/parent_cpu_data +346 drivers/devfreq/governor_passive.c

d678890dcdf858 Saravana Kannan 2021-03-02  269  
d678890dcdf858 Saravana Kannan 2021-03-02  270  static int 
cpufreq_passive_register_notifier(struct devfreq *devfreq)
d678890dcdf858 Saravana Kannan 2021-03-02  271  {
d678890dcdf858 Saravana Kannan 2021-03-02  272          struct 
devfreq_passive_data *p_data
d678890dcdf858 Saravana Kannan 2021-03-02  273                          = 
(struct devfreq_passive_data *)devfreq->data;
d678890dcdf858 Saravana Kannan 2021-03-02  274          struct device *dev = 
devfreq->dev.parent;
d678890dcdf858 Saravana Kannan 2021-03-02  275          struct opp_table 
*opp_table = NULL;
d678890dcdf858 Saravana Kannan 2021-03-02  276          struct devfreq_cpu_data 
*parent_cpu_data;
d678890dcdf858 Saravana Kannan 2021-03-02  277          struct cpufreq_policy 
*policy;
d678890dcdf858 Saravana Kannan 2021-03-02  278          struct device *cpu_dev;
d678890dcdf858 Saravana Kannan 2021-03-02  279          unsigned int cpu;
d678890dcdf858 Saravana Kannan 2021-03-02  280          int ret;
d678890dcdf858 Saravana Kannan 2021-03-02  281  
d678890dcdf858 Saravana Kannan 2021-03-02  282          
p_data->nb.notifier_call = cpufreq_passive_notifier_call;
d678890dcdf858 Saravana Kannan 2021-03-02  283          ret = 
cpufreq_register_notifier(&p_data->nb, CPUFREQ_TRANSITION_NOTIFIER);
d678890dcdf858 Saravana Kannan 2021-03-02  284          if (ret) {
d678890dcdf858 Saravana Kannan 2021-03-02  285                  dev_err(dev, 
"failed to register cpufreq notifier\n");
d678890dcdf858 Saravana Kannan 2021-03-02  286                  
p_data->nb.notifier_call = NULL;
d678890dcdf858 Saravana Kannan 2021-03-02  287                  goto err;
d678890dcdf858 Saravana Kannan 2021-03-02  288          }
d678890dcdf858 Saravana Kannan 2021-03-02  289  
d678890dcdf858 Saravana Kannan 2021-03-02  290          
for_each_possible_cpu(cpu) {
d678890dcdf858 Saravana Kannan 2021-03-02  291                  if 
(p_data->cpu_data[cpu])
d678890dcdf858 Saravana Kannan 2021-03-02  292                          
continue;
d678890dcdf858 Saravana Kannan 2021-03-02  293  
d678890dcdf858 Saravana Kannan 2021-03-02  294                  policy = 
cpufreq_cpu_get(cpu);
d678890dcdf858 Saravana Kannan 2021-03-02  295                  if (!policy) {
d678890dcdf858 Saravana Kannan 2021-03-02  296                          ret = 
-EPROBE_DEFER;
d678890dcdf858 Saravana Kannan 2021-03-02  297                          goto 
err;
d678890dcdf858 Saravana Kannan 2021-03-02  298                  }
d678890dcdf858 Saravana Kannan 2021-03-02  299  
d678890dcdf858 Saravana Kannan 2021-03-02  300                  parent_cpu_data 
= kzalloc(sizeof(*parent_cpu_data),
d678890dcdf858 Saravana Kannan 2021-03-02  301                                  
                GFP_KERNEL);
d678890dcdf858 Saravana Kannan 2021-03-02  302                  if 
(!parent_cpu_data) {
d678890dcdf858 Saravana Kannan 2021-03-02  303                          
cpufreq_cpu_put(policy);
d678890dcdf858 Saravana Kannan 2021-03-02  304                          ret = 
-ENOMEM;
d678890dcdf858 Saravana Kannan 2021-03-02  305                          goto 
err;
d678890dcdf858 Saravana Kannan 2021-03-02  306                  }
d678890dcdf858 Saravana Kannan 2021-03-02  307  
d678890dcdf858 Saravana Kannan 2021-03-02  308                  cpu_dev = 
get_cpu_device(cpu);
d678890dcdf858 Saravana Kannan 2021-03-02  309                  if (!cpu_dev) {
d678890dcdf858 Saravana Kannan 2021-03-02  310                          
dev_err(dev, "failed to get cpu device\n");
d678890dcdf858 Saravana Kannan 2021-03-02  311                          
cpufreq_cpu_put(policy);
d678890dcdf858 Saravana Kannan 2021-03-02  312                          ret = 
-ENODEV;
d678890dcdf858 Saravana Kannan 2021-03-02  313                          goto 
err;
d678890dcdf858 Saravana Kannan 2021-03-02  314                  }
d678890dcdf858 Saravana Kannan 2021-03-02  315  
d678890dcdf858 Saravana Kannan 2021-03-02  316                  opp_table = 
dev_pm_opp_get_opp_table(cpu_dev);
d678890dcdf858 Saravana Kannan 2021-03-02  317                  if 
(IS_ERR(opp_table)) {
d678890dcdf858 Saravana Kannan 2021-03-02  318                          
dev_err(dev, "failed to get opp_table of cpu%d\n", cpu);
d678890dcdf858 Saravana Kannan 2021-03-02  319                          
cpufreq_cpu_put(policy);
d678890dcdf858 Saravana Kannan 2021-03-02  320                          ret = 
PTR_ERR(opp_table);
d678890dcdf858 Saravana Kannan 2021-03-02  321                          goto 
err;
d678890dcdf858 Saravana Kannan 2021-03-02  322                  }
d678890dcdf858 Saravana Kannan 2021-03-02  323  
d678890dcdf858 Saravana Kannan 2021-03-02  324                  
parent_cpu_data->dev = cpu_dev;
d678890dcdf858 Saravana Kannan 2021-03-02  325                  
parent_cpu_data->opp_table = opp_table;
d678890dcdf858 Saravana Kannan 2021-03-02  326                  
parent_cpu_data->first_cpu = cpumask_first(policy->related_cpus);
d678890dcdf858 Saravana Kannan 2021-03-02  327                  
parent_cpu_data->cur_freq = policy->cur;
d678890dcdf858 Saravana Kannan 2021-03-02  328                  
parent_cpu_data->min_freq = policy->cpuinfo.min_freq;
d678890dcdf858 Saravana Kannan 2021-03-02  329                  
parent_cpu_data->max_freq = policy->cpuinfo.max_freq;
d678890dcdf858 Saravana Kannan 2021-03-02  330  
d678890dcdf858 Saravana Kannan 2021-03-02  331                  
p_data->cpu_data[cpu] = parent_cpu_data;
d678890dcdf858 Saravana Kannan 2021-03-02  332                  
cpufreq_cpu_put(policy);
d678890dcdf858 Saravana Kannan 2021-03-02  333          }
d678890dcdf858 Saravana Kannan 2021-03-02  334  
d678890dcdf858 Saravana Kannan 2021-03-02  335          
mutex_lock(&devfreq->lock);
d678890dcdf858 Saravana Kannan 2021-03-02  336          ret = 
devfreq_update_target(devfreq, 0L);
d678890dcdf858 Saravana Kannan 2021-03-02  337          
mutex_unlock(&devfreq->lock);
d678890dcdf858 Saravana Kannan 2021-03-02  338          if (ret)
d678890dcdf858 Saravana Kannan 2021-03-02  339                  dev_err(dev, 
"failed to update the frequency\n");
d678890dcdf858 Saravana Kannan 2021-03-02  340  
d678890dcdf858 Saravana Kannan 2021-03-02  341          return ret;
d678890dcdf858 Saravana Kannan 2021-03-02  342  
d678890dcdf858 Saravana Kannan 2021-03-02  343  err:
d678890dcdf858 Saravana Kannan 2021-03-02  344          
WARN_ON(cpufreq_passive_unregister_notifier(devfreq));
d678890dcdf858 Saravana Kannan 2021-03-02  345  
d678890dcdf858 Saravana Kannan 2021-03-02 @346          return ret;
d678890dcdf858 Saravana Kannan 2021-03-02  347  }
d678890dcdf858 Saravana Kannan 2021-03-02  348  

---
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