summaryrefslogtreecommitdiffstats
path: root/ipc/util.c
diff options
context:
space:
mode:
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>2015-05-22 23:00:50 +0900
committerTakashi Iwai <tiwai@suse.de>2015-05-23 09:13:18 +0200
commita2064710ba2b38a4f07c1b273c389b70b14b2d18 (patch)
tree4c4e0f577c796bdf2976f0bcf5bbc44ba781cbd5 /ipc/util.c
parent181a152a09ccbf977ea69405cde4d87b5585de6c (diff)
downloadop-kernel-dev-a2064710ba2b38a4f07c1b273c389b70b14b2d18.zip
op-kernel-dev-a2064710ba2b38a4f07c1b273c389b70b14b2d18.tar.gz
ALSA: firewire-lib: add buffer-over-run protection at receiving more data blocks than expected
In IEC 61883-6, the number of data blocks in a packet is limited up to the value of SYT_INTERVAL. Current implementation is compliant to the limitation, while it can cause buffer-over-run when the value of dbs field in received packet is illegally large. This commit adds a validator to detect such illegal packets to prevent the buffer-over-run. Actually, the buffer is aligned to the size of memory page, thus this issue hardly causes system errors due to the room to page alignment, as long as a few packets includes such jumbo payload; i.e. a packet to several received packets. Here, Behringer F-Control Audio 202 (based on OXFW 960) has a quirk to postpone transferring isochronous packet till finish handling any asynchronous packets. In this case, this model is lazy, transfers no packets according to several cycle-start packets. After finishing, this model pushes required data in next isochronous packet. As a result, the packet include more data blocks than IEC 61883-6 defines. To continue to support this model, this commit adds a new flag to extend the length of calculated payload. This flag allows the size of payload 5 times as large as IEC 61883-6 defines. As a result, packets from this model passed the validator successfully. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'ipc/util.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud