On 12/8/25 16:32, Zhuoying Cai wrote:
> Create a function to validate the address parameter of DIAGNOSE.
> 
> Refactor the function for reuse in the next patch, which allows address
> validation in read or write operation of DIAGNOSE.
> 
> Signed-off-by: Zhuoying Cai <[email protected]>
> Reviewed-by: Farhan Ali <[email protected]>
> ---
>  target/s390x/diag.c | 10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/target/s390x/diag.c b/target/s390x/diag.c
> index a35d808fd7..a347be7633 100644
> --- a/target/s390x/diag.c
> +++ b/target/s390x/diag.c
> @@ -26,6 +26,12 @@
>  #include "qemu/error-report.h"
>  
>  
> +static inline bool diag_parm_addr_valid(uint64_t addr, size_t size, bool 
> write)
> +{
> +    return address_space_access_valid(&address_space_memory, addr,
> +                                      size, write, MEMTXATTRS_UNSPECIFIED);
> +}
> +
>  int handle_diag_288(CPUS390XState *env, uint64_t r1, uint64_t r3)
>  {
>      uint64_t func = env->regs[r1];
> @@ -65,9 +71,7 @@ static int diag308_parm_check(CPUS390XState *env, uint64_t 
> r1, uint64_t addr,
>          s390_program_interrupt(env, PGM_SPECIFICATION, ra);
>          return -1;
>      }
> -    if (!address_space_access_valid(&address_space_memory, addr,
> -                                    sizeof(IplParameterBlock), write,
> -                                    MEMTXATTRS_UNSPECIFIED)) {
> +    if (!diag_parm_addr_valid(addr, sizeof(IplParameterBlock), write)) {
>          s390_program_interrupt(env, PGM_ADDRESSING, ra);
>          return -1;
>      }

Reviewed-by: Collin Walling <[email protected]>

-- 
Regards,
  Collin

Reply via email to