Re: [PATCH] cpufreq: brcmstb-avs-cpufreq: avoid a stuck risk and UAF issue in brcm_avs_cpufreq_get()

From: kbuild test robot
Date: Sat Dec 28 2019 - 05:32:11 EST


Hi,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on pm/linux-next]
[also build test ERROR on v5.5-rc3 next-20191220]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url: https://github.com/0day-ci/linux/commits/qiwuchen55-gmail-com/cpufreq-brcmstb-avs-cpufreq-avoid-a-stuck-risk-and-UAF-issue-in-brcm_avs_cpufreq_get/20191228-141943
base: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next
config: arm-allmodconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 7.5.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=7.5.0 make.cross ARCH=arm

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@xxxxxxxxx>

All error/warnings (new ones prefixed by >>):

In file included from include/linux/pm_qos.h:10:0,
from include/linux/cpufreq.h:16,
from drivers/cpufreq/brcmstb-avs-cpufreq.c:44:
drivers/cpufreq/brcmstb-avs-cpufreq.c: In function 'brcm_avs_cpufreq_get':
>> drivers/cpufreq/brcmstb-avs-cpufreq.c:459:12: error: 'dev' undeclared (first use in this function); did you mean 'sev'?
dev_warn(dev, "cpu %d: CPUFreq policy not found\n", cpu);
^
include/linux/device.h:1776:12: note: in definition of macro 'dev_warn'
_dev_warn(dev, dev_fmt(fmt), ##__VA_ARGS__)
^~~
drivers/cpufreq/brcmstb-avs-cpufreq.c:459:12: note: each undeclared identifier is reported only once for each function it appears in
dev_warn(dev, "cpu %d: CPUFreq policy not found\n", cpu);
^
include/linux/device.h:1776:12: note: in definition of macro 'dev_warn'
_dev_warn(dev, dev_fmt(fmt), ##__VA_ARGS__)
^~~
In file included from include/uapi/linux/posix_types.h:5:0,
from include/uapi/linux/types.h:14,
from include/linux/compiler.h:180,
from include/linux/err.h:5,
from include/linux/clk.h:12,
from include/linux/cpufreq.h:11,
from drivers/cpufreq/brcmstb-avs-cpufreq.c:44:
>> include/linux/stddef.h:8:14: warning: return makes integer from pointer without a cast [-Wint-conversion]
#define NULL ((void *)0)
^
>> drivers/cpufreq/brcmstb-avs-cpufreq.c:460:10: note: in expansion of macro 'NULL'
return NULL;
^~~~
>> include/linux/stddef.h:8:14: warning: return makes integer from pointer without a cast [-Wint-conversion]
#define NULL ((void *)0)
^
drivers/cpufreq/brcmstb-avs-cpufreq.c:465:10: note: in expansion of macro 'NULL'
return NULL;
^~~~
--
In file included from include/linux/pm_qos.h:10:0,
from include/linux/cpufreq.h:16,
from drivers//cpufreq/brcmstb-avs-cpufreq.c:44:
drivers//cpufreq/brcmstb-avs-cpufreq.c: In function 'brcm_avs_cpufreq_get':
drivers//cpufreq/brcmstb-avs-cpufreq.c:459:12: error: 'dev' undeclared (first use in this function); did you mean 'sev'?
dev_warn(dev, "cpu %d: CPUFreq policy not found\n", cpu);
^
include/linux/device.h:1776:12: note: in definition of macro 'dev_warn'
_dev_warn(dev, dev_fmt(fmt), ##__VA_ARGS__)
^~~
drivers//cpufreq/brcmstb-avs-cpufreq.c:459:12: note: each undeclared identifier is reported only once for each function it appears in
dev_warn(dev, "cpu %d: CPUFreq policy not found\n", cpu);
^
include/linux/device.h:1776:12: note: in definition of macro 'dev_warn'
_dev_warn(dev, dev_fmt(fmt), ##__VA_ARGS__)
^~~
In file included from include/uapi/linux/posix_types.h:5:0,
from include/uapi/linux/types.h:14,
from include/linux/compiler.h:180,
from include/linux/err.h:5,
from include/linux/clk.h:12,
from include/linux/cpufreq.h:11,
from drivers//cpufreq/brcmstb-avs-cpufreq.c:44:
>> include/linux/stddef.h:8:14: warning: return makes integer from pointer without a cast [-Wint-conversion]
#define NULL ((void *)0)
^
drivers//cpufreq/brcmstb-avs-cpufreq.c:460:10: note: in expansion of macro 'NULL'
return NULL;
^~~~
>> include/linux/stddef.h:8:14: warning: return makes integer from pointer without a cast [-Wint-conversion]
#define NULL ((void *)0)
^
drivers//cpufreq/brcmstb-avs-cpufreq.c:465:10: note: in expansion of macro 'NULL'
return NULL;
^~~~

vim +459 drivers/cpufreq/brcmstb-avs-cpufreq.c

452
453 static unsigned int brcm_avs_cpufreq_get(unsigned int cpu)
454 {
455 struct cpufreq_policy *policy = cpufreq_cpu_get_raw(cpu);
456 struct private_data *priv;
457
458 if (!policy) {
> 459 dev_warn(dev, "cpu %d: CPUFreq policy not found\n", cpu);
> 460 return NULL;
461 }
462
463 priv = policy->driver_data;
464 if (!priv || !priv->base)
465 return NULL;
466
467 return brcm_avs_get_frequency(priv->base);
468 }
469

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

Attachment: .config.gz
Description: application/gzip