[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <202510041919.LaZWBcDN-lkp@intel.com>
Date: Mon, 6 Oct 2025 10:33:13 +0300
From: Dan Carpenter <dan.carpenter@...aro.org>
To: oe-kbuild@...ts.linux.dev, James Houghton <jthoughton@...gle.com>,
Paolo Bonzini <pbonzini@...hat.com>,
Sean Christopherson <seanjc@...gle.com>
Cc: lkp@...el.com, oe-kbuild-all@...ts.linux.dev,
James Houghton <jthoughton@...gle.com>, kvm@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH 1/2] KVM: For manual-protect GET_DIRTY_LOG, do not hold
slots lock
Hi James,
kernel test robot noticed the following build warnings:
url: https://github.com/intel-lab-lkp/linux/commits/James-Houghton/KVM-selftests-Add-parallel-KVM_GET_DIRTY_LOG-to-dirty_log_perf_test/20251001-013306
base: a6ad54137af92535cfe32e19e5f3bc1bb7dbd383
patch link: https://lore.kernel.org/r/20250930172850.598938-1-jthoughton%40google.com
patch subject: [PATCH 1/2] KVM: For manual-protect GET_DIRTY_LOG, do not hold slots lock
config: x86_64-randconfig-161-20251004 (https://download.01.org/0day-ci/archive/20251004/202510041919.LaZWBcDN-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
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 <lkp@...el.com>
| Reported-by: Dan Carpenter <dan.carpenter@...aro.org>
| Closes: https://lore.kernel.org/r/202510041919.LaZWBcDN-lkp@intel.com/
New smatch warnings:
arch/x86/kvm/../../../virt/kvm/kvm_main.c:2290 kvm_get_dirty_log_protect() error: uninitialized symbol 'flush'.
vim +/flush +2290 arch/x86/kvm/../../../virt/kvm/kvm_main.c
ba0513b5b8ffbcb virt/kvm/kvm_main.c Mario Smarduch 2015-01-15 2255 n = kvm_dirty_bitmap_bytes(memslot);
82fb1294f7ad3ee virt/kvm/kvm_main.c James Houghton 2025-09-30 2256 if (!protect) {
2a31b9db153530d virt/kvm/kvm_main.c Paolo Bonzini 2018-10-23 2257 /*
82fb1294f7ad3ee virt/kvm/kvm_main.c James Houghton 2025-09-30 2258 * Unlike kvm_get_dirty_log, we never flush, because no flush is
82fb1294f7ad3ee virt/kvm/kvm_main.c James Houghton 2025-09-30 2259 * needed until KVM_CLEAR_DIRTY_LOG. There is some code
82fb1294f7ad3ee virt/kvm/kvm_main.c James Houghton 2025-09-30 2260 * duplication between this function and kvm_get_dirty_log, but
82fb1294f7ad3ee virt/kvm/kvm_main.c James Houghton 2025-09-30 2261 * hopefully all architecture transition to
82fb1294f7ad3ee virt/kvm/kvm_main.c James Houghton 2025-09-30 2262 * kvm_get_dirty_log_protect and kvm_get_dirty_log can be
82fb1294f7ad3ee virt/kvm/kvm_main.c James Houghton 2025-09-30 2263 * eliminated.
2a31b9db153530d virt/kvm/kvm_main.c Paolo Bonzini 2018-10-23 2264 */
2a31b9db153530d virt/kvm/kvm_main.c Paolo Bonzini 2018-10-23 2265 dirty_bitmap_buffer = dirty_bitmap;
2a31b9db153530d virt/kvm/kvm_main.c Paolo Bonzini 2018-10-23 2266 } else {
82fb1294f7ad3ee virt/kvm/kvm_main.c James Houghton 2025-09-30 2267 bool flush;
flush needs to be initialized to false.
82fb1294f7ad3ee virt/kvm/kvm_main.c James Houghton 2025-09-30 2268
03133347b4452ef virt/kvm/kvm_main.c Claudio Imbrenda 2018-04-30 2269 dirty_bitmap_buffer = kvm_second_dirty_bitmap(memslot);
ba0513b5b8ffbcb virt/kvm/kvm_main.c Mario Smarduch 2015-01-15 2270 memset(dirty_bitmap_buffer, 0, n);
ba0513b5b8ffbcb virt/kvm/kvm_main.c Mario Smarduch 2015-01-15 2271
531810caa9f4bc9 virt/kvm/kvm_main.c Ben Gardon 2021-02-02 2272 KVM_MMU_LOCK(kvm);
ba0513b5b8ffbcb virt/kvm/kvm_main.c Mario Smarduch 2015-01-15 2273 for (i = 0; i < n / sizeof(long); i++) {
ba0513b5b8ffbcb virt/kvm/kvm_main.c Mario Smarduch 2015-01-15 2274 unsigned long mask;
ba0513b5b8ffbcb virt/kvm/kvm_main.c Mario Smarduch 2015-01-15 2275 gfn_t offset;
ba0513b5b8ffbcb virt/kvm/kvm_main.c Mario Smarduch 2015-01-15 2276
ba0513b5b8ffbcb virt/kvm/kvm_main.c Mario Smarduch 2015-01-15 2277 if (!dirty_bitmap[i])
ba0513b5b8ffbcb virt/kvm/kvm_main.c Mario Smarduch 2015-01-15 2278 continue;
ba0513b5b8ffbcb virt/kvm/kvm_main.c Mario Smarduch 2015-01-15 2279
0dff084607bd555 virt/kvm/kvm_main.c Sean Christopherson 2020-02-18 2280 flush = true;
ba0513b5b8ffbcb virt/kvm/kvm_main.c Mario Smarduch 2015-01-15 2281 mask = xchg(&dirty_bitmap[i], 0);
ba0513b5b8ffbcb virt/kvm/kvm_main.c Mario Smarduch 2015-01-15 2282 dirty_bitmap_buffer[i] = mask;
ba0513b5b8ffbcb virt/kvm/kvm_main.c Mario Smarduch 2015-01-15 2283
ba0513b5b8ffbcb virt/kvm/kvm_main.c Mario Smarduch 2015-01-15 2284 offset = i * BITS_PER_LONG;
58d2930f4ee335a virt/kvm/kvm_main.c Takuya Yoshikawa 2015-03-17 2285 kvm_arch_mmu_enable_log_dirty_pt_masked(kvm, memslot,
58d2930f4ee335a virt/kvm/kvm_main.c Takuya Yoshikawa 2015-03-17 2286 offset, mask);
58d2930f4ee335a virt/kvm/kvm_main.c Takuya Yoshikawa 2015-03-17 2287 }
531810caa9f4bc9 virt/kvm/kvm_main.c Ben Gardon 2021-02-02 2288 KVM_MMU_UNLOCK(kvm);
2a31b9db153530d virt/kvm/kvm_main.c Paolo Bonzini 2018-10-23 2289
0dff084607bd555 virt/kvm/kvm_main.c Sean Christopherson 2020-02-18 @2290 if (flush)
Either uninitialized or true. Never false.
619b5072443c05c virt/kvm/kvm_main.c David Matlack 2023-08-11 2291 kvm_flush_remote_tlbs_memslot(kvm, memslot);
82fb1294f7ad3ee virt/kvm/kvm_main.c James Houghton 2025-09-30 2292 }
0dff084607bd555 virt/kvm/kvm_main.c Sean Christopherson 2020-02-18 2293
ba0513b5b8ffbcb virt/kvm/kvm_main.c Mario Smarduch 2015-01-15 2294 if (copy_to_user(log->dirty_bitmap, dirty_bitmap_buffer, n))
58d6db349172786 virt/kvm/kvm_main.c Markus Elfring 2017-01-22 2295 return -EFAULT;
58d6db349172786 virt/kvm/kvm_main.c Markus Elfring 2017-01-22 2296 return 0;
ba0513b5b8ffbcb virt/kvm/kvm_main.c Mario Smarduch 2015-01-15 2297 }
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Powered by blists - more mailing lists