diff options
author | Andrew de Quincy <devnull@localhost> | 2004-08-16 20:55:29 +0000 |
---|---|---|
committer | Andrew de Quincy <devnull@localhost> | 2004-08-16 20:55:29 +0000 |
commit | 5464de4fb2970c53df7fc7b035ffc3b403d9daf0 (patch) | |
tree | 06c7154aaddf87ad75dcde7f0bb2e38bbb23a14d /linux/drivers | |
parent | dfa6a03851de3405c27adf15f2560d949798e885 (diff) | |
download | mediapointer-dvb-s2-5464de4fb2970c53df7fc7b035ffc3b403d9daf0.tar.gz mediapointer-dvb-s2-5464de4fb2970c53df7fc7b035ffc3b403d9daf0.tar.bz2 |
No longer attempts to parse body of tuple 0xff
Diffstat (limited to 'linux/drivers')
-rw-r--r-- | linux/drivers/media/dvb/dvb-core/dvb_ca_en50221.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/linux/drivers/media/dvb/dvb-core/dvb_ca_en50221.c b/linux/drivers/media/dvb/dvb-core/dvb_ca_en50221.c index e38e87c17..9567e00a8 100644 --- a/linux/drivers/media/dvb/dvb-core/dvb_ca_en50221.c +++ b/linux/drivers/media/dvb/dvb-core/dvb_ca_en50221.c @@ -362,6 +362,13 @@ static int dvb_ca_en50221_read_tuple(struct dvb_ca_private* ca, int slot, /* grab the next tuple length and type */ if ((_tupleType = ca->pub->read_attribute_mem(ca->pub, slot, _address)) < 0) return _tupleType; + if (_tupleType == 0xff) { + dprintk("END OF CHAIN TUPLE type:0x%x\n", _tupleType); + *address += 2; + *tupleType = _tupleType; + *tupleLength = 0; + return 0; + } if ((_tupleLength = ca->pub->read_attribute_mem(ca->pub, slot, _address+2)) < 0) return _tupleLength; _address += 4; @@ -982,12 +989,12 @@ static int dvb_ca_en50221_thread(void* data) break; case DVB_CA_SLOTSTATE_VALIDATE: - if (ca->pub->write_cam_control(ca->pub, slot, CTRLIF_COMMAND, CMDREG_RS) != 0) { + if (ca->pub->write_cam_control(ca->pub, slot, CTRLIF_COMMAND, CMDREG_RS) != 0) { printk("dvb_ca: Unable to reset CAM IF\n"); ca->slot_info[slot].slot_state = DVB_CA_SLOTSTATE_INVALID; - dvb_ca_en50221_thread_update_delay(ca); + dvb_ca_en50221_thread_update_delay(ca); break; - } + } if (dvb_ca_en50221_parse_attributes(ca, slot) != 0) { printk("dvb_ca: Invalid PC card inserted :(\n"); ca->slot_info[slot].slot_state = DVB_CA_SLOTSTATE_INVALID; |