• Takashi Sakamoto's avatar
    ALSA: firewire-lib: add buffer-over-run protection at receiving more data blocks than expected · a2064710
    Takashi Sakamoto authored
    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: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    a2064710
amdtp.h 9.09 KB