firewire: core: fix retries calculation in iso manage_channel()
If there is a permanent error condition when communicating with the IRM, after the sixth error, the retry variable will be decremented to -1. If, in this case, the bits in channels_mask are not yet exhausted, the next channel is retried 2^32 times. To fix this, check that retry is never decremented beyond zero. Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
This commit is contained in:
parent
a2612cb16d
commit
3a1f0a0e3d
1 changed files with 3 additions and 1 deletions
|
@ -250,8 +250,10 @@ static int manage_channel(struct fw_card *card, int irm_id, int generation,
|
||||||
|
|
||||||
/* 1394-1995 IRM, fall through to retry. */
|
/* 1394-1995 IRM, fall through to retry. */
|
||||||
default:
|
default:
|
||||||
if (retry--)
|
if (retry) {
|
||||||
|
retry--;
|
||||||
i--;
|
i--;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue