Re: New Defects reported by Coverity Scan for XenProject
Andrew Cooper <[email protected]> Thu, 30 Jul 2026 14:21:33 +0100
| Newsgroups | gmane.comp.emulators.xen.devel |
|---|---|
| Message-ID | <[email protected]> |
On 30/07/2026 2:14 pm, Jan Beulich wrote: > On 30.07.2026 12:24, [email protected] wrote: >> ** CID 1697485: Control flow issues (DEADCODE) >> /xen/arch/x86/hvm/hvm.c: 2436 in hvm_set_cr3() >> >> >> _____________________________________________________________________________________________ >> *** CID 1697485: Control flow issues (DEADCODE) >> /xen/arch/x86/hvm/hvm.c: 2436 in hvm_set_cr3() >> 2430 curr->arch.vm_event->write_data.cr3_noflush = noflush; >> 2431 >> 2432 return X86EMUL_OKAY; >> 2433 } >> 2434 } >> 2435 >>>>> CID 1697485: Control flow issues (DEADCODE) >>>>> Execution cannot reach the expression "(value ^ curr->arch.hvm.guest_cr[3]) >> 12" inside this statement: "if (!!(curr->arch.hvm.guest...". >> 2436 if ( hvm_paging_enabled(curr) && paging_mode_shadow(currd) && >> 2437 ((value ^ curr->arch.hvm.guest_cr[3]) >> PAGE_SHIFT) ) >> 2438 { >> 2439 /* Shadow-mode CR3 change. Check PDBR and update refcounts. */ >> 2440 struct page_info *page; >> 2441 >> >> ** CID 1697484: Control flow issues (DEADCODE) >> /xen/arch/x86/hvm/svm/svm.c: 128 in svm_update_guest_cr() >> >> >> _____________________________________________________________________________________________ >> *** CID 1697484: Control flow issues (DEADCODE) >> /xen/arch/x86/hvm/svm/svm.c: 128 in svm_update_guest_cr() >> 122 monitor_ctrlreg_bitmask(VM_EVENT_X86_CR3) ) >> 123 vmcb_set_cr_intercepts(vmcb, intercepts | CR_INTERCEPT_CR3_WRITE); >> 124 } >> 125 >> 126 value = v->arch.hvm.guest_cr[0]; >> 127 if ( paging_mode_shadow(v->domain) ) >>>>> CID 1697484: Control flow issues (DEADCODE) >>>>> Execution cannot reach this statement: "value |= 0x80010000UL;". >> 128 value |= X86_CR0_PG | X86_CR0_WP; >> 129 vmcb_set_cr0(vmcb, value); >> 130 break; >> 131 >> 132 case 2: >> 133 vmcb_set_cr2(vmcb, v->arch.hvm.guest_cr[2]); >> >> ** CID 1697483: Control flow issues (DEADCODE) >> /xen/arch/x86/hvm/svm/svm.c: 396 in svm_vmcb_restore() >> >> >> _____________________________________________________________________________________________ >> *** CID 1697483: Control flow issues (DEADCODE) >> /xen/arch/x86/hvm/svm/svm.c: 396 in svm_vmcb_restore() >> 390 return -EINVAL; >> 391 } >> 392 } >> 393 >> 394 if ( paging_mode_shadow(v->domain) ) >> 395 { >>>>> CID 1697483: Control flow issues (DEADCODE) >>>>> Execution cannot reach this statement: "if (c->cr0 & 0x80000000UL) ...". >> 396 if ( c->cr0 & X86_CR0_PG ) >> 397 { >> 398 page = get_page_from_gfn(v->domain, c->cr3 >> PAGE_SHIFT, >> 399 NULL, P2M_ALLOC); >> 400 if ( !page ) >> 401 { >> >> ** CID 1697482: (DEADCODE) >> /xen/arch/x86/hvm/hvm.c: 2332 in hvm_set_cr0() >> /xen/arch/x86/hvm/hvm.c: 2382 in hvm_set_cr0() >> >> >> _____________________________________________________________________________________________ >> *** CID 1697482: (DEADCODE) >> /xen/arch/x86/hvm/hvm.c: 2332 in hvm_set_cr0() >> 2326 hvm_update_guest_efer(v); >> 2327 } >> 2328 >> 2329 if ( paging_mode_shadow(d) ) >> 2330 { >> 2331 /* The guest CR3 must be pointing to the guest physical. */ >>>>> CID 1697482: (DEADCODE) >>>>> Execution cannot reach this statement: "gfn = v->arch.hvm.guest_cr[...". >> 2332 gfn = v->arch.hvm.guest_cr[3] >> PAGE_SHIFT; >> 2333 page = get_page_from_gfn(d, gfn, NULL, P2M_ALLOC); >> 2334 if ( !page ) >> 2335 { >> 2336 gdprintk(XENLOG_ERR, "Invalid CR3 value = %lx\n", >> 2337 v->arch.hvm.guest_cr[3]); >> /xen/arch/x86/hvm/hvm.c: 2382 in hvm_set_cr0() >> 2376 v->arch.hvm.guest_efer &= ~EFER_LMA; >> 2377 hvm_update_guest_efer(v); >> 2378 } >> 2379 >> 2380 if ( paging_mode_shadow(d) ) >> 2381 { >>>>> CID 1697482: (DEADCODE) >>>>> Execution cannot reach this statement: "put_page((struct page_info ...". >> 2382 put_page(pagetable_get_page(v->arch.guest_table)); >> 2383 v->arch.guest_table = pagetable_null(); >> 2384 } >> 2385 } >> 2386 >> 2387 if ( ((value ^ old_value) & X86_CR0_CD) && > For all of the above (and maybe more further down the original report): Do we have > control over the .config Coverity uses? These (not really) issues all result from > SHADOW_PAGING=n by default now, i.e. the unreachable statements are expected in > that configuration (and they were there before, if the build had been done with > SHADOW_PAGING=n). Yes. It is .github/workflows/coverity.yml which does the build and submission to Coverity. Right now it's a plain `make build-xen`, so will go from absolute defaults, but we can change it if needs be. ~Andrew