|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 2/5] xen/gnttab: Rework resource acquisition
On 22.09.2020 16:50, Andrew Cooper wrote:
> On 22/09/2020 14:34, Jan Beulich wrote:
>> On 22.09.2020 15:10, Andrew Cooper wrote:
>>> On 29/07/2020 21:02, Jan Beulich wrote:
>>>> On 28.07.2020 13:37, Andrew Cooper wrote:
>>>>> --- a/xen/common/grant_table.c
>>>>> +++ b/xen/common/grant_table.c
>>>>> @@ -4013,6 +4013,72 @@ static int gnttab_get_shared_frame_mfn(struct
>>>>> domain *d,
>>>>> return 0;
>>>>> }
>>>>> +int gnttab_acquire_resource(
>>>>> + struct domain *d, unsigned int id, unsigned long frame,
>>>>> + unsigned int nr_frames, xen_pfn_t mfn_list[])
>>>>> +{
>>>>> + struct grant_table *gt = d->grant_table;
>>>>> + unsigned int i = nr_frames, tot_frames;
>>>>> + void **vaddrs;
>>>>> + int rc = 0;
>>>>> +
>>>>> + /* Input sanity. */
>>>>> + if ( !nr_frames )
>>>>> + return -EINVAL;
>>>> I can't seem to be able to find an equivalent of this in the old logic,
>>>> and hence this looks like an unwarranted change in behavior to me. We
>>>> have quite a few hypercall ops where some count being zero is simply
>>>> a no-op, i.e. yielding success without doing anything.
>>> There is no possible circumstance when getting here requesting 0 is
>>> legitimate.
>>>
>>> Tolerating a zero input for a mapping request is a very expensive way of
>>> hiding caller bugs.
>> That's just one possible view.
>
> ... that is fully enforced in the ecosystem we work in.
>
> You can't get a 0 to here in the first place.
Would you mind pointing me at why this is? All I can see is
if ( xmar.nr_frames > ARRAY_SIZE(mfn_list) )
return -E2BIG;
as far as the caller's argument checking goes here. And
acquire_grant_table(), which is what you're replacing, also is dealing
with zero quite fine afaics. As is arch_acquire_resource().
> However, when it comes to the XLAT and the chunking fixes, getting 0
> here is a hard error, and I'm not interested in breaking the that logic
> for a non-existent corner case.
I don't share this view. It's also interesting that you had to address
similar questions by Paul, isn't it?
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |