firewire: ohci: prevent starting of iso contexts with empty queue
If a misguided program tried to start an isochronous context before it has queued any packets, the call would appear to succeed, but the context would not actually go into the running state, and the OHCI controller would then raise an unrecoverableError interrupt because the first Z value is zero and thus invalid. The driver logs such errors, but there is no mechanism to report this back to the program. Add an explicit check so that this error can be returned synchronously. Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
This commit is contained in:
parent
e81cbebdfc
commit
44b74d909d
|
@ -2706,6 +2706,10 @@ static int ohci_start_iso(struct fw_iso_context *base,
|
|||
u32 control = IR_CONTEXT_ISOCH_HEADER, match;
|
||||
int index;
|
||||
|
||||
/* the controller cannot start without any queued packets */
|
||||
if (ctx->context.last->branch_address == 0)
|
||||
return -ENODATA;
|
||||
|
||||
switch (ctx->base.type) {
|
||||
case FW_ISO_CONTEXT_TRANSMIT:
|
||||
index = ctx - ohci->it_context_list;
|
||||
|
|
Loading…
Reference in New Issue