]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
another batch of 2.6.19 patches
authorChris Wright <chrisw@sous-sol.org>
Sat, 6 Jan 2007 00:48:17 +0000 (16:48 -0800)
committerChris Wright <chrisw@sous-sol.org>
Sat, 6 Jan 2007 00:48:17 +0000 (16:48 -0800)
queue-2.6.19/asix-fix-typo-for-ax88772-phy-selection.patch [new file with mode: 0644]
queue-2.6.19/connector-some-fixes-for-ia64-unaligned-access-errors.patch [new file with mode: 0644]
queue-2.6.19/dvb-core-fix-bug-in-crc-32-checking-on-64-bit-systems.patch [new file with mode: 0644]
queue-2.6.19/ebtables-don-t-compute-gap-before-checking-struct-type.patch [new file with mode: 0644]
queue-2.6.19/ipv4-ipv6-fix-inet-6-device-initialization-order.patch [new file with mode: 0644]
queue-2.6.19/netlabel-correctly-fill-in-unused-cipsov4-level-and-category-mappings.patch [new file with mode: 0644]
queue-2.6.19/series
queue-2.6.19/sound-sparc-cs4231-fix-irq-return-value-and-initialization.patch [new file with mode: 0644]
queue-2.6.19/sound-sparc-cs4231-use-64-for-period_bytes_min.patch [new file with mode: 0644]
queue-2.6.19/v4l-cx2341x-audio_properties-is-an-u16-not-u8.patch [new file with mode: 0644]
queue-2.6.19/v4l-cx88-fix-leadtek_eeprom-tagging.patch [new file with mode: 0644]

diff --git a/queue-2.6.19/asix-fix-typo-for-ax88772-phy-selection.patch b/queue-2.6.19/asix-fix-typo-for-ax88772-phy-selection.patch
new file mode 100644 (file)
index 0000000..d430059
--- /dev/null
@@ -0,0 +1,34 @@
+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;
+       }
diff --git a/queue-2.6.19/connector-some-fixes-for-ia64-unaligned-access-errors.patch b/queue-2.6.19/connector-some-fixes-for-ia64-unaligned-access-errors.patch
new file mode 100644 (file)
index 0000000..6a6646a
--- /dev/null
@@ -0,0 +1,85 @@
+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;
diff --git a/queue-2.6.19/dvb-core-fix-bug-in-crc-32-checking-on-64-bit-systems.patch b/queue-2.6.19/dvb-core-fix-bug-in-crc-32-checking-on-64-bit-systems.patch
new file mode 100644 (file)
index 0000000..e93d74b
--- /dev/null
@@ -0,0 +1,45 @@
+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
diff --git a/queue-2.6.19/ebtables-don-t-compute-gap-before-checking-struct-type.patch b/queue-2.6.19/ebtables-don-t-compute-gap-before-checking-struct-type.patch
new file mode 100644 (file)
index 0000000..cc834d8
--- /dev/null
@@ -0,0 +1,39 @@
+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;
diff --git a/queue-2.6.19/ipv4-ipv6-fix-inet-6-device-initialization-order.patch b/queue-2.6.19/ipv4-ipv6-fix-inet-6-device-initialization-order.patch
new file mode 100644 (file)
index 0000000..e38803e
--- /dev/null
@@ -0,0 +1,68 @@
+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;
+ }
diff --git a/queue-2.6.19/netlabel-correctly-fill-in-unused-cipsov4-level-and-category-mappings.patch b/queue-2.6.19/netlabel-correctly-fill-in-unused-cipsov4-level-and-category-mappings.patch
new file mode 100644 (file)
index 0000000..65b5db0
--- /dev/null
@@ -0,0 +1,57 @@
+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)
index c64ea2c8332cee228a6c5d7a4edb08be9a50984e..d7d3e8f83d2a68f6010ed799c044f9b560671136 100644 (file)
@@ -36,3 +36,13 @@ sparc64-handle-isa-devices-with-no-regs-property.patch
 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
diff --git a/queue-2.6.19/sound-sparc-cs4231-fix-irq-return-value-and-initialization.patch b/queue-2.6.19/sound-sparc-cs4231-fix-irq-return-value-and-initialization.patch
new file mode 100644 (file)
index 0000000..c551400
--- /dev/null
@@ -0,0 +1,89 @@
+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 )
diff --git a/queue-2.6.19/sound-sparc-cs4231-use-64-for-period_bytes_min.patch b/queue-2.6.19/sound-sparc-cs4231-use-64-for-period_bytes_min.patch
new file mode 100644 (file)
index 0000000..ca0932e
--- /dev/null
@@ -0,0 +1,40 @@
+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,
diff --git a/queue-2.6.19/v4l-cx2341x-audio_properties-is-an-u16-not-u8.patch b/queue-2.6.19/v4l-cx2341x-audio_properties-is-an-u16-not-u8.patch
new file mode 100644 (file)
index 0000000..c369056
--- /dev/null
@@ -0,0 +1,33 @@
+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;
diff --git a/queue-2.6.19/v4l-cx88-fix-leadtek_eeprom-tagging.patch b/queue-2.6.19/v4l-cx88-fix-leadtek_eeprom-tagging.patch
new file mode 100644 (file)
index 0000000..39957d2
--- /dev/null
@@ -0,0 +1,36 @@
+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.