From bc7712bb01e71d41013f0b642740832819849d30 Mon Sep 17 00:00:00 2001 From: Michael Hunold Date: Sat, 28 Dec 2002 17:11:51 +0000 Subject: Added fix for fidbirq() related crashes for budget cards: simply ignore obviously bogus dmapos values. --- linux/drivers/media/dvb/av7110/av7110.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'linux/drivers/media/dvb/av7110/av7110.c') 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) { -- cgit v1.2.3