]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
more .23 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Tue, 15 Jan 2008 00:07:46 +0000 (16:07 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 15 Jan 2008 00:07:46 +0000 (16:07 -0800)
queue-2.6.23/atm-delay-irq-setup-until-card-is-configured.patch [new file with mode: 0644]
queue-2.6.23/ipsec-avoid-undefined-shift-operation-when-testing-algorithm-id.patch [new file with mode: 0644]
queue-2.6.23/ipv4-ip_gre-set-mac_header-correctly-in-receive-path.patch [new file with mode: 0644]
queue-2.6.23/ipv4-route-ip_rt_dump-is-unecessary-slow.patch [new file with mode: 0644]
queue-2.6.23/net-correct-two-mistaken-skb_reset_mac_header-conversions.patch [new file with mode: 0644]
queue-2.6.23/series

diff --git a/queue-2.6.23/atm-delay-irq-setup-until-card-is-configured.patch b/queue-2.6.23/atm-delay-irq-setup-until-card-is-configured.patch
new file mode 100644 (file)
index 0000000..99d3d3b
--- /dev/null
@@ -0,0 +1,64 @@
+From stable-bounces@linux.kernel.org Fri Jan 11 01:36:14 2008
+From: Chas Williams <chas@cmf.nrl.navy.mil>
+Date: Fri, 11 Jan 2008 01:35:51 -0800 (PST)
+Subject: ATM: [nicstar] delay irq setup until card is configured
+To: stable@kernel.org
+Cc: bunk@kernel.org
+Message-ID: <20080111.013551.151177889.davem@davemloft.net>
+
+From: Chas Williams <chas@cmf.nrl.navy.mil>
+
+[ATM]: [nicstar] delay irq setup until card is configured
+
+[ Upstream commit: 52961955aa180959158faeb9fd6b4f8a591450f5 ]
+
+Signed-off-by: Chas Williams <chas@cmf.nrl.navy.mil>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/atm/nicstar.c |   19 +++++++++----------
+ 1 file changed, 9 insertions(+), 10 deletions(-)
+
+--- a/drivers/atm/nicstar.c
++++ b/drivers/atm/nicstar.c
+@@ -625,14 +625,6 @@ static int __devinit ns_init_card(int i,
+    if (mac[i] == NULL)
+       nicstar_init_eprom(card->membase);
+-   if (request_irq(pcidev->irq, &ns_irq_handler, IRQF_DISABLED | IRQF_SHARED, "nicstar", card) != 0)
+-   {
+-      printk("nicstar%d: can't allocate IRQ %d.\n", i, pcidev->irq);
+-      error = 9;
+-      ns_init_card_error(card, error);
+-      return error;
+-   }
+-
+    /* Set the VPI/VCI MSb mask to zero so we can receive OAM cells */
+    writel(0x00000000, card->membase + VPM);
+       
+@@ -858,8 +850,6 @@ static int __devinit ns_init_card(int i,
+       card->iovpool.count++;
+    }
+-   card->intcnt = 0;
+-
+    /* Configure NICStAR */
+    if (card->rct_size == 4096)
+       ns_cfg_rctsize = NS_CFG_RCTSIZE_4096_ENTRIES;
+@@ -868,6 +858,15 @@ static int __devinit ns_init_card(int i,
+    card->efbie = 1;
++   card->intcnt = 0;
++   if (request_irq(pcidev->irq, &ns_irq_handler, IRQF_DISABLED | IRQF_SHARED, "nicstar", card) != 0)
++   {
++      printk("nicstar%d: can't allocate IRQ %d.\n", i, pcidev->irq);
++      error = 9;
++      ns_init_card_error(card, error);
++      return error;
++   }
++
+    /* Register device */
+    card->atmdev = atm_dev_register("nicstar", &atm_ops, -1, NULL);
+    if (card->atmdev == NULL)
diff --git a/queue-2.6.23/ipsec-avoid-undefined-shift-operation-when-testing-algorithm-id.patch b/queue-2.6.23/ipsec-avoid-undefined-shift-operation-when-testing-algorithm-id.patch
new file mode 100644 (file)
index 0000000..1f41e73
--- /dev/null
@@ -0,0 +1,61 @@
+From stable-bounces@linux.kernel.org Fri Jan 11 01:33:13 2008
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Fri, 11 Jan 2008 01:32:51 -0800 (PST)
+Subject: IPSEC: Avoid undefined shift operation when testing algorithm ID
+To: stable@kernel.org
+Cc: bunk@kernel.org
+Message-ID: <20080111.013251.29376420.davem@davemloft.net>
+
+From: Herbert Xu <herbert@gondor.apana.org.au>
+
+[IPSEC]: Avoid undefined shift operation when testing algorithm ID
+
+[ Upstream commit: f398035f2dec0a6150833b0bc105057953594edb ]
+
+The aalgos/ealgos fields are only 32 bits wide.  However, af_key tries
+to test them with the expression 1 << id where id can be as large as
+253.  This produces different behaviour on different architectures.
+
+The following patch explicitly checks whether ID is greater than 31
+and fails the check if that's the case.
+
+We cannot easily extend the mask to be longer than 32 bits due to
+exposure to user-space.  Besides, this whole interface is obsolete
+anyway in favour of the xfrm_user interface which doesn't use this
+bit mask in templates (well not within the kernel anyway).
+
+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/key/af_key.c |   14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
+
+--- a/net/key/af_key.c
++++ b/net/key/af_key.c
+@@ -2780,12 +2780,22 @@ static struct sadb_msg *pfkey_get_base_m
+ static inline int aalg_tmpl_set(struct xfrm_tmpl *t, struct xfrm_algo_desc *d)
+ {
+-      return t->aalgos & (1 << d->desc.sadb_alg_id);
++      unsigned int id = d->desc.sadb_alg_id;
++
++      if (id >= sizeof(t->aalgos) * 8)
++              return 0;
++
++      return (t->aalgos >> id) & 1;
+ }
+ static inline int ealg_tmpl_set(struct xfrm_tmpl *t, struct xfrm_algo_desc *d)
+ {
+-      return t->ealgos & (1 << d->desc.sadb_alg_id);
++      unsigned int id = d->desc.sadb_alg_id;
++
++      if (id >= sizeof(t->ealgos) * 8)
++              return 0;
++
++      return (t->ealgos >> id) & 1;
+ }
+ static int count_ah_combs(struct xfrm_tmpl *t)
diff --git a/queue-2.6.23/ipv4-ip_gre-set-mac_header-correctly-in-receive-path.patch b/queue-2.6.23/ipv4-ip_gre-set-mac_header-correctly-in-receive-path.patch
new file mode 100644 (file)
index 0000000..19a1e00
--- /dev/null
@@ -0,0 +1,36 @@
+From stable-bounces@linux.kernel.org Fri Jan 11 01:31:00 2008
+From: David Miller <davem@davemloft.net>
+Date: Fri, 11 Jan 2008 01:30:35 -0800 (PST)
+Subject: IPV4: ip_gre: set mac_header correctly in receive path
+To: stable@kernel.org
+Cc: bunk@kernel.org
+Message-ID: <20080111.013035.68144987.davem@davemloft.net>
+
+From: Timo Teras <timo.teras@iki.fi>
+
+[IPV4] ip_gre: set mac_header correctly in receive path
+
+[ Upstream commit: 1d0691674764098304ae4c63c715f5883b4d3784 ]
+
+mac_header update in ipgre_recv() was incorrectly changed to
+skb_reset_mac_header() when it was introduced.
+
+Signed-off-by: Timo Teras <timo.teras@iki.fi>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/ipv4/ip_gre.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/net/ipv4/ip_gre.c
++++ b/net/ipv4/ip_gre.c
+@@ -613,7 +613,7 @@ static int ipgre_rcv(struct sk_buff *skb
+                               offset += 4;
+               }
+-              skb_reset_mac_header(skb);
++              skb->mac_header = skb->network_header;
+               __pskb_pull(skb, offset);
+               skb_reset_network_header(skb);
+               skb_postpull_rcsum(skb, skb_transport_header(skb), offset);
diff --git a/queue-2.6.23/ipv4-route-ip_rt_dump-is-unecessary-slow.patch b/queue-2.6.23/ipv4-route-ip_rt_dump-is-unecessary-slow.patch
new file mode 100644 (file)
index 0000000..0e7f6d5
--- /dev/null
@@ -0,0 +1,80 @@
+From stable-bounces@linux.kernel.org Fri Jan 11 01:42:36 2008
+From: Eric Dumazet <dada1@cosmosbay.com>
+Date: Fri, 11 Jan 2008 01:42:12 -0800 (PST)
+Subject: IPV4 ROUTE: ip_rt_dump() is unecessary slow
+To: stable@kernel.org
+Cc: bunk@kernel.org
+Message-ID: <20080111.014212.243382375.davem@davemloft.net>
+
+From: Eric Dumazet <dada1@cosmosbay.com>
+
+[IPV4] ROUTE: ip_rt_dump() is unecessary slow
+
+[ Upstream commit: d8c9283089287341c85a0a69de32c2287a990e71 ]
+
+I noticed "ip route list cache x.y.z.t" can be *very* slow.
+
+While strace-ing -T it I also noticed that first part of route cache
+is fetched quite fast :
+
+recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"p\0\0\0\30\0\2\0\254i\202
+GXm\0\0\2  \0\376\0\0\2\0\2\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3772 <0.000047>
+recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\234\0\0\0\30\0\2\0\254i\
+202GXm\0\0\2  \0\376\0\0\1\0\2"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3736 <0.000042>
+recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\204\0\0\0\30\0\2\0\254i\
+202GXm\0\0\2  \0\376\0\0\1\0\2"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3740 <0.000055>
+recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\234\0\0\0\30\0\2\0\254i\
+202GXm\0\0\2  \0\376\0\0\1\0\2"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3712 <0.000043>
+recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\204\0\0\0\30\0\2\0\254i\
+202GXm\0\0\2  \0\376\0\0\1\0\2"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3732 <0.000053>
+recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"p\0\0\0\30\0\2\0\254i\202
+GXm\0\0\2  \0\376\0\0\2\0\2\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3708 <0.000052>
+recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"p\0\0\0\30\0\2\0\254i\202
+GXm\0\0\2  \0\376\0\0\2\0\2\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3680 <0.000041>
+
+while the part at the end of the table is more expensive:
+
+recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\204\0\0\0\30\0\2\0\254i\202GXm\0\0\2  \0\376\0\0\1\0\2"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3656 <0.003857>
+recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\204\0\0\0\30\0\2\0\254i\202GXm\0\0\2  \0\376\0\0\1\0\2"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3772 <0.003891>
+recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"p\0\0\0\30\0\2\0\254i\202GXm\0\0\2  \0\376\0\0\2\0\2\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3712 <0.003765>
+recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"p\0\0\0\30\0\2\0\254i\202GXm\0\0\2  \0\376\0\0\2\0\2\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3700 <0.003879>
+recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"p\0\0\0\30\0\2\0\254i\202GXm\0\0\2  \0\376\0\0\2\0\2\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3676 <0.003797>
+recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"p\0\0\0\30\0\2\0\254i\202GXm\0\0\2  \0\376\0\0\2\0\2\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3724 <0.003856>
+recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\234\0\0\0\30\0\2\0\254i\202GXm\0\0\2  \0\376\0\0\1\0\2"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3736 <0.003848>
+
+The following patch corrects this performance/latency problem,
+removing quadratic behavior.
+
+Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/ipv4/route.c |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/net/ipv4/route.c
++++ b/net/ipv4/route.c
+@@ -2648,11 +2648,10 @@ int ip_rt_dump(struct sk_buff *skb,  str
+       int idx, s_idx;
+       s_h = cb->args[0];
++      if (s_h < 0)
++              s_h = 0;
+       s_idx = idx = cb->args[1];
+-      for (h = 0; h <= rt_hash_mask; h++) {
+-              if (h < s_h) continue;
+-              if (h > s_h)
+-                      s_idx = 0;
++      for (h = s_h; h <= rt_hash_mask; h++) {
+               rcu_read_lock_bh();
+               for (rt = rcu_dereference(rt_hash_table[h].chain), idx = 0; rt;
+                    rt = rcu_dereference(rt->u.dst.rt_next), idx++) {
+@@ -2669,6 +2668,7 @@ int ip_rt_dump(struct sk_buff *skb,  str
+                       dst_release(xchg(&skb->dst, NULL));
+               }
+               rcu_read_unlock_bh();
++              s_idx = 0;
+       }
+ done:
diff --git a/queue-2.6.23/net-correct-two-mistaken-skb_reset_mac_header-conversions.patch b/queue-2.6.23/net-correct-two-mistaken-skb_reset_mac_header-conversions.patch
new file mode 100644 (file)
index 0000000..82c6505
--- /dev/null
@@ -0,0 +1,54 @@
+From stable-bounces@linux.kernel.org Fri Jan 11 01:32:06 2008
+From: David Miller <davem@davemloft.net>
+Date: Fri, 11 Jan 2008 01:31:39 -0800 (PST)
+Subject: NET: Correct two mistaken skb_reset_mac_header() conversions.
+To: stable@kernel.org
+Cc: bunk@kernel.org
+Message-ID: <20080111.013139.213061588.davem@davemloft.net>
+
+From: David Miller <davem@davemloft.net>
+
+[NET]: Correct two mistaken skb_reset_mac_header() conversions.
+
+[ Upstream commit: c6e6ca712b5cc06a662f900c0484d49d7334af64 ]
+
+This operation helper abstracts:
+
+       skb->mac_header = skb->data;
+
+but it was done in two more places which were actually:
+
+       skb->mac_header = skb->network_header;
+
+and those are corrected here.
+
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/ax25/ax25_in.c  |    2 +-
+ net/netrom/nr_dev.c |    2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+--- a/net/ax25/ax25_in.c
++++ b/net/ax25/ax25_in.c
+@@ -124,7 +124,7 @@ int ax25_rx_iframe(ax25_cb *ax25, struct
+               }
+               skb_pull(skb, 1);       /* Remove PID */
+-              skb_reset_mac_header(skb);
++              skb->mac_header = skb->network_header;
+               skb_reset_network_header(skb);
+               skb->dev      = ax25->ax25_dev->dev;
+               skb->pkt_type = PACKET_HOST;
+--- a/net/netrom/nr_dev.c
++++ b/net/netrom/nr_dev.c
+@@ -56,7 +56,7 @@ int nr_rx_ip(struct sk_buff *skb, struct
+       /* Spoof incoming device */
+       skb->dev      = dev;
+-      skb_reset_mac_header(skb);
++      skb->mac_header = skb->network_header;
+       skb_reset_network_header(skb);
+       skb->pkt_type = PACKET_HOST;
index 5ed73a4aa352116f55de38b736d6e544dece0ebf..2cacaa1d9ceaa12aacd7d981f8618e63ad1601d5 100644 (file)
@@ -20,3 +20,8 @@ irda-irda_create-nuke-user-triggable-printk.patch
 inet-fix-netdev-renaming-and-inet-address-labels.patch
 connector-don-t-touch-queue-dev-after-decrement-of-ref-count.patch
 atm-check-ip-header-validity-in-mpc_send_packet.patch
+ipv4-route-ip_rt_dump-is-unecessary-slow.patch
+atm-delay-irq-setup-until-card-is-configured.patch
+ipsec-avoid-undefined-shift-operation-when-testing-algorithm-id.patch
+net-correct-two-mistaken-skb_reset_mac_header-conversions.patch
+ipv4-ip_gre-set-mac_header-correctly-in-receive-path.patch