Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: drivers/net/ethernet/rocker/rocker.c The rocker commit was two overlapping changes, one to rename the ->vport member to ->pport, and another making the bitmask expression use '1ULL' instead of plain '1'. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -946,7 +946,7 @@ bool dev_valid_name(const char *name)
|
||||
return false;
|
||||
|
||||
while (*name) {
|
||||
if (*name == '/' || isspace(*name))
|
||||
if (*name == '/' || *name == ':' || isspace(*name))
|
||||
return false;
|
||||
name++;
|
||||
}
|
||||
|
@@ -98,6 +98,7 @@ static const char netdev_features_strings[NETDEV_FEATURE_COUNT][ETH_GSTRING_LEN]
|
||||
[NETIF_F_RXALL_BIT] = "rx-all",
|
||||
[NETIF_F_HW_L2FW_DOFFLOAD_BIT] = "l2-fwd-offload",
|
||||
[NETIF_F_BUSY_POLL_BIT] = "busy-poll",
|
||||
[NETIF_F_HW_SWITCH_OFFLOAD_BIT] = "hw-switch-offload",
|
||||
};
|
||||
|
||||
static const char
|
||||
|
@@ -32,6 +32,9 @@ gnet_stats_copy(struct gnet_dump *d, int type, void *buf, int size)
|
||||
return 0;
|
||||
|
||||
nla_put_failure:
|
||||
kfree(d->xstats);
|
||||
d->xstats = NULL;
|
||||
d->xstats_len = 0;
|
||||
spin_unlock_bh(d->lock);
|
||||
return -1;
|
||||
}
|
||||
@@ -305,7 +308,9 @@ int
|
||||
gnet_stats_copy_app(struct gnet_dump *d, void *st, int len)
|
||||
{
|
||||
if (d->compat_xstats) {
|
||||
d->xstats = st;
|
||||
d->xstats = kmemdup(st, len, GFP_ATOMIC);
|
||||
if (!d->xstats)
|
||||
goto err_out;
|
||||
d->xstats_len = len;
|
||||
}
|
||||
|
||||
@@ -313,6 +318,11 @@ gnet_stats_copy_app(struct gnet_dump *d, void *st, int len)
|
||||
return gnet_stats_copy(d, TCA_STATS_APP, st, len);
|
||||
|
||||
return 0;
|
||||
|
||||
err_out:
|
||||
d->xstats_len = 0;
|
||||
spin_unlock_bh(d->lock);
|
||||
return -1;
|
||||
}
|
||||
EXPORT_SYMBOL(gnet_stats_copy_app);
|
||||
|
||||
@@ -345,6 +355,9 @@ gnet_stats_finish_copy(struct gnet_dump *d)
|
||||
return -1;
|
||||
}
|
||||
|
||||
kfree(d->xstats);
|
||||
d->xstats = NULL;
|
||||
d->xstats_len = 0;
|
||||
spin_unlock_bh(d->lock);
|
||||
return 0;
|
||||
}
|
||||
|
@@ -1134,6 +1134,9 @@ static ssize_t pktgen_if_write(struct file *file,
|
||||
return len;
|
||||
|
||||
i += len;
|
||||
if ((value > 1) &&
|
||||
(!(pkt_dev->odev->priv_flags & IFF_TX_SKB_SHARING)))
|
||||
return -ENOTSUPP;
|
||||
pkt_dev->burst = value < 1 ? 1 : value;
|
||||
sprintf(pg_result, "OK: burst=%d", pkt_dev->burst);
|
||||
return count;
|
||||
|
@@ -1300,7 +1300,6 @@ static int rtnl_dump_ifinfo(struct sk_buff *skb, struct netlink_callback *cb)
|
||||
s_h = cb->args[0];
|
||||
s_idx = cb->args[1];
|
||||
|
||||
rcu_read_lock();
|
||||
cb->seq = net->dev_base_seq;
|
||||
|
||||
/* A hack to preserve kernel<->userspace interface.
|
||||
@@ -1322,7 +1321,7 @@ static int rtnl_dump_ifinfo(struct sk_buff *skb, struct netlink_callback *cb)
|
||||
for (h = s_h; h < NETDEV_HASHENTRIES; h++, s_idx = 0) {
|
||||
idx = 0;
|
||||
head = &net->dev_index_head[h];
|
||||
hlist_for_each_entry_rcu(dev, head, index_hlist) {
|
||||
hlist_for_each_entry(dev, head, index_hlist) {
|
||||
if (idx < s_idx)
|
||||
goto cont;
|
||||
err = rtnl_fill_ifinfo(skb, dev, RTM_NEWLINK,
|
||||
@@ -1344,7 +1343,6 @@ cont:
|
||||
}
|
||||
}
|
||||
out:
|
||||
rcu_read_unlock();
|
||||
cb->args[1] = idx;
|
||||
cb->args[0] = h;
|
||||
|
||||
@@ -2012,8 +2010,8 @@ replay:
|
||||
}
|
||||
|
||||
if (1) {
|
||||
struct nlattr *attr[ops ? ops->maxtype + 1 : 0];
|
||||
struct nlattr *slave_attr[m_ops ? m_ops->slave_maxtype + 1 : 0];
|
||||
struct nlattr *attr[ops ? ops->maxtype + 1 : 1];
|
||||
struct nlattr *slave_attr[m_ops ? m_ops->slave_maxtype + 1 : 1];
|
||||
struct nlattr **data = NULL;
|
||||
struct nlattr **slave_data = NULL;
|
||||
struct net *dest_net, *link_net = NULL;
|
||||
@@ -2122,6 +2120,10 @@ replay:
|
||||
if (IS_ERR(dest_net))
|
||||
return PTR_ERR(dest_net);
|
||||
|
||||
err = -EPERM;
|
||||
if (!netlink_ns_capable(skb, dest_net->user_ns, CAP_NET_ADMIN))
|
||||
goto out;
|
||||
|
||||
if (tb[IFLA_LINK_NETNSID]) {
|
||||
int id = nla_get_s32(tb[IFLA_LINK_NETNSID]);
|
||||
|
||||
@@ -2130,6 +2132,9 @@ replay:
|
||||
err = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
err = -EPERM;
|
||||
if (!netlink_ns_capable(skb, link_net->user_ns, CAP_NET_ADMIN))
|
||||
goto out;
|
||||
}
|
||||
|
||||
dev = rtnl_create_link(link_net ? : dest_net, ifname,
|
||||
|
@@ -3620,13 +3620,14 @@ struct sk_buff *sock_dequeue_err_skb(struct sock *sk)
|
||||
{
|
||||
struct sk_buff_head *q = &sk->sk_error_queue;
|
||||
struct sk_buff *skb, *skb_next;
|
||||
unsigned long flags;
|
||||
int err = 0;
|
||||
|
||||
spin_lock_bh(&q->lock);
|
||||
spin_lock_irqsave(&q->lock, flags);
|
||||
skb = __skb_dequeue(q);
|
||||
if (skb && (skb_next = skb_peek(q)))
|
||||
err = SKB_EXT_ERR(skb_next)->ee.ee_errno;
|
||||
spin_unlock_bh(&q->lock);
|
||||
spin_unlock_irqrestore(&q->lock, flags);
|
||||
|
||||
sk->sk_err = err;
|
||||
if (err)
|
||||
|
Reference in New Issue
Block a user