On 07.04.2025 16:50, Andrew Cooper wrote: > On 03/04/2025 9:41 am, Jan Beulich wrote: >> Some of the uses of dom_cow aren't easily DCE-able (without extra >> #ifdef-ary), and hence it being constantly NULL when MEM_SHARING=n >> misguides Coverity into thinking that there may be a NULL deref in >> >> if ( p2m_is_shared(t) ) >> d = dom_cow; >> >> if ( get_page(page, d) ) >> return page; >> >> (in get_page_from_mfn_and_type()). Help the situation by making >> p2m_is_shared() be compile-time false when MEM_SHARING=n, thus also >> permitting the compiler to DCE some other code. >> >> Note that p2m_is_sharable() isn't used outside of mem_sharing.c, and >> hence P2M_SHARABLE_TYPES can simply be left undefined when >> MEM_SHARING=n.
Note this for ... >> --- a/xen/arch/x86/include/asm/p2m.h >> +++ b/xen/arch/x86/include/asm/p2m.h >> @@ -136,11 +136,16 @@ typedef unsigned int p2m_query_t; >> #endif >> >> /* Shared types */ >> +#ifdef CONFIG_MEM_SHARING >> /* XXX: Sharable types could include p2m_ram_ro too, but we would need to >> * reinit the type correctly after fault */ >> #define P2M_SHARABLE_TYPES (p2m_to_mask(p2m_ram_rw) \ >> | p2m_to_mask(p2m_ram_logdirty) ) >> #define P2M_SHARED_TYPES (p2m_to_mask(p2m_ram_shared)) >> +#else >> +/* P2M_SHARABLE_TYPES deliberately not provided. */ >> +#define P2M_SHARED_TYPES 0 > > You need P2M_SHARABLE_TYPES too, or p2m_is_sharable() will start > becoming a syntax error. ... what you're saying here. If you did take that into consideration, then please be more specific about the concern(s) you have. Jan