s390x: ipl: Consolidate iplb validity check into one function

It's nicer to just call one function than calling a function for each
possible iplb type.

Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Message-Id: <20200310090950.61172-1-frankja@linux.ibm.com>
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
This commit is contained in:
Janosch Frank 2020-03-10 05:09:50 -04:00 committed by Christian Borntraeger
parent 0a01e082a4
commit 94c21436e5
2 changed files with 10 additions and 10 deletions

View File

@ -173,16 +173,16 @@ static inline bool iplb_valid_len(IplParameterBlock *iplb)
return be32_to_cpu(iplb->len) <= sizeof(IplParameterBlock); return be32_to_cpu(iplb->len) <= sizeof(IplParameterBlock);
} }
static inline bool iplb_valid_ccw(IplParameterBlock *iplb) static inline bool iplb_valid(IplParameterBlock *iplb)
{ {
return be32_to_cpu(iplb->len) >= S390_IPLB_MIN_CCW_LEN && switch (iplb->pbt) {
iplb->pbt == S390_IPL_TYPE_CCW; case S390_IPL_TYPE_FCP:
} return be32_to_cpu(iplb->len) >= S390_IPLB_MIN_FCP_LEN;
case S390_IPL_TYPE_CCW:
static inline bool iplb_valid_fcp(IplParameterBlock *iplb) return be32_to_cpu(iplb->len) >= S390_IPLB_MIN_CCW_LEN;
{ default:
return be32_to_cpu(iplb->len) >= S390_IPLB_MIN_FCP_LEN && return false;
iplb->pbt == S390_IPL_TYPE_FCP; }
} }
#endif #endif

View File

@ -117,7 +117,7 @@ void handle_diag_308(CPUS390XState *env, uint64_t r1, uint64_t r3, uintptr_t ra)
cpu_physical_memory_read(addr, iplb, be32_to_cpu(iplb->len)); cpu_physical_memory_read(addr, iplb, be32_to_cpu(iplb->len));
if (!iplb_valid_ccw(iplb) && !iplb_valid_fcp(iplb)) { if (!iplb_valid(iplb)) {
env->regs[r1 + 1] = DIAG_308_RC_INVALID; env->regs[r1 + 1] = DIAG_308_RC_INVALID;
goto out; goto out;
} }