Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflict resolution of af_smc.c from Stephen Rothwell. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -1184,7 +1184,21 @@ int dev_change_name(struct net_device *dev, const char *newname)
|
||||
BUG_ON(!dev_net(dev));
|
||||
|
||||
net = dev_net(dev);
|
||||
if (dev->flags & IFF_UP)
|
||||
|
||||
/* Some auto-enslaved devices e.g. failover slaves are
|
||||
* special, as userspace might rename the device after
|
||||
* the interface had been brought up and running since
|
||||
* the point kernel initiated auto-enslavement. Allow
|
||||
* live name change even when these slave devices are
|
||||
* up and running.
|
||||
*
|
||||
* Typically, users of these auto-enslaving devices
|
||||
* don't actually care about slave name change, as
|
||||
* they are supposed to operate on master interface
|
||||
* directly.
|
||||
*/
|
||||
if (dev->flags & IFF_UP &&
|
||||
likely(!(dev->priv_flags & IFF_LIVE_RENAME_OK)))
|
||||
return -EBUSY;
|
||||
|
||||
write_seqcount_begin(&devnet_rename_seq);
|
||||
|
@@ -80,14 +80,14 @@ static int failover_slave_register(struct net_device *slave_dev)
|
||||
goto err_upper_link;
|
||||
}
|
||||
|
||||
slave_dev->priv_flags |= IFF_FAILOVER_SLAVE;
|
||||
slave_dev->priv_flags |= (IFF_FAILOVER_SLAVE | IFF_LIVE_RENAME_OK);
|
||||
|
||||
if (fops && fops->slave_register &&
|
||||
!fops->slave_register(slave_dev, failover_dev))
|
||||
return NOTIFY_OK;
|
||||
|
||||
netdev_upper_dev_unlink(slave_dev, failover_dev);
|
||||
slave_dev->priv_flags &= ~IFF_FAILOVER_SLAVE;
|
||||
slave_dev->priv_flags &= ~(IFF_FAILOVER_SLAVE | IFF_LIVE_RENAME_OK);
|
||||
err_upper_link:
|
||||
netdev_rx_handler_unregister(slave_dev);
|
||||
done:
|
||||
@@ -121,7 +121,7 @@ int failover_slave_unregister(struct net_device *slave_dev)
|
||||
|
||||
netdev_rx_handler_unregister(slave_dev);
|
||||
netdev_upper_dev_unlink(slave_dev, failover_dev);
|
||||
slave_dev->priv_flags &= ~IFF_FAILOVER_SLAVE;
|
||||
slave_dev->priv_flags &= ~(IFF_FAILOVER_SLAVE | IFF_LIVE_RENAME_OK);
|
||||
|
||||
if (fops && fops->slave_unregister &&
|
||||
!fops->slave_unregister(slave_dev, failover_dev))
|
||||
|
@@ -4462,6 +4462,8 @@ BPF_CALL_3(bpf_bind, struct bpf_sock_addr_kern *, ctx, struct sockaddr *, addr,
|
||||
* Only binding to IP is supported.
|
||||
*/
|
||||
err = -EINVAL;
|
||||
if (addr_len < offsetofend(struct sockaddr, sa_family))
|
||||
return err;
|
||||
if (addr->sa_family == AF_INET) {
|
||||
if (addr_len < sizeof(struct sockaddr_in))
|
||||
return err;
|
||||
|
@@ -1747,20 +1747,16 @@ int netdev_register_kobject(struct net_device *ndev)
|
||||
|
||||
error = device_add(dev);
|
||||
if (error)
|
||||
goto error_put_device;
|
||||
return error;
|
||||
|
||||
error = register_queue_kobjects(ndev);
|
||||
if (error)
|
||||
goto error_device_del;
|
||||
if (error) {
|
||||
device_del(dev);
|
||||
return error;
|
||||
}
|
||||
|
||||
pm_runtime_set_memalloc_noio(dev, true);
|
||||
|
||||
return 0;
|
||||
|
||||
error_device_del:
|
||||
device_del(dev);
|
||||
error_put_device:
|
||||
put_device(dev);
|
||||
return error;
|
||||
}
|
||||
|
||||
|
@@ -185,9 +185,10 @@ void __init ptp_classifier_init(void)
|
||||
{ 0x16, 0, 0, 0x00000000 },
|
||||
{ 0x06, 0, 0, 0x00000000 },
|
||||
};
|
||||
struct sock_fprog_kern ptp_prog = {
|
||||
.len = ARRAY_SIZE(ptp_filter), .filter = ptp_filter,
|
||||
};
|
||||
struct sock_fprog_kern ptp_prog;
|
||||
|
||||
ptp_prog.len = ARRAY_SIZE(ptp_filter);
|
||||
ptp_prog.filter = ptp_filter;
|
||||
|
||||
BUG_ON(bpf_prog_create(&ptp_insns, &ptp_prog));
|
||||
}
|
||||
|
@@ -4951,7 +4951,7 @@ static int rtnl_valid_stats_req(const struct nlmsghdr *nlh, bool strict_check,
|
||||
{
|
||||
struct if_stats_msg *ifsm;
|
||||
|
||||
if (nlh->nlmsg_len < sizeof(*ifsm)) {
|
||||
if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*ifsm))) {
|
||||
NL_SET_ERR_MSG(extack, "Invalid header for stats dump");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
@@ -5082,7 +5082,8 @@ EXPORT_SYMBOL_GPL(skb_gso_validate_mac_len);
|
||||
|
||||
static struct sk_buff *skb_reorder_vlan_header(struct sk_buff *skb)
|
||||
{
|
||||
int mac_len;
|
||||
int mac_len, meta_len;
|
||||
void *meta;
|
||||
|
||||
if (skb_cow(skb, skb_headroom(skb)) < 0) {
|
||||
kfree_skb(skb);
|
||||
@@ -5094,6 +5095,13 @@ static struct sk_buff *skb_reorder_vlan_header(struct sk_buff *skb)
|
||||
memmove(skb_mac_header(skb) + VLAN_HLEN, skb_mac_header(skb),
|
||||
mac_len - VLAN_HLEN - ETH_TLEN);
|
||||
}
|
||||
|
||||
meta_len = skb_metadata_len(skb);
|
||||
if (meta_len) {
|
||||
meta = skb_metadata_end(skb) - meta_len;
|
||||
memmove(meta + VLAN_HLEN, meta, meta_len);
|
||||
}
|
||||
|
||||
skb->mac_header += VLAN_HLEN;
|
||||
return skb;
|
||||
}
|
||||
|
@@ -348,7 +348,7 @@ static int sock_get_timeout(long timeo, void *optval, bool old_timeval)
|
||||
tv.tv_usec = ((timeo % HZ) * USEC_PER_SEC) / HZ;
|
||||
}
|
||||
|
||||
if (in_compat_syscall() && !COMPAT_USE_64BIT_TIME) {
|
||||
if (old_timeval && in_compat_syscall() && !COMPAT_USE_64BIT_TIME) {
|
||||
struct old_timeval32 tv32 = { tv.tv_sec, tv.tv_usec };
|
||||
*(struct old_timeval32 *)optval = tv32;
|
||||
return sizeof(tv32);
|
||||
@@ -372,7 +372,7 @@ static int sock_set_timeout(long *timeo_p, char __user *optval, int optlen, bool
|
||||
{
|
||||
struct __kernel_sock_timeval tv;
|
||||
|
||||
if (in_compat_syscall() && !COMPAT_USE_64BIT_TIME) {
|
||||
if (old_timeval && in_compat_syscall() && !COMPAT_USE_64BIT_TIME) {
|
||||
struct old_timeval32 tv32;
|
||||
|
||||
if (optlen < sizeof(tv32))
|
||||
|
Reference in New Issue
Block a user