diff options
Diffstat (limited to 'net/core')
| -rw-r--r-- | net/core/dev.c | 4 | ||||
| -rw-r--r-- | net/core/filter.c | 21 | 
2 files changed, 6 insertions, 19 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 57b7bab5f70b..a5aa1c7444e6 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -8643,7 +8643,8 @@ int dev_change_net_namespace(struct net_device *dev, struct net *net, const char  		/* We get here if we can't use the current device name */  		if (!pat)  			goto out; -		if (dev_get_valid_name(net, dev, pat) < 0) +		err = dev_get_valid_name(net, dev, pat); +		if (err < 0)  			goto out;  	} @@ -8655,7 +8656,6 @@ int dev_change_net_namespace(struct net_device *dev, struct net *net, const char  	dev_close(dev);  	/* And unlink it from device chain */ -	err = -ENODEV;  	unlist_netdevice(dev);  	synchronize_net(); diff --git a/net/core/filter.c b/net/core/filter.c index 3d9ba7e5965a..e7f12e9f598c 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -3214,20 +3214,6 @@ err:  }  EXPORT_SYMBOL_GPL(xdp_do_redirect); -static int __xdp_generic_ok_fwd_dev(struct sk_buff *skb, struct net_device *fwd) -{ -	unsigned int len; - -	if (unlikely(!(fwd->flags & IFF_UP))) -		return -ENETDOWN; - -	len = fwd->mtu + fwd->hard_header_len + VLAN_HLEN; -	if (skb->len > len) -		return -EMSGSIZE; - -	return 0; -} -  static int xdp_do_generic_redirect_map(struct net_device *dev,  				       struct sk_buff *skb,  				       struct xdp_buff *xdp, @@ -3256,10 +3242,11 @@ static int xdp_do_generic_redirect_map(struct net_device *dev,  	}  	if (map->map_type == BPF_MAP_TYPE_DEVMAP) { -		if (unlikely((err = __xdp_generic_ok_fwd_dev(skb, fwd)))) +		struct bpf_dtab_netdev *dst = fwd; + +		err = dev_map_generic_redirect(dst, skb, xdp_prog); +		if (unlikely(err))  			goto err; -		skb->dev = fwd; -		generic_xdp_tx(skb, xdp_prog);  	} else if (map->map_type == BPF_MAP_TYPE_XSKMAP) {  		struct xdp_sock *xs = fwd;  | 
