CC: [email protected]
CC: [email protected]
In-Reply-To: <2077987.irdbgypaU6@kreacher>
References: <2077987.irdbgypaU6@kreacher>
TO: "Rafael J. Wysocki" <[email protected]>
TO: Linux ACPI <[email protected]>
CC: Linux PM <[email protected]>
CC: LKML <[email protected]>
CC: Mika Westerberg <[email protected]>
CC: Linux PCI <[email protected]>

Hi "Rafael,

I love your patch! Perhaps something to improve:

[auto build test WARNING on rafael-pm/linux-next]
[also build test WARNING on linux/master linus/master v5.15-rc5 next-20211015]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    
https://github.com/0day-ci/linux/commits/Rafael-J-Wysocki/ACPI-PM-Address-issues-related-to-managing-wakeup-power-resources/20211016-010527
base:   https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git 
linux-next
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: x86_64-randconfig-c007-20211015 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
6069a6a5049497a32a50a49661c2f4169078bdba)
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
        # 
https://github.com/0day-ci/linux/commit/5e93f177b80cbc9b9ee6ffc15ff9ad0ad23f2a7a
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
Rafael-J-Wysocki/ACPI-PM-Address-issues-related-to-managing-wakeup-power-resources/20211016-010527
        git checkout 5e93f177b80cbc9b9ee6ffc15ff9ad0ad23f2a7a
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 
clang-analyzer 

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


