[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] x86/shadow: Delete the none.c dummy file


  • To: Alejandro Vallejo <alejandro.garciavallejo@xxxxxxx>
  • From: Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • Date: Mon, 9 Feb 2026 16:55:52 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=DUmUtqrFJl+6Lblsrb1Y7o/JDSK7vz8OWMK0YmbnBGo=; b=DXR1Rk3loJPjsqvBHUbBdeX/w+iKtnzLzAkmZpdTSR56hYS1Nbpr1YZEegr2dW5THAX5iu+IQYwdi82tY8LMI5qP6cocUFvYUe7QMOGbwFHdNFDp4VdYg6H781jj9PjbegCQbiezBtnVhGZDZdLzQRNTIEGduAasPBUDovX/KFxbq/nuuPDrGxeE6xmwY3b2GrYZmMGsk2AXtcAhYuDsTm5LIzNx45S/LejgjJXa1jRpwxGSh913wHG9W33qg1oqly1cR4wbYIRN2cl9/Qpx2nf+UEKc1U5EwLIISF7zRUULgZxIz0FY+ZfS4ZdWUJw8lu7B3BfmbC44ZQHALOf2Bw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UBznJWuB3bZr3MC8jsZtGvwAmvXIsFcyYYYEIIqlLxgiHoXdN79Tf0BV8nJPh4TvPGLk0KD8MHB9SZcePfTpu9sFV3qCfoaFE36LysLCygwPICzrhnEFenEN5e2FC/vrGL/TDp2BL1Q6VQDEYS/cWZls9vJlvYDi94q+VBH5Kd8L77bQ+bzaeVuKLh5K2KwPaiBZyT5XKntNCOfgZVbUglVrhXcYvrQvMRg3XnCy6crAuL5o2mKIrHnynVtSRkQ4/wO2BX6uv34G93y+h318kUQ06hG7h4A+9WFzmuEYfRKtSNM4cFrItPWLV5ibCNZQBNnANJBTEM/CR0zDJVegOw==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com;
  • Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx, Jan Beulich <jbeulich@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Tim Deegan <tim@xxxxxxx>
  • Delivery-date: Mon, 09 Feb 2026 15:56:09 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On Mon, Feb 09, 2026 at 04:35:04PM +0100, Alejandro Vallejo wrote:
> On Mon Feb 9, 2026 at 3:42 PM CET, Roger Pau Monné wrote:
> > On Mon, Feb 09, 2026 at 11:41:02AM +0100, Alejandro Vallejo wrote:
> >> It only has 2 callers, both of which can be conditionally removed.
> >> 
> >> Signed-off-by: Alejandro Vallejo <alejandro.garciavallejo@xxxxxxx>
> >> ---
> >> I'd be ok conditionalising the else branch on...
> >> 
> >>     IS_ENABLED(CONFIG_SHADOW_PAGING )|| IS_ENABLED(CONFIG_LOG_DIRTY)
> >> 
> >> logdirty patch: 
> >> https://lore.kernel.org/xen-devel/20260209103118.5885-1-alejandro.garciavallejo@xxxxxxx
> >> 
> >> ... to avoid the danger of stale pointers, with required changes elsewhere 
> >> so
> >> none.c is only compiled out in that case.
> >> 
> >> I'm not sure how much it matters seeing how they are all unreachable.
> >> ---
> >>  xen/arch/x86/mm/Makefile        |  2 +-
> >>  xen/arch/x86/mm/paging.c        |  4 +-
> >>  xen/arch/x86/mm/shadow/Makefile |  4 --
> >>  xen/arch/x86/mm/shadow/none.c   | 77 ---------------------------------
> >>  4 files changed, 3 insertions(+), 84 deletions(-)
> >>  delete mode 100644 xen/arch/x86/mm/shadow/none.c
> >> 
> >> diff --git a/xen/arch/x86/mm/Makefile b/xen/arch/x86/mm/Makefile
> >> index 960f6e8409..066c4caff3 100644
> >> --- a/xen/arch/x86/mm/Makefile
> >> +++ b/xen/arch/x86/mm/Makefile
> >> @@ -1,4 +1,4 @@
> >> -obj-y += shadow/
> >> +obj-$(CONFIG_SHADOW_PAGING) += shadow/
> >>  obj-$(CONFIG_HVM) += hap/
> >>  
> >>  obj-$(CONFIG_ALTP2M) += altp2m.o
> >> diff --git a/xen/arch/x86/mm/paging.c b/xen/arch/x86/mm/paging.c
> >> index 2396f81ad5..5f70254cec 100644
> >> --- a/xen/arch/x86/mm/paging.c
> >> +++ b/xen/arch/x86/mm/paging.c
> >> @@ -634,7 +634,7 @@ int paging_domain_init(struct domain *d)
> >>       */
> >>      if ( hap_enabled(d) )
> >>          hap_domain_init(d);
> >> -    else
> >> +    else if ( IS_ENABLED(CONFIG_SHADOW_PAGING) )
> >>          rc = shadow_domain_init(d);
> >
> > If you want to go this route you will need to set rc = -EOPNOTSUPP;
> > prior to the `if ... else if` on the HVM case.
> 
> Maybe this instead
> 
>     else
>         rc = IS_ENABLED(PV) ? shadow_domain_init(d) : -EOPNOTSUPP;

But even for the PV case we cannot call shadow_domain_init() if shadow
is compiled out?  I think you want:

    if ( hap_enabled(d) )
        hap_domain_init(d);
    else if ( IS_ENABLED(CONFIG_SHADOW_PAGING) )
        rc = shadow_domain_init(d);
    else
        rc = is_hvm_domain(d) ? -EOPNOTSUPP : 0;

> And gate none.c on PV && !SHADOW_PAGING, which seems to be the only use.
> 
> It's a lot easier to see the safety on the HVM-only case, particularly with...
> 
> > is compiled out, and the toolstack has not specified the HAP flag at
> > domain creation you will end up with a domain that doesn't have the
> > paging operations initialized as paging_domain_init() would return 0
> > with neither HAP nor shadow having been setup.  That's likely to
> > trigger NULL pointer dereferences inside of Xen.
> >
> > Also, seeing the code in arch_sanitise_domain_config() we possibly
> > want to return an error at that point if toolstack attempts to create
> > an HVM guest without HAP enabled, and shadow is build time disabled.
> > I've sent a patch to that end.
> 
> ... this patch you meantion. Thanks.
> 
> I'm guessing it's still a hot potato in for non-shadow PV, which strongly 
> hints
> at our being better off leaving it in that case. On HVM-only configurations it
> seems rather silly.

I'm not sure I follow exactly what you mean.  Some rants below which
might or might not be along the lines of what you suggest.

PV needs shadow for migration.  HVM can use shadow or HAP, and our
default is HAP.  For HVM only builds it could be possible to not
recommend enabling shadow.  Even for deployments where only dom0 is
using PV mode, it does still make sense to possible recommend not
enabling shadow for attack surface reduction.

Thanks, Roger.



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.