diff options
Diffstat (limited to 'net')
| -rw-r--r-- | net/ipv4/ip_gre.c | 9 | ||||
| -rw-r--r-- | net/rds/message.c | 3 |
2 files changed, 7 insertions, 5 deletions
diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c index ac8491245e5b..4f4bf5b99686 100644 --- a/net/ipv4/ip_gre.c +++ b/net/ipv4/ip_gre.c | |||
| @@ -252,10 +252,6 @@ static netdev_tx_t ipgre_xmit(struct sk_buff *skb, | |||
| 252 | struct ip_tunnel *tunnel = netdev_priv(dev); | 252 | struct ip_tunnel *tunnel = netdev_priv(dev); |
| 253 | const struct iphdr *tnl_params; | 253 | const struct iphdr *tnl_params; |
| 254 | 254 | ||
| 255 | skb = gre_handle_offloads(skb, !!(tunnel->parms.o_flags&TUNNEL_CSUM)); | ||
| 256 | if (IS_ERR(skb)) | ||
| 257 | goto out; | ||
| 258 | |||
| 259 | if (dev->header_ops) { | 255 | if (dev->header_ops) { |
| 260 | /* Need space for new headers */ | 256 | /* Need space for new headers */ |
| 261 | if (skb_cow_head(skb, dev->needed_headroom - | 257 | if (skb_cow_head(skb, dev->needed_headroom - |
| @@ -268,6 +264,7 @@ static netdev_tx_t ipgre_xmit(struct sk_buff *skb, | |||
| 268 | * to gre header. | 264 | * to gre header. |
| 269 | */ | 265 | */ |
| 270 | skb_pull(skb, tunnel->hlen + sizeof(struct iphdr)); | 266 | skb_pull(skb, tunnel->hlen + sizeof(struct iphdr)); |
| 267 | skb_reset_mac_header(skb); | ||
| 271 | } else { | 268 | } else { |
| 272 | if (skb_cow_head(skb, dev->needed_headroom)) | 269 | if (skb_cow_head(skb, dev->needed_headroom)) |
| 273 | goto free_skb; | 270 | goto free_skb; |
| @@ -275,6 +272,10 @@ static netdev_tx_t ipgre_xmit(struct sk_buff *skb, | |||
| 275 | tnl_params = &tunnel->parms.iph; | 272 | tnl_params = &tunnel->parms.iph; |
| 276 | } | 273 | } |
| 277 | 274 | ||
| 275 | skb = gre_handle_offloads(skb, !!(tunnel->parms.o_flags&TUNNEL_CSUM)); | ||
| 276 | if (IS_ERR(skb)) | ||
| 277 | goto out; | ||
| 278 | |||
| 278 | __gre_xmit(skb, dev, tnl_params, skb->protocol); | 279 | __gre_xmit(skb, dev, tnl_params, skb->protocol); |
| 279 | 280 | ||
| 280 | return NETDEV_TX_OK; | 281 | return NETDEV_TX_OK; |
diff --git a/net/rds/message.c b/net/rds/message.c index ff2202218187..5a21e6f5986f 100644 --- a/net/rds/message.c +++ b/net/rds/message.c | |||
| @@ -325,7 +325,8 @@ int rds_message_inc_copy_to_user(struct rds_incoming *inc, struct iov_iter *to) | |||
| 325 | copied = 0; | 325 | copied = 0; |
| 326 | 326 | ||
| 327 | while (iov_iter_count(to) && copied < len) { | 327 | while (iov_iter_count(to) && copied < len) { |
| 328 | to_copy = min(iov_iter_count(to), sg->length - vec_off); | 328 | to_copy = min_t(unsigned long, iov_iter_count(to), |
| 329 | sg->length - vec_off); | ||
| 329 | to_copy = min_t(unsigned long, to_copy, len - copied); | 330 | to_copy = min_t(unsigned long, to_copy, len - copied); |
| 330 | 331 | ||
| 331 | rds_stats_add(s_copy_to_user, to_copy); | 332 | rds_stats_add(s_copy_to_user, to_copy); |
