From a0c8699b23ea065f8435d3bd04bd23f1783aa454 Mon Sep 17 00:00:00 2001 From: Ralf Hoppe Date: Mon, 19 Aug 2013 09:41:24 +0200 Subject: s390/eventfacility: fix multiple Read Event Data sources Make the handler for SCLP Read Event Data deal with notifications for multiple sources correctly. Signed-off-by: Ralf Hoppe Reviewed-by: Thomas Huth Signed-off-by: Christian Borntraeger [split bigger patch into smaller independent chunks] Reviewed-by: Alexander Graf --- hw/s390x/event-facility.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'hw/s390x') diff --git a/hw/s390x/event-facility.c b/hw/s390x/event-facility.c index d45968fa42..d2fd22776b 100644 --- a/hw/s390x/event-facility.c +++ b/hw/s390x/event-facility.c @@ -183,7 +183,7 @@ static uint16_t handle_sccb_read_events(SCLPEventFacility *ef, SCCB *sccb, { uint16_t rc; int slen; - unsigned elen = 0; + unsigned elen; BusChild *kid; SCLPEvent *event; SCLPEventClass *ec; @@ -203,11 +203,11 @@ static uint16_t handle_sccb_read_events(SCLPEventFacility *ef, SCCB *sccb, if (mask & ec->get_send_mask()) { if (ec->read_event_data(event, event_buf, &slen)) { + elen = be16_to_cpu(event_buf->length); + event_buf = (EventBufferHeader *) ((char *)event_buf + elen); rc = SCLP_RC_NORMAL_COMPLETION; } } - elen = be16_to_cpu(event_buf->length); - event_buf = (void *) event_buf + elen; } if (sccb->h.control_mask[2] & SCLP_VARIABLE_LENGTH_RESPONSE) { -- cgit v1.2.1