From: Ross Lagerwall <ross.lagerwall@citrix.com>
To: Jan Beulich <JBeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
Keir Fraser <keir@xen.org>,
xen-devel@lists.xen.org
Subject: Re: [PATCH] x86: Don't crash when mapping a page using EFI runtime page tables
Date: Wed, 27 May 2015 13:03:14 +0100 [thread overview]
Message-ID: <5565B282.4030705@citrix.com> (raw)
In-Reply-To: <5565CDC9020000780007E2BF@mail.emea.novell.com>
On 05/27/2015 12:59 PM, Jan Beulich wrote:
>>>> On 27.05.15 at 12:23, <ross.lagerwall@citrix.com> wrote:
>> On 05/18/2015 03:58 PM, Jan Beulich wrote:
>>>>>> On 15.05.15 at 18:08, <ross.lagerwall@citrix.com> wrote:
>>>> --- a/xen/arch/x86/domain_page.c
>>>> +++ b/xen/arch/x86/domain_page.c
>>>> @@ -32,20 +32,25 @@ static inline struct vcpu *mapcache_current_vcpu(void)
>>>> return NULL;
>>>>
>>>> /*
>>>> + * When using efi runtime page tables, we have the equivalent of the
>> idle
>>>> + * domain's page tables but current may point at another domain's VCPU.
>>>> + * Return NULL as though current is not properly set up yet.
>>>> + */
>>>> + if ( efi_enabled && read_cr3() == efi_rs_page_table() )
>>>> + return NULL;
>>>
>>> I'm okay with the patch in principle; what worries me is the CR3 read
>>> that is now going to be necessary even in non-debug builds. With
>>> this code being the only user of efi_rs_page_table(), I wonder if it
>>> wouldn't make sense to alter that function to return non-zero only
>>> when spin_is_locked(&efi_rs_lock), and then alter the code above
>>> such that the CR3 read would happen only when we got a non-zero
>>> value back.
>>
>> mapcache_current_vcpu() appears to be called from IRQ-enabled and
>> IRQ-disabled callers which prevents us from using the spinlock.
>
> I didn't suggest to use any spin lock; I merely suggested checking
> whether that particular one is being held by someone (to avoid the
> CR3 read if that's not the case).
spin_is_locked() calls check_lock() which causes a BUG_ON() even though
you're not actually using the lock.
--
Ross Lagerwall
next prev parent reply other threads:[~2015-05-27 12:03 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-15 16:08 [PATCH] x86: Don't crash when mapping a page using EFI runtime page tables Ross Lagerwall
2015-05-15 17:41 ` Andrew Cooper
2015-05-18 9:02 ` Jan Beulich
2015-05-18 10:55 ` Andrew Cooper
2015-05-18 9:12 ` Jan Beulich
2015-05-18 14:58 ` Jan Beulich
2015-05-27 10:23 ` Ross Lagerwall
2015-05-27 11:59 ` Jan Beulich
2015-05-27 12:03 ` Ross Lagerwall [this message]
2015-05-27 12:17 ` Jan Beulich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5565B282.4030705@citrix.com \
--to=ross.lagerwall@citrix.com \
--cc=JBeulich@suse.com \
--cc=andrew.cooper3@citrix.com \
--cc=keir@xen.org \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.