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

Re: [PATCH 1/3] x86: Reject bad %dr6/%dr7 values when loading guest state


  • To: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • From: Jan Beulich <jbeulich@xxxxxxxx>
  • Date: Tue, 29 Aug 2023 16:08:35 +0200
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=RBjWMeAXAUbp7nsm3VsY1tiOf3/AotUMYZW5z3l6Sss=; b=YQjICOIlzEkz5tSzIBtXCzEh2Q4z/3zIrm75kxnNYBt5Wrqpg+3cv9rhgDU3Mo50tBB2Rxv2ZbS2LJ1DO94WIbjKF4CwJnuwJWOUlTh8S3oLtuac1wOzdXvPUqp1ImX4ia1aD1Z1uGQEOUCX7fO3XzX5RKZ2f/V4FIGGdTjaz3yWMVrKQPkagB8setTi9iJUchwNJg2j150vqG5FmCMkf4ArQ1gfukXNMxJDloNTz/DOUTbRF15Nsoc4g2JEXyW9zbc+X2itY0wfq7djZRHvAHF05wi22arqRnobrmCoUXl87LYG5eT7BT/IakRQGM1oK5koevgie2sFieeB8FyO6w==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SijxzM99UPe6gXd76b0TG/2Hl6W9EApSTV0KgXI8smAKC65rTP5mvs3ZwfeSdwFLN8BCijN1hlJ7OoEsnuXIuX0+djw3kJneUdkqeGzghjclitLIfcjfV+dj7gNFkhVstsfHbUwfZktkyIJbJbSGuj4TdYi0VcbPeNuiYS9UBsSp6mlg9puYfbXNHIYQvI5YFcZyaZwF87eylU3flUOa4m3swYgiL8MzMRBeFI2y0vvS7A3dx1ULWMVhNptgQFDiqtY6sv1iDqVt5DTfX17U7MO3mCEU+xuH02SKoKU/GR2zVHEV/dhW6k7d2LH0w1Z2zQLvzx5xp1aocJYxxb5f2w==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com;
  • Cc: Roger Pau Monné <roger.pau@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, Jinoh Kang <jinoh.kang.kr@xxxxxxxxx>, Xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Tue, 29 Aug 2023 14:08:48 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 29.08.2023 15:43, Andrew Cooper wrote:
> --- a/xen/arch/x86/domain.c
> +++ b/xen/arch/x86/domain.c
> @@ -1074,8 +1074,27 @@ int arch_set_info_guest(
>  #endif
>      flags = c(flags);
>  
> +    if ( !compat )
> +    {
> +        if ( c(debugreg[6]) != (uint32_t)c(debugreg[6]) ||
> +             c(debugreg[7]) != (uint32_t)c(debugreg[7]) )
> +            return -EINVAL;
> +    }
> +
>      if ( is_pv_domain(d) )
>      {
> +        /*
> +         * Prior to Xen 4.11, dr5 was used to hold the emulated-only
> +         * subset of dr7, and dr4 was unused.
> +         *
> +         * In Xen 4.11 and later, dr4/5 are written as zero, ignored for
> +         * backwards compatibility, and dr7 emulation is handled
> +         * internally.
> +         */
> +        for ( i = 0; i < ARRAY_SIZE(v->arch.dr); i++ )
> +            if ( !access_ok(c(debugreg[i]), sizeof(long)) )

Don't you mean __addr_ok() here, i.e. not including the
is_compat_arg_xlat_range() check? (Else I would have asked why
sizeof(long), but that question resolves itself with using the other
macro.)

Jan



 


Rackspace

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