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]
