• Jasmin J's avatar
    [media] media/dvb-core: Race condition when writing to CAM · e7080d44
    Jasmin J authored
    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: default avatarJasmin jessich <jasmin@anw.at>
    Tested-by: default avatarRalph Metzler <rjkm@metzlerbros.de>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
    e7080d44
dvb_ca_en50221.c 46.6 KB