Hi Stanislav,

kernel test robot noticed the following build warnings:

[auto build test WARNING on linus/master]
[also build test WARNING on next-20251010]
[cannot apply to v6.17]
[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#_base_tree_information]

url:    
https://github.com/intel-lab-lkp/linux/commits/Stanislav-Kinsburskii/Drivers-hv-Refactor-and-rename-memory-region-handling-functions/20251010-111917
base:   linus/master
patch link:    
https://lore.kernel.org/r/175976319844.16834.4747024333732752980.stgit%40skinsburskii-cloud-desktop.internal.cloudapp.net
patch subject: [PATCH v4 5/5] Drivers: hv: Add support for movable memory 
regions
config: x86_64-randconfig-006-20251010 
(https://download.01.org/0day-ci/archive/20251011/[email protected]/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 
87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): 
(https://download.01.org/0day-ci/archive/20251011/[email protected]/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <[email protected]>
| Closes: 
https://lore.kernel.org/oe-kbuild-all/[email protected]/

All warnings (new ones prefixed by >>):

>> drivers/hv/mshv_root_main.c:1410:11: warning: variable 'ret' is used 
>> uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
    1410 |         else if (!mutex_trylock(&region->mutex))
         |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/hv/mshv_root_main.c:1434:12: note: uninitialized use occurs here
    1434 |         WARN_ONCE(ret,
         |                   ^~~
   include/asm-generic/bug.h:152:18: note: expanded from macro 'WARN_ONCE'
     152 |         DO_ONCE_LITE_IF(condition, WARN, 1, format)
         |                         ^~~~~~~~~
   include/linux/once_lite.h:28:27: note: expanded from macro 'DO_ONCE_LITE_IF'
      28 |                 bool __ret_do_once = !!(condition);                  
   \
         |                                         ^~~~~~~~~
   drivers/hv/mshv_root_main.c:1410:7: note: remove the 'if' if its condition 
is always false
    1410 |         else if (!mutex_trylock(&region->mutex))
         |              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    1411 |                 goto out_fail;
         |                 ~~~~~~~~~~~~~
   drivers/hv/mshv_root_main.c:1406:9: note: initialize the variable 'ret' to 
silence this warning
    1406 |         int ret;
         |                ^
         |                 = 0
   1 warning generated.


vim +1410 drivers/hv/mshv_root_main.c

  1377  
  1378  /**
  1379   * mshv_region_interval_invalidate - Invalidate a range of memory region
  1380   * @mni: Pointer to the mmu_interval_notifier structure
  1381   * @range: Pointer to the mmu_notifier_range structure
  1382   * @cur_seq: Current sequence number for the interval notifier
  1383   *
  1384   * This function invalidates a memory region by remapping its pages with
  1385   * no access permissions. It locks the region's mutex to ensure thread 
safety
  1386   * and updates the sequence number for the interval notifier. If the 
range
  1387   * is blockable, it uses a blocking lock; otherwise, it attempts a 
non-blocking
  1388   * lock and returns false if unsuccessful.
  1389   *
  1390   * NOTE: Failure to invalidate a region is a serious error, as the 
pages will
  1391   * be considered freed while they are still mapped by the hypervisor.
  1392   * Any attempt to access such pages will likely crash the system.
  1393   *
  1394   * Return: true if the region was successfully invalidated, false 
otherwise.
  1395   */
  1396  static bool
  1397  mshv_region_interval_invalidate(struct mmu_interval_notifier *mni,
  1398                                  const struct mmu_notifier_range *range,
  1399                                  unsigned long cur_seq)
  1400  {
  1401          struct mshv_mem_region *region = container_of(mni,
  1402                                                  struct mshv_mem_region,
  1403                                                  mni);
  1404          u64 page_offset, page_count;
  1405          unsigned long mstart, mend;
  1406          int ret;
  1407  
  1408          if (mmu_notifier_range_blockable(range))
  1409                  mutex_lock(&region->mutex);
> 1410          else if (!mutex_trylock(&region->mutex))
  1411                  goto out_fail;
  1412  
  1413          mmu_interval_set_seq(mni, cur_seq);
  1414  
  1415          mstart = max(range->start, region->start_uaddr);
  1416          mend = min(range->end, region->start_uaddr +
  1417                     (region->nr_pages << HV_HYP_PAGE_SHIFT));
  1418  
  1419          page_offset = HVPFN_DOWN(mstart - region->start_uaddr);
  1420          page_count = HVPFN_DOWN(mend - mstart);
  1421  
  1422          ret = mshv_region_remap_pages(region, HV_MAP_GPA_NO_ACCESS,
  1423                                        page_offset, page_count);
  1424          if (ret)
  1425                  goto out_fail;
  1426  
  1427          mshv_region_invalidate_pages(region, page_offset, page_count);
  1428  
  1429          mutex_unlock(&region->mutex);
  1430  
  1431          return true;
  1432  
  1433  out_fail:
  1434          WARN_ONCE(ret,
  1435                    "Failed to invalidate region %#llx-%#llx (range 
%#lx-%#lx, event: %u, pages %#llx-%#llx, mm: %#llx): %d\n",
  1436                    region->start_uaddr,
  1437                    region->start_uaddr + (region->nr_pages << 
HV_HYP_PAGE_SHIFT),
  1438                    range->start, range->end, range->event,
  1439                    page_offset, page_offset + page_count - 1, 
(u64)range->mm, ret);
  1440          return false;
  1441  }
  1442  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

Reply via email to