From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: drivers/gpu/drm/radeon/radeon_atombios.c:2816:4: warning: Dereference of null pointer [clang-analyzer-core.NullDereference]
Date: Sun, 02 Jan 2022 23:09:53 +0800 [thread overview]
Message-ID: <202201022245.dCg0sgVX-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 21608 bytes --]
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Chris Down <chris@chrisdown.name>
CC: Petr Mladek <pmladek@suse.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 278218f6778bc7d6f8b67199446c56cec7ebb841
commit: 337015573718b161891a3473d25f59273f2e626b printk: Userspace format indexing support
date: 6 months ago
:::::: branch date: 21 hours ago
:::::: commit date: 6 months ago
config: riscv-randconfig-c006-20211229 (https://download.01.org/0day-ci/archive/20220102/202201022245.dCg0sgVX-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project cd284b7ac0615afc6e0f1a30da2777e361de27a3)
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 riscv cross compiling tool for clang build
# apt-get install binutils-riscv64-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=337015573718b161891a3473d25f59273f2e626b
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 337015573718b161891a3473d25f59273f2e626b
# save the config file to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv 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 >>)
8 warnings generated.
Suppressed 8 warnings (7 in non-user code, 1 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.
9 warnings generated.
Suppressed 9 warnings (8 in non-user code, 1 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.
9 warnings generated.
Suppressed 9 warnings (8 in non-user code, 1 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.
8 warnings generated.
Suppressed 8 warnings (7 in non-user code, 1 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.
9 warnings generated.
Suppressed 9 warnings (8 in non-user code, 1 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.
8 warnings generated.
Suppressed 8 warnings (7 in non-user code, 1 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.
8 warnings generated.
Suppressed 8 warnings (7 in non-user code, 1 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.
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.
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.
5 warnings generated.
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.
5 warnings generated.
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.
6 warnings generated.
drivers/char/hw_random/ixp4xx-rng.c:44:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
struct device *dev = &pdev->dev;
^~~ ~~~~~~~~~~
drivers/char/hw_random/ixp4xx-rng.c:44:17: note: Value stored to 'dev' during its initialization is never read
struct device *dev = &pdev->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.
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.
5 warnings generated.
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.
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.
5 warnings generated.
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.
5 warnings generated.
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.
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.
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.
5 warnings generated.
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.
5 warnings generated.
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.
5 warnings generated.
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.
5 warnings generated.
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.
5 warnings generated.
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.
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.
9 warnings generated.
drivers/gpu/drm/radeon/radeon_drv.c:467:2: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores]
ret = radeon_resume_kms(drm_dev, false, false);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/radeon/radeon_drv.c:467:2: note: Value stored to 'ret' is never read
ret = radeon_resume_kms(drm_dev, false, false);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Suppressed 8 warnings (8 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.
8 warnings generated.
Suppressed 8 warnings (8 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.
8 warnings generated.
Suppressed 8 warnings (8 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.
8 warnings generated.
Suppressed 8 warnings (8 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.
58 warnings generated.
>> drivers/gpu/drm/radeon/radeon_atombios.c:2816:4: warning: Dereference of null pointer [clang-analyzer-core.NullDereference]
rdev->pm.power_state[rdev->pm.default_power_state_index].clock_info[0].voltage.voltage;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/radeon/radeon_atombios.c:2765:6: note: Assuming the condition is true
if (atom_parse_data_header(mode_info->atom_context, index, NULL,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/radeon/radeon_atombios.c:2765:2: note: Taking true branch
if (atom_parse_data_header(mode_info->atom_context, index, NULL,
^
drivers/gpu/drm/radeon/radeon_atombios.c:2767:3: note: Control jumps to 'case 5:' at line 2774
switch (frev) {
^
drivers/gpu/drm/radeon/radeon_atombios.c:2776:4: note: Execution continues on line 2785
break;
^
drivers/gpu/drm/radeon/radeon_atombios.c:2785:6: note: 'state_index' is equal to 0
if (state_index == 0) {
^~~~~~~~~~~
drivers/gpu/drm/radeon/radeon_atombios.c:2785:2: note: Taking true branch
if (state_index == 0) {
^
drivers/gpu/drm/radeon/radeon_atombios.c:2786:26: note: Calling 'kzalloc'
rdev->pm.power_state = kzalloc(sizeof(struct radeon_power_state), GFP_KERNEL);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/slab.h:721:9: note: Calling 'kmalloc'
return kmalloc(size, flags | __GFP_ZERO);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/slab.h:579:2: note: Taking false branch
if (__builtin_constant_p(size)) {
^
include/linux/slab.h:596:2: note: Returning pointer
return __kmalloc(size, flags);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/slab.h:721:9: note: Returning from 'kmalloc'
return kmalloc(size, flags | __GFP_ZERO);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/slab.h:721:2: note: Returning pointer
return kmalloc(size, flags | __GFP_ZERO);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/radeon/radeon_atombios.c:2786:26: note: Returning from 'kzalloc'
rdev->pm.power_state = kzalloc(sizeof(struct radeon_power_state), GFP_KERNEL);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/radeon/radeon_atombios.c:2786:3: note: Value assigned to field 'power_state'
rdev->pm.power_state = kzalloc(sizeof(struct radeon_power_state), GFP_KERNEL);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/radeon/radeon_atombios.c:2787:7: note: Assuming field 'power_state' is null
if (rdev->pm.power_state) {
^~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/radeon/radeon_atombios.c:2787:3: note: Taking false branch
if (rdev->pm.power_state) {
^
drivers/gpu/drm/radeon/radeon_atombios.c:2814:6: note: Assuming field 'default_power_state_index' is >= 0
if (rdev->pm.default_power_state_index >= 0)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/radeon/radeon_atombios.c:2814:2: note: Taking true branch
if (rdev->pm.default_power_state_index >= 0)
^
drivers/gpu/drm/radeon/radeon_atombios.c:2816:4: note: Dereference of null pointer
rdev->pm.power_state[rdev->pm.default_power_state_index].clock_info[0].voltage.voltage;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Suppressed 57 warnings (8 in non-user code, 49 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.
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.
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.
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.
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.
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.
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.
7 warnings generated.
drivers/tty/serial/fsl_lpuart.c:1230:33: warning: The result of the left shift is undefined because the right operand is negative [clang-analyzer-core.UndefinedBinaryOperatorResult]
sport->rx_dma_rng_buf_len = (1 << (fls(sport->rx_dma_rng_buf_len) - 1));
^
drivers/tty/serial/fsl_lpuart.c:2803:6: note: Assuming field 'suspended' is 0
if (sport->port.suspended && !irq_wake)
^~~~~~~~~~~~~~~~~~~~~
drivers/tty/serial/fsl_lpuart.c:2803:28: note: Left side of '&&' is false
if (sport->port.suspended && !irq_wake)
^
drivers/tty/serial/fsl_lpuart.c:2806:2: note: Taking true branch
if (lpuart_is_32(sport))
^
drivers/tty/serial/fsl_lpuart.c:2811:6: note: Assuming field 'lpuart_dma_rx_use' is true
if (sport->lpuart_dma_rx_use) {
^~~~~~~~~~~~~~~~~~~~~~~~
drivers/tty/serial/fsl_lpuart.c:2811:2: note: Taking true branch
if (sport->lpuart_dma_rx_use) {
^
drivers/tty/serial/fsl_lpuart.c:2812:7: note: Assuming 'irq_wake' is true
if (irq_wake) {
vim +2816 drivers/gpu/drm/radeon/radeon_atombios.c
b0e664140a1703 Alex Deucher 2010-11-22 2754
560154e9a27f2f Alex Deucher 2010-11-22 2755 void radeon_atombios_get_power_modes(struct radeon_device *rdev)
560154e9a27f2f Alex Deucher 2010-11-22 2756 {
560154e9a27f2f Alex Deucher 2010-11-22 2757 struct radeon_mode_info *mode_info = &rdev->mode_info;
560154e9a27f2f Alex Deucher 2010-11-22 2758 int index = GetIndexIntoMasterTable(DATA, PowerPlayInfo);
560154e9a27f2f Alex Deucher 2010-11-22 2759 u16 data_offset;
560154e9a27f2f Alex Deucher 2010-11-22 2760 u8 frev, crev;
560154e9a27f2f Alex Deucher 2010-11-22 2761 int state_index = 0;
560154e9a27f2f Alex Deucher 2010-11-22 2762
560154e9a27f2f Alex Deucher 2010-11-22 2763 rdev->pm.default_power_state_index = -1;
560154e9a27f2f Alex Deucher 2010-11-22 2764
560154e9a27f2f Alex Deucher 2010-11-22 2765 if (atom_parse_data_header(mode_info->atom_context, index, NULL,
560154e9a27f2f Alex Deucher 2010-11-22 2766 &frev, &crev, &data_offset)) {
560154e9a27f2f Alex Deucher 2010-11-22 2767 switch (frev) {
560154e9a27f2f Alex Deucher 2010-11-22 2768 case 1:
560154e9a27f2f Alex Deucher 2010-11-22 2769 case 2:
560154e9a27f2f Alex Deucher 2010-11-22 2770 case 3:
560154e9a27f2f Alex Deucher 2010-11-22 2771 state_index = radeon_atombios_parse_power_table_1_3(rdev);
560154e9a27f2f Alex Deucher 2010-11-22 2772 break;
560154e9a27f2f Alex Deucher 2010-11-22 2773 case 4:
560154e9a27f2f Alex Deucher 2010-11-22 2774 case 5:
560154e9a27f2f Alex Deucher 2010-11-22 2775 state_index = radeon_atombios_parse_power_table_4_5(rdev);
560154e9a27f2f Alex Deucher 2010-11-22 2776 break;
b0e664140a1703 Alex Deucher 2010-11-22 2777 case 6:
b0e664140a1703 Alex Deucher 2010-11-22 2778 state_index = radeon_atombios_parse_power_table_6(rdev);
b0e664140a1703 Alex Deucher 2010-11-22 2779 break;
560154e9a27f2f Alex Deucher 2010-11-22 2780 default:
560154e9a27f2f Alex Deucher 2010-11-22 2781 break;
56278a8edacee9 Alex Deucher 2009-12-28 2782 }
f8e6bfc2ce1628 Alex Deucher 2013-04-25 2783 }
f8e6bfc2ce1628 Alex Deucher 2013-04-25 2784
f8e6bfc2ce1628 Alex Deucher 2013-04-25 2785 if (state_index == 0) {
0975b16274bad1 Alex Deucher 2011-02-02 2786 rdev->pm.power_state = kzalloc(sizeof(struct radeon_power_state), GFP_KERNEL);
0975b16274bad1 Alex Deucher 2011-02-02 2787 if (rdev->pm.power_state) {
8f3f1c9a22a642 Alex Deucher 2011-11-04 2788 rdev->pm.power_state[0].clock_info =
6396bb221514d2 Kees Cook 2018-06-12 2789 kcalloc(1,
6396bb221514d2 Kees Cook 2018-06-12 2790 sizeof(struct radeon_pm_clock_info),
6396bb221514d2 Kees Cook 2018-06-12 2791 GFP_KERNEL);
8f3f1c9a22a642 Alex Deucher 2011-11-04 2792 if (rdev->pm.power_state[0].clock_info) {
56278a8edacee9 Alex Deucher 2009-12-28 2793 /* add the default mode */
0ec0e74f784ca0 Alex Deucher 2009-12-23 2794 rdev->pm.power_state[state_index].type =
0ec0e74f784ca0 Alex Deucher 2009-12-23 2795 POWER_STATE_TYPE_DEFAULT;
56278a8edacee9 Alex Deucher 2009-12-28 2796 rdev->pm.power_state[state_index].num_clock_modes = 1;
56278a8edacee9 Alex Deucher 2009-12-28 2797 rdev->pm.power_state[state_index].clock_info[0].mclk = rdev->clock.default_mclk;
56278a8edacee9 Alex Deucher 2009-12-28 2798 rdev->pm.power_state[state_index].clock_info[0].sclk = rdev->clock.default_sclk;
56278a8edacee9 Alex Deucher 2009-12-28 2799 rdev->pm.power_state[state_index].default_clock_mode =
56278a8edacee9 Alex Deucher 2009-12-28 2800 &rdev->pm.power_state[state_index].clock_info[0];
56278a8edacee9 Alex Deucher 2009-12-28 2801 rdev->pm.power_state[state_index].clock_info[0].voltage.type = VOLTAGE_NONE;
79daedc942813c Alex Deucher 2010-04-22 2802 rdev->pm.power_state[state_index].pcie_lanes = 16;
a48b9b4edb8bb8 Alex Deucher 2010-04-22 2803 rdev->pm.default_power_state_index = state_index;
a48b9b4edb8bb8 Alex Deucher 2010-04-22 2804 rdev->pm.power_state[state_index].flags = 0;
56278a8edacee9 Alex Deucher 2009-12-28 2805 state_index++;
56278a8edacee9 Alex Deucher 2009-12-28 2806 }
0975b16274bad1 Alex Deucher 2011-02-02 2807 }
8f3f1c9a22a642 Alex Deucher 2011-11-04 2808 }
02b17cc05372ab Alex Deucher 2010-04-22 2809
56278a8edacee9 Alex Deucher 2009-12-28 2810 rdev->pm.num_power_states = state_index;
771fe6b912fca5 Jerome Glisse 2009-06-05 2811
a48b9b4edb8bb8 Alex Deucher 2010-04-22 2812 rdev->pm.current_power_state_index = rdev->pm.default_power_state_index;
a48b9b4edb8bb8 Alex Deucher 2010-04-22 2813 rdev->pm.current_clock_mode_index = 0;
4376eee92e5a83 Alexander Müller 2011-12-30 2814 if (rdev->pm.default_power_state_index >= 0)
4376eee92e5a83 Alexander Müller 2011-12-30 2815 rdev->pm.current_vddc =
4376eee92e5a83 Alexander Müller 2011-12-30 @2816 rdev->pm.power_state[rdev->pm.default_power_state_index].clock_info[0].voltage.voltage;
4376eee92e5a83 Alexander Müller 2011-12-30 2817 else
4376eee92e5a83 Alexander Müller 2011-12-30 2818 rdev->pm.current_vddc = 0;
56278a8edacee9 Alex Deucher 2009-12-28 2819 }
56278a8edacee9 Alex Deucher 2009-12-28 2820
:::::: The code at line 2816 was first introduced by commit
:::::: 4376eee92e5a8332b470040e672ea99cd44c826a drm/radeon/kms/atom: fix possible segfault in pm setup
:::::: TO: Alexander Müller <serveralex@gmail.com>
:::::: CC: Dave Airlie <airlied@redhat.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
next reply other threads:[~2022-01-02 15:09 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-02 15:09 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2022-03-21 15:46 drivers/gpu/drm/radeon/radeon_atombios.c:2816:4: warning: Dereference of null pointer [clang-analyzer-core.NullDereference] kernel test robot
2022-04-30 17:41 kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202201022245.dCg0sgVX-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.