From: Chris Wright Date: Sat, 6 Jan 2007 00:48:17 +0000 (-0800) Subject: another batch of 2.6.19 patches X-Git-Tag: v2.6.19.2~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=168a4dce03b64f5df0798e86f593220783207de0;p=thirdparty%2Fkernel%2Fstable-queue.git another batch of 2.6.19 patches --- 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 index 00000000000..d430059c033 --- /dev/null +++ b/queue-2.6.19/asix-fix-typo-for-ax88772-phy-selection.patch @@ -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 +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 +Signed-off-by: Chris Wright +--- +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 index 00000000000..6a6646afcab --- /dev/null +++ b/queue-2.6.19/connector-some-fixes-for-ia64-unaligned-access-errors.patch @@ -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 + +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 +Cc: Evgeniy Polyakov +Cc: "Luck, Tony" +Cc: +Cc: "David S. Miller" +Signed-off-by: Andrew Morton +Signed-off-by: Chris Wright +--- + + 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 + #include + #include ++#include + + #include + +@@ -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 index 00000000000..e93d74b053e --- /dev/null +++ b/queue-2.6.19/dvb-core-fix-bug-in-crc-32-checking-on-64-bit-systems.patch @@ -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 +To: stable@kernel.org +Cc: v4l-dvb maintainer list , Ang Way Chuang +Subject: dvb-core: fix bug in CRC-32 checking on 64-bit systems + +From: Ang Way Chuang + +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 +Signed-off-by: Michael Krufky +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Chris Wright +--- +(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 index 00000000000..cc834d8fbf1 --- /dev/null +++ b/queue-2.6.19/ebtables-don-t-compute-gap-before-checking-struct-type.patch @@ -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" +Message-ID: <200701040303_MC3-1-D740-18D3@compuserve.com> +Cc: Patrick McHardy +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 +Acked-by: Al Viro +Acked-by: Patrick McHardy +Signed-off-by: Chuck Ebbert <76306.1226@compuserve.com> +Signed-off-by: Chris Wright +--- + 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 index 00000000000..e38803e5559 --- /dev/null +++ b/queue-2.6.19/ipv4-ipv6-fix-inet-6-device-initialization-order.patch @@ -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 +Cc: bunk@stusta.de +Subject: IPV4/IPV6: Fix inet{,6} device initialization order. + +From: David L Stevens + +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 +Signed-off-by: David S. Miller +Signed-off-by: Chris Wright +--- +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 index 00000000000..65b5db0ab7a --- /dev/null +++ b/queue-2.6.19/netlabel-correctly-fill-in-unused-cipsov4-level-and-category-mappings.patch @@ -0,0 +1,57 @@ +From stable-bounces@linux.kernel.org Fri Jan 5 11:35:00 2007 +From: "Paul Moore" +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 + +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 +Signed-off-by: Chris Wright +--- + 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) diff --git a/queue-2.6.19/series b/queue-2.6.19/series index c64ea2c8332..d7d3e8f83d2 100644 --- a/queue-2.6.19/series +++ b/queue-2.6.19/series @@ -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 index 00000000000..c551400f57b --- /dev/null +++ b/queue-2.6.19/sound-sparc-cs4231-fix-irq-return-value-and-initialization.patch @@ -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 +Cc: bunk@stusta.de +Subject: SOUND: Sparc CS4231: Fix IRQ return value and initialization. + +From: Georg Chini + +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 +Signed-off-by: David S. Miller +Signed-off-by: Chris Wright +--- +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 index 00000000000..ca0932e55d1 --- /dev/null +++ b/queue-2.6.19/sound-sparc-cs4231-use-64-for-period_bytes_min.patch @@ -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 +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 +Signed-off-by: Chris Wright +--- +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 index 00000000000..c3690560008 --- /dev/null +++ b/queue-2.6.19/v4l-cx2341x-audio_properties-is-an-u16-not-u8.patch @@ -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 +To: stable@kernel.org +Cc: Hans Verkuil , v4l-dvb maintainer list +Subject: V4L: cx2341x: audio_properties is an u16, not u8 + +From: Hans Verkuil + +This bug broke the MPEG audio mode controls. + +Signed-off-by: Hans Verkuil +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Michael Krufky +Signed-off-by: Chris Wright +--- +(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 index 00000000000..39957d2233f --- /dev/null +++ b/queue-2.6.19/v4l-cx88-fix-leadtek_eeprom-tagging.patch @@ -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 +To: stable@kernel.org +Cc: Jean Delvare , v4l-dvb maintainer list +Subject: V4L: cx88: Fix leadtek_eeprom tagging + +From: Jean Delvare + +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 +Signed-off-by: Michael Krufky +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Chris Wright +--- +(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.