--- /dev/null
+From stable-bounces@linux.kernel.org Fri Jan 5 09:41:36 2007
+Date: Fri, 05 Jan 2007 12:34:05 -0500
+From: David Hollis <dhollis@davehollis.com>
+To: stable@kernel.org
+Message-id: <1168018445.3549.7.camel@dhollis-lnx.sunera.com>
+Subject: asix: Fix typo for AX88772 PHY Selection
+
+The attached patch fixes a PHY selection problem that prevents AX88772
+based devices (Linksys USB200Mv2, etc) devices from working. The
+interface comes up and everything seems fine except the device doesn't
+send/receive any packets. The one-liner attached fixes this issue and
+makes the devices usable again.
+
+Signed-off-by: David Hollis <dhollis@davehollis.com>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+Patch has already been applied for 2.6.20+ kernels but it would be very
+helpful for end-users/distributions to have this fixed in the 2.6.19
+series as well.
+
+ drivers/usb/net/asix.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- linux-2.6.19.1.orig/drivers/usb/net/asix.c
++++ linux-2.6.19.1/drivers/usb/net/asix.c
+@@ -920,7 +920,7 @@ static int ax88772_bind(struct usbnet *d
+ goto out2;
+
+ if ((ret = asix_write_cmd(dev, AX_CMD_SW_PHY_SELECT,
+- 0x0000, 0, 0, buf)) < 0) {
++ 1, 0, 0, buf)) < 0) {
+ dbg("Select PHY #1 failed: %d", ret);
+ goto out2;
+ }
--- /dev/null
+From stable-bounces@linux.kernel.org Fri Jan 5 16:45:00 2007
+Message-Id: <200701060037.l060bW40013427@shell0.pdx.osdl.net>
+To: torvalds@osdl.org
+From: akpm@osdl.org
+Date: Fri, 05 Jan 2007 16:37:05 -0800
+Cc: akpm@osdl.org, johnpol@2ka.mipt.ru, tony.luck@intel.com, stable@kernel.org, erikj@sgi.com, davem@davemloft.net
+Subject: connector: some fixes for ia64 unaligned access errors
+
+From: Erik Jacobson <erikj@sgi.com>
+
+On ia64, the various functions that make up cn_proc.c cause kernel
+unaligned access errors.
+
+If you are using these, for example, to get notification about all tasks
+forking and exiting, you get multiple unaligned access errors per process.
+
+Use put_unaligned() in the appropriate palces to fix this.
+
+Signed-off-by: Erik Jacobson <erikj@sgi.com>
+Cc: Evgeniy Polyakov <johnpol@2ka.mipt.ru>
+Cc: "Luck, Tony" <tony.luck@intel.com>
+Cc: <stable@kernel.org>
+Cc: "David S. Miller" <davem@davemloft.net>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ drivers/connector/cn_proc.c | 11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
+
+--- linux-2.6.19.1.orig/drivers/connector/cn_proc.c
++++ linux-2.6.19.1/drivers/connector/cn_proc.c
+@@ -28,6 +28,7 @@
+ #include <linux/init.h>
+ #include <linux/connector.h>
+ #include <asm/atomic.h>
++#include <asm/unaligned.h>
+
+ #include <linux/cn_proc.h>
+
+@@ -60,7 +61,7 @@ void proc_fork_connector(struct task_str
+ ev = (struct proc_event*)msg->data;
+ get_seq(&msg->seq, &ev->cpu);
+ ktime_get_ts(&ts); /* get high res monotonic timestamp */
+- ev->timestamp_ns = timespec_to_ns(&ts);
++ put_unaligned(timespec_to_ns(&ts), (__u64 *)&ev->timestamp_ns);
+ ev->what = PROC_EVENT_FORK;
+ ev->event_data.fork.parent_pid = task->real_parent->pid;
+ ev->event_data.fork.parent_tgid = task->real_parent->tgid;
+@@ -88,7 +89,7 @@ void proc_exec_connector(struct task_str
+ ev = (struct proc_event*)msg->data;
+ get_seq(&msg->seq, &ev->cpu);
+ ktime_get_ts(&ts); /* get high res monotonic timestamp */
+- ev->timestamp_ns = timespec_to_ns(&ts);
++ put_unaligned(timespec_to_ns(&ts), (__u64 *)&ev->timestamp_ns);
+ ev->what = PROC_EVENT_EXEC;
+ ev->event_data.exec.process_pid = task->pid;
+ ev->event_data.exec.process_tgid = task->tgid;
+@@ -124,7 +125,7 @@ void proc_id_connector(struct task_struc
+ return;
+ get_seq(&msg->seq, &ev->cpu);
+ ktime_get_ts(&ts); /* get high res monotonic timestamp */
+- ev->timestamp_ns = timespec_to_ns(&ts);
++ put_unaligned(timespec_to_ns(&ts), (__u64 *)&ev->timestamp_ns);
+
+ memcpy(&msg->id, &cn_proc_event_id, sizeof(msg->id));
+ msg->ack = 0; /* not used */
+@@ -146,7 +147,7 @@ void proc_exit_connector(struct task_str
+ ev = (struct proc_event*)msg->data;
+ get_seq(&msg->seq, &ev->cpu);
+ ktime_get_ts(&ts); /* get high res monotonic timestamp */
+- ev->timestamp_ns = timespec_to_ns(&ts);
++ put_unaligned(timespec_to_ns(&ts), (__u64 *)&ev->timestamp_ns);
+ ev->what = PROC_EVENT_EXIT;
+ ev->event_data.exit.process_pid = task->pid;
+ ev->event_data.exit.process_tgid = task->tgid;
+@@ -181,7 +182,7 @@ static void cn_proc_ack(int err, int rcv
+ ev = (struct proc_event*)msg->data;
+ msg->seq = rcvd_seq;
+ ktime_get_ts(&ts); /* get high res monotonic timestamp */
+- ev->timestamp_ns = timespec_to_ns(&ts);
++ put_unaligned(timespec_to_ns(&ts), (__u64 *)&ev->timestamp_ns);
+ ev->cpu = -1;
+ ev->what = PROC_EVENT_NONE;
+ ev->event_data.ack.err = err;
--- /dev/null
+From stable-bounces@linux.kernel.org Wed Jan 3 20:28:12 2007
+Message-ID: <459C80A0.7080509@linuxtv.org>
+Date: Wed, 03 Jan 2007 23:20:48 -0500
+From: Michael Krufky <mkrufky@linuxtv.org>
+To: stable@kernel.org
+Cc: v4l-dvb maintainer list <v4l-dvb-maintainer@linuxtv.org>, Ang Way Chuang <wcang@nrg.cs.usm.my>
+Subject: dvb-core: fix bug in CRC-32 checking on 64-bit systems
+
+From: Ang Way Chuang <wcang@nrg.cs.usm.my>
+
+CRC-32 checking during ULE decapsulation always failed on x86_64 systems due
+to the size of a variable used to store CRC. This bug was discovered on
+Fedora Core 6 with kernel-2.6.18-1.2849. The i386 counterpart has no such
+problem. This patch has been tested on 64-bit system as well as 32-bit system.
+
+Signed-off-by: Ang Way Chuang <wcang@nrg.cs.usm.my>
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+(cherry picked from commit dedcefb085fe98a1feaf63590fe2fc7e0ecb1987)
+
+ drivers/media/dvb/dvb-core/dvb_net.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- linux-2.6.19.1.orig/drivers/media/dvb/dvb-core/dvb_net.c
++++ linux-2.6.19.1/drivers/media/dvb/dvb-core/dvb_net.c
+@@ -604,7 +604,7 @@ static void dvb_net_ule( struct net_devi
+ { &utype, sizeof utype },
+ { priv->ule_skb->data, priv->ule_skb->len - 4 }
+ };
+- unsigned long ule_crc = ~0L, expected_crc;
++ u32 ule_crc = ~0L, expected_crc;
+ if (priv->ule_dbit) {
+ /* Set D-bit for CRC32 verification,
+ * if it was set originally. */
+@@ -617,7 +617,7 @@ static void dvb_net_ule( struct net_devi
+ *((u8 *)priv->ule_skb->tail - 2) << 8 |
+ *((u8 *)priv->ule_skb->tail - 1);
+ if (ule_crc != expected_crc) {
+- printk(KERN_WARNING "%lu: CRC32 check FAILED: %#lx / %#lx, SNDU len %d type %#x, ts_remain %d, next 2: %x.\n",
++ printk(KERN_WARNING "%lu: CRC32 check FAILED: %08x / %08x, SNDU len %d type %#x, ts_remain %d, next 2: %x.\n",
+ priv->ts_count, ule_crc, expected_crc, priv->ule_sndu_len, priv->ule_sndu_type, ts_remain, ts_remain > 2 ? *(unsigned short *)from_where : 0);
+
+ #ifdef ULE_DEBUG
--- /dev/null
+From stable-bounces@linux.kernel.org Thu Jan 4 00:13:21 2007
+Date: Thu, 4 Jan 2007 02:59:56 -0500
+From: Chuck Ebbert <76306.1226@compuserve.com>
+To: "stable@kernel.org" <stable@kernel.org>
+Message-ID: <200701040303_MC3-1-D740-18D3@compuserve.com>
+Cc: Patrick McHardy <kaber@trash.net>
+Subject: ebtables: don't compute gap before checking struct type
+
+We cannot compute the gap until we know we have a 'struct ebt_entry'
+and not 'struct ebt_entries'. Failure to check can cause crash.
+
+Tested-by: Santiago Garcia Mantinan <manty@manty.net>
+Acked-by: Al Viro <viro@zeniv.linux.org.uk>
+Acked-by: Patrick McHardy <kaber@trash.net>
+Signed-off-by: Chuck Ebbert <76306.1226@compuserve.com>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+ net/bridge/netfilter/ebtables.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- linux-2.6.19.1.orig/net/bridge/netfilter/ebtables.c
++++ linux-2.6.19.1/net/bridge/netfilter/ebtables.c
+@@ -575,7 +575,7 @@ ebt_check_entry(struct ebt_entry *e, str
+ struct ebt_entry_target *t;
+ struct ebt_target *target;
+ unsigned int i, j, hook = 0, hookmask = 0;
+- size_t gap = e->next_offset - e->target_offset;
++ size_t gap;
+ int ret;
+
+ /* don't mess with the struct ebt_entries */
+@@ -625,6 +625,7 @@ ebt_check_entry(struct ebt_entry *e, str
+ if (ret != 0)
+ goto cleanup_watchers;
+ t = (struct ebt_entry_target *)(((char *)e) + e->target_offset);
++ gap = e->next_offset - e->target_offset;
+ target = find_target_lock(t->u.name, &ret, &ebt_mutex);
+ if (!target)
+ goto cleanup_watchers;
--- /dev/null
+From stable-bounces@linux.kernel.org Thu Jan 4 17:14:44 2007
+Date: Thu, 04 Jan 2007 17:07:34 -0800 (PST)
+Message-Id: <20070104.170734.94556619.davem@davemloft.net>
+To: stable@kernel.org
+From: David Miller <davem@davemloft.net>
+Cc: bunk@stusta.de
+Subject: IPV4/IPV6: Fix inet{,6} device initialization order.
+
+From: David L Stevens <dlstevens@us.ibm.com>
+
+It is important that we only assign dev->ip{,6}_ptr
+only after all portions of the inet{,6} are setup.
+
+Otherwise we can receive packets before the multicast
+spinlocks et al. are initialized.
+
+Signed-off-by: David L Stevens <dlstevens@us.ibm.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+commit 30c4cf577fb5b68c16e5750d6bdbd7072e42b279
+
+ net/ipv4/devinet.c | 5 +++--
+ net/ipv6/addrconf.c | 4 ++--
+ 2 files changed, 5 insertions(+), 4 deletions(-)
+
+--- linux-2.6.19.1.orig/net/ipv4/devinet.c
++++ linux-2.6.19.1/net/ipv4/devinet.c
+@@ -165,9 +165,8 @@ struct in_device *inetdev_init(struct ne
+ NET_IPV4_NEIGH, "ipv4", NULL, NULL);
+ #endif
+
+- /* Account for reference dev->ip_ptr */
++ /* Account for reference dev->ip_ptr (below) */
+ in_dev_hold(in_dev);
+- rcu_assign_pointer(dev->ip_ptr, in_dev);
+
+ #ifdef CONFIG_SYSCTL
+ devinet_sysctl_register(in_dev, &in_dev->cnf);
+@@ -176,6 +175,8 @@ struct in_device *inetdev_init(struct ne
+ if (dev->flags & IFF_UP)
+ ip_mc_up(in_dev);
+ out:
++ /* we can receive as soon as ip_ptr is set -- do this last */
++ rcu_assign_pointer(dev->ip_ptr, in_dev);
+ return in_dev;
+ out_kfree:
+ kfree(in_dev);
+--- linux-2.6.19.1.orig/net/ipv6/addrconf.c
++++ linux-2.6.19.1/net/ipv6/addrconf.c
+@@ -413,8 +413,6 @@ static struct inet6_dev * ipv6_add_dev(s
+ if (netif_carrier_ok(dev))
+ ndev->if_flags |= IF_READY;
+
+- /* protected by rtnl_lock */
+- rcu_assign_pointer(dev->ip6_ptr, ndev);
+
+ ipv6_mc_init_dev(ndev);
+ ndev->tstamp = jiffies;
+@@ -425,6 +423,8 @@ static struct inet6_dev * ipv6_add_dev(s
+ NULL);
+ addrconf_sysctl_register(ndev, &ndev->cnf);
+ #endif
++ /* protected by rtnl_lock */
++ rcu_assign_pointer(dev->ip6_ptr, ndev);
+ return ndev;
+ }
+
--- /dev/null
+From stable-bounces@linux.kernel.org Fri Jan 5 11:35:00 2007
+From: "Paul Moore" <paul.moore@hp.com>
+Message-Id: <20061218180735.795797000@hp.com>
+Date: Mon, 18 Dec 2006 13:07:29 -0500
+To: stable@kernel.org
+Subject: NetLabel: correctly fill in unused CIPSOv4 level and category mappings
+
+From: Paul Moore <paul.moore@hp.com>
+
+Back when the original NetLabel patches were being changed to use Netlink
+attributes correctly some code was accidentially dropped which set all of the
+undefined CIPSOv4 level and category mappings to a sentinel value. The result
+is the mappings data in the kernel contains bogus mappings which always map to
+zero. Having level and category mappings that map to zero could result in the
+kernel assigning incorrect security attributes to packets.
+
+This patch restores the old/correct behavior by initializing the mapping
+data to the correct sentinel value.
+
+Signed-off-by: Paul Moore <paul.moore@hp.com>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+ net/netlabel/netlabel_cipso_v4.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+--- linux-2.6.19.1.orig/net/netlabel/netlabel_cipso_v4.c
++++ linux-2.6.19.1/net/netlabel/netlabel_cipso_v4.c
+@@ -162,6 +162,7 @@ static int netlbl_cipsov4_add_std(struct
+ struct nlattr *nla_b;
+ int nla_a_rem;
+ int nla_b_rem;
++ u32 iter;
+
+ if (!info->attrs[NLBL_CIPSOV4_A_TAGLST] ||
+ !info->attrs[NLBL_CIPSOV4_A_MLSLVLLST])
+@@ -223,6 +224,10 @@ static int netlbl_cipsov4_add_std(struct
+ ret_val = -ENOMEM;
+ goto add_std_failure;
+ }
++ for (iter = 0; iter < doi_def->map.std->lvl.local_size; iter++)
++ doi_def->map.std->lvl.local[iter] = CIPSO_V4_INV_LVL;
++ for (iter = 0; iter < doi_def->map.std->lvl.cipso_size; iter++)
++ doi_def->map.std->lvl.cipso[iter] = CIPSO_V4_INV_LVL;
+ nla_for_each_nested(nla_a,
+ info->attrs[NLBL_CIPSOV4_A_MLSLVLLST],
+ nla_a_rem)
+@@ -296,6 +301,10 @@ static int netlbl_cipsov4_add_std(struct
+ ret_val = -ENOMEM;
+ goto add_std_failure;
+ }
++ for (iter = 0; iter < doi_def->map.std->cat.local_size; iter++)
++ doi_def->map.std->cat.local[iter] = CIPSO_V4_INV_CAT;
++ for (iter = 0; iter < doi_def->map.std->cat.cipso_size; iter++)
++ doi_def->map.std->cat.cipso[iter] = CIPSO_V4_INV_CAT;
+ nla_for_each_nested(nla_a,
+ info->attrs[NLBL_CIPSOV4_A_MLSCATLST],
+ nla_a_rem)
net-don-t-export-linux-random.h-outside-__kernel__.patch
sparc32-add-offset-in-pci_map_sg.patch
vm-fix-nasty-and-subtle-race-in-shared-mmap-ed-page-writeback.patch
+v4l-cx2341x-audio_properties-is-an-u16-not-u8.patch
+dvb-core-fix-bug-in-crc-32-checking-on-64-bit-systems.patch
+v4l-cx88-fix-leadtek_eeprom-tagging.patch
+ebtables-don-t-compute-gap-before-checking-struct-type.patch
+sound-sparc-cs4231-fix-irq-return-value-and-initialization.patch
+sound-sparc-cs4231-use-64-for-period_bytes_min.patch
+ipv4-ipv6-fix-inet-6-device-initialization-order.patch
+asix-fix-typo-for-ax88772-phy-selection.patch
+netlabel-correctly-fill-in-unused-cipsov4-level-and-category-mappings.patch
+connector-some-fixes-for-ia64-unaligned-access-errors.patch
--- /dev/null
+From stable-bounces@linux.kernel.org Thu Jan 4 17:10:49 2007
+Date: Thu, 04 Jan 2007 17:03:38 -0800 (PST)
+Message-Id: <20070104.170338.48396666.davem@davemloft.net>
+To: stable@kernel.org
+From: David Miller <davem@davemloft.net>
+Cc: bunk@stusta.de
+Subject: SOUND: Sparc CS4231: Fix IRQ return value and initialization.
+
+From: Georg Chini <georg.chini@triaton-webhosting.com>
+
+SBUS: Change IRQ-handler return value from 0 to IRQ_HANDLED and
+fix some initialisation problems.
+
+Change period_bytes_min from 4096 to 256 to allow driver to work with
+low latency (VOIP) applications. Hope this does not break EBUS.
+
+Signed-off-by: Georg Chini <georg.chini@triaton-webhosting.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+commit d35a1b9e10481c9f1d3b87e778a0f1f6a0a2dd48
+
+ sound/sparc/cs4231.c | 26 ++++++++++++--------------
+ 1 file changed, 12 insertions(+), 14 deletions(-)
+
+--- linux-2.6.19.1.orig/sound/sparc/cs4231.c
++++ linux-2.6.19.1/sound/sparc/cs4231.c
+@@ -1268,7 +1268,7 @@ static struct snd_pcm_hardware snd_cs423
+ .channels_min = 1,
+ .channels_max = 2,
+ .buffer_bytes_max = (32*1024),
+- .period_bytes_min = 4096,
++ .period_bytes_min = 256,
+ .period_bytes_max = (32*1024),
+ .periods_min = 1,
+ .periods_max = 1024,
+@@ -1288,7 +1288,7 @@ static struct snd_pcm_hardware snd_cs423
+ .channels_min = 1,
+ .channels_max = 2,
+ .buffer_bytes_max = (32*1024),
+- .period_bytes_min = 4096,
++ .period_bytes_min = 256,
+ .period_bytes_max = (32*1024),
+ .periods_min = 1,
+ .periods_max = 1024,
+@@ -1796,7 +1796,7 @@ static irqreturn_t snd_cs4231_sbus_inter
+ snd_cs4231_outm(chip, CS4231_IRQ_STATUS, ~CS4231_ALL_IRQS | ~status, 0);
+ spin_unlock_irqrestore(&chip->lock, flags);
+
+- return 0;
++ return IRQ_HANDLED;
+ }
+
+ /*
+@@ -1821,7 +1821,6 @@ static int sbus_dma_request(struct cs423
+ if (!(csr & test))
+ goto out;
+ err = -EBUSY;
+- csr = sbus_readl(base->regs + APCCSR);
+ test = APC_XINT_CNVA;
+ if ( base->dir == APC_PLAY )
+ test = APC_XINT_PNVA;
+@@ -1862,17 +1861,16 @@ static void sbus_dma_enable(struct cs423
+
+ spin_lock_irqsave(&base->lock, flags);
+ if (!on) {
+- if (base->dir == APC_PLAY) {
+- sbus_writel(0, base->regs + base->dir + APCNVA);
+- sbus_writel(1, base->regs + base->dir + APCC);
+- }
+- else
+- {
+- sbus_writel(0, base->regs + base->dir + APCNC);
+- sbus_writel(0, base->regs + base->dir + APCVA);
+- }
++ sbus_writel(0, base->regs + base->dir + APCNC);
++ sbus_writel(0, base->regs + base->dir + APCNVA);
++ sbus_writel(0, base->regs + base->dir + APCC);
++ sbus_writel(0, base->regs + base->dir + APCVA);
++
++ /* ACK any APC interrupts. */
++ csr = sbus_readl(base->regs + APCCSR);
++ sbus_writel(csr, base->regs + APCCSR);
+ }
+- udelay(600);
++ udelay(1000);
+ csr = sbus_readl(base->regs + APCCSR);
+ shift = 0;
+ if ( base->dir == APC_PLAY )
--- /dev/null
+From stable-bounces@linux.kernel.org Thu Jan 4 17:11:45 2007
+Date: Thu, 04 Jan 2007 17:04:31 -0800 (PST)
+Message-Id: <20070104.170431.123973077.davem@davemloft.net>
+To: stable@kernel.org
+From: David Miller <davem@davemloft.net>
+Cc: bunk@stusta.de
+Subject: SOUND: Sparc CS4231: Use 64 for period_bytes_min
+
+This matches what the ISA cs4231 driver uses.
+
+Tested by Georg Chini.
+
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+commit f9af1d9deaaffe6803dec693748498886915d766
+
+ sound/sparc/cs4231.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- linux-2.6.19.1.orig/sound/sparc/cs4231.c
++++ linux-2.6.19.1/sound/sparc/cs4231.c
+@@ -1268,7 +1268,7 @@ static struct snd_pcm_hardware snd_cs423
+ .channels_min = 1,
+ .channels_max = 2,
+ .buffer_bytes_max = (32*1024),
+- .period_bytes_min = 256,
++ .period_bytes_min = 64,
+ .period_bytes_max = (32*1024),
+ .periods_min = 1,
+ .periods_max = 1024,
+@@ -1288,7 +1288,7 @@ static struct snd_pcm_hardware snd_cs423
+ .channels_min = 1,
+ .channels_max = 2,
+ .buffer_bytes_max = (32*1024),
+- .period_bytes_min = 256,
++ .period_bytes_min = 64,
+ .period_bytes_max = (32*1024),
+ .periods_min = 1,
+ .periods_max = 1024,
--- /dev/null
+From stable-bounces@linux.kernel.org Wed Jan 3 20:28:09 2007
+Message-ID: <459C80A7.2010901@linuxtv.org>
+Date: Wed, 03 Jan 2007 23:20:55 -0500
+From: Michael Krufky <mkrufky@linuxtv.org>
+To: stable@kernel.org
+Cc: Hans Verkuil <hverkuil@xs4all.nl>, v4l-dvb maintainer list <v4l-dvb-maintainer@linuxtv.org>
+Subject: V4L: cx2341x: audio_properties is an u16, not u8
+
+From: Hans Verkuil <hverkuil@xs4all.nl>
+
+This bug broke the MPEG audio mode controls.
+
+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: Chris Wright <chrisw@sous-sol.org>
+---
+(cherry picked from commit cb2c7b4927c8f376b7ba9557978d8c59ed472664)
+
+ include/media/cx2341x.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- linux-2.6.19.1.orig/include/media/cx2341x.h
++++ linux-2.6.19.1/include/media/cx2341x.h
+@@ -49,7 +49,7 @@ struct cx2341x_mpeg_params {
+ enum v4l2_mpeg_audio_mode_extension audio_mode_extension;
+ enum v4l2_mpeg_audio_emphasis audio_emphasis;
+ enum v4l2_mpeg_audio_crc audio_crc;
+- u8 audio_properties;
++ u16 audio_properties;
+
+ /* video */
+ enum v4l2_mpeg_video_encoding video_encoding;
--- /dev/null
+From stable-bounces@linux.kernel.org Wed Jan 3 20:28:25 2007
+Message-ID: <459C80AF.2070409@linuxtv.org>
+Date: Wed, 03 Jan 2007 23:21:03 -0500
+From: Michael Krufky <mkrufky@linuxtv.org>
+To: stable@kernel.org
+Cc: Jean Delvare <khali@linux-fr.org>, v4l-dvb maintainer list <v4l-dvb-maintainer@linuxtv.org>
+Subject: V4L: cx88: Fix leadtek_eeprom tagging
+
+From: Jean Delvare <khali@linux-fr.org>
+
+reference to .init.text: from .text between 'cx88_card_setup'
+(at offset 0x68c) and 'cx88_risc_field'
+Caused by leadtek_eeprom() being declared __devinit and called from
+a non-devinit context.
+
+Signed-off-by: Jean Delvare <khali@linux-fr.org>
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+(cherry picked from commit 69f7e75a9d45e5eaca16917a8d0dedf76149f13f)
+
+ drivers/media/video/cx88/cx88-cards.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- linux-2.6.19.1.orig/drivers/media/video/cx88/cx88-cards.c
++++ linux-2.6.19.1/drivers/media/video/cx88/cx88-cards.c
+@@ -1610,7 +1610,7 @@ const unsigned int cx88_idcount = ARRAY_
+ /* ----------------------------------------------------------------------- */
+ /* some leadtek specific stuff */
+
+-static void __devinit leadtek_eeprom(struct cx88_core *core, u8 *eeprom_data)
++static void leadtek_eeprom(struct cx88_core *core, u8 *eeprom_data)
+ {
+ /* This is just for the "Winfast 2000XP Expert" board ATM; I don't have data on
+ * any others.