[PATCH] disas/riscv: Fix csrrs decode

Richard Henderson posted 1 patch 1 week, 5 days ago
Maintainers: Palmer Dabbelt <palmer@dabbelt.com>, Alistair Francis <Alistair.Francis@wdc.com>, Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>
disas/riscv.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
[PATCH] disas/riscv: Fix csrrs decode
Posted by Richard Henderson 1 week, 5 days ago
Resolves: Coverity CID 1685513
Fixes: 4fec981f18fd ("disas/riscv: Split rvi_opcode_data")
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 disas/riscv.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/disas/riscv.c b/disas/riscv.c
index e85dbac0351..ef8b7ff20f9 100644
--- a/disas/riscv.c
+++ b/disas/riscv.c
@@ -2560,7 +2560,6 @@ static const rv_opcode_data *decode_inst_opcode(rv_decode *dec, rv_isa isa)
                 }
                 break;
             case 2:
-                return &op_csrrs;
                 if (operand_rs1(inst) == 0) {
                     switch (operand_csr12(inst)) {
                     case 0x001: return &op_frflags;
@@ -2574,7 +2573,7 @@ static const rv_opcode_data *decode_inst_opcode(rv_decode *dec, rv_isa isa)
                     case 0xc82: return &op_rdinstreth;
                     }
                 }
-                break;
+                return &op_csrrs;
             case 3: return &op_csrrc;
             case 4:
                 if (dec->cfg && dec->cfg->ext_zimop) {
-- 
2.53.0
Re: [PATCH] disas/riscv: Fix csrrs decode
Posted by Alistair Francis 4 days, 19 hours ago
On Sun, 2026-09-13 at 15:53 -1000, Richard Henderson wrote:
> Resolves: Coverity CID 1685513
> Fixes: 4fec981f18fd ("disas/riscv: Split rvi_opcode_data")
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

Thanks!

Applied to riscv-to-apply.next

Alistair

> ---
>  disas/riscv.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/disas/riscv.c b/disas/riscv.c
> index e85dbac0351..ef8b7ff20f9 100644
> --- a/disas/riscv.c
> +++ b/disas/riscv.c
> @@ -2560,7 +2560,6 @@ static const rv_opcode_data
> *decode_inst_opcode(rv_decode *dec, rv_isa isa)
>                  }
>                  break;
>              case 2:
> -                return &op_csrrs;
>                  if (operand_rs1(inst) == 0) {
>                      switch (operand_csr12(inst)) {
>                      case 0x001: return &op_frflags;
> @@ -2574,7 +2573,7 @@ static const rv_opcode_data
> *decode_inst_opcode(rv_decode *dec, rv_isa isa)
>                      case 0xc82: return &op_rdinstreth;
>                      }
>                  }
> -                break;
> +                return &op_csrrs;
>              case 3: return &op_csrrc;
>              case 4:
>                  if (dec->cfg && dec->cfg->ext_zimop) {
Re: [PATCH] disas/riscv: Fix csrrs decode
Posted by Alistair Francis 4 days, 19 hours ago
On Sun, 2026-09-13 at 15:53 -1000, Richard Henderson wrote:
> Resolves: Coverity CID 1685513
> Fixes: 4fec981f18fd ("disas/riscv: Split rvi_opcode_data")
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

Reviewed-by: Alistair Francis <alistair.francis@wdc.com>

Alistair

> ---
>  disas/riscv.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/disas/riscv.c b/disas/riscv.c
> index e85dbac0351..ef8b7ff20f9 100644
> --- a/disas/riscv.c
> +++ b/disas/riscv.c
> @@ -2560,7 +2560,6 @@ static const rv_opcode_data
> *decode_inst_opcode(rv_decode *dec, rv_isa isa)
>                  }
>                  break;
>              case 2:
> -                return &op_csrrs;
>                  if (operand_rs1(inst) == 0) {
>                      switch (operand_csr12(inst)) {
>                      case 0x001: return &op_frflags;
> @@ -2574,7 +2573,7 @@ static const rv_opcode_data
> *decode_inst_opcode(rv_decode *dec, rv_isa isa)
>                      case 0xc82: return &op_rdinstreth;
>                      }
>                  }
> -                break;
> +                return &op_csrrs;
>              case 3: return &op_csrrc;
>              case 4:
>                  if (dec->cfg && dec->cfg->ext_zimop) {