From: Greg Kroah-Hartman Date: Mon, 17 Jul 2006 15:28:29 +0000 (-0700) Subject: add more patches to 2.6.17 queue X-Git-Tag: v2.6.17.7~2^2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=38225d5d7164222116a225f68547856e6c16497e;p=thirdparty%2Fkernel%2Fstable-queue.git add more patches to 2.6.17 queue --- diff --git a/queue-2.6.17/add-missing-ufo-initialisations.patch b/queue-2.6.17/add-missing-ufo-initialisations.patch new file mode 100644 index 00000000000..8d4bc06c9c3 --- /dev/null +++ b/queue-2.6.17/add-missing-ufo-initialisations.patch @@ -0,0 +1,61 @@ +From stable-bounces@linux.kernel.org Thu Jul 13 02:11:51 2006 +Date: Thu, 13 Jul 2006 19:11:01 +1000 +To: stable@kernel.org, "David S. Miller" , netdev@vger.kernel.org +Message-ID: <20060713091101.GA28651@gondor.apana.org.au> +Content-Disposition: inline +From: Herbert Xu +Cc: +Subject: [NET]: Add missing UFO initialisations + +From: Herbert Xu + +This bug was unknowingly fixed the GSO patches (or rather, its effect was +unknown at the time). + +Thanks to Marco Berizzi's persistence which is documented in the thread +"ipsec tunnel asymmetrical mtu", we now know that it can have highly +non-obvious symptoms. + +What happens is that uninitialised uso_size fields can cause packets to +be incorrectly identified as UFO, which means that it does not get +fragmented even if it's over the MTU. + +The fix is simple enough. + +Signed-off-by: Herbert Xu +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + net/core/dev.c | 1 + + net/core/skbuff.c | 2 ++ + 2 files changed, 3 insertions(+) + +--- linux-2.6.17.6.orig/net/core/dev.c ++++ linux-2.6.17.6/net/core/dev.c +@@ -1246,6 +1246,7 @@ int __skb_linearize(struct sk_buff *skb, + atomic_set(&ninfo->dataref, 1); + ninfo->tso_size = skb_shinfo(skb)->tso_size; + ninfo->tso_segs = skb_shinfo(skb)->tso_segs; ++ ninfo->ufo_size = skb_shinfo(skb)->ufo_size; + ninfo->nr_frags = 0; + ninfo->frag_list = NULL; + +--- linux-2.6.17.6.orig/net/core/skbuff.c ++++ linux-2.6.17.6/net/core/skbuff.c +@@ -240,6 +240,7 @@ struct sk_buff *alloc_skb_from_cache(kme + skb_shinfo(skb)->nr_frags = 0; + skb_shinfo(skb)->tso_size = 0; + skb_shinfo(skb)->tso_segs = 0; ++ skb_shinfo(skb)->ufo_size = 0; + skb_shinfo(skb)->frag_list = NULL; + out: + return skb; +@@ -529,6 +530,7 @@ static void copy_skb_header(struct sk_bu + atomic_set(&new->users, 1); + skb_shinfo(new)->tso_size = skb_shinfo(old)->tso_size; + skb_shinfo(new)->tso_segs = skb_shinfo(old)->tso_segs; ++ skb_shinfo(new)->ufo_size = skb_shinfo(old)->ufo_size; + } + + /** diff --git a/queue-2.6.17/fix-ipv4-decnet-routing-rule-dumping.patch b/queue-2.6.17/fix-ipv4-decnet-routing-rule-dumping.patch new file mode 100644 index 00000000000..67c82b78967 --- /dev/null +++ b/queue-2.6.17/fix-ipv4-decnet-routing-rule-dumping.patch @@ -0,0 +1,56 @@ +From stable-bounces@linux.kernel.org Sat Jul 8 13:40:52 2006 +Date: Sat, 08 Jul 2006 13:39:35 -0700 (PDT) +Message-Id: <20060708.133935.94578437.davem@davemloft.net> +To: stable@kernel.org +From: David Miller +Cc: +Subject: [NET]: Fix IPv4/DECnet routing rule dumping + + +From: Patrick McHardy + + +When more rules are present than fit in a single skb, the remaining +rules are incorrectly skipped. + +Signed-off-by: Patrick McHardy +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + net/decnet/dn_rules.c | 3 ++- + net/ipv4/fib_rules.c | 4 ++-- + 2 files changed, 4 insertions(+), 3 deletions(-) + +--- linux-2.6.17.6.orig/net/decnet/dn_rules.c ++++ linux-2.6.17.6/net/decnet/dn_rules.c +@@ -400,9 +400,10 @@ int dn_fib_dump_rules(struct sk_buff *sk + rcu_read_lock(); + hlist_for_each_entry(r, node, &dn_fib_rules, r_hlist) { + if (idx < s_idx) +- continue; ++ goto next; + if (dn_fib_fill_rule(skb, r, cb, NLM_F_MULTI) < 0) + break; ++next: + idx++; + } + rcu_read_unlock(); +--- linux-2.6.17.6.orig/net/ipv4/fib_rules.c ++++ linux-2.6.17.6/net/ipv4/fib_rules.c +@@ -458,13 +458,13 @@ int inet_dump_rules(struct sk_buff *skb, + + rcu_read_lock(); + hlist_for_each_entry(r, node, &fib_rules, hlist) { +- + if (idx < s_idx) +- continue; ++ goto next; + if (inet_fill_rule(skb, r, NETLINK_CB(cb->skb).pid, + cb->nlh->nlmsg_seq, + RTM_NEWRULE, NLM_F_MULTI) < 0) + break; ++next: + idx++; + } + rcu_read_unlock(); diff --git a/queue-2.6.17/ieee80211-tkip-requires-crc32.patch b/queue-2.6.17/ieee80211-tkip-requires-crc32.patch new file mode 100644 index 00000000000..362478586c5 --- /dev/null +++ b/queue-2.6.17/ieee80211-tkip-requires-crc32.patch @@ -0,0 +1,37 @@ +From stable-bounces@linux.kernel.org Fri Jul 14 15:58:35 2006 +Date: Fri, 14 Jul 2006 18:51:41 -0400 +From: Chuck Ebbert <76306.1226@compuserve.com> +To: linux-netdev +Message-ID: <200607141855_MC3-1-C4FF-BD1B@compuserve.com> +Content-Disposition: inline +Cc: Andrew Morton , Toralf Foerster , + linux-stable , + linux-kernel , + "John W. Linville" +Subject: ieee80211: TKIP requires CRC32 + +ieee80211_crypt_tkip will not work without CRC32. + + LD .tmp_vmlinux1 +net/built-in.o: In function `ieee80211_tkip_encrypt': +net/ieee80211/ieee80211_crypt_tkip.c:349: undefined reference to `crc32_le' + +Reported by Toralf Foerster + +Signed-off-by: Chuck Ebbert <76306.1226@compuserve.com> +Signed-off-by: Greg Kroah-Hartman + +--- + net/ieee80211/Kconfig | 1 + + 1 file changed, 1 insertion(+) + +--- linux-2.6.17.6.orig/net/ieee80211/Kconfig ++++ linux-2.6.17.6/net/ieee80211/Kconfig +@@ -58,6 +58,7 @@ config IEEE80211_CRYPT_TKIP + depends on IEEE80211 && NET_RADIO + select CRYPTO + select CRYPTO_MICHAEL_MIC ++ select CRC32 + ---help--- + Include software based cipher suites in support of IEEE 802.11i + (aka TGi, WPA, WPA2, WPA-PSK, etc.) for use with TKIP enabled diff --git a/queue-2.6.17/pdflush-handle-resume-wakeups.patch b/queue-2.6.17/pdflush-handle-resume-wakeups.patch new file mode 100644 index 00000000000..e5822f17def --- /dev/null +++ b/queue-2.6.17/pdflush-handle-resume-wakeups.patch @@ -0,0 +1,67 @@ +From stable-bounces@linux.kernel.org Sat Jul 8 08:38:31 2006 +Date: Sat, 8 Jul 2006 17:37:31 +0200 +From: Pavel Machek +To: stable@kernel.org, kernel list +Message-ID: <20060708153731.GB1723@elf.ucw.cz> +Content-Disposition: inline +Cc: Andrew Morton , rml@novell.com +Subject: [stable] [patch-stable 2.6.16] pdflush: handle resume wakeups + + +2.6.16 needs this. It was merged into 2.6.18-rc1 in +http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d616e09ab33aa4d013a93c9b393efd5cebf78521 . + +pdflush is carefully designed to ensure that all wakeups have some +corresponding work to do - if a woken-up pdflush thread discovers that +it hasn't been given any work to do then this is considered an error. + +That all broke when swsusp came along - because a timer-delivered +wakeup to a frozen pdflush thread will just get lost. This causes the +pdflush thread to get lost as well: the writeback timer is supposed to +be re-armed by pdflush in process context, but pdflush doesn't execute +the callout which does this. + +Fix that up by ignoring the return value from try_to_freeze(): jsut +proceed, see if we have any work pending and only go back to sleep if +that is not the case. + +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Pavel Machek +Signed-off-by: Greg Kroah-Hartman + +--- + mm/pdflush.c | 15 +++++++-------- + 1 file changed, 7 insertions(+), 8 deletions(-) + +--- linux-2.6.17.6.orig/mm/pdflush.c ++++ linux-2.6.17.6/mm/pdflush.c +@@ -104,21 +104,20 @@ static int __pdflush(struct pdflush_work + list_move(&my_work->list, &pdflush_list); + my_work->when_i_went_to_sleep = jiffies; + spin_unlock_irq(&pdflush_lock); +- + schedule(); +- if (try_to_freeze()) { +- spin_lock_irq(&pdflush_lock); +- continue; +- } +- ++ try_to_freeze(); + spin_lock_irq(&pdflush_lock); + if (!list_empty(&my_work->list)) { +- printk("pdflush: bogus wakeup!\n"); ++ /* ++ * Someone woke us up, but without removing our control ++ * structure from the global list. swsusp will do this ++ * in try_to_freeze()->refrigerator(). Handle it. ++ */ + my_work->fn = NULL; + continue; + } + if (my_work->fn == NULL) { +- printk("pdflush: NULL work function\n"); ++ printk("pdflush: bogus wakeup\n"); + continue; + } + spin_unlock_irq(&pdflush_lock); diff --git a/queue-2.6.17/series b/queue-2.6.17/series index e2452674d08..7a88606c9fd 100644 --- a/queue-2.6.17/series +++ b/queue-2.6.17/series @@ -24,3 +24,8 @@ fix-powernow-k8-smp-kernel-on-up-hardware-bug.patch cdrom-fix-bad-cgc.buflen-assignment.patch splice-fix-problems-with-sys_tee.patch USB-serial-ftdi_sio-Prevent-userspace-DoS.patch +tpm-interrupt-clear-fix.patch +pdflush-handle-resume-wakeups.patch +ieee80211-tkip-requires-crc32.patch +fix-ipv4-decnet-routing-rule-dumping.patch +add-missing-ufo-initialisations.patch diff --git a/queue-2.6.17/tpm-interrupt-clear-fix.patch b/queue-2.6.17/tpm-interrupt-clear-fix.patch new file mode 100644 index 00000000000..92db12414cd --- /dev/null +++ b/queue-2.6.17/tpm-interrupt-clear-fix.patch @@ -0,0 +1,30 @@ +From stable-bounces@linux.kernel.org Wed Jul 12 16:39:52 2006 +Date: Wed, 12 Jul 2006 14:33:14 -0700 +From: "Randy.Dunlap" +To: stable@kernel.org +Message-Id: <20060712143314.48952105.rdunlap@xenotime.net> +Cc: +Subject: tpm: interrupt clear fix + +From: Kylene Jo Hall + +Under stress testing I found that the interrupt is not always cleared. +This is a bug and this patch should go into 2.6.18 and 2.6.17.x. + +Signed-off-by: Kylene Hall +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/char/tpm/tpm_tis.c | 1 + + 1 file changed, 1 insertion(+) + +--- linux-2.6.17.6.orig/drivers/char/tpm/tpm_tis.c ++++ linux-2.6.17.6/drivers/char/tpm/tpm_tis.c +@@ -424,6 +424,7 @@ static irqreturn_t tis_int_handler(int i + iowrite32(interrupt, + chip->vendor.iobase + + TPM_INT_STATUS(chip->vendor.locality)); ++ mb(); + return IRQ_HANDLED; + } +