[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 03/12] s390x: sclp: refactor invalid command check
From: |
Christian Borntraeger |
Subject: |
[PULL 03/12] s390x: sclp: refactor invalid command check |
Date: |
Mon, 30 Sep 2019 15:19:46 +0200 |
From: Janosch Frank <address@hidden>
Invalid command checking has to be done before the boundary check,
refactoring it now allows to insert the boundary check at the correct
place later.
Signed-off-by: Janosch Frank <address@hidden>
Reviewed-by: Jason J. Herne <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: David Hildenbrand <address@hidden>
Signed-off-by: Christian Borntraeger <address@hidden>
---
hw/s390x/event-facility.c | 3 ---
hw/s390x/sclp.c | 17 ++++++++++++++++-
2 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/hw/s390x/event-facility.c b/hw/s390x/event-facility.c
index 797ecbb7a9c8..66205697ae75 100644
--- a/hw/s390x/event-facility.c
+++ b/hw/s390x/event-facility.c
@@ -377,9 +377,6 @@ static void command_handler(SCLPEventFacility *ef, SCCB
*sccb, uint64_t code)
case SCLP_CMD_WRITE_EVENT_MASK:
write_event_mask(ef, sccb);
break;
- default:
- sccb->h.response_code = cpu_to_be16(SCLP_RC_INVALID_SCLP_COMMAND);
- break;
}
}
diff --git a/hw/s390x/sclp.c b/hw/s390x/sclp.c
index fac7c3bb6c02..95ebfe7bd2f1 100644
--- a/hw/s390x/sclp.c
+++ b/hw/s390x/sclp.c
@@ -219,8 +219,23 @@ int sclp_service_call(CPUS390XState *env, uint64_t sccb,
uint32_t code)
goto out;
}
- sclp_c->execute(sclp, &work_sccb, code);
+ switch (code & SCLP_CMD_CODE_MASK) {
+ case SCLP_CMDW_READ_SCP_INFO:
+ case SCLP_CMDW_READ_SCP_INFO_FORCED:
+ case SCLP_CMDW_READ_CPU_INFO:
+ case SCLP_CMDW_CONFIGURE_IOA:
+ case SCLP_CMDW_DECONFIGURE_IOA:
+ case SCLP_CMD_READ_EVENT_DATA:
+ case SCLP_CMD_WRITE_EVENT_DATA:
+ case SCLP_CMD_WRITE_EVENT_MASK:
+ break;
+ default:
+ work_sccb.h.response_code = cpu_to_be16(SCLP_RC_INVALID_SCLP_COMMAND);
+ goto out_write;
+ }
+ sclp_c->execute(sclp, &work_sccb, code);
+out_write:
cpu_physical_memory_write(sccb, &work_sccb,
be16_to_cpu(work_sccb.h.length));
--
2.21.0
- [PULL 00/12] s390x qemu updates 20190930, Christian Borntraeger, 2019/09/30
- [PULL 01/12] MAINTAINERS: Update S390 PCI Maintainer, Christian Borntraeger, 2019/09/30
- [PULL 08/12] kvm: extract kvm_log_clear_one_slot, Christian Borntraeger, 2019/09/30
- [PULL 02/12] s390: PCI: fix IOMMU region init, Christian Borntraeger, 2019/09/30
- [PULL 03/12] s390x: sclp: refactor invalid command check,
Christian Borntraeger <=
- [PULL 07/12] configure: Remove s390 (31-bit mode) from the list of supported CPUs, Christian Borntraeger, 2019/09/30
- [PULL 09/12] kvm: clear dirty bitmaps from all overlapping memslots, Christian Borntraeger, 2019/09/30
- [PULL 05/12] s390x: sclp: fix error handling for oversize control blocks, Christian Borntraeger, 2019/09/30
- [PULL 12/12] s390/kvm: split kvm mem slots at 4TB, Christian Borntraeger, 2019/09/30
- [PULL 11/12] s390: do not call memory_region_allocate_system_memory() multiple times, Christian Borntraeger, 2019/09/30
- [PULL 06/12] s390x: sclp: Report insufficient SCCB length, Christian Borntraeger, 2019/09/30
- [PULL 04/12] s390x: sclp: boundary check, Christian Borntraeger, 2019/09/30
- [PULL 10/12] kvm: split too big memory section on several memslots, Christian Borntraeger, 2019/09/30