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 <rhoppe@de.ibm.com> Reviewed-by: Thomas Huth <thuth@linux.vnet.ibm.com> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> [split bigger patch into smaller independent chunks] Reviewed-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
3af6de321f
commit
a0c8699b23
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user