qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v3] target/riscv: Smepmp: Return error when access permission


From: Daniel Henrique Barboza
Subject: Re: [PATCH v3] target/riscv: Smepmp: Return error when access permission not allowed in PMP
Date: Tue, 6 Jun 2023 09:53:15 -0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0



On 6/5/23 13:45, Himanshu Chauhan wrote:
On an address match, skip checking for default permissions and return error
based on access defined in PMP configuration.

v3 Changes:
o Removed explicit return of boolean value from comparision
   of priv/allowed_priv

v2 Changes:
o Removed goto to return in place when address matches
o Call pmp_hart_has_privs_default at the end of the loop

Fixes: 90b1fafce06 ("target/riscv: Smepmp: Skip applying default rules when address 
matches")
Signed-off-by: Himanshu Chauhan <hchauhan@ventanamicro.com>
---

Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>

  target/riscv/pmp.c | 10 ++--------
  1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/target/riscv/pmp.c b/target/riscv/pmp.c
index 418738afd8..9d8db493e6 100644
--- a/target/riscv/pmp.c
+++ b/target/riscv/pmp.c
@@ -291,7 +291,6 @@ bool pmp_hart_has_privs(CPURISCVState *env, target_ulong 
addr,
                          pmp_priv_t *allowed_privs, target_ulong mode)
  {
      int i = 0;
-    bool ret = false;
      int pmp_size = 0;
      target_ulong s = 0;
      target_ulong e = 0;
@@ -435,17 +434,12 @@ bool pmp_hart_has_privs(CPURISCVState *env, target_ulong 
addr,
               * defined with PMP must be used. We shouldn't fallback on
               * finding default privileges.
               */
-            ret = true;
-            break;
+            return (privs & *allowed_privs) == privs;
          }
      }
/* No rule matched */
-    if (!ret) {
-        ret = pmp_hart_has_privs_default(env, privs, allowed_privs, mode);
-    }
-
-    return ret;
+    return pmp_hart_has_privs_default(env, privs, allowed_privs, mode);
  }
/*



reply via email to

[Prev in Thread] Current Thread [Next in Thread]