On 03/08/2023 11:20, Jan Beulich wrote:
> On 02.08.2023 16:38, Nicola Vetrini wrote:
>> --- a/xen/arch/x86/mm.c
>> +++ b/xen/arch/x86/mm.c
>> @@ -4879,6 +4879,7 @@ long arch_memory_op(unsigned long cmd,
>> XEN_GUEST_HANDLE_PARAM(void) arg)
>> return subarch_memory_op(cmd, arg);
>> }
>>
>> + ASSERT_UNREACHABLE();
>> return 0;
>> }
>
> I'd prefer to instead switch earlier "return 0" to "break".
Ok
>
>> --- a/xen/arch/x86/mm/p2m-pod.c
>> +++ b/xen/arch/x86/mm/p2m-pod.c
>> @@ -1045,6 +1045,7 @@ p2m_pod_zero_check(struct p2m_domain *p2m, const
>> gfn_t *gfns, unsigned int count
>> }
>>
>> return;
>> + ASSERT_UNREACHABLE();
>>
>> out_unmap:
>> /*
>
> In the description you say "before", but here you add something _after_
> "return". What's the deal?
>
> Jan
In this case the unreachable part is that after the label (looking at it
now, I should have
put the assert after the label to make it clear), because earlier all
jumps to
'out_unmap' are like this:
ASSERT_UNREACHABLE();
domain_crash(d);
goto out_unmap;
As I understood it, this is a defensive coding measure, preventing pages
to remain mapped if,
for some reason the above code actually executes. Am I correct?
Regards,
--
Nicola Vetrini, BSc
Software Engineer, BUGSENG srl (https://bugseng.com)