clang-analyzer warnings: (new ones prefixed by >>)
           ^
   drivers/dma-buf/dma-resv.c:431:7: note: Assuming 'fence_excl' is non-null
                   if (fence_excl && !dma_fence_get_rcu(fence_excl))
                       ^~~~~~~~~~
   drivers/dma-buf/dma-resv.c:431:7: note: Left side of '&&' is true
   drivers/dma-buf/dma-resv.c:431:3: note: Taking false branch
                   if (fence_excl && !dma_fence_get_rcu(fence_excl))
                   ^
   drivers/dma-buf/dma-resv.c:435:7: note: Assuming 'fobj' is non-null
                   if (fobj)
                       ^~~~
   drivers/dma-buf/dma-resv.c:435:3: note: Taking true branch
                   if (fobj)
                   ^
   drivers/dma-buf/dma-resv.c:438:7: note: Assuming 'pfence_excl' is null
                   if (!pfence_excl && fence_excl)
                       ^~~~~~~~~~~~
   drivers/dma-buf/dma-resv.c:438:7: note: Left side of '&&' is true
   drivers/dma-buf/dma-resv.c:438:23: note: 'fence_excl' is non-null
                   if (!pfence_excl && fence_excl)
                                       ^~~~~~~~~~
   drivers/dma-buf/dma-resv.c:438:3: note: Taking true branch
                   if (!pfence_excl && fence_excl)
                   ^
   drivers/dma-buf/dma-resv.c:441:7: note: Assuming 'sz' is 0
                   if (sz) {
                       ^~
   drivers/dma-buf/dma-resv.c:441:3: note: Taking false branch
                   if (sz) {
                   ^
   drivers/dma-buf/dma-resv.c:470:7: note: 'i' is equal to 'shared_count'
                   if (i != shared_count || read_seqcount_retry(&obj->seq, 
seq)) {
                       ^
   drivers/dma-buf/dma-resv.c:470:7: note: Left side of '||' is false
   drivers/dma-buf/dma-resv.c:470:3: note: Taking false branch
                   if (i != shared_count || read_seqcount_retry(&obj->seq, 
seq)) {
                   ^
   drivers/dma-buf/dma-resv.c:420:2: note: Loop condition is false.  Exiting 
loop
           do {
           ^
   drivers/dma-buf/dma-resv.c:482:6: note: 'pfence_excl' is null
           if (pfence_excl)
               ^~~~~~~~~~~
   drivers/dma-buf/dma-resv.c:482:2: note: Taking false branch
           if (pfence_excl)
           ^
   drivers/dma-buf/dma-resv.c:484:11: note: 'fence_excl' is non-null
           else if (fence_excl)
                    ^~~~~~~~~~
   drivers/dma-buf/dma-resv.c:484:7: note: Taking true branch
           else if (fence_excl)
                ^
   drivers/dma-buf/dma-resv.c:485:26: note: Array access (from variable 
'shared') results in a null pointer dereference
                   shared[shared_count++] = fence_excl;
                   ~~~~~~                 ^
   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.
   6 warnings generated.
   drivers/acpi/pci_link.c:88:14: warning: Value stored to 'handle' during its 
initialization is never read [clang-analyzer-deadcode.DeadStores]
           acpi_handle handle = link->device->handle;
                       ^~~~~~   ~~~~~~~~~~~~~~~~~~~~
   drivers/acpi/pci_link.c:88:14: note: Value stored to 'handle' during its 
initialization is never read
           acpi_handle handle = link->device->handle;
                       ^~~~~~   ~~~~~~~~~~~~~~~~~~~~
   drivers/acpi/pci_link.c:721:2: warning: Call to function 'strcpy' is 
insecure as it does not provide bounding of the memory buffer. Replace 
unbounded copy functions with analogous functions that support length arguments 
such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcpy(acpi_device_name(device), ACPI_PCI_LINK_DEVICE_NAME);
           ^~~~~~
   drivers/acpi/pci_link.c:721:2: note: Call to function 'strcpy' is insecure 
as it does not provide bounding of the memory buffer. Replace unbounded copy 
functions with analogous functions that support length arguments such as 
'strlcpy'. CWE-119
           strcpy(acpi_device_name(device), ACPI_PCI_LINK_DEVICE_NAME);
           ^~~~~~
   drivers/acpi/pci_link.c:722:2: warning: Call to function 'strcpy' is 
insecure as it does not provide bounding of the memory buffer. Replace 
unbounded copy functions with analogous functions that support length arguments 
such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcpy(acpi_device_class(device), ACPI_PCI_LINK_CLASS);
           ^~~~~~
   drivers/acpi/pci_link.c:722:2: note: Call to function 'strcpy' is insecure 
as it does not provide bounding of the memory buffer. Replace unbounded copy 
functions with analogous functions that support length arguments such as 
'strlcpy'. CWE-119
           strcpy(acpi_device_class(device), ACPI_PCI_LINK_CLASS);
           ^~~~~~
   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.
   4 warnings generated.
   drivers/acpi/pci_irq.c:131:4: warning: Call to function 'strcpy' is insecure 
as it does not provide bounding of the memory buffer. Replace unbounded copy 
functions with analogous functions that support length arguments such as 
'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
                           strcpy(prt->source, quirk->actual_source);
                           ^~~~~~
   drivers/acpi/pci_irq.c:131:4: note: Call to function 'strcpy' is insecure as 
it does not provide bounding of the memory buffer. Replace unbounded copy 
functions with analogous functions that support length arguments such as 
'strlcpy'. CWE-119
                           strcpy(prt->source, quirk->actual_source);
                           ^~~~~~
   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.
   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.
   10 warnings generated.
>> drivers/acpi/power.c:739:2: warning: Undefined or garbage value returned to 
>> caller [clang-analyzer-core.uninitialized.UndefReturn]
           return err;
           ^      ~~~
   drivers/acpi/power.c:712:2: note: 'err' declared without an initial value
           int err;
           ^~~~~~~
   drivers/acpi/power.c:714:6: note: Assuming 'dev' is non-null
           if (!dev || !dev->wakeup.flags.valid)
               ^~~~
   drivers/acpi/power.c:714:6: note: Left side of '||' is false
   drivers/acpi/power.c:714:14: note: Assuming field 'valid' is not equal to 0
           if (!dev || !dev->wakeup.flags.valid)
                       ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/acpi/power.c:714:2: note: Taking false branch
           if (!dev || !dev->wakeup.flags.valid)
           ^
   drivers/acpi/power.c:719:6: note: Assuming the condition is true
           if (dev->wakeup.prepare_count++)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/acpi/power.c:719:2: note: Taking true branch
           if (dev->wakeup.prepare_count++)
           ^
   drivers/acpi/power.c:720:3: note: Control jumps to line 738
                   goto out;
                   ^
   drivers/acpi/power.c:739:2: note: Undefined or garbage value returned to 
caller
           return err;
           ^      ~~~
   drivers/acpi/power.c:789:2: warning: Undefined or garbage value returned to 
caller [clang-analyzer-core.uninitialized.UndefReturn]
           return err;
           ^      ~~~
   drivers/acpi/power.c:751:2: note: 'err' declared without an initial value
           int err;
           ^~~~~~~
   drivers/acpi/power.c:753:6: note: Assuming 'dev' is non-null
           if (!dev || !dev->wakeup.flags.valid)
               ^~~~
   drivers/acpi/power.c:753:6: note: Left side of '||' is false
   drivers/acpi/power.c:753:14: note: Assuming field 'valid' is not equal to 0
           if (!dev || !dev->wakeup.flags.valid)
                       ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/acpi/power.c:753:2: note: Taking false branch
           if (!dev || !dev->wakeup.flags.valid)
           ^
   drivers/acpi/power.c:758:6: note: Assuming field 'prepare_count' is <= 1
           if (dev->wakeup.prepare_count > 1) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/acpi/power.c:758:2: note: Taking false branch
           if (dev->wakeup.prepare_count > 1) {
           ^
   drivers/acpi/power.c:764:6: note: Assuming field 'prepare_count' is 0
           if (!dev->wakeup.prepare_count)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/acpi/power.c:764:2: note: Taking true branch
           if (!dev->wakeup.prepare_count)
           ^
   drivers/acpi/power.c:765:3: note: Control jumps to line 788
                   goto out;
                   ^
   drivers/acpi/power.c:789:2: note: Undefined or garbage value returned to 
caller
           return err;
           ^      ~~~
   drivers/acpi/power.c:939:2: warning: Call to function 'strcpy' is insecure 
as it does not provide bounding of the memory buffer. Replace unbounded copy 
functions with analogous functions that support length arguments such as 
'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcpy(acpi_device_name(device), ACPI_POWER_DEVICE_NAME);
           ^~~~~~
   drivers/acpi/power.c:939:2: note: Call to function 'strcpy' is insecure as 
it does not provide bounding of the memory buffer. Replace unbounded copy 
functions with analogous functions that support length arguments such as 
'strlcpy'. CWE-119
           strcpy(acpi_device_name(device), ACPI_POWER_DEVICE_NAME);
           ^~~~~~
   drivers/acpi/power.c:940:2: warning: Call to function 'strcpy' is insecure 
as it does not provide bounding of the memory buffer. Replace unbounded copy 
functions with analogous functions that support length arguments such as 
'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcpy(acpi_device_class(device), ACPI_POWER_CLASS);
           ^~~~~~
   drivers/acpi/power.c:940:2: note: Call to function 'strcpy' is insecure as 
it does not provide bounding of the memory buffer. Replace unbounded copy 
functions with analogous functions that support length arguments such as 
'strlcpy'. CWE-119
           strcpy(acpi_device_class(device), ACPI_POWER_CLASS);
           ^~~~~~
   Suppressed 6 warnings (3 in non-user code, 3 with check filters).
   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.
   drivers/rtc/rtc-ds3232.c:380:17: warning: Value stored to 'ds3232' during 
its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct ds3232 *ds3232 = dev_get_drvdata(dev);
                          ^~~~~~   ~~~~~~~~~~~~~~~~~~~~
   drivers/rtc/rtc-ds3232.c:380:17: note: Value stored to 'ds3232' during its 
initialization is never read
           struct ds3232 *ds3232 = dev_get_drvdata(dev);
                          ^~~~~~   ~~~~~~~~~~~~~~~~~~~~
   Suppressed 5 warnings (5 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.
   4 warnings generated.
   Suppressed 4 warnings (4 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.
   4 warnings generated.
   Suppressed 4 warnings (4 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.
   4 warnings generated.
   Suppressed 4 warnings (4 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.
   4 warnings generated.
   Suppressed 4 warnings (4 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.
   4 warnings generated.
   Suppressed 4 warnings (4 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.
   4 warnings generated.

vim +739 drivers/acpi/power.c

77e766099efc29 Rafael J. Wysocki 2008-07-07  703  
^1da177e4c3f41 Linus Torvalds    2005-04-16  704  /*
^1da177e4c3f41 Linus Torvalds    2005-04-16  705   * Prepare a wakeup device, 
two steps (Ref ACPI 2.0:P229):
^1da177e4c3f41 Linus Torvalds    2005-04-16  706   * 1. Power on the power 
resources required for the wakeup device
77e766099efc29 Rafael J. Wysocki 2008-07-07  707   * 2. Execute _DSW (Device 
Sleep Wake) or (deprecated in ACPI 3.0) _PSW (Power
77e766099efc29 Rafael J. Wysocki 2008-07-07  708   *    State Wake) for the 
device, if present
^1da177e4c3f41 Linus Torvalds    2005-04-16  709   */
77e766099efc29 Rafael J. Wysocki 2008-07-07  710  int 
acpi_enable_wakeup_device_power(struct acpi_device *dev, int sleep_state)
^1da177e4c3f41 Linus Torvalds    2005-04-16  711  {
5e93f177b80cbc Rafael J. Wysocki 2021-10-15  712        int err;
^1da177e4c3f41 Linus Torvalds    2005-04-16  713  
^1da177e4c3f41 Linus Torvalds    2005-04-16  714        if (!dev || 
!dev->wakeup.flags.valid)
77e766099efc29 Rafael J. Wysocki 2008-07-07  715                return -EINVAL;
^1da177e4c3f41 Linus Torvalds    2005-04-16  716  
9b83ccd2f14f64 Rafael J. Wysocki 2009-09-08  717        
mutex_lock(&acpi_device_lock);
9b83ccd2f14f64 Rafael J. Wysocki 2009-09-08  718  
9b83ccd2f14f64 Rafael J. Wysocki 2009-09-08  719        if 
(dev->wakeup.prepare_count++)
9b83ccd2f14f64 Rafael J. Wysocki 2009-09-08  720                goto out;
0af4b8c4fb3119 Rafael J. Wysocki 2008-07-07  721  
5e93f177b80cbc Rafael J. Wysocki 2021-10-15  722        err = 
acpi_power_on_list(&dev->wakeup.resources);
993cbe595dda73 Rafael J. Wysocki 2013-01-17  723        if (err) {
5e93f177b80cbc Rafael J. Wysocki 2021-10-15  724                
dev_err(&dev->dev, "Cannot turn on wakeup power resources\n");
^1da177e4c3f41 Linus Torvalds    2005-04-16  725                
dev->wakeup.flags.valid = 0;
b5d667eb392ed9 Rafael J. Wysocki 2013-02-23  726                goto out;
b5d667eb392ed9 Rafael J. Wysocki 2013-02-23  727        }
5e93f177b80cbc Rafael J. Wysocki 2021-10-15  728  
77e766099efc29 Rafael J. Wysocki 2008-07-07  729        /*
993cbe595dda73 Rafael J. Wysocki 2013-01-17  730         * Passing 3 as the 
third argument below means the device may be
993cbe595dda73 Rafael J. Wysocki 2013-01-17  731         * put into arbitrary 
power state afterward.
77e766099efc29 Rafael J. Wysocki 2008-07-07  732         */
0af4b8c4fb3119 Rafael J. Wysocki 2008-07-07  733        err = 
acpi_device_sleep_wake(dev, 1, sleep_state, 3);
9b83ccd2f14f64 Rafael J. Wysocki 2009-09-08  734        if (err)
9b83ccd2f14f64 Rafael J. Wysocki 2009-09-08  735                
dev->wakeup.prepare_count = 0;
9b83ccd2f14f64 Rafael J. Wysocki 2009-09-08  736  
9b83ccd2f14f64 Rafael J. Wysocki 2009-09-08  737   out:
9b83ccd2f14f64 Rafael J. Wysocki 2009-09-08  738        
mutex_unlock(&acpi_device_lock);
0af4b8c4fb3119 Rafael J. Wysocki 2008-07-07 @739        return err;
^1da177e4c3f41 Linus Torvalds    2005-04-16  740  }
^1da177e4c3f41 Linus Torvalds    2005-04-16  741  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to