diff options
author | Anthony G. Basile <blueness@gentoo.org> | 2013-11-23 19:35:55 -0500 |
---|---|---|
committer | Anthony G. Basile <blueness@gentoo.org> | 2013-11-23 19:35:55 -0500 |
commit | b707a73b9216a4d4250d663a0eecd44b05c6cb61 (patch) | |
tree | b360e1a81c9e18e24da4a9a92090fd9e2b20d061 | |
parent | Grsec/PaX: 2.9.1-{3.2.52,3.11.8}-201311182333 (diff) | |
download | hardened-patchset-20131122.tar.gz hardened-patchset-20131122.tar.bz2 hardened-patchset-20131122.zip |
Grsec/PaX: 2.9.1-{3.2.52,3.11.9}-20131122213720131122
-rw-r--r-- | 3.11.9/0000_README (renamed from 3.11.8/0000_README) | 2 | ||||
-rw-r--r-- | 3.11.9/4420_grsecurity-2.9.1-3.11.9-201311222137.patch (renamed from 3.11.8/4420_grsecurity-2.9.1-3.11.8-201311182333.patch) | 267 | ||||
-rw-r--r-- | 3.11.9/4425_grsec_remove_EI_PAX.patch (renamed from 3.11.8/4425_grsec_remove_EI_PAX.patch) | 0 | ||||
-rw-r--r-- | 3.11.9/4427_force_XATTR_PAX_tmpfs.patch (renamed from 3.11.8/4427_force_XATTR_PAX_tmpfs.patch) | 0 | ||||
-rw-r--r-- | 3.11.9/4430_grsec-remove-localversion-grsec.patch (renamed from 3.11.8/4430_grsec-remove-localversion-grsec.patch) | 0 | ||||
-rw-r--r-- | 3.11.9/4435_grsec-mute-warnings.patch (renamed from 3.11.8/4435_grsec-mute-warnings.patch) | 0 | ||||
-rw-r--r-- | 3.11.9/4440_grsec-remove-protected-paths.patch (renamed from 3.11.8/4440_grsec-remove-protected-paths.patch) | 0 | ||||
-rw-r--r-- | 3.11.9/4450_grsec-kconfig-default-gids.patch (renamed from 3.11.8/4450_grsec-kconfig-default-gids.patch) | 0 | ||||
-rw-r--r-- | 3.11.9/4465_selinux-avc_audit-log-curr_ip.patch (renamed from 3.11.8/4465_selinux-avc_audit-log-curr_ip.patch) | 0 | ||||
-rw-r--r-- | 3.11.9/4470_disable-compat_vdso.patch (renamed from 3.11.8/4470_disable-compat_vdso.patch) | 0 | ||||
-rw-r--r-- | 3.11.9/4475_emutramp_default_on.patch (renamed from 3.11.8/4475_emutramp_default_on.patch) | 0 | ||||
-rw-r--r-- | 3.2.52/0000_README | 2 | ||||
-rw-r--r-- | 3.2.52/4420_grsecurity-2.9.1-3.2.52-201311222106.patch (renamed from 3.2.52/4420_grsecurity-2.9.1-3.2.52-201311182331.patch) | 193 |
13 files changed, 66 insertions, 398 deletions
diff --git a/3.11.8/0000_README b/3.11.9/0000_README index 6ebbbb4..f24611c 100644 --- a/3.11.8/0000_README +++ b/3.11.9/0000_README @@ -2,7 +2,7 @@ README ----------------------------------------------------------------------------- Individual Patch Descriptions: ----------------------------------------------------------------------------- -Patch: 4420_grsecurity-2.9.1-3.11.8-201311182333.patch +Patch: 4420_grsecurity-2.9.1-3.11.9-201311222137.patch From: http://www.grsecurity.net Desc: hardened-sources base patch from upstream grsecurity diff --git a/3.11.8/4420_grsecurity-2.9.1-3.11.8-201311182333.patch b/3.11.9/4420_grsecurity-2.9.1-3.11.9-201311222137.patch index 729744d..0fbfd44 100644 --- a/3.11.8/4420_grsecurity-2.9.1-3.11.8-201311182333.patch +++ b/3.11.9/4420_grsecurity-2.9.1-3.11.9-201311222137.patch @@ -281,7 +281,7 @@ index 7f9d4f5..6d1afd6 100644 pcd. [PARIDE] diff --git a/Makefile b/Makefile -index 7521adb..7279565 100644 +index 06379bd..abdd9a8 100644 --- a/Makefile +++ b/Makefile @@ -241,8 +241,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ @@ -39577,7 +39577,7 @@ index d84918f..7f38f9f 100644 /* * Represents channel interrupts. Each bit position represents a diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c -index e8e071f..5b4b245 100644 +index e8e071fc1..5b4b245 100644 --- a/drivers/hv/vmbus_drv.c +++ b/drivers/hv/vmbus_drv.c @@ -672,10 +672,10 @@ int vmbus_device_register(struct hv_device *child_device_obj) @@ -43883,19 +43883,6 @@ index 8cffcdf..aadf043 100644 #define L2T_SKB_CB(skb) ((struct l2t_skb_cb *)(skb)->cb) -diff --git a/drivers/net/ethernet/chelsio/cxgb3/sge.c b/drivers/net/ethernet/chelsio/cxgb3/sge.c -index 9c89dc8..725ecc3 100644 ---- a/drivers/net/ethernet/chelsio/cxgb3/sge.c -+++ b/drivers/net/ethernet/chelsio/cxgb3/sge.c -@@ -1599,7 +1599,7 @@ static void write_ofld_wr(struct adapter *adap, struct sk_buff *skb, - flits = skb_transport_offset(skb) / 8; - sgp = ndesc == 1 ? (struct sg_ent *)&d->flit[flits] : sgl; - sgl_flits = make_sgl(skb, sgp, skb_transport_header(skb), -- skb->tail - skb->transport_header, -+ skb_tail_pointer(skb) - skb_transport_header(skb), - adap->pdev); - if (need_skb_unmap()) { - setup_deferred_unmapping(skb, adap->pdev, sgp, sgl_flits); diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c index 5a3256b..60f16d8 100644 --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c @@ -49025,10 +49012,10 @@ index 2a3bbdf..91d72cf 100644 file->f_version = event_count; return POLLIN | POLLRDNORM; diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c -index 014dc99..4d25fd7 100644 +index 7b8bc0b..31bd7ad 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c -@@ -1551,7 +1551,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags) +@@ -1552,7 +1552,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags) */ usb_get_urb(urb); atomic_inc(&urb->use_count); @@ -49037,7 +49024,7 @@ index 014dc99..4d25fd7 100644 usbmon_urb_submit(&hcd->self, urb); /* NOTE requirements on root-hub callers (usbfs and the hub -@@ -1578,7 +1578,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags) +@@ -1579,7 +1579,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags) urb->hcpriv = NULL; INIT_LIST_HEAD(&urb->urb_list); atomic_dec(&urb->use_count); @@ -49047,7 +49034,7 @@ index 014dc99..4d25fd7 100644 wake_up(&usb_kill_urb_queue); usb_put_urb(urb); diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c -index 17c3785..deffb11 100644 +index 1c11089..db98d78 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -27,6 +27,7 @@ @@ -49058,7 +49045,7 @@ index 17c3785..deffb11 100644 #include <asm/uaccess.h> #include <asm/byteorder.h> -@@ -4421,6 +4422,10 @@ static void hub_port_connect_change(struct usb_hub *hub, int port1, +@@ -4433,6 +4434,10 @@ static void hub_port_connect_change(struct usb_hub *hub, int port1, goto done; return; } @@ -49536,7 +49523,7 @@ index 36e1fe2..c744820 100644 if (!registered_fb[con2fb.framebuffer]) request_module("fb%d", con2fb.framebuffer); diff --git a/drivers/video/hyperv_fb.c b/drivers/video/hyperv_fb.c -index d4d2c5f..ebbd113 100644 +index 0f3b33c..b4304eb 100644 --- a/drivers/video/hyperv_fb.c +++ b/drivers/video/hyperv_fb.c @@ -233,7 +233,7 @@ static uint screen_fb_size; @@ -84983,10 +84970,10 @@ index cc2f66f..05edd54 100644 *data_page = bpage; diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c -index 496f94d..754aeea 100644 +index 207f5fc..ff41c9b 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c -@@ -3335,7 +3335,7 @@ int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set) +@@ -3338,7 +3338,7 @@ int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set) return 0; } @@ -91637,19 +91624,6 @@ index dfa602c..3103d88 100644 if (!IS_ERR(flo)) fle->object = flo; else -diff --git a/net/core/flow_dissector.c b/net/core/flow_dissector.c -index 52d0f83..4a1d064 100644 ---- a/net/core/flow_dissector.c -+++ b/net/core/flow_dissector.c -@@ -40,7 +40,7 @@ again: - struct iphdr _iph; - ip: - iph = skb_header_pointer(skb, nhoff, sizeof(_iph), &_iph); -- if (!iph) -+ if (!iph || iph->ihl < 5) - return false; - - if (ip_is_fragment(iph)) diff --git a/net/core/iovec.c b/net/core/iovec.c index de178e4..1dabd8b 100644 --- a/net/core/iovec.c @@ -92145,21 +92119,6 @@ index 3b9d5f2..d7015c6 100644 /* replace the top byte with new ECN | DSCP format */ *hc06_ptr = tmp; hc06_ptr += 4; -diff --git a/net/ieee802154/dgram.c b/net/ieee802154/dgram.c -index 581a595..1865fdf 100644 ---- a/net/ieee802154/dgram.c -+++ b/net/ieee802154/dgram.c -@@ -315,9 +315,8 @@ static int dgram_recvmsg(struct kiocb *iocb, struct sock *sk, - if (saddr) { - saddr->family = AF_IEEE802154; - saddr->addr = mac_cb(skb)->sa; -- } -- if (addr_len) - *addr_len = sizeof(*saddr); -+ } - - if (flags & MSG_TRUNC) - copied = skb->len; diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c index dd6b523..dfe558f 100644 --- a/net/ipv4/af_inet.c @@ -92684,7 +92643,7 @@ index cbc2215..9cb993c 100644 /* copy_len <= skb->len, so can't fail. */ if (skb_copy_bits(skb, 0, pm->payload, copy_len) < 0) diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c -index 746427c..a4b35c2 100644 +index 746427c..a73be71 100644 --- a/net/ipv4/ping.c +++ b/net/ipv4/ping.c @@ -55,7 +55,7 @@ @@ -92723,28 +92682,7 @@ index 746427c..a4b35c2 100644 info, (u8 *)icmph); #endif } -@@ -827,8 +827,6 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, - { - struct inet_sock *isk = inet_sk(sk); - int family = sk->sk_family; -- struct sockaddr_in *sin; -- struct sockaddr_in6 *sin6; - struct sk_buff *skb; - int copied, err; - -@@ -838,19 +836,12 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, - if (flags & MSG_OOB) - goto out; - -- if (addr_len) { -- if (family == AF_INET) -- *addr_len = sizeof(*sin); -- else if (family == AF_INET6 && addr_len) -- *addr_len = sizeof(*sin6); -- } -- - if (flags & MSG_ERRQUEUE) { - if (family == AF_INET) { +@@ -850,7 +850,7 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, return ip_recv_error(sk, msg, len); #if IS_ENABLED(CONFIG_IPV6) } else if (family == AF_INET6) { @@ -92753,7 +92691,7 @@ index 746427c..a4b35c2 100644 #endif } } -@@ -874,11 +865,15 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, +@@ -874,11 +874,14 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, /* Copy the address and add cmsg data. */ if (family == AF_INET) { @@ -92769,12 +92707,11 @@ index 746427c..a4b35c2 100644 + sin->sin_port = 0 /* skb->h.uh->source */; + sin->sin_addr.s_addr = ip_hdr(skb)->saddr; + memset(sin->sin_zero, 0, sizeof(sin->sin_zero)); -+ *addr_len = sizeof(*sin); + } if (isk->cmsg_flags) ip_cmsg_recv(msg, skb); -@@ -887,20 +882,24 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, +@@ -887,20 +890,23 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, } else if (family == AF_INET6) { struct ipv6_pinfo *np = inet6_sk(sk); struct ipv6hdr *ip6 = ipv6_hdr(skb); @@ -92801,7 +92738,6 @@ index 746427c..a4b35c2 100644 + sin6->sin6_scope_id = + ipv6_iface_scope_id(&sin6->sin6_addr, + IP6CB(skb)->iif); -+ *addr_len = sizeof(*sin6); + } if (inet6_sk(sk)->rxopt.all) @@ -92810,7 +92746,7 @@ index 746427c..a4b35c2 100644 #endif } else { BUG(); -@@ -1090,7 +1089,7 @@ static void ping_v4_format_sock(struct sock *sp, struct seq_file *f, +@@ -1090,7 +1096,7 @@ static void ping_v4_format_sock(struct sock *sp, struct seq_file *f, from_kuid_munged(seq_user_ns(f), sock_i_uid(sp)), 0, sock_i_ino(sp), atomic_read(&sp->sk_refcnt), sp, @@ -92820,7 +92756,7 @@ index 746427c..a4b35c2 100644 static int ping_v4_seq_show(struct seq_file *seq, void *v) diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c -index 6fb2337..0442cca 100644 +index 6fb2337..9cd6b20 100644 --- a/net/ipv4/raw.c +++ b/net/ipv4/raw.c @@ -309,7 +309,7 @@ static int raw_rcv_skb(struct sock *sk, struct sk_buff *skb) @@ -92832,25 +92768,7 @@ index 6fb2337..0442cca 100644 kfree_skb(skb); return NET_RX_DROP; } -@@ -692,9 +692,6 @@ static int raw_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, - if (flags & MSG_OOB) - goto out; - -- if (addr_len) -- *addr_len = sizeof(*sin); -- - if (flags & MSG_ERRQUEUE) { - err = ip_recv_error(sk, msg, len); - goto out; -@@ -722,6 +719,7 @@ static int raw_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, - sin->sin_addr.s_addr = ip_hdr(skb)->saddr; - sin->sin_port = 0; - memset(&sin->sin_zero, 0, sizeof(sin->sin_zero)); -+ *addr_len = sizeof(*sin); - } - if (inet->cmsg_flags) - ip_cmsg_recv(msg, skb); -@@ -746,16 +744,20 @@ static int raw_init(struct sock *sk) +@@ -746,16 +746,20 @@ static int raw_init(struct sock *sk) static int raw_seticmpfilter(struct sock *sk, char __user *optval, int optlen) { @@ -92872,7 +92790,7 @@ index 6fb2337..0442cca 100644 if (get_user(len, optlen)) goto out; -@@ -765,8 +767,8 @@ static int raw_geticmpfilter(struct sock *sk, char __user *optval, int __user *o +@@ -765,8 +769,8 @@ static int raw_geticmpfilter(struct sock *sk, char __user *optval, int __user *o if (len > sizeof(struct icmp_filter)) len = sizeof(struct icmp_filter); ret = -EFAULT; @@ -92883,7 +92801,7 @@ index 6fb2337..0442cca 100644 goto out; ret = 0; out: return ret; -@@ -995,7 +997,7 @@ static void raw_sock_seq_show(struct seq_file *seq, struct sock *sp, int i) +@@ -995,7 +999,7 @@ static void raw_sock_seq_show(struct seq_file *seq, struct sock *sp, int i) 0, 0L, 0, from_kuid_munged(seq_user_ns(seq), sock_i_uid(sp)), 0, sock_i_ino(sp), @@ -93257,7 +93175,7 @@ index 4b85e6f..22f9ac9 100644 syn_set ? 0 : icsk->icsk_user_timeout, syn_set)) { /* Has it gone just too far? */ diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c -index 766e6ba..57db761 100644 +index 766e6ba..aff2f8d 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -87,6 +87,7 @@ @@ -93317,20 +93235,7 @@ index 766e6ba..57db761 100644 __skb_unlink(skb, rcvq); __skb_queue_tail(&list_kill, skb); } -@@ -1208,12 +1225,6 @@ int udp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, - int is_udplite = IS_UDPLITE(sk); - bool slow; - -- /* -- * Check any passed addresses -- */ -- if (addr_len) -- *addr_len = sizeof(*sin); -- - if (flags & MSG_ERRQUEUE) - return ip_recv_error(sk, msg, len); - -@@ -1223,6 +1234,10 @@ try_again: +@@ -1223,6 +1240,10 @@ try_again: if (!skb) goto out; @@ -93341,7 +93246,7 @@ index 766e6ba..57db761 100644 ulen = skb->len - sizeof(struct udphdr); copied = len; if (copied > ulen) -@@ -1256,7 +1271,7 @@ try_again: +@@ -1256,7 +1277,7 @@ try_again: if (unlikely(err)) { trace_kfree_skb(skb, udp_recvmsg); if (!peeked) { @@ -93350,15 +93255,7 @@ index 766e6ba..57db761 100644 UDP_INC_STATS_USER(sock_net(sk), UDP_MIB_INERRORS, is_udplite); } -@@ -1275,6 +1290,7 @@ try_again: - sin->sin_port = udp_hdr(skb)->source; - sin->sin_addr.s_addr = ip_hdr(skb)->saddr; - memset(sin->sin_zero, 0, sizeof(sin->sin_zero)); -+ *addr_len = sizeof(*sin); - } - if (inet->cmsg_flags) - ip_cmsg_recv(msg, skb); -@@ -1543,7 +1559,7 @@ csum_error: +@@ -1543,7 +1564,7 @@ csum_error: UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite); drop: UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite); @@ -93367,7 +93264,7 @@ index 766e6ba..57db761 100644 kfree_skb(skb); return -1; } -@@ -1562,7 +1578,7 @@ static void flush_stack(struct sock **stack, unsigned int count, +@@ -1562,7 +1583,7 @@ static void flush_stack(struct sock **stack, unsigned int count, skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC); if (!skb1) { @@ -93376,7 +93273,7 @@ index 766e6ba..57db761 100644 UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS, IS_UDPLITE(sk)); UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, -@@ -1734,6 +1750,9 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, +@@ -1734,6 +1755,9 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, goto csum_error; UDP_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE); @@ -93386,7 +93283,7 @@ index 766e6ba..57db761 100644 icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0); /* -@@ -2166,7 +2185,7 @@ static void udp4_format_sock(struct sock *sp, struct seq_file *f, +@@ -2166,7 +2190,7 @@ static void udp4_format_sock(struct sock *sp, struct seq_file *f, from_kuid_munged(seq_user_ns(f), sock_i_uid(sp)), 0, sock_i_ino(sp), atomic_read(&sp->sk_refcnt), sp, @@ -93783,7 +93680,7 @@ index 18f19df..b46ada1 100644 unregister_pernet_subsys(&ping_v6_net_ops); #endif diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c -index cdaed47..0650c7f 100644 +index cdaed47..515edde9 100644 --- a/net/ipv6/raw.c +++ b/net/ipv6/raw.c @@ -108,7 +108,7 @@ found: @@ -93822,25 +93719,7 @@ index cdaed47..0650c7f 100644 kfree_skb(skb); return NET_RX_DROP; } -@@ -459,9 +459,6 @@ static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk, - if (flags & MSG_OOB) - return -EOPNOTSUPP; - -- if (addr_len) -- *addr_len=sizeof(*sin6); -- - if (flags & MSG_ERRQUEUE) - return ipv6_recv_error(sk, msg, len); - -@@ -500,6 +497,7 @@ static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk, - sin6->sin6_flowinfo = 0; - sin6->sin6_scope_id = ipv6_iface_scope_id(&sin6->sin6_addr, - IP6CB(skb)->iif); -+ *addr_len = sizeof(*sin6); - } - - sock_recv_ts_and_drops(msg, sk, skb); -@@ -602,7 +600,7 @@ out: +@@ -602,7 +602,7 @@ out: return err; } @@ -93849,7 +93728,7 @@ index cdaed47..0650c7f 100644 struct flowi6 *fl6, struct dst_entry **dstp, unsigned int flags) { -@@ -915,12 +913,15 @@ do_confirm: +@@ -915,12 +915,15 @@ do_confirm: static int rawv6_seticmpfilter(struct sock *sk, int level, int optname, char __user *optval, int optlen) { @@ -93866,7 +93745,7 @@ index cdaed47..0650c7f 100644 return 0; default: return -ENOPROTOOPT; -@@ -933,6 +934,7 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname, +@@ -933,6 +936,7 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname, char __user *optval, int __user *optlen) { int len; @@ -93874,7 +93753,7 @@ index cdaed47..0650c7f 100644 switch (optname) { case ICMPV6_FILTER: -@@ -944,7 +946,8 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname, +@@ -944,7 +948,8 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname, len = sizeof(struct icmp6_filter); if (put_user(len, optlen)) return -EFAULT; @@ -93927,10 +93806,10 @@ index 1aeb473..bea761c 100644 return -ENOMEM; } diff --git a/net/ipv6/route.c b/net/ipv6/route.c -index 1e32d5c..cbe3b46 100644 +index c9bd97b..a15506e 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c -@@ -2954,7 +2954,7 @@ struct ctl_table ipv6_route_table_template[] = { +@@ -2957,7 +2957,7 @@ struct ctl_table ipv6_route_table_template[] = { struct ctl_table * __net_init ipv6_route_sysctl_init(struct net *net) { @@ -94043,7 +93922,7 @@ index 6e1649d..75ddb4c 100644 } diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c -index f405815..8f25d2a 100644 +index f405815..45a68a6 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c @@ -53,6 +53,10 @@ @@ -94057,17 +93936,7 @@ index f405815..8f25d2a 100644 int ipv6_rcv_saddr_equal(const struct sock *sk, const struct sock *sk2) { const struct in6_addr *sk_rcv_saddr6 = &inet6_sk(sk)->rcv_saddr; -@@ -374,9 +378,6 @@ int udpv6_recvmsg(struct kiocb *iocb, struct sock *sk, - int is_udp4; - bool slow; - -- if (addr_len) -- *addr_len = sizeof(struct sockaddr_in6); -- - if (flags & MSG_ERRQUEUE) - return ipv6_recv_error(sk, msg, len); - -@@ -420,7 +421,7 @@ try_again: +@@ -420,7 +424,7 @@ try_again: if (unlikely(err)) { trace_kfree_skb(skb, udpv6_recvmsg); if (!peeked) { @@ -94076,16 +93945,7 @@ index f405815..8f25d2a 100644 if (is_udp4) UDP_INC_STATS_USER(sock_net(sk), UDP_MIB_INERRORS, -@@ -462,7 +463,7 @@ try_again: - ipv6_iface_scope_id(&sin6->sin6_addr, - IP6CB(skb)->iif); - } -- -+ *addr_len = sizeof(*sin6); - } - if (is_udp4) { - if (inet->cmsg_flags) -@@ -666,7 +667,7 @@ csum_error: +@@ -666,7 +670,7 @@ csum_error: UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite); drop: UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite); @@ -94094,7 +93954,7 @@ index f405815..8f25d2a 100644 kfree_skb(skb); return -1; } -@@ -724,7 +725,7 @@ static void flush_stack(struct sock **stack, unsigned int count, +@@ -724,7 +728,7 @@ static void flush_stack(struct sock **stack, unsigned int count, if (likely(skb1 == NULL)) skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC); if (!skb1) { @@ -94103,7 +93963,7 @@ index f405815..8f25d2a 100644 UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS, IS_UDPLITE(sk)); UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, -@@ -864,6 +865,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, +@@ -864,6 +868,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, goto csum_error; UDP6_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE); @@ -94323,28 +94183,6 @@ index b076e83..793e6ff 100644 struct udphdr *uh = udp_hdr(skb); u16 ulen = ntohs(uh->len); __wsum psum; -diff --git a/net/l2tp/l2tp_ip.c b/net/l2tp/l2tp_ip.c -index 571db8d..da1a1ce 100644 ---- a/net/l2tp/l2tp_ip.c -+++ b/net/l2tp/l2tp_ip.c -@@ -518,9 +518,6 @@ static int l2tp_ip_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *m - if (flags & MSG_OOB) - goto out; - -- if (addr_len) -- *addr_len = sizeof(*sin); -- - skb = skb_recv_datagram(sk, flags, noblock, &err); - if (!skb) - goto out; -@@ -543,6 +540,7 @@ static int l2tp_ip_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *m - sin->sin_addr.s_addr = ip_hdr(skb)->saddr; - sin->sin_port = 0; - memset(&sin->sin_zero, 0, sizeof(sin->sin_zero)); -+ *addr_len = sizeof(*sin); - } - if (inet->cmsg_flags) - ip_cmsg_recv(msg, skb); diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index a4b2154..b2fef6f 100644 --- a/net/mac80211/cfg.c @@ -95269,33 +95107,6 @@ index 75c8bbf..ee9be59 100644 return -EFAULT; return 0; } -diff --git a/net/phonet/datagram.c b/net/phonet/datagram.c -index 12c30f3..38946b2 100644 ---- a/net/phonet/datagram.c -+++ b/net/phonet/datagram.c -@@ -139,9 +139,6 @@ static int pn_recvmsg(struct kiocb *iocb, struct sock *sk, - MSG_CMSG_COMPAT)) - goto out_nofree; - -- if (addr_len) -- *addr_len = sizeof(sa); -- - skb = skb_recv_datagram(sk, flags, noblock, &rval); - if (skb == NULL) - goto out_nofree; -@@ -162,8 +159,10 @@ static int pn_recvmsg(struct kiocb *iocb, struct sock *sk, - - rval = (flags & MSG_TRUNC) ? skb->len : copylen; - -- if (msg->msg_name != NULL) -- memcpy(msg->msg_name, &sa, sizeof(struct sockaddr_pn)); -+ if (msg->msg_name != NULL) { -+ memcpy(msg->msg_name, &sa, sizeof(sa)); -+ *addr_len = sizeof(sa); -+ } - - out: - skb_free_datagram(sk, skb); diff --git a/net/phonet/pep.c b/net/phonet/pep.c index e774117..900b8b7 100644 --- a/net/phonet/pep.c @@ -95868,7 +95679,7 @@ index 4a17494d..f7e3fa0 100644 static int sctp_v4_protosw_init(void) diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c -index 9da6885..7571898 100644 +index 8b5b4b7..2636327 100644 --- a/net/sctp/sm_sideeffect.c +++ b/net/sctp/sm_sideeffect.c @@ -446,7 +446,7 @@ static void sctp_generate_sack_event(unsigned long data) diff --git a/3.11.8/4425_grsec_remove_EI_PAX.patch b/3.11.9/4425_grsec_remove_EI_PAX.patch index cf65d90..cf65d90 100644 --- a/3.11.8/4425_grsec_remove_EI_PAX.patch +++ b/3.11.9/4425_grsec_remove_EI_PAX.patch diff --git a/3.11.8/4427_force_XATTR_PAX_tmpfs.patch b/3.11.9/4427_force_XATTR_PAX_tmpfs.patch index 23e60cd..23e60cd 100644 --- a/3.11.8/4427_force_XATTR_PAX_tmpfs.patch +++ b/3.11.9/4427_force_XATTR_PAX_tmpfs.patch diff --git a/3.11.8/4430_grsec-remove-localversion-grsec.patch b/3.11.9/4430_grsec-remove-localversion-grsec.patch index 31cf878..31cf878 100644 --- a/3.11.8/4430_grsec-remove-localversion-grsec.patch +++ b/3.11.9/4430_grsec-remove-localversion-grsec.patch diff --git a/3.11.8/4435_grsec-mute-warnings.patch b/3.11.9/4435_grsec-mute-warnings.patch index ed941d5..ed941d5 100644 --- a/3.11.8/4435_grsec-mute-warnings.patch +++ b/3.11.9/4435_grsec-mute-warnings.patch diff --git a/3.11.8/4440_grsec-remove-protected-paths.patch b/3.11.9/4440_grsec-remove-protected-paths.patch index 05710b1..05710b1 100644 --- a/3.11.8/4440_grsec-remove-protected-paths.patch +++ b/3.11.9/4440_grsec-remove-protected-paths.patch diff --git a/3.11.8/4450_grsec-kconfig-default-gids.patch b/3.11.9/4450_grsec-kconfig-default-gids.patch index b50114e..b50114e 100644 --- a/3.11.8/4450_grsec-kconfig-default-gids.patch +++ b/3.11.9/4450_grsec-kconfig-default-gids.patch diff --git a/3.11.8/4465_selinux-avc_audit-log-curr_ip.patch b/3.11.9/4465_selinux-avc_audit-log-curr_ip.patch index b26c0b4..b26c0b4 100644 --- a/3.11.8/4465_selinux-avc_audit-log-curr_ip.patch +++ b/3.11.9/4465_selinux-avc_audit-log-curr_ip.patch diff --git a/3.11.8/4470_disable-compat_vdso.patch b/3.11.9/4470_disable-compat_vdso.patch index 4572f4f..4572f4f 100644 --- a/3.11.8/4470_disable-compat_vdso.patch +++ b/3.11.9/4470_disable-compat_vdso.patch diff --git a/3.11.8/4475_emutramp_default_on.patch b/3.11.9/4475_emutramp_default_on.patch index 30f6978..30f6978 100644 --- a/3.11.8/4475_emutramp_default_on.patch +++ b/3.11.9/4475_emutramp_default_on.patch diff --git a/3.2.52/0000_README b/3.2.52/0000_README index 7c3a2df..18cef6b 100644 --- a/3.2.52/0000_README +++ b/3.2.52/0000_README @@ -126,7 +126,7 @@ Patch: 1051_linux-3.2.52.patch From: http://www.kernel.org Desc: Linux 3.2.52 -Patch: 4420_grsecurity-2.9.1-3.2.52-201311182331.patch +Patch: 4420_grsecurity-2.9.1-3.2.52-201311222106.patch From: http://www.grsecurity.net Desc: hardened-sources base patch from upstream grsecurity diff --git a/3.2.52/4420_grsecurity-2.9.1-3.2.52-201311182331.patch b/3.2.52/4420_grsecurity-2.9.1-3.2.52-201311222106.patch index 4de7864..1102a6d 100644 --- a/3.2.52/4420_grsecurity-2.9.1-3.2.52-201311182331.patch +++ b/3.2.52/4420_grsecurity-2.9.1-3.2.52-201311222106.patch @@ -93672,28 +93672,10 @@ index b550815..c3b44d5 100644 /* copy_len <= skb->len, so can't fail. */ if (skb_copy_bits(skb, 0, pm->payload, copy_len) < 0) diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c -index 294a380..1c57436 100644 +index 294a380..885a292 100644 --- a/net/ipv4/ping.c +++ b/net/ipv4/ping.c -@@ -632,9 +632,6 @@ static int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, - if (flags & MSG_OOB) - goto out; - -- if (addr_len) -- *addr_len = sizeof(*sin); -- - if (flags & MSG_ERRQUEUE) - return ip_recv_error(sk, msg, len); - -@@ -661,6 +658,7 @@ static int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, - sin->sin_port = 0 /* skb->h.uh->source */; - sin->sin_addr.s_addr = ip_hdr(skb)->saddr; - memset(sin->sin_zero, 0, sizeof(sin->sin_zero)); -+ *addr_len = sizeof(*sin); - } - if (isk->cmsg_flags) - ip_cmsg_recv(msg, skb); -@@ -836,7 +834,7 @@ static void ping_format_sock(struct sock *sp, struct seq_file *f, +@@ -836,7 +836,7 @@ static void ping_format_sock(struct sock *sp, struct seq_file *f, sk_rmem_alloc_get(sp), 0, 0L, 0, sock_i_uid(sp), 0, sock_i_ino(sp), atomic_read(&sp->sk_refcnt), sp, @@ -93716,7 +93698,7 @@ index f7fdbe9..63740b7 100644 .exit = ip_proc_exit_net, }; diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c -index 2815014..41f6720 100644 +index 2815014..1d39ae6 100644 --- a/net/ipv4/raw.c +++ b/net/ipv4/raw.c @@ -305,7 +305,7 @@ static int raw_rcv_skb(struct sock * sk, struct sk_buff * skb) @@ -93728,25 +93710,7 @@ index 2815014..41f6720 100644 kfree_skb(skb); return NET_RX_DROP; } -@@ -686,9 +686,6 @@ static int raw_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, - if (flags & MSG_OOB) - goto out; - -- if (addr_len) -- *addr_len = sizeof(*sin); -- - if (flags & MSG_ERRQUEUE) { - err = ip_recv_error(sk, msg, len); - goto out; -@@ -716,6 +713,7 @@ static int raw_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, - sin->sin_addr.s_addr = ip_hdr(skb)->saddr; - sin->sin_port = 0; - memset(&sin->sin_zero, 0, sizeof(sin->sin_zero)); -+ *addr_len = sizeof(*sin); - } - if (inet->cmsg_flags) - ip_cmsg_recv(msg, skb); -@@ -740,16 +738,20 @@ static int raw_init(struct sock *sk) +@@ -740,16 +740,20 @@ static int raw_init(struct sock *sk) static int raw_seticmpfilter(struct sock *sk, char __user *optval, int optlen) { @@ -93768,7 +93732,7 @@ index 2815014..41f6720 100644 if (get_user(len, optlen)) goto out; -@@ -759,8 +761,8 @@ static int raw_geticmpfilter(struct sock *sk, char __user *optval, int __user *o +@@ -759,8 +763,8 @@ static int raw_geticmpfilter(struct sock *sk, char __user *optval, int __user *o if (len > sizeof(struct icmp_filter)) len = sizeof(struct icmp_filter); ret = -EFAULT; @@ -93779,7 +93743,7 @@ index 2815014..41f6720 100644 goto out; ret = 0; out: return ret; -@@ -988,7 +990,13 @@ static void raw_sock_seq_show(struct seq_file *seq, struct sock *sp, int i) +@@ -988,7 +992,13 @@ static void raw_sock_seq_show(struct seq_file *seq, struct sock *sp, int i) sk_wmem_alloc_get(sp), sk_rmem_alloc_get(sp), 0, 0L, 0, sock_i_uid(sp), 0, sock_i_ino(sp), @@ -93794,7 +93758,7 @@ index 2815014..41f6720 100644 } static int raw_seq_show(struct seq_file *seq, void *v) -@@ -1051,7 +1059,7 @@ static __net_exit void raw_exit_net(struct net *net) +@@ -1051,7 +1061,7 @@ static __net_exit void raw_exit_net(struct net *net) proc_net_remove(net, "raw"); } @@ -94304,7 +94268,7 @@ index 2e0f0af..e2948bf 100644 syn_set ? 0 : icsk->icsk_user_timeout, syn_set)) { /* Has it gone just too far? */ diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c -index 5decc93..99c588f 100644 +index 5decc93..79830d4 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -86,6 +86,7 @@ @@ -94364,20 +94328,7 @@ index 5decc93..99c588f 100644 __skb_unlink(skb, rcvq); __skb_queue_tail(&list_kill, skb); } -@@ -1171,12 +1188,6 @@ int udp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, - int is_udplite = IS_UDPLITE(sk); - bool slow; - -- /* -- * Check any passed addresses -- */ -- if (addr_len) -- *addr_len = sizeof(*sin); -- - if (flags & MSG_ERRQUEUE) - return ip_recv_error(sk, msg, len); - -@@ -1186,6 +1197,10 @@ try_again: +@@ -1186,6 +1203,10 @@ try_again: if (!skb) goto out; @@ -94388,15 +94339,7 @@ index 5decc93..99c588f 100644 ulen = skb->len - sizeof(struct udphdr); copied = len; if (copied > ulen) -@@ -1231,6 +1246,7 @@ try_again: - sin->sin_port = udp_hdr(skb)->source; - sin->sin_addr.s_addr = ip_hdr(skb)->saddr; - memset(sin->sin_zero, 0, sizeof(sin->sin_zero)); -+ *addr_len = sizeof(*sin); - } - if (inet->cmsg_flags) - ip_cmsg_recv(msg, skb); -@@ -1488,7 +1504,7 @@ int udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) +@@ -1488,7 +1509,7 @@ int udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) drop: UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite); @@ -94405,7 +94348,7 @@ index 5decc93..99c588f 100644 kfree_skb(skb); return -1; } -@@ -1507,7 +1523,7 @@ static void flush_stack(struct sock **stack, unsigned int count, +@@ -1507,7 +1528,7 @@ static void flush_stack(struct sock **stack, unsigned int count, skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC); if (!skb1) { @@ -94414,7 +94357,7 @@ index 5decc93..99c588f 100644 UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS, IS_UDPLITE(sk)); UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, -@@ -1676,6 +1692,9 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, +@@ -1676,6 +1697,9 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, goto csum_error; UDP_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE); @@ -94424,7 +94367,7 @@ index 5decc93..99c588f 100644 icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0); /* -@@ -2099,8 +2118,13 @@ static void udp4_format_sock(struct sock *sp, struct seq_file *f, +@@ -2099,8 +2123,13 @@ static void udp4_format_sock(struct sock *sp, struct seq_file *f, sk_wmem_alloc_get(sp), sk_rmem_alloc_get(sp), 0, 0L, 0, sock_i_uid(sp), 0, sock_i_ino(sp), @@ -94658,7 +94601,7 @@ index 94874b0..a47969c 100644 case IP6T_SO_GET_ENTRIES: diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c -index 6e6c2c4..ea743ae 100644 +index 6e6c2c4..c97891e 100644 --- a/net/ipv6/raw.c +++ b/net/ipv6/raw.c @@ -109,7 +109,7 @@ found: @@ -94697,25 +94640,7 @@ index 6e6c2c4..ea743ae 100644 kfree_skb(skb); return NET_RX_DROP; } -@@ -456,9 +456,6 @@ static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk, - if (flags & MSG_OOB) - return -EOPNOTSUPP; - -- if (addr_len) -- *addr_len=sizeof(*sin6); -- - if (flags & MSG_ERRQUEUE) - return ipv6_recv_error(sk, msg, len); - -@@ -498,6 +495,7 @@ static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk, - sin6->sin6_scope_id = 0; - if (ipv6_addr_type(&sin6->sin6_addr) & IPV6_ADDR_LINKLOCAL) - sin6->sin6_scope_id = IP6CB(skb)->iif; -+ *addr_len = sizeof(*sin6); - } - - sock_recv_ts_and_drops(msg, sk, skb); -@@ -600,7 +598,7 @@ out: +@@ -600,7 +600,7 @@ out: return err; } @@ -94724,7 +94649,7 @@ index 6e6c2c4..ea743ae 100644 struct flowi6 *fl6, struct dst_entry **dstp, unsigned int flags) { -@@ -908,12 +906,15 @@ do_confirm: +@@ -908,12 +908,15 @@ do_confirm: static int rawv6_seticmpfilter(struct sock *sk, int level, int optname, char __user *optval, int optlen) { @@ -94741,7 +94666,7 @@ index 6e6c2c4..ea743ae 100644 return 0; default: return -ENOPROTOOPT; -@@ -926,6 +927,7 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname, +@@ -926,6 +929,7 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname, char __user *optval, int __user *optlen) { int len; @@ -94749,7 +94674,7 @@ index 6e6c2c4..ea743ae 100644 switch (optname) { case ICMPV6_FILTER: -@@ -937,7 +939,8 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname, +@@ -937,7 +941,8 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname, len = sizeof(struct icmp6_filter); if (put_user(len, optlen)) return -EFAULT; @@ -94759,7 +94684,7 @@ index 6e6c2c4..ea743ae 100644 return -EFAULT; return 0; default: -@@ -1244,7 +1247,13 @@ static void raw6_sock_seq_show(struct seq_file *seq, struct sock *sp, int i) +@@ -1244,7 +1249,13 @@ static void raw6_sock_seq_show(struct seq_file *seq, struct sock *sp, int i) 0, 0L, 0, sock_i_uid(sp), 0, sock_i_ino(sp), @@ -94945,7 +94870,7 @@ index c69358c..d1e5855 100644 static int tcp6_seq_show(struct seq_file *seq, void *v) diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c -index f9e496b..21e6f71 100644 +index f9e496b..729da61 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c @@ -50,6 +50,10 @@ @@ -94959,26 +94884,7 @@ index f9e496b..21e6f71 100644 int ipv6_rcv_saddr_equal(const struct sock *sk, const struct sock *sk2) { const struct in6_addr *sk_rcv_saddr6 = &inet6_sk(sk)->rcv_saddr; -@@ -347,9 +351,6 @@ int udpv6_recvmsg(struct kiocb *iocb, struct sock *sk, - int is_udp4; - bool slow; - -- if (addr_len) -- *addr_len=sizeof(struct sockaddr_in6); -- - if (flags & MSG_ERRQUEUE) - return ipv6_recv_error(sk, msg, len); - -@@ -423,7 +424,7 @@ try_again: - if (ipv6_addr_type(&sin6->sin6_addr) & IPV6_ADDR_LINKLOCAL) - sin6->sin6_scope_id = IP6CB(skb)->iif; - } -- -+ *addr_len = sizeof(*sin6); - } - if (is_udp4) { - if (inet->cmsg_flags) -@@ -549,7 +550,7 @@ int udpv6_queue_rcv_skb(struct sock * sk, struct sk_buff *skb) +@@ -549,7 +553,7 @@ int udpv6_queue_rcv_skb(struct sock * sk, struct sk_buff *skb) return 0; drop: @@ -94987,7 +94893,7 @@ index f9e496b..21e6f71 100644 drop_no_sk_drops_inc: UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite); kfree_skb(skb); -@@ -625,7 +626,7 @@ static void flush_stack(struct sock **stack, unsigned int count, +@@ -625,7 +629,7 @@ static void flush_stack(struct sock **stack, unsigned int count, continue; } drop: @@ -94996,7 +94902,7 @@ index f9e496b..21e6f71 100644 UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS, IS_UDPLITE(sk)); UDP6_INC_STATS_BH(sock_net(sk), -@@ -780,6 +781,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, +@@ -780,6 +784,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, UDP6_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE); @@ -95006,7 +94912,7 @@ index f9e496b..21e6f71 100644 icmpv6_send(skb, ICMPV6_DEST_UNREACH, ICMPV6_PORT_UNREACH, 0); kfree_skb(skb); -@@ -796,7 +800,7 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, +@@ -796,7 +803,7 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, if (!sock_owned_by_user(sk)) udpv6_queue_rcv_skb(sk, skb); else if (sk_add_backlog(sk, skb)) { @@ -95015,7 +94921,7 @@ index f9e496b..21e6f71 100644 bh_unlock_sock(sk); sock_put(sk); goto discard; -@@ -1412,8 +1416,13 @@ static void udp6_sock_seq_show(struct seq_file *seq, struct sock *sp, int bucket +@@ -1412,8 +1419,13 @@ static void udp6_sock_seq_show(struct seq_file *seq, struct sock *sp, int bucket 0, 0L, 0, sock_i_uid(sp), 0, sock_i_ino(sp), @@ -95285,28 +95191,6 @@ index 8dbdb8e..50f4169 100644 } while (!res); return res; } -diff --git a/net/l2tp/l2tp_ip.c b/net/l2tp/l2tp_ip.c -index 6c7e609..334a93d 100644 ---- a/net/l2tp/l2tp_ip.c -+++ b/net/l2tp/l2tp_ip.c -@@ -568,9 +568,6 @@ static int l2tp_ip_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *m - if (flags & MSG_OOB) - goto out; - -- if (addr_len) -- *addr_len = sizeof(*sin); -- - skb = skb_recv_datagram(sk, flags, noblock, &err); - if (!skb) - goto out; -@@ -593,6 +590,7 @@ static int l2tp_ip_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *m - sin->sin_addr.s_addr = ip_hdr(skb)->saddr; - sin->sin_port = 0; - memset(&sin->sin_zero, 0, sizeof(sin->sin_zero)); -+ *addr_len = sizeof(*sin); - } - if (inet->cmsg_flags) - ip_cmsg_recv(msg, skb); diff --git a/net/l2tp/l2tp_netlink.c b/net/l2tp/l2tp_netlink.c index 93a41a0..d4b4edb 100644 --- a/net/l2tp/l2tp_netlink.c @@ -96386,33 +96270,6 @@ index d65f699..855d175 100644 return -EINVAL; err = proto_register(pp->prot, 1); -diff --git a/net/phonet/datagram.c b/net/phonet/datagram.c -index bf35b4e..b25f2d3 100644 ---- a/net/phonet/datagram.c -+++ b/net/phonet/datagram.c -@@ -139,9 +139,6 @@ static int pn_recvmsg(struct kiocb *iocb, struct sock *sk, - MSG_CMSG_COMPAT)) - goto out_nofree; - -- if (addr_len) -- *addr_len = sizeof(sa); -- - skb = skb_recv_datagram(sk, flags, noblock, &rval); - if (skb == NULL) - goto out_nofree; -@@ -162,8 +159,10 @@ static int pn_recvmsg(struct kiocb *iocb, struct sock *sk, - - rval = (flags & MSG_TRUNC) ? skb->len : copylen; - -- if (msg->msg_name != NULL) -- memcpy(msg->msg_name, &sa, sizeof(struct sockaddr_pn)); -+ if (msg->msg_name != NULL) { -+ memcpy(msg->msg_name, &sa, sizeof(sa)); -+ *addr_len = sizeof(sa); -+ } - - out: - skb_free_datagram(sk, skb); diff --git a/net/phonet/pep.c b/net/phonet/pep.c index 007546d..9a8e5c6 100644 --- a/net/phonet/pep.c |