linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [linux-next:master 8440/9522] drivers/cpufreq/qcom-cpufreq-hw.c:294:3: warning: Value stored to 'opp' is never read [clang-analyzer-deadcode.DeadStores]
@ 2021-08-22 11:41 kernel test robot
  2021-08-23  6:52 ` Viresh Kumar
  0 siblings, 1 reply; 4+ messages in thread
From: kernel test robot @ 2021-08-22 11:41 UTC (permalink / raw)
  To: Thara Gopinath
  Cc: clang-built-linux, kbuild-all, Linux Memory Management List,
	Viresh Kumar

[-- Attachment #1: Type: text/plain, Size: 15346 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   86ed57fd8c93fdfaabb4f58e78455180fa7d8a84
commit: 86afc1df661a99dcd6b8d264cae171f1ead2b7b8 [8440/9522] cpufreq: qcom-cpufreq-hw: Add dcvs interrupt support
config: arm-randconfig-c002-20210822 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project a83d99c55ebb14532c414066a5aa3bdb65389965)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=86afc1df661a99dcd6b8d264cae171f1ead2b7b8
        git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
        git fetch --no-tags linux-next master
        git checkout 86afc1df661a99dcd6b8d264cae171f1ead2b7b8
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
                              ^  ~
   drivers/hid/hid-core.c:1412:22: warning: The result of the left shift is undefined due to shifting by '32', which is greater or equal to the width of type 'unsigned int' [clang-analyzer-core.UndefinedBinaryOperatorResult]
                   u8 bit_mask = ((1U << n) - 1);
                                      ^
   drivers/hid/hid-core.c:1717:6: note: Assuming 'buf' is non-null
           if (!buf)
               ^~~~
   drivers/hid/hid-core.c:1717:2: note: Taking false branch
           if (!buf)
           ^
   drivers/hid/hid-core.c:1722:6: note: Assuming 'reqtype' is equal to HID_REQ_SET_REPORT
           if (reqtype == HID_REQ_SET_REPORT)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/hid/hid-core.c:1722:2: note: Taking true branch
           if (reqtype == HID_REQ_SET_REPORT)
           ^
   drivers/hid/hid-core.c:1723:3: note: Calling 'hid_output_report'
                   hid_output_report(report, buf);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/hid/hid-core.c:1630:14: note: Field 'id' is <= 0
           if (report->id > 0)
                       ^
   drivers/hid/hid-core.c:1630:2: note: Taking false branch
           if (report->id > 0)
           ^
   drivers/hid/hid-core.c:1634:14: note: Assuming 'n' is < field 'maxfield'
           for (n = 0; n < report->maxfield; n++)
                       ^~~~~~~~~~~~~~~~~~~~
   drivers/hid/hid-core.c:1634:2: note: Loop condition is true.  Entering loop body
           for (n = 0; n < report->maxfield; n++)
           ^
   drivers/hid/hid-core.c:1635:3: note: Calling 'hid_output_field'
                   hid_output_field(report->device, report->field[n], data);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/hid/hid-core.c:1597:2: note: 'size' initialized here
           unsigned size = field->report_size;
           ^~~~~~~~~~~~~
   drivers/hid/hid-core.c:1600:14: note: Assuming 'n' is < 'count'
           for (n = 0; n < count; n++) {
                       ^~~~~~~~~
   drivers/hid/hid-core.c:1600:2: note: Loop condition is true.  Entering loop body
           for (n = 0; n < count; n++) {
           ^
   drivers/hid/hid-core.c:1601:7: note: Assuming field 'logical_minimum' is >= 0
                   if (field->logical_minimum < 0) /* signed values */
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/hid/hid-core.c:1601:3: note: Taking false branch
                   if (field->logical_minimum < 0) /* signed values */
                   ^
   drivers/hid/hid-core.c:1605:44: note: Passing value via 4th parameter 'n'
                           implement(hid, data, offset + n * size, size,
                                                                   ^~~~
   drivers/hid/hid-core.c:1605:4: note: Calling 'implement'
                           implement(hid, data, offset + n * size, size,
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/hid/hid-core.c:1421:15: note: Assuming 'n' is <= 32
           if (unlikely(n > 32)) {
                        ^
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   drivers/hid/hid-core.c:1421:2: note: Taking false branch
           if (unlikely(n > 32)) {
           ^
   drivers/hid/hid-core.c:1425:13: note: Assuming 'n' is >= 32
           } else if (n < 32) {
                      ^~~~~~
   drivers/hid/hid-core.c:1425:9: note: Taking false branch
           } else if (n < 32) {
                  ^
   drivers/hid/hid-core.c:1437:30: note: Passing the value 32 via 3rd parameter 'n'
           __implement(report, offset, n, value);
                                       ^
   drivers/hid/hid-core.c:1437:2: note: Calling '__implement'
           __implement(report, offset, n, value);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/hid/hid-core.c:1400:9: note: Assuming the condition is false
           while (n - bits_to_set >= 0) {
                  ^~~~~~~~~~~~~~~~~~~~
   drivers/hid/hid-core.c:1400:2: note: Loop condition is false. Execution continues on line 1411
           while (n - bits_to_set >= 0) {
           ^
   drivers/hid/hid-core.c:1411:6: note: 'n' is 32
           if (n) {
               ^
   drivers/hid/hid-core.c:1411:2: note: Taking true branch
           if (n) {
           ^
   drivers/hid/hid-core.c:1412:22: note: The result of the left shift is undefined due to shifting by '32', which is greater or equal to the width of type 'unsigned int'
                   u8 bit_mask = ((1U << n) - 1);
                                      ^  ~
   drivers/hid/hid-core.c:1984:3: warning: Value stored to 'len' is never read [clang-analyzer-deadcode.DeadStores]
                   len += sprintf(buf + len, "%shidraw%d", len ? "," : "",
                   ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/hid/hid-core.c:1984:3: note: Value stored to 'len' is never read
                   len += sprintf(buf + len, "%shidraw%d", len ? "," : "",
                   ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
>> drivers/cpufreq/qcom-cpufreq-hw.c:294:3: warning: Value stored to 'opp' is never read [clang-analyzer-deadcode.DeadStores]
                   opp = dev_pm_opp_find_freq_ceil(dev, &freq_hz);
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/cpufreq/qcom-cpufreq-hw.c:294:3: note: Value stored to 'opp' is never read
                   opp = dev_pm_opp_find_freq_ceil(dev, &freq_hz);
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   7 warnings generated.
   Suppressed 7 warnings (7 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   7 warnings generated.
   drivers/dma/xgene-dma.c:445:36: warning: The result of the left shift is undefined due to shifting by '32', which is greater or equal to the width of type 'int' [clang-analyzer-core.UndefinedBinaryOperatorResult]
                   desc1->m2 |= cpu_to_le64((scf[i] << ((i + 1) * 8)));
                                                    ^
   include/linux/byteorder/generic.h:86:21: note: expanded from macro 'cpu_to_le64'
   #define cpu_to_le64 __cpu_to_le64
                       ^
   drivers/dma/xgene-dma.c:895:15: note: Assuming 'dchan' is non-null
           if (unlikely(!dchan || !len))
                        ^
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   drivers/dma/xgene-dma.c:895:15: note: Left side of '||' is false
           if (unlikely(!dchan || !len))
                        ^
   drivers/dma/xgene-dma.c:895:25: note: Assuming 'len' is not equal to 0
           if (unlikely(!dchan || !len))
                                  ^
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   drivers/dma/xgene-dma.c:895:2: note: Taking false branch
           if (unlikely(!dchan || !len))
           ^
   drivers/dma/xgene-dma.c:898:9: note: Left side of '&&' is false
           chan = to_dma_chan(dchan);
                  ^
   drivers/dma/xgene-dma.c:191:2: note: expanded from macro 'to_dma_chan'
           container_of(dchan, struct xgene_dma_chan, dma_chan)
           ^
   include/linux/kernel.h:495:61: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
                                                                      ^
   drivers/dma/xgene-dma.c:898:9: note: Taking false branch
           chan = to_dma_chan(dchan);
                  ^
   drivers/dma/xgene-dma.c:191:2: note: expanded from macro 'to_dma_chan'
           container_of(dchan, struct xgene_dma_chan, dma_chan)
           ^
   include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
           ^
   include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
   #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
                                       ^
   include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
           ^
   include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:308:3: note: expanded from macro '__compiletime_assert'
                   if (!(condition))                                       \

vim +/opp +294 drivers/cpufreq/qcom-cpufreq-hw.c

   275	
   276	static void qcom_lmh_dcvs_notify(struct qcom_cpufreq_data *data)
   277	{
   278		unsigned long max_capacity, capacity, freq_hz, throttled_freq;
   279		struct cpufreq_policy *policy = data->policy;
   280		int cpu = cpumask_first(policy->cpus);
   281		struct device *dev = get_cpu_device(cpu);
   282		struct dev_pm_opp *opp;
   283		unsigned int freq;
   284	
   285		/*
   286		 * Get the h/w throttled frequency, normalize it using the
   287		 * registered opp table and use it to calculate thermal pressure.
   288		 */
   289		freq = qcom_lmh_get_throttle_freq(data);
   290		freq_hz = freq * HZ_PER_KHZ;
   291	
   292		opp = dev_pm_opp_find_freq_floor(dev, &freq_hz);
   293		if (IS_ERR(opp) && PTR_ERR(opp) == -ERANGE)
 > 294			opp = dev_pm_opp_find_freq_ceil(dev, &freq_hz);
   295	
   296		throttled_freq = freq_hz / HZ_PER_KHZ;
   297	
   298		/* Update thermal pressure */
   299	
   300		max_capacity = arch_scale_cpu_capacity(cpu);
   301		capacity = mult_frac(max_capacity, throttled_freq, policy->cpuinfo.max_freq);
   302	
   303		/* Don't pass boost capacity to scheduler */
   304		if (capacity > max_capacity)
   305			capacity = max_capacity;
   306	
   307		arch_set_thermal_pressure(policy->cpus, max_capacity - capacity);
   308	
   309		/*
   310		 * In the unlikely case policy is unregistered do not enable
   311		 * polling or h/w interrupt
   312		 */
   313		mutex_lock(&data->throttle_lock);
   314		if (data->cancel_throttle)
   315			goto out;
   316	
   317		/*
   318		 * If h/w throttled frequency is higher than what cpufreq has requested
   319		 * for, then stop polling and switch back to interrupt mechanism.
   320		 */
   321		if (throttled_freq >= qcom_cpufreq_hw_get(cpu))
   322			enable_irq(data->throttle_irq);
   323		else
   324			mod_delayed_work(system_highpri_wq, &data->throttle_work,
   325					 msecs_to_jiffies(10));
   326	
   327	out:
   328		mutex_unlock(&data->throttle_lock);
   329	}
   330	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 37313 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [linux-next:master 8440/9522] drivers/cpufreq/qcom-cpufreq-hw.c:294:3: warning: Value stored to 'opp' is never read [clang-analyzer-deadcode.DeadStores]
  2021-08-22 11:41 [linux-next:master 8440/9522] drivers/cpufreq/qcom-cpufreq-hw.c:294:3: warning: Value stored to 'opp' is never read [clang-analyzer-deadcode.DeadStores] kernel test robot
@ 2021-08-23  6:52 ` Viresh Kumar
  2021-08-24  6:53   ` Chen, Rong A
  0 siblings, 1 reply; 4+ messages in thread
From: Viresh Kumar @ 2021-08-23  6:52 UTC (permalink / raw)
  To: kernel test robot
  Cc: Thara Gopinath, clang-built-linux, kbuild-all,
	Linux Memory Management List

On 22-08-21, 19:41, kernel test robot wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> head:   86ed57fd8c93fdfaabb4f58e78455180fa7d8a84
> commit: 86afc1df661a99dcd6b8d264cae171f1ead2b7b8 [8440/9522] cpufreq: qcom-cpufreq-hw: Add dcvs interrupt support
> config: arm-randconfig-c002-20210822 (attached as .config)
> compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project a83d99c55ebb14532c414066a5aa3bdb65389965)
> reproduce (this is a W=1 build):
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # install arm cross compiling tool for clang build
>         # apt-get install binutils-arm-linux-gnueabi
>         # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=86afc1df661a99dcd6b8d264cae171f1ead2b7b8
>         git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
>         git fetch --no-tags linux-next master
>         git checkout 86afc1df661a99dcd6b8d264cae171f1ead2b7b8
>         # save the attached .config to linux build tree
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm clang-analyzer 
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>

This doesn't look right, it says issues are with cpufreq-hw driver but
points at hid-core ?
 
> clang-analyzer warnings: (new ones prefixed by >>)
>                               ^  ~
>    drivers/hid/hid-core.c:1412:22: warning: The result of the left shift is undefined due to shifting by '32', which is greater or equal to the width of type 'unsigned int' [clang-analyzer-core.UndefinedBinaryOperatorResult]
>                    u8 bit_mask = ((1U << n) - 1);
>                                       ^
>    drivers/hid/hid-core.c:1717:6: note: Assuming 'buf' is non-null
>            if (!buf)
>                ^~~~
>    drivers/hid/hid-core.c:1717:2: note: Taking false branch
>            if (!buf)
>            ^
>    drivers/hid/hid-core.c:1722:6: note: Assuming 'reqtype' is equal to HID_REQ_SET_REPORT
>            if (reqtype == HID_REQ_SET_REPORT)
>                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    drivers/hid/hid-core.c:1722:2: note: Taking true branch
>            if (reqtype == HID_REQ_SET_REPORT)
>            ^
>    drivers/hid/hid-core.c:1723:3: note: Calling 'hid_output_report'
>                    hid_output_report(report, buf);
>                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    drivers/hid/hid-core.c:1630:14: note: Field 'id' is <= 0
>            if (report->id > 0)
>                        ^
>    drivers/hid/hid-core.c:1630:2: note: Taking false branch
>            if (report->id > 0)
>            ^
>    drivers/hid/hid-core.c:1634:14: note: Assuming 'n' is < field 'maxfield'
>            for (n = 0; n < report->maxfield; n++)
>                        ^~~~~~~~~~~~~~~~~~~~
>    drivers/hid/hid-core.c:1634:2: note: Loop condition is true.  Entering loop body
>            for (n = 0; n < report->maxfield; n++)
>            ^
>    drivers/hid/hid-core.c:1635:3: note: Calling 'hid_output_field'
>                    hid_output_field(report->device, report->field[n], data);
>                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    drivers/hid/hid-core.c:1597:2: note: 'size' initialized here
>            unsigned size = field->report_size;
>            ^~~~~~~~~~~~~
>    drivers/hid/hid-core.c:1600:14: note: Assuming 'n' is < 'count'
>            for (n = 0; n < count; n++) {
>                        ^~~~~~~~~
>    drivers/hid/hid-core.c:1600:2: note: Loop condition is true.  Entering loop body
>            for (n = 0; n < count; n++) {
>            ^
>    drivers/hid/hid-core.c:1601:7: note: Assuming field 'logical_minimum' is >= 0
>                    if (field->logical_minimum < 0) /* signed values */
>                        ^~~~~~~~~~~~~~~~~~~~~~~~~~
>    drivers/hid/hid-core.c:1601:3: note: Taking false branch
>                    if (field->logical_minimum < 0) /* signed values */
>                    ^
>    drivers/hid/hid-core.c:1605:44: note: Passing value via 4th parameter 'n'
>                            implement(hid, data, offset + n * size, size,
>                                                                    ^~~~
>    drivers/hid/hid-core.c:1605:4: note: Calling 'implement'
>                            implement(hid, data, offset + n * size, size,
>                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    drivers/hid/hid-core.c:1421:15: note: Assuming 'n' is <= 32
>            if (unlikely(n > 32)) {
>                         ^
>    include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
>    # define unlikely(x)    __builtin_expect(!!(x), 0)
>                                                ^
>    drivers/hid/hid-core.c:1421:2: note: Taking false branch
>            if (unlikely(n > 32)) {
>            ^
>    drivers/hid/hid-core.c:1425:13: note: Assuming 'n' is >= 32
>            } else if (n < 32) {
>                       ^~~~~~
>    drivers/hid/hid-core.c:1425:9: note: Taking false branch
>            } else if (n < 32) {
>                   ^
>    drivers/hid/hid-core.c:1437:30: note: Passing the value 32 via 3rd parameter 'n'
>            __implement(report, offset, n, value);
>                                        ^
>    drivers/hid/hid-core.c:1437:2: note: Calling '__implement'
>            __implement(report, offset, n, value);
>            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    drivers/hid/hid-core.c:1400:9: note: Assuming the condition is false
>            while (n - bits_to_set >= 0) {
>                   ^~~~~~~~~~~~~~~~~~~~
>    drivers/hid/hid-core.c:1400:2: note: Loop condition is false. Execution continues on line 1411
>            while (n - bits_to_set >= 0) {
>            ^
>    drivers/hid/hid-core.c:1411:6: note: 'n' is 32
>            if (n) {
>                ^
>    drivers/hid/hid-core.c:1411:2: note: Taking true branch
>            if (n) {
>            ^
>    drivers/hid/hid-core.c:1412:22: note: The result of the left shift is undefined due to shifting by '32', which is greater or equal to the width of type 'unsigned int'
>                    u8 bit_mask = ((1U << n) - 1);
>                                       ^  ~
>    drivers/hid/hid-core.c:1984:3: warning: Value stored to 'len' is never read [clang-analyzer-deadcode.DeadStores]
>                    len += sprintf(buf + len, "%shidraw%d", len ? "," : "",
>                    ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    drivers/hid/hid-core.c:1984:3: note: Value stored to 'len' is never read
>                    len += sprintf(buf + len, "%shidraw%d", len ? "," : "",
>                    ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    Suppressed 6 warnings (6 in non-user code).
>    Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>    3 warnings generated.
> >> drivers/cpufreq/qcom-cpufreq-hw.c:294:3: warning: Value stored to 'opp' is never read [clang-analyzer-deadcode.DeadStores]
>                    opp = dev_pm_opp_find_freq_ceil(dev, &freq_hz);
>                    ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    drivers/cpufreq/qcom-cpufreq-hw.c:294:3: note: Value stored to 'opp' is never read
>                    opp = dev_pm_opp_find_freq_ceil(dev, &freq_hz);
>                    ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    Suppressed 2 warnings (2 in non-user code).
>    Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>    2 warnings generated.
>    Suppressed 2 warnings (2 in non-user code).
>    Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>    2 warnings generated.
>    Suppressed 2 warnings (2 in non-user code).
>    Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>    2 warnings generated.
>    Suppressed 2 warnings (2 in non-user code).
>    Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>    7 warnings generated.
>    Suppressed 7 warnings (7 in non-user code).
>    Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>    3 warnings generated.
>    Suppressed 3 warnings (3 in non-user code).
>    Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>    2 warnings generated.
>    Suppressed 2 warnings (2 in non-user code).
>    Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>    2 warnings generated.
>    Suppressed 2 warnings (2 in non-user code).
>    Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>    3 warnings generated.
>    Suppressed 3 warnings (3 in non-user code).
>    Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>    3 warnings generated.
>    Suppressed 3 warnings (3 in non-user code).
>    Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>    3 warnings generated.
>    Suppressed 3 warnings (3 in non-user code).
>    Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>    6 warnings generated.
>    Suppressed 6 warnings (6 in non-user code).
>    Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>    2 warnings generated.
>    Suppressed 2 warnings (2 in non-user code).
>    Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>    2 warnings generated.
>    Suppressed 2 warnings (2 in non-user code).
>    Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>    7 warnings generated.
>    drivers/dma/xgene-dma.c:445:36: warning: The result of the left shift is undefined due to shifting by '32', which is greater or equal to the width of type 'int' [clang-analyzer-core.UndefinedBinaryOperatorResult]
>                    desc1->m2 |= cpu_to_le64((scf[i] << ((i + 1) * 8)));
>                                                     ^
>    include/linux/byteorder/generic.h:86:21: note: expanded from macro 'cpu_to_le64'
>    #define cpu_to_le64 __cpu_to_le64
>                        ^
>    drivers/dma/xgene-dma.c:895:15: note: Assuming 'dchan' is non-null
>            if (unlikely(!dchan || !len))
>                         ^
>    include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
>    # define unlikely(x)    __builtin_expect(!!(x), 0)
>                                                ^
>    drivers/dma/xgene-dma.c:895:15: note: Left side of '||' is false
>            if (unlikely(!dchan || !len))
>                         ^
>    drivers/dma/xgene-dma.c:895:25: note: Assuming 'len' is not equal to 0
>            if (unlikely(!dchan || !len))
>                                   ^
>    include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
>    # define unlikely(x)    __builtin_expect(!!(x), 0)
>                                                ^
>    drivers/dma/xgene-dma.c:895:2: note: Taking false branch
>            if (unlikely(!dchan || !len))
>            ^
>    drivers/dma/xgene-dma.c:898:9: note: Left side of '&&' is false
>            chan = to_dma_chan(dchan);
>                   ^
>    drivers/dma/xgene-dma.c:191:2: note: expanded from macro 'to_dma_chan'
>            container_of(dchan, struct xgene_dma_chan, dma_chan)
>            ^
>    include/linux/kernel.h:495:61: note: expanded from macro 'container_of'
>            BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
>                                                                       ^
>    drivers/dma/xgene-dma.c:898:9: note: Taking false branch
>            chan = to_dma_chan(dchan);
>                   ^
>    drivers/dma/xgene-dma.c:191:2: note: expanded from macro 'to_dma_chan'
>            container_of(dchan, struct xgene_dma_chan, dma_chan)
>            ^
>    include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
>            BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
>            ^
>    include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
>    #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
>                                        ^
>    include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
>            _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
>            ^
>    include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
>            __compiletime_assert(condition, msg, prefix, suffix)
>            ^
>    include/linux/compiler_types.h:308:3: note: expanded from macro '__compiletime_assert'
>                    if (!(condition))                                       \
> 
> vim +/opp +294 drivers/cpufreq/qcom-cpufreq-hw.c
> 
>    275	
>    276	static void qcom_lmh_dcvs_notify(struct qcom_cpufreq_data *data)
>    277	{
>    278		unsigned long max_capacity, capacity, freq_hz, throttled_freq;
>    279		struct cpufreq_policy *policy = data->policy;
>    280		int cpu = cpumask_first(policy->cpus);
>    281		struct device *dev = get_cpu_device(cpu);
>    282		struct dev_pm_opp *opp;
>    283		unsigned int freq;
>    284	
>    285		/*
>    286		 * Get the h/w throttled frequency, normalize it using the
>    287		 * registered opp table and use it to calculate thermal pressure.
>    288		 */
>    289		freq = qcom_lmh_get_throttle_freq(data);
>    290		freq_hz = freq * HZ_PER_KHZ;
>    291	
>    292		opp = dev_pm_opp_find_freq_floor(dev, &freq_hz);
>    293		if (IS_ERR(opp) && PTR_ERR(opp) == -ERANGE)
>  > 294			opp = dev_pm_opp_find_freq_ceil(dev, &freq_hz);
>    295	
>    296		throttled_freq = freq_hz / HZ_PER_KHZ;
>    297	
>    298		/* Update thermal pressure */
>    299	
>    300		max_capacity = arch_scale_cpu_capacity(cpu);
>    301		capacity = mult_frac(max_capacity, throttled_freq, policy->cpuinfo.max_freq);
>    302	
>    303		/* Don't pass boost capacity to scheduler */
>    304		if (capacity > max_capacity)
>    305			capacity = max_capacity;
>    306	
>    307		arch_set_thermal_pressure(policy->cpus, max_capacity - capacity);
>    308	
>    309		/*
>    310		 * In the unlikely case policy is unregistered do not enable
>    311		 * polling or h/w interrupt
>    312		 */
>    313		mutex_lock(&data->throttle_lock);
>    314		if (data->cancel_throttle)
>    315			goto out;
>    316	
>    317		/*
>    318		 * If h/w throttled frequency is higher than what cpufreq has requested
>    319		 * for, then stop polling and switch back to interrupt mechanism.
>    320		 */
>    321		if (throttled_freq >= qcom_cpufreq_hw_get(cpu))
>    322			enable_irq(data->throttle_irq);
>    323		else
>    324			mod_delayed_work(system_highpri_wq, &data->throttle_work,
>    325					 msecs_to_jiffies(10));
>    326	
>    327	out:
>    328		mutex_unlock(&data->throttle_lock);
>    329	}
>    330	
> 
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org



-- 
viresh


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [linux-next:master 8440/9522] drivers/cpufreq/qcom-cpufreq-hw.c:294:3: warning: Value stored to 'opp' is never read [clang-analyzer-deadcode.DeadStores]
  2021-08-23  6:52 ` Viresh Kumar
