]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - net/ipv4/udp.c
net: merge cases where sock_efree and sock_edemux are the same function
[karo-tx-linux.git] / net / ipv4 / udp.c
index 32f9571e776b8237ef612cc9b183eb655191a2b2..cd0db5471bb5eb6048208404aab71253867e1eec 100644 (file)
@@ -99,6 +99,7 @@
 #include <linux/slab.h>
 #include <net/tcp_states.h>
 #include <linux/skbuff.h>
+#include <linux/netdevice.h>
 #include <linux/proc_fs.h>
 #include <linux/seq_file.h>
 #include <net/net_namespace.h>
@@ -1787,6 +1788,10 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
        if (sk != NULL) {
                int ret;
 
+               if (udp_sk(sk)->convert_csum && uh->check && !IS_UDPLITE(sk))
+                       skb_checksum_try_convert(skb, IPPROTO_UDP, uh->check,
+                                                inet_compute_pseudo);
+
                ret = udp_queue_rcv_skb(sk, skb);
                sock_put(sk);
 
@@ -1967,7 +1972,7 @@ void udp_v4_early_demux(struct sk_buff *skb)
                return;
 
        skb->sk = sk;
-       skb->destructor = sock_edemux;
+       skb->destructor = sock_efree;
        dst = sk->sk_rx_dst;
 
        if (dst)