]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commit - drivers/media/dvb-core/dvb_ca_en50221.c
[media] media/dvb-core: Race condition when writing to CAM
authorJasmin J <jasmin@anw.at>
Sat, 18 Mar 2017 02:04:20 +0000 (23:04 -0300)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Mon, 17 Apr 2017 20:20:23 +0000 (17:20 -0300)
commite7080d4471d805d921a9ea21b32f911a91e248cb
treee9145346a8d2f4e03c37962cfa48b4ad91129743
parentb73bb2ab97eb7840d0f4fc285936024100f59a6d
[media] media/dvb-core: Race condition when writing to CAM

It started with a sporadic message in syslog: "CAM tried to send a
buffer larger than the ecount size" This message is not the fault
itself, but a consecutive fault, after a read error from the CAM. This
happens only on several CAMs, several hardware, and of course sporadic.

It is a consecutive fault, if the last read from the CAM did fail. I
guess this will not happen on all CAMs, but at least it did on mine.
There was a write error to the CAM and during the re-initialization
procedure, the CAM finished the last read, although it got a RS.

The write error to the CAM happened because a race condition between HC
write, checking DA and FR.

This patch added an additional check for DA(RE), just after checking FR.
It is important to read the CAMs status register again, to give the CAM
the necessary time for a proper reaction to HC. Please note the
description within the source code (patch below).

[mchehab@s-opensource.com: make checkpatch happy]

Signed-off-by: Jasmin jessich <jasmin@anw.at>
Tested-by: Ralph Metzler <rjkm@metzlerbros.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/dvb-core/dvb_ca_en50221.c