aboutsummaryrefslogtreecommitdiffstats
path: root/net/core
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2019-02-20 03:34:07 -0500
committerDavid S. Miller <davem@davemloft.net>2019-02-20 03:34:07 -0500
commit375ca548f7e3ac82acdd0959eddd1fa0e17c35cc (patch)
tree5360dc427e4eff7123613419ee522b7fda831de0 /net/core
parent58066ac9d7f5dcde4ef08c03b7e127f0522d9ea0 (diff)
parent40e196a906d969fd10d885c692d2674b3d657006 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Two easily resolvable overlapping change conflicts, one in TCP and one in the eBPF verifier. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core')
-rw-r--r--net/core/dev.c4
-rw-r--r--net/core/filter.c12
-rw-r--r--net/core/skbuff.c4
3 files changed, 10 insertions, 10 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index ecbe419e05ab..a3d13f5e2bfc 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -8215,7 +8215,7 @@ static netdev_features_t netdev_sync_upper_features(struct net_device *lower,
8215 netdev_features_t feature; 8215 netdev_features_t feature;
8216 int feature_bit; 8216 int feature_bit;
8217 8217
8218 for_each_netdev_feature(&upper_disables, feature_bit) { 8218 for_each_netdev_feature(upper_disables, feature_bit) {
8219 feature = __NETIF_F_BIT(feature_bit); 8219 feature = __NETIF_F_BIT(feature_bit);
8220 if (!(upper->wanted_features & feature) 8220 if (!(upper->wanted_features & feature)
8221 && (features & feature)) { 8221 && (features & feature)) {
@@ -8235,7 +8235,7 @@ static void netdev_sync_lower_features(struct net_device *upper,
8235 netdev_features_t feature; 8235 netdev_features_t feature;
8236 int feature_bit; 8236 int feature_bit;
8237 8237
8238 for_each_netdev_feature(&upper_disables, feature_bit) { 8238 for_each_netdev_feature(upper_disables, feature_bit) {
8239 feature = __NETIF_F_BIT(feature_bit); 8239 feature = __NETIF_F_BIT(feature_bit);
8240 if (!(features & feature) && (lower->features & feature)) { 8240 if (!(features & feature) && (lower->features & feature)) {
8241 netdev_dbg(upper, "Disabling feature %pNF on lower dev %s.\n", 8241 netdev_dbg(upper, "Disabling feature %pNF on lower dev %s.\n",
diff --git a/net/core/filter.c b/net/core/filter.c
index b584cb42a803..5132c054c981 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -2804,8 +2804,7 @@ static int bpf_skb_proto_4_to_6(struct sk_buff *skb)
2804 u32 off = skb_mac_header_len(skb); 2804 u32 off = skb_mac_header_len(skb);
2805 int ret; 2805 int ret;
2806 2806
2807 /* SCTP uses GSO_BY_FRAGS, thus cannot adjust it. */ 2807 if (!skb_is_gso_tcp(skb))
2808 if (skb_is_gso(skb) && unlikely(skb_is_gso_sctp(skb)))
2809 return -ENOTSUPP; 2808 return -ENOTSUPP;
2810 2809
2811 ret = skb_cow(skb, len_diff); 2810 ret = skb_cow(skb, len_diff);
@@ -2846,8 +2845,7 @@ static int bpf_skb_proto_6_to_4(struct sk_buff *skb)
2846 u32 off = skb_mac_header_len(skb); 2845 u32 off = skb_mac_header_len(skb);
2847 int ret; 2846 int ret;
2848 2847
2849 /* SCTP uses GSO_BY_FRAGS, thus cannot adjust it. */ 2848 if (!skb_is_gso_tcp(skb))
2850 if (skb_is_gso(skb) && unlikely(skb_is_gso_sctp(skb)))
2851 return -ENOTSUPP; 2849 return -ENOTSUPP;
2852 2850
2853 ret = skb_unclone(skb, GFP_ATOMIC); 2851 ret = skb_unclone(skb, GFP_ATOMIC);
@@ -2972,8 +2970,7 @@ static int bpf_skb_net_grow(struct sk_buff *skb, u32 len_diff)
2972 u32 off = skb_mac_header_len(skb) + bpf_skb_net_base_len(skb); 2970 u32 off = skb_mac_header_len(skb) + bpf_skb_net_base_len(skb);
2973 int ret; 2971 int ret;
2974 2972
2975 /* SCTP uses GSO_BY_FRAGS, thus cannot adjust it. */ 2973 if (!skb_is_gso_tcp(skb))
2976 if (skb_is_gso(skb) && unlikely(skb_is_gso_sctp(skb)))
2977 return -ENOTSUPP; 2974 return -ENOTSUPP;
2978 2975
2979 ret = skb_cow(skb, len_diff); 2976 ret = skb_cow(skb, len_diff);
@@ -3002,8 +2999,7 @@ static int bpf_skb_net_shrink(struct sk_buff *skb, u32 len_diff)
3002 u32 off = skb_mac_header_len(skb) + bpf_skb_net_base_len(skb); 2999 u32 off = skb_mac_header_len(skb) + bpf_skb_net_base_len(skb);
3003 int ret; 3000 int ret;
3004 3001
3005 /* SCTP uses GSO_BY_FRAGS, thus cannot adjust it. */ 3002 if (!skb_is_gso_tcp(skb))
3006 if (skb_is_gso(skb) && unlikely(skb_is_gso_sctp(skb)))
3007 return -ENOTSUPP; 3003 return -ENOTSUPP;
3008 3004
3009 ret = skb_unclone(skb, GFP_ATOMIC); 3005 ret = skb_unclone(skb, GFP_ATOMIC);
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 26d848484912..2415d9cb9b89 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -356,6 +356,8 @@ static void *__netdev_alloc_frag(unsigned int fragsz, gfp_t gfp_mask)
356 */ 356 */
357void *netdev_alloc_frag(unsigned int fragsz) 357void *netdev_alloc_frag(unsigned int fragsz)
358{ 358{
359 fragsz = SKB_DATA_ALIGN(fragsz);
360
359 return __netdev_alloc_frag(fragsz, GFP_ATOMIC); 361 return __netdev_alloc_frag(fragsz, GFP_ATOMIC);
360} 362}
361EXPORT_SYMBOL(netdev_alloc_frag); 363EXPORT_SYMBOL(netdev_alloc_frag);
@@ -369,6 +371,8 @@ static void *__napi_alloc_frag(unsigned int fragsz, gfp_t gfp_mask)
369 371
370void *napi_alloc_frag(unsigned int fragsz) 372void *napi_alloc_frag(unsigned int fragsz)
371{ 373{
374 fragsz = SKB_DATA_ALIGN(fragsz);
375
372 return __napi_alloc_frag(fragsz, GFP_ATOMIC); 376 return __napi_alloc_frag(fragsz, GFP_ATOMIC);
373} 377}
374EXPORT_SYMBOL(napi_alloc_frag); 378EXPORT_SYMBOL(napi_alloc_frag);