[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 1/2] x86/p2m: make p2m_get_page_from_gfn() handle grant and shared cases better
- To: Tamas K Lengyel <tamas@xxxxxxxxxxxxx>
- From: Jan Beulich <jbeulich@xxxxxxxx>
- Date: Thu, 24 Feb 2022 08:54:01 +0100
- 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=XlB7GjP4r9JbdA3p80n5siQ79+EBx92wRl/zmg2Hfyo=; b=F40pREI1IDhAV6rS99za5djklWR/dVvOo4UI1TtwOMLpZIu8FgsIptbGrRO+FZDV8sclSso+axaY4hBOlmHXEbNKgOe662dU3TSTnBTpP99BVHmOpWQ9DV05q486bv3+3SC+/YujkswAz8qqS4BwkNvfEz5KvAc0WVR4xVH8vfzbJWPOWTAiEjRY3/hsbBgTPvoj21a6jeTOff4YdkNn7AbOP7ZJe0KjGcrO4eAuJ0PpD+lUg3lw9fIYa04mWE9mafEE7Mw0Wvbm8JAyqO3iiyiJ/iN44GBuI5mr5Y1cKOCTNifjCax4WRuCbf5v3LpVy4zK0unJH7b9pNIDjI4KrQ==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BeMjWI1RJqkDfvNjUCBgwzldVAczXu07Y71EL6afFqnhVH6CDd6iTtEmQv8wYjygQtLB/ExG7Z2RmWQTJDvPB4XWr7GE1ypjH3C2tm9U75HzKrFb3oPuOWVIeMu5gt4rdD2Zx1OnfRQkSkMGRFG9eFJtb5mNvWn/aJzY+ZeUp5zADK2Es28LtWrg0N/0aElyjDajl06z/+XyfFPkrtzi7FZv1nW3l/9me7mVVrnXpxZCHE6weJwE2c3DmVay5srKLc7toh2wxWLrgJIf9JarUO7nzAxGNmjJAkxwQ8oZtMVh7ijuwRUK8ve5hSFpzFdhjZuVBQVmc9nGxb1/KidwEA==
- Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com;
- Cc: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxx>
- Delivery-date: Thu, 24 Feb 2022 07:54:14 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
On 23.02.2022 19:11, Tamas K Lengyel wrote:
>> @@ -607,6 +607,7 @@ struct page_info *p2m_get_page_from_gfn(
>>
>> /* Error path: not a suitable GFN at all */
>> if ( !p2m_is_ram(*t) && !p2m_is_paging(*t) && !p2m_is_pod(*t) &&
>> + (!p2m_is_shared(*t) || !(q & P2M_UNSHARE)) &&
>> !mem_sharing_is_fork(p2m->domain) )
>> return NULL;
>> }
>
> I don't follow what this is fixing. A shared entry would return true
> to p2m_is_ram() - p2m_ram_shared is listed under P2M_RAM_TYPES - so
> the rest of the if statement would never be checked. So if we get past
> that check we know we definitely don't have a shared entry, ie
> p2m_is_shared must be false ie the check for P2M_UNSHARE is dead code.
> Am I missing something?
No, I am. I mistakenly took p2m_is_any_ram() to include the shared case,
but p2m_is_ram() to not do so. Thanks for pointing out, and I'm actually
happy to be able to droop this hunk.
Jan
|