@ 2021-08-24  6:53   ` Chen, Rong A
  2021-08-24  7:11     ` Viresh Kumar
  0 siblings, 1 reply; 4+ messages in thread
From: Chen, Rong A @ 2021-08-24  6:53 UTC (permalink / raw)
  To: Viresh Kumar, kernel test robot
  Cc: Thara Gopinath, clang-built-linux, kbuild-all,
	Linux Memory Management List



On 8/23/2021 2:52 PM, Viresh Kumar wrote:
> On 22-08-21, 19:41, kernel test robot wrote:
>> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
>> head:   86ed57fd8c93fdfaabb4f58e78455180fa7d8a84
>> commit: 86afc1df661a99dcd6b8d264cae171f1ead2b7b8 [8440/9522] cpufreq: qcom-cpufreq-hw: Add dcvs interrupt support
>> config: arm-randconfig-c002-20210822 (attached as .config)
>> compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project a83d99c55ebb14532c414066a5aa3bdb65389965)
>> reproduce (this is a W=1 build):
>>          wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>>          chmod +x ~/bin/make.cross
>>          # install arm cross compiling tool for clang build
>>          # apt-get install binutils-arm-linux-gnueabi
>>          # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=86afc1df661a99dcd6b8d264cae171f1ead2b7b8
>>          git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
>>          git fetch --no-tags linux-next master
>>          git checkout 86afc1df661a99dcd6b8d264cae171f1ead2b7b8
>>          # save the attached .config to linux build tree
>>          COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm clang-analyzer
>>
>> If you fix the issue, kindly add following tag as appropriate
>> Reported-by: kernel test robot <lkp@intel.com>
> 
> This doesn't look right, it says issues are with cpufreq-hw driver but
> points at hid-core ?

