|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen staging] x86/mm: mod_l<N>_entry() have no need to use __copy_from_user()
commit 8931fc9a1d7c7f4afd339b314fe7881fc06e2f5d
Author: Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Wed Jan 8 15:02:26 2020 +0100
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Wed Jan 8 15:02:26 2020 +0100
x86/mm: mod_l<N>_entry() have no need to use __copy_from_user()
mod_l1_entry()'s need to do so went away with commit 2d0557c5cb ("x86:
Fold page_info lock into type_info"), and the other three never had such
a need, at least going back as far as 3.2.0. Replace the uses by
l<N>e_read_atomic().
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
xen/arch/x86/mm.c | 14 ++++----------
1 file changed, 4 insertions(+), 10 deletions(-)
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index fd27295b34..a12316e9e7 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -2124,13 +2124,10 @@ static int mod_l1_entry(l1_pgentry_t *pl1e,
l1_pgentry_t nl1e,
struct vcpu *pt_vcpu, struct domain *pg_dom)
{
bool preserve_ad = (cmd == MMU_PT_UPDATE_PRESERVE_AD);
- l1_pgentry_t ol1e;
+ l1_pgentry_t ol1e = l1e_read_atomic(pl1e);
struct domain *pt_dom = pt_vcpu->domain;
int rc = 0;
- if ( unlikely(__copy_from_user(&ol1e, pl1e, sizeof(ol1e)) != 0) )
- return -EFAULT;
-
ASSERT(!paging_mode_refcounts(pt_dom));
if ( l1e_get_flags(nl1e) & _PAGE_PRESENT )
@@ -2248,8 +2245,7 @@ static int mod_l2_entry(l2_pgentry_t *pl2e,
return -EPERM;
}
- if ( unlikely(__copy_from_user(&ol2e, pl2e, sizeof(ol2e)) != 0) )
- return -EFAULT;
+ ol2e = l2e_read_atomic(pl2e);
if ( l2e_get_flags(nl2e) & _PAGE_PRESENT )
{
@@ -2311,8 +2307,7 @@ static int mod_l3_entry(l3_pgentry_t *pl3e,
if ( is_pv_32bit_domain(d) && (pgentry_ptr_to_slot(pl3e) >= 3) )
return -EINVAL;
- if ( unlikely(__copy_from_user(&ol3e, pl3e, sizeof(ol3e)) != 0) )
- return -EFAULT;
+ ol3e = l3e_read_atomic(pl3e);
if ( l3e_get_flags(nl3e) & _PAGE_PRESENT )
{
@@ -2378,8 +2373,7 @@ static int mod_l4_entry(l4_pgentry_t *pl4e,
return -EINVAL;
}
- if ( unlikely(__copy_from_user(&ol4e, pl4e, sizeof(ol4e)) != 0) )
- return -EFAULT;
+ ol4e = l4e_read_atomic(pl4e);
if ( l4e_get_flags(nl4e) & _PAGE_PRESENT )
{
--
generated by git-patchbot for /home/xen/git/xen.git#staging
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |