aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorPawit Pornkitprasan <p.pawit@gmail.com>2013-03-03 09:36:50 +0700
committerPawit Pornkitprasan <p.pawit@gmail.com>2013-03-03 09:37:08 +0700
commitcbd6c4f48adc67ecbfcb9aa4a721b24a9ea26932 (patch)
treeef9c87ae4e9a14a19e2a0d95f1cb55c9e1e4edb5 /net
parent6c5dadef809982e05b16ba7cf309e7c642a1b56a (diff)
parent98bbf3565e3147a40c583ff97e2b5a98370c21a5 (diff)
downloadkernel_samsung_aries-cbd6c4f48adc67ecbfcb9aa4a721b24a9ea26932.zip
kernel_samsung_aries-cbd6c4f48adc67ecbfcb9aa4a721b24a9ea26932.tar.gz
kernel_samsung_aries-cbd6c4f48adc67ecbfcb9aa4a721b24a9ea26932.tar.bz2
Merge 3.0.67
Change-Id: I269d39317336ca17a0d3a58932744e3d4a861c5d
Diffstat (limited to 'net')
-rw-r--r--net/bridge/br_stp_bpdu.c2
-rw-r--r--net/ipv4/af_inet.c9
-rw-r--r--net/ipv4/ping.c4
3 files changed, 11 insertions, 4 deletions
diff --git a/net/bridge/br_stp_bpdu.c b/net/bridge/br_stp_bpdu.c
index 289646e..f26516a 100644
--- a/net/bridge/br_stp_bpdu.c
+++ b/net/bridge/br_stp_bpdu.c
@@ -16,6 +16,7 @@
#include <linux/etherdevice.h>
#include <linux/llc.h>
#include <linux/slab.h>
+#include <linux/pkt_sched.h>
#include <net/net_namespace.h>
#include <net/llc.h>
#include <net/llc_pdu.h>
@@ -40,6 +41,7 @@ static void br_send_bpdu(struct net_bridge_port *p,
skb->dev = p->dev;
skb->protocol = htons(ETH_P_802_2);
+ skb->priority = TC_PRIO_CONTROL;
skb_reserve(skb, LLC_RESERVE);
memcpy(__skb_put(skb, length), data, length);
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
index 4d60f12..be3d56a 100644
--- a/net/ipv4/af_inet.c
+++ b/net/ipv4/af_inet.c
@@ -239,8 +239,12 @@ EXPORT_SYMBOL(inet_listen);
u32 inet_ehash_secret __read_mostly;
EXPORT_SYMBOL(inet_ehash_secret);
+u32 ipv6_hash_secret __read_mostly;
+EXPORT_SYMBOL(ipv6_hash_secret);
+
/*
- * inet_ehash_secret must be set exactly once
+ * inet_ehash_secret must be set exactly once, and to a non nul value
+ * ipv6_hash_secret must be set exactly once.
*/
void build_ehash_secret(void)
{
@@ -250,7 +254,8 @@ void build_ehash_secret(void)
get_random_bytes(&rnd, sizeof(rnd));
} while (rnd == 0);
- cmpxchg(&inet_ehash_secret, 0, rnd);
+ if (cmpxchg(&inet_ehash_secret, 0, rnd) == 0)
+ get_random_bytes(&ipv6_hash_secret, sizeof(ipv6_hash_secret));
}
EXPORT_SYMBOL(build_ehash_secret);
diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c
index 39b403f..0ae2cf1 100644
--- a/net/ipv4/ping.c
+++ b/net/ipv4/ping.c
@@ -320,8 +320,8 @@ void ping_err(struct sk_buff *skb, u32 info)
struct iphdr *iph = (struct iphdr *)skb->data;
struct icmphdr *icmph = (struct icmphdr *)(skb->data+(iph->ihl<<2));
struct inet_sock *inet_sock;
- int type = icmph->type;
- int code = icmph->code;
+ int type = icmp_hdr(skb)->type;
+ int code = icmp_hdr(skb)->code;
struct net *net = dev_net(skb->dev);
struct sock *sk;
int harderr;