1 |
commit: 56df60d70f473e515a2b889709239ecc78bbf5c6 |
2 |
Author: Anthony G. Basile <blueness <AT> gentoo <DOT> org> |
3 |
AuthorDate: Wed Nov 2 08:22:12 2016 +0000 |
4 |
Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org> |
5 |
CommitDate: Wed Nov 2 08:22:12 2016 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/hardened-patchset.git/commit/?id=56df60d7 |
7 |
|
8 |
grsecurity-3.1-4.7.10-201611011946 |
9 |
|
10 |
4.7.10/0000_README | 2 +- |
11 |
... 4420_grsecurity-3.1-4.7.10-201611011946.patch} | 161 +++++++++++++++++++-- |
12 |
2 files changed, 151 insertions(+), 12 deletions(-) |
13 |
|
14 |
diff --git a/4.7.10/0000_README b/4.7.10/0000_README |
15 |
index 5c79278..c596497 100644 |
16 |
--- a/4.7.10/0000_README |
17 |
+++ b/4.7.10/0000_README |
18 |
@@ -14,7 +14,7 @@ Patch: 1009_linux-4.7.10.patch |
19 |
From: http://www.kernel.org |
20 |
Desc: Linux 4.7.10 |
21 |
|
22 |
-Patch: 4420_grsecurity-3.1-4.7.10-201610262029.patch |
23 |
+Patch: 4420_grsecurity-3.1-4.7.10-201611011946.patch |
24 |
From: http://www.grsecurity.net |
25 |
Desc: hardened-sources base patch from upstream grsecurity |
26 |
|
27 |
|
28 |
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 |
29 |
similarity index 99% |
30 |
rename from 4.7.10/4420_grsecurity-3.1-4.7.10-201610262029.patch |
31 |
rename to 4.7.10/4420_grsecurity-3.1-4.7.10-201611011946.patch |
32 |
index 2148028..15bb765 100644 |
33 |
--- a/4.7.10/4420_grsecurity-3.1-4.7.10-201610262029.patch |
34 |
+++ b/4.7.10/4420_grsecurity-3.1-4.7.10-201611011946.patch |
35 |
@@ -960,7 +960,7 @@ index d50430c..01cc53b 100644 |
36 |
# but it is being used too early to link to meaningful stack_chk logic. |
37 |
nossp_flags := $(call cc-option, -fno-stack-protector) |
38 |
diff --git a/arch/arm/include/asm/atomic.h b/arch/arm/include/asm/atomic.h |
39 |
-index 9e10c45..5fbb312 100644 |
40 |
+index 9e10c45..e4cd000 100644 |
41 |
--- a/arch/arm/include/asm/atomic.h |
42 |
+++ b/arch/arm/include/asm/atomic.h |
43 |
@@ -18,17 +18,41 @@ |
44 |
@@ -1018,7 +1018,7 @@ index 9e10c45..5fbb312 100644 |
45 |
+ "3:\n" |
46 |
+#define __OVERFLOW_POST_RETURN \ |
47 |
+ " bvc 3f\n" \ |
48 |
-+" mov %0, %1\n" \ |
49 |
++ " mov %0, %1\n" \ |
50 |
+ "2: " REFCOUNT_TRAP_INSN "\n"\ |
51 |
+ "3:\n" |
52 |
+#define __OVERFLOW_EXTABLE \ |
53 |
@@ -24176,7 +24176,7 @@ index dee8a70..a2c1bda 100644 |
54 |
} |
55 |
|
56 |
diff --git a/arch/x86/include/asm/traps.h b/arch/x86/include/asm/traps.h |
57 |
-index c3496619..3f3a7dc 100644 |
58 |
+index c3496619..a968182 100644 |
59 |
--- a/arch/x86/include/asm/traps.h |
60 |
+++ b/arch/x86/include/asm/traps.h |
61 |
@@ -10,7 +10,7 @@ |
62 |
@@ -24188,7 +24188,15 @@ index c3496619..3f3a7dc 100644 |
63 |
asmlinkage void nmi(void); |
64 |
asmlinkage void int3(void); |
65 |
asmlinkage void xen_debug(void); |
66 |
-@@ -107,7 +107,7 @@ extern int panic_on_unrecovered_nmi; |
67 |
+@@ -54,6 +54,7 @@ asmlinkage void trace_page_fault(void); |
68 |
+ #define trace_alignment_check alignment_check |
69 |
+ #define trace_simd_coprocessor_error simd_coprocessor_error |
70 |
+ #define trace_async_page_fault async_page_fault |
71 |
++#define trace_refcount_error refcount_error |
72 |
+ #endif |
73 |
+ |
74 |
+ dotraplinkage void do_divide_error(struct pt_regs *, long); |
75 |
+@@ -107,7 +108,7 @@ extern int panic_on_unrecovered_nmi; |
76 |
|
77 |
void math_emulate(struct math_emu_info *); |
78 |
#ifndef CONFIG_X86_32 |
79 |
@@ -24198,7 +24206,7 @@ index c3496619..3f3a7dc 100644 |
80 |
asmlinkage void smp_deferred_error_interrupt(void); |
81 |
#endif |
82 |
diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h |
83 |
-index 0328c2cc..b65e680d 100644 |
84 |
+index 0328c2cc..fb12bf2 100644 |
85 |
--- a/arch/x86/include/asm/uaccess.h |
86 |
+++ b/arch/x86/include/asm/uaccess.h |
87 |
@@ -8,6 +8,7 @@ |
88 |
@@ -24294,7 +24302,7 @@ index 0328c2cc..b65e680d 100644 |
89 |
|
90 |
/** |
91 |
* get_user: - Get a simple variable from user space. |
92 |
-@@ -201,13 +247,11 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL)) |
93 |
+@@ -201,14 +247,12 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL)) |
94 |
asm volatile("call __put_user_" #size : "=a" (__ret_pu) \ |
95 |
: "0" ((typeof(*(ptr)))(x)), "c" (ptr) : "ebx") |
96 |
|
97 |
@@ -24305,22 +24313,26 @@ index 0328c2cc..b65e680d 100644 |
98 |
asm volatile("\n" \ |
99 |
- "1: movl %%eax,0(%2)\n" \ |
100 |
- "2: movl %%edx,4(%2)\n" \ |
101 |
+- "3:" \ |
102 |
+ "1: "__copyuser_seg"movl %%eax,0(%2)\n" \ |
103 |
+ "2: "__copyuser_seg"movl %%edx,4(%2)\n" \ |
104 |
- "3:" \ |
105 |
++ "3:\n" \ |
106 |
".section .fixup,\"ax\"\n" \ |
107 |
"4: movl %3,%0\n" \ |
108 |
-@@ -220,8 +264,8 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL)) |
109 |
+ " jmp 3b\n" \ |
110 |
+@@ -220,9 +264,9 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL)) |
111 |
|
112 |
#define __put_user_asm_ex_u64(x, addr) \ |
113 |
asm volatile("\n" \ |
114 |
- "1: movl %%eax,0(%1)\n" \ |
115 |
- "2: movl %%edx,4(%1)\n" \ |
116 |
+- "3:" \ |
117 |
+ "1: "__copyuser_seg"movl %%eax,0(%1)\n" \ |
118 |
+ "2: "__copyuser_seg"movl %%edx,4(%1)\n" \ |
119 |
- "3:" \ |
120 |
++ "3:\n" \ |
121 |
_ASM_EXTABLE_EX(1b, 2b) \ |
122 |
_ASM_EXTABLE_EX(2b, 3b) \ |
123 |
+ : : "A" (x), "r" (addr)) |
124 |
@@ -269,10 +313,10 @@ extern void __put_user_8(void); |
125 |
#define put_user(x, ptr) \ |
126 |
({ \ |
127 |
@@ -67040,7 +67052,7 @@ index d9f1394..ba6ee91 100644 |
128 |
|
129 |
memset(buf, 0, sizeof(buf)); |
130 |
diff --git a/drivers/net/wireless/intersil/hostap/hostap_ioctl.c b/drivers/net/wireless/intersil/hostap/hostap_ioctl.c |
131 |
-index 3e5fa78..ca2e051 100644 |
132 |
+index 3e5fa78..6d26beb 100644 |
133 |
--- a/drivers/net/wireless/intersil/hostap/hostap_ioctl.c |
134 |
+++ b/drivers/net/wireless/intersil/hostap/hostap_ioctl.c |
135 |
@@ -101,8 +101,9 @@ static int prism2_get_datarates(struct net_device *dev, u8 *rates) |
136 |
@@ -67523,7 +67535,123 @@ index 3e5fa78..ca2e051 100644 |
137 |
{ |
138 |
struct hostap_interface *iface = netdev_priv(dev); |
139 |
local_info_t *local = iface->local; |
140 |
-@@ -3943,10 +3981,10 @@ static const iw_handler prism2_handler[] = |
141 |
+@@ -3883,70 +3921,70 @@ const struct ethtool_ops prism2_ethtool_ops = { |
142 |
+ |
143 |
+ static const iw_handler prism2_handler[] = |
144 |
+ { |
145 |
+- (iw_handler) NULL, /* SIOCSIWCOMMIT */ |
146 |
+- (iw_handler) prism2_get_name, /* SIOCGIWNAME */ |
147 |
+- (iw_handler) NULL, /* SIOCSIWNWID */ |
148 |
+- (iw_handler) NULL, /* SIOCGIWNWID */ |
149 |
+- (iw_handler) prism2_ioctl_siwfreq, /* SIOCSIWFREQ */ |
150 |
+- (iw_handler) prism2_ioctl_giwfreq, /* SIOCGIWFREQ */ |
151 |
+- (iw_handler) prism2_ioctl_siwmode, /* SIOCSIWMODE */ |
152 |
+- (iw_handler) prism2_ioctl_giwmode, /* SIOCGIWMODE */ |
153 |
+- (iw_handler) prism2_ioctl_siwsens, /* SIOCSIWSENS */ |
154 |
+- (iw_handler) prism2_ioctl_giwsens, /* SIOCGIWSENS */ |
155 |
+- (iw_handler) NULL /* not used */, /* SIOCSIWRANGE */ |
156 |
+- (iw_handler) prism2_ioctl_giwrange, /* SIOCGIWRANGE */ |
157 |
+- (iw_handler) NULL /* not used */, /* SIOCSIWPRIV */ |
158 |
+- (iw_handler) NULL /* kernel code */, /* SIOCGIWPRIV */ |
159 |
+- (iw_handler) NULL /* not used */, /* SIOCSIWSTATS */ |
160 |
+- (iw_handler) NULL /* kernel code */, /* SIOCGIWSTATS */ |
161 |
+- iw_handler_set_spy, /* SIOCSIWSPY */ |
162 |
+- iw_handler_get_spy, /* SIOCGIWSPY */ |
163 |
+- iw_handler_set_thrspy, /* SIOCSIWTHRSPY */ |
164 |
+- iw_handler_get_thrspy, /* SIOCGIWTHRSPY */ |
165 |
+- (iw_handler) prism2_ioctl_siwap, /* SIOCSIWAP */ |
166 |
+- (iw_handler) prism2_ioctl_giwap, /* SIOCGIWAP */ |
167 |
+- (iw_handler) prism2_ioctl_siwmlme, /* SIOCSIWMLME */ |
168 |
+- (iw_handler) prism2_ioctl_giwaplist, /* SIOCGIWAPLIST */ |
169 |
+- (iw_handler) prism2_ioctl_siwscan, /* SIOCSIWSCAN */ |
170 |
+- (iw_handler) prism2_ioctl_giwscan, /* SIOCGIWSCAN */ |
171 |
+- (iw_handler) prism2_ioctl_siwessid, /* SIOCSIWESSID */ |
172 |
+- (iw_handler) prism2_ioctl_giwessid, /* SIOCGIWESSID */ |
173 |
+- (iw_handler) prism2_ioctl_siwnickn, /* SIOCSIWNICKN */ |
174 |
+- (iw_handler) prism2_ioctl_giwnickn, /* SIOCGIWNICKN */ |
175 |
+- (iw_handler) NULL, /* -- hole -- */ |
176 |
+- (iw_handler) NULL, /* -- hole -- */ |
177 |
+- (iw_handler) prism2_ioctl_siwrate, /* SIOCSIWRATE */ |
178 |
+- (iw_handler) prism2_ioctl_giwrate, /* SIOCGIWRATE */ |
179 |
+- (iw_handler) prism2_ioctl_siwrts, /* SIOCSIWRTS */ |
180 |
+- (iw_handler) prism2_ioctl_giwrts, /* SIOCGIWRTS */ |
181 |
+- (iw_handler) prism2_ioctl_siwfrag, /* SIOCSIWFRAG */ |
182 |
+- (iw_handler) prism2_ioctl_giwfrag, /* SIOCGIWFRAG */ |
183 |
+- (iw_handler) prism2_ioctl_siwtxpow, /* SIOCSIWTXPOW */ |
184 |
+- (iw_handler) prism2_ioctl_giwtxpow, /* SIOCGIWTXPOW */ |
185 |
+- (iw_handler) prism2_ioctl_siwretry, /* SIOCSIWRETRY */ |
186 |
+- (iw_handler) prism2_ioctl_giwretry, /* SIOCGIWRETRY */ |
187 |
+- (iw_handler) prism2_ioctl_siwencode, /* SIOCSIWENCODE */ |
188 |
+- (iw_handler) prism2_ioctl_giwencode, /* SIOCGIWENCODE */ |
189 |
+- (iw_handler) prism2_ioctl_siwpower, /* SIOCSIWPOWER */ |
190 |
+- (iw_handler) prism2_ioctl_giwpower, /* SIOCGIWPOWER */ |
191 |
+- (iw_handler) NULL, /* -- hole -- */ |
192 |
+- (iw_handler) NULL, /* -- hole -- */ |
193 |
+- (iw_handler) prism2_ioctl_siwgenie, /* SIOCSIWGENIE */ |
194 |
+- (iw_handler) prism2_ioctl_giwgenie, /* SIOCGIWGENIE */ |
195 |
+- (iw_handler) prism2_ioctl_siwauth, /* SIOCSIWAUTH */ |
196 |
+- (iw_handler) prism2_ioctl_giwauth, /* SIOCGIWAUTH */ |
197 |
+- (iw_handler) prism2_ioctl_siwencodeext, /* SIOCSIWENCODEEXT */ |
198 |
+- (iw_handler) prism2_ioctl_giwencodeext, /* SIOCGIWENCODEEXT */ |
199 |
+- (iw_handler) NULL, /* SIOCSIWPMKSA */ |
200 |
+- (iw_handler) NULL, /* -- hole -- */ |
201 |
++ NULL, /* SIOCSIWCOMMIT */ |
202 |
++ prism2_get_name, /* SIOCGIWNAME */ |
203 |
++ NULL, /* SIOCSIWNWID */ |
204 |
++ NULL, /* SIOCGIWNWID */ |
205 |
++ prism2_ioctl_siwfreq, /* SIOCSIWFREQ */ |
206 |
++ prism2_ioctl_giwfreq, /* SIOCGIWFREQ */ |
207 |
++ prism2_ioctl_siwmode, /* SIOCSIWMODE */ |
208 |
++ prism2_ioctl_giwmode, /* SIOCGIWMODE */ |
209 |
++ prism2_ioctl_siwsens, /* SIOCSIWSENS */ |
210 |
++ prism2_ioctl_giwsens, /* SIOCGIWSENS */ |
211 |
++ NULL /* not used */, /* SIOCSIWRANGE */ |
212 |
++ prism2_ioctl_giwrange, /* SIOCGIWRANGE */ |
213 |
++ NULL /* not used */, /* SIOCSIWPRIV */ |
214 |
++ NULL /* kernel code */, /* SIOCGIWPRIV */ |
215 |
++ NULL /* not used */, /* SIOCSIWSTATS */ |
216 |
++ NULL /* kernel code */, /* SIOCGIWSTATS */ |
217 |
++ iw_handler_set_spy, /* SIOCSIWSPY */ |
218 |
++ iw_handler_get_spy, /* SIOCGIWSPY */ |
219 |
++ iw_handler_set_thrspy, /* SIOCSIWTHRSPY */ |
220 |
++ iw_handler_get_thrspy, /* SIOCGIWTHRSPY */ |
221 |
++ prism2_ioctl_siwap, /* SIOCSIWAP */ |
222 |
++ prism2_ioctl_giwap, /* SIOCGIWAP */ |
223 |
++ prism2_ioctl_siwmlme, /* SIOCSIWMLME */ |
224 |
++ prism2_ioctl_giwaplist, /* SIOCGIWAPLIST */ |
225 |
++ prism2_ioctl_siwscan, /* SIOCSIWSCAN */ |
226 |
++ prism2_ioctl_giwscan, /* SIOCGIWSCAN */ |
227 |
++ prism2_ioctl_siwessid, /* SIOCSIWESSID */ |
228 |
++ prism2_ioctl_giwessid, /* SIOCGIWESSID */ |
229 |
++ prism2_ioctl_siwnickn, /* SIOCSIWNICKN */ |
230 |
++ prism2_ioctl_giwnickn, /* SIOCGIWNICKN */ |
231 |
++ NULL, /* -- hole -- */ |
232 |
++ NULL, /* -- hole -- */ |
233 |
++ prism2_ioctl_siwrate, /* SIOCSIWRATE */ |
234 |
++ prism2_ioctl_giwrate, /* SIOCGIWRATE */ |
235 |
++ prism2_ioctl_siwrts, /* SIOCSIWRTS */ |
236 |
++ prism2_ioctl_giwrts, /* SIOCGIWRTS */ |
237 |
++ prism2_ioctl_siwfrag, /* SIOCSIWFRAG */ |
238 |
++ prism2_ioctl_giwfrag, /* SIOCGIWFRAG */ |
239 |
++ prism2_ioctl_siwtxpow, /* SIOCSIWTXPOW */ |
240 |
++ prism2_ioctl_giwtxpow, /* SIOCGIWTXPOW */ |
241 |
++ prism2_ioctl_siwretry, /* SIOCSIWRETRY */ |
242 |
++ prism2_ioctl_giwretry, /* SIOCGIWRETRY */ |
243 |
++ prism2_ioctl_siwencode, /* SIOCSIWENCODE */ |
244 |
++ prism2_ioctl_giwencode, /* SIOCGIWENCODE */ |
245 |
++ prism2_ioctl_siwpower, /* SIOCSIWPOWER */ |
246 |
++ prism2_ioctl_giwpower, /* SIOCGIWPOWER */ |
247 |
++ NULL, /* -- hole -- */ |
248 |
++ NULL, /* -- hole -- */ |
249 |
++ prism2_ioctl_siwgenie, /* SIOCSIWGENIE */ |
250 |
++ prism2_ioctl_giwgenie, /* SIOCGIWGENIE */ |
251 |
++ prism2_ioctl_siwauth, /* SIOCSIWAUTH */ |
252 |
++ prism2_ioctl_giwauth, /* SIOCGIWAUTH */ |
253 |
++ prism2_ioctl_siwencodeext, /* SIOCSIWENCODEEXT */ |
254 |
++ prism2_ioctl_giwencodeext, /* SIOCGIWENCODEEXT */ |
255 |
++ NULL, /* SIOCSIWPMKSA */ |
256 |
++ NULL, /* -- hole -- */ |
257 |
+ }; |
258 |
|
259 |
static const iw_handler prism2_private_handler[] = |
260 |
{ /* SIOCIWFIRSTPRIV + */ |
261 |
@@ -67538,6 +67666,17 @@ index 3e5fa78..ca2e051 100644 |
262 |
}; |
263 |
|
264 |
const struct iw_handler_def hostap_iw_handler_def = |
265 |
+@@ -3954,8 +3992,8 @@ const struct iw_handler_def hostap_iw_handler_def = |
266 |
+ .num_standard = ARRAY_SIZE(prism2_handler), |
267 |
+ .num_private = ARRAY_SIZE(prism2_private_handler), |
268 |
+ .num_private_args = ARRAY_SIZE(prism2_priv), |
269 |
+- .standard = (iw_handler *) prism2_handler, |
270 |
+- .private = (iw_handler *) prism2_private_handler, |
271 |
++ .standard = prism2_handler, |
272 |
++ .private = prism2_private_handler, |
273 |
+ .private_args = (struct iw_priv_args *) prism2_priv, |
274 |
+ .get_wireless_stats = hostap_get_wireless_stats, |
275 |
+ }; |
276 |
diff --git a/drivers/net/wireless/intersil/orinoco/wext.c b/drivers/net/wireless/intersil/orinoco/wext.c |
277 |
index 1d4dae4..0508fc1 100644 |
278 |
--- a/drivers/net/wireless/intersil/orinoco/wext.c |