Re: drivers/virtio/virtio_mem.c:1031 virtio_mem_mb_plug_any_sb() error: uninitialized symbol 'rc'.
From: David Hildenbrand
Date: Sat Aug 08 2020 - 08:48:14 EST
> Am 08.08.2020 um 13:39 schrieb kernel test robot <lkp@xxxxxxxxx>:
>
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: 449dc8c97089a6e09fb2dac4d92b1b7ac0eb7c1e
> commit: 5f1f79bbc9e26fa9412fa9522f957bb8f030c442 virtio-mem: Paravirtualized memory hotplug
> date: 9 weeks ago
> config: x86_64-randconfig-m001-20200808 (attached as .config)
> compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@xxxxxxxxx>
>
Was there a delay in sending these out? The fix by Dan is long upstream: 1c3d69ab5348
> New smatch warnings:
> drivers/virtio/virtio_mem.c:1031 virtio_mem_mb_plug_any_sb() error: uninitialized symbol 'rc'.
> drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dce_calcs.c:1607 calculate_bandwidth() warn: Function too hairy. No more merges.
>
> Old smatch warnings:
> drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dce_calcs.c:3387 bw_calcs() warn: inconsistent indenting
>
> vim +/rc +1031 drivers/virtio/virtio_mem.c
>
> 978
> 979 /*
> 980 * Try to plug the desired number of subblocks of a memory block that
> 981 * is already added to Linux.
> 982 *
> 983 * Will modify the state of the memory block.
> 984 *
> 985 * Note: Can fail after some subblocks were successfully plugged.
> 986 */
> 987 static int virtio_mem_mb_plug_any_sb(struct virtio_mem *vm, unsigned long mb_id,
> 988 uint64_t *nb_sb, bool online)
> 989 {
> 990 unsigned long pfn, nr_pages;
> 991 int sb_id, count;
> 992 int rc;
> 993
> 994 if (WARN_ON_ONCE(!*nb_sb))
> 995 return -EINVAL;
> 996
> 997 while (*nb_sb) {
> 998 sb_id = virtio_mem_mb_first_unplugged_sb(vm, mb_id);
> 999 if (sb_id >= vm->nb_sb_per_mb)
> 1000 break;
> 1001 count = 1;
> 1002 while (count < *nb_sb &&
> 1003 sb_id + count < vm->nb_sb_per_mb &&
> 1004 !virtio_mem_mb_test_sb_plugged(vm, mb_id, sb_id + count,
> 1005 1))
> 1006 count++;
> 1007
> 1008 rc = virtio_mem_mb_plug_sb(vm, mb_id, sb_id, count);
> 1009 if (rc)
> 1010 return rc;
> 1011 *nb_sb -= count;
> 1012 if (!online)
> 1013 continue;
> 1014
> 1015 /* fake-online the pages if the memory block is online */
> 1016 pfn = PFN_DOWN(virtio_mem_mb_id_to_phys(mb_id) +
> 1017 sb_id * vm->subblock_size);
> 1018 nr_pages = PFN_DOWN(count * vm->subblock_size);
> 1019 virtio_mem_fake_online(pfn, nr_pages);
> 1020 }
> 1021
> 1022 if (virtio_mem_mb_test_sb_plugged(vm, mb_id, 0, vm->nb_sb_per_mb)) {
> 1023 if (online)
> 1024 virtio_mem_mb_set_state(vm, mb_id,
> 1025 VIRTIO_MEM_MB_STATE_ONLINE);
> 1026 else
> 1027 virtio_mem_mb_set_state(vm, mb_id,
> 1028 VIRTIO_MEM_MB_STATE_OFFLINE);
> 1029 }
> 1030
>> 1031 return rc;
> 1032 }
> 1033
>
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
> <.config.gz>