]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
add more patches to 2.6.17 queue
authorGreg Kroah-Hartman <gregkh@suse.de>
Mon, 17 Jul 2006 15:28:29 +0000 (08:28 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 17 Jul 2006 15:28:29 +0000 (08:28 -0700)
queue-2.6.17/add-missing-ufo-initialisations.patch [new file with mode: 0644]
queue-2.6.17/fix-ipv4-decnet-routing-rule-dumping.patch [new file with mode: 0644]
queue-2.6.17/ieee80211-tkip-requires-crc32.patch [new file with mode: 0644]
queue-2.6.17/pdflush-handle-resume-wakeups.patch [new file with mode: 0644]
queue-2.6.17/series
queue-2.6.17/tpm-interrupt-clear-fix.patch [new file with mode: 0644]

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 (file)
index 0000000..8d4bc06
--- /dev/null
@@ -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" <davem@davemloft.net>, netdev@vger.kernel.org
+Message-ID: <20060713091101.GA28651@gondor.apana.org.au>
+Content-Disposition: inline
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Cc: 
+Subject: [NET]: Add missing UFO initialisations
+
+From: Herbert Xu <herbert@gondor.apana.org.au>
+
+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 <herbert@gondor.apana.org.au>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ 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 (file)
index 0000000..67c82b7
--- /dev/null
@@ -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 <davem@davemloft.net>
+Cc: 
+Subject: [NET]: Fix IPv4/DECnet routing rule dumping
+
+
+From: Patrick McHardy <kaber@trash.net>
+
+
+When more rules are present than fit in a single skb, the remaining
+rules are incorrectly skipped.
+
+Signed-off-by: Patrick McHardy <kaber@trash.net>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ 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 (file)
index 0000000..3624785
--- /dev/null
@@ -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 <netdev@vger.kernel.org>
+Message-ID: <200607141855_MC3-1-C4FF-BD1B@compuserve.com>
+Content-Disposition: inline
+Cc: Andrew Morton <akpm@osdl.org>, Toralf Foerster <toralf.foerster@gmx.de>,
+        linux-stable <stable@kernel.org>,
+        linux-kernel <linux-kernel@vger.kernel.org>,
+        "John W. Linville" <linville@tuxdriver.com>
+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 <toralf.foerster@gmx.de>
+
+Signed-off-by: Chuck Ebbert <76306.1226@compuserve.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ 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 (file)
index 0000000..e5822f1
--- /dev/null
@@ -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 <pavel@ucw.cz>
+To: stable@kernel.org, kernel list <linux-kernel@vger.kernel.org>
+Message-ID: <20060708153731.GB1723@elf.ucw.cz>
+Content-Disposition: inline
+Cc: Andrew Morton <akpm@osdl.org>, 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 <akpm@osdl.org>
+Signed-off-by: Linus Torvalds <torvalds@osdl.org>
+Signed-off-by: Pavel Machek <pavel@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ 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);
index e2452674d0861958c63c83a8b2749a084e131cf0..7a88606c9fd7691fd18d79a4c8e3777a95f3eb0b 100644 (file)
@@ -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 (file)
index 0000000..92db124
--- /dev/null
@@ -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" <rdunlap@xenotime.net>
+To: stable@kernel.org
+Message-Id: <20060712143314.48952105.rdunlap@xenotime.net>
+Cc: 
+Subject: tpm: interrupt clear fix
+
+From: Kylene Jo Hall <kjhall@us.ibm.com>
+
+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 <kjhall@us.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ 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;
+ }