Hi Viresh,

The warning with the prefix ">>" is pointed to this commit,
others are only for reference.

Best Regards,
Rong Chen

>   
>> clang-analyzer warnings: (new ones prefixed by >>)

<snip>

>>>> drivers/cpufreq/qcom-cpufreq-hw.c:294:3: warning: Value stored to 'opp' is never read [clang-analyzer-deadcode.DeadStores]
>>                     opp = dev_pm_opp_find_freq_ceil(dev, &freq_hz);
>>                     ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>     drivers/cpufreq/qcom-cpufreq-hw.c:294:3: note: Value stored to 'opp' is never read
>>                     opp = dev_pm_opp_find_freq_ceil(dev, &freq_hz);
>>                     ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>     Suppressed 2 warnings (2 in non-user code).
>>     Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>>     2 warnings generated.
>>     Suppressed 2 warnings (2 in non-user code).
>>     Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>>     2 warnings generated.
>>     Suppressed 2 warnings (2 in non-user code).
>>     Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>>     2 warnings generated.
>>     Suppressed 2 warnings (2 in non-user code).
>>     Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>>     7 warnings generated.
>>     Suppressed 7 warnings (7 in non-user code).
>>     Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>>     3 warnings generated.
>>     Suppressed 3 warnings (3 in non-user code).
>>     Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>>     2 warnings generated.
>>     Suppressed 2 warnings (2 in non-user code).
>>     Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>>     2 warnings generated.
>>     Suppressed 2 warnings (2 in non-user code).
>>     Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>>     3 warnings generated.
>>     Suppressed 3 warnings (3 in non-user code).
>>     Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>>     3 warnings generated.
>>     Suppressed 3 warnings (3 in non-user code).
>>     Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>>     3 warnings generated.
>>     Suppressed 3 warnings (3 in non-user code).
>>     Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>>     6 warnings generated.
>>     Suppressed 6 warnings (6 in non-user code).
>>     Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>>     2 warnings generated.
>>     Suppressed 2 warnings (2 in non-user code).
>>     Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>>     2 warnings generated.
>>     Suppressed 2 warnings (2 in non-user code).
>>     Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
>>     7 warnings generated.
>>     drivers/dma/xgene-dma.c:445:36: warning: The result of the left shift is undefined due to shifting by '32', which is greater or equal to the width of type 'int' [clang-analyzer-core.UndefinedBinaryOperatorResult]
>>                     desc1->m2 |= cpu_to_le64((scf[i] << ((i + 1) * 8)));
>>                                                      ^
>>     include/linux/byteorder/generic.h:86:21: note: expanded from macro 'cpu_to_le64'
>>     #define cpu_to_le64 __cpu_to_le64
>>                         ^
>>     drivers/dma/xgene-dma.c:895:15: note: Assuming 'dchan' is non-null
>>             if (unlikely(!dchan || !len))
>>                          ^
>>     include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
>>     # define unlikely(x)    __builtin_expect(!!(x), 0)
>>                                                 ^
>>     drivers/dma/xgene-dma.c:895:15: note: Left side of '||' is false
>>             if (unlikely(!dchan || !len))
>>                          ^
>>     drivers/dma/xgene-dma.c:895:25: note: Assuming 'len' is not equal to 0
>>             if (unlikely(!dchan || !len))
>>                                    ^
>>     include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
>>     # define unlikely(x)    __builtin_expect(!!(x), 0)
>>                                                 ^
>>     drivers/dma/xgene-dma.c:895:2: note: Taking false branch
>>             if (unlikely(!dchan || !len))
>>             ^
>>     drivers/dma/xgene-dma.c:898:9: note: Left side of '&&' is false
>>             chan = to_dma_chan(dchan);
>>                    ^
>>     drivers/dma/xgene-dma.c:191:2: note: expanded from macro 'to_dma_chan'
>>             container_of(dchan, struct xgene_dma_chan, dma_chan)
>>             ^
>>     include/linux/kernel.h:495:61: note: expanded from macro 'container_of'
>>             BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
>>                                                                        ^
>>     drivers/dma/xgene-dma.c:898:9: note: Taking false branch
>>             chan = to_dma_chan(dchan);
>>                    ^
>>     drivers/dma/xgene-dma.c:191:2: note: expanded from macro 'to_dma_chan'
>>             container_of(dchan, struct xgene_dma_chan, dma_chan)
>>             ^
>>     include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
>>             BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
>>             ^
>>     include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
>>     #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
>>                                         ^
>>     include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
>>             _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
>>             ^
>>     include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
>>             __compiletime_assert(condition, msg, prefix, suffix)
>>             ^
>>     include/linux/compiler_types.h:308:3: note: expanded from macro '__compiletime_assert'
>>                     if (!(condition))                                       \
>>
>> vim +/opp +294 drivers/cpufreq/qcom-cpufreq-hw.c
>>
>>     275	
>>     276	static void qcom_lmh_dcvs_notify(struct qcom_cpufreq_data *data)
>>     277	{
>>     278		unsigned long max_capacity, capacity, freq_hz, throttled_freq;
>>     279		struct cpufreq_policy *policy = data->policy;
>>     280		int cpu = cpumask_first(policy->cpus);
>>     281		struct device *dev = get_cpu_device(cpu);
>>     282		struct dev_pm_opp *opp;
>>     283		unsigned int freq;
>>     284	
>>     285		/*
>>     286		 * Get the h/w throttled frequency, normalize it using the
>>     287		 * registered opp table and use it to calculate thermal pressure.
>>     288		 */
>>     289		freq = qcom_lmh_get_throttle_freq(data);
>>     290		freq_hz = freq * HZ_PER_KHZ;
>>     291	
>>     292		opp = dev_pm_opp_find_freq_floor(dev, &freq_hz);
>>     293		if (IS_ERR(opp) && PTR_ERR(opp) == -ERANGE)
>>   > 294			opp = dev_pm_opp_find_freq_ceil(dev, &freq_hz);
>>     295	
>>     296		throttled_freq = freq_hz / HZ_PER_KHZ;
>>     297	
>>     298		/* Update thermal pressure */
>>     299	
>>     300		max_capacity = arch_scale_cpu_capacity(cpu);
>>     301		capacity = mult_frac(max_capacity, throttled_freq, policy->cpuinfo.max_freq);
>>     302	
>>     303		/* Don't pass boost capacity to scheduler */
>>     304		if (capacity > max_capacity)
>>     305			capacity = max_capacity;
>>     306	
>>     307		arch_set_thermal_pressure(policy->cpus, max_capacity - capacity);
>>     308	
>>     309		/*
>>     310		 * In the unlikely case policy is unregistered do not enable
>>     311		 * polling or h/w interrupt
>>     312		 */
>>     313		mutex_lock(&data->throttle_lock);
>>     314		if (data->cancel_throttle)
>>     315			goto out;
>>     316	
>>     317		/*
>>     318		 * If h/w throttled frequency is higher than what cpufreq has requested
>>     319		 * for, then stop polling and switch back to interrupt mechanism.
>>     320		 */
>>     321		if (throttled_freq >= qcom_cpufreq_hw_get(cpu))
>>     322			enable_irq(data->throttle_irq);
>>     323		else
>>     324			mod_delayed_work(system_highpri_wq, &data->throttle_work,
>>     325					 msecs_to_jiffies(10));
>>     326	
>>     327	out:
>>     328		mutex_unlock(&data->throttle_lock);
>>     329	}
>>     330	
>>
>> ---
>> 0-DAY CI Kernel Test Service, Intel Corporation
>> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
> 
> 
> 


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [linux-next:master 8440/9522] drivers/cpufreq/qcom-cpufreq-hw.c:294:3: warning: Value stored to 'opp' is never read [clang-analyzer-deadcode.DeadStores]
  2021-08-24  6:53   ` Chen, Rong A
@ 2021-08-24  7:11     ` Viresh Kumar
  0 siblings, 0 replies; 4+ messages in thread
