Merge branch 'percpu-for-linus' into percpu-for-next
Conflicts: arch/sparc/kernel/smp_64.c arch/x86/kernel/cpu/perf_counter.c arch/x86/kernel/setup_percpu.c drivers/cpufreq/cpufreq_ondemand.c mm/percpu.c Conflicts in core and arch percpu codes are mostly from commit ed78e1e078dd44249f88b1dd8c76dafb39567161 which substituted many num_possible_cpus() with nr_cpu_ids. As for-next branch has moved all the first chunk allocators into mm/percpu.c, the changes are moved from arch code to mm/percpu.c. Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
@@ -1916,8 +1916,32 @@ ok:
|
||||
update_lft = 1;
|
||||
else if (stored_lft <= MIN_VALID_LIFETIME) {
|
||||
/* valid_lft <= stored_lft is always true */
|
||||
/* XXX: IPsec */
|
||||
update_lft = 0;
|
||||
/*
|
||||
* RFC 4862 Section 5.5.3e:
|
||||
* "Note that the preferred lifetime of
|
||||
* the corresponding address is always
|
||||
* reset to the Preferred Lifetime in
|
||||
* the received Prefix Information
|
||||
* option, regardless of whether the
|
||||
* valid lifetime is also reset or
|
||||
* ignored."
|
||||
*
|
||||
* So if the preferred lifetime in
|
||||
* this advertisement is different
|
||||
* than what we have stored, but the
|
||||
* valid lifetime is invalid, just
|
||||
* reset prefered_lft.
|
||||
*
|
||||
* We must set the valid lifetime
|
||||
* to the stored lifetime since we'll
|
||||
* be updating the timestamp below,
|
||||
* else we'll set it back to the
|
||||
* minumum.
|
||||
*/
|
||||
if (prefered_lft != ifp->prefered_lft) {
|
||||
valid_lft = stored_lft;
|
||||
update_lft = 1;
|
||||
}
|
||||
} else {
|
||||
valid_lft = MIN_VALID_LIFETIME;
|
||||
if (valid_lft < prefered_lft)
|
||||
@@ -3085,7 +3109,7 @@ restart:
|
||||
spin_unlock(&ifp->lock);
|
||||
continue;
|
||||
} else if (age >= ifp->prefered_lft) {
|
||||
/* jiffies - ifp->tsamp > age >= ifp->prefered_lft */
|
||||
/* jiffies - ifp->tstamp > age >= ifp->prefered_lft */
|
||||
int deprecate = 0;
|
||||
|
||||
if (!(ifp->flags&IFA_F_DEPRECATED)) {
|
||||
|
@@ -1484,7 +1484,6 @@ int ip6_push_pending_frames(struct sock *sk)
|
||||
skb->len += tmp_skb->len;
|
||||
skb->data_len += tmp_skb->len;
|
||||
skb->truesize += tmp_skb->truesize;
|
||||
__sock_put(tmp_skb->sk);
|
||||
tmp_skb->destructor = NULL;
|
||||
tmp_skb->sk = NULL;
|
||||
}
|
||||
|
@@ -1018,6 +1018,7 @@ static void ipip6_tunnel_setup(struct net_device *dev)
|
||||
dev->hard_header_len = LL_MAX_HEADER + sizeof(struct iphdr);
|
||||
dev->mtu = ETH_DATA_LEN - sizeof(struct iphdr);
|
||||
dev->flags = IFF_NOARP;
|
||||
dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
|
||||
dev->iflink = 0;
|
||||
dev->addr_len = 4;
|
||||
dev->features |= NETIF_F_NETNS_LOCAL;
|
||||
|
@@ -896,6 +896,7 @@ struct request_sock_ops tcp6_request_sock_ops __read_mostly = {
|
||||
#ifdef CONFIG_TCP_MD5SIG
|
||||
static struct tcp_request_sock_ops tcp_request_sock_ipv6_ops = {
|
||||
.md5_lookup = tcp_v6_reqsk_md5_lookup,
|
||||
.calc_md5_hash = tcp_v6_md5_hash_skb,
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -1441,7 +1442,7 @@ static struct sock * tcp_v6_syn_recv_sock(struct sock *sk, struct sk_buff *skb,
|
||||
*/
|
||||
char *newkey = kmemdup(key->key, key->keylen, GFP_ATOMIC);
|
||||
if (newkey != NULL)
|
||||
tcp_v6_md5_do_add(newsk, &inet6_sk(sk)->daddr,
|
||||
tcp_v6_md5_do_add(newsk, &newnp->daddr,
|
||||
newkey, key->keylen);
|
||||
}
|
||||
#endif
|
||||
|
@@ -157,7 +157,8 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl, int reverse)
|
||||
ipv6_addr_copy(&fl->fl6_dst, reverse ? &hdr->saddr : &hdr->daddr);
|
||||
ipv6_addr_copy(&fl->fl6_src, reverse ? &hdr->daddr : &hdr->saddr);
|
||||
|
||||
while (pskb_may_pull(skb, nh + offset + 1 - skb->data)) {
|
||||
while (nh + offset + 1 < skb->data ||
|
||||
pskb_may_pull(skb, nh + offset + 1 - skb->data)) {
|
||||
nh = skb_network_header(skb);
|
||||
exthdr = (struct ipv6_opt_hdr *)(nh + offset);
|
||||
|
||||
@@ -177,7 +178,8 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl, int reverse)
|
||||
case IPPROTO_TCP:
|
||||
case IPPROTO_SCTP:
|
||||
case IPPROTO_DCCP:
|
||||
if (!onlyproto && pskb_may_pull(skb, nh + offset + 4 - skb->data)) {
|
||||
if (!onlyproto && (nh + offset + 4 < skb->data ||
|
||||
pskb_may_pull(skb, nh + offset + 4 - skb->data))) {
|
||||
__be16 *ports = (__be16 *)exthdr;
|
||||
|
||||
fl->fl_ip_sport = ports[!!reverse];
|
||||
|
Reference in New Issue
Block a user