aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2009-03-26 04:22:01 -0400
committerDavid S. Miller <davem@davemloft.net>2009-03-26 04:22:01 -0400
commitf0de70f8bb56952f6e016a65a8a8d006918f5bf6 (patch)
tree1d38f828b212adc0a0f2d100d58544979fab543d /net
parentbb3daa4a5960cd9d39bad88679fcf587b456c05d (diff)
parentcda6d377ec6b2ee2e58d563d0bd7eb313e0165df (diff)
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Diffstat (limited to 'net')
-rw-r--r--net/bridge/br_if.c1
-rw-r--r--net/ipv4/udp.c6
-rw-r--r--net/netfilter/nf_conntrack_proto_tcp.c3
3 files changed, 7 insertions, 3 deletions
diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c
index 727c5c510a60..8a96672e2c5c 100644
--- a/net/bridge/br_if.c
+++ b/net/bridge/br_if.c
@@ -426,7 +426,6 @@ err2:
426err1: 426err1:
427 kobject_del(&p->kobj); 427 kobject_del(&p->kobj);
428err0: 428err0:
429 kobject_put(&p->kobj);
430 dev_set_promiscuity(dev, -1); 429 dev_set_promiscuity(dev, -1);
431put_back: 430put_back:
432 dev_put(dev); 431 dev_put(dev);
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index ace2ac8a42f7..bda08a09357d 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -1618,7 +1618,8 @@ static struct sock *udp_get_next(struct seq_file *seq, struct sock *sk)
1618 } while (sk && (!net_eq(sock_net(sk), net) || sk->sk_family != state->family)); 1618 } while (sk && (!net_eq(sock_net(sk), net) || sk->sk_family != state->family));
1619 1619
1620 if (!sk) { 1620 if (!sk) {
1621 spin_unlock_bh(&state->udp_table->hash[state->bucket].lock); 1621 if (state->bucket < UDP_HTABLE_SIZE)
1622 spin_unlock_bh(&state->udp_table->hash[state->bucket].lock);
1622 return udp_get_first(seq, state->bucket + 1); 1623 return udp_get_first(seq, state->bucket + 1);
1623 } 1624 }
1624 return sk; 1625 return sk;
@@ -1636,6 +1637,9 @@ static struct sock *udp_get_idx(struct seq_file *seq, loff_t pos)
1636 1637
1637static void *udp_seq_start(struct seq_file *seq, loff_t *pos) 1638static void *udp_seq_start(struct seq_file *seq, loff_t *pos)
1638{ 1639{
1640 struct udp_iter_state *state = seq->private;
1641 state->bucket = UDP_HTABLE_SIZE;
1642
1639 return *pos ? udp_get_idx(seq, *pos-1) : SEQ_START_TOKEN; 1643 return *pos ? udp_get_idx(seq, *pos-1) : SEQ_START_TOKEN;
1640} 1644}
1641 1645
diff --git a/net/netfilter/nf_conntrack_proto_tcp.c b/net/netfilter/nf_conntrack_proto_tcp.c
index e46f3b79adb3..0aeb8b09a1f7 100644
--- a/net/netfilter/nf_conntrack_proto_tcp.c
+++ b/net/netfilter/nf_conntrack_proto_tcp.c
@@ -15,6 +15,7 @@
15#include <linux/skbuff.h> 15#include <linux/skbuff.h>
16#include <linux/ipv6.h> 16#include <linux/ipv6.h>
17#include <net/ip6_checksum.h> 17#include <net/ip6_checksum.h>
18#include <asm/unaligned.h>
18 19
19#include <net/tcp.h> 20#include <net/tcp.h>
20 21
@@ -468,7 +469,7 @@ static void tcp_sack(const struct sk_buff *skb, unsigned int dataoff,
468 for (i = 0; 469 for (i = 0;
469 i < (opsize - TCPOLEN_SACK_BASE); 470 i < (opsize - TCPOLEN_SACK_BASE);
470 i += TCPOLEN_SACK_PERBLOCK) { 471 i += TCPOLEN_SACK_PERBLOCK) {
471 tmp = ntohl(*((__be32 *)(ptr+i)+1)); 472 tmp = get_unaligned_be32((__be32 *)(ptr+i)+1);
472 473
473 if (after(tmp, *sack)) 474 if (after(tmp, *sack))
474 *sack = tmp; 475 *sack = tmp;