diff mbox series

[v1,for-2.12,1/2] s390x/mmu: don't overwrite pending exception in mmu translate

Message ID 20180409113019.14568-2-david@redhat.com
State New
Headers show
Series s390x/kvm: last minute fixes | expand

Commit Message

David Hildenbrand April 9, 2018, 11:30 a.m. UTC
If we already triggered another exception, don't overwrite it with a
protection exception.

Signed-off-by: David Hildenbrand <david@redhat.com>
---
 target/s390x/mmu_helper.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Thomas Huth April 9, 2018, 11:44 a.m. UTC | #1
On 09.04.2018 13:30, David Hildenbrand wrote:
> If we already triggered another exception, don't overwrite it with a
> protection exception.
> 
> Signed-off-by: David Hildenbrand <david@redhat.com>
> ---
>  target/s390x/mmu_helper.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/target/s390x/mmu_helper.c b/target/s390x/mmu_helper.c
> index 1deeb6e6e4..a25deef5dd 100644
> --- a/target/s390x/mmu_helper.c
> +++ b/target/s390x/mmu_helper.c
> @@ -325,7 +325,7 @@ static int mmu_translate_asce(CPUS390XState *env, target_ulong vaddr,
>  
>      r = mmu_translate_region(env, vaddr, asc, asce, level, raddr, flags, rw,
>                               exc);
> -    if (rw == MMU_DATA_STORE && !(*flags & PAGE_WRITE)) {
> +    if (!r && rw == MMU_DATA_STORE && !(*flags & PAGE_WRITE)) {
>          trigger_prot_fault(env, vaddr, asc, rw, exc);
>          return -1;
>      }

Looks right.

Reviewed-by: Thomas Huth <thuth@redhat.com>
Christian Borntraeger April 9, 2018, 11:50 a.m. UTC | #2
On 04/09/2018 01:30 PM, David Hildenbrand wrote:
> If we already triggered another exception, don't overwrite it with a
> protection exception.
> 
> Signed-off-by: David Hildenbrand <david@redhat.com>


Can you add your description from the cover letter regarding
"only applies to old KVM instances without the virtual memory access
IOCTL in KVM."

with that
Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
> ---
>  target/s390x/mmu_helper.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/target/s390x/mmu_helper.c b/target/s390x/mmu_helper.c
> index 1deeb6e6e4..a25deef5dd 100644
> --- a/target/s390x/mmu_helper.c
> +++ b/target/s390x/mmu_helper.c
> @@ -325,7 +325,7 @@ static int mmu_translate_asce(CPUS390XState *env, target_ulong vaddr,
>  
>      r = mmu_translate_region(env, vaddr, asc, asce, level, raddr, flags, rw,
>                               exc);
> -    if (rw == MMU_DATA_STORE && !(*flags & PAGE_WRITE)) {
> +    if (!r && rw == MMU_DATA_STORE && !(*flags & PAGE_WRITE)) {
>          trigger_prot_fault(env, vaddr, asc, rw, exc);
>          return -1;
>      }
>
Cornelia Huck April 9, 2018, 11:55 a.m. UTC | #3
On Mon, 9 Apr 2018 13:50:03 +0200
Christian Borntraeger <borntraeger@de.ibm.com> wrote:

> On 04/09/2018 01:30 PM, David Hildenbrand wrote:
> > If we already triggered another exception, don't overwrite it with a
> > protection exception.
> > 
> > Signed-off-by: David Hildenbrand <david@redhat.com>  
> 
> 
> Can you add your description from the cover letter regarding
> "only applies to old KVM instances without the virtual memory access
> IOCTL in KVM."

Will add that.

> 
> with that
> Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
> > ---
> >  target/s390x/mmu_helper.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/target/s390x/mmu_helper.c b/target/s390x/mmu_helper.c
> > index 1deeb6e6e4..a25deef5dd 100644
> > --- a/target/s390x/mmu_helper.c
> > +++ b/target/s390x/mmu_helper.c
> > @@ -325,7 +325,7 @@ static int mmu_translate_asce(CPUS390XState *env, target_ulong vaddr,
> >  
> >      r = mmu_translate_region(env, vaddr, asc, asce, level, raddr, flags, rw,
> >                               exc);
> > -    if (rw == MMU_DATA_STORE && !(*flags & PAGE_WRITE)) {
> > +    if (!r && rw == MMU_DATA_STORE && !(*flags & PAGE_WRITE)) {
> >          trigger_prot_fault(env, vaddr, asc, rw, exc);
> >          return -1;
> >      }
> >   
>
diff mbox series

Patch

diff --git a/target/s390x/mmu_helper.c b/target/s390x/mmu_helper.c
index 1deeb6e6e4..a25deef5dd 100644
--- a/target/s390x/mmu_helper.c
+++ b/target/s390x/mmu_helper.c
@@ -325,7 +325,7 @@  static int mmu_translate_asce(CPUS390XState *env, target_ulong vaddr,
 
     r = mmu_translate_region(env, vaddr, asc, asce, level, raddr, flags, rw,
                              exc);
-    if (rw == MMU_DATA_STORE && !(*flags & PAGE_WRITE)) {
+    if (!r && rw == MMU_DATA_STORE && !(*flags & PAGE_WRITE)) {
         trigger_prot_fault(env, vaddr, asc, rw, exc);
         return -1;
     }