]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - net/ipv4/ping.c
Merge branches 'pm-core', 'pm-qos', 'pm-domains' and 'pm-opp'
[linux.git] / net / ipv4 / ping.c
index 96b8e2b957313d36c0c6d339fb21754d71d691ea..68d77b1f1495bb8dace1f6aa9c0e9a6ee5b2e5dd 100644 (file)
@@ -609,15 +609,15 @@ int ping_getfrag(void *from, char *to,
                fraglen -= sizeof(struct icmphdr);
                if (fraglen < 0)
                        BUG();
-               if (csum_and_copy_from_iter(to + sizeof(struct icmphdr),
+               if (!csum_and_copy_from_iter_full(to + sizeof(struct icmphdr),
                            fraglen, &pfh->wcheck,
-                           &pfh->msg->msg_iter) != fraglen)
+                           &pfh->msg->msg_iter))
                        return -EFAULT;
        } else if (offset < sizeof(struct icmphdr)) {
                        BUG();
        } else {
-               if (csum_and_copy_from_iter(to, fraglen, &pfh->wcheck,
-                                           &pfh->msg->msg_iter) != fraglen)
+               if (!csum_and_copy_from_iter_full(to, fraglen, &pfh->wcheck,
+                                           &pfh->msg->msg_iter))
                        return -EFAULT;
        }
 
@@ -642,6 +642,8 @@ static int ping_v4_push_pending_frames(struct sock *sk, struct pingfakehdr *pfh,
 {
        struct sk_buff *skb = skb_peek(&sk->sk_write_queue);
 
+       if (!skb)
+               return 0;
        pfh->wcheck = csum_partial((char *)&pfh->icmph,
                sizeof(struct icmphdr), pfh->wcheck);
        pfh->icmph.checksum = csum_fold(pfh->wcheck);
@@ -793,7 +795,8 @@ static int ping_v4_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
 
        flowi4_init_output(&fl4, ipc.oif, sk->sk_mark, tos,
                           RT_SCOPE_UNIVERSE, sk->sk_protocol,
-                          inet_sk_flowi_flags(sk), faddr, saddr, 0, 0);
+                          inet_sk_flowi_flags(sk), faddr, saddr, 0, 0,
+                          sk->sk_uid);
 
        security_sk_classify_flow(sk, flowi4_to_flowi(&fl4));
        rt = ip_route_output_flow(net, &fl4, sk);