diff options
author | David S. Miller <davem@davemloft.net> | 2012-03-05 21:16:26 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-03-05 21:16:26 -0500 |
commit | f6a1ad4295f9291038380178d09978caf6982dd8 (patch) | |
tree | 7c35e8efe1812baca9c6b9674be1ee02a0495ec3 /net | |
parent | 036dafa28da1e2565a8529de2ae663c37b7a0060 (diff) | |
parent | f3969bf78f140f437f51787dfc2751943ba454d1 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts:
drivers/net/vmxnet3/vmxnet3_drv.c
Small vmxnet3 conflict with header size bug fix in 'net'.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/bridge/br_multicast.c | 7 | ||||
-rw-r--r-- | net/bridge/br_stp.c | 6 | ||||
-rw-r--r-- | net/core/rtnetlink.c | 18 | ||||
-rw-r--r-- | net/ipv4/tcp_input.c | 1 |
4 files changed, 19 insertions, 13 deletions
diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c index 568d5bf17534..702a1ae9220b 100644 --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c | |||
@@ -446,8 +446,11 @@ static struct sk_buff *br_ip6_multicast_alloc_query(struct net_bridge *br, | |||
446 | ip6h->nexthdr = IPPROTO_HOPOPTS; | 446 | ip6h->nexthdr = IPPROTO_HOPOPTS; |
447 | ip6h->hop_limit = 1; | 447 | ip6h->hop_limit = 1; |
448 | ipv6_addr_set(&ip6h->daddr, htonl(0xff020000), 0, 0, htonl(1)); | 448 | ipv6_addr_set(&ip6h->daddr, htonl(0xff020000), 0, 0, htonl(1)); |
449 | ipv6_dev_get_saddr(dev_net(br->dev), br->dev, &ip6h->daddr, 0, | 449 | if (ipv6_dev_get_saddr(dev_net(br->dev), br->dev, &ip6h->daddr, 0, |
450 | &ip6h->saddr); | 450 | &ip6h->saddr)) { |
451 | kfree_skb(skb); | ||
452 | return NULL; | ||
453 | } | ||
451 | ipv6_eth_mc_map(&ip6h->daddr, eth->h_dest); | 454 | ipv6_eth_mc_map(&ip6h->daddr, eth->h_dest); |
452 | 455 | ||
453 | hopopt = (u8 *)(ip6h + 1); | 456 | hopopt = (u8 *)(ip6h + 1); |
diff --git a/net/bridge/br_stp.c b/net/bridge/br_stp.c index dd147d78a588..6751ed4e0c07 100644 --- a/net/bridge/br_stp.c +++ b/net/bridge/br_stp.c | |||
@@ -17,9 +17,9 @@ | |||
17 | #include "br_private_stp.h" | 17 | #include "br_private_stp.h" |
18 | 18 | ||
19 | /* since time values in bpdu are in jiffies and then scaled (1/256) | 19 | /* since time values in bpdu are in jiffies and then scaled (1/256) |
20 | * before sending, make sure that is at least one. | 20 | * before sending, make sure that is at least one STP tick. |
21 | */ | 21 | */ |
22 | #define MESSAGE_AGE_INCR ((HZ < 256) ? 1 : (HZ/256)) | 22 | #define MESSAGE_AGE_INCR ((HZ / 256) + 1) |
23 | 23 | ||
24 | static const char *const br_port_state_names[] = { | 24 | static const char *const br_port_state_names[] = { |
25 | [BR_STATE_DISABLED] = "disabled", | 25 | [BR_STATE_DISABLED] = "disabled", |
@@ -186,7 +186,7 @@ static void br_record_config_information(struct net_bridge_port *p, | |||
186 | p->designated_cost = bpdu->root_path_cost; | 186 | p->designated_cost = bpdu->root_path_cost; |
187 | p->designated_bridge = bpdu->bridge_id; | 187 | p->designated_bridge = bpdu->bridge_id; |
188 | p->designated_port = bpdu->port_id; | 188 | p->designated_port = bpdu->port_id; |
189 | p->designated_age = jiffies + bpdu->message_age; | 189 | p->designated_age = jiffies - bpdu->message_age; |
190 | 190 | ||
191 | mod_timer(&p->message_age_timer, jiffies | 191 | mod_timer(&p->message_age_timer, jiffies |
192 | + (p->br->max_age - bpdu->message_age)); | 192 | + (p->br->max_age - bpdu->message_age)); |
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index 2be10181d583..1a63c6efd2ea 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c | |||
@@ -1060,11 +1060,12 @@ static int rtnl_dump_ifinfo(struct sk_buff *skb, struct netlink_callback *cb) | |||
1060 | rcu_read_lock(); | 1060 | rcu_read_lock(); |
1061 | cb->seq = net->dev_base_seq; | 1061 | cb->seq = net->dev_base_seq; |
1062 | 1062 | ||
1063 | nlmsg_parse(cb->nlh, sizeof(struct rtgenmsg), tb, IFLA_MAX, | 1063 | if (nlmsg_parse(cb->nlh, sizeof(struct rtgenmsg), tb, IFLA_MAX, |
1064 | ifla_policy); | 1064 | ifla_policy) >= 0) { |
1065 | 1065 | ||
1066 | if (tb[IFLA_EXT_MASK]) | 1066 | if (tb[IFLA_EXT_MASK]) |
1067 | ext_filter_mask = nla_get_u32(tb[IFLA_EXT_MASK]); | 1067 | ext_filter_mask = nla_get_u32(tb[IFLA_EXT_MASK]); |
1068 | } | ||
1068 | 1069 | ||
1069 | for (h = s_h; h < NETDEV_HASHENTRIES; h++, s_idx = 0) { | 1070 | for (h = s_h; h < NETDEV_HASHENTRIES; h++, s_idx = 0) { |
1070 | idx = 0; | 1071 | idx = 0; |
@@ -1902,10 +1903,11 @@ static u16 rtnl_calcit(struct sk_buff *skb, struct nlmsghdr *nlh) | |||
1902 | u32 ext_filter_mask = 0; | 1903 | u32 ext_filter_mask = 0; |
1903 | u16 min_ifinfo_dump_size = 0; | 1904 | u16 min_ifinfo_dump_size = 0; |
1904 | 1905 | ||
1905 | nlmsg_parse(nlh, sizeof(struct rtgenmsg), tb, IFLA_MAX, ifla_policy); | 1906 | if (nlmsg_parse(nlh, sizeof(struct rtgenmsg), tb, IFLA_MAX, |
1906 | 1907 | ifla_policy) >= 0) { | |
1907 | if (tb[IFLA_EXT_MASK]) | 1908 | if (tb[IFLA_EXT_MASK]) |
1908 | ext_filter_mask = nla_get_u32(tb[IFLA_EXT_MASK]); | 1909 | ext_filter_mask = nla_get_u32(tb[IFLA_EXT_MASK]); |
1910 | } | ||
1909 | 1911 | ||
1910 | if (!ext_filter_mask) | 1912 | if (!ext_filter_mask) |
1911 | return NLMSG_GOODSIZE; | 1913 | return NLMSG_GOODSIZE; |
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index ee42d42b2f45..d9b83d198c3d 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
@@ -2569,6 +2569,7 @@ static void tcp_mark_head_lost(struct sock *sk, int packets, int mark_head) | |||
2569 | 2569 | ||
2570 | if (cnt > packets) { | 2570 | if (cnt > packets) { |
2571 | if ((tcp_is_sack(tp) && !tcp_is_fack(tp)) || | 2571 | if ((tcp_is_sack(tp) && !tcp_is_fack(tp)) || |
2572 | (TCP_SKB_CB(skb)->sacked & TCPCB_SACKED_ACKED) || | ||
2572 | (oldcnt >= packets)) | 2573 | (oldcnt >= packets)) |
2573 | break; | 2574 | break; |
2574 | 2575 | ||