--- /dev/null
+From stable-bounces@linux.kernel.org Wed Mar 28 18:24:10 2007
+From: Simon Arlott <simon@fire.lp0.eu>
+Date: Wed, 28 Mar 2007 21:22:40 -0400
+Subject: dvb-core: fix several locking related problems
+To: stable@kernel.org
+Message-ID: <460B14E0.2040100@linuxtv.org>
+
+
+From: Simon Arlott <simon@fire.lp0.eu>
+
+dvb-core: fix several locking related problems
+
+Fix several instances of dvb-core functions using mutex_lock_interruptible
+and returning -ERESTARTSYS where the calling function will either never
+retry or never check the return value.
+
+These cause a race condition with dvb_dmxdev_filter_free and
+dvb_dvr_release, both of which are filesystem release functions whose
+return value is ignored and will never be retried. When this happens it
+becomes impossible to open dvr0 again (-EBUSY) since it has not been
+released properly.
+
+(cherry picked from commit c278850206fd9df0bb62a72ca0b277fe20c5a452)
+
+Signed-off-by: Simon Arlott <simon@fire.lp0.eu>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Acked-By: Johannes Stezenbach <js@linuxtv.org>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/media/dvb/dvb-core/dmxdev.c | 12 +++---------
+ drivers/media/dvb/dvb-core/dvb_demux.c | 21 +++++++--------------
+ drivers/media/dvb/dvb-core/dvbdev.c | 9 +++------
+ 3 files changed, 13 insertions(+), 29 deletions(-)
+
+--- a/drivers/media/dvb/dvb-core/dmxdev.c
++++ b/drivers/media/dvb/dvb-core/dmxdev.c
+@@ -181,8 +181,7 @@ static int dvb_dvr_release(struct inode
+ struct dvb_device *dvbdev = file->private_data;
+ struct dmxdev *dmxdev = dvbdev->priv;
+
+- if (mutex_lock_interruptible(&dmxdev->mutex))
+- return -ERESTARTSYS;
++ mutex_lock(&dmxdev->mutex);
+
+ if ((file->f_flags & O_ACCMODE) == O_WRONLY) {
+ dmxdev->demux->disconnect_frontend(dmxdev->demux);
+@@ -674,13 +673,8 @@ static int dvb_demux_open(struct inode *
+ static int dvb_dmxdev_filter_free(struct dmxdev *dmxdev,
+ struct dmxdev_filter *dmxdevfilter)
+ {
+- if (mutex_lock_interruptible(&dmxdev->mutex))
+- return -ERESTARTSYS;
+-
+- if (mutex_lock_interruptible(&dmxdevfilter->mutex)) {
+- mutex_unlock(&dmxdev->mutex);
+- return -ERESTARTSYS;
+- }
++ mutex_lock(&dmxdev->mutex);
++ mutex_lock(&dmxdevfilter->mutex);
+
+ dvb_dmxdev_filter_stop(dmxdevfilter);
+ dvb_dmxdev_filter_reset(dmxdevfilter);
+--- a/drivers/media/dvb/dvb-core/dvb_demux.c
++++ b/drivers/media/dvb/dvb-core/dvb_demux.c
+@@ -673,8 +673,7 @@ static int dmx_ts_feed_stop_filtering(st
+ struct dvb_demux *demux = feed->demux;
+ int ret;
+
+- if (mutex_lock_interruptible(&demux->mutex))
+- return -ERESTARTSYS;
++ mutex_lock(&demux->mutex);
+
+ if (feed->state < DMX_STATE_GO) {
+ mutex_unlock(&demux->mutex);
+@@ -748,8 +747,7 @@ static int dvbdmx_release_ts_feed(struct
+ struct dvb_demux *demux = (struct dvb_demux *)dmx;
+ struct dvb_demux_feed *feed = (struct dvb_demux_feed *)ts_feed;
+
+- if (mutex_lock_interruptible(&demux->mutex))
+- return -ERESTARTSYS;
++ mutex_lock(&demux->mutex);
+
+ if (feed->state == DMX_STATE_FREE) {
+ mutex_unlock(&demux->mutex);
+@@ -916,8 +914,7 @@ static int dmx_section_feed_stop_filteri
+ struct dvb_demux *dvbdmx = dvbdmxfeed->demux;
+ int ret;
+
+- if (mutex_lock_interruptible(&dvbdmx->mutex))
+- return -ERESTARTSYS;
++ mutex_lock(&dvbdmx->mutex);
+
+ if (!dvbdmx->stop_feed) {
+ mutex_unlock(&dvbdmx->mutex);
+@@ -942,8 +939,7 @@ static int dmx_section_feed_release_filt
+ struct dvb_demux_feed *dvbdmxfeed = (struct dvb_demux_feed *)feed;
+ struct dvb_demux *dvbdmx = dvbdmxfeed->demux;
+
+- if (mutex_lock_interruptible(&dvbdmx->mutex))
+- return -ERESTARTSYS;
++ mutex_lock(&dvbdmx->mutex);
+
+ if (dvbdmxfilter->feed != dvbdmxfeed) {
+ mutex_unlock(&dvbdmx->mutex);
+@@ -1016,8 +1012,7 @@ static int dvbdmx_release_section_feed(s
+ struct dvb_demux_feed *dvbdmxfeed = (struct dvb_demux_feed *)feed;
+ struct dvb_demux *dvbdmx = (struct dvb_demux *)demux;
+
+- if (mutex_lock_interruptible(&dvbdmx->mutex))
+- return -ERESTARTSYS;
++ mutex_lock(&dvbdmx->mutex);
+
+ if (dvbdmxfeed->state == DMX_STATE_FREE) {
+ mutex_unlock(&dvbdmx->mutex);
+@@ -1126,8 +1121,7 @@ static int dvbdmx_connect_frontend(struc
+ if (demux->frontend)
+ return -EINVAL;
+
+- if (mutex_lock_interruptible(&dvbdemux->mutex))
+- return -ERESTARTSYS;
++ mutex_lock(&dvbdemux->mutex);
+
+ demux->frontend = frontend;
+ mutex_unlock(&dvbdemux->mutex);
+@@ -1138,8 +1132,7 @@ static int dvbdmx_disconnect_frontend(st
+ {
+ struct dvb_demux *dvbdemux = (struct dvb_demux *)demux;
+
+- if (mutex_lock_interruptible(&dvbdemux->mutex))
+- return -ERESTARTSYS;
++ mutex_lock(&dvbdemux->mutex);
+
+ demux->frontend = NULL;
+ mutex_unlock(&dvbdemux->mutex);
+--- a/drivers/media/dvb/dvb-core/dvbdev.c
++++ b/drivers/media/dvb/dvb-core/dvbdev.c
+@@ -204,8 +204,7 @@ int dvb_register_device(struct dvb_adapt
+
+ int id;
+
+- if (mutex_lock_interruptible(&dvbdev_register_lock))
+- return -ERESTARTSYS;
++ mutex_lock(&dvbdev_register_lock);
+
+ if ((id = dvbdev_get_free_id (adap, type)) < 0) {
+ mutex_unlock(&dvbdev_register_lock);
+@@ -295,8 +294,7 @@ int dvb_register_adapter(struct dvb_adap
+ {
+ int num;
+
+- if (mutex_lock_interruptible(&dvbdev_register_lock))
+- return -ERESTARTSYS;
++ mutex_lock(&dvbdev_register_lock);
+
+ if ((num = dvbdev_get_free_adapter_num ()) < 0) {
+ mutex_unlock(&dvbdev_register_lock);
+@@ -324,8 +322,7 @@ EXPORT_SYMBOL(dvb_register_adapter);
+
+ int dvb_unregister_adapter(struct dvb_adapter *adap)
+ {
+- if (mutex_lock_interruptible(&dvbdev_register_lock))
+- return -ERESTARTSYS;
++ mutex_lock(&dvbdev_register_lock);
+ list_del (&adap->list_head);
+ mutex_unlock(&dvbdev_register_lock);
+ return 0;
--- /dev/null
+From stable-bounces@linux.kernel.org Wed Mar 28 18:23:55 2007
+From: Michael Krufky <mkrufky@linuxtv.org>
+Date: Wed, 28 Mar 2007 21:22:16 -0400
+Subject: DVB: fix nxt200x rf input switching
+To: stable@kernel.org
+Message-ID: <460B14C8.9050707@linuxtv.org>
+
+From: Michael Krufky <mkrufky@linuxtv.org>
+
+DVB: fix nxt200x rf input switching
+
+After dvb tuner refactoring, the pll buffer has been altered such that
+the pll address is now stored in buf[0]. Instead of sending buf to
+set_pll_input, we should send buf+1.
+
+(cherry picked from commit f5ae29e284b328e0976789d5c199bbbe80e4b005)
+
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/media/dvb/frontends/nxt200x.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/media/dvb/frontends/nxt200x.c
++++ b/drivers/media/dvb/frontends/nxt200x.c
+@@ -562,7 +562,7 @@ static int nxt200x_setup_frontend_parame
+
+ /* set input */
+ if (state->config->set_pll_input)
+- state->config->set_pll_input(buf, 1);
++ state->config->set_pll_input(buf+1, 1);
+ break;
+ case VSB_8:
+ /* Set non-punctured clock for VSB */
+@@ -571,7 +571,7 @@ static int nxt200x_setup_frontend_parame
+
+ /* set input */
+ if (state->config->set_pll_input)
+- state->config->set_pll_input(buf, 0);
++ state->config->set_pll_input(buf+1, 0);
+ break;
+ default:
+ return -EINVAL;
--- /dev/null
+From stable-bounces@linux.kernel.org Wed Mar 28 18:24:01 2007
+From: Thomas Viehweger <Thomas.Viehweger@marconi.com>
+Date: Wed, 28 Mar 2007 21:22:37 -0400
+Subject: DVB: isl6421: don't reference freed memory
+To: stable@kernel.org
+Message-ID: <460B14DD.5000707@linuxtv.org>
+
+From: Thomas Viehweger <Thomas.Viehweger@marconi.com>
+
+DVB: isl6421: don't reference freed memory
+
+After freeing a block there should be no reference to this block.
+
+(cherry picked from commit 09d4895488d4df5c58b739573846f514ceabc911)
+
+Signed-off-by: Thomas Viehweger <Thomas.Viehweger@marconi.com>
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/media/dvb/frontends/isl6421.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/media/dvb/frontends/isl6421.c
++++ b/drivers/media/dvb/frontends/isl6421.c
+@@ -122,6 +122,7 @@ struct dvb_frontend *isl6421_attach(stru
+ /* detect if it is present or not */
+ if (isl6421_set_voltage(fe, SEC_VOLTAGE_OFF)) {
+ kfree(isl6421);
++ fe->sec_priv = NULL;
+ return NULL;
+ }
+
--- /dev/null
+From stable-bounces@linux.kernel.org Wed Mar 28 09:36:44 2007
+From: Vasily Averin <vvs@sw.ru>
+Date: Wed, 28 Mar 2007 12:35:29 -0400
+Subject: i2o: block IO errors on i2o disk
+To: linux-stable <stable@kernel.org>
+Message-ID: <460A9951.4050106@redhat.com>
+
+From: Vasily Averin <vvs@sw.ru>
+
+[PATCH] i2o: block IO errors on i2o disk
+
+I2O subsystem has been broken in mainstream several months ago (after
+2.6.18). Commit 4aff5e2333c9a1609662f2091f55c3f6fffdad36 from Jens
+Axboe split struct request ->flags into two parts: cmd_type and
+cmd_flags.
+
+In i2o layer this patch has replaced flag REQ_SPECIAL by the according
+cmd_type. However i2o has used REQ_SPECIAL not as command type but as
+driver-specific flag for the debug purposes. As result all i2o requests
+have type "special" now, are not processed to the hardware and fail with
+I/O error:
+
+ i2o/hda:<3>Buffer I/O error on device i2o/hda, logical block 0
+ Buffer I/O error on device i2o/hda, logical block 0
+ Buffer I/O error on device i2o/hda, logical block 0
+ unable to read partition table
+ block-osm: device added (TID: 207): i2o/hda
+
+The following patch removes the extra debug checks without any drawbacks and
+restores the normal driver's work.
+
+Signed-off-by: Vasily Averin <vvs@sw.ru>
+Acked-by: Markus Lidel <Markus.Lidel@shadowconnect.com>
+Cc: Jens Axboe <jens.axboe@oracle.com>
+From: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/message/i2o/i2o_block.c | 12 +-----------
+ 1 file changed, 1 insertion(+), 11 deletions(-)
+
+--- a/drivers/message/i2o/i2o_block.c
++++ b/drivers/message/i2o/i2o_block.c
+@@ -390,13 +390,6 @@ static int i2o_block_prep_req_fn(struct
+ return BLKPREP_KILL;
+ }
+
+- /* request is already processed by us, so return */
+- if (blk_special_request(req)) {
+- osm_debug("REQ_SPECIAL already set!\n");
+- req->cmd_flags |= REQ_DONTPREP;
+- return BLKPREP_OK;
+- }
+-
+ /* connect the i2o_block_request to the request */
+ if (!req->special) {
+ ireq = i2o_block_request_alloc();
+@@ -408,11 +401,8 @@ static int i2o_block_prep_req_fn(struct
+ ireq->i2o_blk_dev = i2o_blk_dev;
+ req->special = ireq;
+ ireq->req = req;
+- } else
+- ireq = req->special;
+-
++ }
+ /* do not come back here */
+- req->cmd_type = REQ_TYPE_SPECIAL;
+ req->cmd_flags |= REQ_DONTPREP;
+
+ return BLKPREP_OK;
--- /dev/null
+From stable-bounces@linux.kernel.org Wed Mar 28 12:12:44 2007
+From: Chuck Ebbert <cebbert@redhat.com>
+Date: Wed, 28 Mar 2007 15:11:13 -0400
+Subject: ide: revert "ide: fix drive side 80c cable check, take 2" for now
+To: linux-stable <stable@kernel.org>
+Message-ID: <460ABDD1.3050608@redhat.com>
+
+From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
+
+[PATCH] ide: revert "ide: fix drive side 80c cable check, take 2" for now
+
+"ide: fix drive side 80c cable check, take 2" patch from Tejun Heo (commit
+fab59375b9543f84d1714f7dd00f5d11e531bd3e) fixed 80c bit test (bit13 of word93)
+but we also need to fix master/slave IDENTIFY order (slave device should be
+probed first in order to make it release PDIAG- signal) and we should also
+check for pre-ATA3 slave devices (which may not release PDIAG- signal).
+
+Unfortunately the fact that IDE driver doesn't reset devices itself helps
+only a bit as it seems that some BIOS-es reset ATA devices after programming
+the chipset, some BIOS-es can be set to not probe/configure selected devices,
+there may be no BIOS in case of add-on cards etc.
+
+Since we are quite late in the release cycle and the required changes will
+affect a lot of systems just revert the fix for now.
+
+[ Please also see libata commit f31f0cc2f0b7527072d94d02da332d9bb8d7d94c. ]
+
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ide/ide-iops.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+--- a/drivers/ide/ide-iops.c
++++ b/drivers/ide/ide-iops.c
+@@ -598,6 +598,9 @@ u8 eighty_ninty_three (ide_drive_t *driv
+ if(HWIF(drive)->udma_four == 0)
+ return 0;
+
++ printk(KERN_INFO "%s: hw_config=%04x\n",
++ drive->name, drive->id->hw_config);
++
+ /* Check for SATA but only if we are ATA5 or higher */
+ if (drive->id->hw_config == 0 && (drive->id->major_rev_num & 0x7FE0))
+ return 1;
+@@ -607,8 +610,14 @@ u8 eighty_ninty_three (ide_drive_t *driv
+ if(!(drive->id->hw_config & 0x4000))
+ return 0;
+ #endif /* CONFIG_IDEDMA_IVB */
++/*
++ * FIXME: enable this after fixing master/slave IDENTIFY order,
++ * also ignore the result if the slave device is pre-ATA3 one
++ */
++#if 0
+ if (!(drive->id->hw_config & 0x2000))
+ return 0;
++#endif
+ return 1;
+ }
+
--- /dev/null
+From stable-bounces@linux.kernel.org Wed Mar 28 09:33:18 2007
+From: Tejun Heo <htejun@gmail.com>
+Date: Wed, 28 Mar 2007 12:31:53 -0400
+Subject: jmicron: make ide jmicron driver play nice with libata ones
+To: linux-stable <stable@kernel.org>
+Message-ID: <460A9879.7040902@redhat.com>
+
+From: Tejun Heo <htejun@gmail.com>
+
+jmicron: make ide jmicron driver play nice with libata ones
+
+When libata is configured, the device is configured such that SATA and
+PATA ports live in separate functions with different programming
+interfaces. pata_jmicron and ide jmicron drivers can drive only the
+PATA part.
+
+This patch makes jmicron match PCI class code such that it doesn't
+attach itself to the SATA part preventing the proper ahci driver from
+attaching.
+
+This change is suggested by Bartlomiej.
+
+Signed-off-by: Tejun Heo <htejun@gmail.com>
+Cc: Jeff Garzik <jeff@garzik.org>
+Cc: justin@jmicron.com
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+
+---
+ drivers/ide/pci/jmicron.c | 29 ++++++++++++++++++++++++-----
+ 1 file changed, 24 insertions(+), 5 deletions(-)
+
+--- a/drivers/ide/pci/jmicron.c
++++ b/drivers/ide/pci/jmicron.c
+@@ -240,12 +240,31 @@ static int __devinit jmicron_init_one(st
+ return 0;
+ }
+
++/* If libata is configured, jmicron PCI quirk will configure it such
++ * that the SATA ports are in AHCI function while the PATA ports are
++ * in a separate IDE function. In such cases, match device class and
++ * attach only to IDE. If libata isn't configured, keep the old
++ * behavior for backward compatibility.
++ */
++#if defined(CONFIG_ATA) || defined(CONFIG_ATA_MODULE)
++#define JMB_CLASS PCI_CLASS_STORAGE_IDE << 8
++#define JMB_CLASS_MASK 0xffff00
++#else
++#define JMB_CLASS 0
++#define JMB_CLASS_MASK 0
++#endif
++
+ static struct pci_device_id jmicron_pci_tbl[] = {
+- { PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB361, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
+- { PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB363, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
+- { PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB365, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 2},
+- { PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB366, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3},
+- { PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB368, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 4},
++ { PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB361,
++ PCI_ANY_ID, PCI_ANY_ID, JMB_CLASS, JMB_CLASS_MASK, 0},
++ { PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB363,
++ PCI_ANY_ID, PCI_ANY_ID, JMB_CLASS, JMB_CLASS_MASK, 1},
++ { PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB365,
++ PCI_ANY_ID, PCI_ANY_ID, JMB_CLASS, JMB_CLASS_MASK, 2},
++ { PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB366,
++ PCI_ANY_ID, PCI_ANY_ID, JMB_CLASS, JMB_CLASS_MASK, 3},
++ { PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB368,
++ PCI_ANY_ID, PCI_ANY_ID, JMB_CLASS, JMB_CLASS_MASK, 4},
+ { 0, },
+ };
+
sparc-fix-sparc-builds-with-gcc-4.2.x.patch
fix-decnet-endianness.patch
net-fix-fib-rules-compatability.patch
+dvb-fix-nxt200x-rf-input-switching.patch
+v4l-radio-fix-error-in-kbuild-file.patch
+v4l-fix-secam-handling-on-saa7115.patch
+v4l-msp_attach-must-return-0-if-no-msp3400-was-found.patch
+dvb-isl6421-don-t-reference-freed-memory.patch
+dvb-core-fix-several-locking-related-problems.patch
+v4l-saa7146-fix-allocation-of-clipping-memory.patch
+jmicron-make-ide-jmicron-driver-play-nice-with-libata-ones.patch
+i2o-block-io-errors-on-i2o-disk.patch
+ide-revert-ide-fix-drive-side-80c-cable-check-take-2-for-now.patch
--- /dev/null
+From stable-bounces@linux.kernel.org Wed Mar 28 18:23:50 2007
+From: Mauro Carvalho Chehab <mchehab@infradead.org>
+Date: Wed, 28 Mar 2007 21:22:32 -0400
+Subject: V4L: Fix SECAM handling on saa7115
+To: stable@kernel.org
+Message-ID: <460B14D8.2050704@linuxtv.org>
+
+
+From: Mauro Carvalho Chehab <mchehab@infradead.org>
+
+V4L: Fix SECAM handling on saa7115
+
+(cherry picked from commit a9aaec4e83e687d23b78b38e331bbd6a10b96380)
+
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/media/video/saa7115.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/media/video/saa7115.c
++++ b/drivers/media/video/saa7115.c
+@@ -960,7 +960,7 @@ static void saa711x_set_v4lstd(struct i2
+ reg |= 0x10;
+ } else if (std == V4L2_STD_NTSC_M_JP) {
+ reg |= 0x40;
+- } else if (std == V4L2_STD_SECAM) {
++ } else if (std & V4L2_STD_SECAM) {
+ reg |= 0x50;
+ }
+ saa711x_write(client, R_0E_CHROMA_CNTL_1, reg);
--- /dev/null
+From stable-bounces@linux.kernel.org Wed Mar 28 18:24:18 2007
+From: Hans Verkuil <hverkuil@xs4all.nl>
+Date: Wed, 28 Mar 2007 21:22:35 -0400
+Subject: V4L: msp_attach must return 0 if no msp3400 was found.
+To: stable@kernel.org
+Message-ID: <460B14DB.20303@linuxtv.org>
+
+From: Hans Verkuil <hverkuil@xs4all.nl>
+
+V4L: msp_attach must return 0 if no msp3400 was found.
+
+Returning -1 causes the probe to stop, but it should just continue
+instead. This patch fixes an annoying 'i2c_adapter i2c-7: Client
+creation failed at 0x44 (-1)' kernel message that appeared in 2.6.20
+
+(cherry picked from commit 3284b4e077cb2322754ea7455b8f8af7ce3777b8)
+
+Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/media/video/msp3400-driver.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/media/video/msp3400-driver.c
++++ b/drivers/media/video/msp3400-driver.c
+@@ -825,7 +825,7 @@ static int msp_attach(struct i2c_adapter
+ if (msp_reset(client) == -1) {
+ v4l_dbg(1, msp_debug, client, "msp3400 not found\n");
+ kfree(client);
+- return -1;
++ return 0;
+ }
+
+ state = kmalloc(sizeof(*state), GFP_KERNEL);
+@@ -859,7 +859,7 @@ static int msp_attach(struct i2c_adapter
+ v4l_dbg(1, msp_debug, client, "not an msp3400 (cannot read chip version)\n");
+ kfree(state);
+ kfree(client);
+- return -1;
++ return 0;
+ }
+
+ msp_set_audio(client);
--- /dev/null
+From stable-bounces@linux.kernel.org Wed Mar 28 18:23:50 2007
+From: Trent Piepho <xyzzy@speakeasy.org>
+Date: Wed, 28 Mar 2007 21:22:28 -0400
+Subject: V4L: radio: Fix error in Kbuild file
+To: stable@kernel.org
+Message-ID: <460B14D4.7060109@linuxtv.org>
+
+From: Trent Piepho <xyzzy@speakeasy.org>
+
+V4L: radio: Fix error in Kbuild file
+
+All the radio drivers need video_dev, but they were depending on
+VIDEO_DEV!=n. That meant that one could try to compile the driver into
+the kernel when VIDEO_DEV=m, which will not work. If video_dev is a
+module, then the radio drivers must be modules too.
+
+(cherry picked from commit b10fece583fdfdb3d2f29b0da3896ec58b8fe122)
+
+Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/media/radio/Kconfig | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/media/radio/Kconfig
++++ b/drivers/media/radio/Kconfig
+@@ -3,7 +3,7 @@
+ #
+
+ menu "Radio Adapters"
+- depends on VIDEO_DEV!=n
++ depends on VIDEO_DEV
+
+ config RADIO_CADET
+ tristate "ADS Cadet AM/FM Tuner"
--- /dev/null
+From stable-bounces@linux.kernel.org Wed Mar 28 18:24:18 2007
+From: Oliver Endriss <o.endriss@gmx.de>
+Date: Wed, 28 Mar 2007 21:22:42 -0400
+Subject: V4L: saa7146: Fix allocation of clipping memory
+To: stable@kernel.org
+Message-ID: <460B14E2.70904@linuxtv.org>
+
+From: Oliver Endriss <o.endriss@gmx.de>
+
+V4L: saa7146: Fix allocation of clipping memory
+
+Olaf Hering pointed out that SAA7146_CLIPPING_MEM would become
+very large for PAGE_SIZE > 4K.
+
+In fact, the number of clipping windows is limited to 16,
+and calculate_clipping_registers_rect() does not use more
+than 256 bytes. SAA7146_CLIPPING_MEM adjusted accordingly.
+
+(cherry picked from commit 7a7cd1920969dd9da4e0d99aab573b3eba24c799)
+
+Thanks-to: Olaf Hering <olaf@aepfle.de>
+Acked-by: Michael Hunold <hunold@linuxtv.org>
+Signed-off-by: Oliver Endriss <o.endriss@gmx.de>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/media/saa7146_vv.h | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/include/media/saa7146_vv.h
++++ b/include/media/saa7146_vv.h
+@@ -239,7 +239,8 @@ void saa7146_res_free(struct saa7146_fh
+ #define SAA7146_HPS_SYNC_PORT_B 0x01
+
+ /* some memory sizes */
+-#define SAA7146_CLIPPING_MEM (14*PAGE_SIZE)
++/* max. 16 clipping rectangles */
++#define SAA7146_CLIPPING_MEM (16 * 4 * sizeof(u32))
+
+ /* some defines for the various clipping-modes */
+ #define SAA7146_CLIPPING_RECT 0x4