summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--4.7.10/0000_README2
-rw-r--r--4.7.10/4420_grsecurity-3.1-4.7.10-201611011946.patch (renamed from 4.7.10/4420_grsecurity-3.1-4.7.10-201610262029.patch)161
2 files changed, 151 insertions, 12 deletions
diff --git a/4.7.10/0000_README b/4.7.10/0000_README
index 5c79278..c596497 100644
--- a/4.7.10/0000_README
+++ b/4.7.10/0000_README
@@ -14,7 +14,7 @@ Patch: 1009_linux-4.7.10.patch
From: http://www.kernel.org
Desc: Linux 4.7.10
-Patch: 4420_grsecurity-3.1-4.7.10-201610262029.patch
+Patch: 4420_grsecurity-3.1-4.7.10-201611011946.patch
From: http://www.grsecurity.net
Desc: hardened-sources base patch from upstream grsecurity
diff --git a/4.7.10/4420_grsecurity-3.1-4.7.10-201610262029.patch b/4.7.10/4420_grsecurity-3.1-4.7.10-201611011946.patch
index 2148028..15bb765 100644
--- a/4.7.10/4420_grsecurity-3.1-4.7.10-201610262029.patch
+++ b/4.7.10/4420_grsecurity-3.1-4.7.10-201611011946.patch
@@ -960,7 +960,7 @@ index d50430c..01cc53b 100644
# but it is being used too early to link to meaningful stack_chk logic.
nossp_flags := $(call cc-option, -fno-stack-protector)
diff --git a/arch/arm/include/asm/atomic.h b/arch/arm/include/asm/atomic.h
-index 9e10c45..5fbb312 100644
+index 9e10c45..e4cd000 100644
--- a/arch/arm/include/asm/atomic.h
+++ b/arch/arm/include/asm/atomic.h
@@ -18,17 +18,41 @@
@@ -1018,7 +1018,7 @@ index 9e10c45..5fbb312 100644
+ "3:\n"
+#define __OVERFLOW_POST_RETURN \
+ " bvc 3f\n" \
-+" mov %0, %1\n" \
++ " mov %0, %1\n" \
+ "2: " REFCOUNT_TRAP_INSN "\n"\
+ "3:\n"
+#define __OVERFLOW_EXTABLE \
@@ -24176,7 +24176,7 @@ index dee8a70..a2c1bda 100644
}
diff --git a/arch/x86/include/asm/traps.h b/arch/x86/include/asm/traps.h
-index c3496619..3f3a7dc 100644
+index c3496619..a968182 100644
--- a/arch/x86/include/asm/traps.h
+++ b/arch/x86/include/asm/traps.h
@@ -10,7 +10,7 @@
@@ -24188,7 +24188,15 @@ index c3496619..3f3a7dc 100644
asmlinkage void nmi(void);
asmlinkage void int3(void);
asmlinkage void xen_debug(void);
-@@ -107,7 +107,7 @@ extern int panic_on_unrecovered_nmi;
+@@ -54,6 +54,7 @@ asmlinkage void trace_page_fault(void);
+ #define trace_alignment_check alignment_check
+ #define trace_simd_coprocessor_error simd_coprocessor_error
+ #define trace_async_page_fault async_page_fault
++#define trace_refcount_error refcount_error
+ #endif
+
+ dotraplinkage void do_divide_error(struct pt_regs *, long);
+@@ -107,7 +108,7 @@ extern int panic_on_unrecovered_nmi;
void math_emulate(struct math_emu_info *);
#ifndef CONFIG_X86_32
@@ -24198,7 +24206,7 @@ index c3496619..3f3a7dc 100644
asmlinkage void smp_deferred_error_interrupt(void);
#endif
diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
-index 0328c2cc..b65e680d 100644
+index 0328c2cc..fb12bf2 100644
--- a/arch/x86/include/asm/uaccess.h
+++ b/arch/x86/include/asm/uaccess.h
@@ -8,6 +8,7 @@
@@ -24294,7 +24302,7 @@ index 0328c2cc..b65e680d 100644
/**
* get_user: - Get a simple variable from user space.
-@@ -201,13 +247,11 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL))
+@@ -201,14 +247,12 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL))
asm volatile("call __put_user_" #size : "=a" (__ret_pu) \
: "0" ((typeof(*(ptr)))(x)), "c" (ptr) : "ebx")
@@ -24305,22 +24313,26 @@ index 0328c2cc..b65e680d 100644
asm volatile("\n" \
- "1: movl %%eax,0(%2)\n" \
- "2: movl %%edx,4(%2)\n" \
+- "3:" \
+ "1: "__copyuser_seg"movl %%eax,0(%2)\n" \
+ "2: "__copyuser_seg"movl %%edx,4(%2)\n" \
- "3:" \
++ "3:\n" \
".section .fixup,\"ax\"\n" \
"4: movl %3,%0\n" \
-@@ -220,8 +264,8 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL))
+ " jmp 3b\n" \
+@@ -220,9 +264,9 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL))
#define __put_user_asm_ex_u64(x, addr) \
asm volatile("\n" \
- "1: movl %%eax,0(%1)\n" \
- "2: movl %%edx,4(%1)\n" \
+- "3:" \
+ "1: "__copyuser_seg"movl %%eax,0(%1)\n" \
+ "2: "__copyuser_seg"movl %%edx,4(%1)\n" \
- "3:" \
++ "3:\n" \
_ASM_EXTABLE_EX(1b, 2b) \
_ASM_EXTABLE_EX(2b, 3b) \
+ : : "A" (x), "r" (addr))
@@ -269,10 +313,10 @@ extern void __put_user_8(void);
#define put_user(x, ptr) \
({ \
@@ -67040,7 +67052,7 @@ index d9f1394..ba6ee91 100644
memset(buf, 0, sizeof(buf));
diff --git a/drivers/net/wireless/intersil/hostap/hostap_ioctl.c b/drivers/net/wireless/intersil/hostap/hostap_ioctl.c
-index 3e5fa78..ca2e051 100644
+index 3e5fa78..6d26beb 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_ioctl.c
+++ b/drivers/net/wireless/intersil/hostap/hostap_ioctl.c
@@ -101,8 +101,9 @@ static int prism2_get_datarates(struct net_device *dev, u8 *rates)
@@ -67523,7 +67535,123 @@ index 3e5fa78..ca2e051 100644
{
struct hostap_interface *iface = netdev_priv(dev);
local_info_t *local = iface->local;
-@@ -3943,10 +3981,10 @@ static const iw_handler prism2_handler[] =
+@@ -3883,70 +3921,70 @@ const struct ethtool_ops prism2_ethtool_ops = {
+
+ static const iw_handler prism2_handler[] =
+ {
+- (iw_handler) NULL, /* SIOCSIWCOMMIT */
+- (iw_handler) prism2_get_name, /* SIOCGIWNAME */
+- (iw_handler) NULL, /* SIOCSIWNWID */
+- (iw_handler) NULL, /* SIOCGIWNWID */
+- (iw_handler) prism2_ioctl_siwfreq, /* SIOCSIWFREQ */
+- (iw_handler) prism2_ioctl_giwfreq, /* SIOCGIWFREQ */
+- (iw_handler) prism2_ioctl_siwmode, /* SIOCSIWMODE */
+- (iw_handler) prism2_ioctl_giwmode, /* SIOCGIWMODE */
+- (iw_handler) prism2_ioctl_siwsens, /* SIOCSIWSENS */
+- (iw_handler) prism2_ioctl_giwsens, /* SIOCGIWSENS */
+- (iw_handler) NULL /* not used */, /* SIOCSIWRANGE */
+- (iw_handler) prism2_ioctl_giwrange, /* SIOCGIWRANGE */
+- (iw_handler) NULL /* not used */, /* SIOCSIWPRIV */
+- (iw_handler) NULL /* kernel code */, /* SIOCGIWPRIV */
+- (iw_handler) NULL /* not used */, /* SIOCSIWSTATS */
+- (iw_handler) NULL /* kernel code */, /* SIOCGIWSTATS */
+- iw_handler_set_spy, /* SIOCSIWSPY */
+- iw_handler_get_spy, /* SIOCGIWSPY */
+- iw_handler_set_thrspy, /* SIOCSIWTHRSPY */
+- iw_handler_get_thrspy, /* SIOCGIWTHRSPY */
+- (iw_handler) prism2_ioctl_siwap, /* SIOCSIWAP */
+- (iw_handler) prism2_ioctl_giwap, /* SIOCGIWAP */
+- (iw_handler) prism2_ioctl_siwmlme, /* SIOCSIWMLME */
+- (iw_handler) prism2_ioctl_giwaplist, /* SIOCGIWAPLIST */
+- (iw_handler) prism2_ioctl_siwscan, /* SIOCSIWSCAN */
+- (iw_handler) prism2_ioctl_giwscan, /* SIOCGIWSCAN */
+- (iw_handler) prism2_ioctl_siwessid, /* SIOCSIWESSID */
+- (iw_handler) prism2_ioctl_giwessid, /* SIOCGIWESSID */
+- (iw_handler) prism2_ioctl_siwnickn, /* SIOCSIWNICKN */
+- (iw_handler) prism2_ioctl_giwnickn, /* SIOCGIWNICKN */
+- (iw_handler) NULL, /* -- hole -- */
+- (iw_handler) NULL, /* -- hole -- */
+- (iw_handler) prism2_ioctl_siwrate, /* SIOCSIWRATE */
+- (iw_handler) prism2_ioctl_giwrate, /* SIOCGIWRATE */
+- (iw_handler) prism2_ioctl_siwrts, /* SIOCSIWRTS */
+- (iw_handler) prism2_ioctl_giwrts, /* SIOCGIWRTS */
+- (iw_handler) prism2_ioctl_siwfrag, /* SIOCSIWFRAG */
+- (iw_handler) prism2_ioctl_giwfrag, /* SIOCGIWFRAG */
+- (iw_handler) prism2_ioctl_siwtxpow, /* SIOCSIWTXPOW */
+- (iw_handler) prism2_ioctl_giwtxpow, /* SIOCGIWTXPOW */
+- (iw_handler) prism2_ioctl_siwretry, /* SIOCSIWRETRY */
+- (iw_handler) prism2_ioctl_giwretry, /* SIOCGIWRETRY */
+- (iw_handler) prism2_ioctl_siwencode, /* SIOCSIWENCODE */
+- (iw_handler) prism2_ioctl_giwencode, /* SIOCGIWENCODE */
+- (iw_handler) prism2_ioctl_siwpower, /* SIOCSIWPOWER */
+- (iw_handler) prism2_ioctl_giwpower, /* SIOCGIWPOWER */
+- (iw_handler) NULL, /* -- hole -- */
+- (iw_handler) NULL, /* -- hole -- */
+- (iw_handler) prism2_ioctl_siwgenie, /* SIOCSIWGENIE */
+- (iw_handler) prism2_ioctl_giwgenie, /* SIOCGIWGENIE */
+- (iw_handler) prism2_ioctl_siwauth, /* SIOCSIWAUTH */
+- (iw_handler) prism2_ioctl_giwauth, /* SIOCGIWAUTH */
+- (iw_handler) prism2_ioctl_siwencodeext, /* SIOCSIWENCODEEXT */
+- (iw_handler) prism2_ioctl_giwencodeext, /* SIOCGIWENCODEEXT */
+- (iw_handler) NULL, /* SIOCSIWPMKSA */
+- (iw_handler) NULL, /* -- hole -- */
++ NULL, /* SIOCSIWCOMMIT */
++ prism2_get_name, /* SIOCGIWNAME */
++ NULL, /* SIOCSIWNWID */
++ NULL, /* SIOCGIWNWID */
++ prism2_ioctl_siwfreq, /* SIOCSIWFREQ */
++ prism2_ioctl_giwfreq, /* SIOCGIWFREQ */
++ prism2_ioctl_siwmode, /* SIOCSIWMODE */
++ prism2_ioctl_giwmode, /* SIOCGIWMODE */
++ prism2_ioctl_siwsens, /* SIOCSIWSENS */
++ prism2_ioctl_giwsens, /* SIOCGIWSENS */
++ NULL /* not used */, /* SIOCSIWRANGE */
++ prism2_ioctl_giwrange, /* SIOCGIWRANGE */
++ NULL /* not used */, /* SIOCSIWPRIV */
++ NULL /* kernel code */, /* SIOCGIWPRIV */
++ NULL /* not used */, /* SIOCSIWSTATS */
++ NULL /* kernel code */, /* SIOCGIWSTATS */
++ iw_handler_set_spy, /* SIOCSIWSPY */
++ iw_handler_get_spy, /* SIOCGIWSPY */
++ iw_handler_set_thrspy, /* SIOCSIWTHRSPY */
++ iw_handler_get_thrspy, /* SIOCGIWTHRSPY */
++ prism2_ioctl_siwap, /* SIOCSIWAP */
++ prism2_ioctl_giwap, /* SIOCGIWAP */
++ prism2_ioctl_siwmlme, /* SIOCSIWMLME */
++ prism2_ioctl_giwaplist, /* SIOCGIWAPLIST */
++ prism2_ioctl_siwscan, /* SIOCSIWSCAN */
++ prism2_ioctl_giwscan, /* SIOCGIWSCAN */
++ prism2_ioctl_siwessid, /* SIOCSIWESSID */
++ prism2_ioctl_giwessid, /* SIOCGIWESSID */
++ prism2_ioctl_siwnickn, /* SIOCSIWNICKN */
++ prism2_ioctl_giwnickn, /* SIOCGIWNICKN */
++ NULL, /* -- hole -- */
++ NULL, /* -- hole -- */
++ prism2_ioctl_siwrate, /* SIOCSIWRATE */
++ prism2_ioctl_giwrate, /* SIOCGIWRATE */
++ prism2_ioctl_siwrts, /* SIOCSIWRTS */
++ prism2_ioctl_giwrts, /* SIOCGIWRTS */
++ prism2_ioctl_siwfrag, /* SIOCSIWFRAG */
++ prism2_ioctl_giwfrag, /* SIOCGIWFRAG */
++ prism2_ioctl_siwtxpow, /* SIOCSIWTXPOW */
++ prism2_ioctl_giwtxpow, /* SIOCGIWTXPOW */
++ prism2_ioctl_siwretry, /* SIOCSIWRETRY */
++ prism2_ioctl_giwretry, /* SIOCGIWRETRY */
++ prism2_ioctl_siwencode, /* SIOCSIWENCODE */
++ prism2_ioctl_giwencode, /* SIOCGIWENCODE */
++ prism2_ioctl_siwpower, /* SIOCSIWPOWER */
++ prism2_ioctl_giwpower, /* SIOCGIWPOWER */
++ NULL, /* -- hole -- */
++ NULL, /* -- hole -- */
++ prism2_ioctl_siwgenie, /* SIOCSIWGENIE */
++ prism2_ioctl_giwgenie, /* SIOCGIWGENIE */
++ prism2_ioctl_siwauth, /* SIOCSIWAUTH */
++ prism2_ioctl_giwauth, /* SIOCGIWAUTH */
++ prism2_ioctl_siwencodeext, /* SIOCSIWENCODEEXT */
++ prism2_ioctl_giwencodeext, /* SIOCGIWENCODEEXT */
++ NULL, /* SIOCSIWPMKSA */
++ NULL, /* -- hole -- */
+ };
static const iw_handler prism2_private_handler[] =
{ /* SIOCIWFIRSTPRIV + */
@@ -67538,6 +67666,17 @@ index 3e5fa78..ca2e051 100644
};
const struct iw_handler_def hostap_iw_handler_def =
+@@ -3954,8 +3992,8 @@ const struct iw_handler_def hostap_iw_handler_def =
+ .num_standard = ARRAY_SIZE(prism2_handler),
+ .num_private = ARRAY_SIZE(prism2_private_handler),
+ .num_private_args = ARRAY_SIZE(prism2_priv),
+- .standard = (iw_handler *) prism2_handler,
+- .private = (iw_handler *) prism2_private_handler,
++ .standard = prism2_handler,
++ .private = prism2_private_handler,
+ .private_args = (struct iw_priv_args *) prism2_priv,
+ .get_wireless_stats = hostap_get_wireless_stats,
+ };
diff --git a/drivers/net/wireless/intersil/orinoco/wext.c b/drivers/net/wireless/intersil/orinoco/wext.c
index 1d4dae4..0508fc1 100644
--- a/drivers/net/wireless/intersil/orinoco/wext.c