mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-26 01:40:53 +07:00
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
@ -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…
Reference in New Issue
Block a user