From: Viresh Kumar @ 2021-08-24  7:11 UTC (permalink / raw)
  To: Chen, Rong A
  Cc: kernel test robot, Thara Gopinath, clang-built-linux, kbuild-all,
	Linux Memory Management List

On 24-08-21, 14:53, Chen, Rong A wrote:
> 
> 
> On 8/23/2021 2:52 PM, Viresh Kumar wrote:
> > On 22-08-21, 19:41, kernel test robot wrote:
> > > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> > > head:   86ed57fd8c93fdfaabb4f58e78455180fa7d8a84
> > > commit: 86afc1df661a99dcd6b8d264cae171f1ead2b7b8 [8440/9522] cpufreq: qcom-cpufreq-hw: Add dcvs interrupt support
> > > config: arm-randconfig-c002-20210822 (attached as .config)
> > > compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project a83d99c55ebb14532c414066a5aa3bdb65389965)
> > > reproduce (this is a W=1 build):
> > >          wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> > >          chmod +x ~/bin/make.cross
> > >          # install arm cross compiling tool for clang build
> > >          # apt-get install binutils-arm-linux-gnueabi
> > >          # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=86afc1df661a99dcd6b8d264cae171f1ead2b7b8
> > >          git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
> > >          git fetch --no-tags linux-next master
> > >          git checkout 86afc1df661a99dcd6b8d264cae171f1ead2b7b8
> > >          # save the attached .config to linux build tree
> > >          COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm clang-analyzer
> > > 
> > > If you fix the issue, kindly add following tag as appropriate
> > > Reported-by: kernel test robot <lkp@intel.com>
> > 
> > This doesn't look right, it says issues are with cpufreq-hw driver but
> > points at hid-core ?
> 
> Hi Viresh,
> 
> The warning with the prefix ">>" is pointed to this commit,
> others are only for reference.

