--- zzzz-none-000/linux-4.1.38/net/ipv4/udp.c 2017-01-18 18:48:06.000000000 +0000 +++ bcm63-7582-715/linux-4.1.38/net/ipv4/udp.c 2020-11-25 10:06:48.000000000 +0000 @@ -1264,6 +1264,9 @@ int peeked, off = 0; int err; int is_udplite = IS_UDPLITE(sk); +#if defined(CONFIG_BCM_KF_MISC_BACKPORTS) + bool checksum_valid = false; +#endif bool slow; if (flags & MSG_ERRQUEUE) @@ -1289,11 +1292,22 @@ */ if (copied < ulen || UDP_SKB_CB(skb)->partial_cov) { +#if defined(CONFIG_BCM_KF_MISC_BACKPORTS) +/*CVE-2016-10229*/ + checksum_valid = !udp_lib_checksum_complete(skb); + if (!checksum_valid) +#else if (udp_lib_checksum_complete(skb)) +#endif goto csum_copy_err; } +#if defined(CONFIG_BCM_KF_MISC_BACKPORTS) +/*CVE-2016-10229*/ + if (checksum_valid || skb_csum_unnecessary(skb)) +#else if (skb_csum_unnecessary(skb)) +#endif err = skb_copy_datagram_msg(skb, sizeof(struct udphdr), msg, copied); else {