From: Boris Ostrovsky <boris.ostrovsky@oracle.com>
To: Bandan Das <bsd@redhat.com>
Cc: Xiao Guangrong <guangrong.xiao@linux.intel.com>,
pbonzini@redhat.com, gleb@kernel.org, mtosatti@redhat.com,
kvm@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/2] KVM: MMU: fix SMAP virtualization
Date: Fri, 22 May 2015 20:42:31 -0400 [thread overview]
Message-ID: <555FCCF7.3070207@oracle.com> (raw)
In-Reply-To: <jpgzj4w9nj7.fsf@redhat.com>
On 05/22/2015 07:54 PM, Bandan Das wrote:
> Boris Ostrovsky <boris.ostrovsky@oracle.com> writes:
>
>> On 05/11/2015 10:55 AM, Xiao Guangrong wrote:
>>> KVM may turn a user page to a kernel page when kernel writes a readonly
>>> user page if CR0.WP = 1. This shadow page entry will be reused after
>>> SMAP is enabled so that kernel is allowed to access this user page
>>>
>>> Fix it by setting SMAP && !CR0.WP into shadow page's role and reset mmu
>>> once CR4.SMAP is updated
>>>
>>> Signed-off-by: Xiao Guangrong <guangrong.xiao@linux.intel.com>
>>> ---
>>
>>
>>>
>>> @@ -4208,12 +4211,18 @@ void kvm_mmu_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa,
>>> const u8 *new, int bytes)
>>> {
>>> gfn_t gfn = gpa >> PAGE_SHIFT;
>>> - union kvm_mmu_page_role mask = { .word = 0 };
>>> struct kvm_mmu_page *sp;
>>> LIST_HEAD(invalid_list);
>>> u64 entry, gentry, *spte;
>>> int npte;
>>> bool remote_flush, local_flush, zap_page;
>>> + union kvm_mmu_page_role mask = (union kvm_mmu_page_role) {
>>> + .cr0_wp = 1,
>>> + .cr4_pae = 1,
>>> + .nxe = 1,
>>> + .smep_andnot_wp = 1,
>>> + .smap_andnot_wp = 1,
>>> + };
>>>
>>>
>>
>>
>> This breaks older compilers that can't initialize anon structures.
>
> How old ? Even gcc 3.1 says you can use unnamed struct/union fields and
> 3.2 is the minimum version required to compile the kernel as mentioned
> in the README.
>
> We could simply just name the structure, but I doubt this is the
> only place in the kernel code where it's being used this way :)
You can use them but you can't use initializers. Unfortunately my build
system (F13) conveniently went down but this is an example from an old
email:
FC-64 <build@build-mk2:~/xtt-x86_64/bootstrap> cat anon.c
struct bar {
struct {
int i;
};
};
main()
{
struct bar a = {.i = 0};
}
FC-64 <build@build-mk2:~/xtt-x86_64/bootstrap> gcc --version|head -1
gcc (GCC) 4.4.4 20100503 (Red Hat 4.4.4-2)
FC-64 <build@build-mk2:~/xtt-x86_64/bootstrap> gcc anon.c
anon.c: In function ‘main’:
anon.c:9: error: unknown field ‘i’ specified in initializer
FC-64 <build@build-mk2:~/xtt-x86_64/bootstrap>
but
build@build-mk2 bootstrap]$ gcc --version|head -1
gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2)
[build@build-mk2 bootstrap]$ gcc anon.c
[build@build-mk2 bootstrap]$
-boris
next prev parent reply other threads:[~2015-05-23 0:42 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-11 14:55 [PATCH 1/2] KVM: MMU: fix SMAP virtualization Xiao Guangrong
2015-05-11 14:55 ` [PATCH 2/2] KVM: MMU: document smap_andnot_wp Xiao Guangrong
2015-05-11 15:16 ` Paolo Bonzini
2015-05-22 20:43 ` [PATCH 1/2] KVM: MMU: fix SMAP virtualization Boris Ostrovsky
2015-05-22 23:54 ` Bandan Das
2015-05-23 0:42 ` Boris Ostrovsky [this message]
2015-05-26 14:45 ` Edward Cree
2015-05-26 14:48 ` Paolo Bonzini
2015-05-27 2:53 ` Xiao Guangrong
2015-06-09 5:14 ` Vinson Lee
2015-06-12 12:11 ` Luis Henriques
2015-06-10 18:02 ` Davidlohr Bueso
2015-06-10 18:08 ` Andrew Morton
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=555FCCF7.3070207@oracle.com \
--to=boris.ostrovsky@oracle.com \
--cc=bsd@redhat.com \
--cc=gleb@kernel.org \
--cc=guangrong.xiao@linux.intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mtosatti@redhat.com \
--cc=pbonzini@redhat.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).