aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/ipv4/ip_gre.c9
-rw-r--r--net/rds/message.c3
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);