Add sanity check to prevent crash on bad value.
- Add sanity check for m88rs6000_read_signal_strength.
Google-Bug-Id: 19432272
Change-Id: I99b36cfc753429c55e4c0b89185975d7588a6f61
diff --git a/drivers/media/dvb/frontends/dvbsky_m88rs6000.c b/drivers/media/dvb/frontends/dvbsky_m88rs6000.c
index 19197e8..e9f7e96 100644
--- a/drivers/media/dvb/frontends/dvbsky_m88rs6000.c
+++ b/drivers/media/dvb/frontends/dvbsky_m88rs6000.c
@@ -376,15 +376,28 @@
val = m88rs6000_tuner_readreg(state, 0x5A);
RF_GC = val & 0x0f;
+ if(RF_GC >= ARRAY_SIZE(RFGS)) {
+ printk(KERN_ERR "%s: Invalid, RFGC=%d\n", __func__, RF_GC);
+ return -EINVAL;
+ }
val = m88rs6000_tuner_readreg(state, 0x5F);
IF_GC = val & 0x0f;
+ if(IF_GC >= ARRAY_SIZE(IFGS)) {
+ printk(KERN_ERR "%s: Invalid, IFGC=%d\n", __func__, IF_GC);
+ return -EINVAL;
+ }
+
val = m88rs6000_tuner_readreg(state, 0x3F);
TIA_GC = (val >> 4) & 0x07;
val = m88rs6000_tuner_readreg(state, 0x77);
BB_GC = (val >> 4) & 0x0f;
+ if(BB_GC >= ARRAY_SIZE(BBGS)) {
+ printk(KERN_ERR "%s: Invalid, BBGC=%d\n", __func__, BB_GC);
+ return -EINVAL;
+ }
val = m88rs6000_tuner_readreg(state, 0x76);
PGA2_GC = val & 0x3f;