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]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
