summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthony G. Basile <blueness@gentoo.org>2013-11-23 19:35:55 -0500
committerAnthony G. Basile <blueness@gentoo.org>2013-11-23 19:35:55 -0500
commitb707a73b9216a4d4250d663a0eecd44b05c6cb61 (patch)
treeb360e1a81c9e18e24da4a9a92090fd9e2b20d061
parentGrsec/PaX: 2.9.1-{3.2.52,3.11.8}-201311182333 (diff)
downloadhardened-patchset-b707a73b9216a4d4250d663a0eecd44b05c6cb61.tar.gz
hardened-patchset-b707a73b9216a4d4250d663a0eecd44b05c6cb61.tar.bz2
hardened-patchset-b707a73b9216a4d4250d663a0eecd44b05c6cb61.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_README2
-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