* [chanwoo:devfreq-testing 2/4] drivers/devfreq/governor_passive.c:346 cpufreq_passive_register_notifier() warn: possible memory leak of 'parent_cpu_data'
@ 2021-12-10 18:23 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-12-10 18:23 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 7080 bytes --]
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Saravana Kannan <skannan@codeaurora.org>
CC: Chanwoo Choi <cw00.choi@samsung.com>
CC: Sibi Sankar <sibis@codeaurora.org>
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/202112110259.0FocPe7i-lkp(a)intel.com/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 <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
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/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-12-10 18:23 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-12-10 18:23 [chanwoo:devfreq-testing 2/4] drivers/devfreq/governor_passive.c:346 cpufreq_passive_register_notifier() warn: possible memory leak of 'parent_cpu_data' kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.