mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
Merge branch 'linus' into locking/core, to pick up fixes
Signed-off-by: Ingo Molnar <[email protected]>
This commit is contained in:
commit
10c9850cb2
412 changed files with 3222 additions and 1435 deletions
|
|
@ -1083,15 +1083,17 @@ struct fib_info *fib_create_info(struct fib_config *cfg,
|
|||
fi = kzalloc(sizeof(*fi)+nhs*sizeof(struct fib_nh), GFP_KERNEL);
|
||||
if (!fi)
|
||||
goto failure;
|
||||
fib_info_cnt++;
|
||||
if (cfg->fc_mx) {
|
||||
fi->fib_metrics = kzalloc(sizeof(*fi->fib_metrics), GFP_KERNEL);
|
||||
if (!fi->fib_metrics)
|
||||
goto failure;
|
||||
if (unlikely(!fi->fib_metrics)) {
|
||||
kfree(fi);
|
||||
return ERR_PTR(err);
|
||||
}
|
||||
atomic_set(&fi->fib_metrics->refcnt, 1);
|
||||
} else
|
||||
} else {
|
||||
fi->fib_metrics = (struct dst_metrics *)&dst_default_metrics;
|
||||
|
||||
}
|
||||
fib_info_cnt++;
|
||||
fi->fib_net = net;
|
||||
fi->fib_protocol = cfg->fc_protocol;
|
||||
fi->fib_scope = cfg->fc_scope;
|
||||
|
|
|
|||
|
|
@ -1007,10 +1007,18 @@ int igmp_rcv(struct sk_buff *skb)
|
|||
{
|
||||
/* This basically follows the spec line by line -- see RFC1112 */
|
||||
struct igmphdr *ih;
|
||||
struct in_device *in_dev = __in_dev_get_rcu(skb->dev);
|
||||
struct net_device *dev = skb->dev;
|
||||
struct in_device *in_dev;
|
||||
int len = skb->len;
|
||||
bool dropped = true;
|
||||
|
||||
if (netif_is_l3_master(dev)) {
|
||||
dev = dev_get_by_index_rcu(dev_net(dev), IPCB(skb)->iif);
|
||||
if (!dev)
|
||||
goto drop;
|
||||
}
|
||||
|
||||
in_dev = __in_dev_get_rcu(dev);
|
||||
if (!in_dev)
|
||||
goto drop;
|
||||
|
||||
|
|
|
|||
|
|
@ -1267,7 +1267,7 @@ static unsigned int ipv4_mtu(const struct dst_entry *dst)
|
|||
if (mtu)
|
||||
return mtu;
|
||||
|
||||
mtu = dst->dev->mtu;
|
||||
mtu = READ_ONCE(dst->dev->mtu);
|
||||
|
||||
if (unlikely(dst_metric_locked(dst, RTAX_MTU))) {
|
||||
if (rt->rt_uses_gateway && mtu > 576)
|
||||
|
|
@ -2750,26 +2750,34 @@ static int inet_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh,
|
|||
err = 0;
|
||||
if (IS_ERR(rt))
|
||||
err = PTR_ERR(rt);
|
||||
else
|
||||
skb_dst_set(skb, &rt->dst);
|
||||
}
|
||||
|
||||
if (err)
|
||||
goto errout_free;
|
||||
|
||||
skb_dst_set(skb, &rt->dst);
|
||||
if (rtm->rtm_flags & RTM_F_NOTIFY)
|
||||
rt->rt_flags |= RTCF_NOTIFY;
|
||||
|
||||
if (rtm->rtm_flags & RTM_F_LOOKUP_TABLE)
|
||||
table_id = rt->rt_table_id;
|
||||
|
||||
if (rtm->rtm_flags & RTM_F_FIB_MATCH)
|
||||
if (rtm->rtm_flags & RTM_F_FIB_MATCH) {
|
||||
if (!res.fi) {
|
||||
err = fib_props[res.type].error;
|
||||
if (!err)
|
||||
err = -EHOSTUNREACH;
|
||||
goto errout_free;
|
||||
}
|
||||
err = fib_dump_info(skb, NETLINK_CB(in_skb).portid,
|
||||
nlh->nlmsg_seq, RTM_NEWROUTE, table_id,
|
||||
rt->rt_type, res.prefix, res.prefixlen,
|
||||
fl4.flowi4_tos, res.fi, 0);
|
||||
else
|
||||
} else {
|
||||
err = rt_fill_info(net, dst, src, table_id, &fl4, skb,
|
||||
NETLINK_CB(in_skb).portid, nlh->nlmsg_seq);
|
||||
}
|
||||
if (err < 0)
|
||||
goto errout_free;
|
||||
|
||||
|
|
|
|||
|
|
@ -3009,8 +3009,7 @@ void tcp_rearm_rto(struct sock *sk)
|
|||
/* delta_us may not be positive if the socket is locked
|
||||
* when the retrans timer fires and is rescheduled.
|
||||
*/
|
||||
if (delta_us > 0)
|
||||
rto = usecs_to_jiffies(delta_us);
|
||||
rto = usecs_to_jiffies(max_t(int, delta_us, 1));
|
||||
}
|
||||
inet_csk_reset_xmit_timer(sk, ICSK_TIME_RETRANS, rto,
|
||||
TCP_RTO_MAX);
|
||||
|
|
|
|||
|
|
@ -1722,6 +1722,8 @@ process:
|
|||
*/
|
||||
sock_hold(sk);
|
||||
refcounted = true;
|
||||
if (tcp_filter(sk, skb))
|
||||
goto discard_and_relse;
|
||||
nsk = tcp_check_req(sk, skb, req, false);
|
||||
if (!nsk) {
|
||||
reqsk_put(req);
|
||||
|
|
@ -1729,8 +1731,6 @@ process:
|
|||
}
|
||||
if (nsk == sk) {
|
||||
reqsk_put(req);
|
||||
} else if (tcp_filter(sk, skb)) {
|
||||
goto discard_and_relse;
|
||||
} else if (tcp_child_process(sk, nsk, skb)) {
|
||||
tcp_v4_send_reset(nsk, skb);
|
||||
goto discard_and_relse;
|
||||
|
|
|
|||
|
|
@ -122,14 +122,14 @@ int tcp_set_ulp(struct sock *sk, const char *name)
|
|||
|
||||
ulp_ops = __tcp_ulp_find_autoload(name);
|
||||
if (!ulp_ops)
|
||||
err = -ENOENT;
|
||||
else
|
||||
err = ulp_ops->init(sk);
|
||||
return -ENOENT;
|
||||
|
||||
if (err)
|
||||
goto out;
|
||||
err = ulp_ops->init(sk);
|
||||
if (err) {
|
||||
module_put(ulp_ops->owner);
|
||||
return err;
|
||||
}
|
||||
|
||||
icsk->icsk_ulp_ops = ulp_ops;
|
||||
out:
|
||||
return err;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1574,7 +1574,8 @@ int udp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int noblock,
|
|||
return ip_recv_error(sk, msg, len, addr_len);
|
||||
|
||||
try_again:
|
||||
peeking = off = sk_peek_offset(sk, flags);
|
||||
peeking = flags & MSG_PEEK;
|
||||
off = sk_peek_offset(sk, flags);
|
||||
skb = __skb_recv_udp(sk, flags, noblock, &peeked, &off, &err);
|
||||
if (!skb)
|
||||
return err;
|
||||
|
|
|
|||
Loading…
Reference in a new issue