]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blobdiff - include/net/sock.h
udp: properly cope with csum errors
[mirror_ubuntu-zesty-kernel.git] / include / net / sock.h
index e17aa3de2b4d2134760b778855f899e1d6a81c75..c4f5e6fca17cf4e0029080410202cb66ce0fad37 100644 (file)
@@ -1836,13 +1836,13 @@ static inline int skb_do_copy_data_nocache(struct sock *sk, struct sk_buff *skb,
 {
        if (skb->ip_summed == CHECKSUM_NONE) {
                __wsum csum = 0;
-               if (csum_and_copy_from_iter(to, copy, &csum, from) != copy)
+               if (!csum_and_copy_from_iter_full(to, copy, &csum, from))
                        return -EFAULT;
                skb->csum = csum_block_add(skb->csum, csum, offset);
        } else if (sk->sk_route_caps & NETIF_F_NOCACHE_COPY) {
-               if (copy_from_iter_nocache(to, copy, from) != copy)
+               if (!copy_from_iter_full_nocache(to, copy, from))
                        return -EFAULT;
-       } else if (copy_from_iter(to, copy, from) != copy)
+       } else if (!copy_from_iter_full(to, copy, from))
                return -EFAULT;
 
        return 0;
@@ -2006,7 +2006,9 @@ void sk_reset_timer(struct sock *sk, struct timer_list *timer,
 void sk_stop_timer(struct sock *sk, struct timer_list *timer);
 
 int __sk_queue_drop_skb(struct sock *sk, struct sk_buff *skb,
-                       unsigned int flags);
+                       unsigned int flags,
+                       void (*destructor)(struct sock *sk,
+                                          struct sk_buff *skb));
 int __sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb);
 int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb);
 
@@ -2193,8 +2195,8 @@ sock_recv_timestamp(struct msghdr *msg, struct sock *sk, struct sk_buff *skb)
         */
        if (sock_flag(sk, SOCK_RCVTSTAMP) ||
            (sk->sk_tsflags & SOF_TIMESTAMPING_RX_SOFTWARE) ||
-           (kt.tv64 && sk->sk_tsflags & SOF_TIMESTAMPING_SOFTWARE) ||
-           (hwtstamps->hwtstamp.tv64 &&
+           (kt && sk->sk_tsflags & SOF_TIMESTAMPING_SOFTWARE) ||
+           (hwtstamps->hwtstamp &&
             (sk->sk_tsflags & SOF_TIMESTAMPING_RAW_HARDWARE)))
                __sock_recv_timestamp(msg, sk, skb);
        else