|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] x86: guard against port I/O overlapping the RTC/CMOS range
On 20.07.2020 12:52, Roger Pau Monné wrote:
> On Fri, Jul 17, 2020 at 03:10:43PM +0200, Jan Beulich wrote:
>> Since we intercept RTC/CMOS port accesses, let's do so consistently in
>> all cases, i.e. also for e.g. a dword access to [006E,0071]. To avoid
>> the risk of unintended impact on Dom0 code actually doing so (despite
>> the belief that none ought to exist), also extend
>> guest_io_{read,write}() to decompose accesses where some ports are
>> allowed to be directly accessed and some aren't.
>
> Wouldn't the same apply to displaced accesses to port 0xcf8?
No, CF8 is special - partial accesses have no meaning as to the
index selection for subsequent CFC accesses. Or else CF9
couldn't be a standalone port with entirely different
functionality..
>> @@ -373,25 +384,31 @@ static int read_io(unsigned int port, un
>> return X86EMUL_OKAY;
>> }
>>
>> +static void _guest_io_write(unsigned int port, unsigned int bytes,
>> + uint32_t data)
>
> There's nothing guest specific about this function I think? If so you
> could drop the _guest_ prefix and just name it io_write?
Hmm, when choosing the name I decided that (a) it's a helper of
the other function and (b) it's still guest driven data that we
output.
>> +{
>> + switch ( bytes )
>> + {
>> + case 1:
>> + outb((uint8_t)data, port);
>> + if ( amd_acpi_c1e_quirk )
>> + amd_check_disable_c1e(port, (uint8_t)data);
>> + break;
>> + case 2:
>> + outw((uint16_t)data, port);
>> + break;
>> + case 4:
>> + outl(data, port);
>> + break;
>> + }
>
> Newlines after break statements would be nice, and maybe add a
> default: ASSERT_UNREACHABLE() case to be on the safe side?
Well, yes, I guess I should. But then if I edit this moved code,
I guess I'll also get rid of the stray casts.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |