mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
ALSA: firewire-lib: fix check for the size of isochronous packet payload
commit395f41e2cdupstream. The check for size of isochronous packet payload just cares of the size of IR context payload without the size of CIP header. Cc: <stable@vger.kernel.org> Fixes:f11453c7cc("ALSA: firewire-lib: use 16 bytes IR context header to separate CIP header") Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Link: https://lore.kernel.org/r/20210513125652.110249-4-o-takashi@sakamocchi.jp Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
f95aabb6ae
commit
b2297d1b95
@@ -617,18 +617,24 @@ static int parse_ir_ctx_header(struct amdtp_stream *s, unsigned int cycle,
|
||||
unsigned int *syt, unsigned int index)
|
||||
{
|
||||
const __be32 *cip_header;
|
||||
unsigned int cip_header_size;
|
||||
int err;
|
||||
|
||||
*payload_length = be32_to_cpu(ctx_header[0]) >> ISO_DATA_LENGTH_SHIFT;
|
||||
if (*payload_length > s->ctx_data.tx.ctx_header_size +
|
||||
s->ctx_data.tx.max_ctx_payload_length) {
|
||||
|
||||
if (!(s->flags & CIP_NO_HEADER))
|
||||
cip_header_size = 8;
|
||||
else
|
||||
cip_header_size = 0;
|
||||
|
||||
if (*payload_length > cip_header_size + s->ctx_data.tx.max_ctx_payload_length) {
|
||||
dev_err(&s->unit->device,
|
||||
"Detect jumbo payload: %04x %04x\n",
|
||||
*payload_length, s->ctx_data.tx.max_ctx_payload_length);
|
||||
*payload_length, cip_header_size + s->ctx_data.tx.max_ctx_payload_length);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
if (!(s->flags & CIP_NO_HEADER)) {
|
||||
if (cip_header_size > 0) {
|
||||
cip_header = ctx_header + 2;
|
||||
err = check_cip_header(s, cip_header, *payload_length,
|
||||
data_blocks, data_block_counter, syt);
|
||||
|
||||
Reference in New Issue
Block a user