Fixed as this and pushed as Thara is away:

diff --git a/drivers/cpufreq/qcom-cpufreq-hw.c b/drivers/cpufreq/qcom-cpufreq-hw.c
index 26293d3b15a4..a2be0df7e174 100644
--- a/drivers/cpufreq/qcom-cpufreq-hw.c
+++ b/drivers/cpufreq/qcom-cpufreq-hw.c
@@ -291,7 +291,7 @@ static void qcom_lmh_dcvs_notify(struct qcom_cpufreq_data *data)

        opp = dev_pm_opp_find_freq_floor(dev, &freq_hz);
        if (IS_ERR(opp) && PTR_ERR(opp) == -ERANGE)
-               opp = dev_pm_opp_find_freq_ceil(dev, &freq_hz);
+               dev_pm_opp_find_freq_ceil(dev, &freq_hz);

        throttled_freq = freq_hz / HZ_PER_KHZ;

-- 
viresh


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-08-24  7:11 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-22 11:41 [linux-next:master 8440/9522] drivers/cpufreq/qcom-cpufreq-hw.c:294:3: warning: Value stored to 'opp' is never read [clang-analyzer-deadcode.DeadStores] kernel test robot
2021-08-23  6:52 ` Viresh Kumar
2021-08-24  6:53   ` Chen, Rong A
2021-08-24  7:11     ` Viresh Kumar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).