From: Daniel Scheller Date: Mon, 9 Apr 2018 16:47:44 +0000 (-0400) Subject: media: ddbridge: fix output buffer check X-Git-Tag: android-x86-8.1-r1~932^2~285 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=28473a197aeae3e12fc85ba3ddec1181a8fee882;p=android-x86%2Fkernel.git media: ddbridge: fix output buffer check A 188 byte gap has to be left between the writer and the consumer. This requires 2*188 bytes available to be able to write to the output buffers. So, change ddb_output_free() to report free bytes according to this rule. Picked up from the upstream dddvb-0.9.33 release. Signed-off-by: Daniel Scheller Signed-off-by: Mauro Carvalho Chehab --- diff --git a/drivers/media/pci/ddbridge/ddbridge-core.c b/drivers/media/pci/ddbridge/ddbridge-core.c index 7e57f5864df3..216a9a3fecef 100644 --- a/drivers/media/pci/ddbridge/ddbridge-core.c +++ b/drivers/media/pci/ddbridge/ddbridge-core.c @@ -572,12 +572,12 @@ static u32 ddb_output_free(struct ddb_output *output) if (output->dma->cbuf != idx) { if ((((output->dma->cbuf + 1) % output->dma->num) == idx) && - (output->dma->size - output->dma->coff <= 188)) + (output->dma->size - output->dma->coff <= (2 * 188))) return 0; return 188; } diff = off - output->dma->coff; - if (diff <= 0 || diff > 188) + if (diff <= 0 || diff > (2 * 188)) return 188; return 0; }