diff options
author | Michael Hunold <devnull@localhost> | 2002-12-28 17:11:51 +0000 |
---|---|---|
committer | Michael Hunold <devnull@localhost> | 2002-12-28 17:11:51 +0000 |
commit | bc7712bb01e71d41013f0b642740832819849d30 (patch) | |
tree | 403a117757dcf5abe48aefa28933118be236a6eb | |
parent | 630737b956a92a3090c78bbdb61e28920cac831c (diff) | |
download | mediapointer-dvb-s2-bc7712bb01e71d41013f0b642740832819849d30.tar.gz mediapointer-dvb-s2-bc7712bb01e71d41013f0b642740832819849d30.tar.bz2 |
Added fix for fidbirq() related crashes for budget cards: simply ignore
obviously bogus dmapos values.
-rw-r--r-- | linux/drivers/media/dvb/av7110/av7110.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/linux/drivers/media/dvb/av7110/av7110.c b/linux/drivers/media/dvb/av7110/av7110.c index 40d6e1abf..f0c75b5e5 100644 --- a/linux/drivers/media/dvb/av7110/av7110.c +++ b/linux/drivers/media/dvb/av7110/av7110.c @@ -731,6 +731,8 @@ TTBStop(av7110_t *av7110) #define TS_WIDTH (4*188) #define TS_HEIGHT (1024/4) +#define TS_BUFLEN (TS_WIDTH*TS_HEIGHT) + static int TTBStart(av7110_t *av7110) { @@ -970,6 +972,11 @@ void fidbirq (unsigned long data) dmapos=saa7146_read(av7110->dev, PCI_VDP3); dmapos-=(dmapos%188); + if (dmapos>=TS_BUFLEN) { + DEB_S(("bogus dmapos value ignored, av7110: %p\n",av7110)); + return; + } + if (av7110->tsf) { mem+=av7110->ttbp; if (dmapos<0x20000) { |