Gentoo Archives: gentoo-commits

From: "Anthony G. Basile" <blueness@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/hardened-patchset:master commit in: 3.14.17/, 3.16.1/, 3.15.10/, 3.2.62/
Date: Wed, 03 Sep 2014 11:53:02
Message-Id: 1409745287.696f92382c9ecec8fa669fbdd522303cd6917ba9.blueness@gentoo
1 commit: 696f92382c9ecec8fa669fbdd522303cd6917ba9
2 Author: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
3 AuthorDate: Wed Sep 3 11:54:47 2014 +0000
4 Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
5 CommitDate: Wed Sep 3 11:54:47 2014 +0000
6 URL: http://sources.gentoo.org/gitweb/?p=proj/hardened-patchset.git;a=commit;h=696f9238
7
8 Grsec/PaX: 3.0-{3.2.62,3.14.17,3.16.1}-201409010104
9
10 ---
11 3.14.17/0000_README | 2 +-
12 ...4420_grsecurity-3.0-3.14.17-201408312006.patch} | 201 +-
13 {3.15.10 => 3.16.1}/0000_README | 2 +-
14 .../4420_grsecurity-3.0-3.16.1-201409010104.patch | 17969 +++++++++++++------
15 {3.15.10 => 3.16.1}/4425_grsec_remove_EI_PAX.patch | 0
16 .../4427_force_XATTR_PAX_tmpfs.patch | 0
17 .../4430_grsec-remove-localversion-grsec.patch | 0
18 {3.15.10 => 3.16.1}/4435_grsec-mute-warnings.patch | 0
19 .../4440_grsec-remove-protected-paths.patch | 0
20 .../4450_grsec-kconfig-default-gids.patch | 0
21 .../4465_selinux-avc_audit-log-curr_ip.patch | 0
22 {3.15.10 => 3.16.1}/4470_disable-compat_vdso.patch | 0
23 {3.15.10 => 3.16.1}/4475_emutramp_default_on.patch | 0
24 3.2.62/0000_README | 2 +-
25 ... 4420_grsecurity-3.0-3.2.62-201408312002.patch} | 30 +-
26 15 files changed, 13074 insertions(+), 5132 deletions(-)
27
28 diff --git a/3.14.17/0000_README b/3.14.17/0000_README
29 index 4ec94f3..99b0d3a 100644
30 --- a/3.14.17/0000_README
31 +++ b/3.14.17/0000_README
32 @@ -2,7 +2,7 @@ README
33 -----------------------------------------------------------------------------
34 Individual Patch Descriptions:
35 -----------------------------------------------------------------------------
36 -Patch: 4420_grsecurity-3.0-3.14.17-201408260041.patch
37 +Patch: 4420_grsecurity-3.0-3.14.17-201408312006.patch
38 From: http://www.grsecurity.net
39 Desc: hardened-sources base patch from upstream grsecurity
40
41
42 diff --git a/3.14.17/4420_grsecurity-3.0-3.14.17-201408260041.patch b/3.14.17/4420_grsecurity-3.0-3.14.17-201408312006.patch
43 similarity index 99%
44 rename from 3.14.17/4420_grsecurity-3.0-3.14.17-201408260041.patch
45 rename to 3.14.17/4420_grsecurity-3.0-3.14.17-201408312006.patch
46 index c27879a..5fb863b 100644
47 --- a/3.14.17/4420_grsecurity-3.0-3.14.17-201408260041.patch
48 +++ b/3.14.17/4420_grsecurity-3.0-3.14.17-201408312006.patch
49 @@ -41765,6 +41765,34 @@ index f45279c..0b14d32 100644
50
51 spin_lock_irqsave(&djrcv_dev->lock, flags);
52 if (dj_report->report_id == REPORT_ID_DJ_SHORT) {
53 +diff --git a/drivers/hid/hid-magicmouse.c b/drivers/hid/hid-magicmouse.c
54 +index 3b43d1c..991ba79 100644
55 +--- a/drivers/hid/hid-magicmouse.c
56 ++++ b/drivers/hid/hid-magicmouse.c
57 +@@ -290,6 +290,11 @@ static int magicmouse_raw_event(struct hid_device *hdev,
58 + if (size < 4 || ((size - 4) % 9) != 0)
59 + return 0;
60 + npoints = (size - 4) / 9;
61 ++ if (npoints > 15) {
62 ++ hid_warn(hdev, "invalid size value (%d) for TRACKPAD_REPORT_ID\n",
63 ++ size);
64 ++ return 0;
65 ++ }
66 + msc->ntouches = 0;
67 + for (ii = 0; ii < npoints; ii++)
68 + magicmouse_emit_touch(msc, ii, data + ii * 9 + 4);
69 +@@ -307,6 +312,11 @@ static int magicmouse_raw_event(struct hid_device *hdev,
70 + if (size < 6 || ((size - 6) % 8) != 0)
71 + return 0;
72 + npoints = (size - 6) / 8;
73 ++ if (npoints > 15) {
74 ++ hid_warn(hdev, "invalid size value (%d) for MOUSE_REPORT_ID\n",
75 ++ size);
76 ++ return 0;
77 ++ }
78 + msc->ntouches = 0;
79 + for (ii = 0; ii < npoints; ii++)
80 + magicmouse_emit_touch(msc, ii, data + ii * 8 + 6);
81 diff --git a/drivers/hid/hid-monterey.c b/drivers/hid/hid-monterey.c
82 index 9e14c00..25daf28 100644
83 --- a/drivers/hid/hid-monterey.c
84 @@ -41791,6 +41819,23 @@ index 736b250..6aca4f2 100644
85 rdesc[41] == 0x00 && rdesc[59] == 0x26 &&
86 rdesc[60] == 0xf9 && rdesc[61] == 0x00) {
87 hid_info(hdev, "fixing up Petalynx Maxter Remote report descriptor\n");
88 +diff --git a/drivers/hid/hid-picolcd_core.c b/drivers/hid/hid-picolcd_core.c
89 +index acbb0210..020df3c 100644
90 +--- a/drivers/hid/hid-picolcd_core.c
91 ++++ b/drivers/hid/hid-picolcd_core.c
92 +@@ -350,6 +350,12 @@ static int picolcd_raw_event(struct hid_device *hdev,
93 + if (!data)
94 + return 1;
95 +
96 ++ if (size > 64) {
97 ++ hid_warn(hdev, "invalid size value (%d) for picolcd raw event\n",
98 ++ size);
99 ++ return 0;
100 ++ }
101 ++
102 + if (report->id == REPORT_KEY_STATE) {
103 + if (data->input_keys)
104 + ret = picolcd_raw_keypad(data, report, raw_data+1, size-1);
105 diff --git a/drivers/hid/hid-sunplus.c b/drivers/hid/hid-sunplus.c
106 index 87fc91e..91072fa 100644
107 --- a/drivers/hid/hid-sunplus.c
108 @@ -63072,7 +63117,7 @@ index 8657335..cd3e37f 100644
109 [OP_CLOSE] = (nfsd4_dec)nfsd4_decode_close,
110 [OP_COMMIT] = (nfsd4_dec)nfsd4_decode_commit,
111 diff --git a/fs/nfsd/nfscache.c b/fs/nfsd/nfscache.c
112 -index f8f060f..c4ba09a 100644
113 +index f8f060f..d9a7258 100644
114 --- a/fs/nfsd/nfscache.c
115 +++ b/fs/nfsd/nfscache.c
116 @@ -519,14 +519,17 @@ nfsd_cache_update(struct svc_rqst *rqstp, int cachetype, __be32 *statp)
117 @@ -63096,6 +63141,15 @@ index f8f060f..c4ba09a 100644
118
119 /* Don't cache excessive amounts of data and XDR failures */
120 if (!statp || len > (256 >> 2)) {
121 +@@ -537,7 +540,7 @@ nfsd_cache_update(struct svc_rqst *rqstp, int cachetype, __be32 *statp)
122 + switch (cachetype) {
123 + case RC_REPLSTAT:
124 + if (len != 1)
125 +- printk("nfsd: RC_REPLSTAT/reply len %d!\n",len);
126 ++ printk("nfsd: RC_REPLSTAT/reply len %ld!\n",len);
127 + rp->c_replstat = *statp;
128 + break;
129 + case RC_REPLBUFF:
130 diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
131 index eea5ad1..5a84ac7 100644
132 --- a/fs/nfsd/vfs.c
133 @@ -63128,7 +63182,7 @@ index eea5ad1..5a84ac7 100644
134
135 if (host_err < 0)
136 diff --git a/fs/nls/nls_base.c b/fs/nls/nls_base.c
137 -index 52ccd34..43a53b1 100644
138 +index 52ccd34..7a6b202 100644
139 --- a/fs/nls/nls_base.c
140 +++ b/fs/nls/nls_base.c
141 @@ -234,21 +234,25 @@ EXPORT_SYMBOL(utf16s_to_utf8s);
142 @@ -63180,6 +63234,24 @@ index 52ccd34..43a53b1 100644
143 spin_unlock(&nls_lock);
144 return 0;
145 }
146 +@@ -272,7 +278,7 @@ int unregister_nls(struct nls_table * nls)
147 + return -EINVAL;
148 + }
149 +
150 +-static struct nls_table *find_nls(char *charset)
151 ++static struct nls_table *find_nls(const char *charset)
152 + {
153 + struct nls_table *nls;
154 + spin_lock(&nls_lock);
155 +@@ -288,7 +294,7 @@ static struct nls_table *find_nls(char *charset)
156 + return nls;
157 + }
158 +
159 +-struct nls_table *load_nls(char *charset)
160 ++struct nls_table *load_nls(const char *charset)
161 + {
162 + return try_then_request_module(find_nls(charset), "nls_%s", charset);
163 + }
164 diff --git a/fs/nls/nls_euc-jp.c b/fs/nls/nls_euc-jp.c
165 index 162b3f1..6076a7c 100644
166 --- a/fs/nls/nls_euc-jp.c
167 @@ -81948,7 +82020,7 @@ index 0000000..33f4af8
168 +
169 +#endif
170 diff --git a/include/linux/nls.h b/include/linux/nls.h
171 -index 520681b..1d67ed2 100644
172 +index 520681b..2b7fabb 100644
173 --- a/include/linux/nls.h
174 +++ b/include/linux/nls.h
175 @@ -31,7 +31,7 @@ struct nls_table {
176 @@ -81960,6 +82032,15 @@ index 520681b..1d67ed2 100644
177
178 /* this value hold the maximum octet of charset */
179 #define NLS_MAX_CHARSET_SIZE 6 /* for UTF-8 */
180 +@@ -46,7 +46,7 @@ enum utf16_endian {
181 + /* nls_base.c */
182 + extern int __register_nls(struct nls_table *, struct module *);
183 + extern int unregister_nls(struct nls_table *);
184 +-extern struct nls_table *load_nls(char *);
185 ++extern struct nls_table *load_nls(const char *);
186 + extern void unload_nls(struct nls_table *);
187 + extern struct nls_table *load_nls_default(void);
188 + #define register_nls(nls) __register_nls((nls), THIS_MODULE)
189 diff --git a/include/linux/notifier.h b/include/linux/notifier.h
190 index d14a4c3..a078786 100644
191 --- a/include/linux/notifier.h
192 @@ -84215,7 +84296,7 @@ index c55aeed..b3393f4 100644
193 /** inet_connection_sock - INET connection oriented sock
194 *
195 diff --git a/include/net/inetpeer.h b/include/net/inetpeer.h
196 -index 823ec7b..1af4453 100644
197 +index 823ec7b..44c938c 100644
198 --- a/include/net/inetpeer.h
199 +++ b/include/net/inetpeer.h
200 @@ -47,7 +47,7 @@ struct inet_peer {
201 @@ -84223,7 +84304,7 @@ index 823ec7b..1af4453 100644
202 union {
203 struct {
204 - atomic_t rid; /* Frag reception counter */
205 -+ atomic_unchecked_t rid; /* Frag reception counter */
206 ++ atomic_unchecked_t rid; /* Frag reception counter */
207 };
208 struct rcu_head rcu;
209 struct inet_peer *gc_next;
210 @@ -91730,7 +91811,7 @@ index e3be87e..7480b36 100644
211
212 ftrace_graph_active++;
213 diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
214 -index 0954450..0ed035c 100644
215 +index 0954450..1e3e687 100644
216 --- a/kernel/trace/ring_buffer.c
217 +++ b/kernel/trace/ring_buffer.c
218 @@ -352,9 +352,9 @@ struct buffer_data_page {
219 @@ -91756,7 +91837,31 @@ index 0954450..0ed035c 100644
220 local_t dropped_events;
221 local_t committing;
222 local_t commits;
223 -@@ -991,8 +991,8 @@ static int rb_tail_page_update(struct ring_buffer_per_cpu *cpu_buffer,
224 +@@ -626,8 +626,22 @@ int ring_buffer_poll_wait(struct ring_buffer *buffer, int cpu,
225 + work = &cpu_buffer->irq_work;
226 + }
227 +
228 +- work->waiters_pending = true;
229 + poll_wait(filp, &work->waiters, poll_table);
230 ++ work->waiters_pending = true;
231 ++ /*
232 ++ * There's a tight race between setting the waiters_pending and
233 ++ * checking if the ring buffer is empty. Once the waiters_pending bit
234 ++ * is set, the next event will wake the task up, but we can get stuck
235 ++ * if there's only a single event in.
236 ++ *
237 ++ * FIXME: Ideally, we need a memory barrier on the writer side as well,
238 ++ * but adding a memory barrier to all events will cause too much of a
239 ++ * performance hit in the fast path. We only need a memory barrier when
240 ++ * the buffer goes from empty to having content. But as this race is
241 ++ * extremely small, and it's not a problem if another event comes in, we
242 ++ * will fix it later.
243 ++ */
244 ++ smp_mb();
245 +
246 + if ((cpu == RING_BUFFER_ALL_CPUS && !ring_buffer_empty(buffer)) ||
247 + (cpu != RING_BUFFER_ALL_CPUS && !ring_buffer_empty_cpu(buffer, cpu)))
248 +@@ -991,8 +1005,8 @@ static int rb_tail_page_update(struct ring_buffer_per_cpu *cpu_buffer,
249 *
250 * We add a counter to the write field to denote this.
251 */
252 @@ -91767,7 +91872,7 @@ index 0954450..0ed035c 100644
253
254 /*
255 * Just make sure we have seen our old_write and synchronize
256 -@@ -1020,8 +1020,8 @@ static int rb_tail_page_update(struct ring_buffer_per_cpu *cpu_buffer,
257 +@@ -1020,8 +1034,8 @@ static int rb_tail_page_update(struct ring_buffer_per_cpu *cpu_buffer,
258 * cmpxchg to only update if an interrupt did not already
259 * do it for us. If the cmpxchg fails, we don't care.
260 */
261 @@ -91778,7 +91883,7 @@ index 0954450..0ed035c 100644
262
263 /*
264 * No need to worry about races with clearing out the commit.
265 -@@ -1385,12 +1385,12 @@ static void rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer);
266 +@@ -1385,12 +1399,12 @@ static void rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer);
267
268 static inline unsigned long rb_page_entries(struct buffer_page *bpage)
269 {
270 @@ -91793,7 +91898,7 @@ index 0954450..0ed035c 100644
271 }
272
273 static int
274 -@@ -1485,7 +1485,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned int nr_pages)
275 +@@ -1485,7 +1499,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned int nr_pages)
276 * bytes consumed in ring buffer from here.
277 * Increment overrun to account for the lost events.
278 */
279 @@ -91802,7 +91907,7 @@ index 0954450..0ed035c 100644
280 local_sub(BUF_PAGE_SIZE, &cpu_buffer->entries_bytes);
281 }
282
283 -@@ -2063,7 +2063,7 @@ rb_handle_head_page(struct ring_buffer_per_cpu *cpu_buffer,
284 +@@ -2063,7 +2077,7 @@ rb_handle_head_page(struct ring_buffer_per_cpu *cpu_buffer,
285 * it is our responsibility to update
286 * the counters.
287 */
288 @@ -91811,7 +91916,7 @@ index 0954450..0ed035c 100644
289 local_sub(BUF_PAGE_SIZE, &cpu_buffer->entries_bytes);
290
291 /*
292 -@@ -2213,7 +2213,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer,
293 +@@ -2213,7 +2227,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer,
294 if (tail == BUF_PAGE_SIZE)
295 tail_page->real_end = 0;
296
297 @@ -91820,7 +91925,7 @@ index 0954450..0ed035c 100644
298 return;
299 }
300
301 -@@ -2248,7 +2248,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer,
302 +@@ -2248,7 +2262,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer,
303 rb_event_set_padding(event);
304
305 /* Set the write back to the previous setting */
306 @@ -91829,7 +91934,7 @@ index 0954450..0ed035c 100644
307 return;
308 }
309
310 -@@ -2260,7 +2260,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer,
311 +@@ -2260,7 +2274,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer,
312
313 /* Set write to end of buffer */
314 length = (tail + length) - BUF_PAGE_SIZE;
315 @@ -91838,7 +91943,7 @@ index 0954450..0ed035c 100644
316 }
317
318 /*
319 -@@ -2286,7 +2286,7 @@ rb_move_tail(struct ring_buffer_per_cpu *cpu_buffer,
320 +@@ -2286,7 +2300,7 @@ rb_move_tail(struct ring_buffer_per_cpu *cpu_buffer,
321 * about it.
322 */
323 if (unlikely(next_page == commit_page)) {
324 @@ -91847,7 +91952,7 @@ index 0954450..0ed035c 100644
325 goto out_reset;
326 }
327
328 -@@ -2342,7 +2342,7 @@ rb_move_tail(struct ring_buffer_per_cpu *cpu_buffer,
329 +@@ -2342,7 +2356,7 @@ rb_move_tail(struct ring_buffer_per_cpu *cpu_buffer,
330 cpu_buffer->tail_page) &&
331 (cpu_buffer->commit_page ==
332 cpu_buffer->reader_page))) {
333 @@ -91856,7 +91961,7 @@ index 0954450..0ed035c 100644
334 goto out_reset;
335 }
336 }
337 -@@ -2390,7 +2390,7 @@ __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer,
338 +@@ -2390,7 +2404,7 @@ __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer,
339 length += RB_LEN_TIME_EXTEND;
340
341 tail_page = cpu_buffer->tail_page;
342 @@ -91865,7 +91970,7 @@ index 0954450..0ed035c 100644
343
344 /* set write to only the index of the write */
345 write &= RB_WRITE_MASK;
346 -@@ -2414,7 +2414,7 @@ __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer,
347 +@@ -2414,7 +2428,7 @@ __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer,
348 kmemcheck_annotate_bitfield(event, bitfield);
349 rb_update_event(cpu_buffer, event, length, add_timestamp, delta);
350
351 @@ -91874,7 +91979,7 @@ index 0954450..0ed035c 100644
352
353 /*
354 * If this is the first commit on the page, then update
355 -@@ -2447,7 +2447,7 @@ rb_try_to_discard(struct ring_buffer_per_cpu *cpu_buffer,
356 +@@ -2447,7 +2461,7 @@ rb_try_to_discard(struct ring_buffer_per_cpu *cpu_buffer,
357
358 if (bpage->page == (void *)addr && rb_page_write(bpage) == old_index) {
359 unsigned long write_mask =
360 @@ -91883,7 +91988,7 @@ index 0954450..0ed035c 100644
361 unsigned long event_length = rb_event_length(event);
362 /*
363 * This is on the tail page. It is possible that
364 -@@ -2457,7 +2457,7 @@ rb_try_to_discard(struct ring_buffer_per_cpu *cpu_buffer,
365 +@@ -2457,7 +2471,7 @@ rb_try_to_discard(struct ring_buffer_per_cpu *cpu_buffer,
366 */
367 old_index += write_mask;
368 new_index += write_mask;
369 @@ -91892,7 +91997,7 @@ index 0954450..0ed035c 100644
370 if (index == old_index) {
371 /* update counters */
372 local_sub(event_length, &cpu_buffer->entries_bytes);
373 -@@ -2849,7 +2849,7 @@ rb_decrement_entry(struct ring_buffer_per_cpu *cpu_buffer,
374 +@@ -2849,7 +2863,7 @@ rb_decrement_entry(struct ring_buffer_per_cpu *cpu_buffer,
375
376 /* Do the likely case first */
377 if (likely(bpage->page == (void *)addr)) {
378 @@ -91901,7 +92006,7 @@ index 0954450..0ed035c 100644
379 return;
380 }
381
382 -@@ -2861,7 +2861,7 @@ rb_decrement_entry(struct ring_buffer_per_cpu *cpu_buffer,
383 +@@ -2861,7 +2875,7 @@ rb_decrement_entry(struct ring_buffer_per_cpu *cpu_buffer,
384 start = bpage;
385 do {
386 if (bpage->page == (void *)addr) {
387 @@ -91910,7 +92015,7 @@ index 0954450..0ed035c 100644
388 return;
389 }
390 rb_inc_page(cpu_buffer, &bpage);
391 -@@ -3145,7 +3145,7 @@ static inline unsigned long
392 +@@ -3145,7 +3159,7 @@ static inline unsigned long
393 rb_num_of_entries(struct ring_buffer_per_cpu *cpu_buffer)
394 {
395 return local_read(&cpu_buffer->entries) -
396 @@ -91919,7 +92024,7 @@ index 0954450..0ed035c 100644
397 }
398
399 /**
400 -@@ -3234,7 +3234,7 @@ unsigned long ring_buffer_overrun_cpu(struct ring_buffer *buffer, int cpu)
401 +@@ -3234,7 +3248,7 @@ unsigned long ring_buffer_overrun_cpu(struct ring_buffer *buffer, int cpu)
402 return 0;
403
404 cpu_buffer = buffer->buffers[cpu];
405 @@ -91928,7 +92033,7 @@ index 0954450..0ed035c 100644
406
407 return ret;
408 }
409 -@@ -3257,7 +3257,7 @@ ring_buffer_commit_overrun_cpu(struct ring_buffer *buffer, int cpu)
410 +@@ -3257,7 +3271,7 @@ ring_buffer_commit_overrun_cpu(struct ring_buffer *buffer, int cpu)
411 return 0;
412
413 cpu_buffer = buffer->buffers[cpu];
414 @@ -91937,7 +92042,7 @@ index 0954450..0ed035c 100644
415
416 return ret;
417 }
418 -@@ -3342,7 +3342,7 @@ unsigned long ring_buffer_overruns(struct ring_buffer *buffer)
419 +@@ -3342,7 +3356,7 @@ unsigned long ring_buffer_overruns(struct ring_buffer *buffer)
420 /* if you care about this being correct, lock the buffer */
421 for_each_buffer_cpu(buffer, cpu) {
422 cpu_buffer = buffer->buffers[cpu];
423 @@ -91946,7 +92051,7 @@ index 0954450..0ed035c 100644
424 }
425
426 return overruns;
427 -@@ -3518,8 +3518,8 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
428 +@@ -3518,8 +3532,8 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
429 /*
430 * Reset the reader page to size zero.
431 */
432 @@ -91957,7 +92062,7 @@ index 0954450..0ed035c 100644
433 local_set(&cpu_buffer->reader_page->page->commit, 0);
434 cpu_buffer->reader_page->real_end = 0;
435
436 -@@ -3553,7 +3553,7 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
437 +@@ -3553,7 +3567,7 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
438 * want to compare with the last_overrun.
439 */
440 smp_mb();
441 @@ -91966,7 +92071,7 @@ index 0954450..0ed035c 100644
442
443 /*
444 * Here's the tricky part.
445 -@@ -4123,8 +4123,8 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer)
446 +@@ -4123,8 +4137,8 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer)
447
448 cpu_buffer->head_page
449 = list_entry(cpu_buffer->pages, struct buffer_page, list);
450 @@ -91977,7 +92082,7 @@ index 0954450..0ed035c 100644
451 local_set(&cpu_buffer->head_page->page->commit, 0);
452
453 cpu_buffer->head_page->read = 0;
454 -@@ -4134,14 +4134,14 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer)
455 +@@ -4134,14 +4148,14 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer)
456
457 INIT_LIST_HEAD(&cpu_buffer->reader_page->list);
458 INIT_LIST_HEAD(&cpu_buffer->new_pages);
459 @@ -91996,7 +92101,7 @@ index 0954450..0ed035c 100644
460 local_set(&cpu_buffer->dropped_events, 0);
461 local_set(&cpu_buffer->entries, 0);
462 local_set(&cpu_buffer->committing, 0);
463 -@@ -4546,8 +4546,8 @@ int ring_buffer_read_page(struct ring_buffer *buffer,
464 +@@ -4546,8 +4560,8 @@ int ring_buffer_read_page(struct ring_buffer *buffer,
465 rb_init_page(bpage);
466 bpage = reader->page;
467 reader->page = *data_page;
468 @@ -100203,7 +100308,7 @@ index 11c8d81..d67116b 100644
469
470 static int raw_seq_show(struct seq_file *seq, void *v)
471 diff --git a/net/ipv4/route.c b/net/ipv4/route.c
472 -index ca5a01e..1f6f4e2 100644
473 +index ca5a01e..8c5cdb4 100644
474 --- a/net/ipv4/route.c
475 +++ b/net/ipv4/route.c
476 @@ -234,7 +234,7 @@ static const struct seq_operations rt_cache_seq_ops = {
477 @@ -100233,7 +100338,7 @@ index ca5a01e..1f6f4e2 100644
478 }
479
480 static const struct file_operations rt_acct_proc_fops = {
481 -@@ -465,7 +465,7 @@ static struct neighbour *ipv4_neigh_lookup(const struct dst_entry *dst,
482 +@@ -465,11 +465,11 @@ static struct neighbour *ipv4_neigh_lookup(const struct dst_entry *dst,
483
484 #define IP_IDENTS_SZ 2048u
485 struct ip_ident_bucket {
486 @@ -100242,6 +100347,11 @@ index ca5a01e..1f6f4e2 100644
487 u32 stamp32;
488 };
489
490 +-static struct ip_ident_bucket *ip_idents __read_mostly;
491 ++static struct ip_ident_bucket ip_idents[IP_IDENTS_SZ] __read_mostly;
492 +
493 + /* In order to protect privacy, we add a perturbation to identifiers
494 + * if one generator is seldom used. This makes hard for an attacker
495 @@ -485,7 +485,7 @@ u32 ip_idents_reserve(u32 hash, int segs)
496 if (old != now && cmpxchg(&bucket->stamp32, old, now) == old)
497 delta = prandom_u32_max(now - old);
498 @@ -100305,6 +100415,19 @@ index ca5a01e..1f6f4e2 100644
499 get_random_bytes(&net->ipv4.dev_addr_genid,
500 sizeof(net->ipv4.dev_addr_genid));
501 return 0;
502 +@@ -2725,11 +2725,7 @@ int __init ip_rt_init(void)
503 + {
504 + int rc = 0;
505 +
506 +- ip_idents = kmalloc(IP_IDENTS_SZ * sizeof(*ip_idents), GFP_KERNEL);
507 +- if (!ip_idents)
508 +- panic("IP: failed to allocate ip_idents\n");
509 +-
510 +- prandom_bytes(ip_idents, IP_IDENTS_SZ * sizeof(*ip_idents));
511 ++ prandom_bytes(ip_idents, sizeof(ip_idents));
512 +
513 + #ifdef CONFIG_IP_ROUTE_CLASSID
514 + ip_rt_acct = __alloc_percpu(256 * sizeof(struct ip_rt_acct), __alignof__(struct ip_rt_acct));
515 diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c
516 index 44eba05..b36864b 100644
517 --- a/net/ipv4/sysctl_net_ipv4.c
518 @@ -101080,18 +101203,6 @@ index 767ab8d..c5ec70a 100644
519 err_alloc:
520 return -ENOMEM;
521 }
522 -diff --git a/net/ipv6/output_core.c b/net/ipv6/output_core.c
523 -index 798eb0f..ab2f47d 100644
524 ---- a/net/ipv6/output_core.c
525 -+++ b/net/ipv6/output_core.c
526 -@@ -7,7 +7,6 @@
527 - #include <net/ip6_fib.h>
528 - #include <net/addrconf.h>
529 -
530 --
531 - int ip6_find_1stfragopt(struct sk_buff *skb, u8 **nexthdr)
532 - {
533 - u16 offset = sizeof(struct ipv6hdr);
534 diff --git a/net/ipv6/ping.c b/net/ipv6/ping.c
535 index bda7429..469b26b 100644
536 --- a/net/ipv6/ping.c
537
538 diff --git a/3.15.10/0000_README b/3.16.1/0000_README
539 similarity index 96%
540 rename from 3.15.10/0000_README
541 rename to 3.16.1/0000_README
542 index 53bdf83..76ef299 100644
543 --- a/3.15.10/0000_README
544 +++ b/3.16.1/0000_README
545 @@ -2,7 +2,7 @@ README
546 -----------------------------------------------------------------------------
547 Individual Patch Descriptions:
548 -----------------------------------------------------------------------------
549 -Patch: 4420_grsecurity-3.0-3.15.10-201408212335.patch
550 +Patch: 4420_grsecurity-3.0-3.16.1-201409010104.patch
551 From: http://www.grsecurity.net
552 Desc: hardened-sources base patch from upstream grsecurity
553
554
555 diff --git a/3.15.10/4420_grsecurity-3.0-3.15.10-201408212335.patch b/3.16.1/4420_grsecurity-3.0-3.16.1-201409010104.patch
556 similarity index 90%
557 rename from 3.15.10/4420_grsecurity-3.0-3.15.10-201408212335.patch
558 rename to 3.16.1/4420_grsecurity-3.0-3.16.1-201409010104.patch
559 index a41c140..6753168 100644
560 --- a/3.15.10/4420_grsecurity-3.0-3.15.10-201408212335.patch
561 +++ b/3.16.1/4420_grsecurity-3.0-3.16.1-201409010104.patch
562 @@ -235,10 +235,10 @@ index 9de9813..1462492 100644
563 +zconf.lex.c
564 zoffset.h
565 diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
566 -index 30a8ad0d..2ed9efd 100644
567 +index b7fa2f5..90cd9f8 100644
568 --- a/Documentation/kernel-parameters.txt
569 +++ b/Documentation/kernel-parameters.txt
570 -@@ -1103,6 +1103,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
571 +@@ -1138,6 +1138,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
572 Format: <unsigned int> such that (rxsize & ~0x1fffc0) == 0.
573 Default: 1024
574
575 @@ -249,7 +249,7 @@ index 30a8ad0d..2ed9efd 100644
576 hashdist= [KNL,NUMA] Large hashes allocated during boot
577 are distributed across NUMA nodes. Defaults on
578 for 64-bit NUMA, off otherwise.
579 -@@ -2099,6 +2103,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
580 +@@ -2141,6 +2145,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
581 noexec=on: enable non-executable mappings (default)
582 noexec=off: disable non-executable mappings
583
584 @@ -260,7 +260,7 @@ index 30a8ad0d..2ed9efd 100644
585 nosmap [X86]
586 Disable SMAP (Supervisor Mode Access Prevention)
587 even if it is supported by processor.
588 -@@ -2366,6 +2374,25 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
589 +@@ -2418,6 +2426,25 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
590 the specified number of seconds. This is to be used if
591 your oopses keep scrolling off the screen.
592
593 @@ -286,11 +286,509 @@ index 30a8ad0d..2ed9efd 100644
594 pcbit= [HW,ISDN]
595
596 pcd. [PARIDE]
597 +diff --git a/Documentation/networking/filter.txt b/Documentation/networking/filter.txt
598 +index ee78eba..a06b48d 100644
599 +--- a/Documentation/networking/filter.txt
600 ++++ b/Documentation/networking/filter.txt
601 +@@ -277,11 +277,10 @@ Possible BPF extensions are shown in the following table:
602 + mark skb->mark
603 + queue skb->queue_mapping
604 + hatype skb->dev->type
605 +- rxhash skb->hash
606 ++ rxhash skb->rxhash
607 + cpu raw_smp_processor_id()
608 + vlan_tci vlan_tx_tag_get(skb)
609 + vlan_pr vlan_tx_tag_present(skb)
610 +- rand prandom_u32()
611 +
612 + These extensions can also be prefixed with '#'.
613 + Examples for low-level BPF:
614 +@@ -309,18 +308,6 @@ Examples for low-level BPF:
615 + ret #-1
616 + drop: ret #0
617 +
618 +-** icmp random packet sampling, 1 in 4
619 +- ldh [12]
620 +- jne #0x800, drop
621 +- ldb [23]
622 +- jneq #1, drop
623 +- # get a random uint32 number
624 +- ld rand
625 +- mod #4
626 +- jneq #1, drop
627 +- ret #-1
628 +- drop: ret #0
629 +-
630 + ** SECCOMP filter example:
631 +
632 + ld [4] /* offsetof(struct seccomp_data, arch) */
633 +@@ -559,456 +546,6 @@ ffffffffa0069c8f + <x>:
634 + For BPF JIT developers, bpf_jit_disasm, bpf_asm and bpf_dbg provides a useful
635 + toolchain for developing and testing the kernel's JIT compiler.
636 +
637 +-BPF kernel internals
638 +---------------------
639 +-Internally, for the kernel interpreter, a different instruction set
640 +-format with similar underlying principles from BPF described in previous
641 +-paragraphs is being used. However, the instruction set format is modelled
642 +-closer to the underlying architecture to mimic native instruction sets, so
643 +-that a better performance can be achieved (more details later). This new
644 +-ISA is called 'eBPF' or 'internal BPF' interchangeably. (Note: eBPF which
645 +-originates from [e]xtended BPF is not the same as BPF extensions! While
646 +-eBPF is an ISA, BPF extensions date back to classic BPF's 'overloading'
647 +-of BPF_LD | BPF_{B,H,W} | BPF_ABS instruction.)
648 +-
649 +-It is designed to be JITed with one to one mapping, which can also open up
650 +-the possibility for GCC/LLVM compilers to generate optimized eBPF code through
651 +-an eBPF backend that performs almost as fast as natively compiled code.
652 +-
653 +-The new instruction set was originally designed with the possible goal in
654 +-mind to write programs in "restricted C" and compile into eBPF with a optional
655 +-GCC/LLVM backend, so that it can just-in-time map to modern 64-bit CPUs with
656 +-minimal performance overhead over two steps, that is, C -> eBPF -> native code.
657 +-
658 +-Currently, the new format is being used for running user BPF programs, which
659 +-includes seccomp BPF, classic socket filters, cls_bpf traffic classifier,
660 +-team driver's classifier for its load-balancing mode, netfilter's xt_bpf
661 +-extension, PTP dissector/classifier, and much more. They are all internally
662 +-converted by the kernel into the new instruction set representation and run
663 +-in the eBPF interpreter. For in-kernel handlers, this all works transparently
664 +-by using sk_unattached_filter_create() for setting up the filter, resp.
665 +-sk_unattached_filter_destroy() for destroying it. The macro
666 +-SK_RUN_FILTER(filter, ctx) transparently invokes eBPF interpreter or JITed
667 +-code to run the filter. 'filter' is a pointer to struct sk_filter that we
668 +-got from sk_unattached_filter_create(), and 'ctx' the given context (e.g.
669 +-skb pointer). All constraints and restrictions from sk_chk_filter() apply
670 +-before a conversion to the new layout is being done behind the scenes!
671 +-
672 +-Currently, the classic BPF format is being used for JITing on most of the
673 +-architectures. Only x86-64 performs JIT compilation from eBPF instruction set,
674 +-however, future work will migrate other JIT compilers as well, so that they
675 +-will profit from the very same benefits.
676 +-
677 +-Some core changes of the new internal format:
678 +-
679 +-- Number of registers increase from 2 to 10:
680 +-
681 +- The old format had two registers A and X, and a hidden frame pointer. The
682 +- new layout extends this to be 10 internal registers and a read-only frame
683 +- pointer. Since 64-bit CPUs are passing arguments to functions via registers
684 +- the number of args from eBPF program to in-kernel function is restricted
685 +- to 5 and one register is used to accept return value from an in-kernel
686 +- function. Natively, x86_64 passes first 6 arguments in registers, aarch64/
687 +- sparcv9/mips64 have 7 - 8 registers for arguments; x86_64 has 6 callee saved
688 +- registers, and aarch64/sparcv9/mips64 have 11 or more callee saved registers.
689 +-
690 +- Therefore, eBPF calling convention is defined as:
691 +-
692 +- * R0 - return value from in-kernel function, and exit value for eBPF program
693 +- * R1 - R5 - arguments from eBPF program to in-kernel function
694 +- * R6 - R9 - callee saved registers that in-kernel function will preserve
695 +- * R10 - read-only frame pointer to access stack
696 +-
697 +- Thus, all eBPF registers map one to one to HW registers on x86_64, aarch64,
698 +- etc, and eBPF calling convention maps directly to ABIs used by the kernel on
699 +- 64-bit architectures.
700 +-
701 +- On 32-bit architectures JIT may map programs that use only 32-bit arithmetic
702 +- and may let more complex programs to be interpreted.
703 +-
704 +- R0 - R5 are scratch registers and eBPF program needs spill/fill them if
705 +- necessary across calls. Note that there is only one eBPF program (== one
706 +- eBPF main routine) and it cannot call other eBPF functions, it can only
707 +- call predefined in-kernel functions, though.
708 +-
709 +-- Register width increases from 32-bit to 64-bit:
710 +-
711 +- Still, the semantics of the original 32-bit ALU operations are preserved
712 +- via 32-bit subregisters. All eBPF registers are 64-bit with 32-bit lower
713 +- subregisters that zero-extend into 64-bit if they are being written to.
714 +- That behavior maps directly to x86_64 and arm64 subregister definition, but
715 +- makes other JITs more difficult.
716 +-
717 +- 32-bit architectures run 64-bit internal BPF programs via interpreter.
718 +- Their JITs may convert BPF programs that only use 32-bit subregisters into
719 +- native instruction set and let the rest being interpreted.
720 +-
721 +- Operation is 64-bit, because on 64-bit architectures, pointers are also
722 +- 64-bit wide, and we want to pass 64-bit values in/out of kernel functions,
723 +- so 32-bit eBPF registers would otherwise require to define register-pair
724 +- ABI, thus, there won't be able to use a direct eBPF register to HW register
725 +- mapping and JIT would need to do combine/split/move operations for every
726 +- register in and out of the function, which is complex, bug prone and slow.
727 +- Another reason is the use of atomic 64-bit counters.
728 +-
729 +-- Conditional jt/jf targets replaced with jt/fall-through:
730 +-
731 +- While the original design has constructs such as "if (cond) jump_true;
732 +- else jump_false;", they are being replaced into alternative constructs like
733 +- "if (cond) jump_true; /* else fall-through */".
734 +-
735 +-- Introduces bpf_call insn and register passing convention for zero overhead
736 +- calls from/to other kernel functions:
737 +-
738 +- Before an in-kernel function call, the internal BPF program needs to
739 +- place function arguments into R1 to R5 registers to satisfy calling
740 +- convention, then the interpreter will take them from registers and pass
741 +- to in-kernel function. If R1 - R5 registers are mapped to CPU registers
742 +- that are used for argument passing on given architecture, the JIT compiler
743 +- doesn't need to emit extra moves. Function arguments will be in the correct
744 +- registers and BPF_CALL instruction will be JITed as single 'call' HW
745 +- instruction. This calling convention was picked to cover common call
746 +- situations without performance penalty.
747 +-
748 +- After an in-kernel function call, R1 - R5 are reset to unreadable and R0 has
749 +- a return value of the function. Since R6 - R9 are callee saved, their state
750 +- is preserved across the call.
751 +-
752 +- For example, consider three C functions:
753 +-
754 +- u64 f1() { return (*_f2)(1); }
755 +- u64 f2(u64 a) { return f3(a + 1, a); }
756 +- u64 f3(u64 a, u64 b) { return a - b; }
757 +-
758 +- GCC can compile f1, f3 into x86_64:
759 +-
760 +- f1:
761 +- movl $1, %edi
762 +- movq _f2(%rip), %rax
763 +- jmp *%rax
764 +- f3:
765 +- movq %rdi, %rax
766 +- subq %rsi, %rax
767 +- ret
768 +-
769 +- Function f2 in eBPF may look like:
770 +-
771 +- f2:
772 +- bpf_mov R2, R1
773 +- bpf_add R1, 1
774 +- bpf_call f3
775 +- bpf_exit
776 +-
777 +- If f2 is JITed and the pointer stored to '_f2'. The calls f1 -> f2 -> f3 and
778 +- returns will be seamless. Without JIT, __sk_run_filter() interpreter needs to
779 +- be used to call into f2.
780 +-
781 +- For practical reasons all eBPF programs have only one argument 'ctx' which is
782 +- already placed into R1 (e.g. on __sk_run_filter() startup) and the programs
783 +- can call kernel functions with up to 5 arguments. Calls with 6 or more arguments
784 +- are currently not supported, but these restrictions can be lifted if necessary
785 +- in the future.
786 +-
787 +- On 64-bit architectures all register map to HW registers one to one. For
788 +- example, x86_64 JIT compiler can map them as ...
789 +-
790 +- R0 - rax
791 +- R1 - rdi
792 +- R2 - rsi
793 +- R3 - rdx
794 +- R4 - rcx
795 +- R5 - r8
796 +- R6 - rbx
797 +- R7 - r13
798 +- R8 - r14
799 +- R9 - r15
800 +- R10 - rbp
801 +-
802 +- ... since x86_64 ABI mandates rdi, rsi, rdx, rcx, r8, r9 for argument passing
803 +- and rbx, r12 - r15 are callee saved.
804 +-
805 +- Then the following internal BPF pseudo-program:
806 +-
807 +- bpf_mov R6, R1 /* save ctx */
808 +- bpf_mov R2, 2
809 +- bpf_mov R3, 3
810 +- bpf_mov R4, 4
811 +- bpf_mov R5, 5
812 +- bpf_call foo
813 +- bpf_mov R7, R0 /* save foo() return value */
814 +- bpf_mov R1, R6 /* restore ctx for next call */
815 +- bpf_mov R2, 6
816 +- bpf_mov R3, 7
817 +- bpf_mov R4, 8
818 +- bpf_mov R5, 9
819 +- bpf_call bar
820 +- bpf_add R0, R7
821 +- bpf_exit
822 +-
823 +- After JIT to x86_64 may look like:
824 +-
825 +- push %rbp
826 +- mov %rsp,%rbp
827 +- sub $0x228,%rsp
828 +- mov %rbx,-0x228(%rbp)
829 +- mov %r13,-0x220(%rbp)
830 +- mov %rdi,%rbx
831 +- mov $0x2,%esi
832 +- mov $0x3,%edx
833 +- mov $0x4,%ecx
834 +- mov $0x5,%r8d
835 +- callq foo
836 +- mov %rax,%r13
837 +- mov %rbx,%rdi
838 +- mov $0x2,%esi
839 +- mov $0x3,%edx
840 +- mov $0x4,%ecx
841 +- mov $0x5,%r8d
842 +- callq bar
843 +- add %r13,%rax
844 +- mov -0x228(%rbp),%rbx
845 +- mov -0x220(%rbp),%r13
846 +- leaveq
847 +- retq
848 +-
849 +- Which is in this example equivalent in C to:
850 +-
851 +- u64 bpf_filter(u64 ctx)
852 +- {
853 +- return foo(ctx, 2, 3, 4, 5) + bar(ctx, 6, 7, 8, 9);
854 +- }
855 +-
856 +- In-kernel functions foo() and bar() with prototype: u64 (*)(u64 arg1, u64
857 +- arg2, u64 arg3, u64 arg4, u64 arg5); will receive arguments in proper
858 +- registers and place their return value into '%rax' which is R0 in eBPF.
859 +- Prologue and epilogue are emitted by JIT and are implicit in the
860 +- interpreter. R0-R5 are scratch registers, so eBPF program needs to preserve
861 +- them across the calls as defined by calling convention.
862 +-
863 +- For example the following program is invalid:
864 +-
865 +- bpf_mov R1, 1
866 +- bpf_call foo
867 +- bpf_mov R0, R1
868 +- bpf_exit
869 +-
870 +- After the call the registers R1-R5 contain junk values and cannot be read.
871 +- In the future an eBPF verifier can be used to validate internal BPF programs.
872 +-
873 +-Also in the new design, eBPF is limited to 4096 insns, which means that any
874 +-program will terminate quickly and will only call a fixed number of kernel
875 +-functions. Original BPF and the new format are two operand instructions,
876 +-which helps to do one-to-one mapping between eBPF insn and x86 insn during JIT.
877 +-
878 +-The input context pointer for invoking the interpreter function is generic,
879 +-its content is defined by a specific use case. For seccomp register R1 points
880 +-to seccomp_data, for converted BPF filters R1 points to a skb.
881 +-
882 +-A program, that is translated internally consists of the following elements:
883 +-
884 +- op:16, jt:8, jf:8, k:32 ==> op:8, dst_reg:4, src_reg:4, off:16, imm:32
885 +-
886 +-So far 87 internal BPF instructions were implemented. 8-bit 'op' opcode field
887 +-has room for new instructions. Some of them may use 16/24/32 byte encoding. New
888 +-instructions must be multiple of 8 bytes to preserve backward compatibility.
889 +-
890 +-Internal BPF is a general purpose RISC instruction set. Not every register and
891 +-every instruction are used during translation from original BPF to new format.
892 +-For example, socket filters are not using 'exclusive add' instruction, but
893 +-tracing filters may do to maintain counters of events, for example. Register R9
894 +-is not used by socket filters either, but more complex filters may be running
895 +-out of registers and would have to resort to spill/fill to stack.
896 +-
897 +-Internal BPF can used as generic assembler for last step performance
898 +-optimizations, socket filters and seccomp are using it as assembler. Tracing
899 +-filters may use it as assembler to generate code from kernel. In kernel usage
900 +-may not be bounded by security considerations, since generated internal BPF code
901 +-may be optimizing internal code path and not being exposed to the user space.
902 +-Safety of internal BPF can come from a verifier (TBD). In such use cases as
903 +-described, it may be used as safe instruction set.
904 +-
905 +-Just like the original BPF, the new format runs within a controlled environment,
906 +-is deterministic and the kernel can easily prove that. The safety of the program
907 +-can be determined in two steps: first step does depth-first-search to disallow
908 +-loops and other CFG validation; second step starts from the first insn and
909 +-descends all possible paths. It simulates execution of every insn and observes
910 +-the state change of registers and stack.
911 +-
912 +-eBPF opcode encoding
913 +---------------------
914 +-
915 +-eBPF is reusing most of the opcode encoding from classic to simplify conversion
916 +-of classic BPF to eBPF. For arithmetic and jump instructions the 8-bit 'code'
917 +-field is divided into three parts:
918 +-
919 +- +----------------+--------+--------------------+
920 +- | 4 bits | 1 bit | 3 bits |
921 +- | operation code | source | instruction class |
922 +- +----------------+--------+--------------------+
923 +- (MSB) (LSB)
924 +-
925 +-Three LSB bits store instruction class which is one of:
926 +-
927 +- Classic BPF classes: eBPF classes:
928 +-
929 +- BPF_LD 0x00 BPF_LD 0x00
930 +- BPF_LDX 0x01 BPF_LDX 0x01
931 +- BPF_ST 0x02 BPF_ST 0x02
932 +- BPF_STX 0x03 BPF_STX 0x03
933 +- BPF_ALU 0x04 BPF_ALU 0x04
934 +- BPF_JMP 0x05 BPF_JMP 0x05
935 +- BPF_RET 0x06 [ class 6 unused, for future if needed ]
936 +- BPF_MISC 0x07 BPF_ALU64 0x07
937 +-
938 +-When BPF_CLASS(code) == BPF_ALU or BPF_JMP, 4th bit encodes source operand ...
939 +-
940 +- BPF_K 0x00
941 +- BPF_X 0x08
942 +-
943 +- * in classic BPF, this means:
944 +-
945 +- BPF_SRC(code) == BPF_X - use register X as source operand
946 +- BPF_SRC(code) == BPF_K - use 32-bit immediate as source operand
947 +-
948 +- * in eBPF, this means:
949 +-
950 +- BPF_SRC(code) == BPF_X - use 'src_reg' register as source operand
951 +- BPF_SRC(code) == BPF_K - use 32-bit immediate as source operand
952 +-
953 +-... and four MSB bits store operation code.
954 +-
955 +-If BPF_CLASS(code) == BPF_ALU or BPF_ALU64 [ in eBPF ], BPF_OP(code) is one of:
956 +-
957 +- BPF_ADD 0x00
958 +- BPF_SUB 0x10
959 +- BPF_MUL 0x20
960 +- BPF_DIV 0x30
961 +- BPF_OR 0x40
962 +- BPF_AND 0x50
963 +- BPF_LSH 0x60
964 +- BPF_RSH 0x70
965 +- BPF_NEG 0x80
966 +- BPF_MOD 0x90
967 +- BPF_XOR 0xa0
968 +- BPF_MOV 0xb0 /* eBPF only: mov reg to reg */
969 +- BPF_ARSH 0xc0 /* eBPF only: sign extending shift right */
970 +- BPF_END 0xd0 /* eBPF only: endianness conversion */
971 +-
972 +-If BPF_CLASS(code) == BPF_JMP, BPF_OP(code) is one of:
973 +-
974 +- BPF_JA 0x00
975 +- BPF_JEQ 0x10
976 +- BPF_JGT 0x20
977 +- BPF_JGE 0x30
978 +- BPF_JSET 0x40
979 +- BPF_JNE 0x50 /* eBPF only: jump != */
980 +- BPF_JSGT 0x60 /* eBPF only: signed '>' */
981 +- BPF_JSGE 0x70 /* eBPF only: signed '>=' */
982 +- BPF_CALL 0x80 /* eBPF only: function call */
983 +- BPF_EXIT 0x90 /* eBPF only: function return */
984 +-
985 +-So BPF_ADD | BPF_X | BPF_ALU means 32-bit addition in both classic BPF
986 +-and eBPF. There are only two registers in classic BPF, so it means A += X.
987 +-In eBPF it means dst_reg = (u32) dst_reg + (u32) src_reg; similarly,
988 +-BPF_XOR | BPF_K | BPF_ALU means A ^= imm32 in classic BPF and analogous
989 +-src_reg = (u32) src_reg ^ (u32) imm32 in eBPF.
990 +-
991 +-Classic BPF is using BPF_MISC class to represent A = X and X = A moves.
992 +-eBPF is using BPF_MOV | BPF_X | BPF_ALU code instead. Since there are no
993 +-BPF_MISC operations in eBPF, the class 7 is used as BPF_ALU64 to mean
994 +-exactly the same operations as BPF_ALU, but with 64-bit wide operands
995 +-instead. So BPF_ADD | BPF_X | BPF_ALU64 means 64-bit addition, i.e.:
996 +-dst_reg = dst_reg + src_reg
997 +-
998 +-Classic BPF wastes the whole BPF_RET class to represent a single 'ret'
999 +-operation. Classic BPF_RET | BPF_K means copy imm32 into return register
1000 +-and perform function exit. eBPF is modeled to match CPU, so BPF_JMP | BPF_EXIT
1001 +-in eBPF means function exit only. The eBPF program needs to store return
1002 +-value into register R0 before doing a BPF_EXIT. Class 6 in eBPF is currently
1003 +-unused and reserved for future use.
1004 +-
1005 +-For load and store instructions the 8-bit 'code' field is divided as:
1006 +-
1007 +- +--------+--------+-------------------+
1008 +- | 3 bits | 2 bits | 3 bits |
1009 +- | mode | size | instruction class |
1010 +- +--------+--------+-------------------+
1011 +- (MSB) (LSB)
1012 +-
1013 +-Size modifier is one of ...
1014 +-
1015 +- BPF_W 0x00 /* word */
1016 +- BPF_H 0x08 /* half word */
1017 +- BPF_B 0x10 /* byte */
1018 +- BPF_DW 0x18 /* eBPF only, double word */
1019 +-
1020 +-... which encodes size of load/store operation:
1021 +-
1022 +- B - 1 byte
1023 +- H - 2 byte
1024 +- W - 4 byte
1025 +- DW - 8 byte (eBPF only)
1026 +-
1027 +-Mode modifier is one of:
1028 +-
1029 +- BPF_IMM 0x00 /* classic BPF only, reserved in eBPF */
1030 +- BPF_ABS 0x20
1031 +- BPF_IND 0x40
1032 +- BPF_MEM 0x60
1033 +- BPF_LEN 0x80 /* classic BPF only, reserved in eBPF */
1034 +- BPF_MSH 0xa0 /* classic BPF only, reserved in eBPF */
1035 +- BPF_XADD 0xc0 /* eBPF only, exclusive add */
1036 +-
1037 +-eBPF has two non-generic instructions: (BPF_ABS | <size> | BPF_LD) and
1038 +-(BPF_IND | <size> | BPF_LD) which are used to access packet data.
1039 +-
1040 +-They had to be carried over from classic to have strong performance of
1041 +-socket filters running in eBPF interpreter. These instructions can only
1042 +-be used when interpreter context is a pointer to 'struct sk_buff' and
1043 +-have seven implicit operands. Register R6 is an implicit input that must
1044 +-contain pointer to sk_buff. Register R0 is an implicit output which contains
1045 +-the data fetched from the packet. Registers R1-R5 are scratch registers
1046 +-and must not be used to store the data across BPF_ABS | BPF_LD or
1047 +-BPF_IND | BPF_LD instructions.
1048 +-
1049 +-These instructions have implicit program exit condition as well. When
1050 +-eBPF program is trying to access the data beyond the packet boundary,
1051 +-the interpreter will abort the execution of the program. JIT compilers
1052 +-therefore must preserve this property. src_reg and imm32 fields are
1053 +-explicit inputs to these instructions.
1054 +-
1055 +-For example:
1056 +-
1057 +- BPF_IND | BPF_W | BPF_LD means:
1058 +-
1059 +- R0 = ntohl(*(u32 *) (((struct sk_buff *) R6)->data + src_reg + imm32))
1060 +- and R1 - R5 were scratched.
1061 +-
1062 +-Unlike classic BPF instruction set, eBPF has generic load/store operations:
1063 +-
1064 +-BPF_MEM | <size> | BPF_STX: *(size *) (dst_reg + off) = src_reg
1065 +-BPF_MEM | <size> | BPF_ST: *(size *) (dst_reg + off) = imm32
1066 +-BPF_MEM | <size> | BPF_LDX: dst_reg = *(size *) (src_reg + off)
1067 +-BPF_XADD | BPF_W | BPF_STX: lock xadd *(u32 *)(dst_reg + off16) += src_reg
1068 +-BPF_XADD | BPF_DW | BPF_STX: lock xadd *(u64 *)(dst_reg + off16) += src_reg
1069 +-
1070 +-Where size is one of: BPF_B or BPF_H or BPF_W or BPF_DW. Note that 1 and
1071 +-2 byte atomic increments are not supported.
1072 +-
1073 +-Testing
1074 +--------
1075 +-
1076 +-Next to the BPF toolchain, the kernel also ships a test module that contains
1077 +-various test cases for classic and internal BPF that can be executed against
1078 +-the BPF interpreter and JIT compiler. It can be found in lib/test_bpf.c and
1079 +-enabled via Kconfig:
1080 +-
1081 +- CONFIG_TEST_BPF=m
1082 +-
1083 +-After the module has been built and installed, the test suite can be executed
1084 +-via insmod or modprobe against 'test_bpf' module. Results of the test cases
1085 +-including timings in nsec can be found in the kernel log (dmesg).
1086 +-
1087 + Misc
1088 + ----
1089 +
1090 +@@ -1024,4 +561,3 @@ the underlying architecture.
1091 +
1092 + Jay Schulist <jschlst@×××××.org>
1093 + Daniel Borkmann <dborkman@××××××.com>
1094 +-Alexei Starovoitov <ast@××××××××.com>
1095 diff --git a/Makefile b/Makefile
1096 -index 76b75f7b84..34cd7f7 100644
1097 +index 87663a2..906dc62 100644
1098 --- a/Makefile
1099 +++ b/Makefile
1100 -@@ -245,8 +245,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
1101 +@@ -303,8 +303,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
1102
1103 HOSTCC = gcc
1104 HOSTCXX = g++
1105 @@ -302,7 +800,7 @@ index 76b75f7b84..34cd7f7 100644
1106
1107 ifeq ($(shell $(HOSTCC) -v 2>&1 | grep -c "clang version"), 1)
1108 HOSTCFLAGS += -Wno-unused-value -Wno-unused-parameter \
1109 -@@ -438,8 +439,8 @@ export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \
1110 +@@ -449,8 +450,8 @@ export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \
1111 # Rules shared between *config targets and build targets
1112
1113 # Basic helpers built in scripts/
1114 @@ -313,7 +811,7 @@ index 76b75f7b84..34cd7f7 100644
1115 $(Q)$(MAKE) $(build)=scripts/basic
1116 $(Q)rm -f .tmp_quiet_recordmcount
1117
1118 -@@ -600,6 +601,75 @@ else
1119 +@@ -621,6 +622,75 @@ else
1120 KBUILD_CFLAGS += -O2
1121 endif
1122
1123 @@ -386,10 +884,10 @@ index 76b75f7b84..34cd7f7 100644
1124 +endif
1125 +endif
1126 +
1127 - include $(srctree)/arch/$(SRCARCH)/Makefile
1128 -
1129 ifdef CONFIG_READABLE_ASM
1130 -@@ -818,7 +888,7 @@ export mod_sign_cmd
1131 + # Disable optimizations that make assembler listings hard to read.
1132 + # reorder blocks reorders the control in the function
1133 +@@ -839,7 +909,7 @@ export mod_sign_cmd
1134
1135
1136 ifeq ($(KBUILD_EXTMOD),)
1137 @@ -398,16 +896,16 @@ index 76b75f7b84..34cd7f7 100644
1138
1139 vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \
1140 $(core-y) $(core-m) $(drivers-y) $(drivers-m) \
1141 -@@ -867,6 +937,8 @@ endif
1142 +@@ -888,6 +958,8 @@ endif
1143
1144 - # The actual objects are generated when descending,
1145 + # The actual objects are generated when descending,
1146 # make sure no implicit rule kicks in
1147 +$(filter-out $(init-y),$(vmlinux-deps)): KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
1148 +$(filter-out $(init-y),$(vmlinux-deps)): KBUILD_AFLAGS += $(GCC_PLUGINS_AFLAGS)
1149 $(sort $(vmlinux-deps)): $(vmlinux-dirs) ;
1150
1151 # Handle descending into subdirectories listed in $(vmlinux-dirs)
1152 -@@ -876,7 +948,7 @@ $(sort $(vmlinux-deps)): $(vmlinux-dirs) ;
1153 +@@ -897,7 +969,7 @@ $(sort $(vmlinux-deps)): $(vmlinux-dirs) ;
1154 # Error messages still appears in the original language
1155
1156 PHONY += $(vmlinux-dirs)
1157 @@ -416,7 +914,7 @@ index 76b75f7b84..34cd7f7 100644
1158 $(Q)$(MAKE) $(build)=$@
1159
1160 define filechk_kernel.release
1161 -@@ -919,10 +991,13 @@ prepare1: prepare2 $(version_h) include/generated/utsrelease.h \
1162 +@@ -940,10 +1012,13 @@ prepare1: prepare2 $(version_h) include/generated/utsrelease.h \
1163
1164 archprepare: archheaders archscripts prepare1 scripts_basic
1165
1166 @@ -430,8 +928,8 @@ index 76b75f7b84..34cd7f7 100644
1167 prepare: prepare0
1168
1169 # Generate some files
1170 -@@ -1030,6 +1105,8 @@ all: modules
1171 - # using awk while concatenating to the final file.
1172 +@@ -1051,6 +1126,8 @@ all: modules
1173 + # using awk while concatenating to the final file.
1174
1175 PHONY += modules
1176 +modules: KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
1177 @@ -439,7 +937,7 @@ index 76b75f7b84..34cd7f7 100644
1178 modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
1179 $(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order
1180 @$(kecho) ' Building modules, stage 2.';
1181 -@@ -1045,7 +1122,7 @@ modules.builtin: $(vmlinux-dirs:%=%/modules.builtin)
1182 +@@ -1066,7 +1143,7 @@ modules.builtin: $(vmlinux-dirs:%=%/modules.builtin)
1183
1184 # Target to prepare building external modules
1185 PHONY += modules_prepare
1186 @@ -448,7 +946,7 @@ index 76b75f7b84..34cd7f7 100644
1187
1188 # Target to install modules
1189 PHONY += modules_install
1190 -@@ -1111,7 +1188,10 @@ MRPROPER_FILES += .config .config.old .version .old_version $(version_h) \
1191 +@@ -1132,7 +1209,10 @@ MRPROPER_FILES += .config .config.old .version .old_version $(version_h) \
1192 Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \
1193 signing_key.priv signing_key.x509 x509.genkey \
1194 extra_certificates signing_key.x509.keyid \
1195 @@ -460,7 +958,7 @@ index 76b75f7b84..34cd7f7 100644
1196
1197 # clean - Delete most, but leave enough to build external modules
1198 #
1199 -@@ -1150,7 +1230,7 @@ distclean: mrproper
1200 +@@ -1171,7 +1251,7 @@ distclean: mrproper
1201 @find $(srctree) $(RCS_FIND_IGNORE) \
1202 \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
1203 -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
1204 @@ -469,7 +967,7 @@ index 76b75f7b84..34cd7f7 100644
1205 -type f -print | xargs rm -f
1206
1207
1208 -@@ -1311,6 +1391,8 @@ PHONY += $(module-dirs) modules
1209 +@@ -1332,6 +1412,8 @@ PHONY += $(module-dirs) modules
1210 $(module-dirs): crmodverdir $(objtree)/Module.symvers
1211 $(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@)
1212
1213 @@ -478,7 +976,7 @@ index 76b75f7b84..34cd7f7 100644
1214 modules: $(module-dirs)
1215 @$(kecho) ' Building modules, stage 2.';
1216 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
1217 -@@ -1450,17 +1532,21 @@ else
1218 +@@ -1471,17 +1553,21 @@ else
1219 target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@))
1220 endif
1221
1222 @@ -504,7 +1002,7 @@ index 76b75f7b84..34cd7f7 100644
1223 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1224 %.symtypes: %.c prepare scripts FORCE
1225 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1226 -@@ -1470,11 +1556,15 @@ endif
1227 +@@ -1491,11 +1577,15 @@ endif
1228 $(cmd_crmodverdir)
1229 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
1230 $(build)=$(build-dir)
1231 @@ -523,10 +1021,10 @@ index 76b75f7b84..34cd7f7 100644
1232 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
1233 $(build)=$(build-dir) $(@:.ko=.o)
1234 diff --git a/arch/alpha/include/asm/atomic.h b/arch/alpha/include/asm/atomic.h
1235 -index 78b03ef..da28a51 100644
1236 +index ed60a1e..47f1a55 100644
1237 --- a/arch/alpha/include/asm/atomic.h
1238 +++ b/arch/alpha/include/asm/atomic.h
1239 -@@ -292,6 +292,16 @@ static inline long atomic64_dec_if_positive(atomic64_t *v)
1240 +@@ -292,4 +292,14 @@ static inline long atomic64_dec_if_positive(atomic64_t *v)
1241 #define atomic_dec(v) atomic_sub(1,(v))
1242 #define atomic64_dec(v) atomic64_sub(1,(v))
1243
1244 @@ -540,9 +1038,7 @@ index 78b03ef..da28a51 100644
1245 +#define atomic64_dec_unchecked(v) atomic64_dec(v)
1246 +#define atomic64_cmpxchg_unchecked(v, o, n) atomic64_cmpxchg((v), (o), (n))
1247 +
1248 - #define smp_mb__before_atomic_dec() smp_mb()
1249 - #define smp_mb__after_atomic_dec() smp_mb()
1250 - #define smp_mb__before_atomic_inc() smp_mb()
1251 + #endif /* _ALPHA_ATOMIC_H */
1252 diff --git a/arch/alpha/include/asm/cache.h b/arch/alpha/include/asm/cache.h
1253 index ad368a9..fbe0f25 100644
1254 --- a/arch/alpha/include/asm/cache.h
1255 @@ -855,10 +1351,10 @@ index 98838a0..b304fb4 100644
1256 /* Allow reads even for write-only mappings */
1257 if (!(vma->vm_flags & (VM_READ | VM_WRITE)))
1258 diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
1259 -index 34c7a24..592fca9 100644
1260 +index 290f02ee..a639059 100644
1261 --- a/arch/arm/Kconfig
1262 +++ b/arch/arm/Kconfig
1263 -@@ -1878,7 +1878,7 @@ config ALIGNMENT_TRAP
1264 +@@ -1787,7 +1787,7 @@ config ALIGNMENT_TRAP
1265
1266 config UACCESS_WITH_MEMCPY
1267 bool "Use kernel mem{cpy,set}() for {copy_to,clear}_user()"
1268 @@ -867,7 +1363,7 @@ index 34c7a24..592fca9 100644
1269 default y if CPU_FEROCEON
1270 help
1271 Implement faster copy_to_user and clear_user methods for CPU
1272 -@@ -2142,6 +2142,7 @@ config XIP_PHYS_ADDR
1273 +@@ -2051,6 +2051,7 @@ config XIP_PHYS_ADDR
1274 config KEXEC
1275 bool "Kexec system call (EXPERIMENTAL)"
1276 depends on (!SMP || PM_SLEEP_SMP)
1277 @@ -876,7 +1372,7 @@ index 34c7a24..592fca9 100644
1278 kexec is a system call that implements the ability to shutdown your
1279 current kernel, and to start another kernel. It is like a reboot
1280 diff --git a/arch/arm/include/asm/atomic.h b/arch/arm/include/asm/atomic.h
1281 -index 9a92fd7..3502a80 100644
1282 +index 3040359..89b3dfc 100644
1283 --- a/arch/arm/include/asm/atomic.h
1284 +++ b/arch/arm/include/asm/atomic.h
1285 @@ -18,17 +18,35 @@
1286 @@ -1193,7 +1689,7 @@ index 9a92fd7..3502a80 100644
1287 #define atomic_dec_return(v) (atomic_sub_return(1, v))
1288 #define atomic_sub_and_test(i, v) (atomic_sub_return(i, v) == 0)
1289
1290 -@@ -251,6 +453,14 @@ typedef struct {
1291 +@@ -246,6 +448,14 @@ typedef struct {
1292 long long counter;
1293 } atomic64_t;
1294
1295 @@ -1208,7 +1704,7 @@ index 9a92fd7..3502a80 100644
1296 #define ATOMIC64_INIT(i) { (i) }
1297
1298 #ifdef CONFIG_ARM_LPAE
1299 -@@ -267,6 +477,19 @@ static inline long long atomic64_read(const atomic64_t *v)
1300 +@@ -262,6 +472,19 @@ static inline long long atomic64_read(const atomic64_t *v)
1301 return result;
1302 }
1303
1304 @@ -1228,7 +1724,7 @@ index 9a92fd7..3502a80 100644
1305 static inline void atomic64_set(atomic64_t *v, long long i)
1306 {
1307 __asm__ __volatile__("@ atomic64_set\n"
1308 -@@ -275,6 +498,15 @@ static inline void atomic64_set(atomic64_t *v, long long i)
1309 +@@ -270,6 +493,15 @@ static inline void atomic64_set(atomic64_t *v, long long i)
1310 : "r" (&v->counter), "r" (i)
1311 );
1312 }
1313 @@ -1244,7 +1740,7 @@ index 9a92fd7..3502a80 100644
1314 #else
1315 static inline long long atomic64_read(const atomic64_t *v)
1316 {
1317 -@@ -289,6 +521,19 @@ static inline long long atomic64_read(const atomic64_t *v)
1318 +@@ -284,6 +516,19 @@ static inline long long atomic64_read(const atomic64_t *v)
1319 return result;
1320 }
1321
1322 @@ -1264,7 +1760,7 @@ index 9a92fd7..3502a80 100644
1323 static inline void atomic64_set(atomic64_t *v, long long i)
1324 {
1325 long long tmp;
1326 -@@ -303,6 +548,21 @@ static inline void atomic64_set(atomic64_t *v, long long i)
1327 +@@ -298,6 +543,21 @@ static inline void atomic64_set(atomic64_t *v, long long i)
1328 : "r" (&v->counter), "r" (i)
1329 : "cc");
1330 }
1331 @@ -1286,7 +1782,7 @@ index 9a92fd7..3502a80 100644
1332 #endif
1333
1334 static inline void atomic64_add(long long i, atomic64_t *v)
1335 -@@ -314,6 +574,37 @@ static inline void atomic64_add(long long i, atomic64_t *v)
1336 +@@ -309,6 +569,37 @@ static inline void atomic64_add(long long i, atomic64_t *v)
1337 __asm__ __volatile__("@ atomic64_add\n"
1338 "1: ldrexd %0, %H0, [%3]\n"
1339 " adds %Q0, %Q0, %Q4\n"
1340 @@ -1324,7 +1820,7 @@ index 9a92fd7..3502a80 100644
1341 " adc %R0, %R0, %R4\n"
1342 " strexd %1, %0, %H0, [%3]\n"
1343 " teq %1, #0\n"
1344 -@@ -334,6 +625,44 @@ static inline long long atomic64_add_return(long long i, atomic64_t *v)
1345 +@@ -329,6 +620,44 @@ static inline long long atomic64_add_return(long long i, atomic64_t *v)
1346 __asm__ __volatile__("@ atomic64_add_return\n"
1347 "1: ldrexd %0, %H0, [%3]\n"
1348 " adds %Q0, %Q0, %Q4\n"
1349 @@ -1369,7 +1865,7 @@ index 9a92fd7..3502a80 100644
1350 " adc %R0, %R0, %R4\n"
1351 " strexd %1, %0, %H0, [%3]\n"
1352 " teq %1, #0\n"
1353 -@@ -356,6 +685,37 @@ static inline void atomic64_sub(long long i, atomic64_t *v)
1354 +@@ -351,6 +680,37 @@ static inline void atomic64_sub(long long i, atomic64_t *v)
1355 __asm__ __volatile__("@ atomic64_sub\n"
1356 "1: ldrexd %0, %H0, [%3]\n"
1357 " subs %Q0, %Q0, %Q4\n"
1358 @@ -1407,7 +1903,7 @@ index 9a92fd7..3502a80 100644
1359 " sbc %R0, %R0, %R4\n"
1360 " strexd %1, %0, %H0, [%3]\n"
1361 " teq %1, #0\n"
1362 -@@ -376,16 +736,29 @@ static inline long long atomic64_sub_return(long long i, atomic64_t *v)
1363 +@@ -371,16 +731,29 @@ static inline long long atomic64_sub_return(long long i, atomic64_t *v)
1364 __asm__ __volatile__("@ atomic64_sub_return\n"
1365 "1: ldrexd %0, %H0, [%3]\n"
1366 " subs %Q0, %Q0, %Q4\n"
1367 @@ -1440,7 +1936,7 @@ index 9a92fd7..3502a80 100644
1368 return result;
1369 }
1370
1371 -@@ -415,6 +788,31 @@ static inline long long atomic64_cmpxchg(atomic64_t *ptr, long long old,
1372 +@@ -410,6 +783,31 @@ static inline long long atomic64_cmpxchg(atomic64_t *ptr, long long old,
1373 return oldval;
1374 }
1375
1376 @@ -1472,7 +1968,7 @@ index 9a92fd7..3502a80 100644
1377 static inline long long atomic64_xchg(atomic64_t *ptr, long long new)
1378 {
1379 long long result;
1380 -@@ -440,21 +838,35 @@ static inline long long atomic64_xchg(atomic64_t *ptr, long long new)
1381 +@@ -435,21 +833,35 @@ static inline long long atomic64_xchg(atomic64_t *ptr, long long new)
1382 static inline long long atomic64_dec_if_positive(atomic64_t *v)
1383 {
1384 long long result;
1385 @@ -1514,7 +2010,7 @@ index 9a92fd7..3502a80 100644
1386 : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
1387 : "r" (&v->counter)
1388 : "cc");
1389 -@@ -478,13 +890,25 @@ static inline int atomic64_add_unless(atomic64_t *v, long long a, long long u)
1390 +@@ -473,13 +885,25 @@ static inline int atomic64_add_unless(atomic64_t *v, long long a, long long u)
1391 " teq %0, %5\n"
1392 " teqeq %H0, %H5\n"
1393 " moveq %1, #0\n"
1394 @@ -1543,7 +2039,7 @@ index 9a92fd7..3502a80 100644
1395 : "=&r" (val), "+r" (ret), "=&r" (tmp), "+Qo" (v->counter)
1396 : "r" (&v->counter), "r" (u), "r" (a)
1397 : "cc");
1398 -@@ -497,10 +921,13 @@ static inline int atomic64_add_unless(atomic64_t *v, long long a, long long u)
1399 +@@ -492,10 +916,13 @@ static inline int atomic64_add_unless(atomic64_t *v, long long a, long long u)
1400
1401 #define atomic64_add_negative(a, v) (atomic64_add_return((a), (v)) < 0)
1402 #define atomic64_inc(v) atomic64_add(1LL, (v))
1403 @@ -1558,7 +2054,7 @@ index 9a92fd7..3502a80 100644
1404 #define atomic64_dec_and_test(v) (atomic64_dec_return((v)) == 0)
1405 #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1LL, 0LL)
1406 diff --git a/arch/arm/include/asm/barrier.h b/arch/arm/include/asm/barrier.h
1407 -index 2f59f74..1594659 100644
1408 +index c6a3e73..35cca85 100644
1409 --- a/arch/arm/include/asm/barrier.h
1410 +++ b/arch/arm/include/asm/barrier.h
1411 @@ -63,7 +63,7 @@
1412 @@ -1594,7 +2090,7 @@ index 75fe66b..ba3dee4 100644
1413
1414 #endif
1415 diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h
1416 -index 8b8b616..d973d24 100644
1417 +index fd43f7f..a817f5a 100644
1418 --- a/arch/arm/include/asm/cacheflush.h
1419 +++ b/arch/arm/include/asm/cacheflush.h
1420 @@ -116,7 +116,7 @@ struct cpu_cache_fns {
1421 @@ -1863,13 +2359,13 @@ index f98c7f3..e5c626d 100644
1422 MT_MEMORY_DMA_READY,
1423 };
1424 diff --git a/arch/arm/include/asm/outercache.h b/arch/arm/include/asm/outercache.h
1425 -index f94784f..9a09a4a 100644
1426 +index 891a56b..48f337e 100644
1427 --- a/arch/arm/include/asm/outercache.h
1428 +++ b/arch/arm/include/asm/outercache.h
1429 -@@ -35,7 +35,7 @@ struct outer_cache_fns {
1430 - #endif
1431 - void (*set_debug)(unsigned long);
1432 - void (*resume)(void);
1433 +@@ -36,7 +36,7 @@ struct outer_cache_fns {
1434 +
1435 + /* This is an ARM L2C thing */
1436 + void (*write_sec)(unsigned long, unsigned);
1437 -};
1438 +} __no_const;
1439
1440 @@ -2133,13 +2629,13 @@ index 5478e5d..f5b5cb3 100644
1441 return pte;
1442 }
1443 diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h
1444 -index c4ae171..ea0c0c2 100644
1445 +index c25ef3e..735f14b 100644
1446 --- a/arch/arm/include/asm/psci.h
1447 +++ b/arch/arm/include/asm/psci.h
1448 -@@ -29,7 +29,7 @@ struct psci_operations {
1449 - int (*cpu_off)(struct psci_power_state state);
1450 - int (*cpu_on)(unsigned long cpuid, unsigned long entry_point);
1451 - int (*migrate)(unsigned long cpuid);
1452 +@@ -32,7 +32,7 @@ struct psci_operations {
1453 + int (*affinity_info)(unsigned long target_affinity,
1454 + unsigned long lowest_affinity_level);
1455 + int (*migrate_info_type)(void);
1456 -};
1457 +} __no_const;
1458
1459 @@ -2159,7 +2655,7 @@ index 2ec765c..beb1fe16 100644
1460 struct of_cpu_method {
1461 const char *method;
1462 diff --git a/arch/arm/include/asm/thread_info.h b/arch/arm/include/asm/thread_info.h
1463 -index f989d7c..e8aa7f0 100644
1464 +index e4e4208..086684a 100644
1465 --- a/arch/arm/include/asm/thread_info.h
1466 +++ b/arch/arm/include/asm/thread_info.h
1467 @@ -88,9 +88,9 @@ struct thread_info {
1468 @@ -2175,7 +2671,7 @@ index f989d7c..e8aa7f0 100644
1469 .restart_block = { \
1470 .fn = do_no_restart_syscall, \
1471 }, \
1472 -@@ -158,7 +158,11 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *,
1473 +@@ -164,7 +164,11 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *,
1474 #define TIF_SYSCALL_AUDIT 9
1475 #define TIF_SYSCALL_TRACEPOINT 10
1476 #define TIF_SECCOMP 11 /* seccomp syscall filtering active */
1477 @@ -2188,7 +2684,7 @@ index f989d7c..e8aa7f0 100644
1478 #define TIF_USING_IWMMXT 17
1479 #define TIF_MEMDIE 18 /* is terminating due to OOM killer */
1480 #define TIF_RESTORE_SIGMASK 20
1481 -@@ -172,10 +176,11 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *,
1482 +@@ -178,10 +182,11 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *,
1483 #define _TIF_SYSCALL_TRACEPOINT (1 << TIF_SYSCALL_TRACEPOINT)
1484 #define _TIF_SECCOMP (1 << TIF_SECCOMP)
1485 #define _TIF_USING_IWMMXT (1 << TIF_USING_IWMMXT)
1486 @@ -2433,7 +2929,7 @@ index f7b450f..f5364c5 100644
1487 EXPORT_SYMBOL(__get_user_1);
1488 EXPORT_SYMBOL(__get_user_2);
1489 diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
1490 -index 1879e8d..5602dd4 100644
1491 +index 52a949a..d8bbcab 100644
1492 --- a/arch/arm/kernel/entry-armv.S
1493 +++ b/arch/arm/kernel/entry-armv.S
1494 @@ -47,6 +47,87 @@
1495 @@ -2575,7 +3071,7 @@ index 1879e8d..5602dd4 100644
1496 sub sp, sp, #S_FRAME_SIZE
1497 ARM( stmib sp, {r1 - r12} )
1498 THUMB( stmia sp, {r0 - r12} )
1499 -@@ -416,7 +513,9 @@ __und_usr:
1500 +@@ -421,7 +518,9 @@ __und_usr:
1501 tst r3, #PSR_T_BIT @ Thumb mode?
1502 bne __und_usr_thumb
1503 sub r4, r2, #4 @ ARM instr at LR - 4
1504 @@ -2585,7 +3081,7 @@ index 1879e8d..5602dd4 100644
1505 ARM_BE8(rev r0, r0) @ little endian instruction
1506
1507 @ r0 = 32-bit ARM instruction which caused the exception
1508 -@@ -450,11 +549,15 @@ __und_usr_thumb:
1509 +@@ -455,11 +554,15 @@ __und_usr_thumb:
1510 */
1511 .arch armv6t2
1512 #endif
1513 @@ -2601,17 +3097,17 @@ index 1879e8d..5602dd4 100644
1514 ARM_BE8(rev16 r0, r0) @ little endian instruction
1515 add r2, r2, #2 @ r2 is PC + 2, make it PC + 4
1516 str r2, [sp, #S_PC] @ it's a 2x16bit instr, update
1517 -@@ -484,7 +587,8 @@ ENDPROC(__und_usr)
1518 +@@ -489,7 +592,8 @@ ENDPROC(__und_usr)
1519 */
1520 .pushsection .fixup, "ax"
1521 .align 2
1522 --4: mov pc, r9
1523 +-4: str r4, [sp, #S_PC] @ retry current instruction
1524 +4: pax_close_userland
1525 -+ mov pc, r9
1526 ++ str r4, [sp, #S_PC] @ retry current instruction
1527 + mov pc, r9
1528 .popsection
1529 .pushsection __ex_table,"a"
1530 - .long 1b, 4b
1531 -@@ -694,7 +798,7 @@ ENTRY(__switch_to)
1532 +@@ -698,7 +802,7 @@ ENTRY(__switch_to)
1533 THUMB( str lr, [ip], #4 )
1534 ldr r4, [r2, #TI_TP_VALUE]
1535 ldr r5, [r2, #TI_TP_VALUE + 4]
1536 @@ -2620,7 +3116,7 @@ index 1879e8d..5602dd4 100644
1537 ldr r6, [r2, #TI_CPU_DOMAIN]
1538 #endif
1539 switch_tls r1, r4, r5, r3, r7
1540 -@@ -703,7 +807,7 @@ ENTRY(__switch_to)
1541 +@@ -707,7 +811,7 @@ ENTRY(__switch_to)
1542 ldr r8, =__stack_chk_guard
1543 ldr r7, [r7, #TSK_STACK_CANARY]
1544 #endif
1545 @@ -2630,7 +3126,7 @@ index 1879e8d..5602dd4 100644
1546 #endif
1547 mov r5, r0
1548 diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
1549 -index a2dcafd..1048b5a 100644
1550 +index 7139d4a..feaf37f 100644
1551 --- a/arch/arm/kernel/entry-common.S
1552 +++ b/arch/arm/kernel/entry-common.S
1553 @@ -10,18 +10,46 @@
1554 @@ -2683,7 +3179,7 @@ index a2dcafd..1048b5a 100644
1555 .align 5
1556 /*
1557 * This is the fast syscall return path. We do as little as
1558 -@@ -411,6 +439,12 @@ ENTRY(vector_swi)
1559 +@@ -405,6 +433,12 @@ ENTRY(vector_swi)
1560 USER( ldr scno, [lr, #-4] ) @ get SWI instruction
1561 #endif
1562
1563 @@ -2697,7 +3193,7 @@ index a2dcafd..1048b5a 100644
1564
1565 #if defined(CONFIG_OABI_COMPAT)
1566 diff --git a/arch/arm/kernel/entry-header.S b/arch/arm/kernel/entry-header.S
1567 -index efb208d..d34bd02 100644
1568 +index 5d702f8..f5fc51a 100644
1569 --- a/arch/arm/kernel/entry-header.S
1570 +++ b/arch/arm/kernel/entry-header.S
1571 @@ -188,6 +188,60 @@
1572 @@ -2797,7 +3293,7 @@ index 918875d..cd5fa27 100644
1573 flush_icache_range((unsigned long)base + offset, offset +
1574 length);
1575 diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
1576 -index 591d6e4..8322a26 100644
1577 +index 2c35f0f..7747ee6 100644
1578 --- a/arch/arm/kernel/head.S
1579 +++ b/arch/arm/kernel/head.S
1580 @@ -437,7 +437,7 @@ __enable_mmu:
1581 @@ -2975,36 +3471,24 @@ index 81ef686..f4130b8 100644
1582 }
1583 #endif
1584 diff --git a/arch/arm/kernel/psci.c b/arch/arm/kernel/psci.c
1585 -index 4693188..4596c5e 100644
1586 +index f73891b..cf3004e 100644
1587 --- a/arch/arm/kernel/psci.c
1588 +++ b/arch/arm/kernel/psci.c
1589 -@@ -24,7 +24,7 @@
1590 - #include <asm/opcodes-virt.h>
1591 +@@ -28,7 +28,7 @@
1592 #include <asm/psci.h>
1593 + #include <asm/system_misc.h>
1594
1595 -struct psci_operations psci_ops;
1596 +struct psci_operations psci_ops __read_only;
1597
1598 static int (*invoke_psci_fn)(u32, u32, u32, u32);
1599 -
1600 + typedef int (*psci_initcall_t)(const struct device_node *);
1601 diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c
1602 -index 0dd3b79..b67388e 100644
1603 +index 0c27ed6..b67388e 100644
1604 --- a/arch/arm/kernel/ptrace.c
1605 +++ b/arch/arm/kernel/ptrace.c
1606 -@@ -908,7 +908,7 @@ enum ptrace_syscall_dir {
1607 - PTRACE_SYSCALL_EXIT,
1608 - };
1609 -
1610 --static int tracehook_report_syscall(struct pt_regs *regs,
1611 -+static void tracehook_report_syscall(struct pt_regs *regs,
1612 - enum ptrace_syscall_dir dir)
1613 - {
1614 - unsigned long ip;
1615 -@@ -926,19 +926,29 @@ static int tracehook_report_syscall(struct pt_regs *regs,
1616 - current_thread_info()->syscall = -1;
1617 -
1618 +@@ -928,10 +928,19 @@ static void tracehook_report_syscall(struct pt_regs *regs,
1619 regs->ARM_ip = ip;
1620 -- return current_thread_info()->syscall;
1621 }
1622
1623 +#ifdef CONFIG_GRKERNSEC_SETXID
1624 @@ -3023,20 +3507,11 @@ index 0dd3b79..b67388e 100644
1625 /* Do the secure computing check first; failures should be fast. */
1626 if (secure_computing(scno) == -1)
1627 return -1;
1628 -
1629 - if (test_thread_flag(TIF_SYSCALL_TRACE))
1630 -- scno = tracehook_report_syscall(regs, PTRACE_SYSCALL_ENTER);
1631 -+ tracehook_report_syscall(regs, PTRACE_SYSCALL_ENTER);
1632 -+
1633 -+ scno = current_thread_info()->syscall;
1634 -
1635 - if (test_thread_flag(TIF_SYSCALL_TRACEPOINT))
1636 - trace_sys_enter(regs, scno);
1637 diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
1638 -index 50e198c..a8b5f49 100644
1639 +index 8a16ee5..4f560e5 100644
1640 --- a/arch/arm/kernel/setup.c
1641 +++ b/arch/arm/kernel/setup.c
1642 -@@ -103,21 +103,23 @@ EXPORT_SYMBOL(elf_hwcap);
1643 +@@ -104,21 +104,23 @@ EXPORT_SYMBOL(elf_hwcap);
1644 unsigned int elf_hwcap2 __read_mostly;
1645 EXPORT_SYMBOL(elf_hwcap2);
1646
1647 @@ -3065,7 +3540,7 @@ index 50e198c..a8b5f49 100644
1648 EXPORT_SYMBOL(outer_cache);
1649 #endif
1650
1651 -@@ -250,9 +252,13 @@ static int __get_cpu_architecture(void)
1652 +@@ -251,9 +253,13 @@ static int __get_cpu_architecture(void)
1653 asm("mrc p15, 0, %0, c0, c1, 4"
1654 : "=r" (mmfr0));
1655 if ((mmfr0 & 0x0000000f) >= 0x00000003 ||
1656 @@ -3300,7 +3775,7 @@ index 7bcee5c..e2f3249 100644
1657 __data_loc = .;
1658 #endif
1659 diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c
1660 -index f0e50a0..cab3a75 100644
1661 +index 3c82b37..bd41745 100644
1662 --- a/arch/arm/kvm/arm.c
1663 +++ b/arch/arm/kvm/arm.c
1664 @@ -57,7 +57,7 @@ static unsigned long hyp_default_vectors;
1665 @@ -3312,7 +3787,7 @@ index f0e50a0..cab3a75 100644
1666 static u8 kvm_next_vmid;
1667 static DEFINE_SPINLOCK(kvm_vmid_lock);
1668
1669 -@@ -408,7 +408,7 @@ void force_vm_exit(const cpumask_t *mask)
1670 +@@ -409,7 +409,7 @@ void force_vm_exit(const cpumask_t *mask)
1671 */
1672 static bool need_new_vmid_gen(struct kvm *kvm)
1673 {
1674 @@ -3321,7 +3796,7 @@ index f0e50a0..cab3a75 100644
1675 }
1676
1677 /**
1678 -@@ -441,7 +441,7 @@ static void update_vttbr(struct kvm *kvm)
1679 +@@ -442,7 +442,7 @@ static void update_vttbr(struct kvm *kvm)
1680
1681 /* First user of a new VMID generation? */
1682 if (unlikely(kvm_next_vmid == 0)) {
1683 @@ -3330,7 +3805,7 @@ index f0e50a0..cab3a75 100644
1684 kvm_next_vmid = 1;
1685
1686 /*
1687 -@@ -458,7 +458,7 @@ static void update_vttbr(struct kvm *kvm)
1688 +@@ -459,7 +459,7 @@ static void update_vttbr(struct kvm *kvm)
1689 kvm_call_hyp(__kvm_flush_vm_context);
1690 }
1691
1692 @@ -3339,15 +3814,6 @@ index f0e50a0..cab3a75 100644
1693 kvm->arch.vmid = kvm_next_vmid;
1694 kvm_next_vmid++;
1695
1696 -@@ -1033,7 +1033,7 @@ static void check_kvm_target_cpu(void *ret)
1697 - /**
1698 - * Initialize Hyp-mode and memory mappings on all CPUs.
1699 - */
1700 --int kvm_arch_init(void *opaque)
1701 -+int kvm_arch_init(const void *opaque)
1702 - {
1703 - int err;
1704 - int ret, cpu;
1705 diff --git a/arch/arm/lib/clear_user.S b/arch/arm/lib/clear_user.S
1706 index 14a0d98..7771a7d 100644
1707 --- a/arch/arm/lib/clear_user.S
1708 @@ -3558,10 +4024,10 @@ index aead77a..a2253fa 100644
1709 };
1710
1711 diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c
1712 -index 9fe8c94..c014a4d 100644
1713 +index 8bc1338..8b28b69 100644
1714 --- a/arch/arm/mach-omap2/gpmc.c
1715 +++ b/arch/arm/mach-omap2/gpmc.c
1716 -@@ -148,7 +148,6 @@ struct omap3_gpmc_regs {
1717 +@@ -151,7 +151,6 @@ struct omap3_gpmc_regs {
1718 };
1719
1720 static struct gpmc_client_irq gpmc_client_irq[GPMC_NR_IRQ];
1721 @@ -3569,7 +4035,7 @@ index 9fe8c94..c014a4d 100644
1722 static int gpmc_irq_start;
1723
1724 static struct resource gpmc_mem_root;
1725 -@@ -727,6 +726,18 @@ static void gpmc_irq_noop(struct irq_data *data) { }
1726 +@@ -736,6 +735,18 @@ static void gpmc_irq_noop(struct irq_data *data) { }
1727
1728 static unsigned int gpmc_irq_noop_ret(struct irq_data *data) { return 0; }
1729
1730 @@ -3588,7 +4054,7 @@ index 9fe8c94..c014a4d 100644
1731 static int gpmc_setup_irq(void)
1732 {
1733 int i;
1734 -@@ -741,15 +752,6 @@ static int gpmc_setup_irq(void)
1735 +@@ -750,15 +761,6 @@ static int gpmc_setup_irq(void)
1736 return gpmc_irq_start;
1737 }
1738
1739 @@ -3605,7 +4071,7 @@ index 9fe8c94..c014a4d 100644
1740 gpmc_client_irq[1].bitmask = GPMC_IRQ_COUNT_EVENT;
1741
1742 diff --git a/arch/arm/mach-omap2/omap-mpuss-lowpower.c b/arch/arm/mach-omap2/omap-mpuss-lowpower.c
1743 -index 667915d..2ee1219 100644
1744 +index 4001325..b14e2a0 100644
1745 --- a/arch/arm/mach-omap2/omap-mpuss-lowpower.c
1746 +++ b/arch/arm/mach-omap2/omap-mpuss-lowpower.c
1747 @@ -84,7 +84,7 @@ struct cpu_pm_ops {
1748 @@ -3627,7 +4093,7 @@ index 667915d..2ee1219 100644
1749 .resume = dummy_cpu_resume,
1750 .scu_prepare = dummy_scu_prepare,
1751 diff --git a/arch/arm/mach-omap2/omap-wakeupgen.c b/arch/arm/mach-omap2/omap-wakeupgen.c
1752 -index 693fe48..c15ea73 100644
1753 +index 37843a7..a98df13 100644
1754 --- a/arch/arm/mach-omap2/omap-wakeupgen.c
1755 +++ b/arch/arm/mach-omap2/omap-wakeupgen.c
1756 @@ -343,7 +343,7 @@ static int irq_cpu_hotplug_notify(struct notifier_block *self,
1757 @@ -3681,7 +4147,7 @@ index 78c02b3..c94109a 100644
1758 struct omap_device *omap_device_alloc(struct platform_device *pdev,
1759 struct omap_hwmod **ohs, int oh_cnt);
1760 diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
1761 -index 66c60fe..c78950d 100644
1762 +index 6c074f3..cd58cb7 100644
1763 --- a/arch/arm/mach-omap2/omap_hwmod.c
1764 +++ b/arch/arm/mach-omap2/omap_hwmod.c
1765 @@ -194,10 +194,10 @@ struct omap_hwmod_soc_ops {
1766 @@ -3721,7 +4187,7 @@ index 95fee54..cfa9cf1 100644
1767 pwrdm_register_pwrdms(powerdomains_am43xx);
1768 pwrdm_complete_init();
1769 diff --git a/arch/arm/mach-omap2/wd_timer.c b/arch/arm/mach-omap2/wd_timer.c
1770 -index d15c7bb..b2d1f0c 100644
1771 +index 97d6607..8429d14 100644
1772 --- a/arch/arm/mach-omap2/wd_timer.c
1773 +++ b/arch/arm/mach-omap2/wd_timer.c
1774 @@ -110,7 +110,9 @@ static int __init omap_init_wdt(void)
1775 @@ -3776,7 +4242,7 @@ index 2dea8b5..6499da2 100644
1776 extern void ux500_cpu_die(unsigned int cpu);
1777
1778 diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig
1779 -index 5bf7c3c..571e67e 100644
1780 +index c348eae..456a1a4 100644
1781 --- a/arch/arm/mm/Kconfig
1782 +++ b/arch/arm/mm/Kconfig
1783 @@ -446,6 +446,7 @@ config CPU_32v5
1784 @@ -3813,10 +4279,10 @@ index 5bf7c3c..571e67e 100644
1785
1786 If all of the binaries and libraries which run on your platform
1787 diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c
1788 -index 9240364..a2b8cf3 100644
1789 +index b8cb1a2..6a5624a 100644
1790 --- a/arch/arm/mm/alignment.c
1791 +++ b/arch/arm/mm/alignment.c
1792 -@@ -212,10 +212,12 @@ union offset_union {
1793 +@@ -214,10 +214,12 @@ union offset_union {
1794 #define __get16_unaligned_check(ins,val,addr) \
1795 do { \
1796 unsigned int err = 0, v, a = addr; \
1797 @@ -3829,7 +4295,7 @@ index 9240364..a2b8cf3 100644
1798 if (err) \
1799 goto fault; \
1800 } while (0)
1801 -@@ -229,6 +231,7 @@ union offset_union {
1802 +@@ -231,6 +233,7 @@ union offset_union {
1803 #define __get32_unaligned_check(ins,val,addr) \
1804 do { \
1805 unsigned int err = 0, v, a = addr; \
1806 @@ -3837,7 +4303,7 @@ index 9240364..a2b8cf3 100644
1807 __get8_unaligned_check(ins,v,a,err); \
1808 val = v << ((BE) ? 24 : 0); \
1809 __get8_unaligned_check(ins,v,a,err); \
1810 -@@ -237,6 +240,7 @@ union offset_union {
1811 +@@ -239,6 +242,7 @@ union offset_union {
1812 val |= v << ((BE) ? 8 : 16); \
1813 __get8_unaligned_check(ins,v,a,err); \
1814 val |= v << ((BE) ? 0 : 24); \
1815 @@ -3845,7 +4311,7 @@ index 9240364..a2b8cf3 100644
1816 if (err) \
1817 goto fault; \
1818 } while (0)
1819 -@@ -250,6 +254,7 @@ union offset_union {
1820 +@@ -252,6 +256,7 @@ union offset_union {
1821 #define __put16_unaligned_check(ins,val,addr) \
1822 do { \
1823 unsigned int err = 0, v = val, a = addr; \
1824 @@ -3853,7 +4319,7 @@ index 9240364..a2b8cf3 100644
1825 __asm__( FIRST_BYTE_16 \
1826 ARM( "1: "ins" %1, [%2], #1\n" ) \
1827 THUMB( "1: "ins" %1, [%2]\n" ) \
1828 -@@ -269,6 +274,7 @@ union offset_union {
1829 +@@ -271,6 +276,7 @@ union offset_union {
1830 " .popsection\n" \
1831 : "=r" (err), "=&r" (v), "=&r" (a) \
1832 : "0" (err), "1" (v), "2" (a)); \
1833 @@ -3861,7 +4327,7 @@ index 9240364..a2b8cf3 100644
1834 if (err) \
1835 goto fault; \
1836 } while (0)
1837 -@@ -282,6 +288,7 @@ union offset_union {
1838 +@@ -284,6 +290,7 @@ union offset_union {
1839 #define __put32_unaligned_check(ins,val,addr) \
1840 do { \
1841 unsigned int err = 0, v = val, a = addr; \
1842 @@ -3869,7 +4335,7 @@ index 9240364..a2b8cf3 100644
1843 __asm__( FIRST_BYTE_32 \
1844 ARM( "1: "ins" %1, [%2], #1\n" ) \
1845 THUMB( "1: "ins" %1, [%2]\n" ) \
1846 -@@ -311,6 +318,7 @@ union offset_union {
1847 +@@ -313,6 +320,7 @@ union offset_union {
1848 " .popsection\n" \
1849 : "=r" (err), "=&r" (v), "=&r" (a) \
1850 : "0" (err), "1" (v), "2" (a)); \
1851 @@ -3878,17 +4344,17 @@ index 9240364..a2b8cf3 100644
1852 goto fault; \
1853 } while (0)
1854 diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c
1855 -index 7abde2c..9df495f 100644
1856 +index 7c3fb41..bfb87d8 100644
1857 --- a/arch/arm/mm/cache-l2x0.c
1858 +++ b/arch/arm/mm/cache-l2x0.c
1859 -@@ -46,7 +46,7 @@ struct l2x0_of_data {
1860 - void (*setup)(const struct device_node *, u32 *, u32 *);
1861 - void (*save)(void);
1862 +@@ -41,7 +41,7 @@ struct l2c_init_data {
1863 + void (*fixup)(void __iomem *, u32, struct outer_cache_fns *);
1864 + void (*save)(void __iomem *);
1865 struct outer_cache_fns outer_cache;
1866 -};
1867 +} __do_const;
1868
1869 - static bool of_init = false;
1870 + #define CACHE_LINE_SIZE 32
1871
1872 diff --git a/arch/arm/mm/context.c b/arch/arm/mm/context.c
1873 index 6eb97b3..ac509f6 100644
1874 @@ -4183,10 +4649,10 @@ index cf08bdf..772656c 100644
1875 unsigned long search_exception_table(unsigned long addr);
1876
1877 diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
1878 -index 2a77ba8..68e6a7a 100644
1879 +index 659c75d..6f8c029 100644
1880 --- a/arch/arm/mm/init.c
1881 +++ b/arch/arm/mm/init.c
1882 -@@ -30,6 +30,8 @@
1883 +@@ -31,6 +31,8 @@
1884 #include <asm/setup.h>
1885 #include <asm/tlb.h>
1886 #include <asm/fixmap.h>
1887 @@ -4195,7 +4661,7 @@ index 2a77ba8..68e6a7a 100644
1888
1889 #include <asm/mach/arch.h>
1890 #include <asm/mach/map.h>
1891 -@@ -627,7 +629,46 @@ void free_initmem(void)
1892 +@@ -619,7 +621,46 @@ void free_initmem(void)
1893 {
1894 #ifdef CONFIG_HAVE_TCM
1895 extern char __tcm_start, __tcm_end;
1896 @@ -4243,7 +4709,7 @@ index 2a77ba8..68e6a7a 100644
1897 free_reserved_area(&__tcm_start, &__tcm_end, -1, "TCM link");
1898 #endif
1899 diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c
1900 -index f9c32ba..8540068 100644
1901 +index d1e5ad7..84dcbf2 100644
1902 --- a/arch/arm/mm/ioremap.c
1903 +++ b/arch/arm/mm/ioremap.c
1904 @@ -392,9 +392,9 @@ __arm_ioremap_exec(phys_addr_t phys_addr, size_t size, bool cached)
1905 @@ -4370,10 +4836,10 @@ index 5e85ed3..b10a7ed 100644
1906 }
1907 }
1908 diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
1909 -index f15c22e..d830561 100644
1910 +index 6e3ba8d..9cbb4d7 100644
1911 --- a/arch/arm/mm/mmu.c
1912 +++ b/arch/arm/mm/mmu.c
1913 -@@ -39,6 +39,22 @@
1914 +@@ -40,6 +40,22 @@
1915 #include "mm.h"
1916 #include "tcm.h"
1917
1918 @@ -4396,7 +4862,7 @@ index f15c22e..d830561 100644
1919 /*
1920 * empty_zero_page is a special page that is used for
1921 * zero-initialized data and COW.
1922 -@@ -235,7 +251,15 @@ __setup("noalign", noalign_setup);
1923 +@@ -239,7 +255,15 @@ __setup("noalign", noalign_setup);
1924 #define PROT_PTE_S2_DEVICE PROT_PTE_DEVICE
1925 #define PROT_SECT_DEVICE PMD_TYPE_SECT|PMD_SECT_AP_WRITE
1926
1927 @@ -4413,7 +4879,7 @@ index f15c22e..d830561 100644
1928 [MT_DEVICE] = { /* Strongly ordered / ARMv6 shared device */
1929 .prot_pte = PROT_PTE_DEVICE | L_PTE_MT_DEV_SHARED |
1930 L_PTE_SHARED,
1931 -@@ -264,19 +288,19 @@ static struct mem_type mem_types[] = {
1932 +@@ -268,19 +292,19 @@ static struct mem_type mem_types[] = {
1933 .prot_sect = PROT_SECT_DEVICE,
1934 .domain = DOMAIN_IO,
1935 },
1936 @@ -4438,7 +4904,7 @@ index f15c22e..d830561 100644
1937 .domain = DOMAIN_KERNEL,
1938 },
1939 #endif
1940 -@@ -284,15 +308,15 @@ static struct mem_type mem_types[] = {
1941 +@@ -288,15 +312,15 @@ static struct mem_type mem_types[] = {
1942 .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY |
1943 L_PTE_RDONLY,
1944 .prot_l1 = PMD_TYPE_TABLE,
1945 @@ -4457,7 +4923,7 @@ index f15c22e..d830561 100644
1946 .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY,
1947 .prot_l1 = PMD_TYPE_TABLE,
1948 .prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE,
1949 -@@ -305,17 +329,30 @@ static struct mem_type mem_types[] = {
1950 +@@ -309,17 +333,30 @@ static struct mem_type mem_types[] = {
1951 .prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE,
1952 .domain = DOMAIN_KERNEL,
1953 },
1954 @@ -4491,7 +4957,7 @@ index f15c22e..d830561 100644
1955 [MT_MEMORY_RW_DTCM] = {
1956 .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY |
1957 L_PTE_XN,
1958 -@@ -323,9 +360,10 @@ static struct mem_type mem_types[] = {
1959 +@@ -327,9 +364,10 @@ static struct mem_type mem_types[] = {
1960 .prot_sect = PMD_TYPE_SECT | PMD_SECT_XN,
1961 .domain = DOMAIN_KERNEL,
1962 },
1963 @@ -4504,7 +4970,7 @@ index f15c22e..d830561 100644
1964 .domain = DOMAIN_KERNEL,
1965 },
1966 [MT_MEMORY_RW_SO] = {
1967 -@@ -534,9 +572,14 @@ static void __init build_mem_type_table(void)
1968 +@@ -547,9 +585,14 @@ static void __init build_mem_type_table(void)
1969 * Mark cache clean areas and XIP ROM read only
1970 * from SVC mode and no access from userspace.
1971 */
1972 @@ -4521,8 +4987,8 @@ index f15c22e..d830561 100644
1973 + mem_types[MT_CACHECLEAN_RO].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
1974 #endif
1975
1976 - if (is_smp()) {
1977 -@@ -552,13 +595,17 @@ static void __init build_mem_type_table(void)
1978 + /*
1979 +@@ -566,13 +609,17 @@ static void __init build_mem_type_table(void)
1980 mem_types[MT_DEVICE_WC].prot_pte |= L_PTE_SHARED;
1981 mem_types[MT_DEVICE_CACHED].prot_sect |= PMD_SECT_S;
1982 mem_types[MT_DEVICE_CACHED].prot_pte |= L_PTE_SHARED;
1983 @@ -4544,7 +5010,7 @@ index f15c22e..d830561 100644
1984 }
1985 }
1986
1987 -@@ -569,15 +616,20 @@ static void __init build_mem_type_table(void)
1988 +@@ -583,15 +630,20 @@ static void __init build_mem_type_table(void)
1989 if (cpu_arch >= CPU_ARCH_ARMv6) {
1990 if (cpu_arch >= CPU_ARCH_ARMv7 && (cr & CR_TRE)) {
1991 /* Non-cacheable Normal is XCB = 001 */
1992 @@ -4568,7 +5034,7 @@ index f15c22e..d830561 100644
1993 }
1994
1995 #ifdef CONFIG_ARM_LPAE
1996 -@@ -593,6 +645,8 @@ static void __init build_mem_type_table(void)
1997 +@@ -607,6 +659,8 @@ static void __init build_mem_type_table(void)
1998 vecs_pgprot |= PTE_EXT_AF;
1999 #endif
2000
2001 @@ -4577,7 +5043,7 @@ index f15c22e..d830561 100644
2002 for (i = 0; i < 16; i++) {
2003 pteval_t v = pgprot_val(protection_map[i]);
2004 protection_map[i] = __pgprot(v | user_pgprot);
2005 -@@ -610,21 +664,24 @@ static void __init build_mem_type_table(void)
2006 +@@ -624,21 +678,24 @@ static void __init build_mem_type_table(void)
2007
2008 mem_types[MT_LOW_VECTORS].prot_l1 |= ecc_mask;
2009 mem_types[MT_HIGH_VECTORS].prot_l1 |= ecc_mask;
2010 @@ -4608,7 +5074,7 @@ index f15c22e..d830561 100644
2011 break;
2012 }
2013 pr_info("Memory policy: %sData cache %s\n",
2014 -@@ -842,7 +899,7 @@ static void __init create_mapping(struct map_desc *md)
2015 +@@ -856,7 +913,7 @@ static void __init create_mapping(struct map_desc *md)
2016 return;
2017 }
2018
2019 @@ -4617,7 +5083,7 @@ index f15c22e..d830561 100644
2020 md->virtual >= PAGE_OFFSET &&
2021 (md->virtual < VMALLOC_START || md->virtual >= VMALLOC_END)) {
2022 printk(KERN_WARNING "BUG: mapping for 0x%08llx"
2023 -@@ -1257,18 +1314,15 @@ void __init arm_mm_memblock_reserve(void)
2024 +@@ -1224,18 +1281,15 @@ void __init arm_mm_memblock_reserve(void)
2025 * called function. This means you can't use any function or debugging
2026 * method which may touch any device, otherwise the kernel _will_ crash.
2027 */
2028 @@ -4640,7 +5106,7 @@ index f15c22e..d830561 100644
2029
2030 for (addr = VMALLOC_START; addr; addr += PMD_SIZE)
2031 pmd_clear(pmd_off_k(addr));
2032 -@@ -1281,7 +1335,7 @@ static void __init devicemaps_init(const struct machine_desc *mdesc)
2033 +@@ -1248,7 +1302,7 @@ static void __init devicemaps_init(const struct machine_desc *mdesc)
2034 map.pfn = __phys_to_pfn(CONFIG_XIP_PHYS_ADDR & SECTION_MASK);
2035 map.virtual = MODULES_VADDR;
2036 map.length = ((unsigned long)_etext - map.virtual + ~SECTION_MASK) & SECTION_MASK;
2037 @@ -4649,7 +5115,7 @@ index f15c22e..d830561 100644
2038 create_mapping(&map);
2039 #endif
2040
2041 -@@ -1292,14 +1346,14 @@ static void __init devicemaps_init(const struct machine_desc *mdesc)
2042 +@@ -1259,14 +1313,14 @@ static void __init devicemaps_init(const struct machine_desc *mdesc)
2043 map.pfn = __phys_to_pfn(FLUSH_BASE_PHYS);
2044 map.virtual = FLUSH_BASE;
2045 map.length = SZ_1M;
2046 @@ -4666,7 +5132,7 @@ index f15c22e..d830561 100644
2047 create_mapping(&map);
2048 #endif
2049
2050 -@@ -1308,7 +1362,7 @@ static void __init devicemaps_init(const struct machine_desc *mdesc)
2051 +@@ -1275,7 +1329,7 @@ static void __init devicemaps_init(const struct machine_desc *mdesc)
2052 * location (0xffff0000). If we aren't using high-vectors, also
2053 * create a mapping at the low-vectors virtual address.
2054 */
2055 @@ -4675,7 +5141,7 @@ index f15c22e..d830561 100644
2056 map.virtual = 0xffff0000;
2057 map.length = PAGE_SIZE;
2058 #ifdef CONFIG_KUSER_HELPERS
2059 -@@ -1365,8 +1419,10 @@ static void __init kmap_init(void)
2060 +@@ -1335,8 +1389,10 @@ static void __init kmap_init(void)
2061 static void __init map_lowmem(void)
2062 {
2063 struct memblock_region *reg;
2064 @@ -4686,7 +5152,7 @@ index f15c22e..d830561 100644
2065
2066 /* Map all the lowmem memory banks. */
2067 for_each_memblock(memory, reg) {
2068 -@@ -1379,11 +1435,48 @@ static void __init map_lowmem(void)
2069 +@@ -1349,11 +1405,48 @@ static void __init map_lowmem(void)
2070 if (start >= end)
2071 break;
2072
2073 @@ -4736,7 +5202,7 @@ index f15c22e..d830561 100644
2074
2075 create_mapping(&map);
2076 } else {
2077 -@@ -1400,7 +1493,7 @@ static void __init map_lowmem(void)
2078 +@@ -1370,7 +1463,7 @@ static void __init map_lowmem(void)
2079 map.pfn = __phys_to_pfn(kernel_x_start);
2080 map.virtual = __phys_to_virt(kernel_x_start);
2081 map.length = kernel_x_end - kernel_x_start;
2082 @@ -4745,7 +5211,7 @@ index f15c22e..d830561 100644
2083
2084 create_mapping(&map);
2085
2086 -@@ -1413,6 +1506,7 @@ static void __init map_lowmem(void)
2087 +@@ -1383,6 +1476,7 @@ static void __init map_lowmem(void)
2088 create_mapping(&map);
2089 }
2090 }
2091 @@ -4793,13 +5259,13 @@ index ce6d763..cfea917 100644
2092 extern void *samsung_dmadev_get_ops(void);
2093 extern void *s3c_dma_get_ops(void);
2094 diff --git a/arch/arm64/include/asm/barrier.h b/arch/arm64/include/asm/barrier.h
2095 -index 66eb764..b529b84 100644
2096 +index 6389d60..b5d3bdd 100644
2097 --- a/arch/arm64/include/asm/barrier.h
2098 +++ b/arch/arm64/include/asm/barrier.h
2099 @@ -41,7 +41,7 @@
2100 do { \
2101 compiletime_assert_atomic_type(*p); \
2102 - smp_mb(); \
2103 + barrier(); \
2104 - ACCESS_ONCE(*p) = (v); \
2105 + ACCESS_ONCE_RW(*p) = (v); \
2106 } while (0)
2107 @@ -4969,10 +5435,10 @@ index 7caf25d..ee65ac5 100644
2108 #define __read_mostly __attribute__((__section__(".data..read_mostly")))
2109
2110 diff --git a/arch/frv/include/asm/atomic.h b/arch/frv/include/asm/atomic.h
2111 -index b86329d..6709906 100644
2112 +index f6c3a16..cd422a4 100644
2113 --- a/arch/frv/include/asm/atomic.h
2114 +++ b/arch/frv/include/asm/atomic.h
2115 -@@ -186,6 +186,16 @@ static inline void atomic64_dec(atomic64_t *v)
2116 +@@ -181,6 +181,16 @@ static inline void atomic64_dec(atomic64_t *v)
2117 #define atomic64_cmpxchg(v, old, new) (__cmpxchg_64(old, new, &(v)->counter))
2118 #define atomic64_xchg(v, new) (__xchg_64(new, &(v)->counter))
2119
2120 @@ -5067,10 +5533,10 @@ index f4ca594..adc72fd6 100644
2121 #define __cacheline_aligned __aligned(L1_CACHE_BYTES)
2122 #define ____cacheline_aligned __aligned(L1_CACHE_BYTES)
2123 diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
2124 -index 12c3afe..b1abab2 100644
2125 +index 2f3abcf..e63c7fa 100644
2126 --- a/arch/ia64/Kconfig
2127 +++ b/arch/ia64/Kconfig
2128 -@@ -546,6 +546,7 @@ source "drivers/sn/Kconfig"
2129 +@@ -547,6 +547,7 @@ source "drivers/sn/Kconfig"
2130 config KEXEC
2131 bool "kexec system call"
2132 depends on !IA64_HP_SIM && (!SMP || HOTPLUG_CPU)
2133 @@ -5079,10 +5545,10 @@ index 12c3afe..b1abab2 100644
2134 kexec is a system call that implements the ability to shutdown your
2135 current kernel, and to start another kernel. It is like a reboot
2136 diff --git a/arch/ia64/include/asm/atomic.h b/arch/ia64/include/asm/atomic.h
2137 -index 6e6fe18..a6ae668 100644
2138 +index 0f8bf48..40ea950 100644
2139 --- a/arch/ia64/include/asm/atomic.h
2140 +++ b/arch/ia64/include/asm/atomic.h
2141 -@@ -208,6 +208,16 @@ atomic64_add_negative (__s64 i, atomic64_t *v)
2142 +@@ -209,4 +209,14 @@ atomic64_add_negative (__s64 i, atomic64_t *v)
2143 #define atomic64_inc(v) atomic64_add(1, (v))
2144 #define atomic64_dec(v) atomic64_sub(1, (v))
2145
2146 @@ -5096,14 +5562,12 @@ index 6e6fe18..a6ae668 100644
2147 +#define atomic64_dec_unchecked(v) atomic64_dec(v)
2148 +#define atomic64_cmpxchg_unchecked(v, o, n) atomic64_cmpxchg((v), (o), (n))
2149 +
2150 - /* Atomic operations are already serializing */
2151 - #define smp_mb__before_atomic_dec() barrier()
2152 - #define smp_mb__after_atomic_dec() barrier()
2153 + #endif /* _ASM_IA64_ATOMIC_H */
2154 diff --git a/arch/ia64/include/asm/barrier.h b/arch/ia64/include/asm/barrier.h
2155 -index d0a69aa..142f878 100644
2156 +index a48957c..e097b56 100644
2157 --- a/arch/ia64/include/asm/barrier.h
2158 +++ b/arch/ia64/include/asm/barrier.h
2159 -@@ -64,7 +64,7 @@
2160 +@@ -67,7 +67,7 @@
2161 do { \
2162 compiletime_assert_atomic_type(*p); \
2163 barrier(); \
2164 @@ -5600,7 +6064,7 @@ index 0395c51..5f26031 100644
2165 #define ARCH_DMA_MINALIGN L1_CACHE_BYTES
2166
2167 diff --git a/arch/metag/include/asm/barrier.h b/arch/metag/include/asm/barrier.h
2168 -index 2d6f0de..de5f5ac 100644
2169 +index c7591e8..ecef036 100644
2170 --- a/arch/metag/include/asm/barrier.h
2171 +++ b/arch/metag/include/asm/barrier.h
2172 @@ -89,7 +89,7 @@ static inline void fence(void)
2173 @@ -5643,10 +6107,10 @@ index 4efe96a..60e8699 100644
2174 #define SMP_CACHE_BYTES L1_CACHE_BYTES
2175
2176 diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
2177 -index 5cd695f..9a24ad0 100644
2178 +index 4e238e6..7c9ed92 100644
2179 --- a/arch/mips/Kconfig
2180 +++ b/arch/mips/Kconfig
2181 -@@ -2395,6 +2395,7 @@ source "kernel/Kconfig.preempt"
2182 +@@ -2392,6 +2392,7 @@ source "kernel/Kconfig.preempt"
2183
2184 config KEXEC
2185 bool "Kexec system call"
2186 @@ -5668,7 +6132,7 @@ index 02f2444..506969c 100644
2187
2188 static dma_addr_t octeon_unity_phys_to_dma(struct device *dev, phys_addr_t paddr)
2189 diff --git a/arch/mips/include/asm/atomic.h b/arch/mips/include/asm/atomic.h
2190 -index e8eb3d5..2e665d1 100644
2191 +index 37b2bef..02122b8 100644
2192 --- a/arch/mips/include/asm/atomic.h
2193 +++ b/arch/mips/include/asm/atomic.h
2194 @@ -21,15 +21,39 @@
2195 @@ -6575,7 +7039,7 @@ index e8eb3d5..2e665d1 100644
2196 /*
2197 * atomic64_add_negative - add and test if negative
2198 diff --git a/arch/mips/include/asm/barrier.h b/arch/mips/include/asm/barrier.h
2199 -index e1aa4e4..670b68b 100644
2200 +index d0101dd..266982c 100644
2201 --- a/arch/mips/include/asm/barrier.h
2202 +++ b/arch/mips/include/asm/barrier.h
2203 @@ -184,7 +184,7 @@
2204 @@ -6775,7 +7239,7 @@ index b336037..5b874cc 100644
2205
2206 /*
2207 diff --git a/arch/mips/include/asm/pgtable.h b/arch/mips/include/asm/pgtable.h
2208 -index 008324d..f67c239 100644
2209 +index 539ddd1..8783f9a 100644
2210 --- a/arch/mips/include/asm/pgtable.h
2211 +++ b/arch/mips/include/asm/pgtable.h
2212 @@ -20,6 +20,9 @@
2213 @@ -6788,20 +7252,8 @@ index 008324d..f67c239 100644
2214 struct mm_struct;
2215 struct vm_area_struct;
2216
2217 -diff --git a/arch/mips/include/asm/smtc_proc.h b/arch/mips/include/asm/smtc_proc.h
2218 -index 25da651..ae2a259 100644
2219 ---- a/arch/mips/include/asm/smtc_proc.h
2220 -+++ b/arch/mips/include/asm/smtc_proc.h
2221 -@@ -18,6 +18,6 @@ extern struct smtc_cpu_proc smtc_cpu_stats[NR_CPUS];
2222 -
2223 - /* Count of number of recoveries of "stolen" FPU access rights on 34K */
2224 -
2225 --extern atomic_t smtc_fpu_recoveries;
2226 -+extern atomic_unchecked_t smtc_fpu_recoveries;
2227 -
2228 - #endif /* __ASM_SMTC_PROC_H */
2229 diff --git a/arch/mips/include/asm/thread_info.h b/arch/mips/include/asm/thread_info.h
2230 -index d2d961d..a674df0 100644
2231 +index 7de8658..c109224 100644
2232 --- a/arch/mips/include/asm/thread_info.h
2233 +++ b/arch/mips/include/asm/thread_info.h
2234 @@ -105,6 +105,9 @@ static inline struct thread_info *current_thread_info(void)
2235 @@ -6891,10 +7343,10 @@ index 7faf5f2..f3d3cf4 100644
2236
2237 /*
2238 diff --git a/arch/mips/kernel/i8259.c b/arch/mips/kernel/i8259.c
2239 -index 2b91fe8..fe4f6b4 100644
2240 +index 50b3648..c2f3cec 100644
2241 --- a/arch/mips/kernel/i8259.c
2242 +++ b/arch/mips/kernel/i8259.c
2243 -@@ -205,7 +205,7 @@ spurious_8259A_irq:
2244 +@@ -201,7 +201,7 @@ spurious_8259A_irq:
2245 printk(KERN_DEBUG "spurious 8259A interrupt: IRQ%d.\n", irq);
2246 spurious_irq_mask |= irqmask;
2247 }
2248 @@ -6917,10 +7369,10 @@ index 44a1f79..2bd6aa3 100644
2249
2250 void __init gt641xx_irq_init(void)
2251 diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c
2252 -index d1fea7a..2e591b0 100644
2253 +index d2bfbc2..a8eacd2 100644
2254 --- a/arch/mips/kernel/irq.c
2255 +++ b/arch/mips/kernel/irq.c
2256 -@@ -77,17 +77,17 @@ void ack_bad_irq(unsigned int irq)
2257 +@@ -76,17 +76,17 @@ void ack_bad_irq(unsigned int irq)
2258 printk("unexpected IRQ # %d\n", irq);
2259 }
2260
2261 @@ -6941,7 +7393,7 @@ index d1fea7a..2e591b0 100644
2262 }
2263
2264 void __init init_IRQ(void)
2265 -@@ -110,7 +110,10 @@ void __init init_IRQ(void)
2266 +@@ -109,7 +109,10 @@ void __init init_IRQ(void)
2267 #endif
2268 }
2269
2270 @@ -6952,7 +7404,7 @@ index d1fea7a..2e591b0 100644
2271 static inline void check_stack_overflow(void)
2272 {
2273 unsigned long sp;
2274 -@@ -126,6 +129,7 @@ static inline void check_stack_overflow(void)
2275 +@@ -125,6 +128,7 @@ static inline void check_stack_overflow(void)
2276 printk("do_IRQ: stack overflow: %ld\n",
2277 sp - sizeof(struct thread_info));
2278 dump_stack();
2279 @@ -6960,11 +7412,24 @@ index d1fea7a..2e591b0 100644
2280 }
2281 }
2282 #else
2283 +diff --git a/arch/mips/kernel/pm-cps.c b/arch/mips/kernel/pm-cps.c
2284 +index c4c2069..bde8051 100644
2285 +--- a/arch/mips/kernel/pm-cps.c
2286 ++++ b/arch/mips/kernel/pm-cps.c
2287 +@@ -168,7 +168,7 @@ int cps_pm_enter_state(enum cps_pm_state state)
2288 + nc_core_ready_count = nc_addr;
2289 +
2290 + /* Ensure ready_count is zero-initialised before the assembly runs */
2291 +- ACCESS_ONCE(*nc_core_ready_count) = 0;
2292 ++ ACCESS_ONCE_RW(*nc_core_ready_count) = 0;
2293 + coupled_barrier(&per_cpu(pm_barrier, core), online);
2294 +
2295 + /* Run the generated entry code */
2296 diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
2297 -index 60e39dc..b4829bf 100644
2298 +index 0a1ec0f..d9e93b6 100644
2299 --- a/arch/mips/kernel/process.c
2300 +++ b/arch/mips/kernel/process.c
2301 -@@ -579,15 +579,3 @@ unsigned long get_wchan(struct task_struct *task)
2302 +@@ -572,15 +572,3 @@ unsigned long get_wchan(struct task_struct *task)
2303 out:
2304 return pc;
2305 }
2306 @@ -7039,55 +7504,11 @@ index 07fc524..b9d7f28 100644
2307 pm_power_off();
2308 + BUG();
2309 }
2310 -diff --git a/arch/mips/kernel/smtc-proc.c b/arch/mips/kernel/smtc-proc.c
2311 -index 38635a9..3fcd5e0 100644
2312 ---- a/arch/mips/kernel/smtc-proc.c
2313 -+++ b/arch/mips/kernel/smtc-proc.c
2314 -@@ -31,7 +31,7 @@ unsigned long selfipis[NR_CPUS];
2315 -
2316 - struct smtc_cpu_proc smtc_cpu_stats[NR_CPUS];
2317 -
2318 --atomic_t smtc_fpu_recoveries;
2319 -+atomic_unchecked_t smtc_fpu_recoveries;
2320 -
2321 - static int smtc_proc_show(struct seq_file *m, void *v)
2322 - {
2323 -@@ -48,7 +48,7 @@ static int smtc_proc_show(struct seq_file *m, void *v)
2324 - for(i = 0; i < NR_CPUS; i++)
2325 - seq_printf(m, "%d: %ld\n", i, smtc_cpu_stats[i].selfipis);
2326 - seq_printf(m, "%d Recoveries of \"stolen\" FPU\n",
2327 -- atomic_read(&smtc_fpu_recoveries));
2328 -+ atomic_read_unchecked(&smtc_fpu_recoveries));
2329 - return 0;
2330 - }
2331 -
2332 -@@ -73,7 +73,7 @@ void init_smtc_stats(void)
2333 - smtc_cpu_stats[i].selfipis = 0;
2334 - }
2335 -
2336 -- atomic_set(&smtc_fpu_recoveries, 0);
2337 -+ atomic_set_unchecked(&smtc_fpu_recoveries, 0);
2338 -
2339 - proc_create("smtc", 0444, NULL, &smtc_proc_fops);
2340 - }
2341 -diff --git a/arch/mips/kernel/smtc.c b/arch/mips/kernel/smtc.c
2342 -index c1681d6..9f881d1 100644
2343 ---- a/arch/mips/kernel/smtc.c
2344 -+++ b/arch/mips/kernel/smtc.c
2345 -@@ -1359,7 +1359,7 @@ void smtc_soft_dump(void)
2346 - }
2347 - smtc_ipi_qdump();
2348 - printk("%d Recoveries of \"stolen\" FPU\n",
2349 -- atomic_read(&smtc_fpu_recoveries));
2350 -+ atomic_read_unchecked(&smtc_fpu_recoveries));
2351 - }
2352 -
2353 -
2354 diff --git a/arch/mips/kernel/sync-r4k.c b/arch/mips/kernel/sync-r4k.c
2355 -index c24ad5f..9983ab2 100644
2356 +index 2242bdd..b284048 100644
2357 --- a/arch/mips/kernel/sync-r4k.c
2358 +++ b/arch/mips/kernel/sync-r4k.c
2359 -@@ -20,8 +20,8 @@
2360 +@@ -18,8 +18,8 @@
2361 #include <asm/mipsregs.h>
2362
2363 static atomic_t count_start_flag = ATOMIC_INIT(0);
2364 @@ -7098,7 +7519,7 @@ index c24ad5f..9983ab2 100644
2365 static atomic_t count_reference = ATOMIC_INIT(0);
2366
2367 #define COUNTON 100
2368 -@@ -68,13 +68,13 @@ void synchronise_count_master(int cpu)
2369 +@@ -58,13 +58,13 @@ void synchronise_count_master(int cpu)
2370
2371 for (i = 0; i < NR_LOOPS; i++) {
2372 /* slaves loop on '!= 2' */
2373 @@ -7115,7 +7536,7 @@ index c24ad5f..9983ab2 100644
2374
2375 /*
2376 * Everyone initialises count in the last loop:
2377 -@@ -85,11 +85,11 @@ void synchronise_count_master(int cpu)
2378 +@@ -75,11 +75,11 @@ void synchronise_count_master(int cpu)
2379 /*
2380 * Wait for all slaves to leave the synchronization point:
2381 */
2382 @@ -7130,7 +7551,7 @@ index c24ad5f..9983ab2 100644
2383 }
2384 /* Arrange for an interrupt in a short while */
2385 write_c0_compare(read_c0_count() + COUNTON);
2386 -@@ -130,8 +130,8 @@ void synchronise_count_slave(int cpu)
2387 +@@ -112,8 +112,8 @@ void synchronise_count_slave(int cpu)
2388 initcount = atomic_read(&count_reference);
2389
2390 for (i = 0; i < NR_LOOPS; i++) {
2391 @@ -7141,7 +7562,7 @@ index c24ad5f..9983ab2 100644
2392 mb();
2393
2394 /*
2395 -@@ -140,8 +140,8 @@ void synchronise_count_slave(int cpu)
2396 +@@ -122,8 +122,8 @@ void synchronise_count_slave(int cpu)
2397 if (i == NR_LOOPS-1)
2398 write_c0_count(initcount);
2399
2400 @@ -7153,10 +7574,10 @@ index c24ad5f..9983ab2 100644
2401 }
2402 /* Arrange for an interrupt in a short while */
2403 diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
2404 -index 8119ac2..b229939 100644
2405 +index 51706d6..ec1178c 100644
2406 --- a/arch/mips/kernel/traps.c
2407 +++ b/arch/mips/kernel/traps.c
2408 -@@ -695,7 +695,18 @@ asmlinkage void do_ov(struct pt_regs *regs)
2409 +@@ -687,7 +687,18 @@ asmlinkage void do_ov(struct pt_regs *regs)
2410 siginfo_t info;
2411
2412 prev_state = exception_enter();
2413 @@ -7176,19 +7597,6 @@ index 8119ac2..b229939 100644
2414
2415 info.si_code = FPE_INTOVF;
2416 info.si_signo = SIGFPE;
2417 -diff --git a/arch/mips/kvm/kvm_mips.c b/arch/mips/kvm/kvm_mips.c
2418 -index 3e0ff8d..9eafbf0b 100644
2419 ---- a/arch/mips/kvm/kvm_mips.c
2420 -+++ b/arch/mips/kvm/kvm_mips.c
2421 -@@ -832,7 +832,7 @@ long kvm_arch_vm_ioctl(struct file *filp, unsigned int ioctl, unsigned long arg)
2422 - return r;
2423 - }
2424 -
2425 --int kvm_arch_init(void *opaque)
2426 -+int kvm_arch_init(const void *opaque)
2427 - {
2428 - int ret;
2429 -
2430 diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c
2431 index becc42b..9e43d4b 100644
2432 --- a/arch/mips/mm/fault.c
2433 @@ -7523,10 +7931,10 @@ index 4ce7a01..449202a 100644
2434
2435 #endif /* __ASM_OPENRISC_CACHE_H */
2436 diff --git a/arch/parisc/include/asm/atomic.h b/arch/parisc/include/asm/atomic.h
2437 -index 472886c..00e7df9 100644
2438 +index 0be2db2..1b0f26d 100644
2439 --- a/arch/parisc/include/asm/atomic.h
2440 +++ b/arch/parisc/include/asm/atomic.h
2441 -@@ -252,6 +252,16 @@ static inline long atomic64_dec_if_positive(atomic64_t *v)
2442 +@@ -248,6 +248,16 @@ static inline long atomic64_dec_if_positive(atomic64_t *v)
2443 return dec;
2444 }
2445
2446 @@ -8016,7 +8424,7 @@ index 3ca9c11..d163ef7 100644
2447 /*
2448 * If for any reason at all we couldn't handle the fault, make
2449 diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
2450 -index 004851f..c15e65a 100644
2451 +index 80b94b0..a3274fb 100644
2452 --- a/arch/powerpc/Kconfig
2453 +++ b/arch/powerpc/Kconfig
2454 @@ -398,6 +398,7 @@ config PPC64_SUPPORTS_MEMORY_FAILURE
2455 @@ -8028,10 +8436,10 @@ index 004851f..c15e65a 100644
2456 kexec is a system call that implements the ability to shutdown your
2457 current kernel, and to start another kernel. It is like a reboot
2458 diff --git a/arch/powerpc/include/asm/atomic.h b/arch/powerpc/include/asm/atomic.h
2459 -index e3b1d41..8e81edf 100644
2460 +index 28992d0..c797b20 100644
2461 --- a/arch/powerpc/include/asm/atomic.h
2462 +++ b/arch/powerpc/include/asm/atomic.h
2463 -@@ -523,6 +523,16 @@ static __inline__ long atomic64_inc_not_zero(atomic64_t *v)
2464 +@@ -519,6 +519,16 @@ static __inline__ long atomic64_inc_not_zero(atomic64_t *v)
2465 return t1;
2466 }
2467
2468 @@ -8049,7 +8457,7 @@ index e3b1d41..8e81edf 100644
2469
2470 #endif /* __KERNEL__ */
2471 diff --git a/arch/powerpc/include/asm/barrier.h b/arch/powerpc/include/asm/barrier.h
2472 -index f89da80..7f5b05a 100644
2473 +index bab79a1..4a3eabc 100644
2474 --- a/arch/powerpc/include/asm/barrier.h
2475 +++ b/arch/powerpc/include/asm/barrier.h
2476 @@ -73,7 +73,7 @@
2477 @@ -8083,7 +8491,7 @@ index ed0afc1..0332825 100644
2478 #define SMP_CACHE_BYTES L1_CACHE_BYTES
2479
2480 diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h
2481 -index 935b5e7..7001d2d 100644
2482 +index 888d8f3..66f581c 100644
2483 --- a/arch/powerpc/include/asm/elf.h
2484 +++ b/arch/powerpc/include/asm/elf.h
2485 @@ -28,8 +28,19 @@
2486 @@ -8108,7 +8516,7 @@ index 935b5e7..7001d2d 100644
2487
2488 #define ELF_CORE_EFLAGS (is_elf2_task() ? 2 : 0)
2489
2490 -@@ -127,10 +138,6 @@ extern int arch_setup_additional_pages(struct linux_binprm *bprm,
2491 +@@ -129,10 +140,6 @@ extern int arch_setup_additional_pages(struct linux_binprm *bprm,
2492 (0x7ff >> (PAGE_SHIFT - 12)) : \
2493 (0x3ffff >> (PAGE_SHIFT - 12)))
2494
2495 @@ -8297,7 +8705,7 @@ index 4b0be20..c15a27d 100644
2496 static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd,
2497 pte_t *pte)
2498 diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h
2499 -index 3ebb188..e17dddf 100644
2500 +index d98c1ec..9f61569 100644
2501 --- a/arch/powerpc/include/asm/pgtable.h
2502 +++ b/arch/powerpc/include/asm/pgtable.h
2503 @@ -2,6 +2,7 @@
2504 @@ -8321,10 +8729,10 @@ index 4aad413..85d86bf 100644
2505 #define _PAGE_NO_CACHE 0x020 /* I: cache inhibit */
2506 #define _PAGE_WRITETHRU 0x040 /* W: cache write-through */
2507 diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h
2508 -index e5d2e0b..9ac74b1 100644
2509 +index bffd89d..a6641ed 100644
2510 --- a/arch/powerpc/include/asm/reg.h
2511 +++ b/arch/powerpc/include/asm/reg.h
2512 -@@ -249,6 +249,7 @@
2513 +@@ -251,6 +251,7 @@
2514 #define SPRN_DBCR 0x136 /* e300 Data Breakpoint Control Reg */
2515 #define SPRN_DSISR 0x012 /* Data Storage Interrupt Status Register */
2516 #define DSISR_NOHPTE 0x40000000 /* no translation found */
2517 @@ -8333,7 +8741,7 @@ index e5d2e0b..9ac74b1 100644
2518 #define DSISR_ISSTORE 0x02000000 /* access was a store */
2519 #define DSISR_DABRMATCH 0x00400000 /* hit data breakpoint */
2520 diff --git a/arch/powerpc/include/asm/smp.h b/arch/powerpc/include/asm/smp.h
2521 -index ff51046..b982dd4 100644
2522 +index 5a6614a..d89995d1 100644
2523 --- a/arch/powerpc/include/asm/smp.h
2524 +++ b/arch/powerpc/include/asm/smp.h
2525 @@ -51,7 +51,7 @@ struct smp_ops_t {
2526 @@ -8551,10 +8959,10 @@ index 9485b43..3bd3c16 100644
2527
2528 static inline unsigned long clear_user(void __user *addr, unsigned long size)
2529 diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
2530 -index fcc9a89..07be2bb 100644
2531 +index 670c312..60c2b52 100644
2532 --- a/arch/powerpc/kernel/Makefile
2533 +++ b/arch/powerpc/kernel/Makefile
2534 -@@ -26,6 +26,8 @@ CFLAGS_REMOVE_ftrace.o = -pg -mno-sched-epilog
2535 +@@ -27,6 +27,8 @@ CFLAGS_REMOVE_ftrace.o = -pg -mno-sched-epilog
2536 CFLAGS_REMOVE_time.o = -pg -mno-sched-epilog
2537 endif
2538
2539 @@ -8564,45 +8972,45 @@ index fcc9a89..07be2bb 100644
2540 irq.o align.o signal_32.o pmc.o vdso.o \
2541 process.o systbl.o idle.o \
2542 diff --git a/arch/powerpc/kernel/exceptions-64e.S b/arch/powerpc/kernel/exceptions-64e.S
2543 -index c1bee3c..5b42583 100644
2544 +index bb9cac6..5181202 100644
2545 --- a/arch/powerpc/kernel/exceptions-64e.S
2546 +++ b/arch/powerpc/kernel/exceptions-64e.S
2547 @@ -1010,6 +1010,7 @@ storage_fault_common:
2548 std r14,_DAR(r1)
2549 std r15,_DSISR(r1)
2550 addi r3,r1,STACK_FRAME_OVERHEAD
2551 -+ bl .save_nvgprs
2552 ++ bl save_nvgprs
2553 mr r4,r14
2554 mr r5,r15
2555 ld r14,PACA_EXGEN+EX_R14(r13)
2556 @@ -1018,8 +1019,7 @@ storage_fault_common:
2557 cmpdi r3,0
2558 bne- 1f
2559 - b .ret_from_except_lite
2560 --1: bl .save_nvgprs
2561 + b ret_from_except_lite
2562 +-1: bl save_nvgprs
2563 - mr r5,r3
2564 +1: mr r5,r3
2565 addi r3,r1,STACK_FRAME_OVERHEAD
2566 ld r4,_DAR(r1)
2567 - bl .bad_page_fault
2568 + bl bad_page_fault
2569 diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
2570 -index 3afd391..18f9e36 100644
2571 +index a7d36b1..53af150 100644
2572 --- a/arch/powerpc/kernel/exceptions-64s.S
2573 +++ b/arch/powerpc/kernel/exceptions-64s.S
2574 -@@ -1587,10 +1587,10 @@ handle_page_fault:
2575 +@@ -1637,10 +1637,10 @@ handle_page_fault:
2576 11: ld r4,_DAR(r1)
2577 ld r5,_DSISR(r1)
2578 addi r3,r1,STACK_FRAME_OVERHEAD
2579 -+ bl .save_nvgprs
2580 - bl .do_page_fault
2581 ++ bl save_nvgprs
2582 + bl do_page_fault
2583 cmpdi r3,0
2584 beq+ 12f
2585 -- bl .save_nvgprs
2586 +- bl save_nvgprs
2587 mr r5,r3
2588 addi r3,r1,STACK_FRAME_OVERHEAD
2589 lwz r4,_DAR(r1)
2590 diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
2591 -index ca1cd74..6f0241a 100644
2592 +index 248ee7e..1eb60dd 100644
2593 --- a/arch/powerpc/kernel/irq.c
2594 +++ b/arch/powerpc/kernel/irq.c
2595 @@ -447,6 +447,8 @@ void migrate_irqs(void)
2596 @@ -8665,10 +9073,10 @@ index 6cff040..74ac5d1b 100644
2597 sechdrs, module);
2598 #endif
2599 diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
2600 -index 31d0215..206af70 100644
2601 +index be99774..9879c82 100644
2602 --- a/arch/powerpc/kernel/process.c
2603 +++ b/arch/powerpc/kernel/process.c
2604 -@@ -1031,8 +1031,8 @@ void show_regs(struct pt_regs * regs)
2605 +@@ -1039,8 +1039,8 @@ void show_regs(struct pt_regs * regs)
2606 * Lookup NIP late so we have the best change of getting the
2607 * above info out without failing
2608 */
2609 @@ -8800,10 +9208,10 @@ index 2e3d2bf..35df241 100644
2610
2611 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
2612 diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c
2613 -index 4e47db6..6dcc96e 100644
2614 +index 1bc5a17..910d3f3 100644
2615 --- a/arch/powerpc/kernel/signal_32.c
2616 +++ b/arch/powerpc/kernel/signal_32.c
2617 -@@ -1013,7 +1013,7 @@ int handle_rt_signal32(unsigned long sig, struct k_sigaction *ka,
2618 +@@ -1012,7 +1012,7 @@ int handle_rt_signal32(unsigned long sig, struct k_sigaction *ka,
2619 /* Save user registers on the stack */
2620 frame = &rt_sf->uc.uc_mcontext;
2621 addr = frame;
2622 @@ -8813,10 +9221,10 @@ index 4e47db6..6dcc96e 100644
2623 tramp = current->mm->context.vdso_base + vdso32_rt_sigtramp;
2624 } else {
2625 diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c
2626 -index d501dc4..e5a0de0 100644
2627 +index 97c1e4b..f427f81 100644
2628 --- a/arch/powerpc/kernel/signal_64.c
2629 +++ b/arch/powerpc/kernel/signal_64.c
2630 -@@ -760,7 +760,7 @@ int handle_rt_signal64(int signr, struct k_sigaction *ka, siginfo_t *info,
2631 +@@ -755,7 +755,7 @@ int handle_rt_signal64(int signr, struct k_sigaction *ka, siginfo_t *info,
2632 current->thread.fp_state.fpscr = 0;
2633
2634 /* Set up to return from userspace. */
2635 @@ -8826,7 +9234,7 @@ index d501dc4..e5a0de0 100644
2636 } else {
2637 err |= setup_trampoline(__NR_rt_sigreturn, &frame->tramp[0]);
2638 diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
2639 -index 1bd7ca2..9b78c2f 100644
2640 +index 239f1cd..5359f76 100644
2641 --- a/arch/powerpc/kernel/traps.c
2642 +++ b/arch/powerpc/kernel/traps.c
2643 @@ -142,6 +142,8 @@ static unsigned __kprobes long oops_begin(struct pt_regs *regs)
2644 @@ -8879,10 +9287,10 @@ index ce74c33..0803371 100644
2645 rc = vdso_base;
2646 goto fail_mmapsem;
2647 diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
2648 -index 3cf541a..ab2d825 100644
2649 +index 61c738a..b1092d6 100644
2650 --- a/arch/powerpc/kvm/powerpc.c
2651 +++ b/arch/powerpc/kvm/powerpc.c
2652 -@@ -1153,7 +1153,7 @@ void kvmppc_init_lpid(unsigned long nr_lpids_param)
2653 +@@ -1195,7 +1195,7 @@ void kvmppc_init_lpid(unsigned long nr_lpids_param)
2654 }
2655 EXPORT_SYMBOL_GPL(kvmppc_init_lpid);
2656
2657 @@ -9157,10 +9565,10 @@ index 9098692..3d54cd1 100644
2658 struct spu_context *ctx = vma->vm_file->private_data;
2659 unsigned long offset = address - vma->vm_start;
2660 diff --git a/arch/s390/include/asm/atomic.h b/arch/s390/include/asm/atomic.h
2661 -index 1d47061..0714963 100644
2662 +index fa934fe..c296056 100644
2663 --- a/arch/s390/include/asm/atomic.h
2664 +++ b/arch/s390/include/asm/atomic.h
2665 -@@ -412,6 +412,16 @@ static inline long long atomic64_dec_if_positive(atomic64_t *v)
2666 +@@ -412,4 +412,14 @@ static inline long long atomic64_dec_if_positive(atomic64_t *v)
2667 #define atomic64_dec_and_test(_v) (atomic64_sub_return(1, _v) == 0)
2668 #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
2669
2670 @@ -9174,14 +9582,12 @@ index 1d47061..0714963 100644
2671 +#define atomic64_dec_unchecked(v) atomic64_dec(v)
2672 +#define atomic64_cmpxchg_unchecked(v, o, n) atomic64_cmpxchg((v), (o), (n))
2673 +
2674 - #define smp_mb__before_atomic_dec() smp_mb()
2675 - #define smp_mb__after_atomic_dec() smp_mb()
2676 - #define smp_mb__before_atomic_inc() smp_mb()
2677 + #endif /* __ARCH_S390_ATOMIC__ */
2678 diff --git a/arch/s390/include/asm/barrier.h b/arch/s390/include/asm/barrier.h
2679 -index 578680f..0eb3b11 100644
2680 +index 19ff956..8d39cb1 100644
2681 --- a/arch/s390/include/asm/barrier.h
2682 +++ b/arch/s390/include/asm/barrier.h
2683 -@@ -36,7 +36,7 @@
2684 +@@ -37,7 +37,7 @@
2685 do { \
2686 compiletime_assert_atomic_type(*p); \
2687 barrier(); \
2688 @@ -9250,7 +9656,7 @@ index c4a93d6..4d2a9b4 100644
2689
2690 #endif /* __ASM_EXEC_H */
2691 diff --git a/arch/s390/include/asm/uaccess.h b/arch/s390/include/asm/uaccess.h
2692 -index 1be64a1..086839d1 100644
2693 +index cd4c68e..6764641 100644
2694 --- a/arch/s390/include/asm/uaccess.h
2695 +++ b/arch/s390/include/asm/uaccess.h
2696 @@ -59,6 +59,7 @@ static inline int __range_ok(unsigned long addr, unsigned long size)
2697 @@ -9261,7 +9667,7 @@ index 1be64a1..086839d1 100644
2698 #define access_ok(type, addr, size) __access_ok(addr, size)
2699
2700 /*
2701 -@@ -245,6 +246,10 @@ static inline unsigned long __must_check
2702 +@@ -275,6 +276,10 @@ static inline unsigned long __must_check
2703 copy_to_user(void __user *to, const void *from, unsigned long n)
2704 {
2705 might_fault();
2706 @@ -9272,7 +9678,7 @@ index 1be64a1..086839d1 100644
2707 return __copy_to_user(to, from, n);
2708 }
2709
2710 -@@ -273,10 +278,14 @@ __compiletime_warning("copy_from_user() buffer size is not provably correct")
2711 +@@ -303,10 +308,14 @@ __compiletime_warning("copy_from_user() buffer size is not provably correct")
2712 static inline unsigned long __must_check
2713 copy_from_user(void *to, const void __user *from, unsigned long n)
2714 {
2715 @@ -9365,7 +9771,7 @@ index b89b591..fd9609d 100644
2716 if (r_type == R_390_GOTPC)
2717 rc = apply_rela_bits(loc, val, 1, 32, 0);
2718 diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
2719 -index dd14532..1dfc145 100644
2720 +index 93b9ca4..4ea1454 100644
2721 --- a/arch/s390/kernel/process.c
2722 +++ b/arch/s390/kernel/process.c
2723 @@ -242,37 +242,3 @@ unsigned long get_wchan(struct task_struct *p)
2724 @@ -9594,10 +10000,10 @@ index 6777177..cb5e44f 100644
2725 addr = vm_unmapped_area(&info);
2726 }
2727 diff --git a/arch/sparc/include/asm/atomic_64.h b/arch/sparc/include/asm/atomic_64.h
2728 -index be56a24..443328f 100644
2729 +index bb894c8..8141d5c 100644
2730 --- a/arch/sparc/include/asm/atomic_64.h
2731 +++ b/arch/sparc/include/asm/atomic_64.h
2732 -@@ -14,18 +14,40 @@
2733 +@@ -15,18 +15,40 @@
2734 #define ATOMIC64_INIT(i) { (i) }
2735
2736 #define atomic_read(v) (*(volatile int *)&(v)->counter)
2737 @@ -9622,23 +10028,23 @@ index be56a24..443328f 100644
2738 + v->counter = i;
2739 +}
2740
2741 - extern void atomic_add(int, atomic_t *);
2742 -+extern void atomic_add_unchecked(int, atomic_unchecked_t *);
2743 - extern void atomic64_add(long, atomic64_t *);
2744 -+extern void atomic64_add_unchecked(long, atomic64_unchecked_t *);
2745 - extern void atomic_sub(int, atomic_t *);
2746 -+extern void atomic_sub_unchecked(int, atomic_unchecked_t *);
2747 - extern void atomic64_sub(long, atomic64_t *);
2748 -+extern void atomic64_sub_unchecked(long, atomic64_unchecked_t *);
2749 + void atomic_add(int, atomic_t *);
2750 ++void atomic_add_unchecked(int, atomic_unchecked_t *);
2751 + void atomic64_add(long, atomic64_t *);
2752 ++void atomic64_add_unchecked(long, atomic64_unchecked_t *);
2753 + void atomic_sub(int, atomic_t *);
2754 ++void atomic_sub_unchecked(int, atomic_unchecked_t *);
2755 + void atomic64_sub(long, atomic64_t *);
2756 ++void atomic64_sub_unchecked(long, atomic64_unchecked_t *);
2757
2758 - extern int atomic_add_ret(int, atomic_t *);
2759 -+extern int atomic_add_ret_unchecked(int, atomic_unchecked_t *);
2760 - extern long atomic64_add_ret(long, atomic64_t *);
2761 -+extern long atomic64_add_ret_unchecked(long, atomic64_unchecked_t *);
2762 - extern int atomic_sub_ret(int, atomic_t *);
2763 - extern long atomic64_sub_ret(long, atomic64_t *);
2764 + int atomic_add_ret(int, atomic_t *);
2765 ++int atomic_add_ret_unchecked(int, atomic_unchecked_t *);
2766 + long atomic64_add_ret(long, atomic64_t *);
2767 ++long atomic64_add_ret_unchecked(long, atomic64_unchecked_t *);
2768 + int atomic_sub_ret(int, atomic_t *);
2769 + long atomic64_sub_ret(long, atomic64_t *);
2770
2771 -@@ -33,13 +55,29 @@ extern long atomic64_sub_ret(long, atomic64_t *);
2772 +@@ -34,13 +56,29 @@ long atomic64_sub_ret(long, atomic64_t *);
2773 #define atomic64_dec_return(v) atomic64_sub_ret(1, v)
2774
2775 #define atomic_inc_return(v) atomic_add_ret(1, v)
2776 @@ -9668,7 +10074,7 @@ index be56a24..443328f 100644
2777
2778 /*
2779 * atomic_inc_and_test - increment and test
2780 -@@ -50,6 +88,10 @@ extern long atomic64_sub_ret(long, atomic64_t *);
2781 +@@ -51,6 +89,10 @@ long atomic64_sub_ret(long, atomic64_t *);
2782 * other cases.
2783 */
2784 #define atomic_inc_and_test(v) (atomic_inc_return(v) == 0)
2785 @@ -9679,7 +10085,7 @@ index be56a24..443328f 100644
2786 #define atomic64_inc_and_test(v) (atomic64_inc_return(v) == 0)
2787
2788 #define atomic_sub_and_test(i, v) (atomic_sub_ret(i, v) == 0)
2789 -@@ -59,25 +101,60 @@ extern long atomic64_sub_ret(long, atomic64_t *);
2790 +@@ -60,25 +102,60 @@ long atomic64_sub_ret(long, atomic64_t *);
2791 #define atomic64_dec_and_test(v) (atomic64_sub_ret(1, v) == 0)
2792
2793 #define atomic_inc(v) atomic_add(1, v)
2794 @@ -9743,7 +10149,7 @@ index be56a24..443328f 100644
2795 if (likely(old == c))
2796 break;
2797 c = old;
2798 -@@ -88,20 +165,35 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
2799 +@@ -89,20 +166,35 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
2800 #define atomic64_cmpxchg(v, o, n) \
2801 ((__typeof__((v)->counter))cmpxchg(&((v)->counter), (o), (n)))
2802 #define atomic64_xchg(v, new) (xchg(&((v)->counter), new))
2803 @@ -9784,7 +10190,7 @@ index be56a24..443328f 100644
2804
2805 #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
2806 diff --git a/arch/sparc/include/asm/barrier_64.h b/arch/sparc/include/asm/barrier_64.h
2807 -index b5aad96..99d7465 100644
2808 +index 305dcc3..7835030 100644
2809 --- a/arch/sparc/include/asm/barrier_64.h
2810 +++ b/arch/sparc/include/asm/barrier_64.h
2811 @@ -57,7 +57,7 @@ do { __asm__ __volatile__("ba,pt %%xcc, 1f\n\t" \
2812 @@ -9851,10 +10257,10 @@ index 370ca1e..d4f4a98 100644
2813 #define ELF_HWCAP sparc64_elf_hwcap
2814
2815 diff --git a/arch/sparc/include/asm/pgalloc_32.h b/arch/sparc/include/asm/pgalloc_32.h
2816 -index 9b1c36d..209298b 100644
2817 +index a3890da..f6a408e 100644
2818 --- a/arch/sparc/include/asm/pgalloc_32.h
2819 +++ b/arch/sparc/include/asm/pgalloc_32.h
2820 -@@ -33,6 +33,7 @@ static inline void pgd_set(pgd_t * pgdp, pmd_t * pmdp)
2821 +@@ -35,6 +35,7 @@ static inline void pgd_set(pgd_t * pgdp, pmd_t * pmdp)
2822 }
2823
2824 #define pgd_populate(MM, PGD, PMD) pgd_set(PGD, PMD)
2825 @@ -9863,7 +10269,7 @@ index 9b1c36d..209298b 100644
2826 static inline pmd_t *pmd_alloc_one(struct mm_struct *mm,
2827 unsigned long address)
2828 diff --git a/arch/sparc/include/asm/pgalloc_64.h b/arch/sparc/include/asm/pgalloc_64.h
2829 -index bcfe063..b333142 100644
2830 +index 39a7ac4..2c9b586 100644
2831 --- a/arch/sparc/include/asm/pgalloc_64.h
2832 +++ b/arch/sparc/include/asm/pgalloc_64.h
2833 @@ -26,6 +26,7 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd)
2834 @@ -9888,10 +10294,10 @@ index 59ba6f6..4518128 100644
2835 +
2836 #endif
2837 diff --git a/arch/sparc/include/asm/pgtable_32.h b/arch/sparc/include/asm/pgtable_32.h
2838 -index 502f632..da1917f 100644
2839 +index b9b91ae..950b91e 100644
2840 --- a/arch/sparc/include/asm/pgtable_32.h
2841 +++ b/arch/sparc/include/asm/pgtable_32.h
2842 -@@ -50,6 +50,9 @@ extern unsigned long calc_highpages(void);
2843 +@@ -51,6 +51,9 @@ unsigned long __init bootmem_init(unsigned long *pages_avail);
2844 #define PAGE_SHARED SRMMU_PAGE_SHARED
2845 #define PAGE_COPY SRMMU_PAGE_COPY
2846 #define PAGE_READONLY SRMMU_PAGE_RDONLY
2847 @@ -9901,7 +10307,7 @@ index 502f632..da1917f 100644
2848 #define PAGE_KERNEL SRMMU_PAGE_KERNEL
2849
2850 /* Top-level page directory - dummy used by init-mm.
2851 -@@ -62,18 +65,18 @@ extern unsigned long ptr_in_current_pgd;
2852 +@@ -63,18 +66,18 @@ extern unsigned long ptr_in_current_pgd;
2853
2854 /* xwr */
2855 #define __P000 PAGE_NONE
2856 @@ -9942,6 +10348,21 @@ index 79da178..c2eede8 100644
2857 #define SRMMU_PAGE_KERNEL __pgprot(SRMMU_VALID | SRMMU_CACHE | SRMMU_PRIV | \
2858 SRMMU_DIRTY | SRMMU_REF)
2859
2860 +diff --git a/arch/sparc/include/asm/setup.h b/arch/sparc/include/asm/setup.h
2861 +index f5fffd8..a0669f0 100644
2862 +--- a/arch/sparc/include/asm/setup.h
2863 ++++ b/arch/sparc/include/asm/setup.h
2864 +@@ -53,8 +53,8 @@ int handle_ldf_stq(u32 insn, struct pt_regs *regs);
2865 + void handle_ld_nf(u32 insn, struct pt_regs *regs);
2866 +
2867 + /* init_64.c */
2868 +-extern atomic_t dcpage_flushes;
2869 +-extern atomic_t dcpage_flushes_xcall;
2870 ++extern atomic_unchecked_t dcpage_flushes;
2871 ++extern atomic_unchecked_t dcpage_flushes_xcall;
2872 +
2873 + extern int sysctl_tsb_ratio;
2874 + #endif
2875 diff --git a/arch/sparc/include/asm/spinlock_64.h b/arch/sparc/include/asm/spinlock_64.h
2876 index 9689176..63c18ea 100644
2877 --- a/arch/sparc/include/asm/spinlock_64.h
2878 @@ -10104,7 +10525,7 @@ index a5f01ac..703b554 100644
2879 * Thread-synchronous status.
2880 *
2881 diff --git a/arch/sparc/include/asm/uaccess.h b/arch/sparc/include/asm/uaccess.h
2882 -index 0167d26..767bb0c 100644
2883 +index bd56c28..4b63d83 100644
2884 --- a/arch/sparc/include/asm/uaccess.h
2885 +++ b/arch/sparc/include/asm/uaccess.h
2886 @@ -1,5 +1,6 @@
2887 @@ -10115,10 +10536,10 @@ index 0167d26..767bb0c 100644
2888 #include <asm/uaccess_64.h>
2889 #else
2890 diff --git a/arch/sparc/include/asm/uaccess_32.h b/arch/sparc/include/asm/uaccess_32.h
2891 -index 53a28dd..50c38c3 100644
2892 +index 9634d08..f55fe4f 100644
2893 --- a/arch/sparc/include/asm/uaccess_32.h
2894 +++ b/arch/sparc/include/asm/uaccess_32.h
2895 -@@ -250,27 +250,46 @@ extern unsigned long __copy_user(void __user *to, const void __user *from, unsig
2896 +@@ -250,27 +250,46 @@ unsigned long __copy_user(void __user *to, const void __user *from, unsigned lon
2897
2898 static inline unsigned long copy_to_user(void __user *to, const void *from, unsigned long n)
2899 {
2900 @@ -10170,7 +10591,7 @@ index 53a28dd..50c38c3 100644
2901 }
2902
2903 diff --git a/arch/sparc/include/asm/uaccess_64.h b/arch/sparc/include/asm/uaccess_64.h
2904 -index ad7e178..c9e7423 100644
2905 +index c990a5e..f17b9c1 100644
2906 --- a/arch/sparc/include/asm/uaccess_64.h
2907 +++ b/arch/sparc/include/asm/uaccess_64.h
2908 @@ -10,6 +10,7 @@
2909 @@ -10181,7 +10602,7 @@ index ad7e178..c9e7423 100644
2910 #include <asm/asi.h>
2911 #include <asm/spitfire.h>
2912 #include <asm-generic/uaccess-unaligned.h>
2913 -@@ -214,8 +215,15 @@ extern unsigned long copy_from_user_fixup(void *to, const void __user *from,
2914 +@@ -214,8 +215,15 @@ unsigned long copy_from_user_fixup(void *to, const void __user *from,
2915 static inline unsigned long __must_check
2916 copy_from_user(void *to, const void __user *from, unsigned long size)
2917 {
2918 @@ -10198,7 +10619,7 @@ index ad7e178..c9e7423 100644
2919 if (unlikely(ret))
2920 ret = copy_from_user_fixup(to, from, size);
2921
2922 -@@ -231,8 +239,15 @@ extern unsigned long copy_to_user_fixup(void __user *to, const void *from,
2923 +@@ -231,8 +239,15 @@ unsigned long copy_to_user_fixup(void __user *to, const void *from,
2924 static inline unsigned long __must_check
2925 copy_to_user(void __user *to, const void *from, unsigned long size)
2926 {
2927 @@ -10216,7 +10637,7 @@ index ad7e178..c9e7423 100644
2928 ret = copy_to_user_fixup(to, from, size);
2929 return ret;
2930 diff --git a/arch/sparc/kernel/Makefile b/arch/sparc/kernel/Makefile
2931 -index d15cc17..d0ae796 100644
2932 +index 7cf9c6e..6206648 100644
2933 --- a/arch/sparc/kernel/Makefile
2934 +++ b/arch/sparc/kernel/Makefile
2935 @@ -4,7 +4,7 @@
2936 @@ -10229,10 +10650,10 @@ index d15cc17..d0ae796 100644
2937 extra-y := head_$(BITS).o
2938
2939 diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c
2940 -index 510baec..9ff2607 100644
2941 +index 50e7b62..79fae35 100644
2942 --- a/arch/sparc/kernel/process_32.c
2943 +++ b/arch/sparc/kernel/process_32.c
2944 -@@ -115,14 +115,14 @@ void show_regs(struct pt_regs *r)
2945 +@@ -123,14 +123,14 @@ void show_regs(struct pt_regs *r)
2946
2947 printk("PSR: %08lx PC: %08lx NPC: %08lx Y: %08lx %s\n",
2948 r->psr, r->pc, r->npc, r->y, print_tainted());
2949 @@ -10249,7 +10670,7 @@ index 510baec..9ff2607 100644
2950
2951 printk("%%L: %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
2952 rw->locals[0], rw->locals[1], rw->locals[2], rw->locals[3],
2953 -@@ -159,7 +159,7 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp)
2954 +@@ -167,7 +167,7 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp)
2955 rw = (struct reg_window32 *) fp;
2956 pc = rw->ins[7];
2957 printk("[%08lx : ", pc);
2958 @@ -10259,7 +10680,7 @@ index 510baec..9ff2607 100644
2959 } while (++count < 16);
2960 printk("\n");
2961 diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c
2962 -index d7b4967..2edf827 100644
2963 +index 027e099..6d4178f 100644
2964 --- a/arch/sparc/kernel/process_64.c
2965 +++ b/arch/sparc/kernel/process_64.c
2966 @@ -161,7 +161,7 @@ static void show_regwindow(struct pt_regs *regs)
2967 @@ -10289,7 +10710,7 @@ index d7b4967..2edf827 100644
2968 show_regwindow(regs);
2969 show_stack(current, (unsigned long *) regs->u_regs[UREG_FP]);
2970 }
2971 -@@ -272,7 +272,7 @@ void arch_trigger_all_cpu_backtrace(void)
2972 +@@ -278,7 +278,7 @@ void arch_trigger_all_cpu_backtrace(bool include_self)
2973 ((tp && tp->task) ? tp->task->pid : -1));
2974
2975 if (gp->tstate & TSTATE_PRIV) {
2976 @@ -10351,21 +10772,10 @@ index c13c9f2..d572c34 100644
2977
2978 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
2979 diff --git a/arch/sparc/kernel/smp_64.c b/arch/sparc/kernel/smp_64.c
2980 -index 745a363..b5566b1 100644
2981 +index 41aa247..eadfb74 100644
2982 --- a/arch/sparc/kernel/smp_64.c
2983 +++ b/arch/sparc/kernel/smp_64.c
2984 -@@ -868,8 +868,8 @@ extern unsigned long xcall_flush_dcache_page_cheetah;
2985 - extern unsigned long xcall_flush_dcache_page_spitfire;
2986 -
2987 - #ifdef CONFIG_DEBUG_DCFLUSH
2988 --extern atomic_t dcpage_flushes;
2989 --extern atomic_t dcpage_flushes_xcall;
2990 -+extern atomic_unchecked_t dcpage_flushes;
2991 -+extern atomic_unchecked_t dcpage_flushes_xcall;
2992 - #endif
2993 -
2994 - static inline void __local_flush_dcache_page(struct page *page)
2995 -@@ -893,7 +893,7 @@ void smp_flush_dcache_page_impl(struct page *page, int cpu)
2996 +@@ -883,7 +883,7 @@ void smp_flush_dcache_page_impl(struct page *page, int cpu)
2997 return;
2998
2999 #ifdef CONFIG_DEBUG_DCFLUSH
3000 @@ -10374,7 +10784,7 @@ index 745a363..b5566b1 100644
3001 #endif
3002
3003 this_cpu = get_cpu();
3004 -@@ -917,7 +917,7 @@ void smp_flush_dcache_page_impl(struct page *page, int cpu)
3005 +@@ -907,7 +907,7 @@ void smp_flush_dcache_page_impl(struct page *page, int cpu)
3006 xcall_deliver(data0, __pa(pg_addr),
3007 (u64) pg_addr, cpumask_of(cpu));
3008 #ifdef CONFIG_DEBUG_DCFLUSH
3009 @@ -10383,7 +10793,7 @@ index 745a363..b5566b1 100644
3010 #endif
3011 }
3012 }
3013 -@@ -936,7 +936,7 @@ void flush_dcache_page_all(struct mm_struct *mm, struct page *page)
3014 +@@ -926,7 +926,7 @@ void flush_dcache_page_all(struct mm_struct *mm, struct page *page)
3015 preempt_disable();
3016
3017 #ifdef CONFIG_DEBUG_DCFLUSH
3018 @@ -10392,7 +10802,7 @@ index 745a363..b5566b1 100644
3019 #endif
3020 data0 = 0;
3021 pg_addr = page_address(page);
3022 -@@ -953,7 +953,7 @@ void flush_dcache_page_all(struct mm_struct *mm, struct page *page)
3023 +@@ -943,7 +943,7 @@ void flush_dcache_page_all(struct mm_struct *mm, struct page *page)
3024 xcall_deliver(data0, __pa(pg_addr),
3025 (u64) pg_addr, cpu_online_mask);
3026 #ifdef CONFIG_DEBUG_DCFLUSH
3027 @@ -10402,10 +10812,10 @@ index 745a363..b5566b1 100644
3028 }
3029 __local_flush_dcache_page(page);
3030 diff --git a/arch/sparc/kernel/sys_sparc_32.c b/arch/sparc/kernel/sys_sparc_32.c
3031 -index 3a8d184..49498a8 100644
3032 +index 646988d..b88905f 100644
3033 --- a/arch/sparc/kernel/sys_sparc_32.c
3034 +++ b/arch/sparc/kernel/sys_sparc_32.c
3035 -@@ -52,7 +52,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
3036 +@@ -54,7 +54,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
3037 if (len > TASK_SIZE - PAGE_SIZE)
3038 return -ENOMEM;
3039 if (!addr)
3040 @@ -10415,10 +10825,10 @@ index 3a8d184..49498a8 100644
3041 info.flags = 0;
3042 info.length = len;
3043 diff --git a/arch/sparc/kernel/sys_sparc_64.c b/arch/sparc/kernel/sys_sparc_64.c
3044 -index beb0b5a..5a153f7 100644
3045 +index c85403d..6af95c9 100644
3046 --- a/arch/sparc/kernel/sys_sparc_64.c
3047 +++ b/arch/sparc/kernel/sys_sparc_64.c
3048 -@@ -88,13 +88,14 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
3049 +@@ -89,13 +89,14 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
3050 struct vm_area_struct * vma;
3051 unsigned long task_size = TASK_SIZE;
3052 int do_color_align;
3053 @@ -10434,7 +10844,7 @@ index beb0b5a..5a153f7 100644
3054 ((addr - (pgoff << PAGE_SHIFT)) & (SHMLBA - 1)))
3055 return -EINVAL;
3056 return addr;
3057 -@@ -109,6 +110,10 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
3058 +@@ -110,6 +111,10 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
3059 if (filp || (flags & MAP_SHARED))
3060 do_color_align = 1;
3061
3062 @@ -10445,7 +10855,7 @@ index beb0b5a..5a153f7 100644
3063 if (addr) {
3064 if (do_color_align)
3065 addr = COLOR_ALIGN(addr, pgoff);
3066 -@@ -116,22 +121,28 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
3067 +@@ -117,22 +122,28 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
3068 addr = PAGE_ALIGN(addr);
3069
3070 vma = find_vma(mm, addr);
3071 @@ -10477,7 +10887,7 @@ index beb0b5a..5a153f7 100644
3072 info.high_limit = task_size;
3073 addr = vm_unmapped_area(&info);
3074 }
3075 -@@ -149,6 +160,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
3076 +@@ -150,6 +161,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
3077 unsigned long task_size = STACK_TOP32;
3078 unsigned long addr = addr0;
3079 int do_color_align;
3080 @@ -10485,7 +10895,7 @@ index beb0b5a..5a153f7 100644
3081 struct vm_unmapped_area_info info;
3082
3083 /* This should only ever run for 32-bit processes. */
3084 -@@ -158,7 +170,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
3085 +@@ -159,7 +171,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
3086 /* We do not accept a shared mapping if it would violate
3087 * cache aliasing constraints.
3088 */
3089 @@ -10494,7 +10904,7 @@ index beb0b5a..5a153f7 100644
3090 ((addr - (pgoff << PAGE_SHIFT)) & (SHMLBA - 1)))
3091 return -EINVAL;
3092 return addr;
3093 -@@ -171,6 +183,10 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
3094 +@@ -172,6 +184,10 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
3095 if (filp || (flags & MAP_SHARED))
3096 do_color_align = 1;
3097
3098 @@ -10505,7 +10915,7 @@ index beb0b5a..5a153f7 100644
3099 /* requesting a specific address */
3100 if (addr) {
3101 if (do_color_align)
3102 -@@ -179,8 +195,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
3103 +@@ -180,8 +196,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
3104 addr = PAGE_ALIGN(addr);
3105
3106 vma = find_vma(mm, addr);
3107 @@ -10515,7 +10925,7 @@ index beb0b5a..5a153f7 100644
3108 return addr;
3109 }
3110
3111 -@@ -190,6 +205,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
3112 +@@ -191,6 +206,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
3113 info.high_limit = mm->mmap_base;
3114 info.align_mask = do_color_align ? (PAGE_MASK & (SHMLBA - 1)) : 0;
3115 info.align_offset = pgoff << PAGE_SHIFT;
3116 @@ -10523,7 +10933,7 @@ index beb0b5a..5a153f7 100644
3117 addr = vm_unmapped_area(&info);
3118
3119 /*
3120 -@@ -202,6 +218,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
3121 +@@ -203,6 +219,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
3122 VM_BUG_ON(addr != -ENOMEM);
3123 info.flags = 0;
3124 info.low_limit = TASK_UNMAPPED_BASE;
3125 @@ -10536,7 +10946,7 @@ index beb0b5a..5a153f7 100644
3126 info.high_limit = STACK_TOP32;
3127 addr = vm_unmapped_area(&info);
3128 }
3129 -@@ -258,10 +280,14 @@ unsigned long get_fb_unmapped_area(struct file *filp, unsigned long orig_addr, u
3130 +@@ -259,10 +281,14 @@ unsigned long get_fb_unmapped_area(struct file *filp, unsigned long orig_addr, u
3131 EXPORT_SYMBOL(get_fb_unmapped_area);
3132
3133 /* Essentially the same as PowerPC. */
3134 @@ -10552,7 +10962,7 @@ index beb0b5a..5a153f7 100644
3135 if (current->flags & PF_RANDOMIZE) {
3136 unsigned long val = get_random_int();
3137 if (test_thread_flag(TIF_32BIT))
3138 -@@ -274,7 +300,7 @@ static unsigned long mmap_rnd(void)
3139 +@@ -275,7 +301,7 @@ static unsigned long mmap_rnd(void)
3140
3141 void arch_pick_mmap_layout(struct mm_struct *mm)
3142 {
3143 @@ -10561,7 +10971,7 @@ index beb0b5a..5a153f7 100644
3144 unsigned long gap;
3145
3146 /*
3147 -@@ -287,6 +313,12 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
3148 +@@ -288,6 +314,12 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
3149 gap == RLIM_INFINITY ||
3150 sysctl_legacy_va_layout) {
3151 mm->mmap_base = TASK_UNMAPPED_BASE + random_factor;
3152 @@ -10574,7 +10984,7 @@ index beb0b5a..5a153f7 100644
3153 mm->get_unmapped_area = arch_get_unmapped_area;
3154 } else {
3155 /* We know it's 32-bit */
3156 -@@ -298,6 +330,12 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
3157 +@@ -299,6 +331,12 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
3158 gap = (task_size / 6 * 5);
3159
3160 mm->mmap_base = PAGE_ALIGN(task_size - gap - random_factor);
3161 @@ -10628,7 +11038,7 @@ index 33a17e7..d87fb1f 100644
3162
3163 2:
3164 diff --git a/arch/sparc/kernel/traps_32.c b/arch/sparc/kernel/traps_32.c
3165 -index 6629829..036032d 100644
3166 +index 6fd386c5..6907d81 100644
3167 --- a/arch/sparc/kernel/traps_32.c
3168 +++ b/arch/sparc/kernel/traps_32.c
3169 @@ -44,6 +44,8 @@ static void instruction_dump(unsigned long *pc)
3170 @@ -10637,10 +11047,10 @@ index 6629829..036032d 100644
3171
3172 +extern void gr_handle_kernel_exploit(void);
3173 +
3174 - void die_if_kernel(char *str, struct pt_regs *regs)
3175 + void __noreturn die_if_kernel(char *str, struct pt_regs *regs)
3176 {
3177 static int die_counter;
3178 -@@ -76,15 +78,17 @@ void die_if_kernel(char *str, struct pt_regs *regs)
3179 +@@ -76,15 +78,17 @@ void __noreturn die_if_kernel(char *str, struct pt_regs *regs)
3180 count++ < 30 &&
3181 (((unsigned long) rw) >= PAGE_OFFSET) &&
3182 !(((unsigned long) rw) & 0x7)) {
3183 @@ -10661,10 +11071,10 @@ index 6629829..036032d 100644
3184 }
3185
3186 diff --git a/arch/sparc/kernel/traps_64.c b/arch/sparc/kernel/traps_64.c
3187 -index 4ced92f..965eeed 100644
3188 +index fb6640e..2daada8 100644
3189 --- a/arch/sparc/kernel/traps_64.c
3190 +++ b/arch/sparc/kernel/traps_64.c
3191 -@@ -77,7 +77,7 @@ static void dump_tl1_traplog(struct tl1_traplog *p)
3192 +@@ -79,7 +79,7 @@ static void dump_tl1_traplog(struct tl1_traplog *p)
3193 i + 1,
3194 p->trapstack[i].tstate, p->trapstack[i].tpc,
3195 p->trapstack[i].tnpc, p->trapstack[i].tt);
3196 @@ -10673,7 +11083,7 @@ index 4ced92f..965eeed 100644
3197 }
3198 }
3199
3200 -@@ -97,6 +97,12 @@ void bad_trap(struct pt_regs *regs, long lvl)
3201 +@@ -99,6 +99,12 @@ void bad_trap(struct pt_regs *regs, long lvl)
3202
3203 lvl -= 0x100;
3204 if (regs->tstate & TSTATE_PRIV) {
3205 @@ -10686,7 +11096,7 @@ index 4ced92f..965eeed 100644
3206 sprintf(buffer, "Kernel bad sw trap %lx", lvl);
3207 die_if_kernel(buffer, regs);
3208 }
3209 -@@ -115,11 +121,16 @@ void bad_trap(struct pt_regs *regs, long lvl)
3210 +@@ -117,11 +123,16 @@ void bad_trap(struct pt_regs *regs, long lvl)
3211 void bad_trap_tl1(struct pt_regs *regs, long lvl)
3212 {
3213 char buffer[32];
3214 @@ -10704,7 +11114,7 @@ index 4ced92f..965eeed 100644
3215 dump_tl1_traplog((struct tl1_traplog *)(regs + 1));
3216
3217 sprintf (buffer, "Bad trap %lx at tl>0", lvl);
3218 -@@ -1149,7 +1160,7 @@ static void cheetah_log_errors(struct pt_regs *regs, struct cheetah_err_info *in
3219 +@@ -1151,7 +1162,7 @@ static void cheetah_log_errors(struct pt_regs *regs, struct cheetah_err_info *in
3220 regs->tpc, regs->tnpc, regs->u_regs[UREG_I7], regs->tstate);
3221 printk("%s" "ERROR(%d): ",
3222 (recoverable ? KERN_WARNING : KERN_CRIT), smp_processor_id());
3223 @@ -10713,7 +11123,7 @@ index 4ced92f..965eeed 100644
3224 printk("%s" "ERROR(%d): M_SYND(%lx), E_SYND(%lx)%s%s\n",
3225 (recoverable ? KERN_WARNING : KERN_CRIT), smp_processor_id(),
3226 (afsr & CHAFSR_M_SYNDROME) >> CHAFSR_M_SYNDROME_SHIFT,
3227 -@@ -1756,7 +1767,7 @@ void cheetah_plus_parity_error(int type, struct pt_regs *regs)
3228 +@@ -1758,7 +1769,7 @@ void cheetah_plus_parity_error(int type, struct pt_regs *regs)
3229 smp_processor_id(),
3230 (type & 0x1) ? 'I' : 'D',
3231 regs->tpc);
3232 @@ -10722,7 +11132,7 @@ index 4ced92f..965eeed 100644
3233 panic("Irrecoverable Cheetah+ parity error.");
3234 }
3235
3236 -@@ -1764,7 +1775,7 @@ void cheetah_plus_parity_error(int type, struct pt_regs *regs)
3237 +@@ -1766,7 +1777,7 @@ void cheetah_plus_parity_error(int type, struct pt_regs *regs)
3238 smp_processor_id(),
3239 (type & 0x1) ? 'I' : 'D',
3240 regs->tpc);
3241 @@ -10731,7 +11141,7 @@ index 4ced92f..965eeed 100644
3242 }
3243
3244 struct sun4v_error_entry {
3245 -@@ -1837,8 +1848,8 @@ struct sun4v_error_entry {
3246 +@@ -1839,8 +1850,8 @@ struct sun4v_error_entry {
3247 /*0x38*/u64 reserved_5;
3248 };
3249
3250 @@ -10742,7 +11152,7 @@ index 4ced92f..965eeed 100644
3251
3252 static const char *sun4v_err_type_to_str(u8 type)
3253 {
3254 -@@ -1930,7 +1941,7 @@ static void sun4v_report_real_raddr(const char *pfx, struct pt_regs *regs)
3255 +@@ -1932,7 +1943,7 @@ static void sun4v_report_real_raddr(const char *pfx, struct pt_regs *regs)
3256 }
3257
3258 static void sun4v_log_error(struct pt_regs *regs, struct sun4v_error_entry *ent,
3259 @@ -10751,7 +11161,7 @@ index 4ced92f..965eeed 100644
3260 {
3261 u64 *raw_ptr = (u64 *) ent;
3262 u32 attrs;
3263 -@@ -1988,8 +1999,8 @@ static void sun4v_log_error(struct pt_regs *regs, struct sun4v_error_entry *ent,
3264 +@@ -1990,8 +2001,8 @@ static void sun4v_log_error(struct pt_regs *regs, struct sun4v_error_entry *ent,
3265
3266 show_regs(regs);
3267
3268 @@ -10762,7 +11172,7 @@ index 4ced92f..965eeed 100644
3269 wmb();
3270 printk("%s: Queue overflowed %d times.\n",
3271 pfx, cnt);
3272 -@@ -2046,7 +2057,7 @@ out:
3273 +@@ -2048,7 +2059,7 @@ out:
3274 */
3275 void sun4v_resum_overflow(struct pt_regs *regs)
3276 {
3277 @@ -10771,7 +11181,7 @@ index 4ced92f..965eeed 100644
3278 }
3279
3280 /* We run with %pil set to PIL_NORMAL_MAX and PSTATE_IE enabled in %pstate.
3281 -@@ -2099,7 +2110,7 @@ void sun4v_nonresum_overflow(struct pt_regs *regs)
3282 +@@ -2101,7 +2112,7 @@ void sun4v_nonresum_overflow(struct pt_regs *regs)
3283 /* XXX Actually even this can make not that much sense. Perhaps
3284 * XXX we should just pull the plug and panic directly from here?
3285 */
3286 @@ -10780,7 +11190,7 @@ index 4ced92f..965eeed 100644
3287 }
3288
3289 unsigned long sun4v_err_itlb_vaddr;
3290 -@@ -2114,9 +2125,9 @@ void sun4v_itlb_error_report(struct pt_regs *regs, int tl)
3291 +@@ -2116,9 +2127,9 @@ void sun4v_itlb_error_report(struct pt_regs *regs, int tl)
3292
3293 printk(KERN_EMERG "SUN4V-ITLB: Error at TPC[%lx], tl %d\n",
3294 regs->tpc, tl);
3295 @@ -10792,7 +11202,7 @@ index 4ced92f..965eeed 100644
3296 (void *) regs->u_regs[UREG_I7]);
3297 printk(KERN_EMERG "SUN4V-ITLB: vaddr[%lx] ctx[%lx] "
3298 "pte[%lx] error[%lx]\n",
3299 -@@ -2138,9 +2149,9 @@ void sun4v_dtlb_error_report(struct pt_regs *regs, int tl)
3300 +@@ -2140,9 +2151,9 @@ void sun4v_dtlb_error_report(struct pt_regs *regs, int tl)
3301
3302 printk(KERN_EMERG "SUN4V-DTLB: Error at TPC[%lx], tl %d\n",
3303 regs->tpc, tl);
3304 @@ -10826,10 +11236,10 @@ index 4ced92f..965eeed 100644
3305
3306 +extern void gr_handle_kernel_exploit(void);
3307 +
3308 - void die_if_kernel(char *str, struct pt_regs *regs)
3309 + void __noreturn die_if_kernel(char *str, struct pt_regs *regs)
3310 {
3311 static int die_counter;
3312 -@@ -2411,7 +2424,7 @@ void die_if_kernel(char *str, struct pt_regs *regs)
3313 +@@ -2411,7 +2424,7 @@ void __noreturn die_if_kernel(char *str, struct pt_regs *regs)
3314 while (rw &&
3315 count++ < 30 &&
3316 kstack_valid(tp, (unsigned long) rw)) {
3317 @@ -10838,7 +11248,7 @@ index 4ced92f..965eeed 100644
3318 (void *) rw->ins[7]);
3319
3320 rw = kernel_stack_up(rw);
3321 -@@ -2424,8 +2437,10 @@ void die_if_kernel(char *str, struct pt_regs *regs)
3322 +@@ -2424,8 +2437,10 @@ void __noreturn die_if_kernel(char *str, struct pt_regs *regs)
3323 }
3324 user_instruction_dump ((unsigned int __user *) regs->tpc);
3325 }
3326 @@ -10851,10 +11261,10 @@ index 4ced92f..965eeed 100644
3327 }
3328 EXPORT_SYMBOL(die_if_kernel);
3329 diff --git a/arch/sparc/kernel/unaligned_64.c b/arch/sparc/kernel/unaligned_64.c
3330 -index 35ab8b6..9046547 100644
3331 +index 62098a8..547ab2c 100644
3332 --- a/arch/sparc/kernel/unaligned_64.c
3333 +++ b/arch/sparc/kernel/unaligned_64.c
3334 -@@ -295,7 +295,7 @@ static void log_unaligned(struct pt_regs *regs)
3335 +@@ -297,7 +297,7 @@ static void log_unaligned(struct pt_regs *regs)
3336 static DEFINE_RATELIMIT_STATE(ratelimit, 5 * HZ, 5);
3337
3338 if (__ratelimit(&ratelimit)) {
3339 @@ -10864,7 +11274,7 @@ index 35ab8b6..9046547 100644
3340 }
3341 }
3342 diff --git a/arch/sparc/lib/Makefile b/arch/sparc/lib/Makefile
3343 -index dbe119b..089c7c1 100644
3344 +index 3269b02..64f5231 100644
3345 --- a/arch/sparc/lib/Makefile
3346 +++ b/arch/sparc/lib/Makefile
3347 @@ -2,7 +2,7 @@
3348 @@ -11127,7 +11537,7 @@ index 30c3ecc..736f015 100644
3349 obj-$(CONFIG_SPARC64) += ultra.o tlb.o tsb.o gup.o
3350 obj-y += fault_$(BITS).o
3351 diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c
3352 -index 59dbd46..1dd7f5e 100644
3353 +index 908e8c1..1524793 100644
3354 --- a/arch/sparc/mm/fault_32.c
3355 +++ b/arch/sparc/mm/fault_32.c
3356 @@ -21,6 +21,9 @@
3357 @@ -11140,7 +11550,7 @@ index 59dbd46..1dd7f5e 100644
3358
3359 #include <asm/page.h>
3360 #include <asm/pgtable.h>
3361 -@@ -159,6 +162,277 @@ static unsigned long compute_si_addr(struct pt_regs *regs, int text_fault)
3362 +@@ -156,6 +159,277 @@ static unsigned long compute_si_addr(struct pt_regs *regs, int text_fault)
3363 return safe_compute_effective_address(regs, insn);
3364 }
3365
3366 @@ -11418,7 +11828,7 @@ index 59dbd46..1dd7f5e 100644
3367 static noinline void do_fault_siginfo(int code, int sig, struct pt_regs *regs,
3368 int text_fault)
3369 {
3370 -@@ -229,6 +503,24 @@ good_area:
3371 +@@ -226,6 +500,24 @@ good_area:
3372 if (!(vma->vm_flags & VM_WRITE))
3373 goto bad_area;
3374 } else {
3375 @@ -11444,7 +11854,7 @@ index 59dbd46..1dd7f5e 100644
3376 if (!(vma->vm_flags & (VM_READ | VM_EXEC)))
3377 goto bad_area;
3378 diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c
3379 -index 4ced3fc..234f1e4 100644
3380 +index 587cd05..fbdf17a 100644
3381 --- a/arch/sparc/mm/fault_64.c
3382 +++ b/arch/sparc/mm/fault_64.c
3383 @@ -22,6 +22,9 @@
3384 @@ -11457,7 +11867,7 @@ index 4ced3fc..234f1e4 100644
3385
3386 #include <asm/page.h>
3387 #include <asm/pgtable.h>
3388 -@@ -75,7 +78,7 @@ static void __kprobes bad_kernel_pc(struct pt_regs *regs, unsigned long vaddr)
3389 +@@ -76,7 +79,7 @@ static void __kprobes bad_kernel_pc(struct pt_regs *regs, unsigned long vaddr)
3390 printk(KERN_CRIT "OOPS: Bogus kernel PC [%016lx] in fault handler\n",
3391 regs->tpc);
3392 printk(KERN_CRIT "OOPS: RPC [%016lx]\n", regs->u_regs[15]);
3393 @@ -11466,7 +11876,7 @@ index 4ced3fc..234f1e4 100644
3394 printk(KERN_CRIT "OOPS: Fault was to vaddr[%lx]\n", vaddr);
3395 dump_stack();
3396 unhandled_fault(regs->tpc, current, regs);
3397 -@@ -281,6 +284,466 @@ static void noinline __kprobes bogus_32bit_fault_tpc(struct pt_regs *regs)
3398 +@@ -279,6 +282,466 @@ static void noinline __kprobes bogus_32bit_fault_tpc(struct pt_regs *regs)
3399 show_regs(regs);
3400 }
3401
3402 @@ -11933,7 +12343,7 @@ index 4ced3fc..234f1e4 100644
3403 asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
3404 {
3405 enum ctx_state prev_state = exception_enter();
3406 -@@ -352,6 +815,29 @@ retry:
3407 +@@ -350,6 +813,29 @@ retry:
3408 if (!vma)
3409 goto bad_area;
3410
3411 @@ -12070,10 +12480,10 @@ index d329537..2c3746a 100644
3412
3413 pte_t *huge_pte_alloc(struct mm_struct *mm,
3414 diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c
3415 -index 9686224..dfbdb10 100644
3416 +index 2cfb0f2..e917d9f 100644
3417 --- a/arch/sparc/mm/init_64.c
3418 +++ b/arch/sparc/mm/init_64.c
3419 -@@ -188,9 +188,9 @@ unsigned long sparc64_kern_sec_context __read_mostly;
3420 +@@ -189,9 +189,9 @@ unsigned long sparc64_kern_sec_context __read_mostly;
3421 int num_kernel_image_mappings;
3422
3423 #ifdef CONFIG_DEBUG_DCFLUSH
3424 @@ -12085,7 +12495,7 @@ index 9686224..dfbdb10 100644
3425 #endif
3426 #endif
3427
3428 -@@ -198,7 +198,7 @@ inline void flush_dcache_page_impl(struct page *page)
3429 +@@ -199,7 +199,7 @@ inline void flush_dcache_page_impl(struct page *page)
3430 {
3431 BUG_ON(tlb_type == hypervisor);
3432 #ifdef CONFIG_DEBUG_DCFLUSH
3433 @@ -12094,7 +12504,7 @@ index 9686224..dfbdb10 100644
3434 #endif
3435
3436 #ifdef DCACHE_ALIASING_POSSIBLE
3437 -@@ -470,10 +470,10 @@ void mmu_info(struct seq_file *m)
3438 +@@ -471,10 +471,10 @@ void mmu_info(struct seq_file *m)
3439
3440 #ifdef CONFIG_DEBUG_DCFLUSH
3441 seq_printf(m, "DCPageFlushes\t: %d\n",
3442 @@ -12108,10 +12518,10 @@ index 9686224..dfbdb10 100644
3443 #endif /* CONFIG_DEBUG_DCFLUSH */
3444 }
3445 diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig
3446 -index 85258ca..df97c79 100644
3447 +index 4f3006b..453f625f 100644
3448 --- a/arch/tile/Kconfig
3449 +++ b/arch/tile/Kconfig
3450 -@@ -190,6 +190,7 @@ source "kernel/Kconfig.hz"
3451 +@@ -192,6 +192,7 @@ source "kernel/Kconfig.hz"
3452
3453 config KEXEC
3454 bool "kexec system call"
3455 @@ -12120,7 +12530,7 @@ index 85258ca..df97c79 100644
3456 kexec is a system call that implements the ability to shutdown your
3457 current kernel, and to start another kernel. It is like a reboot
3458 diff --git a/arch/tile/include/asm/atomic_64.h b/arch/tile/include/asm/atomic_64.h
3459 -index ad220ee..2f537b3 100644
3460 +index 7b11c5f..755a026 100644
3461 --- a/arch/tile/include/asm/atomic_64.h
3462 +++ b/arch/tile/include/asm/atomic_64.h
3463 @@ -105,6 +105,16 @@ static inline long atomic64_add_unless(atomic64_t *v, long a, long u)
3464 @@ -12137,9 +12547,9 @@ index ad220ee..2f537b3 100644
3465 +#define atomic64_dec_unchecked(v) atomic64_dec(v)
3466 +#define atomic64_cmpxchg_unchecked(v, o, n) atomic64_cmpxchg((v), (o), (n))
3467 +
3468 - /* Atomic dec and inc don't implement barrier, so provide them if needed. */
3469 - #define smp_mb__before_atomic_dec() smp_mb()
3470 - #define smp_mb__after_atomic_dec() smp_mb()
3471 + /* Define this to indicate that cmpxchg is an efficient operation. */
3472 + #define __HAVE_ARCH_CMPXCHG
3473 +
3474 diff --git a/arch/tile/include/asm/cache.h b/arch/tile/include/asm/cache.h
3475 index 6160761..00cac88 100644
3476 --- a/arch/tile/include/asm/cache.h
3477 @@ -12195,7 +12605,7 @@ index e514899..f8743c4 100644
3478
3479 /*
3480 diff --git a/arch/um/Makefile b/arch/um/Makefile
3481 -index 36e658a..71a5c5a 100644
3482 +index e4b1a96..16162f8 100644
3483 --- a/arch/um/Makefile
3484 +++ b/arch/um/Makefile
3485 @@ -72,6 +72,10 @@ USER_CFLAGS = $(patsubst $(KERNEL_DEFINES),,$(patsubst -D__KERNEL__,,\
3486 @@ -12312,10 +12722,10 @@ index ad8f795..2c7eec6 100644
3487 /*
3488 * Memory returned by kmalloc() may be used for DMA, so we must make
3489 diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
3490 -index 1dd1408..be4ce12 100644
3491 +index d24887b..267d526 100644
3492 --- a/arch/x86/Kconfig
3493 +++ b/arch/x86/Kconfig
3494 -@@ -127,7 +127,7 @@ config X86
3495 +@@ -128,7 +128,7 @@ config X86
3496 select RTC_LIB
3497 select HAVE_DEBUG_STACKOVERFLOW
3498 select HAVE_IRQ_EXIT_ON_IRQ_STACK if X86_64
3499 @@ -12324,7 +12734,7 @@ index 1dd1408..be4ce12 100644
3500 select GENERIC_CPU_AUTOPROBE
3501 select HAVE_ARCH_AUDITSYSCALL
3502 select ARCH_SUPPORTS_ATOMIC_RMW
3503 -@@ -252,7 +252,7 @@ config X86_HT
3504 +@@ -253,7 +253,7 @@ config X86_HT
3505
3506 config X86_32_LAZY_GS
3507 def_bool y
3508 @@ -12333,7 +12743,7 @@ index 1dd1408..be4ce12 100644
3509
3510 config ARCH_HWEIGHT_CFLAGS
3511 string
3512 -@@ -546,6 +546,7 @@ config SCHED_OMIT_FRAME_POINTER
3513 +@@ -549,6 +549,7 @@ config SCHED_OMIT_FRAME_POINTER
3514
3515 menuconfig HYPERVISOR_GUEST
3516 bool "Linux guest support"
3517 @@ -12341,7 +12751,7 @@ index 1dd1408..be4ce12 100644
3518 ---help---
3519 Say Y here to enable options for running Linux under various hyper-
3520 visors. This option enables basic hypervisor detection and platform
3521 -@@ -1072,6 +1073,7 @@ choice
3522 +@@ -1076,6 +1077,7 @@ choice
3523
3524 config NOHIGHMEM
3525 bool "off"
3526 @@ -12349,7 +12759,7 @@ index 1dd1408..be4ce12 100644
3527 ---help---
3528 Linux can use up to 64 Gigabytes of physical memory on x86 systems.
3529 However, the address space of 32-bit x86 processors is only 4
3530 -@@ -1108,6 +1110,7 @@ config NOHIGHMEM
3531 +@@ -1112,6 +1114,7 @@ config NOHIGHMEM
3532
3533 config HIGHMEM4G
3534 bool "4GB"
3535 @@ -12357,7 +12767,7 @@ index 1dd1408..be4ce12 100644
3536 ---help---
3537 Select this if you have a 32-bit processor and between 1 and 4
3538 gigabytes of physical RAM.
3539 -@@ -1160,7 +1163,7 @@ config PAGE_OFFSET
3540 +@@ -1164,7 +1167,7 @@ config PAGE_OFFSET
3541 hex
3542 default 0xB0000000 if VMSPLIT_3G_OPT
3543 default 0x80000000 if VMSPLIT_2G
3544 @@ -12366,7 +12776,7 @@ index 1dd1408..be4ce12 100644
3545 default 0x40000000 if VMSPLIT_1G
3546 default 0xC0000000
3547 depends on X86_32
3548 -@@ -1573,6 +1576,7 @@ source kernel/Kconfig.hz
3549 +@@ -1577,6 +1580,7 @@ source kernel/Kconfig.hz
3550
3551 config KEXEC
3552 bool "kexec system call"
3553 @@ -12374,7 +12784,7 @@ index 1dd1408..be4ce12 100644
3554 ---help---
3555 kexec is a system call that implements the ability to shutdown your
3556 current kernel, and to start another kernel. It is like a reboot
3557 -@@ -1724,7 +1728,9 @@ config X86_NEED_RELOCS
3558 +@@ -1727,7 +1731,9 @@ config X86_NEED_RELOCS
3559
3560 config PHYSICAL_ALIGN
3561 hex "Alignment value to which kernel should be aligned"
3562 @@ -12385,7 +12795,7 @@ index 1dd1408..be4ce12 100644
3563 range 0x2000 0x1000000 if X86_32
3564 range 0x200000 0x1000000 if X86_64
3565 ---help---
3566 -@@ -1807,6 +1813,7 @@ config COMPAT_VDSO
3567 +@@ -1810,6 +1816,7 @@ config COMPAT_VDSO
3568 def_bool n
3569 prompt "Disable the 32-bit vDSO (needed for glibc 2.3.3)"
3570 depends on X86_32 || IA32_EMULATION
3571 @@ -12606,7 +13016,7 @@ index cbed140..5f2ca57 100644
3572
3573 /* Target address to relocate to for decompression */
3574 diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
3575 -index 0d558ee..58f257e 100644
3576 +index 2884e0c..904a2f7 100644
3577 --- a/arch/x86/boot/compressed/head_64.S
3578 +++ b/arch/x86/boot/compressed/head_64.S
3579 @@ -94,10 +94,10 @@ ENTRY(startup_32)
3580 @@ -13772,7 +14182,7 @@ index dbc4339..de6e120 100644
3581
3582 ################################################################
3583 diff --git a/arch/x86/crypto/ghash-clmulni-intel_asm.S b/arch/x86/crypto/ghash-clmulni-intel_asm.S
3584 -index 185fad4..ff4cd36 100644
3585 +index 5d1e007..098cb4f 100644
3586 --- a/arch/x86/crypto/ghash-clmulni-intel_asm.S
3587 +++ b/arch/x86/crypto/ghash-clmulni-intel_asm.S
3588 @@ -18,6 +18,7 @@
3589 @@ -14368,7 +14778,7 @@ index d21ff89..6da8e6e 100644
3590 set_fs(KERNEL_DS);
3591 has_dumped = 1;
3592 diff --git a/arch/x86/ia32/ia32_signal.c b/arch/x86/ia32/ia32_signal.c
3593 -index 2206757..85cbcfa 100644
3594 +index f9e181a..b0df8b3 100644
3595 --- a/arch/x86/ia32/ia32_signal.c
3596 +++ b/arch/x86/ia32/ia32_signal.c
3597 @@ -218,7 +218,7 @@ asmlinkage long sys32_sigreturn(void)
3598 @@ -14390,8 +14800,8 @@ index 2206757..85cbcfa 100644
3599 }
3600
3601 @@ -386,7 +386,7 @@ int ia32_setup_frame(int sig, struct ksignal *ksig,
3602 - restorer = VDSO32_SYMBOL(current->mm->context.vdso,
3603 - sigreturn);
3604 + restorer = current->mm->context.vdso +
3605 + selected_vdso32->sym___kernel_sigreturn;
3606 else
3607 - restorer = &frame->retcode;
3608 + restorer = frame->retcode;
3609 @@ -14416,16 +14826,16 @@ index 2206757..85cbcfa 100644
3610 };
3611
3612 frame = get_sigframe(ksig, regs, sizeof(*frame), &fpstate);
3613 -@@ -461,16 +461,18 @@ int ia32_setup_rt_frame(int sig, struct ksignal *ksig,
3614 +@@ -461,16 +461,19 @@ int ia32_setup_rt_frame(int sig, struct ksignal *ksig,
3615
3616 if (ksig->ka.sa.sa_flags & SA_RESTORER)
3617 restorer = ksig->ka.sa.sa_restorer;
3618 +- else
3619 + else if (current->mm->context.vdso)
3620 + /* Return stub is in 32bit vsyscall page */
3621 -+ restorer = VDSO32_SYMBOL(current->mm->context.vdso, rt_sigreturn);
3622 - else
3623 -- restorer = VDSO32_SYMBOL(current->mm->context.vdso,
3624 -- rt_sigreturn);
3625 + restorer = current->mm->context.vdso +
3626 + selected_vdso32->sym___kernel_rt_sigreturn;
3627 ++ else
3628 + restorer = frame->retcode;
3629 put_user_ex(ptr_to_compat(restorer), &frame->pretcode);
3630
3631 @@ -14919,10 +15329,10 @@ index 20370c6..a2eb9b0 100644
3632 "popl %%ebp\n\t"
3633 "popl %%edi\n\t"
3634 diff --git a/arch/x86/include/asm/atomic.h b/arch/x86/include/asm/atomic.h
3635 -index b17f4f4..9620151 100644
3636 +index 6dd1c7dd..2edd216 100644
3637 --- a/arch/x86/include/asm/atomic.h
3638 +++ b/arch/x86/include/asm/atomic.h
3639 -@@ -23,7 +23,18 @@
3640 +@@ -24,7 +24,18 @@
3641 */
3642 static inline int atomic_read(const atomic_t *v)
3643 {
3644 @@ -14942,7 +15352,7 @@ index b17f4f4..9620151 100644
3645 }
3646
3647 /**
3648 -@@ -39,6 +50,18 @@ static inline void atomic_set(atomic_t *v, int i)
3649 +@@ -40,6 +51,18 @@ static inline void atomic_set(atomic_t *v, int i)
3650 }
3651
3652 /**
3653 @@ -14961,7 +15371,7 @@ index b17f4f4..9620151 100644
3654 * atomic_add - add integer to atomic variable
3655 * @i: integer value to add
3656 * @v: pointer of type atomic_t
3657 -@@ -47,7 +70,29 @@ static inline void atomic_set(atomic_t *v, int i)
3658 +@@ -48,7 +71,29 @@ static inline void atomic_set(atomic_t *v, int i)
3659 */
3660 static inline void atomic_add(int i, atomic_t *v)
3661 {
3662 @@ -14992,7 +15402,7 @@ index b17f4f4..9620151 100644
3663 : "+m" (v->counter)
3664 : "ir" (i));
3665 }
3666 -@@ -61,7 +106,29 @@ static inline void atomic_add(int i, atomic_t *v)
3667 +@@ -62,7 +107,29 @@ static inline void atomic_add(int i, atomic_t *v)
3668 */
3669 static inline void atomic_sub(int i, atomic_t *v)
3670 {
3671 @@ -15023,7 +15433,7 @@ index b17f4f4..9620151 100644
3672 : "+m" (v->counter)
3673 : "ir" (i));
3674 }
3675 -@@ -77,7 +144,7 @@ static inline void atomic_sub(int i, atomic_t *v)
3676 +@@ -78,7 +145,7 @@ static inline void atomic_sub(int i, atomic_t *v)
3677 */
3678 static inline int atomic_sub_and_test(int i, atomic_t *v)
3679 {
3680 @@ -15032,7 +15442,7 @@ index b17f4f4..9620151 100644
3681 }
3682
3683 /**
3684 -@@ -88,7 +155,27 @@ static inline int atomic_sub_and_test(int i, atomic_t *v)
3685 +@@ -89,7 +156,27 @@ static inline int atomic_sub_and_test(int i, atomic_t *v)
3686 */
3687 static inline void atomic_inc(atomic_t *v)
3688 {
3689 @@ -15061,7 +15471,7 @@ index b17f4f4..9620151 100644
3690 : "+m" (v->counter));
3691 }
3692
3693 -@@ -100,7 +187,27 @@ static inline void atomic_inc(atomic_t *v)
3694 +@@ -101,7 +188,27 @@ static inline void atomic_inc(atomic_t *v)
3695 */
3696 static inline void atomic_dec(atomic_t *v)
3697 {
3698 @@ -15090,7 +15500,7 @@ index b17f4f4..9620151 100644
3699 : "+m" (v->counter));
3700 }
3701
3702 -@@ -114,7 +221,7 @@ static inline void atomic_dec(atomic_t *v)
3703 +@@ -115,7 +222,7 @@ static inline void atomic_dec(atomic_t *v)
3704 */
3705 static inline int atomic_dec_and_test(atomic_t *v)
3706 {
3707 @@ -15099,7 +15509,7 @@ index b17f4f4..9620151 100644
3708 }
3709
3710 /**
3711 -@@ -127,7 +234,20 @@ static inline int atomic_dec_and_test(atomic_t *v)
3712 +@@ -128,7 +235,20 @@ static inline int atomic_dec_and_test(atomic_t *v)
3713 */
3714 static inline int atomic_inc_and_test(atomic_t *v)
3715 {
3716 @@ -15121,7 +15531,7 @@ index b17f4f4..9620151 100644
3717 }
3718
3719 /**
3720 -@@ -141,7 +261,7 @@ static inline int atomic_inc_and_test(atomic_t *v)
3721 +@@ -142,7 +262,7 @@ static inline int atomic_inc_and_test(atomic_t *v)
3722 */
3723 static inline int atomic_add_negative(int i, atomic_t *v)
3724 {
3725 @@ -15130,7 +15540,7 @@ index b17f4f4..9620151 100644
3726 }
3727
3728 /**
3729 -@@ -153,6 +273,18 @@ static inline int atomic_add_negative(int i, atomic_t *v)
3730 +@@ -154,6 +274,18 @@ static inline int atomic_add_negative(int i, atomic_t *v)
3731 */
3732 static inline int atomic_add_return(int i, atomic_t *v)
3733 {
3734 @@ -15149,7 +15559,7 @@ index b17f4f4..9620151 100644
3735 return i + xadd(&v->counter, i);
3736 }
3737
3738 -@@ -169,9 +301,18 @@ static inline int atomic_sub_return(int i, atomic_t *v)
3739 +@@ -170,9 +302,18 @@ static inline int atomic_sub_return(int i, atomic_t *v)
3740 }
3741
3742 #define atomic_inc_return(v) (atomic_add_return(1, v))
3743 @@ -15169,7 +15579,7 @@ index b17f4f4..9620151 100644
3744 {
3745 return cmpxchg(&v->counter, old, new);
3746 }
3747 -@@ -181,6 +322,11 @@ static inline int atomic_xchg(atomic_t *v, int new)
3748 +@@ -182,6 +323,11 @@ static inline int atomic_xchg(atomic_t *v, int new)
3749 return xchg(&v->counter, new);
3750 }
3751
3752 @@ -15181,7 +15591,7 @@ index b17f4f4..9620151 100644
3753 /**
3754 * __atomic_add_unless - add unless the number is already a given value
3755 * @v: pointer of type atomic_t
3756 -@@ -190,14 +336,27 @@ static inline int atomic_xchg(atomic_t *v, int new)
3757 +@@ -191,14 +337,27 @@ static inline int atomic_xchg(atomic_t *v, int new)
3758 * Atomically adds @a to @v, so long as @v was not already @u.
3759 * Returns the old value of @v.
3760 */
3761 @@ -15213,7 +15623,7 @@ index b17f4f4..9620151 100644
3762 if (likely(old == c))
3763 break;
3764 c = old;
3765 -@@ -206,6 +365,49 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
3766 +@@ -207,6 +366,49 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
3767 }
3768
3769 /**
3770 @@ -15263,7 +15673,7 @@ index b17f4f4..9620151 100644
3771 * atomic_inc_short - increment of a short integer
3772 * @v: pointer to type int
3773 *
3774 -@@ -234,14 +436,37 @@ static inline void atomic_or_long(unsigned long *v1, unsigned long v2)
3775 +@@ -235,14 +437,37 @@ static inline void atomic_or_long(unsigned long *v1, unsigned long v2)
3776 #endif
3777
3778 /* These are x86-specific, used by some header files */
3779 @@ -15306,8 +15716,8 @@ index b17f4f4..9620151 100644
3780 + : "memory");
3781 +}
3782
3783 - /* Atomic operations are already serializing on x86 */
3784 - #define smp_mb__before_atomic_dec() barrier()
3785 + #ifdef CONFIG_X86_32
3786 + # include <asm/atomic64_32.h>
3787 diff --git a/arch/x86/include/asm/atomic64_32.h b/arch/x86/include/asm/atomic64_32.h
3788 index b154de7..bf18a5a 100644
3789 --- a/arch/x86/include/asm/atomic64_32.h
3790 @@ -15759,7 +16169,7 @@ index 46e9052..ae45136 100644
3791
3792 #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
3793 diff --git a/arch/x86/include/asm/barrier.h b/arch/x86/include/asm/barrier.h
3794 -index 69bbb48..32517fe 100644
3795 +index 5c7198c..44180b5 100644
3796 --- a/arch/x86/include/asm/barrier.h
3797 +++ b/arch/x86/include/asm/barrier.h
3798 @@ -107,7 +107,7 @@
3799 @@ -15781,10 +16191,10 @@ index 69bbb48..32517fe 100644
3800
3801 #define smp_load_acquire(p) \
3802 diff --git a/arch/x86/include/asm/bitops.h b/arch/x86/include/asm/bitops.h
3803 -index 9fc1af7..776d75a 100644
3804 +index afcd35d..141b32d 100644
3805 --- a/arch/x86/include/asm/bitops.h
3806 +++ b/arch/x86/include/asm/bitops.h
3807 -@@ -49,7 +49,7 @@
3808 +@@ -50,7 +50,7 @@
3809 * a mask operation on a byte.
3810 */
3811 #define IS_IMMEDIATE(nr) (__builtin_constant_p(nr))
3812 @@ -15793,7 +16203,7 @@ index 9fc1af7..776d75a 100644
3813 #define CONST_MASK(nr) (1 << ((nr) & 7))
3814
3815 /**
3816 -@@ -205,7 +205,7 @@ static inline void change_bit(long nr, volatile unsigned long *addr)
3817 +@@ -203,7 +203,7 @@ static inline void change_bit(long nr, volatile unsigned long *addr)
3818 */
3819 static inline int test_and_set_bit(long nr, volatile unsigned long *addr)
3820 {
3821 @@ -15802,7 +16212,7 @@ index 9fc1af7..776d75a 100644
3822 }
3823
3824 /**
3825 -@@ -251,7 +251,7 @@ static inline int __test_and_set_bit(long nr, volatile unsigned long *addr)
3826 +@@ -249,7 +249,7 @@ static inline int __test_and_set_bit(long nr, volatile unsigned long *addr)
3827 */
3828 static inline int test_and_clear_bit(long nr, volatile unsigned long *addr)
3829 {
3830 @@ -15811,7 +16221,7 @@ index 9fc1af7..776d75a 100644
3831 }
3832
3833 /**
3834 -@@ -304,7 +304,7 @@ static inline int __test_and_change_bit(long nr, volatile unsigned long *addr)
3835 +@@ -302,7 +302,7 @@ static inline int __test_and_change_bit(long nr, volatile unsigned long *addr)
3836 */
3837 static inline int test_and_change_bit(long nr, volatile unsigned long *addr)
3838 {
3839 @@ -15820,7 +16230,7 @@ index 9fc1af7..776d75a 100644
3840 }
3841
3842 static __always_inline int constant_test_bit(long nr, const volatile unsigned long *addr)
3843 -@@ -345,7 +345,7 @@ static int test_bit(int nr, const volatile unsigned long *addr);
3844 +@@ -343,7 +343,7 @@ static int test_bit(int nr, const volatile unsigned long *addr);
3845 *
3846 * Undefined if no bit exists, so code should check against 0 first.
3847 */
3848 @@ -15829,7 +16239,7 @@ index 9fc1af7..776d75a 100644
3849 {
3850 asm("rep; bsf %1,%0"
3851 : "=r" (word)
3852 -@@ -359,7 +359,7 @@ static inline unsigned long __ffs(unsigned long word)
3853 +@@ -357,7 +357,7 @@ static inline unsigned long __ffs(unsigned long word)
3854 *
3855 * Undefined if no zero exists, so code should check against ~0UL first.
3856 */
3857 @@ -15838,7 +16248,7 @@ index 9fc1af7..776d75a 100644
3858 {
3859 asm("rep; bsf %1,%0"
3860 : "=r" (word)
3861 -@@ -373,7 +373,7 @@ static inline unsigned long ffz(unsigned long word)
3862 +@@ -371,7 +371,7 @@ static inline unsigned long ffz(unsigned long word)
3863 *
3864 * Undefined if no set bit exists, so code should check against 0 first.
3865 */
3866 @@ -15847,7 +16257,7 @@ index 9fc1af7..776d75a 100644
3867 {
3868 asm("bsr %1,%0"
3869 : "=r" (word)
3870 -@@ -436,7 +436,7 @@ static inline int ffs(int x)
3871 +@@ -434,7 +434,7 @@ static inline int ffs(int x)
3872 * set bit if value is nonzero. The last (most significant) bit is
3873 * at position 32.
3874 */
3875 @@ -15856,7 +16266,7 @@ index 9fc1af7..776d75a 100644
3876 {
3877 int r;
3878
3879 -@@ -478,7 +478,7 @@ static inline int fls(int x)
3880 +@@ -476,7 +476,7 @@ static inline int fls(int x)
3881 * at position 64.
3882 */
3883 #ifdef CONFIG_X86_64
3884 @@ -16542,10 +16952,20 @@ index ced283a..ffe04cc 100644
3885 union {
3886 u64 v64;
3887 diff --git a/arch/x86/include/asm/elf.h b/arch/x86/include/asm/elf.h
3888 -index 2c71182..731124d 100644
3889 +index 1a055c8..a1701de 100644
3890 --- a/arch/x86/include/asm/elf.h
3891 +++ b/arch/x86/include/asm/elf.h
3892 -@@ -243,7 +243,25 @@ extern int force_personality32;
3893 +@@ -75,9 +75,6 @@ typedef struct user_fxsr_struct elf_fpxregset_t;
3894 +
3895 + #include <asm/vdso.h>
3896 +
3897 +-#ifdef CONFIG_X86_64
3898 +-extern unsigned int vdso64_enabled;
3899 +-#endif
3900 + #if defined(CONFIG_X86_32) || defined(CONFIG_COMPAT)
3901 + extern unsigned int vdso32_enabled;
3902 + #endif
3903 +@@ -248,7 +245,25 @@ extern int force_personality32;
3904 the loader. We need to make sure that it is out of the way of the program
3905 that it will "exec", and that there is sufficient room for the brk. */
3906
3907 @@ -16571,26 +16991,27 @@ index 2c71182..731124d 100644
3908
3909 /* This yields a mask that user programs can use to figure out what
3910 instruction set this CPU supports. This could be done in user space,
3911 -@@ -292,16 +310,12 @@ do { \
3912 +@@ -297,17 +312,13 @@ do { \
3913
3914 #define ARCH_DLINFO \
3915 do { \
3916 -- if (vdso_enabled) \
3917 +- if (vdso64_enabled) \
3918 - NEW_AUX_ENT(AT_SYSINFO_EHDR, \
3919 -- (unsigned long)current->mm->context.vdso); \
3920 +- (unsigned long __force)current->mm->context.vdso); \
3921 + NEW_AUX_ENT(AT_SYSINFO_EHDR, current->mm->context.vdso); \
3922 } while (0)
3923
3924 + /* As a historical oddity, the x32 and x86_64 vDSOs are controlled together. */
3925 #define ARCH_DLINFO_X32 \
3926 do { \
3927 -- if (vdso_enabled) \
3928 +- if (vdso64_enabled) \
3929 - NEW_AUX_ENT(AT_SYSINFO_EHDR, \
3930 -- (unsigned long)current->mm->context.vdso); \
3931 +- (unsigned long __force)current->mm->context.vdso); \
3932 + NEW_AUX_ENT(AT_SYSINFO_EHDR, current->mm->context.vdso); \
3933 } while (0)
3934
3935 #define AT_SYSINFO 32
3936 -@@ -316,7 +330,7 @@ else \
3937 +@@ -322,10 +333,10 @@ else \
3938
3939 #endif /* !CONFIG_X86_32 */
3940
3941 @@ -16598,10 +17019,14 @@ index 2c71182..731124d 100644
3942 +#define VDSO_CURRENT_BASE (current->mm->context.vdso)
3943
3944 #define VDSO_ENTRY \
3945 - ((unsigned long)VDSO32_SYMBOL(VDSO_CURRENT_BASE, vsyscall))
3946 -@@ -332,9 +346,6 @@ extern int x32_setup_additional_pages(struct linux_binprm *bprm,
3947 - extern int syscall32_setup_pages(struct linux_binprm *, int exstack);
3948 - #define compat_arch_setup_additional_pages syscall32_setup_pages
3949 +- ((unsigned long)current->mm->context.vdso + \
3950 ++ (current->mm->context.vdso + \
3951 + selected_vdso32->sym___kernel_vsyscall)
3952 +
3953 + struct linux_binprm;
3954 +@@ -337,9 +348,6 @@ extern int compat_arch_setup_additional_pages(struct linux_binprm *bprm,
3955 + int uses_interp);
3956 + #define compat_arch_setup_additional_pages compat_arch_setup_additional_pages
3957
3958 -extern unsigned long arch_randomize_brk(struct mm_struct *mm);
3959 -#define arch_randomize_brk arch_randomize_brk
3960 @@ -16655,7 +17080,7 @@ index 1c7eefe..d0e4702 100644
3961 };
3962
3963 diff --git a/arch/x86/include/asm/fpu-internal.h b/arch/x86/include/asm/fpu-internal.h
3964 -index cea1c76..6c0d79b 100644
3965 +index 115e368..76ecf6c 100644
3966 --- a/arch/x86/include/asm/fpu-internal.h
3967 +++ b/arch/x86/include/asm/fpu-internal.h
3968 @@ -124,8 +124,11 @@ static inline void sanitize_i387_state(struct task_struct *tsk)
3969 @@ -16753,7 +17178,7 @@ index b4c1f54..e290c08 100644
3970 pagefault_enable();
3971
3972 diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h
3973 -index a307b75..ec74ca2 100644
3974 +index 4615906..788c817 100644
3975 --- a/arch/x86/include/asm/hw_irq.h
3976 +++ b/arch/x86/include/asm/hw_irq.h
3977 @@ -164,8 +164,8 @@ extern void setup_ioapic_dest(void);
3978 @@ -16854,7 +17279,7 @@ index 0a8b519..80e7d5b 100644
3979 #define INTERRUPT_RETURN iret
3980 #define ENABLE_INTERRUPTS_SYSEXIT sti; sysexit
3981 diff --git a/arch/x86/include/asm/kprobes.h b/arch/x86/include/asm/kprobes.h
3982 -index 9454c16..e4100e3 100644
3983 +index 53cdfb2..d1369e6 100644
3984 --- a/arch/x86/include/asm/kprobes.h
3985 +++ b/arch/x86/include/asm/kprobes.h
3986 @@ -38,13 +38,8 @@ typedef u8 kprobe_opcode_t;
3987 @@ -17077,7 +17502,7 @@ index 0000000..2bfd3ba
3988 +
3989 +#endif /* X86_MMAN_H */
3990 diff --git a/arch/x86/include/asm/mmu.h b/arch/x86/include/asm/mmu.h
3991 -index 5f55e69..e20bfb1 100644
3992 +index 876e74e..e20bfb1 100644
3993 --- a/arch/x86/include/asm/mmu.h
3994 +++ b/arch/x86/include/asm/mmu.h
3995 @@ -9,7 +9,7 @@
3996 @@ -17093,7 +17518,7 @@ index 5f55e69..e20bfb1 100644
3997 #endif
3998
3999 struct mutex lock;
4000 -- void *vdso;
4001 +- void __user *vdso;
4002 + unsigned long vdso;
4003 +
4004 +#ifdef CONFIG_X86_32
4005 @@ -17111,7 +17536,7 @@ index 5f55e69..e20bfb1 100644
4006
4007 #ifdef CONFIG_SMP
4008 diff --git a/arch/x86/include/asm/mmu_context.h b/arch/x86/include/asm/mmu_context.h
4009 -index be12c53..4d24039 100644
4010 +index be12c53..07fd3ca 100644
4011 --- a/arch/x86/include/asm/mmu_context.h
4012 +++ b/arch/x86/include/asm/mmu_context.h
4013 @@ -24,6 +24,20 @@ void destroy_context(struct mm_struct *mm);
4014 @@ -17202,9 +17627,9 @@ index be12c53..4d24039 100644
4015 +
4016 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_SMP)
4017 + if (!(__supported_pte_mask & _PAGE_NX)) {
4018 -+ smp_mb__before_clear_bit();
4019 ++ smp_mb__before_atomic();
4020 + cpu_clear(cpu, prev->context.cpu_user_cs_mask);
4021 -+ smp_mb__after_clear_bit();
4022 ++ smp_mb__after_atomic();
4023 + cpu_set(cpu, next->context.cpu_user_cs_mask);
4024 + }
4025 +#endif
4026 @@ -17670,7 +18095,7 @@ index c4412e9..90e88c5 100644
4027 {
4028 return (pud_t *)get_zeroed_page(GFP_KERNEL|__GFP_REPEAT);
4029 diff --git a/arch/x86/include/asm/pgtable-2level.h b/arch/x86/include/asm/pgtable-2level.h
4030 -index 0d193e2..bf59aeb 100644
4031 +index 206a87f..1623b06 100644
4032 --- a/arch/x86/include/asm/pgtable-2level.h
4033 +++ b/arch/x86/include/asm/pgtable-2level.h
4034 @@ -18,7 +18,9 @@ static inline void native_set_pte(pte_t *ptep , pte_t pte)
4035 @@ -17705,7 +18130,7 @@ index 81bb91b..9392125 100644
4036
4037 /*
4038 diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
4039 -index b459ddf..b44081b 100644
4040 +index 0ec0560..5dc64bd 100644
4041 --- a/arch/x86/include/asm/pgtable.h
4042 +++ b/arch/x86/include/asm/pgtable.h
4043 @@ -46,6 +46,7 @@ extern struct mm_struct *pgd_page_get_mm(struct page *page);
4044 @@ -17768,7 +18193,7 @@ index b459ddf..b44081b 100644
4045 static inline int pte_dirty(pte_t pte)
4046 {
4047 return pte_flags(pte) & _PAGE_DIRTY;
4048 -@@ -149,6 +189,11 @@ static inline unsigned long pud_pfn(pud_t pud)
4049 +@@ -150,6 +190,11 @@ static inline unsigned long pud_pfn(pud_t pud)
4050 return (pud_val(pud) & PTE_PFN_MASK) >> PAGE_SHIFT;
4051 }
4052
4053 @@ -17780,7 +18205,7 @@ index b459ddf..b44081b 100644
4054 #define pte_page(pte) pfn_to_page(pte_pfn(pte))
4055
4056 static inline int pmd_large(pmd_t pte)
4057 -@@ -202,9 +247,29 @@ static inline pte_t pte_wrprotect(pte_t pte)
4058 +@@ -203,9 +248,29 @@ static inline pte_t pte_wrprotect(pte_t pte)
4059 return pte_clear_flags(pte, _PAGE_RW);
4060 }
4061
4062 @@ -17811,7 +18236,7 @@ index b459ddf..b44081b 100644
4063 }
4064
4065 static inline pte_t pte_mkdirty(pte_t pte)
4066 -@@ -431,6 +496,16 @@ pte_t *populate_extra_pte(unsigned long vaddr);
4067 +@@ -435,6 +500,16 @@ pte_t *populate_extra_pte(unsigned long vaddr);
4068 #endif
4069
4070 #ifndef __ASSEMBLY__
4071 @@ -17828,7 +18253,7 @@ index b459ddf..b44081b 100644
4072 #include <linux/mm_types.h>
4073 #include <linux/mmdebug.h>
4074 #include <linux/log2.h>
4075 -@@ -571,7 +646,7 @@ static inline unsigned long pud_page_vaddr(pud_t pud)
4076 +@@ -581,7 +656,7 @@ static inline unsigned long pud_page_vaddr(pud_t pud)
4077 * Currently stuck as a macro due to indirect forward reference to
4078 * linux/mmzone.h's __section_mem_map_addr() definition:
4079 */
4080 @@ -17837,7 +18262,7 @@ index b459ddf..b44081b 100644
4081
4082 /* Find an entry in the second-level page table.. */
4083 static inline pmd_t *pmd_offset(pud_t *pud, unsigned long address)
4084 -@@ -611,7 +686,7 @@ static inline unsigned long pgd_page_vaddr(pgd_t pgd)
4085 +@@ -621,7 +696,7 @@ static inline unsigned long pgd_page_vaddr(pgd_t pgd)
4086 * Currently stuck as a macro due to indirect forward reference to
4087 * linux/mmzone.h's __section_mem_map_addr() definition:
4088 */
4089 @@ -17846,7 +18271,7 @@ index b459ddf..b44081b 100644
4090
4091 /* to find an entry in a page-table-directory. */
4092 static inline unsigned long pud_index(unsigned long address)
4093 -@@ -626,7 +701,7 @@ static inline pud_t *pud_offset(pgd_t *pgd, unsigned long address)
4094 +@@ -636,7 +711,7 @@ static inline pud_t *pud_offset(pgd_t *pgd, unsigned long address)
4095
4096 static inline int pgd_bad(pgd_t pgd)
4097 {
4098 @@ -17855,7 +18280,7 @@ index b459ddf..b44081b 100644
4099 }
4100
4101 static inline int pgd_none(pgd_t pgd)
4102 -@@ -649,7 +724,12 @@ static inline int pgd_none(pgd_t pgd)
4103 +@@ -659,7 +734,12 @@ static inline int pgd_none(pgd_t pgd)
4104 * pgd_offset() returns a (pgd_t *)
4105 * pgd_index() is used get the offset into the pgd page's array of pgd_t's;
4106 */
4107 @@ -17869,7 +18294,7 @@ index b459ddf..b44081b 100644
4108 /*
4109 * a shortcut which implies the use of the kernel's pgd, instead
4110 * of a process's
4111 -@@ -660,6 +740,23 @@ static inline int pgd_none(pgd_t pgd)
4112 +@@ -670,6 +750,23 @@ static inline int pgd_none(pgd_t pgd)
4113 #define KERNEL_PGD_BOUNDARY pgd_index(PAGE_OFFSET)
4114 #define KERNEL_PGD_PTRS (PTRS_PER_PGD - KERNEL_PGD_BOUNDARY)
4115
4116 @@ -17893,7 +18318,7 @@ index b459ddf..b44081b 100644
4117 #ifndef __ASSEMBLY__
4118
4119 extern int direct_gbpages;
4120 -@@ -826,11 +923,24 @@ static inline void pmdp_set_wrprotect(struct mm_struct *mm,
4121 +@@ -836,11 +933,24 @@ static inline void pmdp_set_wrprotect(struct mm_struct *mm,
4122 * dst and src can be on the same page, but the range must not overlap,
4123 * and must not cross a page boundary.
4124 */
4125 @@ -17999,7 +18424,7 @@ index ed5903b..c7fe163 100644
4126 #define MODULES_END VMALLOC_END
4127 #define MODULES_LEN (MODULES_VADDR - MODULES_END)
4128 diff --git a/arch/x86/include/asm/pgtable_64.h b/arch/x86/include/asm/pgtable_64.h
4129 -index e22c1db..23a625a 100644
4130 +index 5be9063..d62185b 100644
4131 --- a/arch/x86/include/asm/pgtable_64.h
4132 +++ b/arch/x86/include/asm/pgtable_64.h
4133 @@ -16,10 +16,14 @@
4134 @@ -18073,35 +18498,10 @@ index 7166e25..baaa6fe 100644
4135
4136 #endif /* _ASM_X86_PGTABLE_64_DEFS_H */
4137 diff --git a/arch/x86/include/asm/pgtable_types.h b/arch/x86/include/asm/pgtable_types.h
4138 -index eb3d449..8d95316 100644
4139 +index f216963..6bd7c21 100644
4140 --- a/arch/x86/include/asm/pgtable_types.h
4141 +++ b/arch/x86/include/asm/pgtable_types.h
4142 -@@ -16,13 +16,12 @@
4143 - #define _PAGE_BIT_PSE 7 /* 4 MB (or 2MB) page */
4144 - #define _PAGE_BIT_PAT 7 /* on 4KB pages */
4145 - #define _PAGE_BIT_GLOBAL 8 /* Global TLB entry PPro+ */
4146 --#define _PAGE_BIT_UNUSED1 9 /* available for programmer */
4147 -+#define _PAGE_BIT_SPECIAL 9 /* special mappings, no associated struct page */
4148 - #define _PAGE_BIT_IOMAP 10 /* flag used to indicate IO mapping */
4149 - #define _PAGE_BIT_HIDDEN 11 /* hidden by kmemcheck */
4150 - #define _PAGE_BIT_PAT_LARGE 12 /* On 2MB or 1GB pages */
4151 --#define _PAGE_BIT_SPECIAL _PAGE_BIT_UNUSED1
4152 --#define _PAGE_BIT_CPA_TEST _PAGE_BIT_UNUSED1
4153 --#define _PAGE_BIT_SPLITTING _PAGE_BIT_UNUSED1 /* only valid on a PSE pmd */
4154 -+#define _PAGE_BIT_CPA_TEST _PAGE_BIT_SPECIAL
4155 -+#define _PAGE_BIT_SPLITTING _PAGE_BIT_SPECIAL /* only valid on a PSE pmd */
4156 - #define _PAGE_BIT_NX 63 /* No execute: only valid after cpuid check */
4157 -
4158 - /* If _PAGE_BIT_PRESENT is clear, we use these: */
4159 -@@ -40,7 +39,6 @@
4160 - #define _PAGE_DIRTY (_AT(pteval_t, 1) << _PAGE_BIT_DIRTY)
4161 - #define _PAGE_PSE (_AT(pteval_t, 1) << _PAGE_BIT_PSE)
4162 - #define _PAGE_GLOBAL (_AT(pteval_t, 1) << _PAGE_BIT_GLOBAL)
4163 --#define _PAGE_UNUSED1 (_AT(pteval_t, 1) << _PAGE_BIT_UNUSED1)
4164 - #define _PAGE_IOMAP (_AT(pteval_t, 1) << _PAGE_BIT_IOMAP)
4165 - #define _PAGE_PAT (_AT(pteval_t, 1) << _PAGE_BIT_PAT)
4166 - #define _PAGE_PAT_LARGE (_AT(pteval_t, 1) << _PAGE_BIT_PAT_LARGE)
4167 -@@ -87,8 +85,10 @@
4168 +@@ -111,8 +111,10 @@
4169
4170 #if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
4171 #define _PAGE_NX (_AT(pteval_t, 1) << _PAGE_BIT_NX)
4172 @@ -18113,7 +18513,7 @@ index eb3d449..8d95316 100644
4173 #endif
4174
4175 #define _PAGE_FILE (_AT(pteval_t, 1) << _PAGE_BIT_FILE)
4176 -@@ -147,6 +147,9 @@
4177 +@@ -151,6 +153,9 @@
4178 #define PAGE_READONLY_EXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | \
4179 _PAGE_ACCESSED)
4180
4181 @@ -18123,7 +18523,7 @@ index eb3d449..8d95316 100644
4182 #define __PAGE_KERNEL_EXEC \
4183 (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
4184 #define __PAGE_KERNEL (__PAGE_KERNEL_EXEC | _PAGE_NX)
4185 -@@ -157,7 +160,7 @@
4186 +@@ -161,7 +166,7 @@
4187 #define __PAGE_KERNEL_WC (__PAGE_KERNEL | _PAGE_CACHE_WC)
4188 #define __PAGE_KERNEL_NOCACHE (__PAGE_KERNEL | _PAGE_PCD | _PAGE_PWT)
4189 #define __PAGE_KERNEL_UC_MINUS (__PAGE_KERNEL | _PAGE_PCD)
4190 @@ -18132,7 +18532,7 @@ index eb3d449..8d95316 100644
4191 #define __PAGE_KERNEL_VVAR (__PAGE_KERNEL_RO | _PAGE_USER)
4192 #define __PAGE_KERNEL_VVAR_NOCACHE (__PAGE_KERNEL_VVAR | _PAGE_PCD | _PAGE_PWT)
4193 #define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE)
4194 -@@ -214,7 +217,7 @@
4195 +@@ -218,7 +223,7 @@
4196 #ifdef CONFIG_X86_64
4197 #define __PAGE_KERNEL_IDENT_LARGE_EXEC __PAGE_KERNEL_LARGE_EXEC
4198 #else
4199 @@ -18141,7 +18541,7 @@ index eb3d449..8d95316 100644
4200 #define PDE_IDENT_ATTR 0x063 /* PRESENT+RW+DIRTY+ACCESSED */
4201 #define PGD_IDENT_ATTR 0x001 /* PRESENT (no other attributes) */
4202 #endif
4203 -@@ -253,7 +256,17 @@ static inline pgdval_t pgd_flags(pgd_t pgd)
4204 +@@ -257,7 +262,17 @@ static inline pgdval_t pgd_flags(pgd_t pgd)
4205 {
4206 return native_pgd_val(pgd) & PTE_FLAGS_MASK;
4207 }
4208 @@ -18159,7 +18559,7 @@ index eb3d449..8d95316 100644
4209 #if PAGETABLE_LEVELS > 3
4210 typedef struct { pudval_t pud; } pud_t;
4211
4212 -@@ -267,8 +280,6 @@ static inline pudval_t native_pud_val(pud_t pud)
4213 +@@ -271,8 +286,6 @@ static inline pudval_t native_pud_val(pud_t pud)
4214 return pud.pud;
4215 }
4216 #else
4217 @@ -18168,7 +18568,7 @@ index eb3d449..8d95316 100644
4218 static inline pudval_t native_pud_val(pud_t pud)
4219 {
4220 return native_pgd_val(pud.pgd);
4221 -@@ -288,8 +299,6 @@ static inline pmdval_t native_pmd_val(pmd_t pmd)
4222 +@@ -292,8 +305,6 @@ static inline pmdval_t native_pmd_val(pmd_t pmd)
4223 return pmd.pmd;
4224 }
4225 #else
4226 @@ -18177,7 +18577,7 @@ index eb3d449..8d95316 100644
4227 static inline pmdval_t native_pmd_val(pmd_t pmd)
4228 {
4229 return native_pgd_val(pmd.pud.pgd);
4230 -@@ -329,7 +338,6 @@ typedef struct page *pgtable_t;
4231 +@@ -333,7 +344,6 @@ typedef struct page *pgtable_t;
4232
4233 extern pteval_t __supported_pte_mask;
4234 extern void set_nx(void);
4235 @@ -18467,6 +18867,21 @@ index 6205f0c..688a3a9 100644
4236 #endif
4237 return *(unsigned long *)((unsigned long)regs + offset);
4238 }
4239 +diff --git a/arch/x86/include/asm/qrwlock.h b/arch/x86/include/asm/qrwlock.h
4240 +index 70f46f0..adfbdb4 100644
4241 +--- a/arch/x86/include/asm/qrwlock.h
4242 ++++ b/arch/x86/include/asm/qrwlock.h
4243 +@@ -7,8 +7,8 @@
4244 + #define queue_write_unlock queue_write_unlock
4245 + static inline void queue_write_unlock(struct qrwlock *lock)
4246 + {
4247 +- barrier();
4248 +- ACCESS_ONCE(*(u8 *)&lock->cnts) = 0;
4249 ++ barrier();
4250 ++ ACCESS_ONCE_RW(*(u8 *)&lock->cnts) = 0;
4251 + }
4252 + #endif
4253 +
4254 diff --git a/arch/x86/include/asm/realmode.h b/arch/x86/include/asm/realmode.h
4255 index 9c6b890..5305f53 100644
4256 --- a/arch/x86/include/asm/realmode.h
4257 @@ -18975,10 +19390,10 @@ index 8cd27e0..7f05ec8 100644
4258
4259 #endif
4260 diff --git a/arch/x86/include/asm/spinlock.h b/arch/x86/include/asm/spinlock.h
4261 -index 0f62f54..cb5d0dd 100644
4262 +index 54f1c80..39362a5 100644
4263 --- a/arch/x86/include/asm/spinlock.h
4264 +++ b/arch/x86/include/asm/spinlock.h
4265 -@@ -222,6 +222,14 @@ static inline int arch_write_can_lock(arch_rwlock_t *lock)
4266 +@@ -223,6 +223,14 @@ static inline int arch_write_can_lock(arch_rwlock_t *lock)
4267 static inline void arch_read_lock(arch_rwlock_t *rw)
4268 {
4269 asm volatile(LOCK_PREFIX READ_LOCK_SIZE(dec) " (%0)\n\t"
4270 @@ -18993,7 +19408,7 @@ index 0f62f54..cb5d0dd 100644
4271 "jns 1f\n"
4272 "call __read_lock_failed\n\t"
4273 "1:\n"
4274 -@@ -231,6 +239,14 @@ static inline void arch_read_lock(arch_rwlock_t *rw)
4275 +@@ -232,6 +240,14 @@ static inline void arch_read_lock(arch_rwlock_t *rw)
4276 static inline void arch_write_lock(arch_rwlock_t *rw)
4277 {
4278 asm volatile(LOCK_PREFIX WRITE_LOCK_SUB(%1) "(%0)\n\t"
4279 @@ -19008,7 +19423,7 @@ index 0f62f54..cb5d0dd 100644
4280 "jz 1f\n"
4281 "call __write_lock_failed\n\t"
4282 "1:\n"
4283 -@@ -260,13 +276,29 @@ static inline int arch_write_trylock(arch_rwlock_t *lock)
4284 +@@ -261,13 +277,29 @@ static inline int arch_write_trylock(arch_rwlock_t *lock)
4285
4286 static inline void arch_read_unlock(arch_rwlock_t *rw)
4287 {
4288 @@ -19039,7 +19454,7 @@ index 0f62f54..cb5d0dd 100644
4289 +
4290 : "+m" (rw->write) : "i" (RW_LOCK_BIAS) : "memory");
4291 }
4292 -
4293 + #else
4294 diff --git a/arch/x86/include/asm/stackprotector.h b/arch/x86/include/asm/stackprotector.h
4295 index 6a99859..03cb807 100644
4296 --- a/arch/x86/include/asm/stackprotector.h
4297 @@ -19138,7 +19553,7 @@ index d7f3b3b..3cc39f1 100644
4298 __switch_canary_iparam \
4299 : "memory", "cc" __EXTRA_CLOBBER)
4300 diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h
4301 -index 47e5de2..d3dda54 100644
4302 +index 8540538..4b0b5e9 100644
4303 --- a/arch/x86/include/asm/thread_info.h
4304 +++ b/arch/x86/include/asm/thread_info.h
4305 @@ -24,7 +24,6 @@ struct exec_domain;
4306 @@ -19174,7 +19589,7 @@ index 47e5de2..d3dda54 100644
4307 #define init_stack (init_thread_union.stack)
4308
4309 #else /* !__ASSEMBLY__ */
4310 -@@ -90,6 +89,7 @@ struct thread_info {
4311 +@@ -91,6 +90,7 @@ struct thread_info {
4312 #define TIF_SYSCALL_TRACEPOINT 28 /* syscall tracepoint instrumentation */
4313 #define TIF_ADDR32 29 /* 32-bit address space on 64 bits */
4314 #define TIF_X32 30 /* 32-bit native x86-64 binary */
4315 @@ -19182,7 +19597,7 @@ index 47e5de2..d3dda54 100644
4316
4317 #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)
4318 #define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME)
4319 -@@ -113,17 +113,18 @@ struct thread_info {
4320 +@@ -115,17 +115,18 @@ struct thread_info {
4321 #define _TIF_SYSCALL_TRACEPOINT (1 << TIF_SYSCALL_TRACEPOINT)
4322 #define _TIF_ADDR32 (1 << TIF_ADDR32)
4323 #define _TIF_X32 (1 << TIF_X32)
4324 @@ -19203,7 +19618,7 @@ index 47e5de2..d3dda54 100644
4325
4326 /* work to do on interrupt/exception return */
4327 #define _TIF_WORK_MASK \
4328 -@@ -134,7 +135,7 @@ struct thread_info {
4329 +@@ -136,7 +137,7 @@ struct thread_info {
4330 /* work to do on any return to user space */
4331 #define _TIF_ALLWORK_MASK \
4332 ((0x0000FFFF & ~_TIF_SECCOMP) | _TIF_SYSCALL_TRACEPOINT | \
4333 @@ -19212,7 +19627,7 @@ index 47e5de2..d3dda54 100644
4334
4335 /* Only used for 64 bit */
4336 #define _TIF_DO_NOTIFY_MASK \
4337 -@@ -149,7 +150,6 @@ struct thread_info {
4338 +@@ -151,7 +152,6 @@ struct thread_info {
4339 #define _TIF_WORK_CTXSW_NEXT (_TIF_WORK_CTXSW)
4340
4341 #define STACK_WARN (THREAD_SIZE/8)
4342 @@ -19220,7 +19635,7 @@ index 47e5de2..d3dda54 100644
4343
4344 /*
4345 * macros/functions for gaining access to the thread information structure
4346 -@@ -160,26 +160,18 @@ struct thread_info {
4347 +@@ -162,26 +162,18 @@ struct thread_info {
4348
4349 DECLARE_PER_CPU(unsigned long, kernel_stack);
4350
4351 @@ -20367,7 +20782,7 @@ index 7b0a55a..ad115bf 100644
4352
4353 /* top of stack page */
4354 diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile
4355 -index 491ef3e..7da98ce 100644
4356 +index 047f9ff..4ba5ea6 100644
4357 --- a/arch/x86/kernel/Makefile
4358 +++ b/arch/x86/kernel/Makefile
4359 @@ -24,7 +24,7 @@ obj-y += time.o ioport.o ldt.o dumpstack.o nmi.o
4360 @@ -20377,8 +20792,8 @@ index 491ef3e..7da98ce 100644
4361 -obj-$(CONFIG_X86_32) += i386_ksyms_32.o
4362 +obj-$(CONFIG_X86_32) += sys_i386_32.o i386_ksyms_32.o
4363 obj-$(CONFIG_X86_64) += sys_x86_64.o x8664_ksyms_64.o
4364 + obj-$(CONFIG_X86_64) += mcount_64.o
4365 obj-y += syscall_$(BITS).o vsyscall_gtod.o
4366 - obj-$(CONFIG_X86_64) += vsyscall_64.o
4367 diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
4368 index 86281ff..e046fc2 100644
4369 --- a/arch/x86/kernel/acpi/boot.c
4370 @@ -20439,10 +20854,10 @@ index 665c6b7..eae4d56 100644
4371 bogus_magic:
4372 jmp bogus_magic
4373 diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
4374 -index df94598..b7162f9 100644
4375 +index 703130f..27a155d 100644
4376 --- a/arch/x86/kernel/alternative.c
4377 +++ b/arch/x86/kernel/alternative.c
4378 -@@ -269,6 +269,13 @@ void __init_or_module apply_alternatives(struct alt_instr *start,
4379 +@@ -268,6 +268,13 @@ void __init_or_module apply_alternatives(struct alt_instr *start,
4380 */
4381 for (a = start; a < end; a++) {
4382 instr = (u8 *)&a->instr_offset + a->instr_offset;
4383 @@ -20456,7 +20871,7 @@ index df94598..b7162f9 100644
4384 replacement = (u8 *)&a->repl_offset + a->repl_offset;
4385 BUG_ON(a->replacementlen > a->instrlen);
4386 BUG_ON(a->instrlen > sizeof(insnbuf));
4387 -@@ -285,6 +292,11 @@ void __init_or_module apply_alternatives(struct alt_instr *start,
4388 +@@ -284,6 +291,11 @@ void __init_or_module apply_alternatives(struct alt_instr *start,
4389 add_nops(insnbuf + a->replacementlen,
4390 a->instrlen - a->replacementlen);
4391
4392 @@ -20468,7 +20883,7 @@ index df94598..b7162f9 100644
4393 text_poke_early(instr, insnbuf, a->instrlen);
4394 }
4395 }
4396 -@@ -300,10 +312,16 @@ static void alternatives_smp_lock(const s32 *start, const s32 *end,
4397 +@@ -299,10 +311,16 @@ static void alternatives_smp_lock(const s32 *start, const s32 *end,
4398 for (poff = start; poff < end; poff++) {
4399 u8 *ptr = (u8 *)poff + *poff;
4400
4401 @@ -20486,7 +20901,7 @@ index df94598..b7162f9 100644
4402 text_poke(ptr, ((unsigned char []){0xf0}), 1);
4403 }
4404 mutex_unlock(&text_mutex);
4405 -@@ -318,10 +336,16 @@ static void alternatives_smp_unlock(const s32 *start, const s32 *end,
4406 +@@ -317,10 +335,16 @@ static void alternatives_smp_unlock(const s32 *start, const s32 *end,
4407 for (poff = start; poff < end; poff++) {
4408 u8 *ptr = (u8 *)poff + *poff;
4409
4410 @@ -20504,7 +20919,7 @@ index df94598..b7162f9 100644
4411 text_poke(ptr, ((unsigned char []){0x3E}), 1);
4412 }
4413 mutex_unlock(&text_mutex);
4414 -@@ -458,7 +482,7 @@ void __init_or_module apply_paravirt(struct paravirt_patch_site *start,
4415 +@@ -457,7 +481,7 @@ void __init_or_module apply_paravirt(struct paravirt_patch_site *start,
4416
4417 BUG_ON(p->len > MAX_PATCH_LEN);
4418 /* prep the buffer with the original instructions */
4419 @@ -20513,7 +20928,7 @@ index df94598..b7162f9 100644
4420 used = pv_init_ops.patch(p->instrtype, p->clobbers, insnbuf,
4421 (unsigned long)p->instr, p->len);
4422
4423 -@@ -505,7 +529,7 @@ void __init alternative_instructions(void)
4424 +@@ -504,7 +528,7 @@ void __init alternative_instructions(void)
4425 if (!uniproc_patched || num_possible_cpus() == 1)
4426 free_init_pages("SMP alternatives",
4427 (unsigned long)__smp_locks,
4428 @@ -20522,7 +20937,7 @@ index df94598..b7162f9 100644
4429 #endif
4430
4431 apply_paravirt(__parainstructions, __parainstructions_end);
4432 -@@ -525,13 +549,17 @@ void __init alternative_instructions(void)
4433 +@@ -524,13 +548,17 @@ void __init alternative_instructions(void)
4434 * instructions. And on the local CPU you need to be protected again NMI or MCE
4435 * handlers seeing an inconsistent instruction while you patch.
4436 */
4437 @@ -20542,9 +20957,9 @@ index df94598..b7162f9 100644
4438 local_irq_restore(flags);
4439 /* Could also do a CLFLUSH here to speed up CPU recovery; but
4440 that causes hangs on some VIA CPUs. */
4441 -@@ -553,36 +581,22 @@ void *__init_or_module text_poke_early(void *addr, const void *opcode,
4442 +@@ -552,36 +580,22 @@ void *__init_or_module text_poke_early(void *addr, const void *opcode,
4443 */
4444 - void *__kprobes text_poke(void *addr, const void *opcode, size_t len)
4445 + void *text_poke(void *addr, const void *opcode, size_t len)
4446 {
4447 - unsigned long flags;
4448 - char *vaddr;
4449 @@ -20587,7 +21002,7 @@ index df94598..b7162f9 100644
4450 return addr;
4451 }
4452
4453 -@@ -602,7 +616,7 @@ int poke_int3_handler(struct pt_regs *regs)
4454 +@@ -601,7 +615,7 @@ int poke_int3_handler(struct pt_regs *regs)
4455 if (likely(!bp_patching_in_progress))
4456 return 0;
4457
4458 @@ -20596,7 +21011,7 @@ index df94598..b7162f9 100644
4459 return 0;
4460
4461 /* set up the specified breakpoint handler */
4462 -@@ -636,7 +650,7 @@ int poke_int3_handler(struct pt_regs *regs)
4463 +@@ -635,7 +649,7 @@ int poke_int3_handler(struct pt_regs *regs)
4464 */
4465 void *text_poke_bp(void *addr, const void *opcode, size_t len, void *handler)
4466 {
4467 @@ -20676,10 +21091,10 @@ index e4840aa..e7d9dac 100644
4468 .name = "bigsmp",
4469 .probe = probe_bigsmp,
4470 diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
4471 -index 992060e..ecdc3b3 100644
4472 +index 81e08ef..abc77e5 100644
4473 --- a/arch/x86/kernel/apic/io_apic.c
4474 +++ b/arch/x86/kernel/apic/io_apic.c
4475 -@@ -1057,7 +1057,7 @@ int IO_APIC_get_PCI_irq_vector(int bus, int slot, int pin,
4476 +@@ -1042,7 +1042,7 @@ int IO_APIC_get_PCI_irq_vector(int bus, int slot, int pin,
4477 }
4478 EXPORT_SYMBOL(IO_APIC_get_PCI_irq_vector);
4479
4480 @@ -20688,7 +21103,7 @@ index 992060e..ecdc3b3 100644
4481 {
4482 /* Used to the online set of cpus does not change
4483 * during assign_irq_vector.
4484 -@@ -1065,7 +1065,7 @@ void lock_vector_lock(void)
4485 +@@ -1050,7 +1050,7 @@ void lock_vector_lock(void)
4486 raw_spin_lock(&vector_lock);
4487 }
4488
4489 @@ -20697,7 +21112,7 @@ index 992060e..ecdc3b3 100644
4490 {
4491 raw_spin_unlock(&vector_lock);
4492 }
4493 -@@ -2364,7 +2364,7 @@ static void ack_apic_edge(struct irq_data *data)
4494 +@@ -2349,7 +2349,7 @@ static void ack_apic_edge(struct irq_data *data)
4495 ack_APIC_irq();
4496 }
4497
4498 @@ -20706,7 +21121,7 @@ index 992060e..ecdc3b3 100644
4499
4500 #ifdef CONFIG_GENERIC_PENDING_IRQ
4501 static bool io_apic_level_ack_pending(struct irq_cfg *cfg)
4502 -@@ -2505,7 +2505,7 @@ static void ack_apic_level(struct irq_data *data)
4503 +@@ -2490,7 +2490,7 @@ static void ack_apic_level(struct irq_data *data)
4504 * at the cpu.
4505 */
4506 if (!(v & (1 << (i & 0x1f)))) {
4507 @@ -20764,7 +21179,7 @@ index 6d600eb..0300c00 100644
4508 .name = "physical x2apic",
4509 .probe = x2apic_phys_probe,
4510 diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c
4511 -index 7834389..4ffc9c8 100644
4512 +index 293b41d..4df25fd 100644
4513 --- a/arch/x86/kernel/apic/x2apic_uv_x.c
4514 +++ b/arch/x86/kernel/apic/x2apic_uv_x.c
4515 @@ -350,7 +350,7 @@ static int uv_probe(void)
4516 @@ -20777,7 +21192,7 @@ index 7834389..4ffc9c8 100644
4517 .name = "UV large system",
4518 .probe = uv_probe,
4519 diff --git a/arch/x86/kernel/apm_32.c b/arch/x86/kernel/apm_32.c
4520 -index 3ab0343..814c4787 100644
4521 +index 5848744..56cb598 100644
4522 --- a/arch/x86/kernel/apm_32.c
4523 +++ b/arch/x86/kernel/apm_32.c
4524 @@ -433,7 +433,7 @@ static DEFINE_MUTEX(apm_mutex);
4525 @@ -20835,7 +21250,7 @@ index 3ab0343..814c4787 100644
4526 put_cpu();
4527 return error;
4528 }
4529 -@@ -2362,12 +2376,15 @@ static int __init apm_init(void)
4530 +@@ -2350,12 +2364,15 @@ static int __init apm_init(void)
4531 * code to that CPU.
4532 */
4533 gdt = get_cpu_gdt_table(0);
4534 @@ -20932,10 +21347,10 @@ index ce8b8ff..d7d8851 100644
4535 if (c->x86_model == 3 && c->x86_mask == 0)
4536 size = 64;
4537 diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
4538 -index a135239..41fb30a 100644
4539 +index ef1b93f..150db65 100644
4540 --- a/arch/x86/kernel/cpu/common.c
4541 +++ b/arch/x86/kernel/cpu/common.c
4542 -@@ -88,60 +88,6 @@ static const struct cpu_dev default_cpu = {
4543 +@@ -90,60 +90,6 @@ static const struct cpu_dev default_cpu = {
4544
4545 static const struct cpu_dev *this_cpu = &default_cpu;
4546
4547 @@ -20996,7 +21411,7 @@ index a135239..41fb30a 100644
4548 static int __init x86_xsave_setup(char *s)
4549 {
4550 setup_clear_cpu_cap(X86_FEATURE_XSAVE);
4551 -@@ -293,6 +239,59 @@ static __always_inline void setup_smap(struct cpuinfo_x86 *c)
4552 +@@ -295,6 +241,59 @@ static __always_inline void setup_smap(struct cpuinfo_x86 *c)
4553 }
4554 }
4555
4556 @@ -21056,7 +21471,7 @@ index a135239..41fb30a 100644
4557 /*
4558 * Some CPU features depend on higher CPUID levels, which may not always
4559 * be available due to CPUID level capping or broken virtualization
4560 -@@ -393,7 +392,7 @@ void switch_to_new_gdt(int cpu)
4561 +@@ -395,7 +394,7 @@ void switch_to_new_gdt(int cpu)
4562 {
4563 struct desc_ptr gdt_descr;
4564
4565 @@ -21065,7 +21480,7 @@ index a135239..41fb30a 100644
4566 gdt_descr.size = GDT_SIZE - 1;
4567 load_gdt(&gdt_descr);
4568 /* Reload the per-cpu base */
4569 -@@ -883,6 +882,10 @@ static void identify_cpu(struct cpuinfo_x86 *c)
4570 +@@ -885,6 +884,10 @@ static void identify_cpu(struct cpuinfo_x86 *c)
4571 setup_smep(c);
4572 setup_smap(c);
4573
4574 @@ -21076,7 +21491,7 @@ index a135239..41fb30a 100644
4575 /*
4576 * The vendor-specific functions might have changed features.
4577 * Now we do "generic changes."
4578 -@@ -891,6 +894,10 @@ static void identify_cpu(struct cpuinfo_x86 *c)
4579 +@@ -893,6 +896,10 @@ static void identify_cpu(struct cpuinfo_x86 *c)
4580 /* Filter out anything that depends on CPUID levels we don't have */
4581 filter_cpuid_features(c, true);
4582
4583 @@ -21087,7 +21502,16 @@ index a135239..41fb30a 100644
4584 /* If the model name is still unset, do table lookup. */
4585 if (!c->x86_model_id[0]) {
4586 const char *p;
4587 -@@ -1079,14 +1086,16 @@ static __init int setup_disablecpuid(char *arg)
4588 +@@ -973,7 +980,7 @@ static void syscall32_cpu_init(void)
4589 + void enable_sep_cpu(void)
4590 + {
4591 + int cpu = get_cpu();
4592 +- struct tss_struct *tss = &per_cpu(init_tss, cpu);
4593 ++ struct tss_struct *tss = init_tss + cpu;
4594 +
4595 + if (!boot_cpu_has(X86_FEATURE_SEP)) {
4596 + put_cpu();
4597 +@@ -1113,14 +1120,16 @@ static __init int setup_disablecpuid(char *arg)
4598 }
4599 __setup("clearcpuid=", setup_disablecpuid);
4600
4601 @@ -21108,7 +21532,7 @@ index a135239..41fb30a 100644
4602
4603 DEFINE_PER_CPU_FIRST(union irq_stack_union,
4604 irq_stack_union) __aligned(PAGE_SIZE) __visible;
4605 -@@ -1246,7 +1255,7 @@ void cpu_init(void)
4606 +@@ -1283,7 +1292,7 @@ void cpu_init(void)
4607 load_ucode_ap();
4608
4609 cpu = stack_smp_processor_id();
4610 @@ -21117,7 +21541,7 @@ index a135239..41fb30a 100644
4611 oist = &per_cpu(orig_ist, cpu);
4612
4613 #ifdef CONFIG_NUMA
4614 -@@ -1281,7 +1290,6 @@ void cpu_init(void)
4615 +@@ -1318,7 +1327,6 @@ void cpu_init(void)
4616 wrmsrl(MSR_KERNEL_GS_BASE, 0);
4617 barrier();
4618
4619 @@ -21125,7 +21549,7 @@ index a135239..41fb30a 100644
4620 enable_x2apic();
4621
4622 /*
4623 -@@ -1333,7 +1341,7 @@ void cpu_init(void)
4624 +@@ -1370,7 +1378,7 @@ void cpu_init(void)
4625 {
4626 int cpu = smp_processor_id();
4627 struct task_struct *curr = current;
4628 @@ -21135,10 +21559,10 @@ index a135239..41fb30a 100644
4629
4630 show_ucode_info_early();
4631 diff --git a/arch/x86/kernel/cpu/intel_cacheinfo.c b/arch/x86/kernel/cpu/intel_cacheinfo.c
4632 -index a952e9c..58a4cbb 100644
4633 +index 9c8f739..902a9c5 100644
4634 --- a/arch/x86/kernel/cpu/intel_cacheinfo.c
4635 +++ b/arch/x86/kernel/cpu/intel_cacheinfo.c
4636 -@@ -1014,6 +1014,22 @@ static struct attribute *default_attrs[] = {
4637 +@@ -1026,6 +1026,22 @@ static struct attribute *default_attrs[] = {
4638 };
4639
4640 #ifdef CONFIG_AMD_NB
4641 @@ -21161,7 +21585,7 @@ index a952e9c..58a4cbb 100644
4642 static struct attribute **amd_l3_attrs(void)
4643 {
4644 static struct attribute **attrs;
4645 -@@ -1024,18 +1040,7 @@ static struct attribute **amd_l3_attrs(void)
4646 +@@ -1036,18 +1052,7 @@ static struct attribute **amd_l3_attrs(void)
4647
4648 n = ARRAY_SIZE(default_attrs);
4649
4650 @@ -21181,7 +21605,7 @@ index a952e9c..58a4cbb 100644
4651
4652 if (amd_nb_has_feature(AMD_NB_L3_INDEX_DISABLE)) {
4653 attrs[n++] = &cache_disable_0.attr;
4654 -@@ -1086,6 +1091,13 @@ static struct kobj_type ktype_cache = {
4655 +@@ -1098,6 +1103,13 @@ static struct kobj_type ktype_cache = {
4656 .default_attrs = default_attrs,
4657 };
4658
4659 @@ -21195,7 +21619,7 @@ index a952e9c..58a4cbb 100644
4660 static struct kobj_type ktype_percpu_entry = {
4661 .sysfs_ops = &sysfs_ops,
4662 };
4663 -@@ -1151,20 +1163,26 @@ static int cache_add_dev(struct device *dev)
4664 +@@ -1163,20 +1175,26 @@ static int cache_add_dev(struct device *dev)
4665 return retval;
4666 }
4667
4668 @@ -21226,7 +21650,7 @@ index a952e9c..58a4cbb 100644
4669 "index%1lu", i);
4670 if (unlikely(retval)) {
4671 diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
4672 -index 68317c8..c860d41 100644
4673 +index 9a79c8d..158c2f1 100644
4674 --- a/arch/x86/kernel/cpu/mcheck/mce.c
4675 +++ b/arch/x86/kernel/cpu/mcheck/mce.c
4676 @@ -45,6 +45,7 @@
4677 @@ -21237,7 +21661,7 @@ index 68317c8..c860d41 100644
4678
4679 #include "mce-internal.h"
4680
4681 -@@ -261,7 +262,7 @@ static void print_mce(struct mce *m)
4682 +@@ -259,7 +260,7 @@ static void print_mce(struct mce *m)
4683 !(m->mcgstatus & MCG_STATUS_EIPV) ? " !INEXACT!" : "",
4684 m->cs, m->ip);
4685
4686 @@ -21246,7 +21670,7 @@ index 68317c8..c860d41 100644
4687 print_symbol("{%s}", m->ip);
4688 pr_cont("\n");
4689 }
4690 -@@ -294,10 +295,10 @@ static void print_mce(struct mce *m)
4691 +@@ -292,10 +293,10 @@ static void print_mce(struct mce *m)
4692
4693 #define PANIC_TIMEOUT 5 /* 5 seconds */
4694
4695 @@ -21259,7 +21683,7 @@ index 68317c8..c860d41 100644
4696
4697 /* Panic in progress. Enable interrupts and wait for final IPI */
4698 static void wait_for_panic(void)
4699 -@@ -321,7 +322,7 @@ static void mce_panic(char *msg, struct mce *final, char *exp)
4700 +@@ -319,7 +320,7 @@ static void mce_panic(char *msg, struct mce *final, char *exp)
4701 /*
4702 * Make sure only one CPU runs in machine check panic
4703 */
4704 @@ -21268,7 +21692,7 @@ index 68317c8..c860d41 100644
4705 wait_for_panic();
4706 barrier();
4707
4708 -@@ -329,7 +330,7 @@ static void mce_panic(char *msg, struct mce *final, char *exp)
4709 +@@ -327,7 +328,7 @@ static void mce_panic(char *msg, struct mce *final, char *exp)
4710 console_verbose();
4711 } else {
4712 /* Don't log too much for fake panic */
4713 @@ -21277,7 +21701,7 @@ index 68317c8..c860d41 100644
4714 return;
4715 }
4716 /* First print corrected ones that are still unlogged */
4717 -@@ -368,7 +369,7 @@ static void mce_panic(char *msg, struct mce *final, char *exp)
4718 +@@ -366,7 +367,7 @@ static void mce_panic(char *msg, struct mce *final, char *exp)
4719 if (!fake_panic) {
4720 if (panic_timeout == 0)
4721 panic_timeout = mca_cfg.panic_timeout;
4722 @@ -21286,7 +21710,7 @@ index 68317c8..c860d41 100644
4723 } else
4724 pr_emerg(HW_ERR "Fake kernel panic: %s\n", msg);
4725 }
4726 -@@ -699,7 +700,7 @@ static int mce_timed_out(u64 *t)
4727 +@@ -697,7 +698,7 @@ static int mce_timed_out(u64 *t)
4728 * might have been modified by someone else.
4729 */
4730 rmb();
4731 @@ -21295,7 +21719,7 @@ index 68317c8..c860d41 100644
4732 wait_for_panic();
4733 if (!mca_cfg.monarch_timeout)
4734 goto out;
4735 -@@ -1680,7 +1681,7 @@ static void unexpected_machine_check(struct pt_regs *regs, long error_code)
4736 +@@ -1674,7 +1675,7 @@ static void unexpected_machine_check(struct pt_regs *regs, long error_code)
4737 }
4738
4739 /* Call the installed machine check handler for this CPU setup. */
4740 @@ -21304,7 +21728,7 @@ index 68317c8..c860d41 100644
4741 unexpected_machine_check;
4742
4743 /*
4744 -@@ -1703,7 +1704,9 @@ void mcheck_cpu_init(struct cpuinfo_x86 *c)
4745 +@@ -1697,7 +1698,9 @@ void mcheck_cpu_init(struct cpuinfo_x86 *c)
4746 return;
4747 }
4748
4749 @@ -21314,7 +21738,7 @@ index 68317c8..c860d41 100644
4750
4751 __mcheck_cpu_init_generic();
4752 __mcheck_cpu_init_vendor(c);
4753 -@@ -1717,7 +1720,7 @@ void mcheck_cpu_init(struct cpuinfo_x86 *c)
4754 +@@ -1711,7 +1714,7 @@ void mcheck_cpu_init(struct cpuinfo_x86 *c)
4755 */
4756
4757 static DEFINE_SPINLOCK(mce_chrdev_state_lock);
4758 @@ -21323,7 +21747,7 @@ index 68317c8..c860d41 100644
4759 static int mce_chrdev_open_exclu; /* already open exclusive? */
4760
4761 static int mce_chrdev_open(struct inode *inode, struct file *file)
4762 -@@ -1725,7 +1728,7 @@ static int mce_chrdev_open(struct inode *inode, struct file *file)
4763 +@@ -1719,7 +1722,7 @@ static int mce_chrdev_open(struct inode *inode, struct file *file)
4764 spin_lock(&mce_chrdev_state_lock);
4765
4766 if (mce_chrdev_open_exclu ||
4767 @@ -21332,7 +21756,7 @@ index 68317c8..c860d41 100644
4768 spin_unlock(&mce_chrdev_state_lock);
4769
4770 return -EBUSY;
4771 -@@ -1733,7 +1736,7 @@ static int mce_chrdev_open(struct inode *inode, struct file *file)
4772 +@@ -1727,7 +1730,7 @@ static int mce_chrdev_open(struct inode *inode, struct file *file)
4773
4774 if (file->f_flags & O_EXCL)
4775 mce_chrdev_open_exclu = 1;
4776 @@ -21341,7 +21765,7 @@ index 68317c8..c860d41 100644
4777
4778 spin_unlock(&mce_chrdev_state_lock);
4779
4780 -@@ -1744,7 +1747,7 @@ static int mce_chrdev_release(struct inode *inode, struct file *file)
4781 +@@ -1738,7 +1741,7 @@ static int mce_chrdev_release(struct inode *inode, struct file *file)
4782 {
4783 spin_lock(&mce_chrdev_state_lock);
4784
4785 @@ -21350,7 +21774,7 @@ index 68317c8..c860d41 100644
4786 mce_chrdev_open_exclu = 0;
4787
4788 spin_unlock(&mce_chrdev_state_lock);
4789 -@@ -2420,7 +2423,7 @@ static __init void mce_init_banks(void)
4790 +@@ -2414,7 +2417,7 @@ static __init void mce_init_banks(void)
4791
4792 for (i = 0; i < mca_cfg.banks; i++) {
4793 struct mce_bank *b = &mce_banks[i];
4794 @@ -21359,7 +21783,7 @@ index 68317c8..c860d41 100644
4795
4796 sysfs_attr_init(&a->attr);
4797 a->attr.name = b->attrname;
4798 -@@ -2492,7 +2495,7 @@ struct dentry *mce_get_debugfs_dir(void)
4799 +@@ -2521,7 +2524,7 @@ struct dentry *mce_get_debugfs_dir(void)
4800 static void mce_reset(void)
4801 {
4802 cpu_missing = 0;
4803 @@ -21413,10 +21837,10 @@ index 7dc5564..1273569 100644
4804 wmb();
4805
4806 diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c
4807 -index 15c9876..0a43909 100644
4808 +index dd9d619..86e1d81 100644
4809 --- a/arch/x86/kernel/cpu/microcode/core.c
4810 +++ b/arch/x86/kernel/cpu/microcode/core.c
4811 -@@ -513,7 +513,7 @@ mc_cpu_callback(struct notifier_block *nb, unsigned long action, void *hcpu)
4812 +@@ -516,7 +516,7 @@ mc_cpu_callback(struct notifier_block *nb, unsigned long action, void *hcpu)
4813 return NOTIFY_OK;
4814 }
4815
4816 @@ -21472,11 +21896,11 @@ index df5e41f..816c719 100644
4817 extern int generic_get_free_region(unsigned long base, unsigned long size,
4818 int replace_reg);
4819 diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c
4820 -index ae407f7..39c5b00 100644
4821 +index 2879ecd..bb8c80b 100644
4822 --- a/arch/x86/kernel/cpu/perf_event.c
4823 +++ b/arch/x86/kernel/cpu/perf_event.c
4824 -@@ -1367,7 +1367,7 @@ static void __init pmu_check_apic(void)
4825 - pr_info("no hardware sampling interrupt available.\n");
4826 +@@ -1372,7 +1372,7 @@ static void __init pmu_check_apic(void)
4827 +
4828 }
4829
4830 -static struct attribute_group x86_pmu_format_group = {
4831 @@ -21484,7 +21908,7 @@ index ae407f7..39c5b00 100644
4832 .name = "format",
4833 .attrs = NULL,
4834 };
4835 -@@ -1466,7 +1466,7 @@ static struct attribute *events_attr[] = {
4836 +@@ -1471,7 +1471,7 @@ static struct attribute *events_attr[] = {
4837 NULL,
4838 };
4839
4840 @@ -21493,7 +21917,7 @@ index ae407f7..39c5b00 100644
4841 .name = "events",
4842 .attrs = events_attr,
4843 };
4844 -@@ -1990,7 +1990,7 @@ static unsigned long get_segment_base(unsigned int segment)
4845 +@@ -1995,7 +1995,7 @@ static unsigned long get_segment_base(unsigned int segment)
4846 if (idx > GDT_ENTRIES)
4847 return 0;
4848
4849 @@ -21502,7 +21926,7 @@ index ae407f7..39c5b00 100644
4850 }
4851
4852 return get_desc_base(desc + idx);
4853 -@@ -2080,7 +2080,7 @@ perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs)
4854 +@@ -2085,7 +2085,7 @@ perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs)
4855 break;
4856
4857 perf_callchain_store(entry, frame.return_address);
4858 @@ -21525,10 +21949,10 @@ index 639d128..e92d7e5 100644
4859
4860 while (amd_iommu_v2_event_descs[i].attr.attr.name)
4861 diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c
4862 -index 07846d7..a40ec4a 100644
4863 +index 2502d0d..e5cc05c 100644
4864 --- a/arch/x86/kernel/cpu/perf_event_intel.c
4865 +++ b/arch/x86/kernel/cpu/perf_event_intel.c
4866 -@@ -2317,10 +2317,10 @@ __init int intel_pmu_init(void)
4867 +@@ -2353,10 +2353,10 @@ __init int intel_pmu_init(void)
4868 x86_pmu.num_counters_fixed = max((int)edx.split.num_counters_fixed, 3);
4869
4870 if (boot_cpu_has(X86_FEATURE_PDCM)) {
4871 @@ -21556,10 +21980,10 @@ index 619f769..d510008 100644
4872 .attrs = NULL, /* patched at runtime */
4873 };
4874 diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.c b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
4875 -index 65bbbea..1438d9e 100644
4876 +index ae6552a..b5be2d3 100644
4877 --- a/arch/x86/kernel/cpu/perf_event_intel_uncore.c
4878 +++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
4879 -@@ -3693,7 +3693,7 @@ static void __init uncore_types_exit(struct intel_uncore_type **types)
4880 +@@ -3694,7 +3694,7 @@ static void __init uncore_types_exit(struct intel_uncore_type **types)
4881 static int __init uncore_type_init(struct intel_uncore_type *type)
4882 {
4883 struct intel_uncore_pmu *pmus;
4884 @@ -21656,7 +22080,7 @@ index f6dfd93..892ade4 100644
4885
4886 .__cr3 = __pa_nodebug(swapper_pg_dir),
4887 diff --git a/arch/x86/kernel/dumpstack.c b/arch/x86/kernel/dumpstack.c
4888 -index d9c12d3..7858b62 100644
4889 +index b74ebc7..6dbb0c5 100644
4890 --- a/arch/x86/kernel/dumpstack.c
4891 +++ b/arch/x86/kernel/dumpstack.c
4892 @@ -2,6 +2,9 @@
4893 @@ -21770,16 +22194,16 @@ index d9c12d3..7858b62 100644
4894 printk_stack_address(addr, reliable);
4895 }
4896
4897 -@@ -224,6 +223,8 @@ unsigned __kprobes long oops_begin(void)
4898 - }
4899 +@@ -225,6 +224,8 @@ unsigned long oops_begin(void)
4900 EXPORT_SYMBOL_GPL(oops_begin);
4901 + NOKPROBE_SYMBOL(oops_begin);
4902
4903 +extern void gr_handle_kernel_exploit(void);
4904 +
4905 - void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, int signr)
4906 + void oops_end(unsigned long flags, struct pt_regs *regs, int signr)
4907 {
4908 if (regs && kexec_should_crash(current))
4909 -@@ -245,7 +246,10 @@ void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, int signr)
4910 +@@ -246,7 +247,10 @@ void oops_end(unsigned long flags, struct pt_regs *regs, int signr)
4911 panic("Fatal exception in interrupt");
4912 if (panic_on_oops)
4913 panic("Fatal exception");
4914 @@ -21789,9 +22213,9 @@ index d9c12d3..7858b62 100644
4915 +
4916 + do_group_exit(signr);
4917 }
4918 + NOKPROBE_SYMBOL(oops_end);
4919
4920 - int __kprobes __die(const char *str, struct pt_regs *regs, long err)
4921 -@@ -273,7 +277,7 @@ int __kprobes __die(const char *str, struct pt_regs *regs, long err)
4922 +@@ -275,7 +279,7 @@ int __die(const char *str, struct pt_regs *regs, long err)
4923 print_modules();
4924 show_regs(regs);
4925 #ifdef CONFIG_X86_32
4926 @@ -21800,7 +22224,7 @@ index d9c12d3..7858b62 100644
4927 sp = regs->sp;
4928 ss = regs->ss & 0xffff;
4929 } else {
4930 -@@ -301,7 +305,7 @@ void die(const char *str, struct pt_regs *regs, long err)
4931 +@@ -304,7 +308,7 @@ void die(const char *str, struct pt_regs *regs, long err)
4932 unsigned long flags = oops_begin();
4933 int sig = SIGSEGV;
4934
4935 @@ -22040,7 +22464,7 @@ index 01d1c18..8073693 100644
4936 #include <asm/processor.h>
4937 #include <asm/fcntl.h>
4938 diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S
4939 -index c5a9cb9..228d280 100644
4940 +index 0d0c9d4..f65b4f6 100644
4941 --- a/arch/x86/kernel/entry_32.S
4942 +++ b/arch/x86/kernel/entry_32.S
4943 @@ -177,13 +177,153 @@
4944 @@ -22232,7 +22656,7 @@ index c5a9cb9..228d280 100644
4945
4946 ENTRY(ret_from_kernel_thread)
4947 CFI_STARTPROC
4948 -@@ -344,7 +493,15 @@ ret_from_intr:
4949 +@@ -340,7 +489,15 @@ ret_from_intr:
4950 andl $SEGMENT_RPL_MASK, %eax
4951 #endif
4952 cmpl $USER_RPL, %eax
4953 @@ -22248,7 +22672,7 @@ index c5a9cb9..228d280 100644
4954
4955 ENTRY(resume_userspace)
4956 LOCKDEP_SYS_EXIT
4957 -@@ -356,8 +513,8 @@ ENTRY(resume_userspace)
4958 +@@ -352,8 +509,8 @@ ENTRY(resume_userspace)
4959 andl $_TIF_WORK_MASK, %ecx # is there any work to be done on
4960 # int/exception return?
4961 jne work_pending
4962 @@ -22259,7 +22683,7 @@ index c5a9cb9..228d280 100644
4963
4964 #ifdef CONFIG_PREEMPT
4965 ENTRY(resume_kernel)
4966 -@@ -369,7 +526,7 @@ need_resched:
4967 +@@ -365,7 +522,7 @@ need_resched:
4968 jz restore_all
4969 call preempt_schedule_irq
4970 jmp need_resched
4971 @@ -22267,8 +22691,8 @@ index c5a9cb9..228d280 100644
4972 +ENDPROC(resume_kernel)
4973 #endif
4974 CFI_ENDPROC
4975 - /*
4976 -@@ -403,30 +560,45 @@ sysenter_past_esp:
4977 +
4978 +@@ -395,30 +552,45 @@ sysenter_past_esp:
4979 /*CFI_REL_OFFSET cs, 0*/
4980 /*
4981 * Push current_thread_info()->sysenter_return to the stack.
4982 @@ -22317,7 +22741,7 @@ index c5a9cb9..228d280 100644
4983 testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp)
4984 jnz sysenter_audit
4985 sysenter_do_call:
4986 -@@ -442,12 +614,24 @@ sysenter_after_call:
4987 +@@ -434,12 +606,24 @@ sysenter_after_call:
4988 testl $_TIF_ALLWORK_MASK, %ecx
4989 jne sysexit_audit
4990 sysenter_exit:
4991 @@ -22342,7 +22766,7 @@ index c5a9cb9..228d280 100644
4992 PTGS_TO_GS
4993 ENABLE_INTERRUPTS_SYSEXIT
4994
4995 -@@ -464,6 +648,9 @@ sysenter_audit:
4996 +@@ -456,6 +640,9 @@ sysenter_audit:
4997 movl %eax,%edx /* 2nd arg: syscall number */
4998 movl $AUDIT_ARCH_I386,%eax /* 1st arg: audit arch */
4999 call __audit_syscall_entry
5000 @@ -22352,7 +22776,7 @@ index c5a9cb9..228d280 100644
5001 pushl_cfi %ebx
5002 movl PT_EAX(%esp),%eax /* reload syscall number */
5003 jmp sysenter_do_call
5004 -@@ -489,10 +676,16 @@ sysexit_audit:
5005 +@@ -481,10 +668,16 @@ sysexit_audit:
5006
5007 CFI_ENDPROC
5008 .pushsection .fixup,"ax"
5009 @@ -22371,7 +22795,7 @@ index c5a9cb9..228d280 100644
5010 PTGS_TO_GS_EX
5011 ENDPROC(ia32_sysenter_target)
5012
5013 -@@ -507,6 +700,11 @@ ENTRY(system_call)
5014 +@@ -495,6 +688,11 @@ ENTRY(system_call)
5015 pushl_cfi %eax # save orig_eax
5016 SAVE_ALL
5017 GET_THREAD_INFO(%ebp)
5018 @@ -22383,7 +22807,7 @@ index c5a9cb9..228d280 100644
5019 # system call tracing in operation / emulation
5020 testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp)
5021 jnz syscall_trace_entry
5022 -@@ -526,6 +724,15 @@ syscall_exit:
5023 +@@ -514,6 +712,15 @@ syscall_exit:
5024 testl $_TIF_ALLWORK_MASK, %ecx # current->work
5025 jne syscall_exit_work
5026
5027 @@ -22399,7 +22823,7 @@ index c5a9cb9..228d280 100644
5028 restore_all:
5029 TRACE_IRQS_IRET
5030 restore_all_notrace:
5031 -@@ -580,14 +787,34 @@ ldt_ss:
5032 +@@ -568,14 +775,34 @@ ldt_ss:
5033 * compensating for the offset by changing to the ESPFIX segment with
5034 * a base address that matches for the difference.
5035 */
5036 @@ -22437,7 +22861,7 @@ index c5a9cb9..228d280 100644
5037 pushl_cfi $__ESPFIX_SS
5038 pushl_cfi %eax /* new kernel esp */
5039 /* Disable interrupts, but do not irqtrace this section: we
5040 -@@ -617,20 +844,18 @@ work_resched:
5041 +@@ -605,20 +832,18 @@ work_resched:
5042 movl TI_flags(%ebp), %ecx
5043 andl $_TIF_WORK_MASK, %ecx # is there any work to be done other
5044 # than syscall tracing?
5045 @@ -22460,7 +22884,7 @@ index c5a9cb9..228d280 100644
5046 #endif
5047 TRACE_IRQS_ON
5048 ENABLE_INTERRUPTS(CLBR_NONE)
5049 -@@ -651,7 +876,7 @@ work_notifysig_v86:
5050 +@@ -639,7 +864,7 @@ work_notifysig_v86:
5051 movl %eax, %esp
5052 jmp 1b
5053 #endif
5054 @@ -22469,7 +22893,7 @@ index c5a9cb9..228d280 100644
5055
5056 # perform syscall exit tracing
5057 ALIGN
5058 -@@ -659,11 +884,14 @@ syscall_trace_entry:
5059 +@@ -647,11 +872,14 @@ syscall_trace_entry:
5060 movl $-ENOSYS,PT_EAX(%esp)
5061 movl %esp, %eax
5062 call syscall_trace_enter
5063 @@ -22485,7 +22909,7 @@ index c5a9cb9..228d280 100644
5064
5065 # perform syscall exit tracing
5066 ALIGN
5067 -@@ -676,26 +904,30 @@ syscall_exit_work:
5068 +@@ -664,26 +892,30 @@ syscall_exit_work:
5069 movl %esp, %eax
5070 call syscall_trace_leave
5071 jmp resume_userspace
5072 @@ -22518,9 +22942,9 @@ index c5a9cb9..228d280 100644
5073 -END(syscall_badsys)
5074 +ENDPROC(sysenter_badsys)
5075 CFI_ENDPROC
5076 - /*
5077 - * End of kprobes section
5078 -@@ -712,8 +944,15 @@ END(syscall_badsys)
5079 +
5080 + .macro FIXUP_ESPFIX_STACK
5081 +@@ -696,8 +928,15 @@ END(syscall_badsys)
5082 */
5083 #ifdef CONFIG_X86_ESPFIX32
5084 /* fixup the stack */
5085 @@ -22538,7 +22962,7 @@ index c5a9cb9..228d280 100644
5086 shl $16, %eax
5087 addl %esp, %eax /* the adjusted stack pointer */
5088 pushl_cfi $__KERNEL_DS
5089 -@@ -769,7 +1008,7 @@ vector=vector+1
5090 +@@ -753,7 +992,7 @@ vector=vector+1
5091 .endr
5092 2: jmp common_interrupt
5093 .endr
5094 @@ -22547,7 +22971,7 @@ index c5a9cb9..228d280 100644
5095
5096 .previous
5097 END(interrupt)
5098 -@@ -830,7 +1069,7 @@ ENTRY(coprocessor_error)
5099 +@@ -810,7 +1049,7 @@ ENTRY(coprocessor_error)
5100 pushl_cfi $do_coprocessor_error
5101 jmp error_code
5102 CFI_ENDPROC
5103 @@ -22556,7 +22980,7 @@ index c5a9cb9..228d280 100644
5104
5105 ENTRY(simd_coprocessor_error)
5106 RING0_INT_FRAME
5107 -@@ -843,7 +1082,7 @@ ENTRY(simd_coprocessor_error)
5108 +@@ -823,7 +1062,7 @@ ENTRY(simd_coprocessor_error)
5109 .section .altinstructions,"a"
5110 altinstruction_entry 661b, 663f, X86_FEATURE_XMM, 662b-661b, 664f-663f
5111 .previous
5112 @@ -22565,7 +22989,7 @@ index c5a9cb9..228d280 100644
5113 663: pushl $do_simd_coprocessor_error
5114 664:
5115 .previous
5116 -@@ -852,7 +1091,7 @@ ENTRY(simd_coprocessor_error)
5117 +@@ -832,7 +1071,7 @@ ENTRY(simd_coprocessor_error)
5118 #endif
5119 jmp error_code
5120 CFI_ENDPROC
5121 @@ -22574,7 +22998,7 @@ index c5a9cb9..228d280 100644
5122
5123 ENTRY(device_not_available)
5124 RING0_INT_FRAME
5125 -@@ -861,18 +1100,18 @@ ENTRY(device_not_available)
5126 +@@ -841,18 +1080,18 @@ ENTRY(device_not_available)
5127 pushl_cfi $do_device_not_available
5128 jmp error_code
5129 CFI_ENDPROC
5130 @@ -22596,7 +23020,7 @@ index c5a9cb9..228d280 100644
5131 #endif
5132
5133 ENTRY(overflow)
5134 -@@ -882,7 +1121,7 @@ ENTRY(overflow)
5135 +@@ -862,7 +1101,7 @@ ENTRY(overflow)
5136 pushl_cfi $do_overflow
5137 jmp error_code
5138 CFI_ENDPROC
5139 @@ -22605,7 +23029,7 @@ index c5a9cb9..228d280 100644
5140
5141 ENTRY(bounds)
5142 RING0_INT_FRAME
5143 -@@ -891,7 +1130,7 @@ ENTRY(bounds)
5144 +@@ -871,7 +1110,7 @@ ENTRY(bounds)
5145 pushl_cfi $do_bounds
5146 jmp error_code
5147 CFI_ENDPROC
5148 @@ -22614,7 +23038,7 @@ index c5a9cb9..228d280 100644
5149
5150 ENTRY(invalid_op)
5151 RING0_INT_FRAME
5152 -@@ -900,7 +1139,7 @@ ENTRY(invalid_op)
5153 +@@ -880,7 +1119,7 @@ ENTRY(invalid_op)
5154 pushl_cfi $do_invalid_op
5155 jmp error_code
5156 CFI_ENDPROC
5157 @@ -22623,7 +23047,7 @@ index c5a9cb9..228d280 100644
5158
5159 ENTRY(coprocessor_segment_overrun)
5160 RING0_INT_FRAME
5161 -@@ -909,7 +1148,7 @@ ENTRY(coprocessor_segment_overrun)
5162 +@@ -889,7 +1128,7 @@ ENTRY(coprocessor_segment_overrun)
5163 pushl_cfi $do_coprocessor_segment_overrun
5164 jmp error_code
5165 CFI_ENDPROC
5166 @@ -22632,7 +23056,7 @@ index c5a9cb9..228d280 100644
5167
5168 ENTRY(invalid_TSS)
5169 RING0_EC_FRAME
5170 -@@ -917,7 +1156,7 @@ ENTRY(invalid_TSS)
5171 +@@ -897,7 +1136,7 @@ ENTRY(invalid_TSS)
5172 pushl_cfi $do_invalid_TSS
5173 jmp error_code
5174 CFI_ENDPROC
5175 @@ -22641,7 +23065,7 @@ index c5a9cb9..228d280 100644
5176
5177 ENTRY(segment_not_present)
5178 RING0_EC_FRAME
5179 -@@ -925,7 +1164,7 @@ ENTRY(segment_not_present)
5180 +@@ -905,7 +1144,7 @@ ENTRY(segment_not_present)
5181 pushl_cfi $do_segment_not_present
5182 jmp error_code
5183 CFI_ENDPROC
5184 @@ -22650,7 +23074,7 @@ index c5a9cb9..228d280 100644
5185
5186 ENTRY(stack_segment)
5187 RING0_EC_FRAME
5188 -@@ -933,7 +1172,7 @@ ENTRY(stack_segment)
5189 +@@ -913,7 +1152,7 @@ ENTRY(stack_segment)
5190 pushl_cfi $do_stack_segment
5191 jmp error_code
5192 CFI_ENDPROC
5193 @@ -22659,7 +23083,7 @@ index c5a9cb9..228d280 100644
5194
5195 ENTRY(alignment_check)
5196 RING0_EC_FRAME
5197 -@@ -941,7 +1180,7 @@ ENTRY(alignment_check)
5198 +@@ -921,7 +1160,7 @@ ENTRY(alignment_check)
5199 pushl_cfi $do_alignment_check
5200 jmp error_code
5201 CFI_ENDPROC
5202 @@ -22668,7 +23092,7 @@ index c5a9cb9..228d280 100644
5203
5204 ENTRY(divide_error)
5205 RING0_INT_FRAME
5206 -@@ -950,7 +1189,7 @@ ENTRY(divide_error)
5207 +@@ -930,7 +1169,7 @@ ENTRY(divide_error)
5208 pushl_cfi $do_divide_error
5209 jmp error_code
5210 CFI_ENDPROC
5211 @@ -22677,7 +23101,7 @@ index c5a9cb9..228d280 100644
5212
5213 #ifdef CONFIG_X86_MCE
5214 ENTRY(machine_check)
5215 -@@ -960,7 +1199,7 @@ ENTRY(machine_check)
5216 +@@ -940,7 +1179,7 @@ ENTRY(machine_check)
5217 pushl_cfi machine_check_vector
5218 jmp error_code
5219 CFI_ENDPROC
5220 @@ -22686,16 +23110,16 @@ index c5a9cb9..228d280 100644
5221 #endif
5222
5223 ENTRY(spurious_interrupt_bug)
5224 -@@ -970,7 +1209,7 @@ ENTRY(spurious_interrupt_bug)
5225 +@@ -950,7 +1189,7 @@ ENTRY(spurious_interrupt_bug)
5226 pushl_cfi $do_spurious_interrupt_bug
5227 jmp error_code
5228 CFI_ENDPROC
5229 -END(spurious_interrupt_bug)
5230 +ENDPROC(spurious_interrupt_bug)
5231 - /*
5232 - * End of kprobes section
5233 - */
5234 -@@ -1080,7 +1319,7 @@ BUILD_INTERRUPT3(hyperv_callback_vector, HYPERVISOR_CALLBACK_VECTOR,
5235 +
5236 + #ifdef CONFIG_XEN
5237 + /* Xen doesn't set %esp to be precisely what the normal sysenter
5238 +@@ -1056,7 +1295,7 @@ BUILD_INTERRUPT3(hyperv_callback_vector, HYPERVISOR_CALLBACK_VECTOR,
5239
5240 ENTRY(mcount)
5241 ret
5242 @@ -22704,7 +23128,7 @@ index c5a9cb9..228d280 100644
5243
5244 ENTRY(ftrace_caller)
5245 cmpl $0, function_trace_stop
5246 -@@ -1113,7 +1352,7 @@ ftrace_graph_call:
5247 +@@ -1089,7 +1328,7 @@ ftrace_graph_call:
5248 .globl ftrace_stub
5249 ftrace_stub:
5250 ret
5251 @@ -22713,7 +23137,7 @@ index c5a9cb9..228d280 100644
5252
5253 ENTRY(ftrace_regs_caller)
5254 pushf /* push flags before compare (in cs location) */
5255 -@@ -1217,7 +1456,7 @@ trace:
5256 +@@ -1193,7 +1432,7 @@ trace:
5257 popl %ecx
5258 popl %eax
5259 jmp ftrace_stub
5260 @@ -22722,7 +23146,7 @@ index c5a9cb9..228d280 100644
5261 #endif /* CONFIG_DYNAMIC_FTRACE */
5262 #endif /* CONFIG_FUNCTION_TRACER */
5263
5264 -@@ -1235,7 +1474,7 @@ ENTRY(ftrace_graph_caller)
5265 +@@ -1211,7 +1450,7 @@ ENTRY(ftrace_graph_caller)
5266 popl %ecx
5267 popl %eax
5268 ret
5269 @@ -22731,7 +23155,7 @@ index c5a9cb9..228d280 100644
5270
5271 .globl return_to_handler
5272 return_to_handler:
5273 -@@ -1301,15 +1540,18 @@ error_code:
5274 +@@ -1272,15 +1511,18 @@ error_code:
5275 movl $-1, PT_ORIG_EAX(%esp) # no syscall to restart
5276 REG_TO_PTGS %ecx
5277 SET_KERNEL_GS %ecx
5278 @@ -22752,7 +23176,7 @@ index c5a9cb9..228d280 100644
5279
5280 /*
5281 * Debug traps and NMI can happen at the one SYSENTER instruction
5282 -@@ -1352,7 +1594,7 @@ debug_stack_correct:
5283 +@@ -1323,7 +1565,7 @@ debug_stack_correct:
5284 call do_debug
5285 jmp ret_from_exception
5286 CFI_ENDPROC
5287 @@ -22761,7 +23185,7 @@ index c5a9cb9..228d280 100644
5288
5289 /*
5290 * NMI is doubly nasty. It can happen _while_ we're handling
5291 -@@ -1392,6 +1634,9 @@ nmi_stack_correct:
5292 +@@ -1363,6 +1605,9 @@ nmi_stack_correct:
5293 xorl %edx,%edx # zero error code
5294 movl %esp,%eax # pt_regs pointer
5295 call do_nmi
5296 @@ -22771,7 +23195,7 @@ index c5a9cb9..228d280 100644
5297 jmp restore_all_notrace
5298 CFI_ENDPROC
5299
5300 -@@ -1429,13 +1674,16 @@ nmi_espfix_stack:
5301 +@@ -1400,13 +1645,16 @@ nmi_espfix_stack:
5302 FIXUP_ESPFIX_STACK # %eax == %esp
5303 xorl %edx,%edx # zero error code
5304 call do_nmi
5305 @@ -22789,7 +23213,7 @@ index c5a9cb9..228d280 100644
5306
5307 ENTRY(int3)
5308 RING0_INT_FRAME
5309 -@@ -1448,14 +1696,14 @@ ENTRY(int3)
5310 +@@ -1419,14 +1667,14 @@ ENTRY(int3)
5311 call do_int3
5312 jmp ret_from_exception
5313 CFI_ENDPROC
5314 @@ -22806,7 +23230,7 @@ index c5a9cb9..228d280 100644
5315
5316 #ifdef CONFIG_KVM_GUEST
5317 ENTRY(async_page_fault)
5318 -@@ -1464,7 +1712,7 @@ ENTRY(async_page_fault)
5319 +@@ -1435,6 +1683,6 @@ ENTRY(async_page_fault)
5320 pushl_cfi $do_async_page_fault
5321 jmp error_code
5322 CFI_ENDPROC
5323 @@ -22814,12 +23238,11 @@ index c5a9cb9..228d280 100644
5324 +ENDPROC(async_page_fault)
5325 #endif
5326
5327 - /*
5328 diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
5329 -index 03cd2a8..05a9aed 100644
5330 +index c844f08..b07ea0e 100644
5331 --- a/arch/x86/kernel/entry_64.S
5332 +++ b/arch/x86/kernel/entry_64.S
5333 -@@ -60,6 +60,8 @@
5334 +@@ -59,6 +59,8 @@
5335 #include <asm/smap.h>
5336 #include <asm/pgtable_types.h>
5337 #include <linux/err.h>
5338 @@ -22828,82 +23251,7 @@ index 03cd2a8..05a9aed 100644
5339
5340 /* Avoid __ASSEMBLER__'ifying <linux/audit.h> just for this. */
5341 #include <linux/elf-em.h>
5342 -@@ -81,8 +83,9 @@
5343 - #ifdef CONFIG_DYNAMIC_FTRACE
5344 -
5345 - ENTRY(function_hook)
5346 -+ pax_force_retaddr
5347 - retq
5348 --END(function_hook)
5349 -+ENDPROC(function_hook)
5350 -
5351 - /* skip is set if stack has been adjusted */
5352 - .macro ftrace_caller_setup skip=0
5353 -@@ -123,8 +126,9 @@ GLOBAL(ftrace_graph_call)
5354 - #endif
5355 -
5356 - GLOBAL(ftrace_stub)
5357 -+ pax_force_retaddr
5358 - retq
5359 --END(ftrace_caller)
5360 -+ENDPROC(ftrace_caller)
5361 -
5362 - ENTRY(ftrace_regs_caller)
5363 - /* Save the current flags before compare (in SS location)*/
5364 -@@ -192,7 +196,7 @@ ftrace_restore_flags:
5365 - popfq
5366 - jmp ftrace_stub
5367 -
5368 --END(ftrace_regs_caller)
5369 -+ENDPROC(ftrace_regs_caller)
5370 -
5371 -
5372 - #else /* ! CONFIG_DYNAMIC_FTRACE */
5373 -@@ -213,6 +217,7 @@ ENTRY(function_hook)
5374 - #endif
5375 -
5376 - GLOBAL(ftrace_stub)
5377 -+ pax_force_retaddr
5378 - retq
5379 -
5380 - trace:
5381 -@@ -226,12 +231,13 @@ trace:
5382 - #endif
5383 - subq $MCOUNT_INSN_SIZE, %rdi
5384 -
5385 -+ pax_force_fptr ftrace_trace_function
5386 - call *ftrace_trace_function
5387 -
5388 - MCOUNT_RESTORE_FRAME
5389 -
5390 - jmp ftrace_stub
5391 --END(function_hook)
5392 -+ENDPROC(function_hook)
5393 - #endif /* CONFIG_DYNAMIC_FTRACE */
5394 - #endif /* CONFIG_FUNCTION_TRACER */
5395 -
5396 -@@ -253,8 +259,9 @@ ENTRY(ftrace_graph_caller)
5397 -
5398 - MCOUNT_RESTORE_FRAME
5399 -
5400 -+ pax_force_retaddr
5401 - retq
5402 --END(ftrace_graph_caller)
5403 -+ENDPROC(ftrace_graph_caller)
5404 -
5405 - GLOBAL(return_to_handler)
5406 - subq $24, %rsp
5407 -@@ -270,7 +277,9 @@ GLOBAL(return_to_handler)
5408 - movq 8(%rsp), %rdx
5409 - movq (%rsp), %rax
5410 - addq $24, %rsp
5411 -+ pax_force_fptr %rdi
5412 - jmp *%rdi
5413 -+ENDPROC(return_to_handler)
5414 - #endif
5415 -
5416 -
5417 -@@ -285,6 +294,430 @@ ENTRY(native_usergs_sysret64)
5418 +@@ -81,6 +83,430 @@ ENTRY(native_usergs_sysret64)
5419 ENDPROC(native_usergs_sysret64)
5420 #endif /* CONFIG_PARAVIRT */
5421
5422 @@ -23334,7 +23682,7 @@ index 03cd2a8..05a9aed 100644
5423
5424 .macro TRACE_IRQS_IRETQ offset=ARGOFFSET
5425 #ifdef CONFIG_TRACE_IRQFLAGS
5426 -@@ -321,7 +754,7 @@ ENDPROC(native_usergs_sysret64)
5427 +@@ -117,7 +543,7 @@ ENDPROC(native_usergs_sysret64)
5428 .endm
5429
5430 .macro TRACE_IRQS_IRETQ_DEBUG offset=ARGOFFSET
5431 @@ -23343,7 +23691,7 @@ index 03cd2a8..05a9aed 100644
5432 jnc 1f
5433 TRACE_IRQS_ON_DEBUG
5434 1:
5435 -@@ -359,27 +792,6 @@ ENDPROC(native_usergs_sysret64)
5436 +@@ -155,27 +581,6 @@ ENDPROC(native_usergs_sysret64)
5437 movq \tmp,R11+\offset(%rsp)
5438 .endm
5439
5440 @@ -23371,7 +23719,7 @@ index 03cd2a8..05a9aed 100644
5441 /*
5442 * initial frame state for interrupts (and exceptions without error code)
5443 */
5444 -@@ -446,25 +858,26 @@ ENDPROC(native_usergs_sysret64)
5445 +@@ -242,25 +647,26 @@ ENDPROC(native_usergs_sysret64)
5446 /* save partial stack frame */
5447 .macro SAVE_ARGS_IRQ
5448 cld
5449 @@ -23411,7 +23759,7 @@ index 03cd2a8..05a9aed 100644
5450 je 1f
5451 SWAPGS
5452 /*
5453 -@@ -484,6 +897,18 @@ ENDPROC(native_usergs_sysret64)
5454 +@@ -280,6 +686,18 @@ ENDPROC(native_usergs_sysret64)
5455 0x06 /* DW_OP_deref */, \
5456 0x08 /* DW_OP_const1u */, SS+8-RBP, \
5457 0x22 /* DW_OP_plus */
5458 @@ -23430,7 +23778,7 @@ index 03cd2a8..05a9aed 100644
5459 /* We entered an interrupt context - irqs are off: */
5460 TRACE_IRQS_OFF
5461 .endm
5462 -@@ -515,9 +940,52 @@ ENTRY(save_paranoid)
5463 +@@ -309,9 +727,52 @@ ENTRY(save_paranoid)
5464 js 1f /* negative -> in kernel */
5465 SWAPGS
5466 xorl %ebx,%ebx
5467 @@ -23482,10 +23830,10 @@ index 03cd2a8..05a9aed 100644
5468 + ret
5469 + CFI_ENDPROC
5470 +ENDPROC(save_paranoid_nmi)
5471 - .popsection
5472
5473 /*
5474 -@@ -539,7 +1007,7 @@ ENTRY(ret_from_fork)
5475 + * A newly forked process directly context switches into this address.
5476 +@@ -332,7 +793,7 @@ ENTRY(ret_from_fork)
5477
5478 RESTORE_REST
5479
5480 @@ -23494,7 +23842,7 @@ index 03cd2a8..05a9aed 100644
5481 jz 1f
5482
5483 testl $_TIF_IA32, TI_flags(%rcx) # 32-bit compat task needs IRET
5484 -@@ -549,15 +1017,13 @@ ENTRY(ret_from_fork)
5485 +@@ -342,15 +803,13 @@ ENTRY(ret_from_fork)
5486 jmp ret_from_sys_call # go to the SYSRET fastpath
5487
5488 1:
5489 @@ -23511,7 +23859,7 @@ index 03cd2a8..05a9aed 100644
5490
5491 /*
5492 * System call entry. Up to 6 arguments in registers are supported.
5493 -@@ -594,7 +1060,7 @@ END(ret_from_fork)
5494 +@@ -387,7 +846,7 @@ END(ret_from_fork)
5495 ENTRY(system_call)
5496 CFI_STARTPROC simple
5497 CFI_SIGNAL_FRAME
5498 @@ -23520,7 +23868,7 @@ index 03cd2a8..05a9aed 100644
5499 CFI_REGISTER rip,rcx
5500 /*CFI_REGISTER rflags,r11*/
5501 SWAPGS_UNSAFE_STACK
5502 -@@ -607,16 +1073,23 @@ GLOBAL(system_call_after_swapgs)
5503 +@@ -400,16 +859,23 @@ GLOBAL(system_call_after_swapgs)
5504
5505 movq %rsp,PER_CPU_VAR(old_rsp)
5506 movq PER_CPU_VAR(kernel_stack),%rsp
5507 @@ -23546,7 +23894,7 @@ index 03cd2a8..05a9aed 100644
5508 jnz tracesys
5509 system_call_fastpath:
5510 #if __SYSCALL_MASK == ~0
5511 -@@ -640,10 +1113,13 @@ sysret_check:
5512 +@@ -433,10 +899,13 @@ sysret_check:
5513 LOCKDEP_SYS_EXIT
5514 DISABLE_INTERRUPTS(CLBR_NONE)
5515 TRACE_IRQS_OFF
5516 @@ -23561,7 +23909,7 @@ index 03cd2a8..05a9aed 100644
5517 /*
5518 * sysretq will re-enable interrupts:
5519 */
5520 -@@ -702,6 +1178,9 @@ auditsys:
5521 +@@ -495,6 +964,9 @@ auditsys:
5522 movq %rax,%rsi /* 2nd arg: syscall number */
5523 movl $AUDIT_ARCH_X86_64,%edi /* 1st arg: audit arch */
5524 call __audit_syscall_entry
5525 @@ -23571,7 +23919,7 @@ index 03cd2a8..05a9aed 100644
5526 LOAD_ARGS 0 /* reload call-clobbered registers */
5527 jmp system_call_fastpath
5528
5529 -@@ -723,7 +1202,7 @@ sysret_audit:
5530 +@@ -516,7 +988,7 @@ sysret_audit:
5531 /* Do syscall tracing */
5532 tracesys:
5533 #ifdef CONFIG_AUDITSYSCALL
5534 @@ -23580,7 +23928,7 @@ index 03cd2a8..05a9aed 100644
5535 jz auditsys
5536 #endif
5537 SAVE_REST
5538 -@@ -731,12 +1210,15 @@ tracesys:
5539 +@@ -524,12 +996,15 @@ tracesys:
5540 FIXUP_TOP_OF_STACK %rdi
5541 movq %rsp,%rdi
5542 call syscall_trace_enter
5543 @@ -23597,7 +23945,7 @@ index 03cd2a8..05a9aed 100644
5544 RESTORE_REST
5545 #if __SYSCALL_MASK == ~0
5546 cmpq $__NR_syscall_max,%rax
5547 -@@ -766,7 +1248,9 @@ GLOBAL(int_with_check)
5548 +@@ -559,7 +1034,9 @@ GLOBAL(int_with_check)
5549 andl %edi,%edx
5550 jnz int_careful
5551 andl $~TS_COMPAT,TI_status(%rcx)
5552 @@ -23608,7 +23956,7 @@ index 03cd2a8..05a9aed 100644
5553
5554 /* Either reschedule or signal or syscall exit tracking needed. */
5555 /* First do a reschedule test. */
5556 -@@ -812,7 +1296,7 @@ int_restore_rest:
5557 +@@ -605,7 +1082,7 @@ int_restore_rest:
5558 TRACE_IRQS_OFF
5559 jmp int_with_check
5560 CFI_ENDPROC
5561 @@ -23617,7 +23965,7 @@ index 03cd2a8..05a9aed 100644
5562
5563 .macro FORK_LIKE func
5564 ENTRY(stub_\func)
5565 -@@ -825,9 +1309,10 @@ ENTRY(stub_\func)
5566 +@@ -618,9 +1095,10 @@ ENTRY(stub_\func)
5567 DEFAULT_FRAME 0 8 /* offset 8: return address */
5568 call sys_\func
5569 RESTORE_TOP_OF_STACK %r11, 8
5570 @@ -23630,7 +23978,7 @@ index 03cd2a8..05a9aed 100644
5571 .endm
5572
5573 .macro FIXED_FRAME label,func
5574 -@@ -837,9 +1322,10 @@ ENTRY(\label)
5575 +@@ -630,9 +1108,10 @@ ENTRY(\label)
5576 FIXUP_TOP_OF_STACK %r11, 8-ARGOFFSET
5577 call \func
5578 RESTORE_TOP_OF_STACK %r11, 8-ARGOFFSET
5579 @@ -23642,7 +23990,7 @@ index 03cd2a8..05a9aed 100644
5580 .endm
5581
5582 FORK_LIKE clone
5583 -@@ -847,19 +1333,6 @@ END(\label)
5584 +@@ -640,19 +1119,6 @@ END(\label)
5585 FORK_LIKE vfork
5586 FIXED_FRAME stub_iopl, sys_iopl
5587
5588 @@ -23662,7 +24010,7 @@ index 03cd2a8..05a9aed 100644
5589 ENTRY(stub_execve)
5590 CFI_STARTPROC
5591 addq $8, %rsp
5592 -@@ -871,7 +1344,7 @@ ENTRY(stub_execve)
5593 +@@ -664,7 +1130,7 @@ ENTRY(stub_execve)
5594 RESTORE_REST
5595 jmp int_ret_from_sys_call
5596 CFI_ENDPROC
5597 @@ -23671,7 +24019,7 @@ index 03cd2a8..05a9aed 100644
5598
5599 /*
5600 * sigreturn is special because it needs to restore all registers on return.
5601 -@@ -888,7 +1361,7 @@ ENTRY(stub_rt_sigreturn)
5602 +@@ -681,7 +1147,7 @@ ENTRY(stub_rt_sigreturn)
5603 RESTORE_REST
5604 jmp int_ret_from_sys_call
5605 CFI_ENDPROC
5606 @@ -23680,7 +24028,7 @@ index 03cd2a8..05a9aed 100644
5607
5608 #ifdef CONFIG_X86_X32_ABI
5609 ENTRY(stub_x32_rt_sigreturn)
5610 -@@ -902,7 +1375,7 @@ ENTRY(stub_x32_rt_sigreturn)
5611 +@@ -695,7 +1161,7 @@ ENTRY(stub_x32_rt_sigreturn)
5612 RESTORE_REST
5613 jmp int_ret_from_sys_call
5614 CFI_ENDPROC
5615 @@ -23689,7 +24037,7 @@ index 03cd2a8..05a9aed 100644
5616
5617 ENTRY(stub_x32_execve)
5618 CFI_STARTPROC
5619 -@@ -916,7 +1389,7 @@ ENTRY(stub_x32_execve)
5620 +@@ -709,7 +1175,7 @@ ENTRY(stub_x32_execve)
5621 RESTORE_REST
5622 jmp int_ret_from_sys_call
5623 CFI_ENDPROC
5624 @@ -23698,7 +24046,7 @@ index 03cd2a8..05a9aed 100644
5625
5626 #endif
5627
5628 -@@ -953,7 +1426,7 @@ vector=vector+1
5629 +@@ -746,7 +1212,7 @@ vector=vector+1
5630 2: jmp common_interrupt
5631 .endr
5632 CFI_ENDPROC
5633 @@ -23707,7 +24055,7 @@ index 03cd2a8..05a9aed 100644
5634
5635 .previous
5636 END(interrupt)
5637 -@@ -970,8 +1443,8 @@ END(interrupt)
5638 +@@ -763,8 +1229,8 @@ END(interrupt)
5639 /* 0(%rsp): ~(interrupt number) */
5640 .macro interrupt func
5641 /* reserve pt_regs for scratch regs and rbp */
5642 @@ -23718,7 +24066,7 @@ index 03cd2a8..05a9aed 100644
5643 SAVE_ARGS_IRQ
5644 call \func
5645 .endm
5646 -@@ -998,14 +1471,14 @@ ret_from_intr:
5647 +@@ -787,14 +1253,14 @@ ret_from_intr:
5648
5649 /* Restore saved previous stack */
5650 popq %rsi
5651 @@ -23737,7 +24085,7 @@ index 03cd2a8..05a9aed 100644
5652 je retint_kernel
5653
5654 /* Interrupt came from user space */
5655 -@@ -1027,12 +1500,16 @@ retint_swapgs: /* return to user-space */
5656 +@@ -816,12 +1282,16 @@ retint_swapgs: /* return to user-space */
5657 * The iretq could re-enable interrupts:
5658 */
5659 DISABLE_INTERRUPTS(CLBR_ANY)
5660 @@ -23754,7 +24102,7 @@ index 03cd2a8..05a9aed 100644
5661 /*
5662 * The iretq could re-enable interrupts:
5663 */
5664 -@@ -1145,7 +1622,7 @@ ENTRY(retint_kernel)
5665 +@@ -934,7 +1404,7 @@ ENTRY(retint_kernel)
5666 jmp exit_intr
5667 #endif
5668 CFI_ENDPROC
5669 @@ -23763,7 +24111,7 @@ index 03cd2a8..05a9aed 100644
5670
5671 /*
5672 * If IRET takes a fault on the espfix stack, then we
5673 -@@ -1167,13 +1644,13 @@ __do_double_fault:
5674 +@@ -956,13 +1426,13 @@ __do_double_fault:
5675 cmpq $native_irq_return_iret,%rax
5676 jne do_double_fault /* This shouldn't happen... */
5677 movq PER_CPU_VAR(kernel_stack),%rax
5678 @@ -23779,7 +24127,7 @@ index 03cd2a8..05a9aed 100644
5679 #else
5680 # define __do_double_fault do_double_fault
5681 #endif
5682 -@@ -1195,7 +1672,7 @@ ENTRY(\sym)
5683 +@@ -979,7 +1449,7 @@ ENTRY(\sym)
5684 interrupt \do_sym
5685 jmp ret_from_intr
5686 CFI_ENDPROC
5687 @@ -23788,67 +24136,38 @@ index 03cd2a8..05a9aed 100644
5688 .endm
5689
5690 #ifdef CONFIG_TRACING
5691 -@@ -1283,7 +1760,7 @@ ENTRY(\sym)
5692 - call \do_sym
5693 - jmp error_exit /* %ebx: no swapgs flag */
5694 - CFI_ENDPROC
5695 --END(\sym)
5696 -+ENDPROC(\sym)
5697 - .endm
5698 -
5699 - .macro paranoidzeroentry sym do_sym
5700 -@@ -1301,10 +1778,10 @@ ENTRY(\sym)
5701 - call \do_sym
5702 - jmp paranoid_exit /* %ebx: no swapgs flag */
5703 - CFI_ENDPROC
5704 --END(\sym)
5705 -+ENDPROC(\sym)
5706 - .endm
5707 -
5708 +@@ -1052,7 +1522,7 @@ apicinterrupt IRQ_WORK_VECTOR \
5709 + /*
5710 + * Exception entry points.
5711 + */
5712 -#define INIT_TSS_IST(x) PER_CPU_VAR(init_tss) + (TSS_ist + ((x) - 1) * 8)
5713 +#define INIT_TSS_IST(x) (TSS_ist + ((x) - 1) * 8)(%r13)
5714 - .macro paranoidzeroentry_ist sym do_sym ist
5715 +
5716 + .macro idtentry sym do_sym has_error_code:req paranoid=0 shift_ist=-1
5717 ENTRY(\sym)
5718 - INTR_FRAME
5719 -@@ -1317,12 +1794,18 @@ ENTRY(\sym)
5720 - TRACE_IRQS_OFF_DEBUG
5721 - movq %rsp,%rdi /* pt_regs pointer */
5722 - xorl %esi,%esi /* no error code */
5723 +@@ -1103,6 +1573,12 @@ ENTRY(\sym)
5724 + .endif
5725 +
5726 + .if \shift_ist != -1
5727 +#ifdef CONFIG_SMP
5728 + imul $TSS_size, PER_CPU_VAR(cpu_number), %r13d
5729 + lea init_tss(%r13), %r13
5730 +#else
5731 + lea init_tss(%rip), %r13
5732 +#endif
5733 - subq $EXCEPTION_STKSZ, INIT_TSS_IST(\ist)
5734 - call \do_sym
5735 - addq $EXCEPTION_STKSZ, INIT_TSS_IST(\ist)
5736 - jmp paranoid_exit /* %ebx: no swapgs flag */
5737 - CFI_ENDPROC
5738 --END(\sym)
5739 -+ENDPROC(\sym)
5740 - .endm
5741 + subq $EXCEPTION_STKSZ, INIT_TSS_IST(\shift_ist)
5742 + .endif
5743
5744 - .macro errorentry sym do_sym
5745 -@@ -1340,7 +1823,7 @@ ENTRY(\sym)
5746 - call \do_sym
5747 - jmp error_exit /* %ebx: no swapgs flag */
5748 - CFI_ENDPROC
5749 --END(\sym)
5750 -+ENDPROC(\sym)
5751 - .endm
5752 +@@ -1119,7 +1595,7 @@ ENTRY(\sym)
5753 + .endif
5754
5755 - #ifdef CONFIG_TRACING
5756 -@@ -1371,7 +1854,7 @@ ENTRY(\sym)
5757 - call \do_sym
5758 - jmp paranoid_exit /* %ebx: no swapgs flag */
5759 CFI_ENDPROC
5760 -END(\sym)
5761 +ENDPROC(\sym)
5762 .endm
5763
5764 - zeroentry divide_error do_divide_error
5765 -@@ -1401,9 +1884,10 @@ gs_change:
5766 + #ifdef CONFIG_TRACING
5767 +@@ -1160,9 +1636,10 @@ gs_change:
5768 2: mfence /* workaround */
5769 SWAPGS
5770 popfq_cfi
5771 @@ -23860,7 +24179,7 @@ index 03cd2a8..05a9aed 100644
5772
5773 _ASM_EXTABLE(gs_change,bad_gs)
5774 .section .fixup,"ax"
5775 -@@ -1431,9 +1915,10 @@ ENTRY(do_softirq_own_stack)
5776 +@@ -1190,9 +1667,10 @@ ENTRY(do_softirq_own_stack)
5777 CFI_DEF_CFA_REGISTER rsp
5778 CFI_ADJUST_CFA_OFFSET -8
5779 decl PER_CPU_VAR(irq_count)
5780 @@ -23871,8 +24190,8 @@ index 03cd2a8..05a9aed 100644
5781 +ENDPROC(do_softirq_own_stack)
5782
5783 #ifdef CONFIG_XEN
5784 - zeroentry xen_hypervisor_callback xen_do_hypervisor_callback
5785 -@@ -1471,7 +1956,7 @@ ENTRY(xen_do_hypervisor_callback) # do_hypervisor_callback(struct *pt_regs)
5786 + idtentry xen_hypervisor_callback xen_do_hypervisor_callback has_error_code=0
5787 +@@ -1230,7 +1708,7 @@ ENTRY(xen_do_hypervisor_callback) # do_hypervisor_callback(struct *pt_regs)
5788 decl PER_CPU_VAR(irq_count)
5789 jmp error_exit
5790 CFI_ENDPROC
5791 @@ -23881,7 +24200,7 @@ index 03cd2a8..05a9aed 100644
5792
5793 /*
5794 * Hypervisor uses this for application faults while it executes.
5795 -@@ -1530,7 +2015,7 @@ ENTRY(xen_failsafe_callback)
5796 +@@ -1289,7 +1767,7 @@ ENTRY(xen_failsafe_callback)
5797 SAVE_ALL
5798 jmp error_exit
5799 CFI_ENDPROC
5800 @@ -23890,7 +24209,7 @@ index 03cd2a8..05a9aed 100644
5801
5802 apicinterrupt3 HYPERVISOR_CALLBACK_VECTOR \
5803 xen_hvm_callback_vector xen_evtchn_do_upcall
5804 -@@ -1582,18 +2067,33 @@ ENTRY(paranoid_exit)
5805 +@@ -1336,18 +1814,33 @@ ENTRY(paranoid_exit)
5806 DEFAULT_FRAME
5807 DISABLE_INTERRUPTS(CLBR_NONE)
5808 TRACE_IRQS_OFF_DEBUG
5809 @@ -23926,7 +24245,7 @@ index 03cd2a8..05a9aed 100644
5810 jmp irq_return
5811 paranoid_userspace:
5812 GET_THREAD_INFO(%rcx)
5813 -@@ -1622,7 +2122,7 @@ paranoid_schedule:
5814 +@@ -1376,7 +1869,7 @@ paranoid_schedule:
5815 TRACE_IRQS_OFF
5816 jmp paranoid_userspace
5817 CFI_ENDPROC
5818 @@ -23935,7 +24254,7 @@ index 03cd2a8..05a9aed 100644
5819
5820 /*
5821 * Exception entry point. This expects an error code/orig_rax on the stack.
5822 -@@ -1649,12 +2149,23 @@ ENTRY(error_entry)
5823 +@@ -1403,12 +1896,23 @@ ENTRY(error_entry)
5824 movq_cfi r14, R14+8
5825 movq_cfi r15, R15+8
5826 xorl %ebx,%ebx
5827 @@ -23960,7 +24279,7 @@ index 03cd2a8..05a9aed 100644
5828 ret
5829
5830 /*
5831 -@@ -1681,7 +2192,7 @@ bstep_iret:
5832 +@@ -1435,7 +1939,7 @@ bstep_iret:
5833 movq %rcx,RIP+8(%rsp)
5834 jmp error_swapgs
5835 CFI_ENDPROC
5836 @@ -23969,7 +24288,7 @@ index 03cd2a8..05a9aed 100644
5837
5838
5839 /* ebx: no swapgs flag (1: don't need swapgs, 0: need it) */
5840 -@@ -1692,7 +2203,7 @@ ENTRY(error_exit)
5841 +@@ -1446,7 +1950,7 @@ ENTRY(error_exit)
5842 DISABLE_INTERRUPTS(CLBR_NONE)
5843 TRACE_IRQS_OFF
5844 GET_THREAD_INFO(%rcx)
5845 @@ -23978,7 +24297,7 @@ index 03cd2a8..05a9aed 100644
5846 jne retint_kernel
5847 LOCKDEP_SYS_EXIT_IRQ
5848 movl TI_flags(%rcx),%edx
5849 -@@ -1701,7 +2212,7 @@ ENTRY(error_exit)
5850 +@@ -1455,7 +1959,7 @@ ENTRY(error_exit)
5851 jnz retint_careful
5852 jmp retint_swapgs
5853 CFI_ENDPROC
5854 @@ -23987,7 +24306,7 @@ index 03cd2a8..05a9aed 100644
5855
5856 /*
5857 * Test if a given stack is an NMI stack or not.
5858 -@@ -1759,9 +2270,11 @@ ENTRY(nmi)
5859 +@@ -1513,9 +2017,11 @@ ENTRY(nmi)
5860 * If %cs was not the kernel segment, then the NMI triggered in user
5861 * space, which means it is definitely not nested.
5862 */
5863 @@ -24000,7 +24319,7 @@ index 03cd2a8..05a9aed 100644
5864 /*
5865 * Check the special variable on the stack to see if NMIs are
5866 * executing.
5867 -@@ -1795,8 +2308,7 @@ nested_nmi:
5868 +@@ -1549,8 +2055,7 @@ nested_nmi:
5869
5870 1:
5871 /* Set up the interrupted NMIs stack to jump to repeat_nmi */
5872 @@ -24010,7 +24329,7 @@ index 03cd2a8..05a9aed 100644
5873 CFI_ADJUST_CFA_OFFSET 1*8
5874 leaq -10*8(%rsp), %rdx
5875 pushq_cfi $__KERNEL_DS
5876 -@@ -1814,6 +2326,7 @@ nested_nmi_out:
5877 +@@ -1568,6 +2073,7 @@ nested_nmi_out:
5878 CFI_RESTORE rdx
5879
5880 /* No need to check faults here */
5881 @@ -24018,7 +24337,7 @@ index 03cd2a8..05a9aed 100644
5882 INTERRUPT_RETURN
5883
5884 CFI_RESTORE_STATE
5885 -@@ -1910,13 +2423,13 @@ end_repeat_nmi:
5886 +@@ -1664,13 +2170,13 @@ end_repeat_nmi:
5887 subq $ORIG_RAX-R15, %rsp
5888 CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
5889 /*
5890 @@ -24034,7 +24353,7 @@ index 03cd2a8..05a9aed 100644
5891 DEFAULT_FRAME 0
5892
5893 /*
5894 -@@ -1926,9 +2439,9 @@ end_repeat_nmi:
5895 +@@ -1680,9 +2186,9 @@ end_repeat_nmi:
5896 * NMI itself takes a page fault, the page fault that was preempted
5897 * will read the information from the NMI page fault and not the
5898 * origin fault. Save it off and restore it if it changes.
5899 @@ -24046,7 +24365,7 @@ index 03cd2a8..05a9aed 100644
5900
5901 /* paranoidentry do_nmi, 0; without TRACE_IRQS_OFF */
5902 movq %rsp,%rdi
5903 -@@ -1937,31 +2450,36 @@ end_repeat_nmi:
5904 +@@ -1691,29 +2197,34 @@ end_repeat_nmi:
5905
5906 /* Did the NMI take a page fault? Restore cr2 if it did */
5907 movq %cr2, %rcx
5908 @@ -24086,8 +24405,6 @@ index 03cd2a8..05a9aed 100644
5909 -END(ignore_sysret)
5910 +ENDPROC(ignore_sysret)
5911
5912 - /*
5913 - * End of kprobes section
5914 diff --git a/arch/x86/kernel/espfix_64.c b/arch/x86/kernel/espfix_64.c
5915 index 94d857f..bf1f0bf 100644
5916 --- a/arch/x86/kernel/espfix_64.c
5917 @@ -24102,9 +24419,18 @@ index 94d857f..bf1f0bf 100644
5918 unlock_done:
5919 mutex_unlock(&espfix_init_mutex);
5920 diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c
5921 -index 52819e8..b6d1dbd 100644
5922 +index cbc4a91..b38ee45 100644
5923 --- a/arch/x86/kernel/ftrace.c
5924 +++ b/arch/x86/kernel/ftrace.c
5925 +@@ -88,7 +88,7 @@ static unsigned long text_ip_addr(unsigned long ip)
5926 + * kernel identity mapping to modify code.
5927 + */
5928 + if (within(ip, (unsigned long)_text, (unsigned long)_etext))
5929 +- ip = (unsigned long)__va(__pa_symbol(ip));
5930 ++ ip = (unsigned long)__va(__pa_symbol(ktla_ktva(ip)));
5931 +
5932 + return ip;
5933 + }
5934 @@ -104,6 +104,8 @@ ftrace_modify_code_direct(unsigned long ip, unsigned const char *old_code,
5935 {
5936 unsigned char replaced[MCOUNT_INSN_SIZE];
5937 @@ -24123,16 +24449,7 @@ index 52819e8..b6d1dbd 100644
5938
5939 ftrace_update_func = ip;
5940 /* Make sure the breakpoints see the ftrace_update_func update */
5941 -@@ -306,7 +308,7 @@ static int ftrace_write(unsigned long ip, const char *val, int size)
5942 - * kernel identity mapping to modify code.
5943 - */
5944 - if (within(ip, (unsigned long)_text, (unsigned long)_etext))
5945 -- ip = (unsigned long)__va(__pa_symbol(ip));
5946 -+ ip = (unsigned long)__va(__pa_symbol(ktla_ktva(ip)));
5947 -
5948 - if (probe_kernel_write((void *)ip, val, size))
5949 - return -EPERM;
5950 -@@ -319,7 +321,7 @@ static int add_break(unsigned long ip, const char *old)
5951 +@@ -310,7 +312,7 @@ static int add_break(unsigned long ip, const char *old)
5952 unsigned char replaced[MCOUNT_INSN_SIZE];
5953 unsigned char brk = BREAKPOINT_INSTRUCTION;
5954
5955 @@ -24142,7 +24459,7 @@ index 52819e8..b6d1dbd 100644
5956
5957 /* Make sure it is what we expect it to be */
5958 diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
5959 -index 068054f..c248bcd 100644
5960 +index eda1a86..8f6df48 100644
5961 --- a/arch/x86/kernel/head64.c
5962 +++ b/arch/x86/kernel/head64.c
5963 @@ -67,12 +67,12 @@ again:
5964 @@ -24187,7 +24504,7 @@ index 068054f..c248bcd 100644
5965 pmd = (physaddr & PMD_MASK) + early_pmd_flags;
5966 pmd_p[pmd_index(address)] = pmd;
5967 @@ -175,7 +175,6 @@ asmlinkage __visible void __init x86_64_start_kernel(char * real_mode_data)
5968 - if (console_loglevel == 10)
5969 + if (console_loglevel >= CONSOLE_LOGLEVEL_DEBUG)
5970 early_printk("Kernel alive\n");
5971
5972 - clear_page(init_level4_pgt);
5973 @@ -24922,7 +25239,7 @@ index d5dd808..b6432cf 100644
5974
5975 /*
5976 diff --git a/arch/x86/kernel/i8259.c b/arch/x86/kernel/i8259.c
5977 -index 2e977b5..5f2c273 100644
5978 +index 8af8171..f8c1169 100644
5979 --- a/arch/x86/kernel/i8259.c
5980 +++ b/arch/x86/kernel/i8259.c
5981 @@ -110,7 +110,7 @@ static int i8259A_irq_pending(unsigned int irq)
5982 @@ -24943,7 +25260,7 @@ index 2e977b5..5f2c273 100644
5983 /*
5984 * Theoretically we do not have to handle this IRQ,
5985 * but in Linux this does not cause problems and is
5986 -@@ -332,14 +332,16 @@ static void init_8259A(int auto_eoi)
5987 +@@ -350,14 +350,16 @@ static void init_8259A(int auto_eoi)
5988 /* (slave's support for AEOI in flat mode is to be investigated) */
5989 outb_pic(SLAVE_ICW4_DEFAULT, PIC_SLAVE_IMR);
5990
5991 @@ -25023,7 +25340,7 @@ index 4ddaf66..49d5c18 100644
5992 regs->flags = (regs->flags & ~X86_EFLAGS_IOPL) | (level << 12);
5993 t->iopl = level << 12;
5994 diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
5995 -index 11ccfb0..ec1e46f 100644
5996 +index 922d285..6d20692 100644
5997 --- a/arch/x86/kernel/irq.c
5998 +++ b/arch/x86/kernel/irq.c
5999 @@ -22,7 +22,7 @@
6000 @@ -25355,10 +25672,10 @@ index 7ec1d5f..5a7d130 100644
6001 }
6002
6003 diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c
6004 -index 61b17dc..784bfe9 100644
6005 +index 67e6d19..731ed28 100644
6006 --- a/arch/x86/kernel/kprobes/core.c
6007 +++ b/arch/x86/kernel/kprobes/core.c
6008 -@@ -119,9 +119,12 @@ static void __kprobes __synthesize_relative_insn(void *from, void *to, u8 op)
6009 +@@ -120,9 +120,12 @@ __synthesize_relative_insn(void *from, void *to, u8 op)
6010 s32 raddr;
6011 } __packed *insn;
6012
6013 @@ -25372,7 +25689,7 @@ index 61b17dc..784bfe9 100644
6014 }
6015
6016 /* Insert a jump instruction at address 'from', which jumps to address 'to'.*/
6017 -@@ -164,7 +167,7 @@ int __kprobes can_boost(kprobe_opcode_t *opcodes)
6018 +@@ -168,7 +171,7 @@ int can_boost(kprobe_opcode_t *opcodes)
6019 kprobe_opcode_t opcode;
6020 kprobe_opcode_t *orig_opcodes = opcodes;
6021
6022 @@ -25381,7 +25698,7 @@ index 61b17dc..784bfe9 100644
6023 return 0; /* Page fault may occur on this address. */
6024
6025 retry:
6026 -@@ -238,9 +241,9 @@ __recover_probed_insn(kprobe_opcode_t *buf, unsigned long addr)
6027 +@@ -242,9 +245,9 @@ __recover_probed_insn(kprobe_opcode_t *buf, unsigned long addr)
6028 * for the first byte, we can recover the original instruction
6029 * from it and kp->opcode.
6030 */
6031 @@ -25393,7 +25710,7 @@ index 61b17dc..784bfe9 100644
6032 }
6033
6034 /*
6035 -@@ -332,7 +335,9 @@ int __kprobes __copy_instruction(u8 *dest, u8 *src)
6036 +@@ -336,7 +339,9 @@ int __copy_instruction(u8 *dest, u8 *src)
6037 /* Another subsystem puts a breakpoint, failed to recover */
6038 if (insn.opcode.bytes[0] == BREAKPOINT_INSTRUCTION)
6039 return 0;
6040 @@ -25403,7 +25720,7 @@ index 61b17dc..784bfe9 100644
6041
6042 #ifdef CONFIG_X86_64
6043 if (insn_rip_relative(&insn)) {
6044 -@@ -359,7 +364,9 @@ int __kprobes __copy_instruction(u8 *dest, u8 *src)
6045 +@@ -363,7 +368,9 @@ int __copy_instruction(u8 *dest, u8 *src)
6046 return 0;
6047 }
6048 disp = (u8 *) dest + insn_offset_displacement(&insn);
6049 @@ -25413,7 +25730,7 @@ index 61b17dc..784bfe9 100644
6050 }
6051 #endif
6052 return insn.length;
6053 -@@ -498,7 +505,7 @@ setup_singlestep(struct kprobe *p, struct pt_regs *regs, struct kprobe_ctlblk *k
6054 +@@ -505,7 +512,7 @@ static void setup_singlestep(struct kprobe *p, struct pt_regs *regs,
6055 * nor set current_kprobe, because it doesn't use single
6056 * stepping.
6057 */
6058 @@ -25422,7 +25739,7 @@ index 61b17dc..784bfe9 100644
6059 preempt_enable_no_resched();
6060 return;
6061 }
6062 -@@ -515,9 +522,9 @@ setup_singlestep(struct kprobe *p, struct pt_regs *regs, struct kprobe_ctlblk *k
6063 +@@ -522,9 +529,9 @@ static void setup_singlestep(struct kprobe *p, struct pt_regs *regs,
6064 regs->flags &= ~X86_EFLAGS_IF;
6065 /* single step inline if the instruction is an int3 */
6066 if (p->opcode == BREAKPOINT_INSTRUCTION)
6067 @@ -25432,9 +25749,18 @@ index 61b17dc..784bfe9 100644
6068 - regs->ip = (unsigned long)p->ainsn.insn;
6069 + regs->ip = ktva_ktla((unsigned long)p->ainsn.insn);
6070 }
6071 + NOKPROBE_SYMBOL(setup_singlestep);
6072
6073 - /*
6074 -@@ -596,7 +603,7 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
6075 +@@ -574,7 +581,7 @@ int kprobe_int3_handler(struct pt_regs *regs)
6076 + struct kprobe *p;
6077 + struct kprobe_ctlblk *kcb;
6078 +
6079 +- if (user_mode_vm(regs))
6080 ++ if (user_mode(regs))
6081 + return 0;
6082 +
6083 + addr = (kprobe_opcode_t *)(regs->ip - sizeof(kprobe_opcode_t));
6084 +@@ -609,7 +616,7 @@ int kprobe_int3_handler(struct pt_regs *regs)
6085 setup_singlestep(p, regs, kcb, 0);
6086 return 1;
6087 }
6088 @@ -25443,7 +25769,7 @@ index 61b17dc..784bfe9 100644
6089 /*
6090 * The breakpoint instruction was removed right
6091 * after we hit it. Another cpu has removed
6092 -@@ -642,6 +649,9 @@ static void __used __kprobes kretprobe_trampoline_holder(void)
6093 +@@ -656,6 +663,9 @@ static void __used kretprobe_trampoline_holder(void)
6094 " movq %rax, 152(%rsp)\n"
6095 RESTORE_REGS_STRING
6096 " popfq\n"
6097 @@ -25453,8 +25779,8 @@ index 61b17dc..784bfe9 100644
6098 #else
6099 " pushf\n"
6100 SAVE_REGS_STRING
6101 -@@ -779,7 +789,7 @@ static void __kprobes
6102 - resume_execution(struct kprobe *p, struct pt_regs *regs, struct kprobe_ctlblk *kcb)
6103 +@@ -796,7 +806,7 @@ static void resume_execution(struct kprobe *p, struct pt_regs *regs,
6104 + struct kprobe_ctlblk *kcb)
6105 {
6106 unsigned long *tos = stack_addr(regs);
6107 - unsigned long copy_ip = (unsigned long)p->ainsn.insn;
6108 @@ -25462,7 +25788,7 @@ index 61b17dc..784bfe9 100644
6109 unsigned long orig_ip = (unsigned long)p->addr;
6110 kprobe_opcode_t *insn = p->ainsn.insn;
6111
6112 -@@ -959,7 +969,7 @@ kprobe_exceptions_notify(struct notifier_block *self, unsigned long val, void *d
6113 +@@ -979,7 +989,7 @@ int kprobe_exceptions_notify(struct notifier_block *self, unsigned long val,
6114 struct die_args *args = data;
6115 int ret = NOTIFY_DONE;
6116
6117 @@ -25470,20 +25796,20 @@ index 61b17dc..784bfe9 100644
6118 + if (args->regs && user_mode(args->regs))
6119 return ret;
6120
6121 - switch (val) {
6122 + if (val == DIE_GPF) {
6123 diff --git a/arch/x86/kernel/kprobes/opt.c b/arch/x86/kernel/kprobes/opt.c
6124 -index 898160b..758cde8 100644
6125 +index f304773..551e63c 100644
6126 --- a/arch/x86/kernel/kprobes/opt.c
6127 +++ b/arch/x86/kernel/kprobes/opt.c
6128 @@ -79,6 +79,7 @@ found:
6129 /* Insert a move instruction which sets a pointer to eax/rdi (1st arg). */
6130 - static void __kprobes synthesize_set_arg1(kprobe_opcode_t *addr, unsigned long val)
6131 + static void synthesize_set_arg1(kprobe_opcode_t *addr, unsigned long val)
6132 {
6133 + pax_open_kernel();
6134 #ifdef CONFIG_X86_64
6135 *addr++ = 0x48;
6136 *addr++ = 0xbf;
6137 -@@ -86,6 +87,7 @@ static void __kprobes synthesize_set_arg1(kprobe_opcode_t *addr, unsigned long v
6138 +@@ -86,6 +87,7 @@ static void synthesize_set_arg1(kprobe_opcode_t *addr, unsigned long val)
6139 *addr++ = 0xb8;
6140 #endif
6141 *(unsigned long *)addr = val;
6142 @@ -25491,7 +25817,7 @@ index 898160b..758cde8 100644
6143 }
6144
6145 asm (
6146 -@@ -335,7 +337,7 @@ int __kprobes arch_prepare_optimized_kprobe(struct optimized_kprobe *op)
6147 +@@ -337,7 +339,7 @@ int arch_prepare_optimized_kprobe(struct optimized_kprobe *op)
6148 * Verify if the address gap is in 2GB range, because this uses
6149 * a relative jump.
6150 */
6151 @@ -25500,7 +25826,7 @@ index 898160b..758cde8 100644
6152 if (abs(rel) > 0x7fffffff)
6153 return -ERANGE;
6154
6155 -@@ -350,16 +352,18 @@ int __kprobes arch_prepare_optimized_kprobe(struct optimized_kprobe *op)
6156 +@@ -352,16 +354,18 @@ int arch_prepare_optimized_kprobe(struct optimized_kprobe *op)
6157 op->optinsn.size = ret;
6158
6159 /* Copy arch-dep-instance from template */
6160 @@ -25522,7 +25848,7 @@ index 898160b..758cde8 100644
6161 (u8 *)op->kp.addr + op->optinsn.size);
6162
6163 flush_icache_range((unsigned long) buf,
6164 -@@ -384,7 +388,7 @@ void __kprobes arch_optimize_kprobes(struct list_head *oplist)
6165 +@@ -386,7 +390,7 @@ void arch_optimize_kprobes(struct list_head *oplist)
6166 WARN_ON(kprobe_disabled(&op->kp));
6167
6168 /* Backup instructions which will be replaced by jump address */
6169 @@ -25531,7 +25857,7 @@ index 898160b..758cde8 100644
6170 RELATIVE_ADDR_SIZE);
6171
6172 insn_buf[0] = RELATIVEJUMP_OPCODE;
6173 -@@ -433,7 +437,7 @@ setup_detour_execution(struct kprobe *p, struct pt_regs *regs, int reenter)
6174 +@@ -434,7 +438,7 @@ int setup_detour_execution(struct kprobe *p, struct pt_regs *regs, int reenter)
6175 /* This kprobe is really able to run optimized path. */
6176 op = container_of(p, struct optimized_kprobe, kp);
6177 /* Detour through copied instructions */
6178 @@ -25652,6 +25978,92 @@ index 1667b1d..16492c5 100644
6179
6180 relocate_kernel_ptr = control_page;
6181 page_list[PA_CONTROL_PAGE] = __pa(control_page);
6182 +diff --git a/arch/x86/kernel/mcount_64.S b/arch/x86/kernel/mcount_64.S
6183 +index c050a01..5774072 100644
6184 +--- a/arch/x86/kernel/mcount_64.S
6185 ++++ b/arch/x86/kernel/mcount_64.S
6186 +@@ -7,7 +7,7 @@
6187 + #include <linux/linkage.h>
6188 + #include <asm/ptrace.h>
6189 + #include <asm/ftrace.h>
6190 +-
6191 ++#include <asm/alternative-asm.h>
6192 +
6193 + .code64
6194 + .section .entry.text, "ax"
6195 +@@ -24,8 +24,9 @@
6196 + #ifdef CONFIG_DYNAMIC_FTRACE
6197 +
6198 + ENTRY(function_hook)
6199 ++ pax_force_retaddr
6200 + retq
6201 +-END(function_hook)
6202 ++ENDPROC(function_hook)
6203 +
6204 + /* skip is set if stack has been adjusted */
6205 + .macro ftrace_caller_setup skip=0
6206 +@@ -66,8 +67,9 @@ GLOBAL(ftrace_graph_call)
6207 + #endif
6208 +
6209 + GLOBAL(ftrace_stub)
6210 ++ pax_force_retaddr
6211 + retq
6212 +-END(ftrace_caller)
6213 ++ENDPROC(ftrace_caller)
6214 +
6215 + ENTRY(ftrace_regs_caller)
6216 + /* Save the current flags before compare (in SS location)*/
6217 +@@ -135,7 +137,7 @@ ftrace_restore_flags:
6218 + popfq
6219 + jmp ftrace_stub
6220 +
6221 +-END(ftrace_regs_caller)
6222 ++ENDPROC(ftrace_regs_caller)
6223 +
6224 +
6225 + #else /* ! CONFIG_DYNAMIC_FTRACE */
6226 +@@ -156,6 +158,7 @@ ENTRY(function_hook)
6227 + #endif
6228 +
6229 + GLOBAL(ftrace_stub)
6230 ++ pax_force_retaddr
6231 + retq
6232 +
6233 + trace:
6234 +@@ -169,12 +172,13 @@ trace:
6235 + #endif
6236 + subq $MCOUNT_INSN_SIZE, %rdi
6237 +
6238 ++ pax_force_fptr ftrace_trace_function
6239 + call *ftrace_trace_function
6240 +
6241 + MCOUNT_RESTORE_FRAME
6242 +
6243 + jmp ftrace_stub
6244 +-END(function_hook)
6245 ++ENDPROC(function_hook)
6246 + #endif /* CONFIG_DYNAMIC_FTRACE */
6247 + #endif /* CONFIG_FUNCTION_TRACER */
6248 +
6249 +@@ -196,8 +200,9 @@ ENTRY(ftrace_graph_caller)
6250 +
6251 + MCOUNT_RESTORE_FRAME
6252 +
6253 ++ pax_force_retaddr
6254 + retq
6255 +-END(ftrace_graph_caller)
6256 ++ENDPROC(ftrace_graph_caller)
6257 +
6258 + GLOBAL(return_to_handler)
6259 + subq $24, %rsp
6260 +@@ -213,5 +218,7 @@ GLOBAL(return_to_handler)
6261 + movq 8(%rsp), %rdx
6262 + movq (%rsp), %rax
6263 + addq $24, %rsp
6264 ++ pax_force_fptr %rdi
6265 + jmp *%rdi
6266 ++ENDPROC(return_to_handler)
6267 + #endif
6268 diff --git a/arch/x86/kernel/module.c b/arch/x86/kernel/module.c
6269 index e69f988..da078ea 100644
6270 --- a/arch/x86/kernel/module.c
6271 @@ -25837,7 +26249,7 @@ index c9603ac..9f88728 100644
6272 };
6273
6274 diff --git a/arch/x86/kernel/nmi.c b/arch/x86/kernel/nmi.c
6275 -index b4872b9..5bf0684 100644
6276 +index c3e985d..110a36a 100644
6277 --- a/arch/x86/kernel/nmi.c
6278 +++ b/arch/x86/kernel/nmi.c
6279 @@ -98,16 +98,16 @@ fs_initcall(nmi_warning_debugfs);
6280 @@ -25859,8 +26271,8 @@ index b4872b9..5bf0684 100644
6281 + n->action->handler, whole_msecs, decimal_msecs);
6282 }
6283
6284 - static int __kprobes nmi_handle(unsigned int type, struct pt_regs *regs, bool b2b)
6285 -@@ -134,11 +134,11 @@ static int __kprobes nmi_handle(unsigned int type, struct pt_regs *regs, bool b2
6286 + static int nmi_handle(unsigned int type, struct pt_regs *regs, bool b2b)
6287 +@@ -134,11 +134,11 @@ static int nmi_handle(unsigned int type, struct pt_regs *regs, bool b2b)
6288 delta = sched_clock() - delta;
6289 trace_nmi_handler(a->handler, (int)delta, thishandled);
6290
6291 @@ -25875,16 +26287,16 @@ index b4872b9..5bf0684 100644
6292 }
6293
6294 rcu_read_unlock();
6295 -@@ -147,7 +147,7 @@ static int __kprobes nmi_handle(unsigned int type, struct pt_regs *regs, bool b2
6296 - return handled;
6297 +@@ -148,7 +148,7 @@ static int nmi_handle(unsigned int type, struct pt_regs *regs, bool b2b)
6298 }
6299 + NOKPROBE_SYMBOL(nmi_handle);
6300
6301 -int __register_nmi_handler(unsigned int type, struct nmiaction *action)
6302 +int __register_nmi_handler(unsigned int type, const struct nmiaction *action)
6303 {
6304 struct nmi_desc *desc = nmi_to_desc(type);
6305 unsigned long flags;
6306 -@@ -155,7 +155,8 @@ int __register_nmi_handler(unsigned int type, struct nmiaction *action)
6307 +@@ -156,7 +156,8 @@ int __register_nmi_handler(unsigned int type, struct nmiaction *action)
6308 if (!action->handler)
6309 return -EINVAL;
6310
6311 @@ -25894,7 +26306,7 @@ index b4872b9..5bf0684 100644
6312
6313 spin_lock_irqsave(&desc->lock, flags);
6314
6315 -@@ -173,9 +174,9 @@ int __register_nmi_handler(unsigned int type, struct nmiaction *action)
6316 +@@ -174,9 +175,9 @@ int __register_nmi_handler(unsigned int type, struct nmiaction *action)
6317 * event confuses some handlers (kdump uses this flag)
6318 */
6319 if (action->flags & NMI_FLAG_FIRST)
6320 @@ -25906,7 +26318,7 @@ index b4872b9..5bf0684 100644
6321
6322 spin_unlock_irqrestore(&desc->lock, flags);
6323 return 0;
6324 -@@ -198,7 +199,7 @@ void unregister_nmi_handler(unsigned int type, const char *name)
6325 +@@ -199,7 +200,7 @@ void unregister_nmi_handler(unsigned int type, const char *name)
6326 if (!strcmp(n->name, name)) {
6327 WARN(in_nmi(),
6328 "Trying to free NMI (%s) from NMI context!\n", n->name);
6329 @@ -25915,8 +26327,8 @@ index b4872b9..5bf0684 100644
6330 break;
6331 }
6332 }
6333 -@@ -523,6 +524,17 @@ static inline void nmi_nesting_postprocess(void)
6334 - dotraplinkage notrace __kprobes void
6335 +@@ -528,6 +529,17 @@ static inline void nmi_nesting_postprocess(void)
6336 + dotraplinkage notrace void
6337 do_nmi(struct pt_regs *regs, long error_code)
6338 {
6339 +
6340 @@ -25969,10 +26381,10 @@ index bbb6c73..24a58ef 100644
6341 .lock_spinning = __PV_IS_CALLEE_SAVE(paravirt_nop),
6342 .unlock_kick = paravirt_nop,
6343 diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
6344 -index 1b10af8..45bfbec 100644
6345 +index 548d25f..f8fb99c 100644
6346 --- a/arch/x86/kernel/paravirt.c
6347 +++ b/arch/x86/kernel/paravirt.c
6348 -@@ -55,6 +55,9 @@ u64 _paravirt_ident_64(u64 x)
6349 +@@ -56,6 +56,9 @@ u64 _paravirt_ident_64(u64 x)
6350 {
6351 return x;
6352 }
6353 @@ -25982,7 +26394,7 @@ index 1b10af8..45bfbec 100644
6354
6355 void __init default_banner(void)
6356 {
6357 -@@ -141,16 +144,20 @@ unsigned paravirt_patch_default(u8 type, u16 clobbers, void *insnbuf,
6358 +@@ -142,16 +145,20 @@ unsigned paravirt_patch_default(u8 type, u16 clobbers, void *insnbuf,
6359
6360 if (opfunc == NULL)
6361 /* If there's no function, patch it with a ud2a (BUG) */
6362 @@ -26007,7 +26419,7 @@ index 1b10af8..45bfbec 100644
6363
6364 else if (type == PARAVIRT_PATCH(pv_cpu_ops.iret) ||
6365 type == PARAVIRT_PATCH(pv_cpu_ops.irq_enable_sysexit) ||
6366 -@@ -175,7 +182,7 @@ unsigned paravirt_patch_insns(void *insnbuf, unsigned len,
6367 +@@ -176,7 +183,7 @@ unsigned paravirt_patch_insns(void *insnbuf, unsigned len,
6368 if (insn_len > len || start == NULL)
6369 insn_len = len;
6370 else
6371 @@ -26016,7 +26428,7 @@ index 1b10af8..45bfbec 100644
6372
6373 return insn_len;
6374 }
6375 -@@ -299,7 +306,7 @@ enum paravirt_lazy_mode paravirt_get_lazy_mode(void)
6376 +@@ -300,7 +307,7 @@ enum paravirt_lazy_mode paravirt_get_lazy_mode(void)
6377 return this_cpu_read(paravirt_lazy_mode);
6378 }
6379
6380 @@ -26025,7 +26437,7 @@ index 1b10af8..45bfbec 100644
6381 .name = "bare hardware",
6382 .paravirt_enabled = 0,
6383 .kernel_rpl = 0,
6384 -@@ -310,16 +317,16 @@ struct pv_info pv_info = {
6385 +@@ -311,16 +318,16 @@ struct pv_info pv_info = {
6386 #endif
6387 };
6388
6389 @@ -26045,7 +26457,7 @@ index 1b10af8..45bfbec 100644
6390 .save_fl = __PV_IS_CALLEE_SAVE(native_save_fl),
6391 .restore_fl = __PV_IS_CALLEE_SAVE(native_restore_fl),
6392 .irq_disable = __PV_IS_CALLEE_SAVE(native_irq_disable),
6393 -@@ -331,7 +338,7 @@ __visible struct pv_irq_ops pv_irq_ops = {
6394 +@@ -332,7 +339,7 @@ __visible struct pv_irq_ops pv_irq_ops = {
6395 #endif
6396 };
6397
6398 @@ -26054,9 +26466,9 @@ index 1b10af8..45bfbec 100644
6399 .cpuid = native_cpuid,
6400 .get_debugreg = native_get_debugreg,
6401 .set_debugreg = native_set_debugreg,
6402 -@@ -389,21 +396,26 @@ __visible struct pv_cpu_ops pv_cpu_ops = {
6403 - .end_context_switch = paravirt_nop,
6404 - };
6405 +@@ -395,21 +402,26 @@ NOKPROBE_SYMBOL(native_get_debugreg);
6406 + NOKPROBE_SYMBOL(native_set_debugreg);
6407 + NOKPROBE_SYMBOL(native_load_idt);
6408
6409 -struct pv_apic_ops pv_apic_ops = {
6410 +struct pv_apic_ops pv_apic_ops __read_only= {
6411 @@ -26084,7 +26496,7 @@ index 1b10af8..45bfbec 100644
6412
6413 .read_cr2 = native_read_cr2,
6414 .write_cr2 = native_write_cr2,
6415 -@@ -453,6 +465,7 @@ struct pv_mmu_ops pv_mmu_ops = {
6416 +@@ -459,6 +471,7 @@ struct pv_mmu_ops pv_mmu_ops = {
6417 .make_pud = PTE_IDENT,
6418
6419 .set_pgd = native_set_pgd,
6420 @@ -26092,7 +26504,7 @@ index 1b10af8..45bfbec 100644
6421 #endif
6422 #endif /* PAGETABLE_LEVELS >= 3 */
6423
6424 -@@ -473,6 +486,12 @@ struct pv_mmu_ops pv_mmu_ops = {
6425 +@@ -479,6 +492,12 @@ struct pv_mmu_ops pv_mmu_ops = {
6426 },
6427
6428 .set_fixmap = native_set_fixmap,
6429 @@ -26132,18 +26544,18 @@ index 35ccf75..7a15747 100644
6430 #define DEBUG 1
6431
6432 diff --git a/arch/x86/kernel/pci-swiotlb.c b/arch/x86/kernel/pci-swiotlb.c
6433 -index 6c483ba..d10ce2f 100644
6434 +index 77dd0ad..9ec4723 100644
6435 --- a/arch/x86/kernel/pci-swiotlb.c
6436 +++ b/arch/x86/kernel/pci-swiotlb.c
6437 -@@ -32,7 +32,7 @@ static void x86_swiotlb_free_coherent(struct device *dev, size_t size,
6438 - void *vaddr, dma_addr_t dma_addr,
6439 +@@ -33,7 +33,7 @@ void x86_swiotlb_free_coherent(struct device *dev, size_t size,
6440 struct dma_attrs *attrs)
6441 {
6442 -- swiotlb_free_coherent(dev, size, vaddr, dma_addr);
6443 -+ swiotlb_free_coherent(dev, size, vaddr, dma_addr, attrs);
6444 + if (is_swiotlb_buffer(dma_to_phys(dev, dma_addr)))
6445 +- swiotlb_free_coherent(dev, size, vaddr, dma_addr);
6446 ++ swiotlb_free_coherent(dev, size, vaddr, dma_addr, attrs);
6447 + else
6448 + dma_generic_free_coherent(dev, size, vaddr, dma_addr, attrs);
6449 }
6450 -
6451 - static struct dma_map_ops swiotlb_dma_ops = {
6452 diff --git a/arch/x86/kernel/preempt.S b/arch/x86/kernel/preempt.S
6453 index ca7f0d5..8996469 100644
6454 --- a/arch/x86/kernel/preempt.S
6455 @@ -26388,7 +26800,7 @@ index 7bc86bb..0ea06e8 100644
6456 }
6457 -
6458 diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
6459 -index 898d077..4c458ff 100644
6460 +index ca5b02d..c0b2f6a 100644
6461 --- a/arch/x86/kernel/process_64.c
6462 +++ b/arch/x86/kernel/process_64.c
6463 @@ -158,10 +158,11 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
6464 @@ -26451,7 +26863,7 @@ index 898d077..4c458ff 100644
6465
6466 /*
6467 * Now maybe reload the debug registers and handle I/O bitmaps
6468 -@@ -442,12 +447,11 @@ unsigned long get_wchan(struct task_struct *p)
6469 +@@ -443,12 +448,11 @@ unsigned long get_wchan(struct task_struct *p)
6470 if (!p || p == current || p->state == TASK_RUNNING)
6471 return 0;
6472 stack = (unsigned long)task_stack_page(p);
6473 @@ -26772,7 +27184,7 @@ index 3fd2c69..a444264 100644
6474 identity_mapped:
6475 /* set return address to 0 if not preserving context */
6476 diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
6477 -index 09c76d2..7f33fc2 100644
6478 +index 78a0e62..5c2e510 100644
6479 --- a/arch/x86/kernel/setup.c
6480 +++ b/arch/x86/kernel/setup.c
6481 @@ -110,6 +110,7 @@
6482 @@ -26965,7 +27377,7 @@ index 5cdff03..80fa283 100644
6483 * Up to this point, the boot CPU has been using .init.data
6484 * area. Reload any changed state for the boot CPU.
6485 diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c
6486 -index 9e5de68..147c254 100644
6487 +index 2851d63..83bf567 100644
6488 --- a/arch/x86/kernel/signal.c
6489 +++ b/arch/x86/kernel/signal.c
6490 @@ -190,7 +190,7 @@ static unsigned long align_sigframe(unsigned long sp)
6491 @@ -26977,19 +27389,20 @@ index 9e5de68..147c254 100644
6492 #else /* !CONFIG_X86_32 */
6493 sp = round_down(sp, 16) - 8;
6494 #endif
6495 -@@ -298,9 +298,9 @@ __setup_frame(int sig, struct ksignal *ksig, sigset_t *set,
6496 +@@ -298,10 +298,9 @@ __setup_frame(int sig, struct ksignal *ksig, sigset_t *set,
6497 }
6498
6499 if (current->mm->context.vdso)
6500 -- restorer = VDSO32_SYMBOL(current->mm->context.vdso, sigreturn);
6501 -+ restorer = (void __force_user *)VDSO32_SYMBOL(current->mm->context.vdso, sigreturn);
6502 +- restorer = current->mm->context.vdso +
6503 +- selected_vdso32->sym___kernel_sigreturn;
6504 ++ restorer = (void __force_user *)(current->mm->context.vdso + selected_vdso32->sym___kernel_sigreturn);
6505 else
6506 - restorer = &frame->retcode;
6507 + restorer = (void __user *)&frame->retcode;
6508 if (ksig->ka.sa.sa_flags & SA_RESTORER)
6509 restorer = ksig->ka.sa.sa_restorer;
6510
6511 -@@ -314,7 +314,7 @@ __setup_frame(int sig, struct ksignal *ksig, sigset_t *set,
6512 +@@ -315,7 +314,7 @@ __setup_frame(int sig, struct ksignal *ksig, sigset_t *set,
6513 * reasons and because gdb uses it as a signature to notice
6514 * signal handler stack frames.
6515 */
6516 @@ -26998,19 +27411,20 @@ index 9e5de68..147c254 100644
6517
6518 if (err)
6519 return -EFAULT;
6520 -@@ -361,7 +361,10 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig,
6521 +@@ -362,8 +361,10 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig,
6522 save_altstack_ex(&frame->uc.uc_stack, regs->sp);
6523
6524 /* Set up to return from userspace. */
6525 -- restorer = VDSO32_SYMBOL(current->mm->context.vdso, rt_sigreturn);
6526 +- restorer = current->mm->context.vdso +
6527 +- selected_vdso32->sym___kernel_rt_sigreturn;
6528 + if (current->mm->context.vdso)
6529 -+ restorer = (void __force_user *)VDSO32_SYMBOL(current->mm->context.vdso, rt_sigreturn);
6530 ++ restorer = (void __force_user *)(current->mm->context.vdso + selected_vdso32->sym___kernel_rt_sigreturn);
6531 + else
6532 + restorer = (void __user *)&frame->retcode;
6533 if (ksig->ka.sa.sa_flags & SA_RESTORER)
6534 restorer = ksig->ka.sa.sa_restorer;
6535 put_user_ex(restorer, &frame->pretcode);
6536 -@@ -373,7 +376,7 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig,
6537 +@@ -375,7 +376,7 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig,
6538 * reasons and because gdb uses it as a signature to notice
6539 * signal handler stack frames.
6540 */
6541 @@ -27019,7 +27433,7 @@ index 9e5de68..147c254 100644
6542 } put_user_catch(err);
6543
6544 err |= copy_siginfo_to_user(&frame->info, &ksig->info);
6545 -@@ -609,7 +612,12 @@ setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs)
6546 +@@ -611,7 +612,12 @@ setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs)
6547 {
6548 int usig = signr_convert(ksig->sig);
6549 sigset_t *set = sigmask_to_save();
6550 @@ -27033,7 +27447,7 @@ index 9e5de68..147c254 100644
6551
6552 /* Set up the stack frame */
6553 if (is_ia32_frame()) {
6554 -@@ -620,7 +628,7 @@ setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs)
6555 +@@ -622,7 +628,7 @@ setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs)
6556 } else if (is_x32_frame()) {
6557 return x32_setup_rt_frame(ksig, cset, regs);
6558 } else {
6559 @@ -27578,10 +27992,10 @@ index 1c113db..287b42e 100644
6560 static int trace_irq_vector_refcount;
6561 static DEFINE_MUTEX(irq_vector_mutex);
6562 diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
6563 -index f73b5d4..0adcc9a 100644
6564 +index 0d0e922..0886373 100644
6565 --- a/arch/x86/kernel/traps.c
6566 +++ b/arch/x86/kernel/traps.c
6567 -@@ -66,7 +66,7 @@
6568 +@@ -67,7 +67,7 @@
6569 #include <asm/proto.h>
6570
6571 /* No need to be aligned, but done to keep all IDTs defined the same way. */
6572 @@ -27590,7 +28004,7 @@ index f73b5d4..0adcc9a 100644
6573 #else
6574 #include <asm/processor-flags.h>
6575 #include <asm/setup.h>
6576 -@@ -75,7 +75,7 @@ asmlinkage int system_call(void);
6577 +@@ -76,7 +76,7 @@ asmlinkage int system_call(void);
6578 #endif
6579
6580 /* Must be page-aligned because the real IDT is used in a fixmap. */
6581 @@ -27599,10 +28013,10 @@ index f73b5d4..0adcc9a 100644
6582
6583 DECLARE_BITMAP(used_vectors, NR_VECTORS);
6584 EXPORT_SYMBOL_GPL(used_vectors);
6585 -@@ -107,11 +107,11 @@ static inline void preempt_conditional_cli(struct pt_regs *regs)
6586 +@@ -108,11 +108,11 @@ static inline void preempt_conditional_cli(struct pt_regs *regs)
6587 }
6588
6589 - static int __kprobes
6590 + static nokprobe_inline int
6591 -do_trap_no_signal(struct task_struct *tsk, int trapnr, char *str,
6592 +do_trap_no_signal(struct task_struct *tsk, int trapnr, const char *str,
6593 struct pt_regs *regs, long error_code)
6594 @@ -27613,7 +28027,7 @@ index f73b5d4..0adcc9a 100644
6595 /*
6596 * Traps 0, 1, 3, 4, and 5 should be forwarded to vm86.
6597 * On nmi (interrupt 2), do_trap should not be called.
6598 -@@ -124,12 +124,24 @@ do_trap_no_signal(struct task_struct *tsk, int trapnr, char *str,
6599 +@@ -125,12 +125,24 @@ do_trap_no_signal(struct task_struct *tsk, int trapnr, char *str,
6600 return -1;
6601 }
6602 #endif
6603 @@ -27639,16 +28053,16 @@ index f73b5d4..0adcc9a 100644
6604 return 0;
6605 }
6606
6607 -@@ -137,7 +149,7 @@ do_trap_no_signal(struct task_struct *tsk, int trapnr, char *str,
6608 +@@ -169,7 +181,7 @@ static siginfo_t *fill_trap_info(struct pt_regs *regs, int signr, int trapnr,
6609 }
6610
6611 - static void __kprobes
6612 + static void
6613 -do_trap(int trapnr, int signr, char *str, struct pt_regs *regs,
6614 +do_trap(int trapnr, int signr, const char *str, struct pt_regs *regs,
6615 long error_code, siginfo_t *info)
6616 {
6617 struct task_struct *tsk = current;
6618 -@@ -161,7 +173,7 @@ do_trap(int trapnr, int signr, char *str, struct pt_regs *regs,
6619 +@@ -193,7 +205,7 @@ do_trap(int trapnr, int signr, char *str, struct pt_regs *regs,
6620 if (show_unhandled_signals && unhandled_signal(tsk, signr) &&
6621 printk_ratelimit()) {
6622 pr_info("%s[%d] trap %s ip:%lx sp:%lx error:%lx",
6623 @@ -27657,7 +28071,7 @@ index f73b5d4..0adcc9a 100644
6624 regs->ip, regs->sp, error_code);
6625 print_vma_addr(" in ", regs->ip);
6626 pr_cont("\n");
6627 -@@ -251,6 +263,11 @@ dotraplinkage void do_double_fault(struct pt_regs *regs, long error_code)
6628 +@@ -266,6 +278,11 @@ dotraplinkage void do_double_fault(struct pt_regs *regs, long error_code)
6629 tsk->thread.error_code = error_code;
6630 tsk->thread.trap_nr = X86_TRAP_DF;
6631
6632 @@ -27669,7 +28083,7 @@ index f73b5d4..0adcc9a 100644
6633 #ifdef CONFIG_DOUBLEFAULT
6634 df_debug(regs, error_code);
6635 #endif
6636 -@@ -273,7 +290,7 @@ do_general_protection(struct pt_regs *regs, long error_code)
6637 +@@ -288,7 +305,7 @@ do_general_protection(struct pt_regs *regs, long error_code)
6638 conditional_sti(regs);
6639
6640 #ifdef CONFIG_X86_32
6641 @@ -27678,7 +28092,7 @@ index f73b5d4..0adcc9a 100644
6642 local_irq_enable();
6643 handle_vm86_fault((struct kernel_vm86_regs *) regs, error_code);
6644 goto exit;
6645 -@@ -281,18 +298,42 @@ do_general_protection(struct pt_regs *regs, long error_code)
6646 +@@ -296,18 +313,42 @@ do_general_protection(struct pt_regs *regs, long error_code)
6647 #endif
6648
6649 tsk = current;
6650 @@ -27723,7 +28137,7 @@ index f73b5d4..0adcc9a 100644
6651 tsk->thread.error_code = error_code;
6652 tsk->thread.trap_nr = X86_TRAP_GP;
6653
6654 -@@ -453,7 +494,7 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code)
6655 +@@ -481,7 +522,7 @@ dotraplinkage void do_debug(struct pt_regs *regs, long error_code)
6656 /* It's safe to allow irq's after DR6 has been saved */
6657 preempt_conditional_sti(regs);
6658
6659 @@ -27732,7 +28146,7 @@ index f73b5d4..0adcc9a 100644
6660 handle_vm86_trap((struct kernel_vm86_regs *) regs, error_code,
6661 X86_TRAP_DB);
6662 preempt_conditional_cli(regs);
6663 -@@ -468,7 +509,7 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code)
6664 +@@ -496,7 +537,7 @@ dotraplinkage void do_debug(struct pt_regs *regs, long error_code)
6665 * We already checked v86 mode above, so we can check for kernel mode
6666 * by just checking the CPL of CS.
6667 */
6668 @@ -27741,7 +28155,7 @@ index f73b5d4..0adcc9a 100644
6669 tsk->thread.debugreg6 &= ~DR_STEP;
6670 set_tsk_thread_flag(tsk, TIF_SINGLESTEP);
6671 regs->flags &= ~X86_EFLAGS_TF;
6672 -@@ -500,7 +541,7 @@ void math_error(struct pt_regs *regs, int error_code, int trapnr)
6673 +@@ -529,7 +570,7 @@ static void math_error(struct pt_regs *regs, int error_code, int trapnr)
6674 return;
6675 conditional_sti(regs);
6676
6677 @@ -27764,10 +28178,10 @@ index ea03031..34a5cdda 100644
6678
6679 /*
6680 diff --git a/arch/x86/kernel/uprobes.c b/arch/x86/kernel/uprobes.c
6681 -index 2ed8459..7cf329f 100644
6682 +index 5d1cbfe..2a21feb 100644
6683 --- a/arch/x86/kernel/uprobes.c
6684 +++ b/arch/x86/kernel/uprobes.c
6685 -@@ -629,7 +629,7 @@ int arch_uprobe_exception_notify(struct notifier_block *self, unsigned long val,
6686 +@@ -845,7 +845,7 @@ int arch_uprobe_exception_notify(struct notifier_block *self, unsigned long val,
6687 int ret = NOTIFY_DONE;
6688
6689 /* We are only interested in userspace traps */
6690 @@ -27776,9 +28190,9 @@ index 2ed8459..7cf329f 100644
6691 return NOTIFY_DONE;
6692
6693 switch (val) {
6694 -@@ -719,7 +719,7 @@ arch_uretprobe_hijack_return_addr(unsigned long trampoline_vaddr, struct pt_regs
6695 +@@ -919,7 +919,7 @@ arch_uretprobe_hijack_return_addr(unsigned long trampoline_vaddr, struct pt_regs
6696
6697 - if (ncopied != rasize) {
6698 + if (nleft != rasize) {
6699 pr_err("uprobe: return address clobbered: pid=%d, %%sp=%#lx, "
6700 - "%%ip=%#lx\n", current->pid, regs->sp, regs->ip);
6701 + "%%ip=%#lx\n", task_pid_nr(current), regs->sp, regs->ip);
6702 @@ -28130,7 +28544,7 @@ index 49edf2d..c0d1362 100644
6703
6704 #ifdef CONFIG_SMP
6705 diff --git a/arch/x86/kernel/vsyscall_64.c b/arch/x86/kernel/vsyscall_64.c
6706 -index 8b3b3eb..9395aa9 100644
6707 +index ea5b570..960e4da 100644
6708 --- a/arch/x86/kernel/vsyscall_64.c
6709 +++ b/arch/x86/kernel/vsyscall_64.c
6710 @@ -54,15 +54,13 @@
6711 @@ -28160,18 +28574,18 @@ index 8b3b3eb..9395aa9 100644
6712 }
6713
6714 /*
6715 -@@ -332,10 +329,7 @@ void __init map_vsyscall(void)
6716 +@@ -331,10 +328,7 @@ void __init map_vsyscall(void)
6717 + extern char __vsyscall_page;
6718 unsigned long physaddr_vsyscall = __pa_symbol(&__vsyscall_page);
6719 - unsigned long physaddr_vvar_page = __pa_symbol(&__vvar_page);
6720
6721 -- __set_fixmap(VSYSCALL_FIRST_PAGE, physaddr_vsyscall,
6722 +- __set_fixmap(VSYSCALL_PAGE, physaddr_vsyscall,
6723 - vsyscall_mode == NATIVE
6724 - ? PAGE_KERNEL_VSYSCALL
6725 - : PAGE_KERNEL_VVAR);
6726 -+ __set_fixmap(VSYSCALL_FIRST_PAGE, physaddr_vsyscall, PAGE_KERNEL_VVAR);
6727 - BUILD_BUG_ON((unsigned long)__fix_to_virt(VSYSCALL_FIRST_PAGE) !=
6728 - (unsigned long)VSYSCALL_START);
6729 -
6730 ++ __set_fixmap(VSYSCALL_PAGE, physaddr_vsyscall, PAGE_KERNEL_VVAR);
6731 + BUILD_BUG_ON((unsigned long)__fix_to_virt(VSYSCALL_PAGE) !=
6732 + (unsigned long)VSYSCALL_ADDR);
6733 + }
6734 diff --git a/arch/x86/kernel/x8664_ksyms_64.c b/arch/x86/kernel/x8664_ksyms_64.c
6735 index 04068192..4d75aa6 100644
6736 --- a/arch/x86/kernel/x8664_ksyms_64.c
6737 @@ -28276,7 +28690,7 @@ index a4b451c..8dfe1ad 100644
6738 if ((unsigned long)buf % 64 || fx_only) {
6739 u64 init_bv = pcntxt_mask & ~XSTATE_FPSSE;
6740 diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
6741 -index f47a104..5ce59a8 100644
6742 +index 38a0afe..94421a9 100644
6743 --- a/arch/x86/kvm/cpuid.c
6744 +++ b/arch/x86/kvm/cpuid.c
6745 @@ -166,15 +166,20 @@ int kvm_vcpu_ioctl_set_cpuid2(struct kvm_vcpu *vcpu,
6746 @@ -28340,7 +28754,7 @@ index 0069118..c28ec0a 100644
6747 #define APIC_LVT_NUM 6
6748 /* 14 is the version for Xeon and Pentium 8.4.8*/
6749 diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h
6750 -index 123efd3..ad7726e 100644
6751 +index 4107765..d9eb358 100644
6752 --- a/arch/x86/kvm/paging_tmpl.h
6753 +++ b/arch/x86/kvm/paging_tmpl.h
6754 @@ -331,7 +331,7 @@ retry_walk:
6755 @@ -28353,10 +28767,10 @@ index 123efd3..ad7726e 100644
6756 goto error;
6757 walker->ptep_user[walker->level - 1] = ptep_user;
6758 diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
6759 -index 7f4f9c2..67b1db0 100644
6760 +index b5e994a..35b5866 100644
6761 --- a/arch/x86/kvm/svm.c
6762 +++ b/arch/x86/kvm/svm.c
6763 -@@ -3535,7 +3535,11 @@ static void reload_tss(struct kvm_vcpu *vcpu)
6764 +@@ -3541,7 +3541,11 @@ static void reload_tss(struct kvm_vcpu *vcpu)
6765 int cpu = raw_smp_processor_id();
6766
6767 struct svm_cpu_data *sd = per_cpu(svm_data, cpu);
6768 @@ -28368,7 +28782,7 @@ index 7f4f9c2..67b1db0 100644
6769 load_TR_desc();
6770 }
6771
6772 -@@ -3936,6 +3940,10 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu)
6773 +@@ -3942,6 +3946,10 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu)
6774 #endif
6775 #endif
6776
6777 @@ -28380,7 +28794,7 @@ index 7f4f9c2..67b1db0 100644
6778
6779 local_irq_disable();
6780 diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
6781 -index 138ceff..2e584f0 100644
6782 +index 801332e..eeff1cc 100644
6783 --- a/arch/x86/kvm/vmx.c
6784 +++ b/arch/x86/kvm/vmx.c
6785 @@ -1339,12 +1339,12 @@ static void vmcs_write64(unsigned long field, u64 value)
6786 @@ -28464,7 +28878,7 @@ index 138ceff..2e584f0 100644
6787
6788 if (nested)
6789 nested_vmx_setup_ctls_msrs();
6790 -@@ -4235,7 +4248,10 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx)
6791 +@@ -4221,7 +4234,10 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx)
6792
6793 vmcs_writel(HOST_CR0, read_cr0() & ~X86_CR0_TS); /* 22.2.3 */
6794 vmcs_writel(HOST_CR4, read_cr4()); /* 22.2.3, 22.2.5 */
6795 @@ -28475,7 +28889,7 @@ index 138ceff..2e584f0 100644
6796
6797 vmcs_write16(HOST_CS_SELECTOR, __KERNEL_CS); /* 22.2.4 */
6798 #ifdef CONFIG_X86_64
6799 -@@ -4257,7 +4273,7 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx)
6800 +@@ -4243,7 +4259,7 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx)
6801 vmcs_writel(HOST_IDTR_BASE, dt.address); /* 22.2.4 */
6802 vmx->host_idt_base = dt.address;
6803
6804 @@ -28484,7 +28898,7 @@ index 138ceff..2e584f0 100644
6805
6806 rdmsr(MSR_IA32_SYSENTER_CS, low32, high32);
6807 vmcs_write32(HOST_IA32_SYSENTER_CS, low32);
6808 -@@ -7333,6 +7349,12 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
6809 +@@ -7413,6 +7429,12 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
6810 "jmp 2f \n\t"
6811 "1: " __ex(ASM_VMX_VMRESUME) "\n\t"
6812 "2: "
6813 @@ -28497,7 +28911,7 @@ index 138ceff..2e584f0 100644
6814 /* Save guest registers, load host registers, keep flags */
6815 "mov %0, %c[wordsize](%%" _ASM_SP ") \n\t"
6816 "pop %0 \n\t"
6817 -@@ -7385,6 +7407,11 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
6818 +@@ -7465,6 +7487,11 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
6819 #endif
6820 [cr2]"i"(offsetof(struct vcpu_vmx, vcpu.arch.cr2)),
6821 [wordsize]"i"(sizeof(ulong))
6822 @@ -28509,7 +28923,7 @@ index 138ceff..2e584f0 100644
6823 : "cc", "memory"
6824 #ifdef CONFIG_X86_64
6825 , "rax", "rbx", "rdi", "rsi"
6826 -@@ -7398,7 +7425,7 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
6827 +@@ -7478,7 +7505,7 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
6828 if (debugctlmsr)
6829 update_debugctlmsr(debugctlmsr);
6830
6831 @@ -28518,7 +28932,7 @@ index 138ceff..2e584f0 100644
6832 /*
6833 * The sysexit path does not restore ds/es, so we must set them to
6834 * a reasonable value ourselves.
6835 -@@ -7407,8 +7434,18 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
6836 +@@ -7487,8 +7514,18 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
6837 * may be executed in interrupt context, which saves and restore segments
6838 * around it, nullifying its effect.
6839 */
6840 @@ -28540,10 +28954,10 @@ index 138ceff..2e584f0 100644
6841
6842 vcpu->arch.regs_avail = ~((1 << VCPU_REGS_RIP) | (1 << VCPU_REGS_RSP)
6843 diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
6844 -index 5521f7c..691b7a3 100644
6845 +index ef432f8..a630659 100644
6846 --- a/arch/x86/kvm/x86.c
6847 +++ b/arch/x86/kvm/x86.c
6848 -@@ -1822,8 +1822,8 @@ static int xen_hvm_config(struct kvm_vcpu *vcpu, u64 data)
6849 +@@ -1808,8 +1808,8 @@ static int xen_hvm_config(struct kvm_vcpu *vcpu, u64 data)
6850 {
6851 struct kvm *kvm = vcpu->kvm;
6852 int lm = is_long_mode(vcpu);
6853 @@ -28554,7 +28968,7 @@ index 5521f7c..691b7a3 100644
6854 u8 blob_size = lm ? kvm->arch.xen_hvm_config.blob_size_64
6855 : kvm->arch.xen_hvm_config.blob_size_32;
6856 u32 page_num = data & ~PAGE_MASK;
6857 -@@ -2738,6 +2738,8 @@ long kvm_arch_dev_ioctl(struct file *filp,
6858 +@@ -2729,6 +2729,8 @@ long kvm_arch_dev_ioctl(struct file *filp,
6859 if (n < msr_list.nmsrs)
6860 goto out;
6861 r = -EFAULT;
6862 @@ -28563,7 +28977,7 @@ index 5521f7c..691b7a3 100644
6863 if (copy_to_user(user_msr_list->indices, &msrs_to_save,
6864 num_msrs_to_save * sizeof(u32)))
6865 goto out;
6866 -@@ -5574,7 +5576,7 @@ static struct notifier_block pvclock_gtod_notifier = {
6867 +@@ -5567,7 +5569,7 @@ static struct notifier_block pvclock_gtod_notifier = {
6868 };
6869 #endif
6870
6871 @@ -30686,18 +31100,18 @@ index 5dff5f0..cadebf4 100644
6872 CFI_ENDPROC
6873 ENDPROC(call_rwsem_downgrade_wake)
6874 diff --git a/arch/x86/lib/thunk_64.S b/arch/x86/lib/thunk_64.S
6875 -index a63efd6..8149fbe 100644
6876 +index 92d9fea..b2762c8 100644
6877 --- a/arch/x86/lib/thunk_64.S
6878 +++ b/arch/x86/lib/thunk_64.S
6879 -@@ -8,6 +8,7 @@
6880 - #include <linux/linkage.h>
6881 +@@ -9,6 +9,7 @@
6882 #include <asm/dwarf2.h>
6883 #include <asm/calling.h>
6884 + #include <asm/asm.h>
6885 +#include <asm/alternative-asm.h>
6886
6887 /* rdi: arg1 ... normal C conventions. rax is saved/restored. */
6888 .macro THUNK name, func, put_ret_addr_in_rdi=0
6889 -@@ -15,11 +16,11 @@
6890 +@@ -16,11 +17,11 @@
6891 \name:
6892 CFI_STARTPROC
6893
6894 @@ -30712,7 +31126,7 @@ index a63efd6..8149fbe 100644
6895 .endif
6896
6897 call \func
6898 -@@ -38,8 +39,9 @@
6899 +@@ -40,9 +41,10 @@
6900
6901 /* SAVE_ARGS below is used only for the .cfi directives it contains. */
6902 CFI_STARTPROC
6903 @@ -30724,6 +31138,7 @@ index a63efd6..8149fbe 100644
6904 + pax_force_retaddr
6905 ret
6906 CFI_ENDPROC
6907 + _ASM_NOKPROBE(restore)
6908 diff --git a/arch/x86/lib/usercopy_32.c b/arch/x86/lib/usercopy_32.c
6909 index e2f5e21..4b22130 100644
6910 --- a/arch/x86/lib/usercopy_32.c
6911 @@ -31434,10 +31849,10 @@ index 903ec1e..c4166b2 100644
6912 }
6913
6914 diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
6915 -index 8e57229..31cce89 100644
6916 +index 3664279..c6a7830 100644
6917 --- a/arch/x86/mm/fault.c
6918 +++ b/arch/x86/mm/fault.c
6919 -@@ -14,11 +14,18 @@
6920 +@@ -14,12 +14,19 @@
6921 #include <linux/hugetlb.h> /* hstate_index_to_shift */
6922 #include <linux/prefetch.h> /* prefetchw */
6923 #include <linux/context_tracking.h> /* exception_enter(), ... */
6924 @@ -31447,7 +31862,8 @@ index 8e57229..31cce89 100644
6925 #include <asm/traps.h> /* dotraplinkage, ... */
6926 #include <asm/pgalloc.h> /* pgd_*(), ... */
6927 #include <asm/kmemcheck.h> /* kmemcheck_*(), ... */
6928 - #include <asm/fixmap.h> /* VSYSCALL_START */
6929 + #include <asm/fixmap.h> /* VSYSCALL_ADDR */
6930 + #include <asm/vsyscall.h> /* emulate_vsyscall */
6931 +#include <asm/tlbflush.h>
6932 +
6933 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
6934 @@ -31456,7 +31872,7 @@ index 8e57229..31cce89 100644
6935
6936 #define CREATE_TRACE_POINTS
6937 #include <asm/trace/exceptions.h>
6938 -@@ -59,7 +66,7 @@ static inline int __kprobes kprobes_fault(struct pt_regs *regs)
6939 +@@ -60,7 +67,7 @@ static nokprobe_inline int kprobes_fault(struct pt_regs *regs)
6940 int ret = 0;
6941
6942 /* kprobe_running() needs smp_processor_id() */
6943 @@ -31465,7 +31881,7 @@ index 8e57229..31cce89 100644
6944 preempt_disable();
6945 if (kprobe_running() && kprobe_fault_handler(regs, 14))
6946 ret = 1;
6947 -@@ -120,7 +127,10 @@ check_prefetch_opcode(struct pt_regs *regs, unsigned char *instr,
6948 +@@ -121,7 +128,10 @@ check_prefetch_opcode(struct pt_regs *regs, unsigned char *instr,
6949 return !instr_lo || (instr_lo>>1) == 1;
6950 case 0x00:
6951 /* Prefetch instruction is 0x0F0D or 0x0F18 */
6952 @@ -31477,7 +31893,7 @@ index 8e57229..31cce89 100644
6953 return 0;
6954
6955 *prefetch = (instr_lo == 0xF) &&
6956 -@@ -154,7 +164,10 @@ is_prefetch(struct pt_regs *regs, unsigned long error_code, unsigned long addr)
6957 +@@ -155,7 +165,10 @@ is_prefetch(struct pt_regs *regs, unsigned long error_code, unsigned long addr)
6958 while (instr < max_instr) {
6959 unsigned char opcode;
6960
6961 @@ -31489,7 +31905,7 @@ index 8e57229..31cce89 100644
6962 break;
6963
6964 instr++;
6965 -@@ -185,6 +198,34 @@ force_sig_info_fault(int si_signo, int si_code, unsigned long address,
6966 +@@ -186,6 +199,34 @@ force_sig_info_fault(int si_signo, int si_code, unsigned long address,
6967 force_sig_info(si_signo, &info, tsk);
6968 }
6969
6970 @@ -31524,7 +31940,7 @@ index 8e57229..31cce89 100644
6971 DEFINE_SPINLOCK(pgd_lock);
6972 LIST_HEAD(pgd_list);
6973
6974 -@@ -235,10 +276,27 @@ void vmalloc_sync_all(void)
6975 +@@ -236,10 +277,27 @@ void vmalloc_sync_all(void)
6976 for (address = VMALLOC_START & PMD_MASK;
6977 address >= TASK_SIZE && address < FIXADDR_TOP;
6978 address += PMD_SIZE) {
6979 @@ -31552,7 +31968,7 @@ index 8e57229..31cce89 100644
6980 spinlock_t *pgt_lock;
6981 pmd_t *ret;
6982
6983 -@@ -246,8 +304,14 @@ void vmalloc_sync_all(void)
6984 +@@ -247,8 +305,14 @@ void vmalloc_sync_all(void)
6985 pgt_lock = &pgd_page_get_mm(page)->page_table_lock;
6986
6987 spin_lock(pgt_lock);
6988 @@ -31568,7 +31984,7 @@ index 8e57229..31cce89 100644
6989
6990 if (!ret)
6991 break;
6992 -@@ -281,6 +345,12 @@ static noinline __kprobes int vmalloc_fault(unsigned long address)
6993 +@@ -282,6 +346,12 @@ static noinline int vmalloc_fault(unsigned long address)
6994 * an interrupt in the middle of a task switch..
6995 */
6996 pgd_paddr = read_cr3();
6997 @@ -31581,7 +31997,7 @@ index 8e57229..31cce89 100644
6998 pmd_k = vmalloc_sync_one(__va(pgd_paddr), address);
6999 if (!pmd_k)
7000 return -1;
7001 -@@ -376,11 +446,25 @@ static noinline __kprobes int vmalloc_fault(unsigned long address)
7002 +@@ -378,11 +448,25 @@ static noinline int vmalloc_fault(unsigned long address)
7003 * happen within a race in page table update. In the later
7004 * case just flush:
7005 */
7006 @@ -31608,7 +32024,7 @@ index 8e57229..31cce89 100644
7007 if (pgd_none(*pgd)) {
7008 set_pgd(pgd, *pgd_ref);
7009 arch_flush_lazy_mmu_mode();
7010 -@@ -546,7 +630,7 @@ static int is_errata93(struct pt_regs *regs, unsigned long address)
7011 +@@ -549,7 +633,7 @@ static int is_errata93(struct pt_regs *regs, unsigned long address)
7012 static int is_errata100(struct pt_regs *regs, unsigned long address)
7013 {
7014 #ifdef CONFIG_X86_64
7015 @@ -31617,7 +32033,7 @@ index 8e57229..31cce89 100644
7016 return 1;
7017 #endif
7018 return 0;
7019 -@@ -573,7 +657,7 @@ static int is_f00f_bug(struct pt_regs *regs, unsigned long address)
7020 +@@ -576,7 +660,7 @@ static int is_f00f_bug(struct pt_regs *regs, unsigned long address)
7021 }
7022
7023 static const char nx_warning[] = KERN_CRIT
7024 @@ -31626,7 +32042,7 @@ index 8e57229..31cce89 100644
7025
7026 static void
7027 show_fault_oops(struct pt_regs *regs, unsigned long error_code,
7028 -@@ -582,7 +666,7 @@ show_fault_oops(struct pt_regs *regs, unsigned long error_code,
7029 +@@ -585,7 +669,7 @@ show_fault_oops(struct pt_regs *regs, unsigned long error_code,
7030 if (!oops_may_print())
7031 return;
7032
7033 @@ -31635,7 +32051,7 @@ index 8e57229..31cce89 100644
7034 unsigned int level;
7035 pgd_t *pgd;
7036 pte_t *pte;
7037 -@@ -593,9 +677,21 @@ show_fault_oops(struct pt_regs *regs, unsigned long error_code,
7038 +@@ -596,9 +680,21 @@ show_fault_oops(struct pt_regs *regs, unsigned long error_code,
7039 pte = lookup_address_in_pgd(pgd, address, &level);
7040
7041 if (pte && pte_present(*pte) && !pte_exec(*pte))
7042 @@ -31658,7 +32074,7 @@ index 8e57229..31cce89 100644
7043 printk(KERN_ALERT "BUG: unable to handle kernel ");
7044 if (address < PAGE_SIZE)
7045 printk(KERN_CONT "NULL pointer dereference");
7046 -@@ -776,6 +872,22 @@ __bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code,
7047 +@@ -779,6 +875,22 @@ __bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code,
7048 return;
7049 }
7050 #endif
7051 @@ -31681,7 +32097,7 @@ index 8e57229..31cce89 100644
7052 /* Kernel addresses are always protection faults: */
7053 if (address >= TASK_SIZE)
7054 error_code |= PF_PROT;
7055 -@@ -861,7 +973,7 @@ do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address,
7056 +@@ -864,7 +976,7 @@ do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address,
7057 if (fault & (VM_FAULT_HWPOISON|VM_FAULT_HWPOISON_LARGE)) {
7058 printk(KERN_ERR
7059 "MCE: Killing %s:%d due to hardware memory corruption fault at %lx\n",
7060 @@ -31690,7 +32106,7 @@ index 8e57229..31cce89 100644
7061 code = BUS_MCEERR_AR;
7062 }
7063 #endif
7064 -@@ -915,6 +1027,99 @@ static int spurious_fault_check(unsigned long error_code, pte_t *pte)
7065 +@@ -918,6 +1030,99 @@ static int spurious_fault_check(unsigned long error_code, pte_t *pte)
7066 return 1;
7067 }
7068
7069 @@ -31790,7 +32206,7 @@ index 8e57229..31cce89 100644
7070 /*
7071 * Handle a spurious fault caused by a stale TLB entry.
7072 *
7073 -@@ -981,6 +1186,9 @@ int show_unhandled_signals = 1;
7074 +@@ -985,6 +1190,9 @@ int show_unhandled_signals = 1;
7075 static inline int
7076 access_error(unsigned long error_code, struct vm_area_struct *vma)
7077 {
7078 @@ -31800,7 +32216,7 @@ index 8e57229..31cce89 100644
7079 if (error_code & PF_WRITE) {
7080 /* write, present and write, not present: */
7081 if (unlikely(!(vma->vm_flags & VM_WRITE)))
7082 -@@ -1015,7 +1223,7 @@ static inline bool smap_violation(int error_code, struct pt_regs *regs)
7083 +@@ -1019,7 +1227,7 @@ static inline bool smap_violation(int error_code, struct pt_regs *regs)
7084 if (error_code & PF_USER)
7085 return false;
7086
7087 @@ -31809,7 +32225,7 @@ index 8e57229..31cce89 100644
7088 return false;
7089
7090 return true;
7091 -@@ -1043,6 +1251,22 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code,
7092 +@@ -1047,6 +1255,22 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code,
7093 tsk = current;
7094 mm = tsk->mm;
7095
7096 @@ -31832,7 +32248,7 @@ index 8e57229..31cce89 100644
7097 /*
7098 * Detect and handle instructions that would cause a page fault for
7099 * both a tracked kernel page and a userspace page.
7100 -@@ -1120,7 +1344,7 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code,
7101 +@@ -1124,7 +1348,7 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code,
7102 * User-mode registers count as a user access even for any
7103 * potential system fault or CPU buglet:
7104 */
7105 @@ -31841,7 +32257,7 @@ index 8e57229..31cce89 100644
7106 local_irq_enable();
7107 error_code |= PF_USER;
7108 flags |= FAULT_FLAG_USER;
7109 -@@ -1167,6 +1391,11 @@ retry:
7110 +@@ -1171,6 +1395,11 @@ retry:
7111 might_sleep();
7112 }
7113
7114 @@ -31853,7 +32269,7 @@ index 8e57229..31cce89 100644
7115 vma = find_vma(mm, address);
7116 if (unlikely(!vma)) {
7117 bad_area(regs, error_code, address);
7118 -@@ -1178,18 +1407,24 @@ retry:
7119 +@@ -1182,18 +1411,24 @@ retry:
7120 bad_area(regs, error_code, address);
7121 return;
7122 }
7123 @@ -31889,9 +32305,9 @@ index 8e57229..31cce89 100644
7124 if (unlikely(expand_stack(vma, address))) {
7125 bad_area(regs, error_code, address);
7126 return;
7127 -@@ -1301,3 +1536,292 @@ trace_do_page_fault(struct pt_regs *regs, unsigned long error_code)
7128 - exception_exit(prev_state);
7129 +@@ -1309,3 +1544,292 @@ trace_do_page_fault(struct pt_regs *regs, unsigned long error_code)
7130 }
7131 + NOKPROBE_SYMBOL(trace_do_page_fault);
7132 #endif /* CONFIG_TRACING */
7133 +
7134 +#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
7135 @@ -31915,7 +32331,7 @@ index 8e57229..31cce89 100644
7136 +
7137 +#ifdef CONFIG_PAX_SEGMEXEC
7138 + if (mm->pax_flags & MF_PAX_SEGMEXEC) {
7139 -+ if (!(error_code & (PF_PROT | PF_WRITE)) && (ip + SEGMEXEC_TASK_SIZE == address))
7140 ++ if (!(error_code & (PF_PROT | PF_WRITE)) && (ip + SEGMEXEC_TASK_SIZE == address))
7141 + return true;
7142 + return false;
7143 + }
7144 @@ -32778,7 +33194,7 @@ index e395048..cd38278 100644
7145 printk(KERN_INFO "Write protecting the kernel text: %luk\n",
7146 size >> 10);
7147 diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
7148 -index f35c66c..84b95ef 100644
7149 +index df1a992..94c272c 100644
7150 --- a/arch/x86/mm/init_64.c
7151 +++ b/arch/x86/mm/init_64.c
7152 @@ -151,7 +151,7 @@ early_param("gbpages", parse_direct_gbpages_on);
7153 @@ -32902,26 +33318,17 @@ index f35c66c..84b95ef 100644
7154 spin_unlock(&init_mm.page_table_lock);
7155 pgd_changed = true;
7156 }
7157 -@@ -1188,8 +1209,8 @@ int kern_addr_valid(unsigned long addr)
7158 +@@ -1195,8 +1216,8 @@ static struct vm_operations_struct gate_vma_ops = {
7159 static struct vm_area_struct gate_vma = {
7160 - .vm_start = VSYSCALL_START,
7161 - .vm_end = VSYSCALL_START + (VSYSCALL_MAPPED_PAGES * PAGE_SIZE),
7162 + .vm_start = VSYSCALL_ADDR,
7163 + .vm_end = VSYSCALL_ADDR + PAGE_SIZE,
7164 - .vm_page_prot = PAGE_READONLY_EXEC,
7165 -- .vm_flags = VM_READ | VM_EXEC
7166 +- .vm_flags = VM_READ | VM_EXEC,
7167 + .vm_page_prot = PAGE_READONLY,
7168 -+ .vm_flags = VM_READ
7169 ++ .vm_flags = VM_READ,
7170 + .vm_ops = &gate_vma_ops,
7171 };
7172
7173 - struct vm_area_struct *get_gate_vma(struct mm_struct *mm)
7174 -@@ -1223,7 +1244,7 @@ int in_gate_area_no_mm(unsigned long addr)
7175 -
7176 - const char *arch_vma_name(struct vm_area_struct *vma)
7177 - {
7178 -- if (vma->vm_mm && vma->vm_start == (long)vma->vm_mm->context.vdso)
7179 -+ if (vma->vm_mm && vma->vm_start == vma->vm_mm->context.vdso)
7180 - return "[vdso]";
7181 - if (vma == &gate_vma)
7182 - return "[vsyscall]";
7183 diff --git a/arch/x86/mm/iomap_32.c b/arch/x86/mm/iomap_32.c
7184 index 7b179b4..6bd17777 100644
7185 --- a/arch/x86/mm/iomap_32.c
7186 @@ -32939,7 +33346,7 @@ index 7b179b4..6bd17777 100644
7187
7188 return (void *)vaddr;
7189 diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
7190 -index bc7527e..5e2c495 100644
7191 +index baff1da..2816ef4 100644
7192 --- a/arch/x86/mm/ioremap.c
7193 +++ b/arch/x86/mm/ioremap.c
7194 @@ -56,8 +56,8 @@ static int __ioremap_check_ram(unsigned long start_pfn, unsigned long nr_pages,
7195 @@ -32990,7 +33397,7 @@ index bc7527e..5e2c495 100644
7196
7197 static inline pmd_t * __init early_ioremap_pmd(unsigned long addr)
7198 {
7199 -@@ -370,8 +376,7 @@ void __init early_ioremap_init(void)
7200 +@@ -376,8 +382,7 @@ void __init early_ioremap_init(void)
7201 early_ioremap_setup();
7202
7203 pmd = early_ioremap_pmd(fix_to_virt(FIX_BTMAP_BEGIN));
7204 @@ -33143,7 +33550,7 @@ index 0057a7a..95c7edd 100644
7205 might_sleep();
7206 if (is_enabled()) /* recheck and proper locking in *_core() */
7207 diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c
7208 -index 1d045f9..3a00249 100644
7209 +index a32b706..efb308b 100644
7210 --- a/arch/x86/mm/numa.c
7211 +++ b/arch/x86/mm/numa.c
7212 @@ -478,7 +478,7 @@ static bool __init numa_meminfo_cover_memory(const struct numa_meminfo *mi)
7213 @@ -33155,19 +33562,6 @@ index 1d045f9..3a00249 100644
7214 {
7215 unsigned long uninitialized_var(pfn_align);
7216 int i, nid;
7217 -diff --git a/arch/x86/mm/pageattr-test.c b/arch/x86/mm/pageattr-test.c
7218 -index 461bc82..4e091a3 100644
7219 ---- a/arch/x86/mm/pageattr-test.c
7220 -+++ b/arch/x86/mm/pageattr-test.c
7221 -@@ -35,7 +35,7 @@ enum {
7222 -
7223 - static int pte_testbit(pte_t pte)
7224 - {
7225 -- return pte_flags(pte) & _PAGE_UNUSED1;
7226 -+ return pte_flags(pte) & _PAGE_CPA_TEST;
7227 - }
7228 -
7229 - struct split_state {
7230 diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
7231 index ae242a7..1c7998f 100644
7232 --- a/arch/x86/mm/pageattr.c
7233 @@ -33370,7 +33764,7 @@ index 9f0614d..92ae64a 100644
7234 p += get_opcode(p, &opcode);
7235 for (i = 0; i < ARRAY_SIZE(imm_wop); i++)
7236 diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c
7237 -index c96314a..433b127 100644
7238 +index 6fb6927..4fc13c0 100644
7239 --- a/arch/x86/mm/pgtable.c
7240 +++ b/arch/x86/mm/pgtable.c
7241 @@ -97,10 +97,71 @@ static inline void pgd_list_del(pgd_t *pgd)
7242 @@ -33778,10 +34172,10 @@ index 0000000..dace51c
7243 +EXPORT_SYMBOL(__pax_close_userland);
7244 +#endif
7245 diff --git a/arch/x86/net/bpf_jit.S b/arch/x86/net/bpf_jit.S
7246 -index 0149575..f746de8 100644
7247 +index 6440221..f746de8 100644
7248 --- a/arch/x86/net/bpf_jit.S
7249 +++ b/arch/x86/net/bpf_jit.S
7250 -@@ -9,6 +9,7 @@
7251 +@@ -9,19 +9,17 @@
7252 */
7253 #include <linux/linkage.h>
7254 #include <asm/dwarf2.h>
7255 @@ -33789,7 +34183,23 @@ index 0149575..f746de8 100644
7256
7257 /*
7258 * Calling convention :
7259 -@@ -35,6 +36,7 @@ sk_load_word_positive_offset:
7260 +- * rbx : skb pointer (callee saved)
7261 ++ * rdi : skb pointer
7262 + * esi : offset of byte(s) to fetch in skb (can be scratched)
7263 +- * r10 : copy of skb->data
7264 ++ * r8 : copy of skb->data
7265 + * r9d : hlen = skb->len - skb->data_len
7266 + */
7267 +-#define SKBDATA %r10
7268 ++#define SKBDATA %r8
7269 + #define SKF_MAX_NEG_OFF $(-0x200000) /* SKF_LL_OFF from filter.h */
7270 +-#define MAX_BPF_STACK (512 /* from filter.h */ + \
7271 +- 32 /* space for rbx,r13,r14,r15 */ + \
7272 +- 8 /* space for skb_copy_bits */)
7273 +
7274 + sk_load_word:
7275 + .globl sk_load_word
7276 +@@ -38,6 +36,7 @@ sk_load_word_positive_offset:
7277 jle bpf_slow_path_word
7278 mov (SKBDATA,%rsi),%eax
7279 bswap %eax /* ntohl() */
7280 @@ -33797,7 +34207,7 @@ index 0149575..f746de8 100644
7281 ret
7282
7283 sk_load_half:
7284 -@@ -52,6 +54,7 @@ sk_load_half_positive_offset:
7285 +@@ -55,6 +54,7 @@ sk_load_half_positive_offset:
7286 jle bpf_slow_path_half
7287 movzwl (SKBDATA,%rsi),%eax
7288 rol $8,%ax # ntohs()
7289 @@ -33805,32 +34215,67 @@ index 0149575..f746de8 100644
7290 ret
7291
7292 sk_load_byte:
7293 -@@ -66,6 +69,7 @@ sk_load_byte_positive_offset:
7294 +@@ -69,45 +69,83 @@ sk_load_byte_positive_offset:
7295 cmp %esi,%r9d /* if (offset >= hlen) goto bpf_slow_path_byte */
7296 jle bpf_slow_path_byte
7297 movzbl (SKBDATA,%rsi),%eax
7298 + pax_force_retaddr
7299 - ret
7300 -
7301 - /**
7302 -@@ -87,6 +91,7 @@ sk_load_byte_msh_positive_offset:
7303 - movzbl (SKBDATA,%rsi),%ebx
7304 - and $15,%bl
7305 - shl $2,%bl
7306 ++ ret
7307 ++
7308 ++/**
7309 ++ * sk_load_byte_msh - BPF_S_LDX_B_MSH helper
7310 ++ *
7311 ++ * Implements BPF_S_LDX_B_MSH : ldxb 4*([offset]&0xf)
7312 ++ * Must preserve A accumulator (%eax)
7313 ++ * Inputs : %esi is the offset value
7314 ++ */
7315 ++sk_load_byte_msh:
7316 ++ .globl sk_load_byte_msh
7317 ++ test %esi,%esi
7318 ++ js bpf_slow_path_byte_msh_neg
7319 ++
7320 ++sk_load_byte_msh_positive_offset:
7321 ++ .globl sk_load_byte_msh_positive_offset
7322 ++ cmp %esi,%r9d /* if (offset >= hlen) goto bpf_slow_path_byte_msh */
7323 ++ jle bpf_slow_path_byte_msh
7324 ++ movzbl (SKBDATA,%rsi),%ebx
7325 ++ and $15,%bl
7326 ++ shl $2,%bl
7327 + pax_force_retaddr
7328 ret
7329
7330 /* rsi contains offset and can be scratched */
7331 -@@ -109,6 +114,7 @@ bpf_slow_path_word:
7332 + #define bpf_slow_path_common(LEN) \
7333 +- mov %rbx, %rdi; /* arg1 == skb */ \
7334 ++ push %rdi; /* save skb */ \
7335 + push %r9; \
7336 + push SKBDATA; \
7337 + /* rsi already has offset */ \
7338 + mov $LEN,%ecx; /* len */ \
7339 +- lea - MAX_BPF_STACK + 32(%rbp),%rdx; \
7340 ++ lea -12(%rbp),%rdx; \
7341 + call skb_copy_bits; \
7342 + test %eax,%eax; \
7343 + pop SKBDATA; \
7344 +- pop %r9;
7345 ++ pop %r9; \
7346 ++ pop %rdi
7347 +
7348 +
7349 + bpf_slow_path_word:
7350 + bpf_slow_path_common(4)
7351 js bpf_error
7352 - mov -12(%rbp),%eax
7353 +- mov - MAX_BPF_STACK + 32(%rbp),%eax
7354 ++ mov -12(%rbp),%eax
7355 bswap %eax
7356 + pax_force_retaddr
7357 ret
7358
7359 bpf_slow_path_half:
7360 -@@ -117,12 +123,14 @@ bpf_slow_path_half:
7361 - mov -12(%rbp),%ax
7362 + bpf_slow_path_common(2)
7363 + js bpf_error
7364 +- mov - MAX_BPF_STACK + 32(%rbp),%ax
7365 ++ mov -12(%rbp),%ax
7366 rol $8,%ax
7367 movzwl %ax,%eax
7368 + pax_force_retaddr
7369 @@ -33839,20 +34284,40 @@ index 0149575..f746de8 100644
7370 bpf_slow_path_byte:
7371 bpf_slow_path_common(1)
7372 js bpf_error
7373 - movzbl -12(%rbp),%eax
7374 +- movzbl - MAX_BPF_STACK + 32(%rbp),%eax
7375 ++ movzbl -12(%rbp),%eax
7376 + pax_force_retaddr
7377 - ret
7378 -
7379 - bpf_slow_path_byte_msh:
7380 -@@ -133,6 +141,7 @@ bpf_slow_path_byte_msh:
7381 - and $15,%al
7382 - shl $2,%al
7383 - xchg %eax,%ebx
7384 ++ ret
7385 ++
7386 ++bpf_slow_path_byte_msh:
7387 ++ xchg %eax,%ebx /* dont lose A , X is about to be scratched */
7388 ++ bpf_slow_path_common(1)
7389 ++ js bpf_error
7390 ++ movzbl -12(%rbp),%eax
7391 ++ and $15,%al
7392 ++ shl $2,%al
7393 ++ xchg %eax,%ebx
7394 + pax_force_retaddr
7395 ret
7396
7397 #define sk_negative_common(SIZE) \
7398 -@@ -157,6 +166,7 @@ sk_load_word_negative_offset:
7399 +- mov %rbx, %rdi; /* arg1 == skb */ \
7400 ++ push %rdi; /* save skb */ \
7401 + push %r9; \
7402 + push SKBDATA; \
7403 + /* rsi already has offset */ \
7404 +@@ -116,8 +154,10 @@ bpf_slow_path_byte:
7405 + test %rax,%rax; \
7406 + pop SKBDATA; \
7407 + pop %r9; \
7408 ++ pop %rdi; \
7409 + jz bpf_error
7410 +
7411 ++
7412 + bpf_slow_path_word_neg:
7413 + cmp SKF_MAX_NEG_OFF, %esi /* test range */
7414 + jl bpf_error /* offset lower -> error */
7415 +@@ -126,6 +166,7 @@ sk_load_word_negative_offset:
7416 sk_negative_common(4)
7417 mov (%rax), %eax
7418 bswap %eax
7419 @@ -33860,7 +34325,7 @@ index 0149575..f746de8 100644
7420 ret
7421
7422 bpf_slow_path_half_neg:
7423 -@@ -168,6 +178,7 @@ sk_load_half_negative_offset:
7424 +@@ -137,6 +178,7 @@ sk_load_half_negative_offset:
7425 mov (%rax),%ax
7426 rol $8,%ax
7427 movzwl %ax,%eax
7428 @@ -33868,33 +34333,84 @@ index 0149575..f746de8 100644
7429 ret
7430
7431 bpf_slow_path_byte_neg:
7432 -@@ -177,6 +188,7 @@ sk_load_byte_negative_offset:
7433 +@@ -146,14 +188,27 @@ sk_load_byte_negative_offset:
7434 .globl sk_load_byte_negative_offset
7435 sk_negative_common(1)
7436 movzbl (%rax), %eax
7437 + pax_force_retaddr
7438 - ret
7439 -
7440 - bpf_slow_path_byte_msh_neg:
7441 -@@ -190,6 +202,7 @@ sk_load_byte_msh_negative_offset:
7442 - and $15,%al
7443 - shl $2,%al
7444 - xchg %eax,%ebx
7445 ++ ret
7446 ++
7447 ++bpf_slow_path_byte_msh_neg:
7448 ++ cmp SKF_MAX_NEG_OFF, %esi
7449 ++ jl bpf_error
7450 ++sk_load_byte_msh_negative_offset:
7451 ++ .globl sk_load_byte_msh_negative_offset
7452 ++ xchg %eax,%ebx /* dont lose A , X is about to be scratched */
7453 ++ sk_negative_common(1)
7454 ++ movzbl (%rax),%eax
7455 ++ and $15,%al
7456 ++ shl $2,%al
7457 ++ xchg %eax,%ebx
7458 + pax_force_retaddr
7459 ret
7460
7461 bpf_error:
7462 -@@ -197,4 +210,5 @@ bpf_error:
7463 - xor %eax,%eax
7464 - mov -8(%rbp),%rbx
7465 + # force a return 0 from jit handler
7466 +- xor %eax,%eax
7467 +- mov - MAX_BPF_STACK(%rbp),%rbx
7468 +- mov - MAX_BPF_STACK + 8(%rbp),%r13
7469 +- mov - MAX_BPF_STACK + 16(%rbp),%r14
7470 +- mov - MAX_BPF_STACK + 24(%rbp),%r15
7471 ++ xor %eax,%eax
7472 ++ mov -8(%rbp),%rbx
7473 leaveq
7474 + pax_force_retaddr
7475 ret
7476 diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c
7477 -index 6d5663a..f1ec380 100644
7478 +index 99bef86..bdfb5c6 100644
7479 --- a/arch/x86/net/bpf_jit_comp.c
7480 +++ b/arch/x86/net/bpf_jit_comp.c
7481 -@@ -50,13 +50,90 @@ static inline u8 *emit_code(u8 *ptr, u32 bytes, unsigned int len)
7482 +@@ -1,7 +1,6 @@
7483 + /* bpf_jit_comp.c : BPF JIT compiler
7484 + *
7485 + * Copyright (C) 2011-2013 Eric Dumazet (eric.dumazet@×××××.com)
7486 +- * Internal BPF Copyright (c) 2011-2014 PLUMgrid, http://plumgrid.com
7487 + *
7488 + * This program is free software; you can redistribute it and/or
7489 + * modify it under the terms of the GNU General Public License
7490 +@@ -15,16 +14,28 @@
7491 + #include <linux/if_vlan.h>
7492 + #include <linux/random.h>
7493 +
7494 ++/*
7495 ++ * Conventions :
7496 ++ * EAX : BPF A accumulator
7497 ++ * EBX : BPF X accumulator
7498 ++ * RDI : pointer to skb (first argument given to JIT function)
7499 ++ * RBP : frame pointer (even if CONFIG_FRAME_POINTER=n)
7500 ++ * ECX,EDX,ESI : scratch registers
7501 ++ * r9d : skb->len - skb->data_len (headlen)
7502 ++ * r8 : skb->data
7503 ++ * -8(RBP) : saved RBX value
7504 ++ * -16(RBP)..-80(RBP) : BPF_MEMWORDS values
7505 ++ */
7506 + int bpf_jit_enable __read_mostly;
7507 +
7508 + /*
7509 + * assembly code in arch/x86/net/bpf_jit.S
7510 + */
7511 +-extern u8 sk_load_word[], sk_load_half[], sk_load_byte[];
7512 ++extern u8 sk_load_word[], sk_load_half[], sk_load_byte[], sk_load_byte_msh[];
7513 + extern u8 sk_load_word_positive_offset[], sk_load_half_positive_offset[];
7514 +-extern u8 sk_load_byte_positive_offset[];
7515 ++extern u8 sk_load_byte_positive_offset[], sk_load_byte_msh_positive_offset[];
7516 + extern u8 sk_load_word_negative_offset[], sk_load_half_negative_offset[];
7517 +-extern u8 sk_load_byte_negative_offset[];
7518 ++extern u8 sk_load_byte_negative_offset[], sk_load_byte_msh_negative_offset[];
7519 +
7520 + static inline u8 *emit_code(u8 *ptr, u32 bytes, unsigned int len)
7521 + {
7522 +@@ -39,50 +50,113 @@ static inline u8 *emit_code(u8 *ptr, u32 bytes, unsigned int len)
7523 return ptr + len;
7524 }
7525
7526 @@ -33910,6 +34426,14 @@ index 6d5663a..f1ec380 100644
7527 #define EMIT2(b1, b2) EMIT((b1) + ((b2) << 8), 2)
7528 #define EMIT3(b1, b2, b3) EMIT((b1) + ((b2) << 8) + ((b3) << 16), 3)
7529 #define EMIT4(b1, b2, b3, b4) EMIT((b1) + ((b2) << 8) + ((b3) << 16) + ((b4) << 24), 4)
7530 +-#define EMIT1_off32(b1, off) \
7531 +- do {EMIT1(b1); EMIT(off, 4); } while (0)
7532 +-#define EMIT2_off32(b1, b2, off) \
7533 +- do {EMIT2(b1, b2); EMIT(off, 4); } while (0)
7534 +-#define EMIT3_off32(b1, b2, b3, off) \
7535 +- do {EMIT3(b1, b2, b3); EMIT(off, 4); } while (0)
7536 +-#define EMIT4_off32(b1, b2, b3, b4, off) \
7537 +- do {EMIT4(b1, b2, b3, b4); EMIT(off, 4); } while (0)
7538 +
7539 +#ifdef CONFIG_GRKERNSEC_JIT_HARDEN
7540 +/* original constant will appear in ecx */
7541 @@ -33979,16 +34503,63 @@ index 6d5663a..f1ec380 100644
7542 + } \
7543 +} while (0)
7544 +#else
7545 - #define EMIT1_off32(b1, off) do { EMIT1(b1); EMIT(off, 4);} while (0)
7546 ++#define EMIT1_off32(b1, off) do { EMIT1(b1); EMIT(off, 4);} while (0)
7547 +#define EMIT2_off32(b1, b2, off) do { EMIT2(b1, b2); EMIT(off, 4);} while (0)
7548 +#endif
7549 ++
7550 ++#define CLEAR_A() EMIT2(0x31, 0xc0) /* xor %eax,%eax */
7551 ++#define CLEAR_X() EMIT2(0x31, 0xdb) /* xor %ebx,%ebx */
7552
7553 - #define CLEAR_A() EMIT2(0x31, 0xc0) /* xor %eax,%eax */
7554 - #define CLEAR_X() EMIT2(0x31, 0xdb) /* xor %ebx,%ebx */
7555 -@@ -91,6 +168,24 @@ do { \
7556 + static inline bool is_imm8(int value)
7557 + {
7558 + return value <= 127 && value >= -128;
7559 + }
7560 +
7561 +-static inline bool is_simm32(s64 value)
7562 ++static inline bool is_near(int offset)
7563 + {
7564 +- return value == (s64) (s32) value;
7565 ++ return offset <= 127 && offset >= -128;
7566 + }
7567 +
7568 +-/* mov dst, src */
7569 +-#define EMIT_mov(DST, SRC) \
7570 +- do {if (DST != SRC) \
7571 +- EMIT3(add_2mod(0x48, DST, SRC), 0x89, add_2reg(0xC0, DST, SRC)); \
7572 +- } while (0)
7573 +-
7574 +-static int bpf_size_to_x86_bytes(int bpf_size)
7575 +-{
7576 +- if (bpf_size == BPF_W)
7577 +- return 4;
7578 +- else if (bpf_size == BPF_H)
7579 +- return 2;
7580 +- else if (bpf_size == BPF_B)
7581 +- return 1;
7582 +- else if (bpf_size == BPF_DW)
7583 +- return 4; /* imm32 */
7584 +- else
7585 +- return 0;
7586 +-}
7587 ++#define EMIT_JMP(offset) \
7588 ++do { \
7589 ++ if (offset) { \
7590 ++ if (is_near(offset)) \
7591 ++ EMIT2(0xeb, offset); /* jmp .+off8 */ \
7592 ++ else \
7593 ++ EMIT1_off32(0xe9, offset); /* jmp .+off32 */ \
7594 ++ } \
7595 ++} while (0)
7596 +
7597 + /* list of x86 cond jumps opcodes (. + s8)
7598 + * Add 0x10 (and an extra 0x0f) to generate far jumps (. + s32)
7599 +@@ -93,8 +167,46 @@ static int bpf_size_to_x86_bytes(int bpf_size)
7600 + #define X86_JNE 0x75
7601 #define X86_JBE 0x76
7602 #define X86_JA 0x77
7603 -
7604 +-#define X86_JGE 0x7D
7605 +-#define X86_JG 0x7F
7606 ++
7607 +#ifdef CONFIG_GRKERNSEC_JIT_HARDEN
7608 +#define APPEND_FLOW_VERIFY() \
7609 +do { \
7610 @@ -34007,20 +34578,33 @@ index 6d5663a..f1ec380 100644
7611 +#define APPEND_FLOW_VERIFY() do { } while (0)
7612 +#endif
7613 +
7614 - #define EMIT_COND_JMP(op, offset) \
7615 - do { \
7616 - if (is_near(offset)) \
7617 -@@ -98,6 +193,7 @@ do { \
7618 - else { \
7619 - EMIT2(0x0f, op + 0x10); \
7620 - EMIT(offset, 4); /* jxx .+off32 */ \
7621 ++#define EMIT_COND_JMP(op, offset) \
7622 ++do { \
7623 ++ if (is_near(offset)) \
7624 ++ EMIT2(op, offset); /* jxx .+off8 */ \
7625 ++ else { \
7626 ++ EMIT2(0x0f, op + 0x10); \
7627 ++ EMIT(offset, 4); /* jxx .+off32 */ \
7628 + APPEND_FLOW_VERIFY(); \
7629 - } \
7630 - } while (0)
7631 ++ } \
7632 ++} while (0)
7633 ++
7634 ++#define COND_SEL(CODE, TOP, FOP) \
7635 ++ case CODE: \
7636 ++ t_op = TOP; \
7637 ++ f_op = FOP; \
7638 ++ goto cond_branch
7639 ++
7640 ++
7641 ++#define SEEN_DATAREF 1 /* might call external helpers */
7642 ++#define SEEN_XREG 2 /* ebx is used */
7643 ++#define SEEN_MEM 4 /* use mem[] for temporary storage */
7644
7645 -@@ -145,55 +241,54 @@ static int pkt_type_offset(void)
7646 - return -1;
7647 - }
7648 + static inline void bpf_flush_icache(void *start, void *end)
7649 + {
7650 +@@ -109,804 +221,646 @@ static inline void bpf_flush_icache(void *start, void *end)
7651 + #define CHOOSE_LOAD_FUNC(K, func) \
7652 + ((int)K < 0 ? ((int)K >= SKF_LL_OFF ? func##_negative_offset : func) : func##_positive_offset)
7653
7654 -struct bpf_binary_header {
7655 - unsigned int pages;
7656 @@ -34029,8 +34613,27 @@ index 6d5663a..f1ec380 100644
7657 - */
7658 - u8 image[];
7659 -};
7660 --
7661 ++/* Helper to find the offset of pkt_type in sk_buff
7662 ++ * We want to make sure its still a 3bit field starting at a byte boundary.
7663 ++ */
7664 ++#define PKT_TYPE_MAX 7
7665 ++static int pkt_type_offset(void)
7666 ++{
7667 ++ struct sk_buff skb_probe = {
7668 ++ .pkt_type = ~0,
7669 ++ };
7670 ++ char *ct = (char *)&skb_probe;
7671 ++ unsigned int off;
7672 +
7673 -static struct bpf_binary_header *bpf_alloc_binary(unsigned int proglen,
7674 ++ for (off = 0; off < sizeof(struct sk_buff); off++) {
7675 ++ if (ct[off] == PKT_TYPE_MAX)
7676 ++ return off;
7677 ++ }
7678 ++ pr_err_once("Please fix pkt_type_offset(), as pkt_type couldn't be found\n");
7679 ++ return -1;
7680 ++}
7681 ++
7682 +/* Note : for security reasons, bpf code will follow a randomly
7683 + * sized amount of int3 instructions
7684 + */
7685 @@ -34066,124 +34669,1369 @@ index 6d5663a..f1ec380 100644
7686 return header;
7687 }
7688
7689 - void bpf_jit_compile(struct sk_filter *fp)
7690 - {
7691 +-/* pick a register outside of BPF range for JIT internal work */
7692 +-#define AUX_REG (MAX_BPF_REG + 1)
7693 +-
7694 +-/* the following table maps BPF registers to x64 registers.
7695 +- * x64 register r12 is unused, since if used as base address register
7696 +- * in load/store instructions, it always needs an extra byte of encoding
7697 +- */
7698 +-static const int reg2hex[] = {
7699 +- [BPF_REG_0] = 0, /* rax */
7700 +- [BPF_REG_1] = 7, /* rdi */
7701 +- [BPF_REG_2] = 6, /* rsi */
7702 +- [BPF_REG_3] = 2, /* rdx */
7703 +- [BPF_REG_4] = 1, /* rcx */
7704 +- [BPF_REG_5] = 0, /* r8 */
7705 +- [BPF_REG_6] = 3, /* rbx callee saved */
7706 +- [BPF_REG_7] = 5, /* r13 callee saved */
7707 +- [BPF_REG_8] = 6, /* r14 callee saved */
7708 +- [BPF_REG_9] = 7, /* r15 callee saved */
7709 +- [BPF_REG_FP] = 5, /* rbp readonly */
7710 +- [AUX_REG] = 3, /* r11 temp register */
7711 +-};
7712 +-
7713 +-/* is_ereg() == true if BPF register 'reg' maps to x64 r8..r15
7714 +- * which need extra byte of encoding.
7715 +- * rax,rcx,...,rbp have simpler encoding
7716 +- */
7717 +-static inline bool is_ereg(u32 reg)
7718 +-{
7719 +- if (reg == BPF_REG_5 || reg == AUX_REG ||
7720 +- (reg >= BPF_REG_7 && reg <= BPF_REG_9))
7721 +- return true;
7722 +- else
7723 +- return false;
7724 +-}
7725 +-
7726 +-/* add modifiers if 'reg' maps to x64 registers r8..r15 */
7727 +-static inline u8 add_1mod(u8 byte, u32 reg)
7728 +-{
7729 +- if (is_ereg(reg))
7730 +- byte |= 1;
7731 +- return byte;
7732 +-}
7733 +-
7734 +-static inline u8 add_2mod(u8 byte, u32 r1, u32 r2)
7735 +-{
7736 +- if (is_ereg(r1))
7737 +- byte |= 1;
7738 +- if (is_ereg(r2))
7739 +- byte |= 4;
7740 +- return byte;
7741 +-}
7742 +-
7743 +-/* encode 'dst_reg' register into x64 opcode 'byte' */
7744 +-static inline u8 add_1reg(u8 byte, u32 dst_reg)
7745 +-{
7746 +- return byte + reg2hex[dst_reg];
7747 +-}
7748 +-
7749 +-/* encode 'dst_reg' and 'src_reg' registers into x64 opcode 'byte' */
7750 +-static inline u8 add_2reg(u8 byte, u32 dst_reg, u32 src_reg)
7751 +-{
7752 +- return byte + reg2hex[dst_reg] + (reg2hex[src_reg] << 3);
7753 +-}
7754 +-
7755 +-struct jit_context {
7756 +- unsigned int cleanup_addr; /* epilogue code offset */
7757 +- bool seen_ld_abs;
7758 +-};
7759 +-
7760 +-static int do_jit(struct sk_filter *bpf_prog, int *addrs, u8 *image,
7761 +- int oldproglen, struct jit_context *ctx)
7762 +-{
7763 +- struct sock_filter_int *insn = bpf_prog->insnsi;
7764 +- int insn_cnt = bpf_prog->len;
7765 - u8 temp[64];
7766 +- int i;
7767 +- int proglen = 0;
7768 +- u8 *prog = temp;
7769 +- int stacksize = MAX_BPF_STACK +
7770 +- 32 /* space for rbx, r13, r14, r15 */ +
7771 +- 8 /* space for skb_copy_bits() buffer */;
7772 +-
7773 +- EMIT1(0x55); /* push rbp */
7774 +- EMIT3(0x48, 0x89, 0xE5); /* mov rbp,rsp */
7775 +-
7776 +- /* sub rsp, stacksize */
7777 +- EMIT3_off32(0x48, 0x81, 0xEC, stacksize);
7778 +-
7779 +- /* all classic BPF filters use R6(rbx) save it */
7780 +-
7781 +- /* mov qword ptr [rbp-X],rbx */
7782 +- EMIT3_off32(0x48, 0x89, 0x9D, -stacksize);
7783 +-
7784 +- /* sk_convert_filter() maps classic BPF register X to R7 and uses R8
7785 +- * as temporary, so all tcpdump filters need to spill/fill R7(r13) and
7786 +- * R8(r14). R9(r15) spill could be made conditional, but there is only
7787 +- * one 'bpf_error' return path out of helper functions inside bpf_jit.S
7788 +- * The overhead of extra spill is negligible for any filter other
7789 +- * than synthetic ones. Therefore not worth adding complexity.
7790 +- */
7791 +-
7792 +- /* mov qword ptr [rbp-X],r13 */
7793 +- EMIT3_off32(0x4C, 0x89, 0xAD, -stacksize + 8);
7794 +- /* mov qword ptr [rbp-X],r14 */
7795 +- EMIT3_off32(0x4C, 0x89, 0xB5, -stacksize + 16);
7796 +- /* mov qword ptr [rbp-X],r15 */
7797 +- EMIT3_off32(0x4C, 0x89, 0xBD, -stacksize + 24);
7798 +-
7799 +- /* clear A and X registers */
7800 +- EMIT2(0x31, 0xc0); /* xor eax, eax */
7801 +- EMIT3(0x4D, 0x31, 0xED); /* xor r13, r13 */
7802 +-
7803 +- if (ctx->seen_ld_abs) {
7804 +- /* r9d : skb->len - skb->data_len (headlen)
7805 +- * r10 : skb->data
7806 +- */
7807 +- if (is_imm8(offsetof(struct sk_buff, len)))
7808 +- /* mov %r9d, off8(%rdi) */
7809 +- EMIT4(0x44, 0x8b, 0x4f,
7810 +- offsetof(struct sk_buff, len));
7811 +- else
7812 +- /* mov %r9d, off32(%rdi) */
7813 +- EMIT3_off32(0x44, 0x8b, 0x8f,
7814 +- offsetof(struct sk_buff, len));
7815 +-
7816 +- if (is_imm8(offsetof(struct sk_buff, data_len)))
7817 +- /* sub %r9d, off8(%rdi) */
7818 +- EMIT4(0x44, 0x2b, 0x4f,
7819 +- offsetof(struct sk_buff, data_len));
7820 +- else
7821 +- EMIT3_off32(0x44, 0x2b, 0x8f,
7822 +- offsetof(struct sk_buff, data_len));
7823 +-
7824 +- if (is_imm8(offsetof(struct sk_buff, data)))
7825 +- /* mov %r10, off8(%rdi) */
7826 +- EMIT4(0x4c, 0x8b, 0x57,
7827 +- offsetof(struct sk_buff, data));
7828 +- else
7829 +- /* mov %r10, off32(%rdi) */
7830 +- EMIT3_off32(0x4c, 0x8b, 0x97,
7831 +- offsetof(struct sk_buff, data));
7832 +- }
7833 +-
7834 +- for (i = 0; i < insn_cnt; i++, insn++) {
7835 +- const s32 imm32 = insn->imm;
7836 +- u32 dst_reg = insn->dst_reg;
7837 +- u32 src_reg = insn->src_reg;
7838 +- u8 b1 = 0, b2 = 0, b3 = 0;
7839 +- s64 jmp_offset;
7840 +- u8 jmp_cond;
7841 +- int ilen;
7842 +- u8 *func;
7843 +-
7844 +- switch (insn->code) {
7845 +- /* ALU */
7846 +- case BPF_ALU | BPF_ADD | BPF_X:
7847 +- case BPF_ALU | BPF_SUB | BPF_X:
7848 +- case BPF_ALU | BPF_AND | BPF_X:
7849 +- case BPF_ALU | BPF_OR | BPF_X:
7850 +- case BPF_ALU | BPF_XOR | BPF_X:
7851 +- case BPF_ALU64 | BPF_ADD | BPF_X:
7852 +- case BPF_ALU64 | BPF_SUB | BPF_X:
7853 +- case BPF_ALU64 | BPF_AND | BPF_X:
7854 +- case BPF_ALU64 | BPF_OR | BPF_X:
7855 +- case BPF_ALU64 | BPF_XOR | BPF_X:
7856 +- switch (BPF_OP(insn->code)) {
7857 +- case BPF_ADD: b2 = 0x01; break;
7858 +- case BPF_SUB: b2 = 0x29; break;
7859 +- case BPF_AND: b2 = 0x21; break;
7860 +- case BPF_OR: b2 = 0x09; break;
7861 +- case BPF_XOR: b2 = 0x31; break;
7862 +- }
7863 +- if (BPF_CLASS(insn->code) == BPF_ALU64)
7864 +- EMIT1(add_2mod(0x48, dst_reg, src_reg));
7865 +- else if (is_ereg(dst_reg) || is_ereg(src_reg))
7866 +- EMIT1(add_2mod(0x40, dst_reg, src_reg));
7867 +- EMIT2(b2, add_2reg(0xC0, dst_reg, src_reg));
7868 +- break;
7869 +-
7870 +- /* mov dst, src */
7871 +- case BPF_ALU64 | BPF_MOV | BPF_X:
7872 +- EMIT_mov(dst_reg, src_reg);
7873 +- break;
7874 +-
7875 +- /* mov32 dst, src */
7876 +- case BPF_ALU | BPF_MOV | BPF_X:
7877 +- if (is_ereg(dst_reg) || is_ereg(src_reg))
7878 +- EMIT1(add_2mod(0x40, dst_reg, src_reg));
7879 +- EMIT2(0x89, add_2reg(0xC0, dst_reg, src_reg));
7880 +- break;
7881 +-
7882 +- /* neg dst */
7883 +- case BPF_ALU | BPF_NEG:
7884 +- case BPF_ALU64 | BPF_NEG:
7885 +- if (BPF_CLASS(insn->code) == BPF_ALU64)
7886 +- EMIT1(add_1mod(0x48, dst_reg));
7887 +- else if (is_ereg(dst_reg))
7888 +- EMIT1(add_1mod(0x40, dst_reg));
7889 +- EMIT2(0xF7, add_1reg(0xD8, dst_reg));
7890 +- break;
7891 +-
7892 +- case BPF_ALU | BPF_ADD | BPF_K:
7893 +- case BPF_ALU | BPF_SUB | BPF_K:
7894 +- case BPF_ALU | BPF_AND | BPF_K:
7895 +- case BPF_ALU | BPF_OR | BPF_K:
7896 +- case BPF_ALU | BPF_XOR | BPF_K:
7897 +- case BPF_ALU64 | BPF_ADD | BPF_K:
7898 +- case BPF_ALU64 | BPF_SUB | BPF_K:
7899 +- case BPF_ALU64 | BPF_AND | BPF_K:
7900 +- case BPF_ALU64 | BPF_OR | BPF_K:
7901 +- case BPF_ALU64 | BPF_XOR | BPF_K:
7902 +- if (BPF_CLASS(insn->code) == BPF_ALU64)
7903 +- EMIT1(add_1mod(0x48, dst_reg));
7904 +- else if (is_ereg(dst_reg))
7905 +- EMIT1(add_1mod(0x40, dst_reg));
7906 +-
7907 +- switch (BPF_OP(insn->code)) {
7908 +- case BPF_ADD: b3 = 0xC0; break;
7909 +- case BPF_SUB: b3 = 0xE8; break;
7910 +- case BPF_AND: b3 = 0xE0; break;
7911 +- case BPF_OR: b3 = 0xC8; break;
7912 +- case BPF_XOR: b3 = 0xF0; break;
7913 +- }
7914 +-
7915 +- if (is_imm8(imm32))
7916 +- EMIT3(0x83, add_1reg(b3, dst_reg), imm32);
7917 +- else
7918 +- EMIT2_off32(0x81, add_1reg(b3, dst_reg), imm32);
7919 +- break;
7920 +-
7921 +- case BPF_ALU64 | BPF_MOV | BPF_K:
7922 +- /* optimization: if imm32 is positive,
7923 +- * use 'mov eax, imm32' (which zero-extends imm32)
7924 +- * to save 2 bytes
7925 +- */
7926 +- if (imm32 < 0) {
7927 +- /* 'mov rax, imm32' sign extends imm32 */
7928 +- b1 = add_1mod(0x48, dst_reg);
7929 +- b2 = 0xC7;
7930 +- b3 = 0xC0;
7931 +- EMIT3_off32(b1, b2, add_1reg(b3, dst_reg), imm32);
7932 +- break;
7933 +- }
7934 +-
7935 +- case BPF_ALU | BPF_MOV | BPF_K:
7936 +- /* mov %eax, imm32 */
7937 +- if (is_ereg(dst_reg))
7938 +- EMIT1(add_1mod(0x40, dst_reg));
7939 +- EMIT1_off32(add_1reg(0xB8, dst_reg), imm32);
7940 +- break;
7941 +-
7942 +- /* dst %= src, dst /= src, dst %= imm32, dst /= imm32 */
7943 +- case BPF_ALU | BPF_MOD | BPF_X:
7944 +- case BPF_ALU | BPF_DIV | BPF_X:
7945 +- case BPF_ALU | BPF_MOD | BPF_K:
7946 +- case BPF_ALU | BPF_DIV | BPF_K:
7947 +- case BPF_ALU64 | BPF_MOD | BPF_X:
7948 +- case BPF_ALU64 | BPF_DIV | BPF_X:
7949 +- case BPF_ALU64 | BPF_MOD | BPF_K:
7950 +- case BPF_ALU64 | BPF_DIV | BPF_K:
7951 +- EMIT1(0x50); /* push rax */
7952 +- EMIT1(0x52); /* push rdx */
7953 +-
7954 +- if (BPF_SRC(insn->code) == BPF_X)
7955 +- /* mov r11, src_reg */
7956 +- EMIT_mov(AUX_REG, src_reg);
7957 +- else
7958 +- /* mov r11, imm32 */
7959 +- EMIT3_off32(0x49, 0xC7, 0xC3, imm32);
7960 +-
7961 +- /* mov rax, dst_reg */
7962 +- EMIT_mov(BPF_REG_0, dst_reg);
7963 +-
7964 +- /* xor edx, edx
7965 +- * equivalent to 'xor rdx, rdx', but one byte less
7966 +- */
7967 +- EMIT2(0x31, 0xd2);
7968 +-
7969 +- if (BPF_SRC(insn->code) == BPF_X) {
7970 +- /* if (src_reg == 0) return 0 */
7971 +-
7972 +- /* cmp r11, 0 */
7973 +- EMIT4(0x49, 0x83, 0xFB, 0x00);
7974 +-
7975 +- /* jne .+9 (skip over pop, pop, xor and jmp) */
7976 +- EMIT2(X86_JNE, 1 + 1 + 2 + 5);
7977 +- EMIT1(0x5A); /* pop rdx */
7978 +- EMIT1(0x58); /* pop rax */
7979 +- EMIT2(0x31, 0xc0); /* xor eax, eax */
7980 +-
7981 +- /* jmp cleanup_addr
7982 +- * addrs[i] - 11, because there are 11 bytes
7983 +- * after this insn: div, mov, pop, pop, mov
7984 +- */
7985 +- jmp_offset = ctx->cleanup_addr - (addrs[i] - 11);
7986 +- EMIT1_off32(0xE9, jmp_offset);
7987 +- }
7988 +-
7989 +- if (BPF_CLASS(insn->code) == BPF_ALU64)
7990 +- /* div r11 */
7991 +- EMIT3(0x49, 0xF7, 0xF3);
7992 +- else
7993 +- /* div r11d */
7994 +- EMIT3(0x41, 0xF7, 0xF3);
7995 +-
7996 +- if (BPF_OP(insn->code) == BPF_MOD)
7997 +- /* mov r11, rdx */
7998 +- EMIT3(0x49, 0x89, 0xD3);
7999 +- else
8000 +- /* mov r11, rax */
8001 +- EMIT3(0x49, 0x89, 0xC3);
8002 +-
8003 +- EMIT1(0x5A); /* pop rdx */
8004 +- EMIT1(0x58); /* pop rax */
8005 +-
8006 +- /* mov dst_reg, r11 */
8007 +- EMIT_mov(dst_reg, AUX_REG);
8008 +- break;
8009 +-
8010 +- case BPF_ALU | BPF_MUL | BPF_K:
8011 +- case BPF_ALU | BPF_MUL | BPF_X:
8012 +- case BPF_ALU64 | BPF_MUL | BPF_K:
8013 +- case BPF_ALU64 | BPF_MUL | BPF_X:
8014 +- EMIT1(0x50); /* push rax */
8015 +- EMIT1(0x52); /* push rdx */
8016 +-
8017 +- /* mov r11, dst_reg */
8018 +- EMIT_mov(AUX_REG, dst_reg);
8019 +-
8020 +- if (BPF_SRC(insn->code) == BPF_X)
8021 +- /* mov rax, src_reg */
8022 +- EMIT_mov(BPF_REG_0, src_reg);
8023 +- else
8024 +- /* mov rax, imm32 */
8025 +- EMIT3_off32(0x48, 0xC7, 0xC0, imm32);
8026 +-
8027 +- if (BPF_CLASS(insn->code) == BPF_ALU64)
8028 +- EMIT1(add_1mod(0x48, AUX_REG));
8029 +- else if (is_ereg(AUX_REG))
8030 +- EMIT1(add_1mod(0x40, AUX_REG));
8031 +- /* mul(q) r11 */
8032 +- EMIT2(0xF7, add_1reg(0xE0, AUX_REG));
8033 +-
8034 +- /* mov r11, rax */
8035 +- EMIT_mov(AUX_REG, BPF_REG_0);
8036 +-
8037 +- EMIT1(0x5A); /* pop rdx */
8038 +- EMIT1(0x58); /* pop rax */
8039 +-
8040 +- /* mov dst_reg, r11 */
8041 +- EMIT_mov(dst_reg, AUX_REG);
8042 +- break;
8043 +-
8044 +- /* shifts */
8045 +- case BPF_ALU | BPF_LSH | BPF_K:
8046 +- case BPF_ALU | BPF_RSH | BPF_K:
8047 +- case BPF_ALU | BPF_ARSH | BPF_K:
8048 +- case BPF_ALU64 | BPF_LSH | BPF_K:
8049 +- case BPF_ALU64 | BPF_RSH | BPF_K:
8050 +- case BPF_ALU64 | BPF_ARSH | BPF_K:
8051 +- if (BPF_CLASS(insn->code) == BPF_ALU64)
8052 +- EMIT1(add_1mod(0x48, dst_reg));
8053 +- else if (is_ereg(dst_reg))
8054 +- EMIT1(add_1mod(0x40, dst_reg));
8055 +-
8056 +- switch (BPF_OP(insn->code)) {
8057 +- case BPF_LSH: b3 = 0xE0; break;
8058 +- case BPF_RSH: b3 = 0xE8; break;
8059 +- case BPF_ARSH: b3 = 0xF8; break;
8060 +- }
8061 +- EMIT3(0xC1, add_1reg(b3, dst_reg), imm32);
8062 +- break;
8063 +-
8064 +- case BPF_ALU | BPF_END | BPF_FROM_BE:
8065 +- switch (imm32) {
8066 +- case 16:
8067 +- /* emit 'ror %ax, 8' to swap lower 2 bytes */
8068 +- EMIT1(0x66);
8069 +- if (is_ereg(dst_reg))
8070 +- EMIT1(0x41);
8071 +- EMIT3(0xC1, add_1reg(0xC8, dst_reg), 8);
8072 +- break;
8073 +- case 32:
8074 +- /* emit 'bswap eax' to swap lower 4 bytes */
8075 +- if (is_ereg(dst_reg))
8076 +- EMIT2(0x41, 0x0F);
8077 +- else
8078 +- EMIT1(0x0F);
8079 +- EMIT1(add_1reg(0xC8, dst_reg));
8080 +- break;
8081 +- case 64:
8082 +- /* emit 'bswap rax' to swap 8 bytes */
8083 +- EMIT3(add_1mod(0x48, dst_reg), 0x0F,
8084 +- add_1reg(0xC8, dst_reg));
8085 +- break;
8086 +- }
8087 +- break;
8088 +-
8089 +- case BPF_ALU | BPF_END | BPF_FROM_LE:
8090 +- break;
8091 +-
8092 +- /* ST: *(u8*)(dst_reg + off) = imm */
8093 +- case BPF_ST | BPF_MEM | BPF_B:
8094 +- if (is_ereg(dst_reg))
8095 +- EMIT2(0x41, 0xC6);
8096 +- else
8097 +- EMIT1(0xC6);
8098 +- goto st;
8099 +- case BPF_ST | BPF_MEM | BPF_H:
8100 +- if (is_ereg(dst_reg))
8101 +- EMIT3(0x66, 0x41, 0xC7);
8102 +- else
8103 +- EMIT2(0x66, 0xC7);
8104 +- goto st;
8105 +- case BPF_ST | BPF_MEM | BPF_W:
8106 +- if (is_ereg(dst_reg))
8107 +- EMIT2(0x41, 0xC7);
8108 +- else
8109 +- EMIT1(0xC7);
8110 +- goto st;
8111 +- case BPF_ST | BPF_MEM | BPF_DW:
8112 +- EMIT2(add_1mod(0x48, dst_reg), 0xC7);
8113 +-
8114 +-st: if (is_imm8(insn->off))
8115 +- EMIT2(add_1reg(0x40, dst_reg), insn->off);
8116 +- else
8117 +- EMIT1_off32(add_1reg(0x80, dst_reg), insn->off);
8118 +-
8119 +- EMIT(imm32, bpf_size_to_x86_bytes(BPF_SIZE(insn->code)));
8120 +- break;
8121 +-
8122 +- /* STX: *(u8*)(dst_reg + off) = src_reg */
8123 +- case BPF_STX | BPF_MEM | BPF_B:
8124 +- /* emit 'mov byte ptr [rax + off], al' */
8125 +- if (is_ereg(dst_reg) || is_ereg(src_reg) ||
8126 +- /* have to add extra byte for x86 SIL, DIL regs */
8127 +- src_reg == BPF_REG_1 || src_reg == BPF_REG_2)
8128 +- EMIT2(add_2mod(0x40, dst_reg, src_reg), 0x88);
8129 +- else
8130 +- EMIT1(0x88);
8131 +- goto stx;
8132 +- case BPF_STX | BPF_MEM | BPF_H:
8133 +- if (is_ereg(dst_reg) || is_ereg(src_reg))
8134 +- EMIT3(0x66, add_2mod(0x40, dst_reg, src_reg), 0x89);
8135 +- else
8136 +- EMIT2(0x66, 0x89);
8137 +- goto stx;
8138 +- case BPF_STX | BPF_MEM | BPF_W:
8139 +- if (is_ereg(dst_reg) || is_ereg(src_reg))
8140 +- EMIT2(add_2mod(0x40, dst_reg, src_reg), 0x89);
8141 +- else
8142 +- EMIT1(0x89);
8143 +- goto stx;
8144 +- case BPF_STX | BPF_MEM | BPF_DW:
8145 +- EMIT2(add_2mod(0x48, dst_reg, src_reg), 0x89);
8146 +-stx: if (is_imm8(insn->off))
8147 +- EMIT2(add_2reg(0x40, dst_reg, src_reg), insn->off);
8148 +- else
8149 +- EMIT1_off32(add_2reg(0x80, dst_reg, src_reg),
8150 +- insn->off);
8151 +- break;
8152 +-
8153 +- /* LDX: dst_reg = *(u8*)(src_reg + off) */
8154 +- case BPF_LDX | BPF_MEM | BPF_B:
8155 +- /* emit 'movzx rax, byte ptr [rax + off]' */
8156 +- EMIT3(add_2mod(0x48, src_reg, dst_reg), 0x0F, 0xB6);
8157 +- goto ldx;
8158 +- case BPF_LDX | BPF_MEM | BPF_H:
8159 +- /* emit 'movzx rax, word ptr [rax + off]' */
8160 +- EMIT3(add_2mod(0x48, src_reg, dst_reg), 0x0F, 0xB7);
8161 +- goto ldx;
8162 +- case BPF_LDX | BPF_MEM | BPF_W:
8163 +- /* emit 'mov eax, dword ptr [rax+0x14]' */
8164 +- if (is_ereg(dst_reg) || is_ereg(src_reg))
8165 +- EMIT2(add_2mod(0x40, src_reg, dst_reg), 0x8B);
8166 +- else
8167 +- EMIT1(0x8B);
8168 +- goto ldx;
8169 +- case BPF_LDX | BPF_MEM | BPF_DW:
8170 +- /* emit 'mov rax, qword ptr [rax+0x14]' */
8171 +- EMIT2(add_2mod(0x48, src_reg, dst_reg), 0x8B);
8172 +-ldx: /* if insn->off == 0 we can save one extra byte, but
8173 +- * special case of x86 r13 which always needs an offset
8174 +- * is not worth the hassle
8175 +- */
8176 +- if (is_imm8(insn->off))
8177 +- EMIT2(add_2reg(0x40, src_reg, dst_reg), insn->off);
8178 +- else
8179 +- EMIT1_off32(add_2reg(0x80, src_reg, dst_reg),
8180 +- insn->off);
8181 +- break;
8182 +-
8183 +- /* STX XADD: lock *(u32*)(dst_reg + off) += src_reg */
8184 +- case BPF_STX | BPF_XADD | BPF_W:
8185 +- /* emit 'lock add dword ptr [rax + off], eax' */
8186 +- if (is_ereg(dst_reg) || is_ereg(src_reg))
8187 +- EMIT3(0xF0, add_2mod(0x40, dst_reg, src_reg), 0x01);
8188 +- else
8189 +- EMIT2(0xF0, 0x01);
8190 +- goto xadd;
8191 +- case BPF_STX | BPF_XADD | BPF_DW:
8192 +- EMIT3(0xF0, add_2mod(0x48, dst_reg, src_reg), 0x01);
8193 +-xadd: if (is_imm8(insn->off))
8194 +- EMIT2(add_2reg(0x40, dst_reg, src_reg), insn->off);
8195 +- else
8196 +- EMIT1_off32(add_2reg(0x80, dst_reg, src_reg),
8197 +- insn->off);
8198 +- break;
8199 +-
8200 +- /* call */
8201 +- case BPF_JMP | BPF_CALL:
8202 +- func = (u8 *) __bpf_call_base + imm32;
8203 +- jmp_offset = func - (image + addrs[i]);
8204 +- if (ctx->seen_ld_abs) {
8205 +- EMIT2(0x41, 0x52); /* push %r10 */
8206 +- EMIT2(0x41, 0x51); /* push %r9 */
8207 +- /* need to adjust jmp offset, since
8208 +- * pop %r9, pop %r10 take 4 bytes after call insn
8209 +- */
8210 +- jmp_offset += 4;
8211 +- }
8212 +- if (!imm32 || !is_simm32(jmp_offset)) {
8213 +- pr_err("unsupported bpf func %d addr %p image %p\n",
8214 +- imm32, func, image);
8215 +- return -EINVAL;
8216 +- }
8217 +- EMIT1_off32(0xE8, jmp_offset);
8218 +- if (ctx->seen_ld_abs) {
8219 +- EMIT2(0x41, 0x59); /* pop %r9 */
8220 +- EMIT2(0x41, 0x5A); /* pop %r10 */
8221 +- }
8222 +- break;
8223 +-
8224 +- /* cond jump */
8225 +- case BPF_JMP | BPF_JEQ | BPF_X:
8226 +- case BPF_JMP | BPF_JNE | BPF_X:
8227 +- case BPF_JMP | BPF_JGT | BPF_X:
8228 +- case BPF_JMP | BPF_JGE | BPF_X:
8229 +- case BPF_JMP | BPF_JSGT | BPF_X:
8230 +- case BPF_JMP | BPF_JSGE | BPF_X:
8231 +- /* cmp dst_reg, src_reg */
8232 +- EMIT3(add_2mod(0x48, dst_reg, src_reg), 0x39,
8233 +- add_2reg(0xC0, dst_reg, src_reg));
8234 +- goto emit_cond_jmp;
8235 +-
8236 +- case BPF_JMP | BPF_JSET | BPF_X:
8237 +- /* test dst_reg, src_reg */
8238 +- EMIT3(add_2mod(0x48, dst_reg, src_reg), 0x85,
8239 +- add_2reg(0xC0, dst_reg, src_reg));
8240 +- goto emit_cond_jmp;
8241 +-
8242 +- case BPF_JMP | BPF_JSET | BPF_K:
8243 +- /* test dst_reg, imm32 */
8244 +- EMIT1(add_1mod(0x48, dst_reg));
8245 +- EMIT2_off32(0xF7, add_1reg(0xC0, dst_reg), imm32);
8246 +- goto emit_cond_jmp;
8247 +-
8248 +- case BPF_JMP | BPF_JEQ | BPF_K:
8249 +- case BPF_JMP | BPF_JNE | BPF_K:
8250 +- case BPF_JMP | BPF_JGT | BPF_K:
8251 +- case BPF_JMP | BPF_JGE | BPF_K:
8252 +- case BPF_JMP | BPF_JSGT | BPF_K:
8253 +- case BPF_JMP | BPF_JSGE | BPF_K:
8254 +- /* cmp dst_reg, imm8/32 */
8255 +- EMIT1(add_1mod(0x48, dst_reg));
8256 +-
8257 +- if (is_imm8(imm32))
8258 +- EMIT3(0x83, add_1reg(0xF8, dst_reg), imm32);
8259 +- else
8260 +- EMIT2_off32(0x81, add_1reg(0xF8, dst_reg), imm32);
8261 +-
8262 +-emit_cond_jmp: /* convert BPF opcode to x86 */
8263 +- switch (BPF_OP(insn->code)) {
8264 +- case BPF_JEQ:
8265 +- jmp_cond = X86_JE;
8266 +- break;
8267 +- case BPF_JSET:
8268 +- case BPF_JNE:
8269 +- jmp_cond = X86_JNE;
8270 +- break;
8271 +- case BPF_JGT:
8272 +- /* GT is unsigned '>', JA in x86 */
8273 +- jmp_cond = X86_JA;
8274 +- break;
8275 +- case BPF_JGE:
8276 +- /* GE is unsigned '>=', JAE in x86 */
8277 +- jmp_cond = X86_JAE;
8278 +- break;
8279 +- case BPF_JSGT:
8280 +- /* signed '>', GT in x86 */
8281 +- jmp_cond = X86_JG;
8282 +- break;
8283 +- case BPF_JSGE:
8284 +- /* signed '>=', GE in x86 */
8285 +- jmp_cond = X86_JGE;
8286 +- break;
8287 +- default: /* to silence gcc warning */
8288 +- return -EFAULT;
8289 +- }
8290 +- jmp_offset = addrs[i + insn->off] - addrs[i];
8291 +- if (is_imm8(jmp_offset)) {
8292 +- EMIT2(jmp_cond, jmp_offset);
8293 +- } else if (is_simm32(jmp_offset)) {
8294 +- EMIT2_off32(0x0F, jmp_cond + 0x10, jmp_offset);
8295 +- } else {
8296 +- pr_err("cond_jmp gen bug %llx\n", jmp_offset);
8297 +- return -EFAULT;
8298 +- }
8299 +-
8300 +- break;
8301 +-
8302 +- case BPF_JMP | BPF_JA:
8303 +- jmp_offset = addrs[i + insn->off] - addrs[i];
8304 +- if (!jmp_offset)
8305 +- /* optimize out nop jumps */
8306 +- break;
8307 +-emit_jmp:
8308 +- if (is_imm8(jmp_offset)) {
8309 +- EMIT2(0xEB, jmp_offset);
8310 +- } else if (is_simm32(jmp_offset)) {
8311 +- EMIT1_off32(0xE9, jmp_offset);
8312 +- } else {
8313 +- pr_err("jmp gen bug %llx\n", jmp_offset);
8314 +- return -EFAULT;
8315 +- }
8316 +- break;
8317 +-
8318 +- case BPF_LD | BPF_IND | BPF_W:
8319 +- func = sk_load_word;
8320 +- goto common_load;
8321 +- case BPF_LD | BPF_ABS | BPF_W:
8322 +- func = CHOOSE_LOAD_FUNC(imm32, sk_load_word);
8323 +-common_load: ctx->seen_ld_abs = true;
8324 +- jmp_offset = func - (image + addrs[i]);
8325 +- if (!func || !is_simm32(jmp_offset)) {
8326 +- pr_err("unsupported bpf func %d addr %p image %p\n",
8327 +- imm32, func, image);
8328 +- return -EINVAL;
8329 +- }
8330 +- if (BPF_MODE(insn->code) == BPF_ABS) {
8331 +- /* mov %esi, imm32 */
8332 +- EMIT1_off32(0xBE, imm32);
8333 +- } else {
8334 +- /* mov %rsi, src_reg */
8335 +- EMIT_mov(BPF_REG_2, src_reg);
8336 +- if (imm32) {
8337 +- if (is_imm8(imm32))
8338 +- /* add %esi, imm8 */
8339 +- EMIT3(0x83, 0xC6, imm32);
8340 +- else
8341 +- /* add %esi, imm32 */
8342 +- EMIT2_off32(0x81, 0xC6, imm32);
8343 +- }
8344 +- }
8345 +- /* skb pointer is in R6 (%rbx), it will be copied into
8346 +- * %rdi if skb_copy_bits() call is necessary.
8347 +- * sk_load_* helpers also use %r10 and %r9d.
8348 +- * See bpf_jit.S
8349 +- */
8350 +- EMIT1_off32(0xE8, jmp_offset); /* call */
8351 +- break;
8352 +-
8353 +- case BPF_LD | BPF_IND | BPF_H:
8354 +- func = sk_load_half;
8355 +- goto common_load;
8356 +- case BPF_LD | BPF_ABS | BPF_H:
8357 +- func = CHOOSE_LOAD_FUNC(imm32, sk_load_half);
8358 +- goto common_load;
8359 +- case BPF_LD | BPF_IND | BPF_B:
8360 +- func = sk_load_byte;
8361 +- goto common_load;
8362 +- case BPF_LD | BPF_ABS | BPF_B:
8363 +- func = CHOOSE_LOAD_FUNC(imm32, sk_load_byte);
8364 +- goto common_load;
8365 +-
8366 +- case BPF_JMP | BPF_EXIT:
8367 +- if (i != insn_cnt - 1) {
8368 +- jmp_offset = ctx->cleanup_addr - addrs[i];
8369 +- goto emit_jmp;
8370 +- }
8371 +- /* update cleanup_addr */
8372 +- ctx->cleanup_addr = proglen;
8373 +- /* mov rbx, qword ptr [rbp-X] */
8374 +- EMIT3_off32(0x48, 0x8B, 0x9D, -stacksize);
8375 +- /* mov r13, qword ptr [rbp-X] */
8376 +- EMIT3_off32(0x4C, 0x8B, 0xAD, -stacksize + 8);
8377 +- /* mov r14, qword ptr [rbp-X] */
8378 +- EMIT3_off32(0x4C, 0x8B, 0xB5, -stacksize + 16);
8379 +- /* mov r15, qword ptr [rbp-X] */
8380 +- EMIT3_off32(0x4C, 0x8B, 0xBD, -stacksize + 24);
8381 +-
8382 +- EMIT1(0xC9); /* leave */
8383 +- EMIT1(0xC3); /* ret */
8384 +- break;
8385 +-
8386 +- default:
8387 +- /* By design x64 JIT should support all BPF instructions
8388 +- * This error will be seen if new instruction was added
8389 +- * to interpreter, but not to JIT
8390 +- * or if there is junk in sk_filter
8391 +- */
8392 +- pr_err("bpf_jit: unknown opcode %02x\n", insn->code);
8393 +- return -EINVAL;
8394 +- }
8395 +-
8396 +- ilen = prog - temp;
8397 +- if (image) {
8398 +- if (unlikely(proglen + ilen > oldproglen)) {
8399 +- pr_err("bpf_jit_compile fatal error\n");
8400 +- return -EFAULT;
8401 +- }
8402 +- memcpy(image + proglen, temp, ilen);
8403 +- }
8404 +- proglen += ilen;
8405 +- addrs[i] = proglen;
8406 +- prog = temp;
8407 +- }
8408 +- return proglen;
8409 +-}
8410 +-
8411 +-void bpf_jit_compile(struct sk_filter *prog)
8412 +-{
8413 +-}
8414 +-
8415 +-void bpf_int_jit_compile(struct sk_filter *prog)
8416 +-{
8417 +- struct bpf_binary_header *header = NULL;
8418 +- int proglen, oldproglen = 0;
8419 +- struct jit_context ctx = {};
8420 ++void bpf_jit_compile(struct sk_filter *fp)
8421 ++{
8422 + u8 temp[MAX_INSTR_CODE_SIZE];
8423 - u8 *prog;
8424 - unsigned int proglen, oldproglen = 0;
8425 - int ilen, i;
8426 - int t_offset, f_offset;
8427 - u8 t_op, f_op, seen = 0, pass;
8428 ++ u8 *prog;
8429 ++ unsigned int proglen, oldproglen = 0;
8430 ++ int ilen, i;
8431 ++ int t_offset, f_offset;
8432 ++ u8 t_op, f_op, seen = 0, pass;
8433 u8 *image = NULL;
8434 -- struct bpf_binary_header *header = NULL;
8435 +- int *addrs;
8436 +- int pass;
8437 +- int i;
8438 + u8 *header = NULL;
8439 - u8 *func;
8440 - int pc_ret0 = -1; /* bpf index of first RET #0 instruction (if any) */
8441 - unsigned int cleanup_addr; /* epilogue code offset */
8442 - unsigned int *addrs;
8443 - const struct sock_filter *filter = fp->insns;
8444 - int flen = fp->len;
8445 ++ u8 *func;
8446 ++ int pc_ret0 = -1; /* bpf index of first RET #0 instruction (if any) */
8447 ++ unsigned int cleanup_addr; /* epilogue code offset */
8448 ++ unsigned int *addrs;
8449 ++ const struct sock_filter *filter = fp->insns;
8450 ++ int flen = fp->len;
8451 +#ifdef CONFIG_GRKERNSEC_JIT_HARDEN
8452 + unsigned int randkey;
8453 +#endif
8454
8455 if (!bpf_jit_enable)
8456 return;
8457 -@@ -203,10 +298,10 @@ void bpf_jit_compile(struct sk_filter *fp)
8458 +
8459 +- if (!prog || !prog->len)
8460 +- return;
8461 +-
8462 +- addrs = kmalloc(prog->len * sizeof(*addrs), GFP_KERNEL);
8463 +- if (!addrs)
8464 ++ addrs = kmalloc(flen * sizeof(*addrs), GFP_KERNEL);
8465 ++ if (addrs == NULL)
8466 return;
8467
8468 /* Before first pass, make a rough estimation of addrs[]
8469 - * each bpf instruction is translated to less than 64 bytes
8470 + * each bpf instruction is translated to less than MAX_INSTR_CODE_SIZE bytes
8471 */
8472 - for (proglen = 0, i = 0; i < flen; i++) {
8473 +- for (proglen = 0, i = 0; i < prog->len; i++) {
8474 - proglen += 64;
8475 ++ for (proglen = 0, i = 0; i < flen; i++) {
8476 + proglen += MAX_INSTR_CODE_SIZE;
8477 addrs[i] = proglen;
8478 }
8479 - cleanup_addr = proglen; /* epilogue address */
8480 -@@ -285,6 +380,10 @@ void bpf_jit_compile(struct sk_filter *fp)
8481 - for (i = 0; i < flen; i++) {
8482 - unsigned int K = filter[i].k;
8483 -
8484 +- ctx.cleanup_addr = proglen;
8485 ++ cleanup_addr = proglen; /* epilogue address */
8486 +
8487 + for (pass = 0; pass < 10; pass++) {
8488 +- proglen = do_jit(prog, addrs, image, oldproglen, &ctx);
8489 +- if (proglen <= 0) {
8490 +- image = NULL;
8491 +- if (header)
8492 +- module_free(NULL, header);
8493 +- goto out;
8494 ++ u8 seen_or_pass0 = (pass == 0) ? (SEEN_XREG | SEEN_DATAREF | SEEN_MEM) : seen;
8495 ++ /* no prologue/epilogue for trivial filters (RET something) */
8496 ++ proglen = 0;
8497 ++ prog = temp;
8498 ++
8499 ++ if (seen_or_pass0) {
8500 ++ EMIT4(0x55, 0x48, 0x89, 0xe5); /* push %rbp; mov %rsp,%rbp */
8501 ++ EMIT4(0x48, 0x83, 0xec, 96); /* subq $96,%rsp */
8502 ++ /* note : must save %rbx in case bpf_error is hit */
8503 ++ if (seen_or_pass0 & (SEEN_XREG | SEEN_DATAREF))
8504 ++ EMIT4(0x48, 0x89, 0x5d, 0xf8); /* mov %rbx, -8(%rbp) */
8505 ++ if (seen_or_pass0 & SEEN_XREG)
8506 ++ CLEAR_X(); /* make sure we dont leek kernel memory */
8507 ++
8508 ++ /*
8509 ++ * If this filter needs to access skb data,
8510 ++ * loads r9 and r8 with :
8511 ++ * r9 = skb->len - skb->data_len
8512 ++ * r8 = skb->data
8513 ++ */
8514 ++ if (seen_or_pass0 & SEEN_DATAREF) {
8515 ++ if (offsetof(struct sk_buff, len) <= 127)
8516 ++ /* mov off8(%rdi),%r9d */
8517 ++ EMIT4(0x44, 0x8b, 0x4f, offsetof(struct sk_buff, len));
8518 ++ else {
8519 ++ /* mov off32(%rdi),%r9d */
8520 ++ EMIT3(0x44, 0x8b, 0x8f);
8521 ++ EMIT(offsetof(struct sk_buff, len), 4);
8522 ++ }
8523 ++ if (is_imm8(offsetof(struct sk_buff, data_len)))
8524 ++ /* sub off8(%rdi),%r9d */
8525 ++ EMIT4(0x44, 0x2b, 0x4f, offsetof(struct sk_buff, data_len));
8526 ++ else {
8527 ++ EMIT3(0x44, 0x2b, 0x8f);
8528 ++ EMIT(offsetof(struct sk_buff, data_len), 4);
8529 ++ }
8530 ++
8531 ++ if (is_imm8(offsetof(struct sk_buff, data)))
8532 ++ /* mov off8(%rdi),%r8 */
8533 ++ EMIT4(0x4c, 0x8b, 0x47, offsetof(struct sk_buff, data));
8534 ++ else {
8535 ++ /* mov off32(%rdi),%r8 */
8536 ++ EMIT3(0x4c, 0x8b, 0x87);
8537 ++ EMIT(offsetof(struct sk_buff, data), 4);
8538 ++ }
8539 ++ }
8540 + }
8541 ++
8542 ++ switch (filter[0].code) {
8543 ++ case BPF_S_RET_K:
8544 ++ case BPF_S_LD_W_LEN:
8545 ++ case BPF_S_ANC_PROTOCOL:
8546 ++ case BPF_S_ANC_IFINDEX:
8547 ++ case BPF_S_ANC_MARK:
8548 ++ case BPF_S_ANC_RXHASH:
8549 ++ case BPF_S_ANC_CPU:
8550 ++ case BPF_S_ANC_VLAN_TAG:
8551 ++ case BPF_S_ANC_VLAN_TAG_PRESENT:
8552 ++ case BPF_S_ANC_QUEUE:
8553 ++ case BPF_S_ANC_PKTTYPE:
8554 ++ case BPF_S_LD_W_ABS:
8555 ++ case BPF_S_LD_H_ABS:
8556 ++ case BPF_S_LD_B_ABS:
8557 ++ /* first instruction sets A register (or is RET 'constant') */
8558 ++ break;
8559 ++ default:
8560 ++ /* make sure we dont leak kernel information to user */
8561 ++ CLEAR_A(); /* A = 0 */
8562 ++ }
8563 ++
8564 ++ for (i = 0; i < flen; i++) {
8565 ++ unsigned int K = filter[i].k;
8566 ++
8567 +#ifdef CONFIG_GRKERNSEC_JIT_HARDEN
8568 + randkey = prandom_u32();
8569 +#endif
8570 +
8571 - switch (filter[i].code) {
8572 - case BPF_S_ALU_ADD_X: /* A += X; */
8573 - seen |= SEEN_XREG;
8574 -@@ -317,10 +416,8 @@ void bpf_jit_compile(struct sk_filter *fp)
8575 - case BPF_S_ALU_MUL_K: /* A *= K */
8576 - if (is_imm8(K))
8577 - EMIT3(0x6b, 0xc0, K); /* imul imm8,%eax,%eax */
8578 -- else {
8579 -- EMIT2(0x69, 0xc0); /* imul imm32,%eax */
8580 -- EMIT(K, 4);
8581 -- }
8582 ++ switch (filter[i].code) {
8583 ++ case BPF_S_ALU_ADD_X: /* A += X; */
8584 ++ seen |= SEEN_XREG;
8585 ++ EMIT2(0x01, 0xd8); /* add %ebx,%eax */
8586 ++ break;
8587 ++ case BPF_S_ALU_ADD_K: /* A += K; */
8588 ++ if (!K)
8589 ++ break;
8590 ++ if (is_imm8(K))
8591 ++ EMIT3(0x83, 0xc0, K); /* add imm8,%eax */
8592 ++ else
8593 ++ EMIT1_off32(0x05, K); /* add imm32,%eax */
8594 ++ break;
8595 ++ case BPF_S_ALU_SUB_X: /* A -= X; */
8596 ++ seen |= SEEN_XREG;
8597 ++ EMIT2(0x29, 0xd8); /* sub %ebx,%eax */
8598 ++ break;
8599 ++ case BPF_S_ALU_SUB_K: /* A -= K */
8600 ++ if (!K)
8601 ++ break;
8602 ++ if (is_imm8(K))
8603 ++ EMIT3(0x83, 0xe8, K); /* sub imm8,%eax */
8604 ++ else
8605 ++ EMIT1_off32(0x2d, K); /* sub imm32,%eax */
8606 ++ break;
8607 ++ case BPF_S_ALU_MUL_X: /* A *= X; */
8608 ++ seen |= SEEN_XREG;
8609 ++ EMIT3(0x0f, 0xaf, 0xc3); /* imul %ebx,%eax */
8610 ++ break;
8611 ++ case BPF_S_ALU_MUL_K: /* A *= K */
8612 ++ if (is_imm8(K))
8613 ++ EMIT3(0x6b, 0xc0, K); /* imul imm8,%eax,%eax */
8614 + else
8615 + EMIT2_off32(0x69, 0xc0, K); /* imul imm32,%eax */
8616 - break;
8617 - case BPF_S_ALU_DIV_X: /* A /= X; */
8618 - seen |= SEEN_XREG;
8619 -@@ -364,7 +461,11 @@ void bpf_jit_compile(struct sk_filter *fp)
8620 - break;
8621 - }
8622 - EMIT2(0x31, 0xd2); /* xor %edx,%edx */
8623 ++ break;
8624 ++ case BPF_S_ALU_DIV_X: /* A /= X; */
8625 ++ seen |= SEEN_XREG;
8626 ++ EMIT2(0x85, 0xdb); /* test %ebx,%ebx */
8627 ++ if (pc_ret0 > 0) {
8628 ++ /* addrs[pc_ret0 - 1] is start address of target
8629 ++ * (addrs[i] - 4) is the address following this jmp
8630 ++ * ("xor %edx,%edx; div %ebx" being 4 bytes long)
8631 ++ */
8632 ++ EMIT_COND_JMP(X86_JE, addrs[pc_ret0 - 1] -
8633 ++ (addrs[i] - 4));
8634 ++ } else {
8635 ++ EMIT_COND_JMP(X86_JNE, 2 + 5);
8636 ++ CLEAR_A();
8637 ++ EMIT1_off32(0xe9, cleanup_addr - (addrs[i] - 4)); /* jmp .+off32 */
8638 ++ }
8639 ++ EMIT4(0x31, 0xd2, 0xf7, 0xf3); /* xor %edx,%edx; div %ebx */
8640 ++ break;
8641 ++ case BPF_S_ALU_MOD_X: /* A %= X; */
8642 ++ seen |= SEEN_XREG;
8643 ++ EMIT2(0x85, 0xdb); /* test %ebx,%ebx */
8644 ++ if (pc_ret0 > 0) {
8645 ++ /* addrs[pc_ret0 - 1] is start address of target
8646 ++ * (addrs[i] - 6) is the address following this jmp
8647 ++ * ("xor %edx,%edx; div %ebx;mov %edx,%eax" being 6 bytes long)
8648 ++ */
8649 ++ EMIT_COND_JMP(X86_JE, addrs[pc_ret0 - 1] -
8650 ++ (addrs[i] - 6));
8651 ++ } else {
8652 ++ EMIT_COND_JMP(X86_JNE, 2 + 5);
8653 ++ CLEAR_A();
8654 ++ EMIT1_off32(0xe9, cleanup_addr - (addrs[i] - 6)); /* jmp .+off32 */
8655 ++ }
8656 ++ EMIT2(0x31, 0xd2); /* xor %edx,%edx */
8657 ++ EMIT2(0xf7, 0xf3); /* div %ebx */
8658 ++ EMIT2(0x89, 0xd0); /* mov %edx,%eax */
8659 ++ break;
8660 ++ case BPF_S_ALU_MOD_K: /* A %= K; */
8661 ++ if (K == 1) {
8662 ++ CLEAR_A();
8663 ++ break;
8664 ++ }
8665 ++ EMIT2(0x31, 0xd2); /* xor %edx,%edx */
8666 +#ifdef CONFIG_GRKERNSEC_JIT_HARDEN
8667 + DILUTE_CONST_SEQUENCE(K, randkey);
8668 +#else
8669 - EMIT1(0xb9);EMIT(K, 4); /* mov imm32,%ecx */
8670 ++ EMIT1(0xb9);EMIT(K, 4); /* mov imm32,%ecx */
8671 +#endif
8672 - EMIT2(0xf7, 0xf1); /* div %ecx */
8673 - EMIT2(0x89, 0xd0); /* mov %edx,%eax */
8674 - break;
8675 -@@ -372,7 +473,11 @@ void bpf_jit_compile(struct sk_filter *fp)
8676 - if (K == 1)
8677 - break;
8678 - EMIT2(0x31, 0xd2); /* xor %edx,%edx */
8679 ++ EMIT2(0xf7, 0xf1); /* div %ecx */
8680 ++ EMIT2(0x89, 0xd0); /* mov %edx,%eax */
8681 ++ break;
8682 ++ case BPF_S_ALU_DIV_K: /* A /= K */
8683 ++ if (K == 1)
8684 ++ break;
8685 ++ EMIT2(0x31, 0xd2); /* xor %edx,%edx */
8686 +#ifdef CONFIG_GRKERNSEC_JIT_HARDEN
8687 + DILUTE_CONST_SEQUENCE(K, randkey);
8688 +#else
8689 - EMIT1(0xb9);EMIT(K, 4); /* mov imm32,%ecx */
8690 ++ EMIT1(0xb9);EMIT(K, 4); /* mov imm32,%ecx */
8691 +#endif
8692 - EMIT2(0xf7, 0xf1); /* div %ecx */
8693 - break;
8694 - case BPF_S_ALU_AND_X:
8695 -@@ -643,8 +748,7 @@ common_load_ind: seen |= SEEN_DATAREF | SEEN_XREG;
8696 - if (is_imm8(K)) {
8697 - EMIT3(0x8d, 0x73, K); /* lea imm8(%rbx), %esi */
8698 - } else {
8699 -- EMIT2(0x8d, 0xb3); /* lea imm32(%rbx),%esi */
8700 -- EMIT(K, 4);
8701 ++ EMIT2(0xf7, 0xf1); /* div %ecx */
8702 ++ break;
8703 ++ case BPF_S_ALU_AND_X:
8704 ++ seen |= SEEN_XREG;
8705 ++ EMIT2(0x21, 0xd8); /* and %ebx,%eax */
8706 ++ break;
8707 ++ case BPF_S_ALU_AND_K:
8708 ++ if (K >= 0xFFFFFF00) {
8709 ++ EMIT2(0x24, K & 0xFF); /* and imm8,%al */
8710 ++ } else if (K >= 0xFFFF0000) {
8711 ++ EMIT2(0x66, 0x25); /* and imm16,%ax */
8712 ++ EMIT(K, 2);
8713 ++ } else {
8714 ++ EMIT1_off32(0x25, K); /* and imm32,%eax */
8715 ++ }
8716 ++ break;
8717 ++ case BPF_S_ALU_OR_X:
8718 ++ seen |= SEEN_XREG;
8719 ++ EMIT2(0x09, 0xd8); /* or %ebx,%eax */
8720 ++ break;
8721 ++ case BPF_S_ALU_OR_K:
8722 ++ if (is_imm8(K))
8723 ++ EMIT3(0x83, 0xc8, K); /* or imm8,%eax */
8724 ++ else
8725 ++ EMIT1_off32(0x0d, K); /* or imm32,%eax */
8726 ++ break;
8727 ++ case BPF_S_ANC_ALU_XOR_X: /* A ^= X; */
8728 ++ case BPF_S_ALU_XOR_X:
8729 ++ seen |= SEEN_XREG;
8730 ++ EMIT2(0x31, 0xd8); /* xor %ebx,%eax */
8731 ++ break;
8732 ++ case BPF_S_ALU_XOR_K: /* A ^= K; */
8733 ++ if (K == 0)
8734 ++ break;
8735 ++ if (is_imm8(K))
8736 ++ EMIT3(0x83, 0xf0, K); /* xor imm8,%eax */
8737 ++ else
8738 ++ EMIT1_off32(0x35, K); /* xor imm32,%eax */
8739 ++ break;
8740 ++ case BPF_S_ALU_LSH_X: /* A <<= X; */
8741 ++ seen |= SEEN_XREG;
8742 ++ EMIT4(0x89, 0xd9, 0xd3, 0xe0); /* mov %ebx,%ecx; shl %cl,%eax */
8743 ++ break;
8744 ++ case BPF_S_ALU_LSH_K:
8745 ++ if (K == 0)
8746 ++ break;
8747 ++ else if (K == 1)
8748 ++ EMIT2(0xd1, 0xe0); /* shl %eax */
8749 ++ else
8750 ++ EMIT3(0xc1, 0xe0, K);
8751 ++ break;
8752 ++ case BPF_S_ALU_RSH_X: /* A >>= X; */
8753 ++ seen |= SEEN_XREG;
8754 ++ EMIT4(0x89, 0xd9, 0xd3, 0xe8); /* mov %ebx,%ecx; shr %cl,%eax */
8755 ++ break;
8756 ++ case BPF_S_ALU_RSH_K: /* A >>= K; */
8757 ++ if (K == 0)
8758 ++ break;
8759 ++ else if (K == 1)
8760 ++ EMIT2(0xd1, 0xe8); /* shr %eax */
8761 ++ else
8762 ++ EMIT3(0xc1, 0xe8, K);
8763 ++ break;
8764 ++ case BPF_S_ALU_NEG:
8765 ++ EMIT2(0xf7, 0xd8); /* neg %eax */
8766 ++ break;
8767 ++ case BPF_S_RET_K:
8768 ++ if (!K) {
8769 ++ if (pc_ret0 == -1)
8770 ++ pc_ret0 = i;
8771 ++ CLEAR_A();
8772 ++ } else {
8773 ++ EMIT1_off32(0xb8, K); /* mov $imm32,%eax */
8774 ++ }
8775 ++ /* fallinto */
8776 ++ case BPF_S_RET_A:
8777 ++ if (seen_or_pass0) {
8778 ++ if (i != flen - 1) {
8779 ++ EMIT_JMP(cleanup_addr - addrs[i]);
8780 ++ break;
8781 ++ }
8782 ++ if (seen_or_pass0 & SEEN_XREG)
8783 ++ EMIT4(0x48, 0x8b, 0x5d, 0xf8); /* mov -8(%rbp),%rbx */
8784 ++ EMIT1(0xc9); /* leaveq */
8785 ++ }
8786 ++ EMIT1(0xc3); /* ret */
8787 ++ break;
8788 ++ case BPF_S_MISC_TAX: /* X = A */
8789 ++ seen |= SEEN_XREG;
8790 ++ EMIT2(0x89, 0xc3); /* mov %eax,%ebx */
8791 ++ break;
8792 ++ case BPF_S_MISC_TXA: /* A = X */
8793 ++ seen |= SEEN_XREG;
8794 ++ EMIT2(0x89, 0xd8); /* mov %ebx,%eax */
8795 ++ break;
8796 ++ case BPF_S_LD_IMM: /* A = K */
8797 ++ if (!K)
8798 ++ CLEAR_A();
8799 ++ else
8800 ++ EMIT1_off32(0xb8, K); /* mov $imm32,%eax */
8801 ++ break;
8802 ++ case BPF_S_LDX_IMM: /* X = K */
8803 ++ seen |= SEEN_XREG;
8804 ++ if (!K)
8805 ++ CLEAR_X();
8806 ++ else
8807 ++ EMIT1_off32(0xbb, K); /* mov $imm32,%ebx */
8808 ++ break;
8809 ++ case BPF_S_LD_MEM: /* A = mem[K] : mov off8(%rbp),%eax */
8810 ++ seen |= SEEN_MEM;
8811 ++ EMIT3(0x8b, 0x45, 0xf0 - K*4);
8812 ++ break;
8813 ++ case BPF_S_LDX_MEM: /* X = mem[K] : mov off8(%rbp),%ebx */
8814 ++ seen |= SEEN_XREG | SEEN_MEM;
8815 ++ EMIT3(0x8b, 0x5d, 0xf0 - K*4);
8816 ++ break;
8817 ++ case BPF_S_ST: /* mem[K] = A : mov %eax,off8(%rbp) */
8818 ++ seen |= SEEN_MEM;
8819 ++ EMIT3(0x89, 0x45, 0xf0 - K*4);
8820 ++ break;
8821 ++ case BPF_S_STX: /* mem[K] = X : mov %ebx,off8(%rbp) */
8822 ++ seen |= SEEN_XREG | SEEN_MEM;
8823 ++ EMIT3(0x89, 0x5d, 0xf0 - K*4);
8824 ++ break;
8825 ++ case BPF_S_LD_W_LEN: /* A = skb->len; */
8826 ++ BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, len) != 4);
8827 ++ if (is_imm8(offsetof(struct sk_buff, len)))
8828 ++ /* mov off8(%rdi),%eax */
8829 ++ EMIT3(0x8b, 0x47, offsetof(struct sk_buff, len));
8830 ++ else {
8831 ++ EMIT2(0x8b, 0x87);
8832 ++ EMIT(offsetof(struct sk_buff, len), 4);
8833 ++ }
8834 ++ break;
8835 ++ case BPF_S_LDX_W_LEN: /* X = skb->len; */
8836 ++ seen |= SEEN_XREG;
8837 ++ if (is_imm8(offsetof(struct sk_buff, len)))
8838 ++ /* mov off8(%rdi),%ebx */
8839 ++ EMIT3(0x8b, 0x5f, offsetof(struct sk_buff, len));
8840 ++ else {
8841 ++ EMIT2(0x8b, 0x9f);
8842 ++ EMIT(offsetof(struct sk_buff, len), 4);
8843 ++ }
8844 ++ break;
8845 ++ case BPF_S_ANC_PROTOCOL: /* A = ntohs(skb->protocol); */
8846 ++ BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, protocol) != 2);
8847 ++ if (is_imm8(offsetof(struct sk_buff, protocol))) {
8848 ++ /* movzwl off8(%rdi),%eax */
8849 ++ EMIT4(0x0f, 0xb7, 0x47, offsetof(struct sk_buff, protocol));
8850 ++ } else {
8851 ++ EMIT3(0x0f, 0xb7, 0x87); /* movzwl off32(%rdi),%eax */
8852 ++ EMIT(offsetof(struct sk_buff, protocol), 4);
8853 ++ }
8854 ++ EMIT2(0x86, 0xc4); /* ntohs() : xchg %al,%ah */
8855 ++ break;
8856 ++ case BPF_S_ANC_IFINDEX:
8857 ++ if (is_imm8(offsetof(struct sk_buff, dev))) {
8858 ++ /* movq off8(%rdi),%rax */
8859 ++ EMIT4(0x48, 0x8b, 0x47, offsetof(struct sk_buff, dev));
8860 ++ } else {
8861 ++ EMIT3(0x48, 0x8b, 0x87); /* movq off32(%rdi),%rax */
8862 ++ EMIT(offsetof(struct sk_buff, dev), 4);
8863 ++ }
8864 ++ EMIT3(0x48, 0x85, 0xc0); /* test %rax,%rax */
8865 ++ EMIT_COND_JMP(X86_JE, cleanup_addr - (addrs[i] - 6));
8866 ++ BUILD_BUG_ON(FIELD_SIZEOF(struct net_device, ifindex) != 4);
8867 ++ EMIT2(0x8b, 0x80); /* mov off32(%rax),%eax */
8868 ++ EMIT(offsetof(struct net_device, ifindex), 4);
8869 ++ break;
8870 ++ case BPF_S_ANC_MARK:
8871 ++ BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, mark) != 4);
8872 ++ if (is_imm8(offsetof(struct sk_buff, mark))) {
8873 ++ /* mov off8(%rdi),%eax */
8874 ++ EMIT3(0x8b, 0x47, offsetof(struct sk_buff, mark));
8875 ++ } else {
8876 ++ EMIT2(0x8b, 0x87);
8877 ++ EMIT(offsetof(struct sk_buff, mark), 4);
8878 ++ }
8879 ++ break;
8880 ++ case BPF_S_ANC_RXHASH:
8881 ++ BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, hash) != 4);
8882 ++ if (is_imm8(offsetof(struct sk_buff, hash))) {
8883 ++ /* mov off8(%rdi),%eax */
8884 ++ EMIT3(0x8b, 0x47, offsetof(struct sk_buff, hash));
8885 ++ } else {
8886 ++ EMIT2(0x8b, 0x87);
8887 ++ EMIT(offsetof(struct sk_buff, hash), 4);
8888 ++ }
8889 ++ break;
8890 ++ case BPF_S_ANC_QUEUE:
8891 ++ BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, queue_mapping) != 2);
8892 ++ if (is_imm8(offsetof(struct sk_buff, queue_mapping))) {
8893 ++ /* movzwl off8(%rdi),%eax */
8894 ++ EMIT4(0x0f, 0xb7, 0x47, offsetof(struct sk_buff, queue_mapping));
8895 ++ } else {
8896 ++ EMIT3(0x0f, 0xb7, 0x87); /* movzwl off32(%rdi),%eax */
8897 ++ EMIT(offsetof(struct sk_buff, queue_mapping), 4);
8898 ++ }
8899 ++ break;
8900 ++ case BPF_S_ANC_CPU:
8901 ++#ifdef CONFIG_SMP
8902 ++ EMIT4(0x65, 0x8b, 0x04, 0x25); /* mov %gs:off32,%eax */
8903 ++ EMIT((u32)(unsigned long)&cpu_number, 4); /* A = smp_processor_id(); */
8904 ++#else
8905 ++ CLEAR_A();
8906 ++#endif
8907 ++ break;
8908 ++ case BPF_S_ANC_VLAN_TAG:
8909 ++ case BPF_S_ANC_VLAN_TAG_PRESENT:
8910 ++ BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, vlan_tci) != 2);
8911 ++ if (is_imm8(offsetof(struct sk_buff, vlan_tci))) {
8912 ++ /* movzwl off8(%rdi),%eax */
8913 ++ EMIT4(0x0f, 0xb7, 0x47, offsetof(struct sk_buff, vlan_tci));
8914 ++ } else {
8915 ++ EMIT3(0x0f, 0xb7, 0x87); /* movzwl off32(%rdi),%eax */
8916 ++ EMIT(offsetof(struct sk_buff, vlan_tci), 4);
8917 ++ }
8918 ++ BUILD_BUG_ON(VLAN_TAG_PRESENT != 0x1000);
8919 ++ if (filter[i].code == BPF_S_ANC_VLAN_TAG) {
8920 ++ EMIT3(0x80, 0xe4, 0xef); /* and $0xef,%ah */
8921 ++ } else {
8922 ++ EMIT3(0xc1, 0xe8, 0x0c); /* shr $0xc,%eax */
8923 ++ EMIT3(0x83, 0xe0, 0x01); /* and $0x1,%eax */
8924 ++ }
8925 ++ break;
8926 ++ case BPF_S_ANC_PKTTYPE:
8927 ++ {
8928 ++ int off = pkt_type_offset();
8929 ++
8930 ++ if (off < 0)
8931 ++ goto out;
8932 ++ if (is_imm8(off)) {
8933 ++ /* movzbl off8(%rdi),%eax */
8934 ++ EMIT4(0x0f, 0xb6, 0x47, off);
8935 ++ } else {
8936 ++ /* movbl off32(%rdi),%eax */
8937 ++ EMIT3(0x0f, 0xb6, 0x87);
8938 ++ EMIT(off, 4);
8939 ++ }
8940 ++ EMIT3(0x83, 0xe0, PKT_TYPE_MAX); /* and $0x7,%eax */
8941 ++ break;
8942 ++ }
8943 ++ case BPF_S_LD_W_ABS:
8944 ++ func = CHOOSE_LOAD_FUNC(K, sk_load_word);
8945 ++common_load: seen |= SEEN_DATAREF;
8946 ++ t_offset = func - (image + addrs[i]);
8947 ++ EMIT1_off32(0xbe, K); /* mov imm32,%esi */
8948 ++ EMIT1_off32(0xe8, t_offset); /* call */
8949 ++ break;
8950 ++ case BPF_S_LD_H_ABS:
8951 ++ func = CHOOSE_LOAD_FUNC(K, sk_load_half);
8952 ++ goto common_load;
8953 ++ case BPF_S_LD_B_ABS:
8954 ++ func = CHOOSE_LOAD_FUNC(K, sk_load_byte);
8955 ++ goto common_load;
8956 ++ case BPF_S_LDX_B_MSH:
8957 ++ func = CHOOSE_LOAD_FUNC(K, sk_load_byte_msh);
8958 ++ seen |= SEEN_DATAREF | SEEN_XREG;
8959 ++ t_offset = func - (image + addrs[i]);
8960 ++ EMIT1_off32(0xbe, K); /* mov imm32,%esi */
8961 ++ EMIT1_off32(0xe8, t_offset); /* call sk_load_byte_msh */
8962 ++ break;
8963 ++ case BPF_S_LD_W_IND:
8964 ++ func = sk_load_word;
8965 ++common_load_ind: seen |= SEEN_DATAREF | SEEN_XREG;
8966 ++ t_offset = func - (image + addrs[i]);
8967 ++ if (K) {
8968 ++ if (is_imm8(K)) {
8969 ++ EMIT3(0x8d, 0x73, K); /* lea imm8(%rbx), %esi */
8970 ++ } else {
8971 + EMIT2_off32(0x8d, 0xb3, K); /* lea imm32(%rbx),%esi */
8972 - }
8973 - } else {
8974 - EMIT2(0x89,0xde); /* mov %ebx,%esi */
8975 -@@ -734,10 +838,12 @@ cond_branch: f_offset = addrs[i + filter[i].jf] - addrs[i];
8976 - if (unlikely(proglen + ilen > oldproglen)) {
8977 - pr_err("bpb_jit_compile fatal error\n");
8978 - kfree(addrs);
8979 -- module_free(NULL, header);
8980 ++ }
8981 ++ } else {
8982 ++ EMIT2(0x89,0xde); /* mov %ebx,%esi */
8983 ++ }
8984 ++ EMIT1_off32(0xe8, t_offset); /* call sk_load_xxx_ind */
8985 ++ break;
8986 ++ case BPF_S_LD_H_IND:
8987 ++ func = sk_load_half;
8988 ++ goto common_load_ind;
8989 ++ case BPF_S_LD_B_IND:
8990 ++ func = sk_load_byte;
8991 ++ goto common_load_ind;
8992 ++ case BPF_S_JMP_JA:
8993 ++ t_offset = addrs[i + K] - addrs[i];
8994 ++ EMIT_JMP(t_offset);
8995 ++ break;
8996 ++ COND_SEL(BPF_S_JMP_JGT_K, X86_JA, X86_JBE);
8997 ++ COND_SEL(BPF_S_JMP_JGE_K, X86_JAE, X86_JB);
8998 ++ COND_SEL(BPF_S_JMP_JEQ_K, X86_JE, X86_JNE);
8999 ++ COND_SEL(BPF_S_JMP_JSET_K,X86_JNE, X86_JE);
9000 ++ COND_SEL(BPF_S_JMP_JGT_X, X86_JA, X86_JBE);
9001 ++ COND_SEL(BPF_S_JMP_JGE_X, X86_JAE, X86_JB);
9002 ++ COND_SEL(BPF_S_JMP_JEQ_X, X86_JE, X86_JNE);
9003 ++ COND_SEL(BPF_S_JMP_JSET_X,X86_JNE, X86_JE);
9004 ++
9005 ++cond_branch: f_offset = addrs[i + filter[i].jf] - addrs[i];
9006 ++ t_offset = addrs[i + filter[i].jt] - addrs[i];
9007 ++
9008 ++ /* same targets, can avoid doing the test :) */
9009 ++ if (filter[i].jt == filter[i].jf) {
9010 ++ EMIT_JMP(t_offset);
9011 ++ break;
9012 ++ }
9013 ++
9014 ++ switch (filter[i].code) {
9015 ++ case BPF_S_JMP_JGT_X:
9016 ++ case BPF_S_JMP_JGE_X:
9017 ++ case BPF_S_JMP_JEQ_X:
9018 ++ seen |= SEEN_XREG;
9019 ++ EMIT2(0x39, 0xd8); /* cmp %ebx,%eax */
9020 ++ break;
9021 ++ case BPF_S_JMP_JSET_X:
9022 ++ seen |= SEEN_XREG;
9023 ++ EMIT2(0x85, 0xd8); /* test %ebx,%eax */
9024 ++ break;
9025 ++ case BPF_S_JMP_JEQ_K:
9026 ++ if (K == 0) {
9027 ++ EMIT2(0x85, 0xc0); /* test %eax,%eax */
9028 ++ break;
9029 ++ }
9030 ++ case BPF_S_JMP_JGT_K:
9031 ++ case BPF_S_JMP_JGE_K:
9032 ++ if (K <= 127)
9033 ++ EMIT3(0x83, 0xf8, K); /* cmp imm8,%eax */
9034 ++ else
9035 ++ EMIT1_off32(0x3d, K); /* cmp imm32,%eax */
9036 ++ break;
9037 ++ case BPF_S_JMP_JSET_K:
9038 ++ if (K <= 0xFF)
9039 ++ EMIT2(0xa8, K); /* test imm8,%al */
9040 ++ else if (!(K & 0xFFFF00FF))
9041 ++ EMIT3(0xf6, 0xc4, K >> 8); /* test imm8,%ah */
9042 ++ else if (K <= 0xFFFF) {
9043 ++ EMIT2(0x66, 0xa9); /* test imm16,%ax */
9044 ++ EMIT(K, 2);
9045 ++ } else {
9046 ++ EMIT1_off32(0xa9, K); /* test imm32,%eax */
9047 ++ }
9048 ++ break;
9049 ++ }
9050 ++ if (filter[i].jt != 0) {
9051 ++ if (filter[i].jf && f_offset)
9052 ++ t_offset += is_near(f_offset) ? 2 : 5;
9053 ++ EMIT_COND_JMP(t_op, t_offset);
9054 ++ if (filter[i].jf)
9055 ++ EMIT_JMP(f_offset);
9056 ++ break;
9057 ++ }
9058 ++ EMIT_COND_JMP(f_op, f_offset);
9059 ++ break;
9060 ++ default:
9061 ++ /* hmm, too complex filter, give up with jit compiler */
9062 ++ goto out;
9063 ++ }
9064 ++ ilen = prog - temp;
9065 ++ if (image) {
9066 ++ if (unlikely(proglen + ilen > oldproglen)) {
9067 ++ pr_err("bpb_jit_compile fatal error\n");
9068 ++ kfree(addrs);
9069 + module_free_exec(NULL, image);
9070 - return;
9071 - }
9072 ++ return;
9073 ++ }
9074 + pax_open_kernel();
9075 - memcpy(image + proglen, temp, ilen);
9076 ++ memcpy(image + proglen, temp, ilen);
9077 + pax_close_kernel();
9078 - }
9079 - proglen += ilen;
9080 - addrs[i] = proglen;
9081 -@@ -770,7 +876,6 @@ cond_branch: f_offset = addrs[i + filter[i].jf] - addrs[i];
9082 ++ }
9083 ++ proglen += ilen;
9084 ++ addrs[i] = proglen;
9085 ++ prog = temp;
9086 ++ }
9087 ++ /* last bpf instruction is always a RET :
9088 ++ * use it to give the cleanup instruction(s) addr
9089 ++ */
9090 ++ cleanup_addr = proglen - 1; /* ret */
9091 ++ if (seen_or_pass0)
9092 ++ cleanup_addr -= 1; /* leaveq */
9093 ++ if (seen_or_pass0 & SEEN_XREG)
9094 ++ cleanup_addr -= 4; /* mov -8(%rbp),%rbx */
9095 ++
9096 + if (image) {
9097 + if (proglen != oldproglen)
9098 +- pr_err("bpf_jit: proglen=%d != oldproglen=%d\n",
9099 +- proglen, oldproglen);
9100 ++ pr_err("bpb_jit_compile proglen=%u != oldproglen=%u\n", proglen, oldproglen);
9101 + break;
9102 + }
9103 + if (proglen == oldproglen) {
9104 +@@ -918,32 +872,30 @@ void bpf_int_jit_compile(struct sk_filter *prog)
9105 + }
9106 +
9107 + if (bpf_jit_enable > 1)
9108 +- bpf_jit_dump(prog->len, proglen, 0, image);
9109 ++ bpf_jit_dump(flen, proglen, pass, image);
9110
9111 if (image) {
9112 bpf_flush_icache(header, image + proglen);
9113 - set_memory_ro((unsigned long)header, header->pages);
9114 - fp->bpf_func = (void *)image;
9115 - fp->jited = 1;
9116 +- prog->bpf_func = (void *)image;
9117 +- prog->jited = 1;
9118 ++ fp->bpf_func = (void *)image;
9119 }
9120 -@@ -783,10 +888,9 @@ static void bpf_jit_free_deferred(struct work_struct *work)
9121 + out:
9122 + kfree(addrs);
9123 ++ return;
9124 + }
9125 +
9126 + static void bpf_jit_free_deferred(struct work_struct *work)
9127 {
9128 struct sk_filter *fp = container_of(work, struct sk_filter, work);
9129 unsigned long addr = (unsigned long)fp->bpf_func & PAGE_MASK;
9130 @@ -34196,6 +36044,13 @@ index 6d5663a..f1ec380 100644
9131 kfree(fp);
9132 }
9133
9134 + void bpf_jit_free(struct sk_filter *fp)
9135 + {
9136 +- if (fp->jited) {
9137 ++ if (fp->bpf_func != sk_run_filter) {
9138 + INIT_WORK(&fp->work, bpf_jit_free_deferred);
9139 + schedule_work(&fp->work);
9140 + } else {
9141 diff --git a/arch/x86/oprofile/backtrace.c b/arch/x86/oprofile/backtrace.c
9142 index 5d04be5..2beeaa2 100644
9143 --- a/arch/x86/oprofile/backtrace.c
9144 @@ -34880,7 +36735,7 @@ index fbe66e6..eae5e38 100644
9145 .long 0
9146 efi_rt_function_ptr:
9147 diff --git a/arch/x86/platform/efi/efi_stub_64.S b/arch/x86/platform/efi/efi_stub_64.S
9148 -index e0984ef..a062dac 100644
9149 +index 5fcda72..b9d1d65 100644
9150 --- a/arch/x86/platform/efi/efi_stub_64.S
9151 +++ b/arch/x86/platform/efi/efi_stub_64.S
9152 @@ -11,6 +11,7 @@
9153 @@ -34891,61 +36746,13 @@ index e0984ef..a062dac 100644
9154
9155 #define SAVE_XMM \
9156 mov %rsp, %rax; \
9157 -@@ -81,6 +82,7 @@ ENTRY(efi_call0)
9158 - RESTORE_PGT
9159 - addq $32, %rsp
9160 - RESTORE_XMM
9161 -+ pax_force_retaddr 0, 1
9162 - ret
9163 - ENDPROC(efi_call0)
9164 -
9165 -@@ -93,6 +95,7 @@ ENTRY(efi_call1)
9166 - RESTORE_PGT
9167 - addq $32, %rsp
9168 - RESTORE_XMM
9169 -+ pax_force_retaddr 0, 1
9170 - ret
9171 - ENDPROC(efi_call1)
9172 -
9173 -@@ -105,6 +108,7 @@ ENTRY(efi_call2)
9174 - RESTORE_PGT
9175 - addq $32, %rsp
9176 - RESTORE_XMM
9177 -+ pax_force_retaddr 0, 1
9178 - ret
9179 - ENDPROC(efi_call2)
9180 -
9181 -@@ -118,6 +122,7 @@ ENTRY(efi_call3)
9182 - RESTORE_PGT
9183 - addq $32, %rsp
9184 - RESTORE_XMM
9185 -+ pax_force_retaddr 0, 1
9186 - ret
9187 - ENDPROC(efi_call3)
9188 -
9189 -@@ -132,6 +137,7 @@ ENTRY(efi_call4)
9190 - RESTORE_PGT
9191 - addq $32, %rsp
9192 - RESTORE_XMM
9193 -+ pax_force_retaddr 0, 1
9194 - ret
9195 - ENDPROC(efi_call4)
9196 -
9197 -@@ -147,6 +153,7 @@ ENTRY(efi_call5)
9198 - RESTORE_PGT
9199 - addq $48, %rsp
9200 - RESTORE_XMM
9201 -+ pax_force_retaddr 0, 1
9202 - ret
9203 - ENDPROC(efi_call5)
9204 -
9205 -@@ -165,6 +172,7 @@ ENTRY(efi_call6)
9206 +@@ -88,6 +89,7 @@ ENTRY(efi_call)
9207 RESTORE_PGT
9208 addq $48, %rsp
9209 RESTORE_XMM
9210 + pax_force_retaddr 0, 1
9211 ret
9212 - ENDPROC(efi_call6)
9213 + ENDPROC(efi_call)
9214
9215 diff --git a/arch/x86/platform/intel-mid/intel-mid.c b/arch/x86/platform/intel-mid/intel-mid.c
9216 index 1bbedc4..eb795b5 100644
9217 @@ -35034,10 +36841,10 @@ index bad628a..a102610 100644
9218 #endif
9219 }
9220 diff --git a/arch/x86/realmode/rm/Makefile b/arch/x86/realmode/rm/Makefile
9221 -index 3497f14..cc73b92 100644
9222 +index 7c0d7be..d24dc88 100644
9223 --- a/arch/x86/realmode/rm/Makefile
9224 +++ b/arch/x86/realmode/rm/Makefile
9225 -@@ -66,5 +66,8 @@ $(obj)/realmode.relocs: $(obj)/realmode.elf FORCE
9226 +@@ -67,5 +67,8 @@ $(obj)/realmode.relocs: $(obj)/realmode.elf FORCE
9227
9228 KBUILD_CFLAGS := $(LINUXINCLUDE) $(REALMODE_CFLAGS) -D_SETUP -D_WAKEUP \
9229 -I$(srctree)/arch/x86/boot
9230 @@ -35399,161 +37206,139 @@ index 80ffa5b..a33bd15 100644
9231
9232 return 0;
9233 diff --git a/arch/x86/vdso/Makefile b/arch/x86/vdso/Makefile
9234 -index c580d12..0a0ba35 100644
9235 +index 61b04fe..3134230 100644
9236 --- a/arch/x86/vdso/Makefile
9237 +++ b/arch/x86/vdso/Makefile
9238 -@@ -196,7 +196,7 @@ quiet_cmd_vdso = VDSO $@
9239 +@@ -170,7 +170,7 @@ quiet_cmd_vdso = VDSO $@
9240 -Wl,-T,$(filter %.lds,$^) $(filter %.o,$^) && \
9241 sh $(srctree)/$(src)/checkundef.sh '$(NM)' '$@'
9242
9243 -VDSO_LDFLAGS = -fPIC -shared $(call cc-ldoption, -Wl$(comma)--hash-style=sysv) \
9244 +VDSO_LDFLAGS = -fPIC -shared -Wl,--no-undefined $(call cc-ldoption, -Wl$(comma)--hash-style=sysv) \
9245 - $(LTO_CFLAGS)
9246 + $(call cc-ldoption, -Wl$(comma)--build-id) -Wl,-Bsymbolic $(LTO_CFLAGS)
9247 GCOV_PROFILE := n
9248
9249 diff --git a/arch/x86/vdso/vdso32-setup.c b/arch/x86/vdso/vdso32-setup.c
9250 -index 3adf2e6..a0b5576 100644
9251 +index e4f7781..ab5ab26 100644
9252 --- a/arch/x86/vdso/vdso32-setup.c
9253 +++ b/arch/x86/vdso/vdso32-setup.c
9254 -@@ -29,6 +29,7 @@
9255 - #include <asm/fixmap.h>
9256 - #include <asm/hpet.h>
9257 - #include <asm/vvar.h>
9258 +@@ -14,6 +14,7 @@
9259 + #include <asm/cpufeature.h>
9260 + #include <asm/processor.h>
9261 + #include <asm/vdso.h>
9262 +#include <asm/mman.h>
9263
9264 #ifdef CONFIG_COMPAT_VDSO
9265 #define VDSO_DEFAULT 0
9266 -@@ -98,7 +99,7 @@ void syscall32_cpu_init(void)
9267 - void enable_sep_cpu(void)
9268 - {
9269 - int cpu = get_cpu();
9270 -- struct tss_struct *tss = &per_cpu(init_tss, cpu);
9271 -+ struct tss_struct *tss = init_tss + cpu;
9272 +diff --git a/arch/x86/vdso/vma.c b/arch/x86/vdso/vma.c
9273 +index 5a5176d..e570acd 100644
9274 +--- a/arch/x86/vdso/vma.c
9275 ++++ b/arch/x86/vdso/vma.c
9276 +@@ -16,10 +16,9 @@
9277 + #include <asm/vdso.h>
9278 + #include <asm/page.h>
9279 + #include <asm/hpet.h>
9280 ++#include <asm/mman.h>
9281
9282 - if (!boot_cpu_has(X86_FEATURE_SEP)) {
9283 - put_cpu();
9284 -@@ -166,7 +167,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
9285 + #if defined(CONFIG_X86_64)
9286 +-unsigned int __read_mostly vdso64_enabled = 1;
9287 +-
9288 + extern unsigned short vdso_sync_cpuid;
9289 + #endif
9290 +
9291 +@@ -101,6 +100,11 @@ static int map_vdso(const struct vdso_image *image, bool calculate_addr)
9292 + .pages = no_pages,
9293 + };
9294 +
9295 ++#ifdef CONFIG_PAX_RANDMMAP
9296 ++ if (mm->pax_flags & MF_PAX_RANDMMAP)
9297 ++ calculate_addr = false;
9298 ++#endif
9299 ++
9300 + if (calculate_addr) {
9301 + addr = vdso_addr(current->mm->start_stack,
9302 + image->sym_end_mapping);
9303 +@@ -110,13 +114,13 @@ static int map_vdso(const struct vdso_image *image, bool calculate_addr)
9304
9305 down_write(&mm->mmap_sem);
9306
9307 -- addr = get_unmapped_area(NULL, 0, vdso32_size + VDSO_OFFSET(VDSO_PREV_PAGES), 0, 0);
9308 -+ addr = get_unmapped_area(NULL, 0, vdso32_size + VDSO_OFFSET(VDSO_PREV_PAGES), 0, MAP_EXECUTABLE);
9309 +- addr = get_unmapped_area(NULL, addr, image->sym_end_mapping, 0, 0);
9310 ++ addr = get_unmapped_area(NULL, addr, image->sym_end_mapping, 0, MAP_EXECUTABLE);
9311 if (IS_ERR_VALUE(addr)) {
9312 ret = addr;
9313 goto up_fail;
9314 -@@ -174,7 +175,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
9315 -
9316 - addr += VDSO_OFFSET(VDSO_PREV_PAGES);
9317 + }
9318
9319 -- current->mm->context.vdso = (void *)addr;
9320 -+ current->mm->context.vdso = addr;
9321 +- current->mm->context.vdso = (void __user *)addr;
9322 ++ mm->context.vdso = addr;
9323
9324 /*
9325 * MAYWRITE to allow gdb to COW and set breakpoints
9326 -@@ -223,11 +224,11 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
9327 +@@ -161,15 +165,12 @@ static int map_vdso(const struct vdso_image *image, bool calculate_addr)
9328 + hpet_address >> PAGE_SHIFT,
9329 + PAGE_SIZE,
9330 + pgprot_noncached(PAGE_READONLY));
9331 +-
9332 +- if (ret)
9333 +- goto up_fail;
9334 + }
9335 #endif
9336
9337 - current_thread_info()->sysenter_return =
9338 -- VDSO32_SYMBOL(addr, SYSENTER_RETURN);
9339 -+ (void __force_user *)VDSO32_SYMBOL(addr, SYSENTER_RETURN);
9340 -
9341 - up_fail:
9342 + up_fail:
9343 if (ret)
9344 - current->mm->context.vdso = NULL;
9345 + current->mm->context.vdso = 0;
9346
9347 up_write(&mm->mmap_sem);
9348 + return ret;
9349 +@@ -189,8 +190,8 @@ static int load_vdso32(void)
9350
9351 -@@ -274,8 +275,14 @@ __initcall(ia32_binfmt_init);
9352 -
9353 - const char *arch_vma_name(struct vm_area_struct *vma)
9354 - {
9355 -- if (vma->vm_mm && vma->vm_start == (long)vma->vm_mm->context.vdso)
9356 -+ if (vma->vm_mm && vma->vm_start == vma->vm_mm->context.vdso)
9357 - return "[vdso]";
9358 -+
9359 -+#ifdef CONFIG_PAX_SEGMEXEC
9360 -+ if (vma->vm_mm && vma->vm_mirror && vma->vm_mirror->vm_start == vma->vm_mm->context.vdso)
9361 -+ return "[vdso]";
9362 -+#endif
9363 -+
9364 - return NULL;
9365 - }
9366 -
9367 -diff --git a/arch/x86/vdso/vma.c b/arch/x86/vdso/vma.c
9368 -index 1ad1026..1a08abe 100644
9369 ---- a/arch/x86/vdso/vma.c
9370 -+++ b/arch/x86/vdso/vma.c
9371 -@@ -17,8 +17,6 @@
9372 - #include <asm/page.h>
9373 -
9374 - #if defined(CONFIG_X86_64)
9375 --unsigned int __read_mostly vdso_enabled = 1;
9376 --
9377 - DECLARE_VDSO_IMAGE(vdso);
9378 - extern unsigned short vdso_sync_cpuid;
9379 - static unsigned vdso_size;
9380 -@@ -144,7 +142,6 @@ static unsigned long vdso_addr(unsigned long start, unsigned len)
9381 - * unaligned here as a result of stack start randomization.
9382 - */
9383 - addr = PAGE_ALIGN(addr);
9384 -- addr = align_vdso_addr(addr);
9385 + if (selected_vdso32->sym_VDSO32_SYSENTER_RETURN)
9386 + current_thread_info()->sysenter_return =
9387 +- current->mm->context.vdso +
9388 +- selected_vdso32->sym_VDSO32_SYSENTER_RETURN;
9389 ++ (void __force_user *)(current->mm->context.vdso +
9390 ++ selected_vdso32->sym_VDSO32_SYSENTER_RETURN);
9391
9392 - return addr;
9393 + return 0;
9394 }
9395 -@@ -157,30 +154,31 @@ static int setup_additional_pages(struct linux_binprm *bprm,
9396 - unsigned size)
9397 +@@ -199,9 +200,6 @@ static int load_vdso32(void)
9398 + #ifdef CONFIG_X86_64
9399 + int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
9400 {
9401 - struct mm_struct *mm = current->mm;
9402 -- unsigned long addr;
9403 -+ unsigned long addr = 0;
9404 - int ret;
9405 -
9406 -- if (!vdso_enabled)
9407 +- if (!vdso64_enabled)
9408 - return 0;
9409 -
9410 - down_write(&mm->mmap_sem);
9411 -+
9412 -+#ifdef CONFIG_PAX_RANDMMAP
9413 -+ if (!(mm->pax_flags & MF_PAX_RANDMMAP))
9414 -+#endif
9415 -+
9416 - addr = vdso_addr(mm->start_stack, size);
9417 -+ addr = align_vdso_addr(addr);
9418 - addr = get_unmapped_area(NULL, addr, size, 0, 0);
9419 - if (IS_ERR_VALUE(addr)) {
9420 - ret = addr;
9421 - goto up_fail;
9422 - }
9423 -
9424 -- current->mm->context.vdso = (void *)addr;
9425 -+ mm->context.vdso = addr;
9426 + return map_vdso(&vdso_image_64, true);
9427 + }
9428
9429 - ret = install_special_mapping(mm, addr, size,
9430 - VM_READ|VM_EXEC|
9431 - VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC,
9432 - pages);
9433 -- if (ret) {
9434 -- current->mm->context.vdso = NULL;
9435 -- goto up_fail;
9436 +@@ -210,12 +208,8 @@ int compat_arch_setup_additional_pages(struct linux_binprm *bprm,
9437 + int uses_interp)
9438 + {
9439 + #ifdef CONFIG_X86_X32_ABI
9440 +- if (test_thread_flag(TIF_X32)) {
9441 +- if (!vdso64_enabled)
9442 +- return 0;
9443 +-
9444 ++ if (test_thread_flag(TIF_X32))
9445 + return map_vdso(&vdso_image_x32, true);
9446 - }
9447 -+ if (ret)
9448 -+ mm->context.vdso = 0;
9449 + #endif
9450
9451 - up_fail:
9452 - up_write(&mm->mmap_sem);
9453 -@@ -200,11 +198,4 @@ int x32_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
9454 - vdsox32_size);
9455 + return load_vdso32();
9456 +@@ -227,12 +221,3 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
9457 + return load_vdso32();
9458 }
9459 #endif
9460 -
9461 +-#ifdef CONFIG_X86_64
9462 -static __init int vdso_setup(char *s)
9463 -{
9464 -- vdso_enabled = simple_strtoul(s, NULL, 0);
9465 +- vdso64_enabled = simple_strtoul(s, NULL, 0);
9466 - return 0;
9467 -}
9468 -__setup("vdso=", vdso_setup);
9469 - #endif
9470 +-#endif
9471 diff --git a/arch/x86/xen/Kconfig b/arch/x86/xen/Kconfig
9472 index e88fda8..76ce7ce 100644
9473 --- a/arch/x86/xen/Kconfig
9474 @@ -35567,7 +37352,7 @@ index e88fda8..76ce7ce 100644
9475 This is the Linux Xen port. Enabling this will allow the
9476 kernel to boot in a paravirtualized environment under the
9477 diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
9478 -index c34bfc4..e599673 100644
9479 +index ffb101e..98c0ecf 100644
9480 --- a/arch/x86/xen/enlighten.c
9481 +++ b/arch/x86/xen/enlighten.c
9482 @@ -123,8 +123,6 @@ EXPORT_SYMBOL_GPL(xen_start_info);
9483 @@ -35655,7 +37440,7 @@ index c34bfc4..e599673 100644
9484 {
9485 if (pm_power_off)
9486 pm_power_off();
9487 -@@ -1564,7 +1560,17 @@ asmlinkage __visible void __init xen_start_kernel(void)
9488 +@@ -1568,7 +1564,17 @@ asmlinkage __visible void __init xen_start_kernel(void)
9489 __userpte_alloc_gfp &= ~__GFP_HIGHMEM;
9490
9491 /* Work out if we support NX */
9492 @@ -35674,7 +37459,7 @@ index c34bfc4..e599673 100644
9493
9494 /* Get mfn list */
9495 xen_build_dynamic_phys_to_machine();
9496 -@@ -1592,13 +1598,6 @@ asmlinkage __visible void __init xen_start_kernel(void)
9497 +@@ -1596,13 +1602,6 @@ asmlinkage __visible void __init xen_start_kernel(void)
9498
9499 machine_ops = xen_machine_ops;
9500
9501 @@ -35689,7 +37474,7 @@ index c34bfc4..e599673 100644
9502
9503 #ifdef CONFIG_ACPI_NUMA
9504 diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
9505 -index 86e02ea..e3705ca 100644
9506 +index e8a1201..046c66c 100644
9507 --- a/arch/x86/xen/mmu.c
9508 +++ b/arch/x86/xen/mmu.c
9509 @@ -379,7 +379,7 @@ static pteval_t pte_mfn_to_pfn(pteval_t val)
9510 @@ -35724,7 +37509,7 @@ index 86e02ea..e3705ca 100644
9511 set_page_prot(level2_kernel_pgt, PAGE_KERNEL_RO);
9512 set_page_prot(level2_fixmap_pgt, PAGE_KERNEL_RO);
9513
9514 -@@ -2122,6 +2129,7 @@ static void __init xen_post_allocator_init(void)
9515 +@@ -2120,6 +2127,7 @@ static void __init xen_post_allocator_init(void)
9516 pv_mmu_ops.set_pud = xen_set_pud;
9517 #if PAGETABLE_LEVELS == 4
9518 pv_mmu_ops.set_pgd = xen_set_pgd;
9519 @@ -35732,7 +37517,7 @@ index 86e02ea..e3705ca 100644
9520 #endif
9521
9522 /* This will work as long as patching hasn't happened yet
9523 -@@ -2200,6 +2208,7 @@ static const struct pv_mmu_ops xen_mmu_ops __initconst = {
9524 +@@ -2198,6 +2206,7 @@ static const struct pv_mmu_ops xen_mmu_ops __initconst = {
9525 .pud_val = PV_CALLEE_SAVE(xen_pud_val),
9526 .make_pud = PV_CALLEE_SAVE(xen_make_pud),
9527 .set_pgd = xen_set_pgd_hyper,
9528 @@ -35846,7 +37631,7 @@ index 485b695..fda3e7c 100644
9529 mov %rsi,xen_start_info
9530 mov $init_thread_union+THREAD_SIZE,%rsp
9531 diff --git a/arch/x86/xen/xen-ops.h b/arch/x86/xen/xen-ops.h
9532 -index 1cb6f4c..9981524 100644
9533 +index 97d8765..c4526ec 100644
9534 --- a/arch/x86/xen/xen-ops.h
9535 +++ b/arch/x86/xen/xen-ops.h
9536 @@ -10,8 +10,6 @@
9537 @@ -35919,8 +37704,39 @@ index af00795..2bb8105 100644
9538
9539 #define XCHAL_ICACHE_SIZE 32768 /* I-cache size in bytes or 0 */
9540 #define XCHAL_DCACHE_SIZE 32768 /* D-cache size in bytes or 0 */
9541 +diff --git a/block/bio.c b/block/bio.c
9542 +index 0ec61c9..93b94060 100644
9543 +--- a/block/bio.c
9544 ++++ b/block/bio.c
9545 +@@ -1159,7 +1159,7 @@ struct bio *bio_copy_user_iov(struct request_queue *q,
9546 + /*
9547 + * Overflow, abort
9548 + */
9549 +- if (end < start)
9550 ++ if (end < start || end - start > INT_MAX - nr_pages)
9551 + return ERR_PTR(-EINVAL);
9552 +
9553 + nr_pages += end - start;
9554 +@@ -1293,7 +1293,7 @@ static struct bio *__bio_map_user_iov(struct request_queue *q,
9555 + /*
9556 + * Overflow, abort
9557 + */
9558 +- if (end < start)
9559 ++ if (end < start || end - start > INT_MAX - nr_pages)
9560 + return ERR_PTR(-EINVAL);
9561 +
9562 + nr_pages += end - start;
9563 +@@ -1555,7 +1555,7 @@ static void bio_copy_kern_endio(struct bio *bio, int err)
9564 + const int read = bio_data_dir(bio) == READ;
9565 + struct bio_map_data *bmd = bio->bi_private;
9566 + int i;
9567 +- char *p = bmd->sgvecs[0].iov_base;
9568 ++ char *p = (char __force_kernel *)bmd->sgvecs[0].iov_base;
9569 +
9570 + bio_for_each_segment_all(bvec, bio, i) {
9571 + char *addr = page_address(bvec->bv_page);
9572 diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c
9573 -index f1e3803..05e2d06 100644
9574 +index 28d227c..d4c0bad 100644
9575 --- a/block/blk-cgroup.c
9576 +++ b/block/blk-cgroup.c
9577 @@ -822,7 +822,7 @@ static void blkcg_css_free(struct cgroup_subsys_state *css)
9578 @@ -35942,10 +37758,10 @@ index f1e3803..05e2d06 100644
9579 spin_lock_init(&blkcg->lock);
9580 INIT_RADIX_TREE(&blkcg->blkg_tree, GFP_ATOMIC);
9581 diff --git a/block/blk-iopoll.c b/block/blk-iopoll.c
9582 -index c11d24e..e915d24 100644
9583 +index 0736729..2ec3b48 100644
9584 --- a/block/blk-iopoll.c
9585 +++ b/block/blk-iopoll.c
9586 -@@ -74,7 +74,7 @@ void blk_iopoll_complete(struct blk_iopoll *iopoll)
9587 +@@ -74,7 +74,7 @@ void blk_iopoll_complete(struct blk_iopoll *iop)
9588 }
9589 EXPORT_SYMBOL(blk_iopoll_complete);
9590
9591 @@ -35955,10 +37771,10 @@ index c11d24e..e915d24 100644
9592 struct list_head *list = this_cpu_ptr(&blk_cpu_iopoll);
9593 int rearm = 0, budget = blk_iopoll_budget;
9594 diff --git a/block/blk-map.c b/block/blk-map.c
9595 -index f7b22bc..ec2ddf4 100644
9596 +index f890d43..97b0482 100644
9597 --- a/block/blk-map.c
9598 +++ b/block/blk-map.c
9599 -@@ -302,7 +302,7 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf,
9600 +@@ -300,7 +300,7 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf,
9601 if (!len || !kbuf)
9602 return -EINVAL;
9603
9604 @@ -35981,7 +37797,7 @@ index 53b1737..08177d2e 100644
9605 struct list_head *cpu_list, local_list;
9606
9607 diff --git a/block/bsg.c b/block/bsg.c
9608 -index 420a5a9..23834aa 100644
9609 +index ff46add..c4ba8ee 100644
9610 --- a/block/bsg.c
9611 +++ b/block/bsg.c
9612 @@ -176,16 +176,24 @@ static int blk_fill_sgv4_hdr_rq(struct request_queue *q, struct request *rq,
9613 @@ -36091,7 +37907,7 @@ index dc51f46..d5446a8 100644
9614 (u8 *) pte, count) < count) {
9615 kfree(pte);
9616 diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c
9617 -index 2648797..92ed21f 100644
9618 +index 14695c6..27a4636 100644
9619 --- a/block/scsi_ioctl.c
9620 +++ b/block/scsi_ioctl.c
9621 @@ -67,7 +67,7 @@ static int scsi_get_bus(struct request_queue *q, int __user *p)
9622 @@ -36103,7 +37919,7 @@ index 2648797..92ed21f 100644
9623 {
9624 return jiffies_to_clock_t(q->sg_timeout);
9625 }
9626 -@@ -224,8 +224,20 @@ EXPORT_SYMBOL(blk_verify_command);
9627 +@@ -220,8 +220,20 @@ EXPORT_SYMBOL(blk_verify_command);
9628 static int blk_fill_sghdr_rq(struct request_queue *q, struct request *rq,
9629 struct sg_io_hdr *hdr, fmode_t mode)
9630 {
9631 @@ -36125,7 +37941,7 @@ index 2648797..92ed21f 100644
9632 if (blk_verify_command(rq->cmd, mode & FMODE_WRITE))
9633 return -EPERM;
9634
9635 -@@ -417,6 +429,8 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode,
9636 +@@ -413,6 +425,8 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode,
9637 int err;
9638 unsigned int in_len, out_len, bytes, opcode, cmdlen;
9639 char *buffer = NULL, sense[SCSI_SENSE_BUFFERSIZE];
9640 @@ -36134,7 +37950,7 @@ index 2648797..92ed21f 100644
9641
9642 if (!sic)
9643 return -EINVAL;
9644 -@@ -450,9 +464,18 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode,
9645 +@@ -446,9 +460,18 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode,
9646 */
9647 err = -EFAULT;
9648 rq->cmd_len = cmdlen;
9649 @@ -36332,10 +38148,10 @@ index 38cb978..352c761 100644
9650 static void delete_gpe_attr_array(void)
9651 {
9652 diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
9653 -index b986145..82bddb8 100644
9654 +index d72ce04..d6ab3c2 100644
9655 --- a/drivers/ata/libahci.c
9656 +++ b/drivers/ata/libahci.c
9657 -@@ -1252,7 +1252,7 @@ int ahci_kick_engine(struct ata_port *ap)
9658 +@@ -1257,7 +1257,7 @@ int ahci_kick_engine(struct ata_port *ap)
9659 }
9660 EXPORT_SYMBOL_GPL(ahci_kick_engine);
9661
9662 @@ -36404,10 +38220,10 @@ index 677c0c1..354b89b 100644
9663 }
9664
9665 diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
9666 -index ef8567d..8bdbd03 100644
9667 +index 72691fd..ad104c0 100644
9668 --- a/drivers/ata/libata-scsi.c
9669 +++ b/drivers/ata/libata-scsi.c
9670 -@@ -4147,7 +4147,7 @@ int ata_sas_port_init(struct ata_port *ap)
9671 +@@ -4151,7 +4151,7 @@ int ata_sas_port_init(struct ata_port *ap)
9672
9673 if (rc)
9674 return rc;
9675 @@ -36637,7 +38453,7 @@ index 82f2ae0..f205c02 100644
9676 default: /* Hmm. Haven't written the code to handle the others yet... -- REW */
9677 printk (KERN_WARNING "Don't know what to do with RX status %x: %s.\n",
9678 diff --git a/drivers/atm/fore200e.c b/drivers/atm/fore200e.c
9679 -index 204814e..cede831 100644
9680 +index d4725fc..2d4ea65 100644
9681 --- a/drivers/atm/fore200e.c
9682 +++ b/drivers/atm/fore200e.c
9683 @@ -931,9 +931,9 @@ fore200e_tx_irq(struct fore200e* fore200e)
9684 @@ -36804,7 +38620,7 @@ index 1dc0519..1aadaf7 100644
9685 // free the skb
9686 hrz_kfree_skb (skb);
9687 diff --git a/drivers/atm/idt77252.c b/drivers/atm/idt77252.c
9688 -index 1bdf104..9dc44b1 100644
9689 +index b621f56..1e3a799 100644
9690 --- a/drivers/atm/idt77252.c
9691 +++ b/drivers/atm/idt77252.c
9692 @@ -812,7 +812,7 @@ drain_scq(struct idt77252_dev *card, struct vc_map *vc)
9693 @@ -37504,7 +39320,7 @@ index 8f7ed99..700dd0c 100644
9694 static ssize_t show_node_state(struct device *dev,
9695 struct device_attribute *attr, char *buf)
9696 diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
9697 -index ae098a2..0999830 100644
9698 +index eee55c1..b8c9393 100644
9699 --- a/drivers/base/power/domain.c
9700 +++ b/drivers/base/power/domain.c
9701 @@ -1821,9 +1821,9 @@ int __pm_genpd_remove_callbacks(struct device *dev, bool clear_td)
9702 @@ -37551,7 +39367,7 @@ index 95b181d1..c4f0e19 100644
9703
9704 static DEVICE_ATTR(runtime_status, 0444, rtpm_status_show, NULL);
9705 diff --git a/drivers/base/power/wakeup.c b/drivers/base/power/wakeup.c
9706 -index 2d56f41..8830f19 100644
9707 +index eb1bd2e..2667d3a 100644
9708 --- a/drivers/base/power/wakeup.c
9709 +++ b/drivers/base/power/wakeup.c
9710 @@ -29,14 +29,14 @@ bool events_check_enabled __read_mostly;
9711 @@ -37571,7 +39387,7 @@ index 2d56f41..8830f19 100644
9712
9713 *cnt = (comb >> IN_PROGRESS_BITS);
9714 *inpr = comb & MAX_IN_PROGRESS;
9715 -@@ -395,7 +395,7 @@ static void wakeup_source_activate(struct wakeup_source *ws)
9716 +@@ -401,7 +401,7 @@ static void wakeup_source_activate(struct wakeup_source *ws)
9717 ws->start_prevent_time = ws->last_time;
9718
9719 /* Increment the counter of events in progress. */
9720 @@ -37580,7 +39396,7 @@ index 2d56f41..8830f19 100644
9721
9722 trace_wakeup_source_activate(ws->name, cec);
9723 }
9724 -@@ -521,7 +521,7 @@ static void wakeup_source_deactivate(struct wakeup_source *ws)
9725 +@@ -527,7 +527,7 @@ static void wakeup_source_deactivate(struct wakeup_source *ws)
9726 * Increment the counter of registered wakeup events and decrement the
9727 * couter of wakeup events in progress simultaneously.
9728 */
9729 @@ -37590,10 +39406,10 @@ index 2d56f41..8830f19 100644
9730
9731 split_counters(&cnt, &inpr);
9732 diff --git a/drivers/base/syscore.c b/drivers/base/syscore.c
9733 -index e8d11b6..7b1b36f 100644
9734 +index dbb8350..4762f4c 100644
9735 --- a/drivers/base/syscore.c
9736 +++ b/drivers/base/syscore.c
9737 -@@ -21,7 +21,7 @@ static DEFINE_MUTEX(syscore_ops_lock);
9738 +@@ -22,7 +22,7 @@ static DEFINE_MUTEX(syscore_ops_lock);
9739 void register_syscore_ops(struct syscore_ops *ops)
9740 {
9741 mutex_lock(&syscore_ops_lock);
9742 @@ -37602,7 +39418,7 @@ index e8d11b6..7b1b36f 100644
9743 mutex_unlock(&syscore_ops_lock);
9744 }
9745 EXPORT_SYMBOL_GPL(register_syscore_ops);
9746 -@@ -33,7 +33,7 @@ EXPORT_SYMBOL_GPL(register_syscore_ops);
9747 +@@ -34,7 +34,7 @@ EXPORT_SYMBOL_GPL(register_syscore_ops);
9748 void unregister_syscore_ops(struct syscore_ops *ops)
9749 {
9750 mutex_lock(&syscore_ops_lock);
9751 @@ -37612,7 +39428,7 @@ index e8d11b6..7b1b36f 100644
9752 }
9753 EXPORT_SYMBOL_GPL(unregister_syscore_ops);
9754 diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
9755 -index 73894ca..69f64ef 100644
9756 +index 4595c22..d4f6c54 100644
9757 --- a/drivers/block/cciss.c
9758 +++ b/drivers/block/cciss.c
9759 @@ -3011,7 +3011,7 @@ static void start_io(ctlr_info_t *h)
9760 @@ -37672,7 +39488,7 @@ index 73894ca..69f64ef 100644
9761 h->transMethod = CFGTBL_Trans_Performant;
9762
9763 return;
9764 -@@ -4325,7 +4325,7 @@ static int cciss_pci_init(ctlr_info_t *h)
9765 +@@ -4321,7 +4321,7 @@ static int cciss_pci_init(ctlr_info_t *h)
9766 if (prod_index < 0)
9767 return -ENODEV;
9768 h->product_name = products[prod_index].product_name;
9769 @@ -37681,7 +39497,7 @@ index 73894ca..69f64ef 100644
9770
9771 if (cciss_board_disabled(h)) {
9772 dev_warn(&h->pdev->dev, "controller appears to be disabled\n");
9773 -@@ -5057,7 +5057,7 @@ reinit_after_soft_reset:
9774 +@@ -5053,7 +5053,7 @@ reinit_after_soft_reset:
9775 }
9776
9777 /* make sure the board interrupts are off */
9778 @@ -37690,7 +39506,7 @@ index 73894ca..69f64ef 100644
9779 rc = cciss_request_irq(h, do_cciss_msix_intr, do_cciss_intx);
9780 if (rc)
9781 goto clean2;
9782 -@@ -5107,7 +5107,7 @@ reinit_after_soft_reset:
9783 +@@ -5103,7 +5103,7 @@ reinit_after_soft_reset:
9784 * fake ones to scoop up any residual completions.
9785 */
9786 spin_lock_irqsave(&h->lock, flags);
9787 @@ -37699,7 +39515,7 @@ index 73894ca..69f64ef 100644
9788 spin_unlock_irqrestore(&h->lock, flags);
9789 free_irq(h->intr[h->intr_mode], h);
9790 rc = cciss_request_irq(h, cciss_msix_discard_completions,
9791 -@@ -5127,9 +5127,9 @@ reinit_after_soft_reset:
9792 +@@ -5123,9 +5123,9 @@ reinit_after_soft_reset:
9793 dev_info(&h->pdev->dev, "Board READY.\n");
9794 dev_info(&h->pdev->dev,
9795 "Waiting for stale completions to drain.\n");
9796 @@ -37711,7 +39527,7 @@ index 73894ca..69f64ef 100644
9797
9798 rc = controller_reset_failed(h->cfgtable);
9799 if (rc)
9800 -@@ -5152,7 +5152,7 @@ reinit_after_soft_reset:
9801 +@@ -5148,7 +5148,7 @@ reinit_after_soft_reset:
9802 cciss_scsi_setup(h);
9803
9804 /* Turn the interrupts on so we can service requests */
9805 @@ -37720,7 +39536,7 @@ index 73894ca..69f64ef 100644
9806
9807 /* Get the firmware version */
9808 inq_buff = kzalloc(sizeof(InquiryData_struct), GFP_KERNEL);
9809 -@@ -5224,7 +5224,7 @@ static void cciss_shutdown(struct pci_dev *pdev)
9810 +@@ -5220,7 +5220,7 @@ static void cciss_shutdown(struct pci_dev *pdev)
9811 kfree(flush_buf);
9812 if (return_code != IO_OK)
9813 dev_warn(&h->pdev->dev, "Error flushing cache\n");
9814 @@ -37919,7 +39735,7 @@ index be73e9d..7fbf140 100644
9815 cmdlist_t *reqQ;
9816 cmdlist_t *cmpQ;
9817 diff --git a/drivers/block/drbd/drbd_int.h b/drivers/block/drbd/drbd_int.h
9818 -index e7093d4..b364085 100644
9819 +index a76ceb3..3c1a9fd 100644
9820 --- a/drivers/block/drbd/drbd_int.h
9821 +++ b/drivers/block/drbd/drbd_int.h
9822 @@ -331,7 +331,7 @@ struct drbd_epoch {
9823 @@ -37931,7 +39747,7 @@ index e7093d4..b364085 100644
9824 atomic_t active; /* increased on every req. added, and dec on every finished. */
9825 unsigned long flags;
9826 };
9827 -@@ -787,7 +787,7 @@ struct drbd_device {
9828 +@@ -797,7 +797,7 @@ struct drbd_device {
9829 unsigned int al_tr_number;
9830 int al_tr_cycle;
9831 wait_queue_head_t seq_wait;
9832 @@ -37940,7 +39756,7 @@ index e7093d4..b364085 100644
9833 unsigned int peer_seq;
9834 spinlock_t peer_seq_lock;
9835 unsigned int minor;
9836 -@@ -1361,7 +1361,7 @@ static inline int drbd_setsockopt(struct socket *sock, int level, int optname,
9837 +@@ -1407,7 +1407,7 @@ static inline int drbd_setsockopt(struct socket *sock, int level, int optname,
9838 char __user *uoptval;
9839 int err;
9840
9841 @@ -37967,7 +39783,7 @@ index 89c497c..9c736ae 100644
9842
9843 /**
9844 diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c
9845 -index 331e5cc..6d657bce 100644
9846 +index 960645c..6c2724a 100644
9847 --- a/drivers/block/drbd/drbd_main.c
9848 +++ b/drivers/block/drbd/drbd_main.c
9849 @@ -1322,7 +1322,7 @@ static int _drbd_send_ack(struct drbd_peer_device *peer_device, enum drbd_packet
9850 @@ -37988,7 +39804,7 @@ index 331e5cc..6d657bce 100644
9851 dp_flags = bio_flags_to_wire(peer_device->connection, req->master_bio->bi_rw);
9852 if (device->state.conn >= C_SYNC_SOURCE &&
9853 device->state.conn <= C_PAUSED_SYNC_T)
9854 -@@ -2658,8 +2658,8 @@ void drbd_destroy_connection(struct kref *kref)
9855 +@@ -2670,8 +2670,8 @@ void drbd_destroy_connection(struct kref *kref)
9856 struct drbd_connection *connection = container_of(kref, struct drbd_connection, kref);
9857 struct drbd_resource *resource = connection->resource;
9858
9859 @@ -38000,10 +39816,10 @@ index 331e5cc..6d657bce 100644
9860
9861 idr_destroy(&connection->peer_devices);
9862 diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c
9863 -index 526414b..4eb8184 100644
9864 +index 3f2e167..d3170e4 100644
9865 --- a/drivers/block/drbd/drbd_nl.c
9866 +++ b/drivers/block/drbd/drbd_nl.c
9867 -@@ -3505,7 +3505,7 @@ out:
9868 +@@ -3616,7 +3616,7 @@ finish:
9869
9870 void drbd_bcast_event(struct drbd_device *device, const struct sib_info *sib)
9871 {
9872 @@ -38012,7 +39828,7 @@ index 526414b..4eb8184 100644
9873 struct sk_buff *msg;
9874 struct drbd_genlmsghdr *d_out;
9875 unsigned seq;
9876 -@@ -3518,7 +3518,7 @@ void drbd_bcast_event(struct drbd_device *device, const struct sib_info *sib)
9877 +@@ -3629,7 +3629,7 @@ void drbd_bcast_event(struct drbd_device *device, const struct sib_info *sib)
9878 return;
9879 }
9880
9881 @@ -38022,10 +39838,10 @@ index 526414b..4eb8184 100644
9882 if (!msg)
9883 goto failed;
9884 diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
9885 -index 68e3992..1aca24a 100644
9886 +index 5b17ec8..6c21e6b 100644
9887 --- a/drivers/block/drbd/drbd_receiver.c
9888 +++ b/drivers/block/drbd/drbd_receiver.c
9889 -@@ -826,7 +826,7 @@ int drbd_connected(struct drbd_peer_device *peer_device)
9890 +@@ -834,7 +834,7 @@ int drbd_connected(struct drbd_peer_device *peer_device)
9891 struct drbd_device *device = peer_device->device;
9892 int err;
9893
9894 @@ -38034,7 +39850,7 @@ index 68e3992..1aca24a 100644
9895 device->peer_seq = 0;
9896
9897 device->state_mutex = peer_device->connection->agreed_pro_version < 100 ?
9898 -@@ -1188,7 +1188,7 @@ static enum finish_epoch drbd_may_finish_epoch(struct drbd_connection *connectio
9899 +@@ -1199,7 +1199,7 @@ static enum finish_epoch drbd_may_finish_epoch(struct drbd_connection *connectio
9900 do {
9901 next_epoch = NULL;
9902
9903 @@ -38043,7 +39859,7 @@ index 68e3992..1aca24a 100644
9904
9905 switch (ev & ~EV_CLEANUP) {
9906 case EV_PUT:
9907 -@@ -1228,7 +1228,7 @@ static enum finish_epoch drbd_may_finish_epoch(struct drbd_connection *connectio
9908 +@@ -1239,7 +1239,7 @@ static enum finish_epoch drbd_may_finish_epoch(struct drbd_connection *connectio
9909 rv = FE_DESTROYED;
9910 } else {
9911 epoch->flags = 0;
9912 @@ -38052,7 +39868,7 @@ index 68e3992..1aca24a 100644
9913 /* atomic_set(&epoch->active, 0); is already zero */
9914 if (rv == FE_STILL_LIVE)
9915 rv = FE_RECYCLED;
9916 -@@ -1456,7 +1456,7 @@ static int receive_Barrier(struct drbd_connection *connection, struct packet_inf
9917 +@@ -1490,7 +1490,7 @@ static int receive_Barrier(struct drbd_connection *connection, struct packet_inf
9918 conn_wait_active_ee_empty(connection);
9919 drbd_flush(connection);
9920
9921 @@ -38061,7 +39877,7 @@ index 68e3992..1aca24a 100644
9922 epoch = kmalloc(sizeof(struct drbd_epoch), GFP_NOIO);
9923 if (epoch)
9924 break;
9925 -@@ -1469,11 +1469,11 @@ static int receive_Barrier(struct drbd_connection *connection, struct packet_inf
9926 +@@ -1503,11 +1503,11 @@ static int receive_Barrier(struct drbd_connection *connection, struct packet_inf
9927 }
9928
9929 epoch->flags = 0;
9930 @@ -38075,7 +39891,7 @@ index 68e3992..1aca24a 100644
9931 list_add(&epoch->list, &connection->current_epoch->list);
9932 connection->current_epoch = epoch;
9933 connection->epochs++;
9934 -@@ -2182,7 +2182,7 @@ static int receive_Data(struct drbd_connection *connection, struct packet_info *
9935 +@@ -2224,7 +2224,7 @@ static int receive_Data(struct drbd_connection *connection, struct packet_info *
9936
9937 err = wait_for_and_update_peer_seq(peer_device, peer_seq);
9938 drbd_send_ack_dp(peer_device, P_NEG_ACK, p, pi->size);
9939 @@ -38084,7 +39900,7 @@ index 68e3992..1aca24a 100644
9940 err2 = drbd_drain_block(peer_device, pi->size);
9941 if (!err)
9942 err = err2;
9943 -@@ -2216,7 +2216,7 @@ static int receive_Data(struct drbd_connection *connection, struct packet_info *
9944 +@@ -2266,7 +2266,7 @@ static int receive_Data(struct drbd_connection *connection, struct packet_info *
9945
9946 spin_lock(&connection->epoch_lock);
9947 peer_req->epoch = connection->current_epoch;
9948 @@ -38093,7 +39909,7 @@ index 68e3992..1aca24a 100644
9949 atomic_inc(&peer_req->epoch->active);
9950 spin_unlock(&connection->epoch_lock);
9951
9952 -@@ -4396,7 +4396,7 @@ struct data_cmd {
9953 +@@ -4461,7 +4461,7 @@ struct data_cmd {
9954 int expect_payload;
9955 size_t pkt_size;
9956 int (*fn)(struct drbd_connection *, struct packet_info *);
9957 @@ -38102,7 +39918,7 @@ index 68e3992..1aca24a 100644
9958
9959 static struct data_cmd drbd_cmd_handler[] = {
9960 [P_DATA] = { 1, sizeof(struct p_data), receive_Data },
9961 -@@ -4506,7 +4506,7 @@ static void conn_disconnect(struct drbd_connection *connection)
9962 +@@ -4572,7 +4572,7 @@ static void conn_disconnect(struct drbd_connection *connection)
9963 if (!list_empty(&connection->current_epoch->list))
9964 drbd_err(connection, "ASSERTION FAILED: connection->current_epoch->list not empty\n");
9965 /* ok, no more ee's on the fly, it is safe to reset the epoch_size */
9966 @@ -38111,7 +39927,7 @@ index 68e3992..1aca24a 100644
9967 connection->send.seen_any_write_yet = false;
9968
9969 drbd_info(connection, "Connection closed\n");
9970 -@@ -5281,7 +5281,7 @@ static int connection_finish_peer_reqs(struct drbd_connection *connection)
9971 +@@ -5364,7 +5364,7 @@ static int connection_finish_peer_reqs(struct drbd_connection *connection)
9972 struct asender_cmd {
9973 size_t pkt_size;
9974 int (*fn)(struct drbd_connection *connection, struct packet_info *);
9975 @@ -38121,7 +39937,7 @@ index 68e3992..1aca24a 100644
9976 static struct asender_cmd asender_tbl[] = {
9977 [P_PING] = { 0, got_Ping },
9978 diff --git a/drivers/block/loop.c b/drivers/block/loop.c
9979 -index f70a230..9dc90d5 100644
9980 +index 6cb1beb..bf490f7 100644
9981 --- a/drivers/block/loop.c
9982 +++ b/drivers/block/loop.c
9983 @@ -232,7 +232,7 @@ static int __do_lo_send_write(struct file *file,
9984 @@ -38133,58 +39949,39 @@ index f70a230..9dc90d5 100644
9985 set_fs(old_fs);
9986 file_end_write(file);
9987 if (likely(bw == len))
9988 -diff --git a/drivers/block/null_blk.c b/drivers/block/null_blk.c
9989 -index 091b9ea..f5428f8 100644
9990 ---- a/drivers/block/null_blk.c
9991 -+++ b/drivers/block/null_blk.c
9992 -@@ -382,15 +382,25 @@ static int null_init_hctx(struct blk_mq_hw_ctx *hctx, void *data,
9993 - return 0;
9994 - }
9995 +diff --git a/drivers/block/nvme-core.c b/drivers/block/nvme-core.c
9996 +index 02351e2..a9ea617 100644
9997 +--- a/drivers/block/nvme-core.c
9998 ++++ b/drivers/block/nvme-core.c
9999 +@@ -73,7 +73,6 @@ static LIST_HEAD(dev_list);
10000 + static struct task_struct *nvme_thread;
10001 + static struct workqueue_struct *nvme_workq;
10002 + static wait_queue_head_t nvme_kthread_wait;
10003 +-static struct notifier_block nvme_nb;
10004 +
10005 + static void nvme_reset_failed_dev(struct work_struct *ws);
10006 +
10007 +@@ -2925,6 +2924,10 @@ static struct pci_driver nvme_driver = {
10008 + .err_handler = &nvme_err_handler,
10009 + };
10010
10011 --static struct blk_mq_ops null_mq_ops = {
10012 -- .queue_rq = null_queue_rq,
10013 -- .map_queue = blk_mq_map_queue,
10014 -+static struct blk_mq_ops null_mq_single_ops = {
10015 -+ .queue_rq = null_queue_rq,
10016 -+ .map_queue = blk_mq_map_queue,
10017 - .init_hctx = null_init_hctx,
10018 - .complete = null_softirq_done_fn,
10019 -+ .alloc_hctx = blk_mq_alloc_single_hw_queue,
10020 -+ .free_hctx = blk_mq_free_single_hw_queue,
10021 ++static struct notifier_block nvme_nb = {
10022 ++ .notifier_call = &nvme_cpu_notify,
10023 +};
10024 +
10025 -+static struct blk_mq_ops null_mq_per_node_ops = {
10026 -+ .queue_rq = null_queue_rq,
10027 -+ .map_queue = blk_mq_map_queue,
10028 -+ .init_hctx = null_init_hctx,
10029 -+ .alloc_hctx = null_alloc_hctx,
10030 -+ .free_hctx = null_free_hctx,
10031 - };
10032 -
10033 - static struct blk_mq_reg null_mq_reg = {
10034 -- .ops = &null_mq_ops,
10035 -+ .ops = &null_mq_single_ops,
10036 - .queue_depth = 64,
10037 - .cmd_size = sizeof(struct nullb_cmd),
10038 - .flags = BLK_MQ_F_SHOULD_MERGE,
10039 -@@ -521,13 +531,8 @@ static int null_add_dev(void)
10040 - null_mq_reg.queue_depth = hw_queue_depth;
10041 - null_mq_reg.nr_hw_queues = submit_queues;
10042 -
10043 -- if (use_per_node_hctx) {
10044 -- null_mq_reg.ops->alloc_hctx = null_alloc_hctx;
10045 -- null_mq_reg.ops->free_hctx = null_free_hctx;
10046 -- } else {
10047 -- null_mq_reg.ops->alloc_hctx = blk_mq_alloc_single_hw_queue;
10048 -- null_mq_reg.ops->free_hctx = blk_mq_free_single_hw_queue;
10049 -- }
10050 -+ if (use_per_node_hctx)
10051 -+ null_mq_reg.ops = &null_mq_per_node_ops;
10052 + static int __init nvme_init(void)
10053 + {
10054 + int result;
10055 +@@ -2941,7 +2944,6 @@ static int __init nvme_init(void)
10056 + else if (result > 0)
10057 + nvme_major = result;
10058
10059 - nullb->q = blk_mq_init_queue(&null_mq_reg, nullb);
10060 - } else if (queue_mode == NULL_Q_BIO) {
10061 +- nvme_nb.notifier_call = &nvme_cpu_notify;
10062 + result = register_hotcpu_notifier(&nvme_nb);
10063 + if (result)
10064 + goto unregister_blkdev;
10065 diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c
10066 -index a2af73d..c0b8f61 100644
10067 +index 758ac44..58087fd 100644
10068 --- a/drivers/block/pktcdvd.c
10069 +++ b/drivers/block/pktcdvd.c
10070 @@ -108,7 +108,7 @@ static int pkt_seq_show(struct seq_file *m, void *p);
10071 @@ -38289,18 +40086,18 @@ index f038dba..bb74c08 100644
10072 int err;
10073
10074 diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c
10075 -index 8a3aff7..d7538c2 100644
10076 +index 898b84b..86f74b9 100644
10077 --- a/drivers/cdrom/cdrom.c
10078 +++ b/drivers/cdrom/cdrom.c
10079 -@@ -416,7 +416,6 @@ int register_cdrom(struct cdrom_device_info *cdi)
10080 +@@ -610,7 +610,6 @@ int register_cdrom(struct cdrom_device_info *cdi)
10081 ENSURE(reset, CDC_RESET);
10082 ENSURE(generic_packet, CDC_GENERIC_PACKET);
10083 cdi->mc_flags = 0;
10084 - cdo->n_minors = 0;
10085 - cdi->options = CDO_USE_FFLAGS;
10086 -
10087 - if (autoclose==1 && CDROM_CAN(CDC_CLOSE_TRAY))
10088 -@@ -436,8 +435,11 @@ int register_cdrom(struct cdrom_device_info *cdi)
10089 + cdi->options = CDO_USE_FFLAGS;
10090 +
10091 + if (autoclose == 1 && CDROM_CAN(CDC_CLOSE_TRAY))
10092 +@@ -630,8 +629,11 @@ int register_cdrom(struct cdrom_device_info *cdi)
10093 else
10094 cdi->cdda_method = CDDA_OLD;
10095
10096 @@ -38312,17 +40109,17 @@ index 8a3aff7..d7538c2 100644
10097 + pax_close_kernel();
10098 + }
10099
10100 - cdinfo(CD_REG_UNREG, "drive \"/dev/%s\" registered\n", cdi->name);
10101 + cd_dbg(CD_REG_UNREG, "drive \"/dev/%s\" registered\n", cdi->name);
10102 mutex_lock(&cdrom_mutex);
10103 -@@ -458,7 +460,6 @@ void unregister_cdrom(struct cdrom_device_info *cdi)
10104 +@@ -652,7 +654,6 @@ void unregister_cdrom(struct cdrom_device_info *cdi)
10105 if (cdi->exit)
10106 cdi->exit(cdi);
10107
10108 - cdi->ops->n_minors--;
10109 - cdinfo(CD_REG_UNREG, "drive \"/dev/%s\" unregistered\n", cdi->name);
10110 + cd_dbg(CD_REG_UNREG, "drive \"/dev/%s\" unregistered\n", cdi->name);
10111 }
10112
10113 -@@ -2107,7 +2108,7 @@ static int cdrom_read_cdda_old(struct cdrom_device_info *cdi, __u8 __user *ubuf,
10114 +@@ -2126,7 +2127,7 @@ static int cdrom_read_cdda_old(struct cdrom_device_info *cdi, __u8 __user *ubuf,
10115 */
10116 nr = nframes;
10117 do {
10118 @@ -38331,7 +40128,7 @@ index 8a3aff7..d7538c2 100644
10119 if (cgc.buffer)
10120 break;
10121
10122 -@@ -3429,7 +3430,7 @@ static int cdrom_print_info(const char *header, int val, char *info,
10123 +@@ -3434,7 +3435,7 @@ static int cdrom_print_info(const char *header, int val, char *info,
10124 struct cdrom_device_info *cdi;
10125 int ret;
10126
10127 @@ -38341,7 +40138,7 @@ index 8a3aff7..d7538c2 100644
10128 return 1;
10129
10130 diff --git a/drivers/cdrom/gdrom.c b/drivers/cdrom/gdrom.c
10131 -index 51e75ad..39c4c76 100644
10132 +index 584bc31..e64a12c 100644
10133 --- a/drivers/cdrom/gdrom.c
10134 +++ b/drivers/cdrom/gdrom.c
10135 @@ -491,7 +491,6 @@ static struct cdrom_device_ops gdrom_ops = {
10136 @@ -38482,7 +40279,7 @@ index e6db938..835e3a2 100644
10137 intf->proc_dir = NULL;
10138
10139 diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
10140 -index 1c4bb4f..719e873 100644
10141 +index 5d66568..c9d93c3 100644
10142 --- a/drivers/char/ipmi/ipmi_si_intf.c
10143 +++ b/drivers/char/ipmi/ipmi_si_intf.c
10144 @@ -285,7 +285,7 @@ struct smi_info {
10145 @@ -38749,7 +40546,7 @@ index 8320abd..ec48108 100644
10146
10147 if (cmd != SIOCWANDEV)
10148 diff --git a/drivers/char/random.c b/drivers/char/random.c
10149 -index 18ec404..f2438cb 100644
10150 +index 71529e1..822b036 100644
10151 --- a/drivers/char/random.c
10152 +++ b/drivers/char/random.c
10153 @@ -284,9 +284,6 @@
10154 @@ -38795,7 +40592,7 @@ index 18ec404..f2438cb 100644
10155 unsigned int add =
10156 ((pool_size - entropy_count)*anfrac*3) >> s;
10157
10158 -@@ -1176,7 +1173,7 @@ static ssize_t extract_entropy_user(struct entropy_store *r, void __user *buf,
10159 +@@ -1177,7 +1174,7 @@ static ssize_t extract_entropy_user(struct entropy_store *r, void __user *buf,
10160
10161 extract_buf(r, tmp);
10162 i = min_t(int, nbytes, EXTRACT_SIZE);
10163 @@ -38804,7 +40601,7 @@ index 18ec404..f2438cb 100644
10164 ret = -EFAULT;
10165 break;
10166 }
10167 -@@ -1566,7 +1563,7 @@ static char sysctl_bootid[16];
10168 +@@ -1567,7 +1564,7 @@ static char sysctl_bootid[16];
10169 static int proc_do_uuid(struct ctl_table *table, int write,
10170 void __user *buffer, size_t *lenp, loff_t *ppos)
10171 {
10172 @@ -38813,11 +40610,11 @@ index 18ec404..f2438cb 100644
10173 unsigned char buf[64], tmp_uuid[16], *uuid;
10174
10175 uuid = table->data;
10176 -@@ -1596,7 +1593,7 @@ static int proc_do_uuid(struct ctl_table *table, int write,
10177 - static int proc_do_entropy(ctl_table *table, int write,
10178 +@@ -1597,7 +1594,7 @@ static int proc_do_uuid(struct ctl_table *table, int write,
10179 + static int proc_do_entropy(struct ctl_table *table, int write,
10180 void __user *buffer, size_t *lenp, loff_t *ppos)
10181 {
10182 -- ctl_table fake_table;
10183 +- struct ctl_table fake_table;
10184 + ctl_table_no_const fake_table;
10185 int entropy_count;
10186
10187 @@ -38865,11 +40662,11 @@ index 7cc1fe22..b602d6b 100644
10188
10189 return 0;
10190 diff --git a/drivers/char/tpm/tpm_acpi.c b/drivers/char/tpm/tpm_acpi.c
10191 -index b9a57fa..5bb9e38 100644
10192 +index 565a947..dcdc06e 100644
10193 --- a/drivers/char/tpm/tpm_acpi.c
10194 +++ b/drivers/char/tpm/tpm_acpi.c
10195 @@ -98,11 +98,12 @@ int read_log(struct tpm_bios_log *log)
10196 - virt = acpi_os_map_memory(start, len);
10197 + virt = acpi_os_map_iomem(start, len);
10198 if (!virt) {
10199 kfree(log->bios_event_log);
10200 + log->bios_event_log = NULL;
10201 @@ -38880,7 +40677,7 @@ index b9a57fa..5bb9e38 100644
10202 - memcpy_fromio(log->bios_event_log, virt, len);
10203 + memcpy_fromio(log->bios_event_log, (const char __force_kernel *)virt, len);
10204
10205 - acpi_os_unmap_memory(virt, len);
10206 + acpi_os_unmap_iomem(virt, len);
10207 return 0;
10208 diff --git a/drivers/char/tpm/tpm_eventlog.c b/drivers/char/tpm/tpm_eventlog.c
10209 index 59f7cb2..bac8b6d 100644
10210 @@ -38950,7 +40747,7 @@ index 57a078e..c17cde8 100644
10211 composite = kzalloc(sizeof(*composite), GFP_KERNEL);
10212 if (!composite) {
10213 diff --git a/drivers/clk/socfpga/clk-gate.c b/drivers/clk/socfpga/clk-gate.c
10214 -index 501d513..fb0ecf9 100644
10215 +index dd3a78c..386d49c 100644
10216 --- a/drivers/clk/socfpga/clk-gate.c
10217 +++ b/drivers/clk/socfpga/clk-gate.c
10218 @@ -22,6 +22,7 @@
10219 @@ -38961,7 +40758,7 @@ index 501d513..fb0ecf9 100644
10220
10221 #include "clk.h"
10222
10223 -@@ -175,7 +176,7 @@ static int socfpga_clk_prepare(struct clk_hw *hwclk)
10224 +@@ -174,7 +175,7 @@ static int socfpga_clk_prepare(struct clk_hw *hwclk)
10225 return 0;
10226 }
10227
10228 @@ -38970,7 +40767,7 @@ index 501d513..fb0ecf9 100644
10229 .prepare = socfpga_clk_prepare,
10230 .recalc_rate = socfpga_clk_recalc_rate,
10231 .get_parent = socfpga_clk_get_parent,
10232 -@@ -209,8 +210,10 @@ static void __init __socfpga_gate_init(struct device_node *node,
10233 +@@ -208,8 +209,10 @@ static void __init __socfpga_gate_init(struct device_node *node,
10234 socfpga_clk->hw.reg = clk_mgr_base_addr + clk_gate[0];
10235 socfpga_clk->hw.bit_idx = clk_gate[1];
10236
10237 @@ -38984,7 +40781,7 @@ index 501d513..fb0ecf9 100644
10238
10239 rc = of_property_read_u32(node, "fixed-divider", &fixed_div);
10240 diff --git a/drivers/clk/socfpga/clk-pll.c b/drivers/clk/socfpga/clk-pll.c
10241 -index de6da95..c98278b 100644
10242 +index de6da95..a2e72c0 100644
10243 --- a/drivers/clk/socfpga/clk-pll.c
10244 +++ b/drivers/clk/socfpga/clk-pll.c
10245 @@ -21,6 +21,7 @@
10246 @@ -39000,7 +40797,7 @@ index de6da95..c98278b 100644
10247 }
10248
10249 -static struct clk_ops clk_pll_ops = {
10250 -+static clk_ops_no_const clk_pll_ops __read_only = {
10251 ++static struct clk_ops_no_const clk_pll_ops __read_only = {
10252 .recalc_rate = clk_pll_recalc_rate,
10253 .get_parent = clk_pll_get_parent,
10254 };
10255 @@ -39018,10 +40815,10 @@ index de6da95..c98278b 100644
10256 clk = clk_register(NULL, &pll_clk->hw.hw);
10257 if (WARN_ON(IS_ERR(clk))) {
10258 diff --git a/drivers/cpufreq/acpi-cpufreq.c b/drivers/cpufreq/acpi-cpufreq.c
10259 -index 000e4e0..4770351 100644
10260 +index b0c18ed..1713a80 100644
10261 --- a/drivers/cpufreq/acpi-cpufreq.c
10262 +++ b/drivers/cpufreq/acpi-cpufreq.c
10263 -@@ -676,8 +676,11 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
10264 +@@ -675,8 +675,11 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
10265 data->acpi_data = per_cpu_ptr(acpi_perf_data, cpu);
10266 per_cpu(acfreq_data, cpu) = data;
10267
10268 @@ -39035,7 +40832,7 @@ index 000e4e0..4770351 100644
10269
10270 result = acpi_processor_register_performance(data->acpi_data, cpu);
10271 if (result)
10272 -@@ -810,7 +813,9 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
10273 +@@ -809,7 +812,9 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
10274 policy->cur = acpi_cpufreq_guess_freq(data, policy->cpu);
10275 break;
10276 case ACPI_ADR_SPACE_FIXED_HARDWARE:
10277 @@ -39046,7 +40843,7 @@ index 000e4e0..4770351 100644
10278 break;
10279 default:
10280 break;
10281 -@@ -904,8 +909,10 @@ static void __init acpi_cpufreq_boost_init(void)
10282 +@@ -903,8 +908,10 @@ static void __init acpi_cpufreq_boost_init(void)
10283 if (!msrs)
10284 return;
10285
10286 @@ -39060,10 +40857,10 @@ index 000e4e0..4770351 100644
10287 cpu_notifier_register_begin();
10288
10289 diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
10290 -index dcac12d..f12df60 100644
10291 +index 6f02485..13684ae 100644
10292 --- a/drivers/cpufreq/cpufreq.c
10293 +++ b/drivers/cpufreq/cpufreq.c
10294 -@@ -2024,7 +2024,7 @@ void cpufreq_unregister_governor(struct cpufreq_governor *governor)
10295 +@@ -2100,7 +2100,7 @@ void cpufreq_unregister_governor(struct cpufreq_governor *governor)
10296 }
10297
10298 mutex_lock(&cpufreq_governor_mutex);
10299 @@ -39072,7 +40869,7 @@ index dcac12d..f12df60 100644
10300 mutex_unlock(&cpufreq_governor_mutex);
10301 return;
10302 }
10303 -@@ -2240,7 +2240,7 @@ static int cpufreq_cpu_callback(struct notifier_block *nfb,
10304 +@@ -2316,7 +2316,7 @@ static int cpufreq_cpu_callback(struct notifier_block *nfb,
10305 return NOTIFY_OK;
10306 }
10307
10308 @@ -39081,7 +40878,7 @@ index dcac12d..f12df60 100644
10309 .notifier_call = cpufreq_cpu_callback,
10310 };
10311
10312 -@@ -2280,13 +2280,17 @@ int cpufreq_boost_trigger_state(int state)
10313 +@@ -2356,13 +2356,17 @@ int cpufreq_boost_trigger_state(int state)
10314 return 0;
10315
10316 write_lock_irqsave(&cpufreq_driver_lock, flags);
10317 @@ -39101,7 +40898,7 @@ index dcac12d..f12df60 100644
10318 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
10319
10320 pr_err("%s: Cannot %s BOOST\n",
10321 -@@ -2342,8 +2346,11 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data)
10322 +@@ -2419,8 +2423,11 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data)
10323
10324 pr_debug("trying to register driver %s\n", driver_data->name);
10325
10326 @@ -39115,7 +40912,7 @@ index dcac12d..f12df60 100644
10327
10328 write_lock_irqsave(&cpufreq_driver_lock, flags);
10329 if (cpufreq_driver) {
10330 -@@ -2358,8 +2365,11 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data)
10331 +@@ -2435,8 +2442,11 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data)
10332 * Check if driver provides function to enable boost -
10333 * if not, use cpufreq_boost_set_sw as default
10334 */
10335 @@ -39130,10 +40927,10 @@ index dcac12d..f12df60 100644
10336 ret = cpufreq_sysfs_create_file(&boost.attr);
10337 if (ret) {
10338 diff --git a/drivers/cpufreq/cpufreq_governor.c b/drivers/cpufreq/cpufreq_governor.c
10339 -index e1c6433..31203ae 100644
10340 +index 1b44496..b80ff5e 100644
10341 --- a/drivers/cpufreq/cpufreq_governor.c
10342 +++ b/drivers/cpufreq/cpufreq_governor.c
10343 -@@ -191,7 +191,7 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy,
10344 +@@ -245,7 +245,7 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy,
10345 struct dbs_data *dbs_data;
10346 struct od_cpu_dbs_info_s *od_dbs_info = NULL;
10347 struct cs_cpu_dbs_info_s *cs_dbs_info = NULL;
10348 @@ -39142,7 +40939,7 @@ index e1c6433..31203ae 100644
10349 struct od_dbs_tuners *od_tuners = NULL;
10350 struct cs_dbs_tuners *cs_tuners = NULL;
10351 struct cpu_dbs_common_info *cpu_cdbs;
10352 -@@ -257,7 +257,7 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy,
10353 +@@ -311,7 +311,7 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy,
10354
10355 if ((cdata->governor == GOV_CONSERVATIVE) &&
10356 (!policy->governor->initialized)) {
10357 @@ -39151,7 +40948,7 @@ index e1c6433..31203ae 100644
10358
10359 cpufreq_register_notifier(cs_ops->notifier_block,
10360 CPUFREQ_TRANSITION_NOTIFIER);
10361 -@@ -277,7 +277,7 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy,
10362 +@@ -331,7 +331,7 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy,
10363
10364 if ((dbs_data->cdata->governor == GOV_CONSERVATIVE) &&
10365 (policy->governor->initialized == 1)) {
10366 @@ -39161,10 +40958,10 @@ index e1c6433..31203ae 100644
10367 cpufreq_unregister_notifier(cs_ops->notifier_block,
10368 CPUFREQ_TRANSITION_NOTIFIER);
10369 diff --git a/drivers/cpufreq/cpufreq_governor.h b/drivers/cpufreq/cpufreq_governor.h
10370 -index bfb9ae1..e1d3a7e 100644
10371 +index cc401d1..8197340 100644
10372 --- a/drivers/cpufreq/cpufreq_governor.h
10373 +++ b/drivers/cpufreq/cpufreq_governor.h
10374 -@@ -205,7 +205,7 @@ struct common_dbs_data {
10375 +@@ -212,7 +212,7 @@ struct common_dbs_data {
10376 void (*exit)(struct dbs_data *dbs_data);
10377
10378 /* Governor specific ops, see below */
10379 @@ -39173,7 +40970,7 @@ index bfb9ae1..e1d3a7e 100644
10380 };
10381
10382 /* Governor Per policy data */
10383 -@@ -225,7 +225,7 @@ struct od_ops {
10384 +@@ -232,7 +232,7 @@ struct od_ops {
10385 unsigned int (*powersave_bias_target)(struct cpufreq_policy *policy,
10386 unsigned int freq_next, unsigned int relation);
10387 void (*freq_increase)(struct cpufreq_policy *policy, unsigned int freq);
10388 @@ -39217,10 +41014,10 @@ index 18d4091..434be15 100644
10389 }
10390 EXPORT_SYMBOL_GPL(od_unregister_powersave_bias_handler);
10391 diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
10392 -index 870eecc..787bbca 100644
10393 +index 86631cb..c34ec78 100644
10394 --- a/drivers/cpufreq/intel_pstate.c
10395 +++ b/drivers/cpufreq/intel_pstate.c
10396 -@@ -125,10 +125,10 @@ struct pstate_funcs {
10397 +@@ -121,10 +121,10 @@ struct pstate_funcs {
10398 struct cpu_defaults {
10399 struct pstate_adjust_policy pid_policy;
10400 struct pstate_funcs funcs;
10401 @@ -39233,7 +41030,7 @@ index 870eecc..787bbca 100644
10402
10403 struct perf_limits {
10404 int no_turbo;
10405 -@@ -530,7 +530,7 @@ static void intel_pstate_set_pstate(struct cpudata *cpu, int pstate)
10406 +@@ -526,7 +526,7 @@ static void intel_pstate_set_pstate(struct cpudata *cpu, int pstate)
10407
10408 cpu->pstate.current_pstate = pstate;
10409
10410 @@ -39242,10 +41039,10 @@ index 870eecc..787bbca 100644
10411 }
10412
10413 static inline void intel_pstate_pstate_increase(struct cpudata *cpu, int steps)
10414 -@@ -552,12 +552,12 @@ static void intel_pstate_get_cpu_pstates(struct cpudata *cpu)
10415 - {
10416 - sprintf(cpu->name, "Intel 2nd generation core");
10417 +@@ -546,12 +546,12 @@ static inline void intel_pstate_pstate_decrease(struct cpudata *cpu, int steps)
10418
10419 + static void intel_pstate_get_cpu_pstates(struct cpudata *cpu)
10420 + {
10421 - cpu->pstate.min_pstate = pstate_funcs.get_min();
10422 - cpu->pstate.max_pstate = pstate_funcs.get_max();
10423 - cpu->pstate.turbo_pstate = pstate_funcs.get_turbo();
10424 @@ -39260,7 +41057,7 @@ index 870eecc..787bbca 100644
10425 intel_pstate_set_pstate(cpu, cpu->pstate.min_pstate);
10426 }
10427
10428 -@@ -847,9 +847,9 @@ static int intel_pstate_msrs_not_valid(void)
10429 +@@ -838,9 +838,9 @@ static int intel_pstate_msrs_not_valid(void)
10430 rdmsrl(MSR_IA32_APERF, aperf);
10431 rdmsrl(MSR_IA32_MPERF, mperf);
10432
10433 @@ -39273,7 +41070,7 @@ index 870eecc..787bbca 100644
10434 return -ENODEV;
10435
10436 rdmsrl(MSR_IA32_APERF, tmp);
10437 -@@ -863,7 +863,7 @@ static int intel_pstate_msrs_not_valid(void)
10438 +@@ -854,7 +854,7 @@ static int intel_pstate_msrs_not_valid(void)
10439 return 0;
10440 }
10441
10442 @@ -39282,7 +41079,7 @@ index 870eecc..787bbca 100644
10443 {
10444 pid_params.sample_rate_ms = policy->sample_rate_ms;
10445 pid_params.p_gain_pct = policy->p_gain_pct;
10446 -@@ -875,11 +875,7 @@ static void copy_pid_params(struct pstate_adjust_policy *policy)
10447 +@@ -866,11 +866,7 @@ static void copy_pid_params(struct pstate_adjust_policy *policy)
10448
10449 static void copy_cpu_funcs(struct pstate_funcs *funcs)
10450 {
10451 @@ -39438,7 +41235,7 @@ index 9bb42ba..b01b4a2 100644
10452
10453 MODULE_AUTHOR("David S. Miller <davem@××××××.com>");
10454 diff --git a/drivers/cpufreq/speedstep-centrino.c b/drivers/cpufreq/speedstep-centrino.c
10455 -index 6723f03..3465190 100644
10456 +index 7d4a315..21bb886 100644
10457 --- a/drivers/cpufreq/speedstep-centrino.c
10458 +++ b/drivers/cpufreq/speedstep-centrino.c
10459 @@ -351,8 +351,11 @@ static int centrino_cpu_init(struct cpufreq_policy *policy)
10460 @@ -39456,10 +41253,10 @@ index 6723f03..3465190 100644
10461 if (policy->cpu != 0)
10462 return -ENODEV;
10463 diff --git a/drivers/cpuidle/driver.c b/drivers/cpuidle/driver.c
10464 -index 136d6a2..06e373d 100644
10465 +index 9634f20..e1499c7 100644
10466 --- a/drivers/cpuidle/driver.c
10467 +++ b/drivers/cpuidle/driver.c
10468 -@@ -202,7 +202,7 @@ static int poll_idle(struct cpuidle_device *dev,
10469 +@@ -205,7 +205,7 @@ static int poll_idle(struct cpuidle_device *dev,
10470
10471 static void poll_idle_init(struct cpuidle_driver *drv)
10472 {
10473 @@ -39517,10 +41314,10 @@ index 12fea3e..1e28f47 100644
10474 err = pci_request_regions(pdev, name);
10475 if (err)
10476 diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
10477 -index 2042ec3..a9ce67f 100644
10478 +index 9f90369..bfcacdb 100644
10479 --- a/drivers/devfreq/devfreq.c
10480 +++ b/drivers/devfreq/devfreq.c
10481 -@@ -616,7 +616,7 @@ int devfreq_add_governor(struct devfreq_governor *governor)
10482 +@@ -673,7 +673,7 @@ int devfreq_add_governor(struct devfreq_governor *governor)
10483 goto err_out;
10484 }
10485
10486 @@ -39529,7 +41326,7 @@ index 2042ec3..a9ce67f 100644
10487
10488 list_for_each_entry(devfreq, &devfreq_list, node) {
10489 int ret = 0;
10490 -@@ -704,7 +704,7 @@ int devfreq_remove_governor(struct devfreq_governor *governor)
10491 +@@ -761,7 +761,7 @@ int devfreq_remove_governor(struct devfreq_governor *governor)
10492 }
10493 }
10494
10495 @@ -39539,7 +41336,7 @@ index 2042ec3..a9ce67f 100644
10496 mutex_unlock(&devfreq_list_lock);
10497
10498 diff --git a/drivers/dma/sh/shdma-base.c b/drivers/dma/sh/shdma-base.c
10499 -index 5239677..1cb71a8 100644
10500 +index b35007e..55ad549 100644
10501 --- a/drivers/dma/sh/shdma-base.c
10502 +++ b/drivers/dma/sh/shdma-base.c
10503 @@ -267,8 +267,8 @@ static int shdma_alloc_chan_resources(struct dma_chan *chan)
10504 @@ -39554,10 +41351,10 @@ index 5239677..1cb71a8 100644
10505 ret = -ENOMEM;
10506 goto edescalloc;
10507 diff --git a/drivers/dma/sh/shdmac.c b/drivers/dma/sh/shdmac.c
10508 -index dda7e75..0a4c867 100644
10509 +index 146d5df..3c14970 100644
10510 --- a/drivers/dma/sh/shdmac.c
10511 +++ b/drivers/dma/sh/shdmac.c
10512 -@@ -513,7 +513,7 @@ static int sh_dmae_nmi_handler(struct notifier_block *self,
10513 +@@ -514,7 +514,7 @@ static int sh_dmae_nmi_handler(struct notifier_block *self,
10514 return ret;
10515 }
10516
10517 @@ -39798,7 +41595,7 @@ index eb6935c..3cc2bfa 100644
10518 #include <asm/byteorder.h>
10519
10520 diff --git a/drivers/firewire/core.h b/drivers/firewire/core.h
10521 -index f477308..2795f24 100644
10522 +index e1480ff6..1a429bd 100644
10523 --- a/drivers/firewire/core.h
10524 +++ b/drivers/firewire/core.h
10525 @@ -111,6 +111,7 @@ struct fw_card_driver {
10526 @@ -39810,10 +41607,10 @@ index f477308..2795f24 100644
10527 void fw_card_initialize(struct fw_card *card,
10528 const struct fw_card_driver *driver, struct device *device);
10529 diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c
10530 -index 586f2f7..3545ad2 100644
10531 +index a66a321..f6caf20 100644
10532 --- a/drivers/firewire/ohci.c
10533 +++ b/drivers/firewire/ohci.c
10534 -@@ -2049,10 +2049,12 @@ static void bus_reset_work(struct work_struct *work)
10535 +@@ -2056,10 +2056,12 @@ static void bus_reset_work(struct work_struct *work)
10536 be32_to_cpu(ohci->next_header));
10537 }
10538
10539 @@ -39826,7 +41623,7 @@ index 586f2f7..3545ad2 100644
10540
10541 spin_unlock_irq(&ohci->lock);
10542
10543 -@@ -2584,8 +2586,10 @@ static int ohci_enable_phys_dma(struct fw_card *card,
10544 +@@ -2591,8 +2593,10 @@ static int ohci_enable_phys_dma(struct fw_card *card,
10545 unsigned long flags;
10546 int n, ret = 0;
10547
10548 @@ -39885,10 +41682,10 @@ index 1491dd4..aa910db 100644
10549 EXPORT_SYMBOL_GPL(cper_next_record_id);
10550
10551 diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c
10552 -index af20f17..4e4e545 100644
10553 +index dc79346..b39bd69 100644
10554 --- a/drivers/firmware/efi/efi.c
10555 +++ b/drivers/firmware/efi/efi.c
10556 -@@ -120,14 +120,16 @@ static struct attribute_group efi_subsys_attr_group = {
10557 +@@ -122,14 +122,16 @@ static struct attribute_group efi_subsys_attr_group = {
10558 };
10559
10560 static struct efivars generic_efivars;
10561 @@ -39911,10 +41708,10 @@ index af20f17..4e4e545 100644
10562 return efivars_register(&generic_efivars, &generic_ops, efi_kobj);
10563 }
10564 diff --git a/drivers/firmware/efi/efivars.c b/drivers/firmware/efi/efivars.c
10565 -index 50ea412..caccd6e9 100644
10566 +index 463c565..02a5640 100644
10567 --- a/drivers/firmware/efi/efivars.c
10568 +++ b/drivers/firmware/efi/efivars.c
10569 -@@ -456,7 +456,7 @@ efivar_create_sysfs_entry(struct efivar_entry *new_var)
10570 +@@ -588,7 +588,7 @@ efivar_create_sysfs_entry(struct efivar_entry *new_var)
10571 static int
10572 create_efivars_bin_attributes(void)
10573 {
10574 @@ -39940,7 +41737,7 @@ index 2f569aa..c95f4fb 100644
10575 }
10576
10577 diff --git a/drivers/gpio/gpio-em.c b/drivers/gpio/gpio-em.c
10578 -index 8765bd6..2e5b147 100644
10579 +index cde3605..8b69df7 100644
10580 --- a/drivers/gpio/gpio-em.c
10581 +++ b/drivers/gpio/gpio-em.c
10582 @@ -278,7 +278,7 @@ static int em_gio_probe(struct platform_device *pdev)
10583 @@ -39966,10 +41763,10 @@ index 7030422..42a3fe9 100644
10584 static struct {
10585 spinlock_t lock;
10586 diff --git a/drivers/gpio/gpio-rcar.c b/drivers/gpio/gpio-rcar.c
10587 -index 03c9148..c66e753 100644
10588 +index b6ae89e..ac7349c 100644
10589 --- a/drivers/gpio/gpio-rcar.c
10590 +++ b/drivers/gpio/gpio-rcar.c
10591 -@@ -355,7 +355,7 @@ static int gpio_rcar_probe(struct platform_device *pdev)
10592 +@@ -357,7 +357,7 @@ static int gpio_rcar_probe(struct platform_device *pdev)
10593 struct gpio_rcar_priv *p;
10594 struct resource *io, *irq;
10595 struct gpio_chip *gpio_chip;
10596 @@ -39992,10 +41789,10 @@ index 66cbcc1..0c5e622 100644
10597 return -EINVAL;
10598 }
10599 diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
10600 -index f48817d..d35d7f8 100644
10601 +index 2ebc907..01bdd6e 100644
10602 --- a/drivers/gpio/gpiolib.c
10603 +++ b/drivers/gpio/gpiolib.c
10604 -@@ -1458,8 +1458,10 @@ static void gpiochip_irqchip_remove(struct gpio_chip *gpiochip)
10605 +@@ -1482,8 +1482,10 @@ static void gpiochip_irqchip_remove(struct gpio_chip *gpiochip)
10606 }
10607
10608 if (gpiochip->irqchip) {
10609 @@ -40008,12 +41805,13 @@ index f48817d..d35d7f8 100644
10610 gpiochip->irqchip = NULL;
10611 }
10612 }
10613 -@@ -1524,8 +1526,10 @@ int gpiochip_irqchip_add(struct gpio_chip *gpiochip,
10614 +@@ -1549,8 +1551,11 @@ int gpiochip_irqchip_add(struct gpio_chip *gpiochip,
10615 gpiochip->irqchip = NULL;
10616 return -EINVAL;
10617 }
10618 - irqchip->irq_request_resources = gpiochip_irq_reqres;
10619 - irqchip->irq_release_resources = gpiochip_irq_relres;
10620 ++
10621 + pax_open_kernel();
10622 + *(void **)&irqchip->irq_request_resources = gpiochip_irq_reqres;
10623 + *(void **)&irqchip->irq_release_resources = gpiochip_irq_relres;
10624 @@ -40022,10 +41820,10 @@ index f48817d..d35d7f8 100644
10625 /*
10626 * Prepare the mapping since the irqchip shall be orthogonal to
10627 diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
10628 -index d8b7099..8a314a5 100644
10629 +index fe94cc1..5e697b3 100644
10630 --- a/drivers/gpu/drm/drm_crtc.c
10631 +++ b/drivers/gpu/drm/drm_crtc.c
10632 -@@ -3500,7 +3500,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
10633 +@@ -3584,7 +3584,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
10634 goto done;
10635 }
10636
10637 @@ -40035,9 +41833,7 @@ index d8b7099..8a314a5 100644
10638 ret = -EFAULT;
10639 goto done;
10640 diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
10641 -old mode 100644
10642 -new mode 100755
10643 -index 8218078..9960928a
10644 +index 8218078..9960928a 100644
10645 --- a/drivers/gpu/drm/drm_drv.c
10646 +++ b/drivers/gpu/drm/drm_drv.c
10647 @@ -233,7 +233,7 @@ module_exit(drm_core_exit);
10648 @@ -40059,10 +41855,10 @@ index 8218078..9960928a
10649 int retcode = -EINVAL;
10650 char stack_kdata[128];
10651 diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c
10652 -index e1eba0b..98f69f9 100644
10653 +index 021fe5d..abc9ce6 100644
10654 --- a/drivers/gpu/drm/drm_fops.c
10655 +++ b/drivers/gpu/drm/drm_fops.c
10656 -@@ -89,7 +89,7 @@ int drm_open(struct inode *inode, struct file *filp)
10657 +@@ -88,7 +88,7 @@ int drm_open(struct inode *inode, struct file *filp)
10658 return PTR_ERR(minor);
10659
10660 dev = minor->dev;
10661 @@ -40071,7 +41867,7 @@ index e1eba0b..98f69f9 100644
10662 need_setup = 1;
10663
10664 /* share address_space across all char-devs of a single device */
10665 -@@ -106,7 +106,7 @@ int drm_open(struct inode *inode, struct file *filp)
10666 +@@ -105,7 +105,7 @@ int drm_open(struct inode *inode, struct file *filp)
10667 return 0;
10668
10669 err_undo:
10670 @@ -40080,7 +41876,7 @@ index e1eba0b..98f69f9 100644
10671 drm_minor_release(minor);
10672 return retcode;
10673 }
10674 -@@ -430,7 +430,7 @@ int drm_release(struct inode *inode, struct file *filp)
10675 +@@ -427,7 +427,7 @@ int drm_release(struct inode *inode, struct file *filp)
10676
10677 mutex_lock(&drm_global_mutex);
10678
10679 @@ -40089,7 +41885,7 @@ index e1eba0b..98f69f9 100644
10680
10681 if (dev->driver->preclose)
10682 dev->driver->preclose(dev, file_priv);
10683 -@@ -439,10 +439,10 @@ int drm_release(struct inode *inode, struct file *filp)
10684 +@@ -436,10 +436,10 @@ int drm_release(struct inode *inode, struct file *filp)
10685 * Begin inline drm_release
10686 */
10687
10688 @@ -40102,7 +41898,7 @@ index e1eba0b..98f69f9 100644
10689
10690 /* Release any auth tokens that might point to this file_priv,
10691 (do that under the drm_global_mutex) */
10692 -@@ -543,7 +543,7 @@ int drm_release(struct inode *inode, struct file *filp)
10693 +@@ -540,7 +540,7 @@ int drm_release(struct inode *inode, struct file *filp)
10694 * End inline drm_release
10695 */
10696
10697 @@ -40173,10 +41969,10 @@ index 3d2e91c..d31c4c9 100644
10698 item->object = NULL;
10699 }
10700 diff --git a/drivers/gpu/drm/drm_info.c b/drivers/gpu/drm/drm_info.c
10701 -index 7473035..a48b9c5 100644
10702 +index 86feedd..cba70f5 100644
10703 --- a/drivers/gpu/drm/drm_info.c
10704 +++ b/drivers/gpu/drm/drm_info.c
10705 -@@ -75,10 +75,13 @@ int drm_vm_info(struct seq_file *m, void *data)
10706 +@@ -73,10 +73,13 @@ int drm_vm_info(struct seq_file *m, void *data)
10707 struct drm_local_map *map;
10708 struct drm_map_list *r_list;
10709
10710 @@ -40194,7 +41990,7 @@ index 7473035..a48b9c5 100644
10711 const char *type;
10712 int i;
10713
10714 -@@ -89,7 +92,7 @@ int drm_vm_info(struct seq_file *m, void *data)
10715 +@@ -87,7 +90,7 @@ int drm_vm_info(struct seq_file *m, void *data)
10716 map = r_list->map;
10717 if (!map)
10718 continue;
10719 @@ -40203,7 +41999,7 @@ index 7473035..a48b9c5 100644
10720 type = "??";
10721 else
10722 type = types[map->type];
10723 -@@ -261,7 +264,11 @@ int drm_vma_info(struct seq_file *m, void *data)
10724 +@@ -259,7 +262,11 @@ int drm_vma_info(struct seq_file *m, void *data)
10725 vma->vm_flags & VM_MAYSHARE ? 's' : 'p',
10726 vma->vm_flags & VM_LOCKED ? 'l' : '-',
10727 vma->vm_flags & VM_IO ? 'i' : '-',
10728 @@ -40268,7 +42064,7 @@ index 2f4c4343..dd12cd2 100644
10729 ret = drm_ioctl(filp, cmd, arg);
10730
10731 diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c
10732 -index 4c24c3a..c903cab 100644
10733 +index 14d1646..99f9d49 100644
10734 --- a/drivers/gpu/drm/drm_stub.c
10735 +++ b/drivers/gpu/drm/drm_stub.c
10736 @@ -455,7 +455,7 @@ void drm_unplug_dev(struct drm_device *dev)
10737 @@ -40281,7 +42077,7 @@ index 4c24c3a..c903cab 100644
10738 }
10739 mutex_unlock(&drm_global_mutex);
10740 diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c
10741 -index c22c309..ae758c3 100644
10742 +index 369b262..09ea3ab 100644
10743 --- a/drivers/gpu/drm/drm_sysfs.c
10744 +++ b/drivers/gpu/drm/drm_sysfs.c
10745 @@ -505,7 +505,7 @@ static void drm_sysfs_release(struct device *dev)
10746 @@ -40309,23 +42105,23 @@ index d4d16ed..8fb0b51 100644
10747 int front_offset;
10748 } drm_i810_private_t;
10749 diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
10750 -index eedb023..25076a4 100644
10751 +index d443441..ab091dd 100644
10752 --- a/drivers/gpu/drm/i915/i915_dma.c
10753 +++ b/drivers/gpu/drm/i915/i915_dma.c
10754 -@@ -1280,7 +1280,7 @@ static bool i915_switcheroo_can_switch(struct pci_dev *pdev)
10755 - bool can_switch;
10756 -
10757 - spin_lock(&dev->count_lock);
10758 -- can_switch = (dev->open_count == 0);
10759 -+ can_switch = (local_read(&dev->open_count) == 0);
10760 - spin_unlock(&dev->count_lock);
10761 - return can_switch;
10762 +@@ -1290,7 +1290,7 @@ static bool i915_switcheroo_can_switch(struct pci_dev *pdev)
10763 + * locking inversion with the driver load path. And the access here is
10764 + * completely racy anyway. So don't bother with locking for now.
10765 + */
10766 +- return dev->open_count == 0;
10767 ++ return local_read(&dev->open_count) == 0;
10768 }
10769 +
10770 + static const struct vga_switcheroo_client_ops i915_switcheroo_ops = {
10771 diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
10772 -index 20fef6c..76c78fb 100644
10773 +index 3a30133..ef4a743 100644
10774 --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
10775 +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
10776 -@@ -886,9 +886,9 @@ i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
10777 +@@ -891,9 +891,9 @@ i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
10778
10779 static int
10780 validate_exec_list(struct drm_i915_gem_exec_object2 *exec,
10781 @@ -40338,7 +42134,7 @@ index 20fef6c..76c78fb 100644
10782 unsigned relocs_max = UINT_MAX / sizeof(struct drm_i915_gem_relocation_entry);
10783
10784 diff --git a/drivers/gpu/drm/i915/i915_ioc32.c b/drivers/gpu/drm/i915/i915_ioc32.c
10785 -index 3c59584..500f2e9 100644
10786 +index 2e0613e..a8b94d9 100644
10787 --- a/drivers/gpu/drm/i915/i915_ioc32.c
10788 +++ b/drivers/gpu/drm/i915/i915_ioc32.c
10789 @@ -181,7 +181,7 @@ static int compat_i915_alloc(struct file *file, unsigned int cmd,
10790 @@ -40360,11 +42156,11 @@ index 3c59584..500f2e9 100644
10791 if (nr < DRM_COMMAND_BASE)
10792 return drm_compat_ioctl(filp, cmd, arg);
10793
10794 -- if (nr < DRM_COMMAND_BASE + DRM_ARRAY_SIZE(i915_compat_ioctls))
10795 +- if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(i915_compat_ioctls))
10796 - fn = i915_compat_ioctls[nr - DRM_COMMAND_BASE];
10797 -
10798 - if (fn != NULL)
10799 -+ if (nr < DRM_COMMAND_BASE + DRM_ARRAY_SIZE(i915_compat_ioctls)) {
10800 ++ if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(i915_compat_ioctls)) {
10801 + drm_ioctl_compat_t fn = i915_compat_ioctls[nr - DRM_COMMAND_BASE];
10802 ret = (*fn) (filp, cmd, arg);
10803 - else
10804 @@ -40373,10 +42169,10 @@ index 3c59584..500f2e9 100644
10805
10806 return ret;
10807 diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
10808 -index c83eb75..d205e5b2 100644
10809 +index f0be855..94e82d9 100644
10810 --- a/drivers/gpu/drm/i915/intel_display.c
10811 +++ b/drivers/gpu/drm/i915/intel_display.c
10812 -@@ -11179,13 +11179,13 @@ struct intel_quirk {
10813 +@@ -11604,13 +11604,13 @@ struct intel_quirk {
10814 int subsystem_vendor;
10815 int subsystem_device;
10816 void (*hook)(struct drm_device *dev);
10817 @@ -40392,7 +42188,7 @@ index c83eb75..d205e5b2 100644
10818
10819 static int intel_dmi_reverse_brightness(const struct dmi_system_id *id)
10820 {
10821 -@@ -11193,18 +11193,20 @@ static int intel_dmi_reverse_brightness(const struct dmi_system_id *id)
10822 +@@ -11618,18 +11618,20 @@ static int intel_dmi_reverse_brightness(const struct dmi_system_id *id)
10823 return 1;
10824 }
10825
10826 @@ -40440,7 +42236,7 @@ index fe45321..836fdca 100644
10827
10828 unsigned int fb_cpp;
10829 diff --git a/drivers/gpu/drm/mga/mga_ioc32.c b/drivers/gpu/drm/mga/mga_ioc32.c
10830 -index 86b4bb8..ae237ad 100644
10831 +index 729bfd5..ead8823 100644
10832 --- a/drivers/gpu/drm/mga/mga_ioc32.c
10833 +++ b/drivers/gpu/drm/mga/mga_ioc32.c
10834 @@ -190,7 +190,7 @@ static int compat_mga_dma_bootstrap(struct file *file, unsigned int cmd,
10835 @@ -40462,11 +42258,11 @@ index 86b4bb8..ae237ad 100644
10836 if (nr < DRM_COMMAND_BASE)
10837 return drm_compat_ioctl(filp, cmd, arg);
10838
10839 -- if (nr < DRM_COMMAND_BASE + DRM_ARRAY_SIZE(mga_compat_ioctls))
10840 +- if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(mga_compat_ioctls))
10841 - fn = mga_compat_ioctls[nr - DRM_COMMAND_BASE];
10842 -
10843 - if (fn != NULL)
10844 -+ if (nr < DRM_COMMAND_BASE + DRM_ARRAY_SIZE(mga_compat_ioctls)) {
10845 ++ if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(mga_compat_ioctls)) {
10846 + drm_ioctl_compat_t fn = mga_compat_ioctls[nr - DRM_COMMAND_BASE];
10847 ret = (*fn) (filp, cmd, arg);
10848 - else
10849 @@ -40540,7 +42336,7 @@ index 7efbafa..19f8087 100644
10850 struct ttm_buffer_object *,
10851 struct ttm_mem_reg *, struct ttm_mem_reg *);
10852 diff --git a/drivers/gpu/drm/nouveau/nouveau_ioc32.c b/drivers/gpu/drm/nouveau/nouveau_ioc32.c
10853 -index c1a7e5a..38b8539 100644
10854 +index 462679a..88e32a7 100644
10855 --- a/drivers/gpu/drm/nouveau/nouveau_ioc32.c
10856 +++ b/drivers/gpu/drm/nouveau/nouveau_ioc32.c
10857 @@ -50,7 +50,7 @@ long nouveau_compat_ioctl(struct file *filp, unsigned int cmd,
10858 @@ -40608,18 +42404,18 @@ index ab0228f..20b756b 100644
10859
10860 int
10861 diff --git a/drivers/gpu/drm/nouveau/nouveau_vga.c b/drivers/gpu/drm/nouveau/nouveau_vga.c
10862 -index fb84da3..d7ee463 100644
10863 +index 4f4c3fe..2cce716 100644
10864 --- a/drivers/gpu/drm/nouveau/nouveau_vga.c
10865 +++ b/drivers/gpu/drm/nouveau/nouveau_vga.c
10866 -@@ -67,7 +67,7 @@ nouveau_switcheroo_can_switch(struct pci_dev *pdev)
10867 - bool can_switch;
10868 -
10869 - spin_lock(&dev->count_lock);
10870 -- can_switch = (dev->open_count == 0);
10871 -+ can_switch = (local_read(&dev->open_count) == 0);
10872 - spin_unlock(&dev->count_lock);
10873 - return can_switch;
10874 +@@ -70,7 +70,7 @@ nouveau_switcheroo_can_switch(struct pci_dev *pdev)
10875 + * locking inversion with the driver load path. And the access here is
10876 + * completely racy anyway. So don't bother with locking for now.
10877 + */
10878 +- return dev->open_count == 0;
10879 ++ return local_read(&dev->open_count) == 0;
10880 }
10881 +
10882 + static const struct vga_switcheroo_client_ops
10883 diff --git a/drivers/gpu/drm/qxl/qxl_cmd.c b/drivers/gpu/drm/qxl/qxl_cmd.c
10884 index eb89653..613cf71 100644
10885 --- a/drivers/gpu/drm/qxl/qxl_cmd.c
10886 @@ -40697,7 +42493,7 @@ index 36ed40b..0397633 100644
10887 wait_queue_head_t display_event;
10888 wait_queue_head_t cursor_event;
10889 diff --git a/drivers/gpu/drm/qxl/qxl_ioctl.c b/drivers/gpu/drm/qxl/qxl_ioctl.c
10890 -index 0bb86e6..d41416d 100644
10891 +index b110883..dd06418 100644
10892 --- a/drivers/gpu/drm/qxl/qxl_ioctl.c
10893 +++ b/drivers/gpu/drm/qxl/qxl_ioctl.c
10894 @@ -181,7 +181,7 @@ static int qxl_process_single_command(struct qxl_device *qdev,
10895 @@ -40733,7 +42529,7 @@ index 0bb86e6..d41416d 100644
10896 return -EFAULT;
10897
10898 diff --git a/drivers/gpu/drm/qxl/qxl_irq.c b/drivers/gpu/drm/qxl/qxl_irq.c
10899 -index 3485bdc..20d26e3 100644
10900 +index 0bf1e20..42a7310 100644
10901 --- a/drivers/gpu/drm/qxl/qxl_irq.c
10902 +++ b/drivers/gpu/drm/qxl/qxl_irq.c
10903 @@ -36,19 +36,19 @@ irqreturn_t qxl_irq_handler(int irq, void *arg)
10904 @@ -40773,10 +42569,10 @@ index 3485bdc..20d26e3 100644
10905 + atomic_set_unchecked(&qdev->irq_received_cursor, 0);
10906 + atomic_set_unchecked(&qdev->irq_received_io_cmd, 0);
10907 qdev->irq_received_error = 0;
10908 - ret = drm_irq_install(qdev->ddev);
10909 + ret = drm_irq_install(qdev->ddev, qdev->ddev->pdev->irq);
10910 qdev->ram_header->int_mask = QXL_INTERRUPT_MASK;
10911 diff --git a/drivers/gpu/drm/qxl/qxl_ttm.c b/drivers/gpu/drm/qxl/qxl_ttm.c
10912 -index d52c275..4e6b43d 100644
10913 +index 71a1bae..cb1f103 100644
10914 --- a/drivers/gpu/drm/qxl/qxl_ttm.c
10915 +++ b/drivers/gpu/drm/qxl/qxl_ttm.c
10916 @@ -103,7 +103,7 @@ static void qxl_ttm_global_fini(struct qxl_device *qdev)
10917 @@ -40788,7 +42584,7 @@ index d52c275..4e6b43d 100644
10918 static const struct vm_operations_struct *ttm_vm_ops;
10919
10920 static int qxl_ttm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
10921 -@@ -147,8 +147,10 @@ int qxl_mmap(struct file *filp, struct vm_area_struct *vma)
10922 +@@ -145,8 +145,10 @@ int qxl_mmap(struct file *filp, struct vm_area_struct *vma)
10923 return r;
10924 if (unlikely(ttm_vm_ops == NULL)) {
10925 ttm_vm_ops = vma->vm_ops;
10926 @@ -40799,7 +42595,7 @@ index d52c275..4e6b43d 100644
10927 }
10928 vma->vm_ops = &qxl_ttm_vm_ops;
10929 return 0;
10930 -@@ -561,25 +563,23 @@ static int qxl_mm_dump_table(struct seq_file *m, void *data)
10931 +@@ -555,25 +557,23 @@ static int qxl_mm_dump_table(struct seq_file *m, void *data)
10932 static int qxl_ttm_debugfs_init(struct qxl_device *qdev)
10933 {
10934 #if defined(CONFIG_DEBUG_FS)
10935 @@ -40875,7 +42671,7 @@ index 5bf3f5f..7000661 100644
10936 u32 color_fmt;
10937 unsigned int front_offset;
10938 diff --git a/drivers/gpu/drm/r128/r128_ioc32.c b/drivers/gpu/drm/r128/r128_ioc32.c
10939 -index b0d0fd3..a6fbbe4 100644
10940 +index 663f38c..c689495 100644
10941 --- a/drivers/gpu/drm/r128/r128_ioc32.c
10942 +++ b/drivers/gpu/drm/r128/r128_ioc32.c
10943 @@ -178,7 +178,7 @@ static int compat_r128_getparam(struct file *file, unsigned int cmd,
10944 @@ -40897,11 +42693,11 @@ index b0d0fd3..a6fbbe4 100644
10945 if (nr < DRM_COMMAND_BASE)
10946 return drm_compat_ioctl(filp, cmd, arg);
10947
10948 -- if (nr < DRM_COMMAND_BASE + DRM_ARRAY_SIZE(r128_compat_ioctls))
10949 +- if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(r128_compat_ioctls))
10950 - fn = r128_compat_ioctls[nr - DRM_COMMAND_BASE];
10951 -
10952 - if (fn != NULL)
10953 -+ if (nr < DRM_COMMAND_BASE + DRM_ARRAY_SIZE(r128_compat_ioctls)) {
10954 ++ if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(r128_compat_ioctls)) {
10955 + drm_ioctl_compat_t fn = r128_compat_ioctls[nr - DRM_COMMAND_BASE];
10956 ret = (*fn) (filp, cmd, arg);
10957 - else
10958 @@ -40932,7 +42728,7 @@ index c2ae496..30b5993 100644
10959 return IRQ_HANDLED;
10960 }
10961 diff --git a/drivers/gpu/drm/r128/r128_state.c b/drivers/gpu/drm/r128/r128_state.c
10962 -index e806dac..f81d32f 100644
10963 +index 575e986..66e62ca 100644
10964 --- a/drivers/gpu/drm/r128/r128_state.c
10965 +++ b/drivers/gpu/drm/r128/r128_state.c
10966 @@ -320,10 +320,10 @@ static void r128_clear_box(drm_r128_private_t *dev_priv,
10967 @@ -40970,18 +42766,18 @@ index 4a85bb6..aaea819 100644
10968 if (regcomp
10969 (&mask_rex, "(0x[0-9a-fA-F]*) *([_a-zA-Z0-9]*)", REG_EXTENDED)) {
10970 diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
10971 -index 2cd144c..a01c95a 100644
10972 +index 697add2..9860f5b 100644
10973 --- a/drivers/gpu/drm/radeon/radeon_device.c
10974 +++ b/drivers/gpu/drm/radeon/radeon_device.c
10975 -@@ -1129,7 +1129,7 @@ static bool radeon_switcheroo_can_switch(struct pci_dev *pdev)
10976 - bool can_switch;
10977 -
10978 - spin_lock(&dev->count_lock);
10979 -- can_switch = (dev->open_count == 0);
10980 -+ can_switch = (local_read(&dev->open_count) == 0);
10981 - spin_unlock(&dev->count_lock);
10982 - return can_switch;
10983 +@@ -1169,7 +1169,7 @@ static bool radeon_switcheroo_can_switch(struct pci_dev *pdev)
10984 + * locking inversion with the driver load path. And the access here is
10985 + * completely racy anyway. So don't bother with locking for now.
10986 + */
10987 +- return dev->open_count == 0;
10988 ++ return local_read(&dev->open_count) == 0;
10989 }
10990 +
10991 + static const struct vga_switcheroo_client_ops radeon_switcheroo_ops = {
10992 diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h
10993 index dafd812..1bf20c7 100644
10994 --- a/drivers/gpu/drm/radeon/radeon_drv.h
10995 @@ -40996,7 +42792,7 @@ index dafd812..1bf20c7 100644
10996 uint32_t irq_enable_reg;
10997 uint32_t r500_disp_irq_reg;
10998 diff --git a/drivers/gpu/drm/radeon/radeon_ioc32.c b/drivers/gpu/drm/radeon/radeon_ioc32.c
10999 -index bdb0f93..5ff558f 100644
11000 +index 0b98ea1..0881827 100644
11001 --- a/drivers/gpu/drm/radeon/radeon_ioc32.c
11002 +++ b/drivers/gpu/drm/radeon/radeon_ioc32.c
11003 @@ -358,7 +358,7 @@ static int compat_radeon_cp_setparam(struct file *file, unsigned int cmd,
11004 @@ -41027,11 +42823,11 @@ index bdb0f93..5ff558f 100644
11005 if (nr < DRM_COMMAND_BASE)
11006 return drm_compat_ioctl(filp, cmd, arg);
11007
11008 -- if (nr < DRM_COMMAND_BASE + DRM_ARRAY_SIZE(radeon_compat_ioctls))
11009 +- if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(radeon_compat_ioctls))
11010 - fn = radeon_compat_ioctls[nr - DRM_COMMAND_BASE];
11011 -
11012 - if (fn != NULL)
11013 -+ if (nr < DRM_COMMAND_BASE + DRM_ARRAY_SIZE(radeon_compat_ioctls)) {
11014 ++ if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(radeon_compat_ioctls)) {
11015 + drm_ioctl_compat_t fn = radeon_compat_ioctls[nr - DRM_COMMAND_BASE];
11016 ret = (*fn) (filp, cmd, arg);
11017 - else
11018 @@ -41064,7 +42860,7 @@ index 244b19b..c19226d 100644
11019
11020 dev->max_vblank_count = 0x001fffff;
11021 diff --git a/drivers/gpu/drm/radeon/radeon_state.c b/drivers/gpu/drm/radeon/radeon_state.c
11022 -index 956ab7f..fbd36d8 100644
11023 +index 23bb64f..69d7234 100644
11024 --- a/drivers/gpu/drm/radeon/radeon_state.c
11025 +++ b/drivers/gpu/drm/radeon/radeon_state.c
11026 @@ -2168,7 +2168,7 @@ static int radeon_cp_clear(struct drm_device *dev, void *data, struct drm_file *
11027 @@ -41110,10 +42906,10 @@ index c8a8a51..219dacc 100644
11028 vma->vm_ops = &radeon_ttm_vm_ops;
11029 return 0;
11030 diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c
11031 -index edb871d..a275c6ed 100644
11032 +index ef40381..347463e 100644
11033 --- a/drivers/gpu/drm/tegra/dc.c
11034 +++ b/drivers/gpu/drm/tegra/dc.c
11035 -@@ -1057,7 +1057,7 @@ static int tegra_dc_debugfs_init(struct tegra_dc *dc, struct drm_minor *minor)
11036 +@@ -1173,7 +1173,7 @@ static int tegra_dc_debugfs_init(struct tegra_dc *dc, struct drm_minor *minor)
11037 }
11038
11039 for (i = 0; i < ARRAY_SIZE(debugfs_files); i++)
11040 @@ -41123,10 +42919,10 @@ index edb871d..a275c6ed 100644
11041 err = drm_debugfs_create_files(dc->debugfs_files,
11042 ARRAY_SIZE(debugfs_files),
11043 diff --git a/drivers/gpu/drm/tegra/dsi.c b/drivers/gpu/drm/tegra/dsi.c
11044 -index 0e599f0..c9ea7c7 100644
11045 +index bd56f2a..255af4b 100644
11046 --- a/drivers/gpu/drm/tegra/dsi.c
11047 +++ b/drivers/gpu/drm/tegra/dsi.c
11048 -@@ -39,7 +39,7 @@ struct tegra_dsi {
11049 +@@ -41,7 +41,7 @@ struct tegra_dsi {
11050 struct clk *clk_lp;
11051 struct clk *clk;
11052
11053 @@ -41136,10 +42932,10 @@ index 0e599f0..c9ea7c7 100644
11054 struct dentry *debugfs;
11055
11056 diff --git a/drivers/gpu/drm/tegra/hdmi.c b/drivers/gpu/drm/tegra/hdmi.c
11057 -index 6928015..c9853e7 100644
11058 +index ba067bb..23afbbd 100644
11059 --- a/drivers/gpu/drm/tegra/hdmi.c
11060 +++ b/drivers/gpu/drm/tegra/hdmi.c
11061 -@@ -59,7 +59,7 @@ struct tegra_hdmi {
11062 +@@ -60,7 +60,7 @@ struct tegra_hdmi {
11063 bool stereo;
11064 bool dvi;
11065
11066 @@ -41479,10 +43275,10 @@ index 1bdcccc..f745d2c 100644
11067 rdesc[11] = rdesc[16] = 0xff;
11068 rdesc[12] = rdesc[17] = 0x03;
11069 diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
11070 -index a5c7927..025a2b4 100644
11071 +index 8ed66fd..38ff772 100644
11072 --- a/drivers/hid/hid-core.c
11073 +++ b/drivers/hid/hid-core.c
11074 -@@ -2476,7 +2476,7 @@ EXPORT_SYMBOL_GPL(hid_ignore);
11075 +@@ -2488,7 +2488,7 @@ EXPORT_SYMBOL_GPL(hid_ignore);
11076
11077 int hid_add_device(struct hid_device *hdev)
11078 {
11079 @@ -41491,7 +43287,7 @@ index a5c7927..025a2b4 100644
11080 int ret;
11081
11082 if (WARN_ON(hdev->status & HID_STAT_ADDED))
11083 -@@ -2518,7 +2518,7 @@ int hid_add_device(struct hid_device *hdev)
11084 +@@ -2530,7 +2530,7 @@ int hid_add_device(struct hid_device *hdev)
11085 /* XXX hack, any other cleaner solution after the driver core
11086 * is converted to allow more than 20 bytes as the device name? */
11087 dev_set_name(&hdev->dev, "%04X:%04X:%04X.%04X", hdev->bus,
11088 @@ -41574,6 +43370,34 @@ index 486dbde..b7ba829 100644
11089
11090 spin_lock_irqsave(&djrcv_dev->lock, flags);
11091 if (dj_report->report_id == REPORT_ID_DJ_SHORT) {
11092 +diff --git a/drivers/hid/hid-magicmouse.c b/drivers/hid/hid-magicmouse.c
11093 +index ecc2cbf..29a74c1 100644
11094 +--- a/drivers/hid/hid-magicmouse.c
11095 ++++ b/drivers/hid/hid-magicmouse.c
11096 +@@ -290,6 +290,11 @@ static int magicmouse_raw_event(struct hid_device *hdev,
11097 + if (size < 4 || ((size - 4) % 9) != 0)
11098 + return 0;
11099 + npoints = (size - 4) / 9;
11100 ++ if (npoints > 15) {
11101 ++ hid_warn(hdev, "invalid size value (%d) for TRACKPAD_REPORT_ID\n",
11102 ++ size);
11103 ++ return 0;
11104 ++ }
11105 + msc->ntouches = 0;
11106 + for (ii = 0; ii < npoints; ii++)
11107 + magicmouse_emit_touch(msc, ii, data + ii * 9 + 4);
11108 +@@ -307,6 +312,11 @@ static int magicmouse_raw_event(struct hid_device *hdev,
11109 + if (size < 6 || ((size - 6) % 8) != 0)
11110 + return 0;
11111 + npoints = (size - 6) / 8;
11112 ++ if (npoints > 15) {
11113 ++ hid_warn(hdev, "invalid size value (%d) for MOUSE_REPORT_ID\n",
11114 ++ size);
11115 ++ return 0;
11116 ++ }
11117 + msc->ntouches = 0;
11118 + for (ii = 0; ii < npoints; ii++)
11119 + magicmouse_emit_touch(msc, ii, data + ii * 8 + 6);
11120 diff --git a/drivers/hid/hid-monterey.c b/drivers/hid/hid-monterey.c
11121 index 9e14c00..25daf28 100644
11122 --- a/drivers/hid/hid-monterey.c
11123 @@ -41600,6 +43424,23 @@ index 736b250..6aca4f2 100644
11124 rdesc[41] == 0x00 && rdesc[59] == 0x26 &&
11125 rdesc[60] == 0xf9 && rdesc[61] == 0x00) {
11126 hid_info(hdev, "fixing up Petalynx Maxter Remote report descriptor\n");
11127 +diff --git a/drivers/hid/hid-picolcd_core.c b/drivers/hid/hid-picolcd_core.c
11128 +index acbb0210..020df3c 100644
11129 +--- a/drivers/hid/hid-picolcd_core.c
11130 ++++ b/drivers/hid/hid-picolcd_core.c
11131 +@@ -350,6 +350,12 @@ static int picolcd_raw_event(struct hid_device *hdev,
11132 + if (!data)
11133 + return 1;
11134 +
11135 ++ if (size > 64) {
11136 ++ hid_warn(hdev, "invalid size value (%d) for picolcd raw event\n",
11137 ++ size);
11138 ++ return 0;
11139 ++ }
11140 ++
11141 + if (report->id == REPORT_KEY_STATE) {
11142 + if (data->input_keys)
11143 + ret = picolcd_raw_keypad(data, report, raw_data+1, size-1);
11144 diff --git a/drivers/hid/hid-sunplus.c b/drivers/hid/hid-sunplus.c
11145 index 87fc91e..91072fa 100644
11146 --- a/drivers/hid/hid-sunplus.c
11147 @@ -41627,7 +43468,7 @@ index c13fb5b..55a3802 100644
11148
11149 *off += size;
11150 diff --git a/drivers/hid/uhid.c b/drivers/hid/uhid.c
11151 -index 0d078c3..cd0962c 100644
11152 +index 0cb92e3..c7d453d 100644
11153 --- a/drivers/hid/uhid.c
11154 +++ b/drivers/hid/uhid.c
11155 @@ -47,7 +47,7 @@ struct uhid_device {
11156 @@ -41648,7 +43489,7 @@ index 0d078c3..cd0962c 100644
11157 ev->u.feature.rnum = rnum;
11158 ev->u.feature.rtype = report_type;
11159
11160 -@@ -539,7 +539,7 @@ static int uhid_dev_feature_answer(struct uhid_device *uhid,
11161 +@@ -538,7 +538,7 @@ static int uhid_dev_feature_answer(struct uhid_device *uhid,
11162 spin_lock_irqsave(&uhid->qlock, flags);
11163
11164 /* id for old report; drop it silently */
11165 @@ -41658,7 +43499,7 @@ index 0d078c3..cd0962c 100644
11166 if (atomic_read(&uhid->report_done))
11167 goto unlock;
11168 diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c
11169 -index 602ca86..10a6573 100644
11170 +index 284cf66..084c627 100644
11171 --- a/drivers/hv/channel.c
11172 +++ b/drivers/hv/channel.c
11173 @@ -365,8 +365,8 @@ int vmbus_establish_gpadl(struct vmbus_channel *channel, void *kbuffer,
11174 @@ -41673,7 +43514,7 @@ index 602ca86..10a6573 100644
11175 ret = create_gpadl_header(kbuffer, size, &msginfo, &msgcount);
11176 if (ret)
11177 diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c
11178 -index bcb4950..61dba6c 100644
11179 +index edfc848..d83e195 100644
11180 --- a/drivers/hv/hv.c
11181 +++ b/drivers/hv/hv.c
11182 @@ -112,7 +112,7 @@ static u64 do_hypercall(u64 control, void *input, void *output)
11183 @@ -41780,10 +43621,10 @@ index 5e90c5d..d8fcefb 100644
11184 cap_msg.caps.cap_bits.balloon = 1;
11185 cap_msg.caps.cap_bits.hot_add = 1;
11186 diff --git a/drivers/hv/hyperv_vmbus.h b/drivers/hv/hyperv_vmbus.h
11187 -index 860134d..ea3a79a 100644
11188 +index 22b7507..fc2fc47 100644
11189 --- a/drivers/hv/hyperv_vmbus.h
11190 +++ b/drivers/hv/hyperv_vmbus.h
11191 -@@ -602,7 +602,7 @@ enum vmbus_connect_state {
11192 +@@ -607,7 +607,7 @@ enum vmbus_connect_state {
11193 struct vmbus_connection {
11194 enum vmbus_connect_state conn_state;
11195
11196 @@ -41793,7 +43634,7 @@ index 860134d..ea3a79a 100644
11197 /*
11198 * Represents channel interrupts. Each bit position represents a
11199 diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
11200 -index 8e53a3c..7a64e44 100644
11201 +index 4d6b269..2e23b86 100644
11202 --- a/drivers/hv/vmbus_drv.c
11203 +++ b/drivers/hv/vmbus_drv.c
11204 @@ -807,10 +807,10 @@ int vmbus_device_register(struct hv_device *child_device_obj)
11205 @@ -41899,7 +43740,7 @@ index 632f1dc..57e6a58 100644
11206
11207 /* Set up read-only sensors */
11208 diff --git a/drivers/hwmon/iio_hwmon.c b/drivers/hwmon/iio_hwmon.c
11209 -index 9fbb1b1..efbaa3e 100644
11210 +index 14c82da..09b25d7 100644
11211 --- a/drivers/hwmon/iio_hwmon.c
11212 +++ b/drivers/hwmon/iio_hwmon.c
11213 @@ -61,7 +61,7 @@ static int iio_hwmon_probe(struct platform_device *pdev)
11214 @@ -41911,8 +43752,27 @@ index 9fbb1b1..efbaa3e 100644
11215 int ret, i;
11216 int in_i = 1, temp_i = 1, curr_i = 1;
11217 enum iio_chan_type type;
11218 +diff --git a/drivers/hwmon/nct6683.c b/drivers/hwmon/nct6683.c
11219 +index 7710f46..427a28d 100644
11220 +--- a/drivers/hwmon/nct6683.c
11221 ++++ b/drivers/hwmon/nct6683.c
11222 +@@ -397,11 +397,11 @@ static struct attribute_group *
11223 + nct6683_create_attr_group(struct device *dev, struct sensor_template_group *tg,
11224 + int repeat)
11225 + {
11226 +- struct sensor_device_attribute_2 *a2;
11227 +- struct sensor_device_attribute *a;
11228 ++ sensor_device_attribute_2_no_const *a2;
11229 ++ sensor_device_attribute_no_const *a;
11230 + struct sensor_device_template **t;
11231 + struct sensor_device_attr_u *su;
11232 +- struct attribute_group *group;
11233 ++ attribute_group_no_const *group;
11234 + struct attribute **attrs;
11235 + int i, j, count;
11236 +
11237 diff --git a/drivers/hwmon/nct6775.c b/drivers/hwmon/nct6775.c
11238 -index 38d5a63..cf2c2ea 100644
11239 +index 59d9a3f..2298fa4 100644
11240 --- a/drivers/hwmon/nct6775.c
11241 +++ b/drivers/hwmon/nct6775.c
11242 @@ -944,10 +944,10 @@ static struct attribute_group *
11243 @@ -42057,7 +43917,7 @@ index 41fc683..a39cfea 100644
11244 /* Wrapper access functions for multiplexed SMBus */
11245 static DEFINE_MUTEX(amd756_lock);
11246 diff --git a/drivers/i2c/busses/i2c-diolan-u2c.c b/drivers/i2c/busses/i2c-diolan-u2c.c
11247 -index 721f7eb..0fd2a09 100644
11248 +index b19a310..d6eece0 100644
11249 --- a/drivers/i2c/busses/i2c-diolan-u2c.c
11250 +++ b/drivers/i2c/busses/i2c-diolan-u2c.c
11251 @@ -98,7 +98,7 @@ MODULE_PARM_DESC(frequency, "I2C clock frequency in hertz");
11252 @@ -42109,10 +43969,10 @@ index 0b510ba..4fbb5085 100644
11253 }
11254 }
11255 diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
11256 -index ede16aec..e423e8a 100644
11257 +index 4b1f375..770b95f 100644
11258 --- a/drivers/iio/industrialio-core.c
11259 +++ b/drivers/iio/industrialio-core.c
11260 -@@ -527,7 +527,7 @@ static ssize_t iio_write_channel_info(struct device *dev,
11261 +@@ -551,7 +551,7 @@ static ssize_t iio_write_channel_info(struct device *dev,
11262 }
11263
11264 static
11265 @@ -42412,7 +44272,7 @@ index 1f95bba..9530f87 100644
11266 sdata, wqe->wr.wr.atomic.swap);
11267 goto send_comp;
11268 diff --git a/drivers/infiniband/hw/mlx4/mad.c b/drivers/infiniband/hw/mlx4/mad.c
11269 -index fd36ec6..a6a082f 100644
11270 +index 287ad05..5ae7b44d 100644
11271 --- a/drivers/infiniband/hw/mlx4/mad.c
11272 +++ b/drivers/infiniband/hw/mlx4/mad.c
11273 @@ -98,7 +98,7 @@ __be64 mlx4_ib_gen_node_guid(void)
11274 @@ -42438,10 +44298,10 @@ index ed327e6..ca1739e0 100644
11275 ctx->mcg_wq = create_singlethread_workqueue(name);
11276 if (!ctx->mcg_wq)
11277 diff --git a/drivers/infiniband/hw/mlx4/mlx4_ib.h b/drivers/infiniband/hw/mlx4/mlx4_ib.h
11278 -index 66b0b7d..f14836a 100644
11279 +index 369da3c..223e6e9 100644
11280 --- a/drivers/infiniband/hw/mlx4/mlx4_ib.h
11281 +++ b/drivers/infiniband/hw/mlx4/mlx4_ib.h
11282 -@@ -425,7 +425,7 @@ struct mlx4_ib_demux_ctx {
11283 +@@ -426,7 +426,7 @@ struct mlx4_ib_demux_ctx {
11284 struct list_head mcg_mgid0_list;
11285 struct workqueue_struct *mcg_wq;
11286 struct mlx4_ib_demux_pv_ctx **tun;
11287 @@ -42548,10 +44408,10 @@ index 415f8e1..e34214e 100644
11288 struct mthca_dev *dev = to_mdev(ibcq->device);
11289 struct mthca_cq *cq = to_mcq(ibcq);
11290 diff --git a/drivers/infiniband/hw/nes/nes.c b/drivers/infiniband/hw/nes/nes.c
11291 -index 353c7b0..c6ce921 100644
11292 +index 3b2a6dc..bce26ff 100644
11293 --- a/drivers/infiniband/hw/nes/nes.c
11294 +++ b/drivers/infiniband/hw/nes/nes.c
11295 -@@ -98,7 +98,7 @@ MODULE_PARM_DESC(limit_maxrdreqsz, "Limit max read request size to 256 Bytes");
11296 +@@ -97,7 +97,7 @@ MODULE_PARM_DESC(limit_maxrdreqsz, "Limit max read request size to 256 Bytes");
11297 LIST_HEAD(nes_adapter_list);
11298 static LIST_HEAD(nes_dev_list);
11299
11300 @@ -42560,7 +44420,7 @@ index 353c7b0..c6ce921 100644
11301
11302 static unsigned int ee_flsh_adapter;
11303 static unsigned int sysfs_nonidx_addr;
11304 -@@ -269,7 +269,7 @@ static void nes_cqp_rem_ref_callback(struct nes_device *nesdev, struct nes_cqp_r
11305 +@@ -278,7 +278,7 @@ static void nes_cqp_rem_ref_callback(struct nes_device *nesdev, struct nes_cqp_r
11306 struct nes_qp *nesqp = cqp_request->cqp_callback_pointer;
11307 struct nes_adapter *nesadapter = nesdev->nesadapter;
11308
11309 @@ -42570,10 +44430,10 @@ index 353c7b0..c6ce921 100644
11310 /* Free the control structures */
11311
11312 diff --git a/drivers/infiniband/hw/nes/nes.h b/drivers/infiniband/hw/nes/nes.h
11313 -index 33cc589..3bd6538 100644
11314 +index bd9d132..70d84f4 100644
11315 --- a/drivers/infiniband/hw/nes/nes.h
11316 +++ b/drivers/infiniband/hw/nes/nes.h
11317 -@@ -177,17 +177,17 @@ extern unsigned int nes_debug_level;
11318 +@@ -180,17 +180,17 @@ extern unsigned int nes_debug_level;
11319 extern unsigned int wqm_quanta;
11320 extern struct list_head nes_adapter_list;
11321
11322 @@ -42602,7 +44462,7 @@ index 33cc589..3bd6538 100644
11323 extern u32 mh_detected;
11324 extern u32 mh_pauses_sent;
11325 extern u32 cm_packets_sent;
11326 -@@ -196,16 +196,16 @@ extern u32 cm_packets_created;
11327 +@@ -199,16 +199,16 @@ extern u32 cm_packets_created;
11328 extern u32 cm_packets_received;
11329 extern u32 cm_packets_dropped;
11330 extern u32 cm_packets_retrans;
11331 @@ -42629,10 +44489,10 @@ index 33cc589..3bd6538 100644
11332 extern u32 int_mod_timer_init;
11333 extern u32 int_mod_cq_depth_256;
11334 diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c
11335 -index dfa9df4..6bf7221 100644
11336 +index 6f09a72..cf4399d 100644
11337 --- a/drivers/infiniband/hw/nes/nes_cm.c
11338 +++ b/drivers/infiniband/hw/nes/nes_cm.c
11339 -@@ -68,14 +68,14 @@ u32 cm_packets_dropped;
11340 +@@ -69,14 +69,14 @@ u32 cm_packets_dropped;
11341 u32 cm_packets_retrans;
11342 u32 cm_packets_created;
11343 u32 cm_packets_received;
11344 @@ -42654,7 +44514,7 @@ index dfa9df4..6bf7221 100644
11345
11346 static inline int mini_cm_accelerated(struct nes_cm_core *, struct nes_cm_node *);
11347 static struct nes_cm_listener *mini_cm_listen(struct nes_cm_core *, struct nes_vnic *, struct nes_cm_info *);
11348 -@@ -134,28 +134,28 @@ static void record_ird_ord(struct nes_cm_node *, u16, u16);
11349 +@@ -135,28 +135,28 @@ static void record_ird_ord(struct nes_cm_node *, u16, u16);
11350 /* instance of function pointers for client API */
11351 /* set address of this instance to cm_core->cm_ops at cm_core alloc */
11352 static struct nes_cm_ops nes_cm_api = {
11353 @@ -42701,7 +44561,7 @@ index dfa9df4..6bf7221 100644
11354
11355 int nes_add_ref_cm_node(struct nes_cm_node *cm_node)
11356 {
11357 -@@ -1319,7 +1319,7 @@ static int mini_cm_dec_refcnt_listen(struct nes_cm_core *cm_core,
11358 +@@ -1436,7 +1436,7 @@ static int mini_cm_dec_refcnt_listen(struct nes_cm_core *cm_core,
11359 kfree(listener);
11360 listener = NULL;
11361 ret = 0;
11362 @@ -42710,7 +44570,7 @@ index dfa9df4..6bf7221 100644
11363 } else {
11364 spin_unlock_irqrestore(&cm_core->listen_list_lock, flags);
11365 }
11366 -@@ -1513,7 +1513,7 @@ static struct nes_cm_node *make_cm_node(struct nes_cm_core *cm_core,
11367 +@@ -1637,7 +1637,7 @@ static struct nes_cm_node *make_cm_node(struct nes_cm_core *cm_core,
11368 cm_node->rem_mac);
11369
11370 add_hte_node(cm_core, cm_node);
11371 @@ -42719,7 +44579,7 @@ index dfa9df4..6bf7221 100644
11372
11373 return cm_node;
11374 }
11375 -@@ -1571,7 +1571,7 @@ static int rem_ref_cm_node(struct nes_cm_core *cm_core,
11376 +@@ -1698,7 +1698,7 @@ static int rem_ref_cm_node(struct nes_cm_core *cm_core,
11377 }
11378
11379 atomic_dec(&cm_core->node_cnt);
11380 @@ -42728,7 +44588,7 @@ index dfa9df4..6bf7221 100644
11381 nesqp = cm_node->nesqp;
11382 if (nesqp) {
11383 nesqp->cm_node = NULL;
11384 -@@ -1635,7 +1635,7 @@ static int process_options(struct nes_cm_node *cm_node, u8 *optionsloc,
11385 +@@ -1762,7 +1762,7 @@ static int process_options(struct nes_cm_node *cm_node, u8 *optionsloc,
11386
11387 static void drop_packet(struct sk_buff *skb)
11388 {
11389 @@ -42737,7 +44597,7 @@ index dfa9df4..6bf7221 100644
11390 dev_kfree_skb_any(skb);
11391 }
11392
11393 -@@ -1698,7 +1698,7 @@ static void handle_rst_pkt(struct nes_cm_node *cm_node, struct sk_buff *skb,
11394 +@@ -1825,7 +1825,7 @@ static void handle_rst_pkt(struct nes_cm_node *cm_node, struct sk_buff *skb,
11395 {
11396
11397 int reset = 0; /* whether to send reset in case of err.. */
11398 @@ -42746,7 +44606,7 @@ index dfa9df4..6bf7221 100644
11399 nes_debug(NES_DBG_CM, "Received Reset, cm_node = %p, state = %u."
11400 " refcnt=%d\n", cm_node, cm_node->state,
11401 atomic_read(&cm_node->ref_count));
11402 -@@ -2339,7 +2339,7 @@ static struct nes_cm_node *mini_cm_connect(struct nes_cm_core *cm_core,
11403 +@@ -2492,7 +2492,7 @@ static struct nes_cm_node *mini_cm_connect(struct nes_cm_core *cm_core,
11404 rem_ref_cm_node(cm_node->cm_core, cm_node);
11405 return NULL;
11406 }
11407 @@ -42755,7 +44615,7 @@ index dfa9df4..6bf7221 100644
11408 loopbackremotenode->loopbackpartner = cm_node;
11409 loopbackremotenode->tcp_cntxt.rcv_wscale =
11410 NES_CM_DEFAULT_RCV_WND_SCALE;
11411 -@@ -2614,7 +2614,7 @@ static int mini_cm_recv_pkt(struct nes_cm_core *cm_core,
11412 +@@ -2773,7 +2773,7 @@ static int mini_cm_recv_pkt(struct nes_cm_core *cm_core,
11413 nes_queue_mgt_skbs(skb, nesvnic, cm_node->nesqp);
11414 else {
11415 rem_ref_cm_node(cm_core, cm_node);
11416 @@ -42764,7 +44624,7 @@ index dfa9df4..6bf7221 100644
11417 dev_kfree_skb_any(skb);
11418 }
11419 break;
11420 -@@ -2922,7 +2922,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)
11421 +@@ -3081,7 +3081,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)
11422
11423 if ((cm_id) && (cm_id->event_handler)) {
11424 if (issue_disconn) {
11425 @@ -42773,7 +44633,7 @@ index dfa9df4..6bf7221 100644
11426 cm_event.event = IW_CM_EVENT_DISCONNECT;
11427 cm_event.status = disconn_status;
11428 cm_event.local_addr = cm_id->local_addr;
11429 -@@ -2944,7 +2944,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)
11430 +@@ -3103,7 +3103,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)
11431 }
11432
11433 if (issue_close) {
11434 @@ -42782,7 +44642,7 @@ index dfa9df4..6bf7221 100644
11435 nes_disconnect(nesqp, 1);
11436
11437 cm_id->provider_data = nesqp;
11438 -@@ -3082,7 +3082,7 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
11439 +@@ -3241,7 +3241,7 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
11440
11441 nes_debug(NES_DBG_CM, "QP%u, cm_node=%p, jiffies = %lu listener = %p\n",
11442 nesqp->hwqp.qp_id, cm_node, jiffies, cm_node->listener);
11443 @@ -42791,7 +44651,7 @@ index dfa9df4..6bf7221 100644
11444
11445 nes_debug(NES_DBG_CM, "netdev refcnt = %u.\n",
11446 netdev_refcnt_read(nesvnic->netdev));
11447 -@@ -3278,7 +3278,7 @@ int nes_reject(struct iw_cm_id *cm_id, const void *pdata, u8 pdata_len)
11448 +@@ -3439,7 +3439,7 @@ int nes_reject(struct iw_cm_id *cm_id, const void *pdata, u8 pdata_len)
11449 struct nes_cm_core *cm_core;
11450 u8 *start_buff;
11451
11452 @@ -42800,7 +44660,7 @@ index dfa9df4..6bf7221 100644
11453 cm_node = (struct nes_cm_node *)cm_id->provider_data;
11454 loopback = cm_node->loopbackpartner;
11455 cm_core = cm_node->cm_core;
11456 -@@ -3340,7 +3340,7 @@ int nes_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
11457 +@@ -3504,7 +3504,7 @@ int nes_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
11458 ntohs(raddr->sin_port), ntohl(laddr->sin_addr.s_addr),
11459 ntohs(laddr->sin_port));
11460
11461 @@ -42809,7 +44669,7 @@ index dfa9df4..6bf7221 100644
11462 nesqp->active_conn = 1;
11463
11464 /* cache the cm_id in the qp */
11465 -@@ -3451,7 +3451,7 @@ int nes_create_listen(struct iw_cm_id *cm_id, int backlog)
11466 +@@ -3649,7 +3649,7 @@ int nes_create_listen(struct iw_cm_id *cm_id, int backlog)
11467 g_cm_core->api->stop_listener(g_cm_core, (void *)cm_node);
11468 return err;
11469 }
11470 @@ -42818,7 +44678,7 @@ index dfa9df4..6bf7221 100644
11471 }
11472
11473 cm_id->add_ref(cm_id);
11474 -@@ -3558,7 +3558,7 @@ static void cm_event_connected(struct nes_cm_event *event)
11475 +@@ -3756,7 +3756,7 @@ static void cm_event_connected(struct nes_cm_event *event)
11476
11477 if (nesqp->destroyed)
11478 return;
11479 @@ -42827,7 +44687,7 @@ index dfa9df4..6bf7221 100644
11480 nes_debug(NES_DBG_CM, "QP%u attempting to connect to 0x%08X:0x%04X on"
11481 " local port 0x%04X. jiffies = %lu.\n",
11482 nesqp->hwqp.qp_id, ntohl(raddr->sin_addr.s_addr),
11483 -@@ -3741,7 +3741,7 @@ static void cm_event_reset(struct nes_cm_event *event)
11484 +@@ -3941,7 +3941,7 @@ static void cm_event_reset(struct nes_cm_event *event)
11485
11486 cm_id->add_ref(cm_id);
11487 ret = cm_id->event_handler(cm_id, &cm_event);
11488 @@ -42836,7 +44696,7 @@ index dfa9df4..6bf7221 100644
11489 cm_event.event = IW_CM_EVENT_CLOSE;
11490 cm_event.status = 0;
11491 cm_event.provider_data = cm_id->provider_data;
11492 -@@ -3781,7 +3781,7 @@ static void cm_event_mpa_req(struct nes_cm_event *event)
11493 +@@ -3981,7 +3981,7 @@ static void cm_event_mpa_req(struct nes_cm_event *event)
11494 return;
11495 cm_id = cm_node->cm_id;
11496
11497 @@ -42845,7 +44705,7 @@ index dfa9df4..6bf7221 100644
11498 nes_debug(NES_DBG_CM, "cm_node = %p - cm_id = %p, jiffies = %lu\n",
11499 cm_node, cm_id, jiffies);
11500
11501 -@@ -3830,7 +3830,7 @@ static void cm_event_mpa_reject(struct nes_cm_event *event)
11502 +@@ -4030,7 +4030,7 @@ static void cm_event_mpa_reject(struct nes_cm_event *event)
11503 return;
11504 cm_id = cm_node->cm_id;
11505
11506 @@ -43076,10 +44936,10 @@ index 603fe0d..f63decc 100644
11507 snprintf(led->name, sizeof(led->name), "xpad%ld", led_no);
11508 led->xpad = xpad;
11509 diff --git a/drivers/input/misc/ims-pcu.c b/drivers/input/misc/ims-pcu.c
11510 -index 5a73639..d586683 100644
11511 +index 719410f..1896169 100644
11512 --- a/drivers/input/misc/ims-pcu.c
11513 +++ b/drivers/input/misc/ims-pcu.c
11514 -@@ -1850,7 +1850,7 @@ static int ims_pcu_identify_type(struct ims_pcu *pcu, u8 *device_id)
11515 +@@ -1851,7 +1851,7 @@ static int ims_pcu_identify_type(struct ims_pcu *pcu, u8 *device_id)
11516
11517 static int ims_pcu_init_application_mode(struct ims_pcu *pcu)
11518 {
11519 @@ -43088,7 +44948,7 @@ index 5a73639..d586683 100644
11520
11521 const struct ims_pcu_device_info *info;
11522 int error;
11523 -@@ -1881,7 +1881,7 @@ static int ims_pcu_init_application_mode(struct ims_pcu *pcu)
11524 +@@ -1882,7 +1882,7 @@ static int ims_pcu_init_application_mode(struct ims_pcu *pcu)
11525 }
11526
11527 /* Device appears to be operable, complete initialization */
11528 @@ -43181,10 +45041,10 @@ index e5555fc..937986d 100644
11529
11530 /**
11531 diff --git a/drivers/iommu/irq_remapping.c b/drivers/iommu/irq_remapping.c
11532 -index 228632c9..edfe331 100644
11533 +index 33c4395..e06447e 100644
11534 --- a/drivers/iommu/irq_remapping.c
11535 +++ b/drivers/iommu/irq_remapping.c
11536 -@@ -356,7 +356,7 @@ int setup_hpet_msi_remapped(unsigned int irq, unsigned int id)
11537 +@@ -354,7 +354,7 @@ int setup_hpet_msi_remapped(unsigned int irq, unsigned int id)
11538 void panic_if_irq_remap(const char *msg)
11539 {
11540 if (irq_remapping_enabled)
11541 @@ -43193,7 +45053,7 @@ index 228632c9..edfe331 100644
11542 }
11543
11544 static void ir_ack_apic_edge(struct irq_data *data)
11545 -@@ -377,10 +377,12 @@ static void ir_print_prefix(struct irq_data *data, struct seq_file *p)
11546 +@@ -375,10 +375,12 @@ static void ir_print_prefix(struct irq_data *data, struct seq_file *p)
11547
11548 void irq_remap_modify_chip_defaults(struct irq_chip *chip)
11549 {
11550 @@ -43211,7 +45071,7 @@ index 228632c9..edfe331 100644
11551
11552 bool setup_remapped_irq(int irq, struct irq_cfg *cfg, struct irq_chip *chip)
11553 diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c
11554 -index 739ca67..42ee3f1 100644
11555 +index 7c131cf..035129b 100644
11556 --- a/drivers/irqchip/irq-gic.c
11557 +++ b/drivers/irqchip/irq-gic.c
11558 @@ -85,7 +85,7 @@ static u8 gic_cpu_map[NR_GIC_CPU_IF] __read_mostly;
11559 @@ -43246,7 +45106,7 @@ index 8777065..a4a9967 100644
11560 int ret;
11561 int k;
11562 diff --git a/drivers/isdn/capi/capi.c b/drivers/isdn/capi/capi.c
11563 -index ac6f72b..81150f2 100644
11564 +index f9a87ed..3fdd854 100644
11565 --- a/drivers/isdn/capi/capi.c
11566 +++ b/drivers/isdn/capi/capi.c
11567 @@ -81,8 +81,8 @@ struct capiminor {
11568 @@ -43287,10 +45147,10 @@ index ac6f72b..81150f2 100644
11569 capimsg_setu32(skb->data, 12, (u32)(long)skb->data);/* Data32 */
11570 capimsg_setu16(skb->data, 16, len); /* Data length */
11571 diff --git a/drivers/isdn/gigaset/bas-gigaset.c b/drivers/isdn/gigaset/bas-gigaset.c
11572 -index c44950d..10ac276 100644
11573 +index b7ae0a0..04590fa 100644
11574 --- a/drivers/isdn/gigaset/bas-gigaset.c
11575 +++ b/drivers/isdn/gigaset/bas-gigaset.c
11576 -@@ -2564,22 +2564,22 @@ static int gigaset_post_reset(struct usb_interface *intf)
11577 +@@ -2565,22 +2565,22 @@ static int gigaset_post_reset(struct usb_interface *intf)
11578
11579
11580 static const struct gigaset_ops gigops = {
11581 @@ -43504,6 +45364,162 @@ index 91d5730..336523e 100644
11582 };
11583
11584 /* The following should better go into a dedicated source file such that
11585 +diff --git a/drivers/isdn/i4l/isdn_ppp.c b/drivers/isdn/i4l/isdn_ppp.c
11586 +index 62f0688..38ceac5 100644
11587 +--- a/drivers/isdn/i4l/isdn_ppp.c
11588 ++++ b/drivers/isdn/i4l/isdn_ppp.c
11589 +@@ -378,15 +378,10 @@ isdn_ppp_release(int min, struct file *file)
11590 + is->slcomp = NULL;
11591 + #endif
11592 + #ifdef CONFIG_IPPP_FILTER
11593 +- if (is->pass_filter) {
11594 +- sk_unattached_filter_destroy(is->pass_filter);
11595 +- is->pass_filter = NULL;
11596 +- }
11597 +-
11598 +- if (is->active_filter) {
11599 +- sk_unattached_filter_destroy(is->active_filter);
11600 +- is->active_filter = NULL;
11601 +- }
11602 ++ kfree(is->pass_filter);
11603 ++ is->pass_filter = NULL;
11604 ++ kfree(is->active_filter);
11605 ++ is->active_filter = NULL;
11606 + #endif
11607 +
11608 + /* TODO: if this was the previous master: link the stuff to the new master */
11609 +@@ -442,7 +437,7 @@ static int get_filter(void __user *arg, struct sock_filter **p)
11610 + {
11611 + struct sock_fprog uprog;
11612 + struct sock_filter *code = NULL;
11613 +- int len;
11614 ++ int len, err;
11615 +
11616 + if (copy_from_user(&uprog, arg, sizeof(uprog)))
11617 + return -EFAULT;
11618 +@@ -458,6 +453,12 @@ static int get_filter(void __user *arg, struct sock_filter **p)
11619 + if (IS_ERR(code))
11620 + return PTR_ERR(code);
11621 +
11622 ++ err = sk_chk_filter(code, uprog.len);
11623 ++ if (err) {
11624 ++ kfree(code);
11625 ++ return err;
11626 ++ }
11627 ++
11628 + *p = code;
11629 + return uprog.len;
11630 + }
11631 +@@ -628,53 +629,25 @@ isdn_ppp_ioctl(int min, struct file *file, unsigned int cmd, unsigned long arg)
11632 + #ifdef CONFIG_IPPP_FILTER
11633 + case PPPIOCSPASS:
11634 + {
11635 +- struct sock_fprog_kern fprog;
11636 + struct sock_filter *code;
11637 +- int err, len = get_filter(argp, &code);
11638 +-
11639 ++ int len = get_filter(argp, &code);
11640 + if (len < 0)
11641 + return len;
11642 +-
11643 +- fprog.len = len;
11644 +- fprog.filter = code;
11645 +-
11646 +- if (is->pass_filter) {
11647 +- sk_unattached_filter_destroy(is->pass_filter);
11648 +- is->pass_filter = NULL;
11649 +- }
11650 +- if (fprog.filter != NULL)
11651 +- err = sk_unattached_filter_create(&is->pass_filter,
11652 +- &fprog);
11653 +- else
11654 +- err = 0;
11655 +- kfree(code);
11656 +-
11657 +- return err;
11658 ++ kfree(is->pass_filter);
11659 ++ is->pass_filter = code;
11660 ++ is->pass_len = len;
11661 ++ break;
11662 + }
11663 + case PPPIOCSACTIVE:
11664 + {
11665 +- struct sock_fprog_kern fprog;
11666 + struct sock_filter *code;
11667 +- int err, len = get_filter(argp, &code);
11668 +-
11669 ++ int len = get_filter(argp, &code);
11670 + if (len < 0)
11671 + return len;
11672 +-
11673 +- fprog.len = len;
11674 +- fprog.filter = code;
11675 +-
11676 +- if (is->active_filter) {
11677 +- sk_unattached_filter_destroy(is->active_filter);
11678 +- is->active_filter = NULL;
11679 +- }
11680 +- if (fprog.filter != NULL)
11681 +- err = sk_unattached_filter_create(&is->active_filter,
11682 +- &fprog);
11683 +- else
11684 +- err = 0;
11685 +- kfree(code);
11686 +-
11687 +- return err;
11688 ++ kfree(is->active_filter);
11689 ++ is->active_filter = code;
11690 ++ is->active_len = len;
11691 ++ break;
11692 + }
11693 + #endif /* CONFIG_IPPP_FILTER */
11694 + default:
11695 +@@ -1174,14 +1147,14 @@ isdn_ppp_push_higher(isdn_net_dev *net_dev, isdn_net_local *lp, struct sk_buff *
11696 + }
11697 +
11698 + if (is->pass_filter
11699 +- && SK_RUN_FILTER(is->pass_filter, skb) == 0) {
11700 ++ && sk_run_filter(skb, is->pass_filter) == 0) {
11701 + if (is->debug & 0x2)
11702 + printk(KERN_DEBUG "IPPP: inbound frame filtered.\n");
11703 + kfree_skb(skb);
11704 + return;
11705 + }
11706 + if (!(is->active_filter
11707 +- && SK_RUN_FILTER(is->active_filter, skb) == 0)) {
11708 ++ && sk_run_filter(skb, is->active_filter) == 0)) {
11709 + if (is->debug & 0x2)
11710 + printk(KERN_DEBUG "IPPP: link-active filter: resetting huptimer.\n");
11711 + lp->huptimer = 0;
11712 +@@ -1320,14 +1293,14 @@ isdn_ppp_xmit(struct sk_buff *skb, struct net_device *netdev)
11713 + }
11714 +
11715 + if (ipt->pass_filter
11716 +- && SK_RUN_FILTER(ipt->pass_filter, skb) == 0) {
11717 ++ && sk_run_filter(skb, ipt->pass_filter) == 0) {
11718 + if (ipt->debug & 0x4)
11719 + printk(KERN_DEBUG "IPPP: outbound frame filtered.\n");
11720 + kfree_skb(skb);
11721 + goto unlock;
11722 + }
11723 + if (!(ipt->active_filter
11724 +- && SK_RUN_FILTER(ipt->active_filter, skb) == 0)) {
11725 ++ && sk_run_filter(skb, ipt->active_filter) == 0)) {
11726 + if (ipt->debug & 0x4)
11727 + printk(KERN_DEBUG "IPPP: link-active filter: resetting huptimer.\n");
11728 + lp->huptimer = 0;
11729 +@@ -1517,9 +1490,9 @@ int isdn_ppp_autodial_filter(struct sk_buff *skb, isdn_net_local *lp)
11730 + }
11731 +
11732 + drop |= is->pass_filter
11733 +- && SK_RUN_FILTER(is->pass_filter, skb) == 0;
11734 ++ && sk_run_filter(skb, is->pass_filter) == 0;
11735 + drop |= is->active_filter
11736 +- && SK_RUN_FILTER(is->active_filter, skb) == 0;
11737 ++ && sk_run_filter(skb, is->active_filter) == 0;
11738 +
11739 + skb_push(skb, IPPP_MAX_HEADER - 4);
11740 + return drop;
11741 diff --git a/drivers/isdn/i4l/isdn_tty.c b/drivers/isdn/i4l/isdn_tty.c
11742 index 3c5f249..5fac4d0 100644
11743 --- a/drivers/isdn/i4l/isdn_tty.c
11744 @@ -43800,7 +45816,7 @@ index 40634b0..4f5855e 100644
11745 // Every interrupt can come to us here
11746 // But we must truly tell each apart.
11747 diff --git a/drivers/md/bcache/closure.h b/drivers/md/bcache/closure.h
11748 -index 7ef7461..5a09dac 100644
11749 +index a08e3ee..df8ade2 100644
11750 --- a/drivers/md/bcache/closure.h
11751 +++ b/drivers/md/bcache/closure.h
11752 @@ -238,7 +238,7 @@ static inline void closure_set_stopped(struct closure *cl)
11753 @@ -43813,10 +45829,10 @@ index 7ef7461..5a09dac 100644
11754 cl->fn = fn;
11755 cl->wq = wq;
11756 diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
11757 -index 9a8e66a..10cc762 100644
11758 +index 67f8b31..9418f2b 100644
11759 --- a/drivers/md/bitmap.c
11760 +++ b/drivers/md/bitmap.c
11761 -@@ -1779,7 +1779,7 @@ void bitmap_status(struct seq_file *seq, struct bitmap *bitmap)
11762 +@@ -1775,7 +1775,7 @@ void bitmap_status(struct seq_file *seq, struct bitmap *bitmap)
11763 chunk_kb ? "KB" : "B");
11764 if (bitmap->storage.file) {
11765 seq_printf(seq, ", file: ");
11766 @@ -43981,7 +45997,7 @@ index d1600d2..4c3af3a 100644
11767 schedule_work(&sc->trigger_event);
11768 }
11769 diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
11770 -index 50601ec..6d3b9dc 100644
11771 +index 5f59f1e..01bd02e 100644
11772 --- a/drivers/md/dm-table.c
11773 +++ b/drivers/md/dm-table.c
11774 @@ -274,7 +274,7 @@ static struct dm_dev_internal *find_device(struct list_head *l, dev_t dev)
11775 @@ -44025,7 +46041,7 @@ index e9d33ad..dae9880d 100644
11776 pmd->bl_info.value_type.inc = data_block_inc;
11777 pmd->bl_info.value_type.dec = data_block_dec;
11778 diff --git a/drivers/md/dm.c b/drivers/md/dm.c
11779 -index 490ac23..b9790cd 100644
11780 +index 32b958d..34011e8 100644
11781 --- a/drivers/md/dm.c
11782 +++ b/drivers/md/dm.c
11783 @@ -180,9 +180,9 @@ struct mapped_device {
11784 @@ -44040,7 +46056,7 @@ index 490ac23..b9790cd 100644
11785 struct list_head uevent_list;
11786 spinlock_t uevent_lock; /* Protect access to uevent_list */
11787
11788 -@@ -1895,8 +1895,8 @@ static struct mapped_device *alloc_dev(int minor)
11789 +@@ -1952,8 +1952,8 @@ static struct mapped_device *alloc_dev(int minor)
11790 spin_lock_init(&md->deferred_lock);
11791 atomic_set(&md->holders, 1);
11792 atomic_set(&md->open_count, 0);
11793 @@ -44051,7 +46067,7 @@ index 490ac23..b9790cd 100644
11794 INIT_LIST_HEAD(&md->uevent_list);
11795 spin_lock_init(&md->uevent_lock);
11796
11797 -@@ -2050,7 +2050,7 @@ static void event_callback(void *context)
11798 +@@ -2107,7 +2107,7 @@ static void event_callback(void *context)
11799
11800 dm_send_uevents(&uevents, &disk_to_dev(md->disk)->kobj);
11801
11802 @@ -44060,7 +46076,7 @@ index 490ac23..b9790cd 100644
11803 wake_up(&md->eventq);
11804 }
11805
11806 -@@ -2743,18 +2743,18 @@ int dm_kobject_uevent(struct mapped_device *md, enum kobject_action action,
11807 +@@ -2800,18 +2800,18 @@ int dm_kobject_uevent(struct mapped_device *md, enum kobject_action action,
11808
11809 uint32_t dm_next_uevent_seq(struct mapped_device *md)
11810 {
11811 @@ -44083,7 +46099,7 @@ index 490ac23..b9790cd 100644
11812
11813 void dm_uevent_add(struct mapped_device *md, struct list_head *elist)
11814 diff --git a/drivers/md/md.c b/drivers/md/md.c
11815 -index 9a18209..ec4d3ec 100644
11816 +index 32fc19c..cb6eba3 100644
11817 --- a/drivers/md/md.c
11818 +++ b/drivers/md/md.c
11819 @@ -194,10 +194,10 @@ EXPORT_SYMBOL_GPL(bio_clone_mddev);
11820 @@ -44155,7 +46171,7 @@ index 9a18209..ec4d3ec 100644
11821
11822 INIT_LIST_HEAD(&rdev->same_set);
11823 init_waitqueue_head(&rdev->blocked_wait);
11824 -@@ -7058,7 +7058,7 @@ static int md_seq_show(struct seq_file *seq, void *v)
11825 +@@ -7068,7 +7068,7 @@ static int md_seq_show(struct seq_file *seq, void *v)
11826
11827 spin_unlock(&pers_lock);
11828 seq_printf(seq, "\n");
11829 @@ -44164,7 +46180,7 @@ index 9a18209..ec4d3ec 100644
11830 return 0;
11831 }
11832 if (v == (void*)2) {
11833 -@@ -7161,7 +7161,7 @@ static int md_seq_open(struct inode *inode, struct file *file)
11834 +@@ -7171,7 +7171,7 @@ static int md_seq_open(struct inode *inode, struct file *file)
11835 return error;
11836
11837 seq = file->private_data;
11838 @@ -44173,7 +46189,7 @@ index 9a18209..ec4d3ec 100644
11839 return error;
11840 }
11841
11842 -@@ -7178,7 +7178,7 @@ static unsigned int mdstat_poll(struct file *filp, poll_table *wait)
11843 +@@ -7188,7 +7188,7 @@ static unsigned int mdstat_poll(struct file *filp, poll_table *wait)
11844 /* always allow read */
11845 mask = POLLIN | POLLRDNORM;
11846
11847 @@ -44182,7 +46198,7 @@ index 9a18209..ec4d3ec 100644
11848 mask |= POLLERR | POLLPRI;
11849 return mask;
11850 }
11851 -@@ -7222,7 +7222,7 @@ static int is_mddev_idle(struct mddev *mddev, int init)
11852 +@@ -7232,7 +7232,7 @@ static int is_mddev_idle(struct mddev *mddev, int init)
11853 struct gendisk *disk = rdev->bdev->bd_contains->bd_disk;
11854 curr_events = (int)part_stat_read(&disk->part0, sectors[0]) +
11855 (int)part_stat_read(&disk->part0, sectors[1]) -
11856 @@ -44357,10 +46373,10 @@ index cb882aa..cb8aeca 100644
11857 read_bio->bi_vcnt = 0;
11858 read_bio->bi_iter.bi_size = 0;
11859 diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
11860 -index ad1b9be..c6316b5 100644
11861 +index 6234b2e..4990801 100644
11862 --- a/drivers/md/raid5.c
11863 +++ b/drivers/md/raid5.c
11864 -@@ -1702,6 +1702,10 @@ static int grow_one_stripe(struct r5conf *conf, int hash)
11865 +@@ -1731,6 +1731,10 @@ static int grow_one_stripe(struct r5conf *conf, int hash)
11866 return 1;
11867 }
11868
11869 @@ -44371,7 +46387,7 @@ index ad1b9be..c6316b5 100644
11870 static int grow_stripes(struct r5conf *conf, int num)
11871 {
11872 struct kmem_cache *sc;
11873 -@@ -1713,7 +1717,11 @@ static int grow_stripes(struct r5conf *conf, int num)
11874 +@@ -1742,7 +1746,11 @@ static int grow_stripes(struct r5conf *conf, int num)
11875 "raid%d-%s", conf->level, mdname(conf->mddev));
11876 else
11877 sprintf(conf->cache_name[0],
11878 @@ -44383,7 +46399,7 @@ index ad1b9be..c6316b5 100644
11879 sprintf(conf->cache_name[1], "%s-alt", conf->cache_name[0]);
11880
11881 conf->active_name = 0;
11882 -@@ -1986,21 +1994,21 @@ static void raid5_end_read_request(struct bio * bi, int error)
11883 +@@ -2018,21 +2026,21 @@ static void raid5_end_read_request(struct bio * bi, int error)
11884 mdname(conf->mddev), STRIPE_SECTORS,
11885 (unsigned long long)s,
11886 bdevname(rdev->bdev, b));
11887 @@ -44409,7 +46425,7 @@ index ad1b9be..c6316b5 100644
11888 if (test_bit(R5_ReadRepl, &sh->dev[i].flags))
11889 printk_ratelimited(
11890 KERN_WARNING
11891 -@@ -2028,7 +2036,7 @@ static void raid5_end_read_request(struct bio * bi, int error)
11892 +@@ -2060,7 +2068,7 @@ static void raid5_end_read_request(struct bio * bi, int error)
11893 mdname(conf->mddev),
11894 (unsigned long long)s,
11895 bdn);
11896 @@ -44418,7 +46434,7 @@ index ad1b9be..c6316b5 100644
11897 > conf->max_nr_stripes)
11898 printk(KERN_WARNING
11899 "md/raid:%s: Too many read errors, failing device %s.\n",
11900 -@@ -3774,6 +3782,8 @@ static void handle_stripe(struct stripe_head *sh)
11901 +@@ -3817,6 +3825,8 @@ static void handle_stripe(struct stripe_head *sh)
11902 set_bit(R5_Wantwrite, &dev->flags);
11903 if (prexor)
11904 continue;
11905 @@ -44572,7 +46588,7 @@ index b713403..53cb5ad 100644
11906 if (done && done != layer->shadow_buf)
11907 vb2_buffer_done(&done->vb, VB2_BUF_STATE_DONE);
11908 diff --git a/drivers/media/platform/s5p-tv/mixer_video.c b/drivers/media/platform/s5p-tv/mixer_video.c
11909 -index a1ce55f..4a3c4d9 100644
11910 +index 8a8dbc8..b74c62d 100644
11911 --- a/drivers/media/platform/s5p-tv/mixer_video.c
11912 +++ b/drivers/media/platform/s5p-tv/mixer_video.c
11913 @@ -210,7 +210,7 @@ static void mxr_layer_default_geo(struct mxr_layer *layer)
11914 @@ -44626,7 +46642,7 @@ index a1ce55f..4a3c4d9 100644
11915
11916 /* retrieve update selection rectangle */
11917 res.left = target->x_offset;
11918 -@@ -950,13 +950,13 @@ static int start_streaming(struct vb2_queue *vq, unsigned int count)
11919 +@@ -954,13 +954,13 @@ static int start_streaming(struct vb2_queue *vq, unsigned int count)
11920 mxr_output_get(mdev);
11921
11922 mxr_layer_update_output(layer);
11923 @@ -44642,7 +46658,7 @@ index a1ce55f..4a3c4d9 100644
11924 mxr_streamer_get(mdev);
11925
11926 return 0;
11927 -@@ -1026,7 +1026,7 @@ static int stop_streaming(struct vb2_queue *vq)
11928 +@@ -1030,7 +1030,7 @@ static void stop_streaming(struct vb2_queue *vq)
11929 spin_unlock_irqrestore(&layer->enq_slock, flags);
11930
11931 /* disabling layer in hardware */
11932 @@ -44651,7 +46667,7 @@ index a1ce55f..4a3c4d9 100644
11933 /* remove one streamer */
11934 mxr_streamer_put(mdev);
11935 /* allow changes in output configuration */
11936 -@@ -1065,8 +1065,8 @@ void mxr_base_layer_unregister(struct mxr_layer *layer)
11937 +@@ -1068,8 +1068,8 @@ void mxr_base_layer_unregister(struct mxr_layer *layer)
11938
11939 void mxr_layer_release(struct mxr_layer *layer)
11940 {
11941 @@ -44662,7 +46678,7 @@ index a1ce55f..4a3c4d9 100644
11942 }
11943
11944 void mxr_base_layer_release(struct mxr_layer *layer)
11945 -@@ -1092,7 +1092,7 @@ struct mxr_layer *mxr_base_layer_create(struct mxr_device *mdev,
11946 +@@ -1095,7 +1095,7 @@ struct mxr_layer *mxr_base_layer_create(struct mxr_device *mdev,
11947
11948 layer->mdev = mdev;
11949 layer->idx = idx;
11950 @@ -44685,7 +46701,7 @@ index c9388c4..ce71ece 100644
11951 .buffer_set = mxr_vp_buffer_set,
11952 .stream_set = mxr_vp_stream_set,
11953 diff --git a/drivers/media/platform/vivi.c b/drivers/media/platform/vivi.c
11954 -index 3890f4f..b5c7511 100644
11955 +index d00bf3d..1301a0c 100644
11956 --- a/drivers/media/platform/vivi.c
11957 +++ b/drivers/media/platform/vivi.c
11958 @@ -58,8 +58,8 @@ MODULE_AUTHOR("Mauro Carvalho Chehab, Ted Walther and John Sokol");
11959 @@ -44876,7 +46892,7 @@ index ae0f56a..ec71784 100644
11960 /* debug */
11961 static int dvb_usb_dw2102_debug;
11962 diff --git a/drivers/media/usb/dvb-usb/technisat-usb2.c b/drivers/media/usb/dvb-usb/technisat-usb2.c
11963 -index 98d24ae..bc22415 100644
11964 +index d947e03..87fef42 100644
11965 --- a/drivers/media/usb/dvb-usb/technisat-usb2.c
11966 +++ b/drivers/media/usb/dvb-usb/technisat-usb2.c
11967 @@ -87,8 +87,11 @@ struct technisat_usb2_state {
11968 @@ -44950,13 +46966,13 @@ index 98d24ae..bc22415 100644
11969 + if (led == NULL)
11970 + return -ENOMEM;
11971
11972 - if (disable_led_control && state != LED_OFF)
11973 + if (disable_led_control && state != TECH_LED_OFF)
11974 return 0;
11975
11976 + led[0] = red ? SET_RED_LED_VENDOR_REQUEST : SET_GREEN_LED_VENDOR_REQUEST;
11977 +
11978 switch (state) {
11979 - case LED_ON:
11980 + case TECH_LED_ON:
11981 led[1] = 0x82;
11982 @@ -263,16 +274,22 @@ static int technisat_usb2_set_led(struct dvb_usb_device *d, int red, enum techni
11983 red ? SET_RED_LED_VENDOR_REQUEST : SET_GREEN_LED_VENDOR_REQUEST,
11984 @@ -45173,7 +47189,7 @@ index 55c6832..a91c7a6 100644
11985 if ((len - ctrl->minimum) % ctrl->step)
11986 return -ERANGE;
11987 diff --git a/drivers/media/v4l2-core/v4l2-device.c b/drivers/media/v4l2-core/v4l2-device.c
11988 -index 02d1b63..5fd6b16 100644
11989 +index 015f92a..59e311e 100644
11990 --- a/drivers/media/v4l2-core/v4l2-device.c
11991 +++ b/drivers/media/v4l2-core/v4l2-device.c
11992 @@ -75,9 +75,9 @@ int v4l2_device_put(struct v4l2_device *v4l2_dev)
11993 @@ -45189,7 +47205,7 @@ index 02d1b63..5fd6b16 100644
11994
11995 if (basename[len - 1] >= '0' && basename[len - 1] <= '9')
11996 diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
11997 -index d9113cc..7de6ccc 100644
11998 +index 16bffd8..3ab516a 100644
11999 --- a/drivers/media/v4l2-core/v4l2-ioctl.c
12000 +++ b/drivers/media/v4l2-core/v4l2-ioctl.c
12001 @@ -2003,7 +2003,8 @@ struct v4l2_ioctl_info {
12002 @@ -45211,44 +47227,44 @@ index d9113cc..7de6ccc 100644
12003 const struct v4l2_ioctl_info *info;
12004 void *fh = file->private_data;
12005 struct v4l2_fh *vfh = NULL;
12006 -@@ -2260,7 +2261,7 @@ done:
12007 - }
12008 -
12009 - static int check_array_args(unsigned int cmd, void *parg, size_t *array_size,
12010 -- void * __user *user_ptr, void ***kernel_ptr)
12011 -+ void __user **user_ptr, void ***kernel_ptr)
12012 - {
12013 - int ret = 0;
12014 -
12015 @@ -2276,7 +2277,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size,
12016 ret = -EINVAL;
12017 break;
12018 }
12019 - *user_ptr = (void __user *)buf->m.planes;
12020 + *user_ptr = (void __force_user *)buf->m.planes;
12021 - *kernel_ptr = (void *)&buf->m.planes;
12022 + *kernel_ptr = (void **)&buf->m.planes;
12023 *array_size = sizeof(struct v4l2_plane) * buf->length;
12024 ret = 1;
12025 +@@ -2293,7 +2294,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size,
12026 + ret = -EINVAL;
12027 + break;
12028 + }
12029 +- *user_ptr = (void __user *)edid->edid;
12030 ++ *user_ptr = (void __force_user *)edid->edid;
12031 + *kernel_ptr = (void **)&edid->edid;
12032 + *array_size = edid->blocks * 128;
12033 + ret = 1;
12034 @@ -2311,7 +2312,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size,
12035 ret = -EINVAL;
12036 break;
12037 }
12038 - *user_ptr = (void __user *)ctrls->controls;
12039 + *user_ptr = (void __force_user *)ctrls->controls;
12040 - *kernel_ptr = (void *)&ctrls->controls;
12041 + *kernel_ptr = (void **)&ctrls->controls;
12042 *array_size = sizeof(struct v4l2_ext_control)
12043 * ctrls->count;
12044 @@ -2412,7 +2413,7 @@ video_usercopy(struct file *file, unsigned int cmd, unsigned long arg,
12045 }
12046
12047 if (has_array_args) {
12048 -- *kernel_ptr = user_ptr;
12049 +- *kernel_ptr = (void __force *)user_ptr;
12050 + *kernel_ptr = (void __force_kernel *)user_ptr;
12051 if (copy_to_user(user_ptr, mbuf, array_size))
12052 err = -EFAULT;
12053 goto out_array_args;
12054 diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
12055 -index 570b18a..f880314 100644
12056 +index ebc0af7..baed058 100644
12057 --- a/drivers/message/fusion/mptbase.c
12058 +++ b/drivers/message/fusion/mptbase.c
12059 @@ -6755,8 +6755,13 @@ static int mpt_iocinfo_proc_show(struct seq_file *m, void *v)
12060 @@ -45278,7 +47294,7 @@ index 570b18a..f880314 100644
12061 seq_printf(m, " {CurRepSz=%d} x {CurRepDepth=%d} = %d bytes ^= 0x%x\n",
12062 ioc->reply_sz, ioc->reply_depth, ioc->reply_sz*ioc->reply_depth, sz);
12063 diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
12064 -index 00d339c..2ea899d 100644
12065 +index 711fcb5..5da1fb0 100644
12066 --- a/drivers/message/fusion/mptsas.c
12067 +++ b/drivers/message/fusion/mptsas.c
12068 @@ -446,6 +446,23 @@ mptsas_is_end_device(struct mptsas_devinfo * attached)
12069 @@ -45330,7 +47346,7 @@ index 00d339c..2ea899d 100644
12070 mptsas_get_port(struct mptsas_phyinfo *phy_info)
12071 {
12072 diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c
12073 -index 727819c..ad74694 100644
12074 +index 2a1c6f2..a04c6a2 100644
12075 --- a/drivers/message/fusion/mptscsih.c
12076 +++ b/drivers/message/fusion/mptscsih.c
12077 @@ -1271,15 +1271,16 @@ mptscsih_info(struct Scsi_Host *SChost)
12078 @@ -45576,7 +47592,7 @@ index a83eed5..62a58a9 100644
12079
12080 if (node && !pdata) {
12081 diff --git a/drivers/mfd/tps65910.c b/drivers/mfd/tps65910.c
12082 -index 460a014..21d3061 100644
12083 +index f9e42ea..614d240 100644
12084 --- a/drivers/mfd/tps65910.c
12085 +++ b/drivers/mfd/tps65910.c
12086 @@ -230,7 +230,7 @@ static int tps65910_irq_init(struct tps65910 *tps65910, int irq,
12087 @@ -46051,10 +48067,10 @@ index f51b5ba..86614a7 100644
12088 /*
12089 * dma onto stack is unsafe/nonportable, but callers to this
12090 diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h
12091 -index 6834977..824ee1b 100644
12092 +index 738fa24..1568451 100644
12093 --- a/drivers/mmc/host/dw_mmc.h
12094 +++ b/drivers/mmc/host/dw_mmc.h
12095 -@@ -259,5 +259,5 @@ struct dw_mci_drv_data {
12096 +@@ -257,5 +257,5 @@ struct dw_mci_drv_data {
12097 int (*parse_dt)(struct dw_mci *host);
12098 int (*execute_tuning)(struct dw_mci_slot *slot, u32 opcode,
12099 struct dw_mci_tuning_data *tuning_data);
12100 @@ -46062,11 +48078,11 @@ index 6834977..824ee1b 100644
12101 +} __do_const;
12102 #endif /* _DW_MMC_H_ */
12103 diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
12104 -index 771c60a..12cb615 100644
12105 +index 7ad463e..2aa0079 100644
12106 --- a/drivers/mmc/host/mmci.c
12107 +++ b/drivers/mmc/host/mmci.c
12108 -@@ -1570,7 +1570,9 @@ static int mmci_probe(struct amba_device *dev,
12109 - mmc->caps2 = plat->capabilities2;
12110 +@@ -1506,7 +1506,9 @@ static int mmci_probe(struct amba_device *dev,
12111 + mmc->caps |= MMC_CAP_CMD23;
12112
12113 if (variant->busy_detect) {
12114 - mmci_ops.card_busy = mmci_card_busy;
12115 @@ -46077,10 +48093,10 @@ index 771c60a..12cb615 100644
12116 mmc->caps |= MMC_CAP_WAIT_WHILE_BUSY;
12117 mmc->max_busy_timeout = 0;
12118 diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
12119 -index b841bb7..d82712f5 100644
12120 +index ccec0e3..199f9ce 100644
12121 --- a/drivers/mmc/host/sdhci-esdhc-imx.c
12122 +++ b/drivers/mmc/host/sdhci-esdhc-imx.c
12123 -@@ -1031,9 +1031,12 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
12124 +@@ -1034,9 +1034,12 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
12125 host->mmc->caps |= MMC_CAP_1_8V_DDR;
12126 }
12127
12128 @@ -46096,13 +48112,13 @@ index b841bb7..d82712f5 100644
12129 if (imx_data->socdata->flags & ESDHC_FLAG_STD_TUNING)
12130 writel(readl(host->ioaddr + ESDHC_TUNING_CTRL) |
12131 diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c
12132 -index d61eb5a..88c0f5d 100644
12133 +index fa5954a..56840e5 100644
12134 --- a/drivers/mmc/host/sdhci-s3c.c
12135 +++ b/drivers/mmc/host/sdhci-s3c.c
12136 -@@ -657,9 +657,11 @@ static int sdhci_s3c_probe(struct platform_device *pdev)
12137 +@@ -584,9 +584,11 @@ static int sdhci_s3c_probe(struct platform_device *pdev)
12138 * we can use overriding functions instead of default.
12139 */
12140 - if (host->quirks & SDHCI_QUIRK_NONSTANDARD_CLOCK) {
12141 + if (sc->no_divider) {
12142 - sdhci_s3c_ops.set_clock = sdhci_cmu_set_clock;
12143 - sdhci_s3c_ops.get_min_clock = sdhci_cmu_get_min_clock;
12144 - sdhci_s3c_ops.get_max_clock = sdhci_cmu_get_max_clock;
12145 @@ -46115,7 +48131,7 @@ index d61eb5a..88c0f5d 100644
12146
12147 /* It supports additional host capabilities if needed */
12148 diff --git a/drivers/mtd/chips/cfi_cmdset_0020.c b/drivers/mtd/chips/cfi_cmdset_0020.c
12149 -index 6293855..3415551 100644
12150 +index 423666b..81ff5eb 100644
12151 --- a/drivers/mtd/chips/cfi_cmdset_0020.c
12152 +++ b/drivers/mtd/chips/cfi_cmdset_0020.c
12153 @@ -666,7 +666,7 @@ cfi_staa_writev(struct mtd_info *mtd, const struct kvec *vecs,
12154 @@ -46128,7 +48144,7 @@ index 6293855..3415551 100644
12155 if (!ECCBUF_SIZE) {
12156 /* We should fall back to a general writev implementation.
12157 diff --git a/drivers/mtd/nand/denali.c b/drivers/mtd/nand/denali.c
12158 -index c07cd57..61c4fbd 100644
12159 +index 9f2012a..a81c720 100644
12160 --- a/drivers/mtd/nand/denali.c
12161 +++ b/drivers/mtd/nand/denali.c
12162 @@ -24,6 +24,7 @@
12163 @@ -46140,10 +48156,10 @@ index c07cd57..61c4fbd 100644
12164 #include "denali.h"
12165
12166 diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
12167 -index bb77f75..47539b1 100644
12168 +index f638cd8..2cbf586 100644
12169 --- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
12170 +++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
12171 -@@ -370,7 +370,7 @@ void prepare_data_dma(struct gpmi_nand_data *this, enum dma_data_direction dr)
12172 +@@ -387,7 +387,7 @@ void prepare_data_dma(struct gpmi_nand_data *this, enum dma_data_direction dr)
12173
12174 /* first try to map the upper buffer directly */
12175 if (virt_addr_valid(this->upper_buf) &&
12176 @@ -46178,7 +48194,7 @@ index cf49c22..971b133 100644
12177 struct sm_sysfs_attribute *vendor_attribute;
12178 char *vendor;
12179 diff --git a/drivers/net/bonding/bond_netlink.c b/drivers/net/bonding/bond_netlink.c
12180 -index f847e16..fc8dbe9 100644
12181 +index 5ab3c18..5c3a836 100644
12182 --- a/drivers/net/bonding/bond_netlink.c
12183 +++ b/drivers/net/bonding/bond_netlink.c
12184 @@ -542,7 +542,7 @@ nla_put_failure:
12185 @@ -46191,10 +48207,10 @@ index f847e16..fc8dbe9 100644
12186 .priv_size = sizeof(struct bonding),
12187 .setup = bond_setup,
12188 diff --git a/drivers/net/can/Kconfig b/drivers/net/can/Kconfig
12189 -index 9e7d95d..d447b88 100644
12190 +index 4168822..f38eeddf 100644
12191 --- a/drivers/net/can/Kconfig
12192 +++ b/drivers/net/can/Kconfig
12193 -@@ -104,7 +104,7 @@ config CAN_JANZ_ICAN3
12194 +@@ -98,7 +98,7 @@ config CAN_JANZ_ICAN3
12195
12196 config CAN_FLEXCAN
12197 tristate "Support for Freescale FLEXCAN based chips"
12198 @@ -46204,7 +48220,7 @@ index 9e7d95d..d447b88 100644
12199 Say Y here if you want to support for Freescale FlexCAN.
12200
12201 diff --git a/drivers/net/ethernet/8390/ax88796.c b/drivers/net/ethernet/8390/ax88796.c
12202 -index 455d4c3..3353ee7 100644
12203 +index 1d162cc..b546a75 100644
12204 --- a/drivers/net/ethernet/8390/ax88796.c
12205 +++ b/drivers/net/ethernet/8390/ax88796.c
12206 @@ -889,9 +889,11 @@ static int ax_probe(struct platform_device *pdev)
12207 @@ -46247,8 +48263,592 @@ index 7330681..7e9e463 100644
12208
12209 /* Scatter/gather IO is not supported,
12210 * so it is turned off
12211 +diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-common.h b/drivers/net/ethernet/amd/xgbe/xgbe-common.h
12212 +index bf462ee8..18b8375 100644
12213 +--- a/drivers/net/ethernet/amd/xgbe/xgbe-common.h
12214 ++++ b/drivers/net/ethernet/amd/xgbe/xgbe-common.h
12215 +@@ -986,14 +986,14 @@ do { \
12216 + * operations, everything works on mask values.
12217 + */
12218 + #define XMDIO_READ(_pdata, _mmd, _reg) \
12219 +- ((_pdata)->hw_if.read_mmd_regs((_pdata), 0, \
12220 ++ ((_pdata)->hw_if->read_mmd_regs((_pdata), 0, \
12221 + MII_ADDR_C45 | (_mmd << 16) | ((_reg) & 0xffff)))
12222 +
12223 + #define XMDIO_READ_BITS(_pdata, _mmd, _reg, _mask) \
12224 + (XMDIO_READ((_pdata), _mmd, _reg) & _mask)
12225 +
12226 + #define XMDIO_WRITE(_pdata, _mmd, _reg, _val) \
12227 +- ((_pdata)->hw_if.write_mmd_regs((_pdata), 0, \
12228 ++ ((_pdata)->hw_if->write_mmd_regs((_pdata), 0, \
12229 + MII_ADDR_C45 | (_mmd << 16) | ((_reg) & 0xffff), (_val)))
12230 +
12231 + #define XMDIO_WRITE_BITS(_pdata, _mmd, _reg, _mask, _val) \
12232 +diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-debugfs.c b/drivers/net/ethernet/amd/xgbe/xgbe-debugfs.c
12233 +index 6bb76d5..ded47a8 100644
12234 +--- a/drivers/net/ethernet/amd/xgbe/xgbe-debugfs.c
12235 ++++ b/drivers/net/ethernet/amd/xgbe/xgbe-debugfs.c
12236 +@@ -273,7 +273,7 @@ static ssize_t xpcs_reg_value_read(struct file *filp, char __user *buffer,
12237 + struct xgbe_prv_data *pdata = filp->private_data;
12238 + unsigned int value;
12239 +
12240 +- value = pdata->hw_if.read_mmd_regs(pdata, pdata->debugfs_xpcs_mmd,
12241 ++ value = pdata->hw_if->read_mmd_regs(pdata, pdata->debugfs_xpcs_mmd,
12242 + pdata->debugfs_xpcs_reg);
12243 +
12244 + return xgbe_common_read(buffer, count, ppos, value);
12245 +@@ -291,7 +291,7 @@ static ssize_t xpcs_reg_value_write(struct file *filp,
12246 + if (len < 0)
12247 + return len;
12248 +
12249 +- pdata->hw_if.write_mmd_regs(pdata, pdata->debugfs_xpcs_mmd,
12250 ++ pdata->hw_if->write_mmd_regs(pdata, pdata->debugfs_xpcs_mmd,
12251 + pdata->debugfs_xpcs_reg, value);
12252 +
12253 + return len;
12254 +diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-desc.c b/drivers/net/ethernet/amd/xgbe/xgbe-desc.c
12255 +index 6f1c859..e96ac1a 100644
12256 +--- a/drivers/net/ethernet/amd/xgbe/xgbe-desc.c
12257 ++++ b/drivers/net/ethernet/amd/xgbe/xgbe-desc.c
12258 +@@ -236,7 +236,7 @@ err_ring:
12259 +
12260 + static void xgbe_wrapper_tx_descriptor_init(struct xgbe_prv_data *pdata)
12261 + {
12262 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12263 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12264 + struct xgbe_channel *channel;
12265 + struct xgbe_ring *ring;
12266 + struct xgbe_ring_data *rdata;
12267 +@@ -277,7 +277,7 @@ static void xgbe_wrapper_tx_descriptor_init(struct xgbe_prv_data *pdata)
12268 +
12269 + static void xgbe_wrapper_rx_descriptor_init(struct xgbe_prv_data *pdata)
12270 + {
12271 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12272 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12273 + struct xgbe_channel *channel;
12274 + struct xgbe_ring *ring;
12275 + struct xgbe_ring_desc *rdesc;
12276 +@@ -496,7 +496,7 @@ err_out:
12277 + static void xgbe_realloc_skb(struct xgbe_channel *channel)
12278 + {
12279 + struct xgbe_prv_data *pdata = channel->pdata;
12280 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12281 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12282 + struct xgbe_ring *ring = channel->rx_ring;
12283 + struct xgbe_ring_data *rdata;
12284 + struct sk_buff *skb = NULL;
12285 +@@ -540,17 +540,12 @@ static void xgbe_realloc_skb(struct xgbe_channel *channel)
12286 + DBGPR("<--xgbe_realloc_skb\n");
12287 + }
12288 +
12289 +-void xgbe_init_function_ptrs_desc(struct xgbe_desc_if *desc_if)
12290 +-{
12291 +- DBGPR("-->xgbe_init_function_ptrs_desc\n");
12292 +-
12293 +- desc_if->alloc_ring_resources = xgbe_alloc_ring_resources;
12294 +- desc_if->free_ring_resources = xgbe_free_ring_resources;
12295 +- desc_if->map_tx_skb = xgbe_map_tx_skb;
12296 +- desc_if->realloc_skb = xgbe_realloc_skb;
12297 +- desc_if->unmap_skb = xgbe_unmap_skb;
12298 +- desc_if->wrapper_tx_desc_init = xgbe_wrapper_tx_descriptor_init;
12299 +- desc_if->wrapper_rx_desc_init = xgbe_wrapper_rx_descriptor_init;
12300 +-
12301 +- DBGPR("<--xgbe_init_function_ptrs_desc\n");
12302 +-}
12303 ++const struct xgbe_desc_if default_xgbe_desc_if = {
12304 ++ .alloc_ring_resources = xgbe_alloc_ring_resources,
12305 ++ .free_ring_resources = xgbe_free_ring_resources,
12306 ++ .map_tx_skb = xgbe_map_tx_skb,
12307 ++ .realloc_skb = xgbe_realloc_skb,
12308 ++ .unmap_skb = xgbe_unmap_skb,
12309 ++ .wrapper_tx_desc_init = xgbe_wrapper_tx_descriptor_init,
12310 ++ .wrapper_rx_desc_init = xgbe_wrapper_rx_descriptor_init,
12311 ++};
12312 +diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
12313 +index 002293b..5ced1dd 100644
12314 +--- a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
12315 ++++ b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
12316 +@@ -2030,7 +2030,7 @@ static void xgbe_powerdown_rx(struct xgbe_prv_data *pdata)
12317 +
12318 + static int xgbe_init(struct xgbe_prv_data *pdata)
12319 + {
12320 +- struct xgbe_desc_if *desc_if = &pdata->desc_if;
12321 ++ struct xgbe_desc_if *desc_if = pdata->desc_if;
12322 + int ret;
12323 +
12324 + DBGPR("-->xgbe_init\n");
12325 +@@ -2096,87 +2096,82 @@ static int xgbe_init(struct xgbe_prv_data *pdata)
12326 + return 0;
12327 + }
12328 +
12329 +-void xgbe_init_function_ptrs_dev(struct xgbe_hw_if *hw_if)
12330 +-{
12331 +- DBGPR("-->xgbe_init_function_ptrs\n");
12332 +-
12333 +- hw_if->tx_complete = xgbe_tx_complete;
12334 +-
12335 +- hw_if->set_promiscuous_mode = xgbe_set_promiscuous_mode;
12336 +- hw_if->set_all_multicast_mode = xgbe_set_all_multicast_mode;
12337 +- hw_if->set_addn_mac_addrs = xgbe_set_addn_mac_addrs;
12338 +- hw_if->set_mac_address = xgbe_set_mac_address;
12339 +-
12340 +- hw_if->enable_rx_csum = xgbe_enable_rx_csum;
12341 +- hw_if->disable_rx_csum = xgbe_disable_rx_csum;
12342 +-
12343 +- hw_if->enable_rx_vlan_stripping = xgbe_enable_rx_vlan_stripping;
12344 +- hw_if->disable_rx_vlan_stripping = xgbe_disable_rx_vlan_stripping;
12345 +-
12346 +- hw_if->read_mmd_regs = xgbe_read_mmd_regs;
12347 +- hw_if->write_mmd_regs = xgbe_write_mmd_regs;
12348 +-
12349 +- hw_if->set_gmii_speed = xgbe_set_gmii_speed;
12350 +- hw_if->set_gmii_2500_speed = xgbe_set_gmii_2500_speed;
12351 +- hw_if->set_xgmii_speed = xgbe_set_xgmii_speed;
12352 +-
12353 +- hw_if->enable_tx = xgbe_enable_tx;
12354 +- hw_if->disable_tx = xgbe_disable_tx;
12355 +- hw_if->enable_rx = xgbe_enable_rx;
12356 +- hw_if->disable_rx = xgbe_disable_rx;
12357 +-
12358 +- hw_if->powerup_tx = xgbe_powerup_tx;
12359 +- hw_if->powerdown_tx = xgbe_powerdown_tx;
12360 +- hw_if->powerup_rx = xgbe_powerup_rx;
12361 +- hw_if->powerdown_rx = xgbe_powerdown_rx;
12362 +-
12363 +- hw_if->pre_xmit = xgbe_pre_xmit;
12364 +- hw_if->dev_read = xgbe_dev_read;
12365 +- hw_if->enable_int = xgbe_enable_int;
12366 +- hw_if->disable_int = xgbe_disable_int;
12367 +- hw_if->init = xgbe_init;
12368 +- hw_if->exit = xgbe_exit;
12369 ++const struct xgbe_hw_if default_xgbe_hw_if = {
12370 ++ .tx_complete = xgbe_tx_complete,
12371 ++
12372 ++ .set_promiscuous_mode = xgbe_set_promiscuous_mode,
12373 ++ .set_all_multicast_mode = xgbe_set_all_multicast_mode,
12374 ++ .set_addn_mac_addrs = xgbe_set_addn_mac_addrs,
12375 ++ .set_mac_address = xgbe_set_mac_address,
12376 ++
12377 ++ .enable_rx_csum = xgbe_enable_rx_csum,
12378 ++ .disable_rx_csum = xgbe_disable_rx_csum,
12379 ++
12380 ++ .enable_rx_vlan_stripping = xgbe_enable_rx_vlan_stripping,
12381 ++ .disable_rx_vlan_stripping = xgbe_disable_rx_vlan_stripping,
12382 ++
12383 ++ .read_mmd_regs = xgbe_read_mmd_regs,
12384 ++ .write_mmd_regs = xgbe_write_mmd_regs,
12385 ++
12386 ++ .set_gmii_speed = xgbe_set_gmii_speed,
12387 ++ .set_gmii_2500_speed = xgbe_set_gmii_2500_speed,
12388 ++ .set_xgmii_speed = xgbe_set_xgmii_speed,
12389 ++
12390 ++ .enable_tx = xgbe_enable_tx,
12391 ++ .disable_tx = xgbe_disable_tx,
12392 ++ .enable_rx = xgbe_enable_rx,
12393 ++ .disable_rx = xgbe_disable_rx,
12394 ++
12395 ++ .powerup_tx = xgbe_powerup_tx,
12396 ++ .powerdown_tx = xgbe_powerdown_tx,
12397 ++ .powerup_rx = xgbe_powerup_rx,
12398 ++ .powerdown_rx = xgbe_powerdown_rx,
12399 ++
12400 ++ .pre_xmit = xgbe_pre_xmit,
12401 ++ .dev_read = xgbe_dev_read,
12402 ++ .enable_int = xgbe_enable_int,
12403 ++ .disable_int = xgbe_disable_int,
12404 ++ .init = xgbe_init,
12405 ++ .exit = xgbe_exit,
12406 +
12407 + /* Descriptor related Sequences have to be initialized here */
12408 +- hw_if->tx_desc_init = xgbe_tx_desc_init;
12409 +- hw_if->rx_desc_init = xgbe_rx_desc_init;
12410 +- hw_if->tx_desc_reset = xgbe_tx_desc_reset;
12411 +- hw_if->rx_desc_reset = xgbe_rx_desc_reset;
12412 +- hw_if->is_last_desc = xgbe_is_last_desc;
12413 +- hw_if->is_context_desc = xgbe_is_context_desc;
12414 ++ .tx_desc_init = xgbe_tx_desc_init,
12415 ++ .rx_desc_init = xgbe_rx_desc_init,
12416 ++ .tx_desc_reset = xgbe_tx_desc_reset,
12417 ++ .rx_desc_reset = xgbe_rx_desc_reset,
12418 ++ .is_last_desc = xgbe_is_last_desc,
12419 ++ .is_context_desc = xgbe_is_context_desc,
12420 +
12421 + /* For FLOW ctrl */
12422 +- hw_if->config_tx_flow_control = xgbe_config_tx_flow_control;
12423 +- hw_if->config_rx_flow_control = xgbe_config_rx_flow_control;
12424 ++ .config_tx_flow_control = xgbe_config_tx_flow_control,
12425 ++ .config_rx_flow_control = xgbe_config_rx_flow_control,
12426 +
12427 + /* For RX coalescing */
12428 +- hw_if->config_rx_coalesce = xgbe_config_rx_coalesce;
12429 +- hw_if->config_tx_coalesce = xgbe_config_tx_coalesce;
12430 +- hw_if->usec_to_riwt = xgbe_usec_to_riwt;
12431 +- hw_if->riwt_to_usec = xgbe_riwt_to_usec;
12432 ++ .config_rx_coalesce = xgbe_config_rx_coalesce,
12433 ++ .config_tx_coalesce = xgbe_config_tx_coalesce,
12434 ++ .usec_to_riwt = xgbe_usec_to_riwt,
12435 ++ .riwt_to_usec = xgbe_riwt_to_usec,
12436 +
12437 + /* For RX and TX threshold config */
12438 +- hw_if->config_rx_threshold = xgbe_config_rx_threshold;
12439 +- hw_if->config_tx_threshold = xgbe_config_tx_threshold;
12440 ++ .config_rx_threshold = xgbe_config_rx_threshold,
12441 ++ .config_tx_threshold = xgbe_config_tx_threshold,
12442 +
12443 + /* For RX and TX Store and Forward Mode config */
12444 +- hw_if->config_rsf_mode = xgbe_config_rsf_mode;
12445 +- hw_if->config_tsf_mode = xgbe_config_tsf_mode;
12446 ++ .config_rsf_mode = xgbe_config_rsf_mode,
12447 ++ .config_tsf_mode = xgbe_config_tsf_mode,
12448 +
12449 + /* For TX DMA Operating on Second Frame config */
12450 +- hw_if->config_osp_mode = xgbe_config_osp_mode;
12451 ++ .config_osp_mode = xgbe_config_osp_mode,
12452 +
12453 + /* For RX and TX PBL config */
12454 +- hw_if->config_rx_pbl_val = xgbe_config_rx_pbl_val;
12455 +- hw_if->get_rx_pbl_val = xgbe_get_rx_pbl_val;
12456 +- hw_if->config_tx_pbl_val = xgbe_config_tx_pbl_val;
12457 +- hw_if->get_tx_pbl_val = xgbe_get_tx_pbl_val;
12458 +- hw_if->config_pblx8 = xgbe_config_pblx8;
12459 ++ .config_rx_pbl_val = xgbe_config_rx_pbl_val,
12460 ++ .get_rx_pbl_val = xgbe_get_rx_pbl_val,
12461 ++ .config_tx_pbl_val = xgbe_config_tx_pbl_val,
12462 ++ .get_tx_pbl_val = xgbe_get_tx_pbl_val,
12463 ++ .config_pblx8 = xgbe_config_pblx8,
12464 +
12465 + /* For MMC statistics support */
12466 +- hw_if->tx_mmc_int = xgbe_tx_mmc_int;
12467 +- hw_if->rx_mmc_int = xgbe_rx_mmc_int;
12468 +- hw_if->read_mmc_stats = xgbe_read_mmc_stats;
12469 +-
12470 +- DBGPR("<--xgbe_init_function_ptrs\n");
12471 +-}
12472 ++ .tx_mmc_int = xgbe_tx_mmc_int,
12473 ++ .rx_mmc_int = xgbe_rx_mmc_int,
12474 ++ .read_mmc_stats = xgbe_read_mmc_stats,
12475 ++};
12476 +diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
12477 +index cfe3d93..07a78ae 100644
12478 +--- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
12479 ++++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
12480 +@@ -153,7 +153,7 @@ static int xgbe_calc_rx_buf_size(struct net_device *netdev, unsigned int mtu)
12481 +
12482 + static void xgbe_enable_rx_tx_ints(struct xgbe_prv_data *pdata)
12483 + {
12484 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12485 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12486 + struct xgbe_channel *channel;
12487 + unsigned int i;
12488 +
12489 +@@ -170,7 +170,7 @@ static void xgbe_enable_rx_tx_ints(struct xgbe_prv_data *pdata)
12490 +
12491 + static void xgbe_disable_rx_tx_ints(struct xgbe_prv_data *pdata)
12492 + {
12493 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12494 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12495 + struct xgbe_channel *channel;
12496 + unsigned int i;
12497 +
12498 +@@ -188,7 +188,7 @@ static void xgbe_disable_rx_tx_ints(struct xgbe_prv_data *pdata)
12499 + static irqreturn_t xgbe_isr(int irq, void *data)
12500 + {
12501 + struct xgbe_prv_data *pdata = data;
12502 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12503 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12504 + struct xgbe_channel *channel;
12505 + unsigned int dma_isr, dma_ch_isr;
12506 + unsigned int mac_isr;
12507 +@@ -403,7 +403,7 @@ static void xgbe_napi_disable(struct xgbe_prv_data *pdata)
12508 +
12509 + void xgbe_init_tx_coalesce(struct xgbe_prv_data *pdata)
12510 + {
12511 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12512 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12513 +
12514 + DBGPR("-->xgbe_init_tx_coalesce\n");
12515 +
12516 +@@ -417,7 +417,7 @@ void xgbe_init_tx_coalesce(struct xgbe_prv_data *pdata)
12517 +
12518 + void xgbe_init_rx_coalesce(struct xgbe_prv_data *pdata)
12519 + {
12520 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12521 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12522 +
12523 + DBGPR("-->xgbe_init_rx_coalesce\n");
12524 +
12525 +@@ -431,7 +431,7 @@ void xgbe_init_rx_coalesce(struct xgbe_prv_data *pdata)
12526 +
12527 + static void xgbe_free_tx_skbuff(struct xgbe_prv_data *pdata)
12528 + {
12529 +- struct xgbe_desc_if *desc_if = &pdata->desc_if;
12530 ++ struct xgbe_desc_if *desc_if = pdata->desc_if;
12531 + struct xgbe_channel *channel;
12532 + struct xgbe_ring *ring;
12533 + struct xgbe_ring_data *rdata;
12534 +@@ -456,7 +456,7 @@ static void xgbe_free_tx_skbuff(struct xgbe_prv_data *pdata)
12535 +
12536 + static void xgbe_free_rx_skbuff(struct xgbe_prv_data *pdata)
12537 + {
12538 +- struct xgbe_desc_if *desc_if = &pdata->desc_if;
12539 ++ struct xgbe_desc_if *desc_if = pdata->desc_if;
12540 + struct xgbe_channel *channel;
12541 + struct xgbe_ring *ring;
12542 + struct xgbe_ring_data *rdata;
12543 +@@ -482,7 +482,7 @@ static void xgbe_free_rx_skbuff(struct xgbe_prv_data *pdata)
12544 + int xgbe_powerdown(struct net_device *netdev, unsigned int caller)
12545 + {
12546 + struct xgbe_prv_data *pdata = netdev_priv(netdev);
12547 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12548 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12549 + unsigned long flags;
12550 +
12551 + DBGPR("-->xgbe_powerdown\n");
12552 +@@ -520,7 +520,7 @@ int xgbe_powerdown(struct net_device *netdev, unsigned int caller)
12553 + int xgbe_powerup(struct net_device *netdev, unsigned int caller)
12554 + {
12555 + struct xgbe_prv_data *pdata = netdev_priv(netdev);
12556 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12557 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12558 + unsigned long flags;
12559 +
12560 + DBGPR("-->xgbe_powerup\n");
12561 +@@ -557,7 +557,7 @@ int xgbe_powerup(struct net_device *netdev, unsigned int caller)
12562 +
12563 + static int xgbe_start(struct xgbe_prv_data *pdata)
12564 + {
12565 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12566 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12567 + struct net_device *netdev = pdata->netdev;
12568 +
12569 + DBGPR("-->xgbe_start\n");
12570 +@@ -583,7 +583,7 @@ static int xgbe_start(struct xgbe_prv_data *pdata)
12571 +
12572 + static void xgbe_stop(struct xgbe_prv_data *pdata)
12573 + {
12574 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12575 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12576 + struct net_device *netdev = pdata->netdev;
12577 +
12578 + DBGPR("-->xgbe_stop\n");
12579 +@@ -603,7 +603,7 @@ static void xgbe_stop(struct xgbe_prv_data *pdata)
12580 +
12581 + static void xgbe_restart_dev(struct xgbe_prv_data *pdata, unsigned int reset)
12582 + {
12583 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12584 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12585 +
12586 + DBGPR("-->xgbe_restart_dev\n");
12587 +
12588 +@@ -741,8 +741,8 @@ static void xgbe_packet_info(struct xgbe_ring *ring, struct sk_buff *skb,
12589 + static int xgbe_open(struct net_device *netdev)
12590 + {
12591 + struct xgbe_prv_data *pdata = netdev_priv(netdev);
12592 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12593 +- struct xgbe_desc_if *desc_if = &pdata->desc_if;
12594 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12595 ++ struct xgbe_desc_if *desc_if = pdata->desc_if;
12596 + int ret;
12597 +
12598 + DBGPR("-->xgbe_open\n");
12599 +@@ -804,8 +804,8 @@ err_clk:
12600 + static int xgbe_close(struct net_device *netdev)
12601 + {
12602 + struct xgbe_prv_data *pdata = netdev_priv(netdev);
12603 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12604 +- struct xgbe_desc_if *desc_if = &pdata->desc_if;
12605 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12606 ++ struct xgbe_desc_if *desc_if = pdata->desc_if;
12607 +
12608 + DBGPR("-->xgbe_close\n");
12609 +
12610 +@@ -835,8 +835,8 @@ static int xgbe_close(struct net_device *netdev)
12611 + static int xgbe_xmit(struct sk_buff *skb, struct net_device *netdev)
12612 + {
12613 + struct xgbe_prv_data *pdata = netdev_priv(netdev);
12614 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12615 +- struct xgbe_desc_if *desc_if = &pdata->desc_if;
12616 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12617 ++ struct xgbe_desc_if *desc_if = pdata->desc_if;
12618 + struct xgbe_channel *channel;
12619 + struct xgbe_ring *ring;
12620 + struct xgbe_packet_data *packet;
12621 +@@ -903,7 +903,7 @@ tx_netdev_return:
12622 + static void xgbe_set_rx_mode(struct net_device *netdev)
12623 + {
12624 + struct xgbe_prv_data *pdata = netdev_priv(netdev);
12625 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12626 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12627 + unsigned int pr_mode, am_mode;
12628 +
12629 + DBGPR("-->xgbe_set_rx_mode\n");
12630 +@@ -930,7 +930,7 @@ static void xgbe_set_rx_mode(struct net_device *netdev)
12631 + static int xgbe_set_mac_address(struct net_device *netdev, void *addr)
12632 + {
12633 + struct xgbe_prv_data *pdata = netdev_priv(netdev);
12634 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12635 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12636 + struct sockaddr *saddr = addr;
12637 +
12638 + DBGPR("-->xgbe_set_mac_address\n");
12639 +@@ -976,7 +976,7 @@ static struct rtnl_link_stats64 *xgbe_get_stats64(struct net_device *netdev,
12640 +
12641 + DBGPR("-->%s\n", __func__);
12642 +
12643 +- pdata->hw_if.read_mmc_stats(pdata);
12644 ++ pdata->hw_if->read_mmc_stats(pdata);
12645 +
12646 + s->rx_packets = pstats->rxframecount_gb;
12647 + s->rx_bytes = pstats->rxoctetcount_gb;
12648 +@@ -1020,7 +1020,7 @@ static int xgbe_set_features(struct net_device *netdev,
12649 + netdev_features_t features)
12650 + {
12651 + struct xgbe_prv_data *pdata = netdev_priv(netdev);
12652 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12653 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12654 + unsigned int rxcsum_enabled, rxvlan_enabled;
12655 +
12656 + rxcsum_enabled = !!(pdata->netdev_features & NETIF_F_RXCSUM);
12657 +@@ -1072,8 +1072,8 @@ struct net_device_ops *xgbe_get_netdev_ops(void)
12658 + static int xgbe_tx_poll(struct xgbe_channel *channel)
12659 + {
12660 + struct xgbe_prv_data *pdata = channel->pdata;
12661 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12662 +- struct xgbe_desc_if *desc_if = &pdata->desc_if;
12663 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12664 ++ struct xgbe_desc_if *desc_if = pdata->desc_if;
12665 + struct xgbe_ring *ring = channel->tx_ring;
12666 + struct xgbe_ring_data *rdata;
12667 + struct xgbe_ring_desc *rdesc;
12668 +@@ -1124,8 +1124,8 @@ static int xgbe_tx_poll(struct xgbe_channel *channel)
12669 + static int xgbe_rx_poll(struct xgbe_channel *channel, int budget)
12670 + {
12671 + struct xgbe_prv_data *pdata = channel->pdata;
12672 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12673 +- struct xgbe_desc_if *desc_if = &pdata->desc_if;
12674 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12675 ++ struct xgbe_desc_if *desc_if = pdata->desc_if;
12676 + struct xgbe_ring *ring = channel->rx_ring;
12677 + struct xgbe_ring_data *rdata;
12678 + struct xgbe_packet_data *packet;
12679 +diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c b/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c
12680 +index 8909f2b..719e767 100644
12681 +--- a/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c
12682 ++++ b/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c
12683 +@@ -202,7 +202,7 @@ static void xgbe_get_ethtool_stats(struct net_device *netdev,
12684 +
12685 + DBGPR("-->%s\n", __func__);
12686 +
12687 +- pdata->hw_if.read_mmc_stats(pdata);
12688 ++ pdata->hw_if->read_mmc_stats(pdata);
12689 + for (i = 0; i < XGBE_STATS_COUNT; i++) {
12690 + stat = (u8 *)pdata + xgbe_gstring_stats[i].stat_offset;
12691 + *data++ = *(u64 *)stat;
12692 +@@ -387,7 +387,7 @@ static int xgbe_get_coalesce(struct net_device *netdev,
12693 + struct ethtool_coalesce *ec)
12694 + {
12695 + struct xgbe_prv_data *pdata = netdev_priv(netdev);
12696 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12697 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12698 + unsigned int riwt;
12699 +
12700 + DBGPR("-->xgbe_get_coalesce\n");
12701 +@@ -410,7 +410,7 @@ static int xgbe_set_coalesce(struct net_device *netdev,
12702 + struct ethtool_coalesce *ec)
12703 + {
12704 + struct xgbe_prv_data *pdata = netdev_priv(netdev);
12705 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12706 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12707 + unsigned int rx_frames, rx_riwt, rx_usecs;
12708 + unsigned int tx_frames, tx_usecs;
12709 +
12710 +diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-main.c b/drivers/net/ethernet/amd/xgbe/xgbe-main.c
12711 +index 5a1891f..1b7888e 100644
12712 +--- a/drivers/net/ethernet/amd/xgbe/xgbe-main.c
12713 ++++ b/drivers/net/ethernet/amd/xgbe/xgbe-main.c
12714 +@@ -210,12 +210,6 @@ static void xgbe_default_config(struct xgbe_prv_data *pdata)
12715 + DBGPR("<--xgbe_default_config\n");
12716 + }
12717 +
12718 +-static void xgbe_init_all_fptrs(struct xgbe_prv_data *pdata)
12719 +-{
12720 +- xgbe_init_function_ptrs_dev(&pdata->hw_if);
12721 +- xgbe_init_function_ptrs_desc(&pdata->desc_if);
12722 +-}
12723 +-
12724 + static int xgbe_probe(struct platform_device *pdev)
12725 + {
12726 + struct xgbe_prv_data *pdata;
12727 +@@ -306,9 +300,8 @@ static int xgbe_probe(struct platform_device *pdev)
12728 + netdev->base_addr = (unsigned long)pdata->xgmac_regs;
12729 +
12730 + /* Set all the function pointers */
12731 +- xgbe_init_all_fptrs(pdata);
12732 +- hw_if = &pdata->hw_if;
12733 +- desc_if = &pdata->desc_if;
12734 ++ hw_if = pdata->hw_if = &default_xgbe_hw_if;
12735 ++ desc_if = pdata->desc_if = &default_xgbe_desc_if;
12736 +
12737 + /* Issue software reset to device */
12738 + hw_if->exit(pdata);
12739 +diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c b/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c
12740 +index ea7a5d6..d10a742 100644
12741 +--- a/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c
12742 ++++ b/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c
12743 +@@ -128,7 +128,7 @@
12744 + static int xgbe_mdio_read(struct mii_bus *mii, int prtad, int mmd_reg)
12745 + {
12746 + struct xgbe_prv_data *pdata = mii->priv;
12747 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12748 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12749 + int mmd_data;
12750 +
12751 + DBGPR_MDIO("-->xgbe_mdio_read: prtad=%#x mmd_reg=%#x\n",
12752 +@@ -145,7 +145,7 @@ static int xgbe_mdio_write(struct mii_bus *mii, int prtad, int mmd_reg,
12753 + u16 mmd_val)
12754 + {
12755 + struct xgbe_prv_data *pdata = mii->priv;
12756 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12757 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12758 + int mmd_data = mmd_val;
12759 +
12760 + DBGPR_MDIO("-->xgbe_mdio_write: prtad=%#x mmd_reg=%#x mmd_data=%#x\n",
12761 +@@ -161,7 +161,7 @@ static int xgbe_mdio_write(struct mii_bus *mii, int prtad, int mmd_reg,
12762 + static void xgbe_adjust_link(struct net_device *netdev)
12763 + {
12764 + struct xgbe_prv_data *pdata = netdev_priv(netdev);
12765 +- struct xgbe_hw_if *hw_if = &pdata->hw_if;
12766 ++ struct xgbe_hw_if *hw_if = pdata->hw_if;
12767 + struct phy_device *phydev = pdata->phydev;
12768 + unsigned long flags;
12769 + int new_state = 0;
12770 +diff --git a/drivers/net/ethernet/amd/xgbe/xgbe.h b/drivers/net/ethernet/amd/xgbe/xgbe.h
12771 +index ab06271..a560fa7 100644
12772 +--- a/drivers/net/ethernet/amd/xgbe/xgbe.h
12773 ++++ b/drivers/net/ethernet/amd/xgbe/xgbe.h
12774 +@@ -527,8 +527,8 @@ struct xgbe_prv_data {
12775 +
12776 + int irq_number;
12777 +
12778 +- struct xgbe_hw_if hw_if;
12779 +- struct xgbe_desc_if desc_if;
12780 ++ const struct xgbe_hw_if *hw_if;
12781 ++ const struct xgbe_desc_if *desc_if;
12782 +
12783 + /* Rings for Tx/Rx on a DMA channel */
12784 + struct xgbe_channel *channel;
12785 +@@ -611,6 +611,9 @@ struct xgbe_prv_data {
12786 + #endif
12787 + };
12788 +
12789 ++extern const struct xgbe_hw_if default_xgbe_hw_if;
12790 ++extern const struct xgbe_desc_if default_xgbe_desc_if;
12791 ++
12792 + /* Function prototypes*/
12793 +
12794 + void xgbe_init_function_ptrs_dev(struct xgbe_hw_if *);
12795 diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h
12796 -index 3448cc0..67b2dc4 100644
12797 +index 571427c..e9fe9e7 100644
12798 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h
12799 +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h
12800 @@ -1058,7 +1058,7 @@ static inline u8 bnx2x_get_path_func_num(struct bnx2x *bp)
12801 @@ -46261,7 +48861,7 @@ index 3448cc0..67b2dc4 100644
12802 /* multicast configuration controlling object */
12803 bnx2x_init_mcast_obj(bp, &bp->mcast_obj, bp->fp->cl_id, bp->fp->cid,
12804 diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c
12805 -index 31297266..944cf6e 100644
12806 +index b193604..8873bfd 100644
12807 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c
12808 +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c
12809 @@ -2329,15 +2329,14 @@ int bnx2x_config_rx_mode(struct bnx2x *bp,
12810 @@ -46286,7 +48886,7 @@ index 31297266..944cf6e 100644
12811 }
12812
12813 diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h
12814 -index 80f6c79..fb7d12d 100644
12815 +index 718ecd2..2183b2f 100644
12816 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h
12817 +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h
12818 @@ -1340,8 +1340,7 @@ int bnx2x_vlan_mac_move(struct bnx2x *bp,
12819 @@ -46299,21 +48899,8 @@ index 80f6c79..fb7d12d 100644
12820
12821 /**
12822 * bnx2x_config_rx_mode - Send and RX_MODE ramrod according to the provided parameters.
12823 -diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.h
12824 -index 6929adb..cc68830 100644
12825 ---- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.h
12826 -+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.h
12827 -@@ -571,7 +571,7 @@ static inline void __iomem *bnx2x_vf_doorbells(struct bnx2x *bp)
12828 - return NULL;
12829 - }
12830 -
12831 --static inline void bnx2x_vf_pci_dealloc(struct bnx2 *bp) {return 0; }
12832 -+static inline void bnx2x_vf_pci_dealloc(struct bnx2x *bp) { }
12833 - static inline int bnx2x_vf_pci_alloc(struct bnx2x *bp) {return 0; }
12834 - static inline void bnx2x_pf_set_vfs_vlan(struct bnx2x *bp) {}
12835 - static inline int bnx2x_sriov_configure(struct pci_dev *dev, int num_vfs) {return 0; }
12836 diff --git a/drivers/net/ethernet/broadcom/tg3.h b/drivers/net/ethernet/broadcom/tg3.h
12837 -index 04321e5..b51cdc4 100644
12838 +index 461acca..2b546ba 100644
12839 --- a/drivers/net/ethernet/broadcom/tg3.h
12840 +++ b/drivers/net/ethernet/broadcom/tg3.h
12841 @@ -150,6 +150,7 @@
12842 @@ -46357,10 +48944,10 @@ index 8cffcdf..aadf043 100644
12843 #define L2T_SKB_CB(skb) ((struct l2t_skb_cb *)(skb)->cb)
12844
12845 diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
12846 -index 24e16e3..bfe6ef2 100644
12847 +index a83271c..cf00874 100644
12848 --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
12849 +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
12850 -@@ -2139,7 +2139,7 @@ static void get_regs(struct net_device *dev, struct ethtool_regs *regs,
12851 +@@ -2174,7 +2174,7 @@ static void get_regs(struct net_device *dev, struct ethtool_regs *regs,
12852
12853 int i;
12854 struct adapter *ap = netdev2adap(dev);
12855 @@ -46392,10 +48979,10 @@ index c05b66d..ed69872 100644
12856 break;
12857 }
12858 diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
12859 -index 2b5ab7c..20e2e7f 100644
12860 +index 1e187fb..d024547 100644
12861 --- a/drivers/net/ethernet/emulex/benet/be_main.c
12862 +++ b/drivers/net/ethernet/emulex/benet/be_main.c
12863 -@@ -535,7 +535,7 @@ static void accumulate_16bit_val(u32 *acc, u16 val)
12864 +@@ -533,7 +533,7 @@ static void accumulate_16bit_val(u32 *acc, u16 val)
12865
12866 if (wrapped)
12867 newacc += 65536;
12868 @@ -46405,7 +48992,7 @@ index 2b5ab7c..20e2e7f 100644
12869
12870 static void populate_erx_stats(struct be_adapter *adapter,
12871 diff --git a/drivers/net/ethernet/faraday/ftgmac100.c b/drivers/net/ethernet/faraday/ftgmac100.c
12872 -index 68069ea..c4484f6 100644
12873 +index c77fa4a..7fd42fc 100644
12874 --- a/drivers/net/ethernet/faraday/ftgmac100.c
12875 +++ b/drivers/net/ethernet/faraday/ftgmac100.c
12876 @@ -30,6 +30,8 @@
12877 @@ -46418,7 +49005,7 @@ index 68069ea..c4484f6 100644
12878
12879 #include "ftgmac100.h"
12880 diff --git a/drivers/net/ethernet/faraday/ftmac100.c b/drivers/net/ethernet/faraday/ftmac100.c
12881 -index 8be5b40..081bc1b 100644
12882 +index 4ff1adc..0ea6bf4 100644
12883 --- a/drivers/net/ethernet/faraday/ftmac100.c
12884 +++ b/drivers/net/ethernet/faraday/ftmac100.c
12885 @@ -31,6 +31,8 @@
12886 @@ -46431,10 +49018,10 @@ index 8be5b40..081bc1b 100644
12887 #include "ftmac100.h"
12888
12889 diff --git a/drivers/net/ethernet/intel/i40e/i40e_ptp.c b/drivers/net/ethernet/intel/i40e/i40e_ptp.c
12890 -index e61e637..9117795 100644
12891 +index 101f439..59e7ec6 100644
12892 --- a/drivers/net/ethernet/intel/i40e/i40e_ptp.c
12893 +++ b/drivers/net/ethernet/intel/i40e/i40e_ptp.c
12894 -@@ -436,7 +436,7 @@ void i40e_ptp_set_increment(struct i40e_pf *pf)
12895 +@@ -401,7 +401,7 @@ void i40e_ptp_set_increment(struct i40e_pf *pf)
12896 wr32(hw, I40E_PRTTSYN_INC_H, incval >> 32);
12897
12898 /* Update the base adjustement value. */
12899 @@ -46444,10 +49031,10 @@ index e61e637..9117795 100644
12900 }
12901
12902 diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
12903 -index 8902ae6..e7bcdce 100644
12904 +index 68f87ec..241dbe3 100644
12905 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
12906 +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
12907 -@@ -771,7 +771,7 @@ void ixgbe_ptp_start_cyclecounter(struct ixgbe_adapter *adapter)
12908 +@@ -792,7 +792,7 @@ void ixgbe_ptp_start_cyclecounter(struct ixgbe_adapter *adapter)
12909 }
12910
12911 /* update the base incval used to calculate frequency adjustment */
12912 @@ -46457,10 +49044,10 @@ index 8902ae6..e7bcdce 100644
12913
12914 /* need lock to prevent incorrect read while modifying cyclecounter */
12915 diff --git a/drivers/net/ethernet/neterion/vxge/vxge-config.c b/drivers/net/ethernet/neterion/vxge/vxge-config.c
12916 -index 089b713..28d87ae 100644
12917 +index 2bbd01f..e8baa64 100644
12918 --- a/drivers/net/ethernet/neterion/vxge/vxge-config.c
12919 +++ b/drivers/net/ethernet/neterion/vxge/vxge-config.c
12920 -@@ -3461,7 +3461,10 @@ __vxge_hw_fifo_create(struct __vxge_hw_vpath_handle *vp,
12921 +@@ -3457,7 +3457,10 @@ __vxge_hw_fifo_create(struct __vxge_hw_vpath_handle *vp,
12922 struct __vxge_hw_fifo *fifo;
12923 struct vxge_hw_fifo_config *config;
12924 u32 txdl_size, txdl_per_memblock;
12925 @@ -46472,7 +49059,7 @@ index 089b713..28d87ae 100644
12926 struct __vxge_hw_virtualpath *vpath;
12927
12928 if ((vp == NULL) || (attr == NULL)) {
12929 -@@ -3544,8 +3547,6 @@ __vxge_hw_fifo_create(struct __vxge_hw_vpath_handle *vp,
12930 +@@ -3540,8 +3543,6 @@ __vxge_hw_fifo_create(struct __vxge_hw_vpath_handle *vp,
12931 goto exit;
12932 }
12933
12934 @@ -46481,8 +49068,44 @@ index 089b713..28d87ae 100644
12935 fifo->mempool =
12936 __vxge_hw_mempool_create(vpath->hldev,
12937 fifo->config->memblock_size,
12938 +diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
12939 +index 73e6683..464e910 100644
12940 +--- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
12941 ++++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
12942 +@@ -120,6 +120,10 @@ static void pch_gbe_mdio_write(struct net_device *netdev, int addr, int reg,
12943 + int data);
12944 + static void pch_gbe_set_multi(struct net_device *netdev);
12945 +
12946 ++static struct sock_filter ptp_filter[] = {
12947 ++ PTP_FILTER
12948 ++};
12949 ++
12950 + static int pch_ptp_match(struct sk_buff *skb, u16 uid_hi, u32 uid_lo, u16 seqid)
12951 + {
12952 + u8 *data = skb->data;
12953 +@@ -127,7 +131,7 @@ static int pch_ptp_match(struct sk_buff *skb, u16 uid_hi, u32 uid_lo, u16 seqid)
12954 + u16 *hi, *id;
12955 + u32 lo;
12956 +
12957 +- if (ptp_classify_raw(skb) == PTP_CLASS_NONE)
12958 ++ if (sk_run_filter(skb, ptp_filter) == PTP_CLASS_NONE)
12959 + return 0;
12960 +
12961 + offset = ETH_HLEN + IPV4_HLEN(data) + UDP_HLEN;
12962 +@@ -2631,6 +2635,11 @@ static int pch_gbe_probe(struct pci_dev *pdev,
12963 +
12964 + adapter->ptp_pdev = pci_get_bus_and_slot(adapter->pdev->bus->number,
12965 + PCI_DEVFN(12, 4));
12966 ++ if (ptp_filter_init(ptp_filter, ARRAY_SIZE(ptp_filter))) {
12967 ++ dev_err(&pdev->dev, "Bad ptp filter\n");
12968 ++ ret = -EINVAL;
12969 ++ goto err_free_netdev;
12970 ++ }
12971 +
12972 + netdev->netdev_ops = &pch_gbe_netdev_ops;
12973 + netdev->watchdog_timeo = PCH_GBE_WATCHDOG_PERIOD;
12974 diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
12975 -index ba20c72..f30c0fe 100644
12976 +index f33559b..c7f50ac 100644
12977 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
12978 +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
12979 @@ -2176,7 +2176,9 @@ int qlcnic_83xx_configure_opmode(struct qlcnic_adapter *adapter)
12980 @@ -46528,10 +49151,10 @@ index be7d7a6..a8983f8 100644
12981 default:
12982 dev_err(&adapter->pdev->dev, "Invalid Virtual NIC opmode\n");
12983 diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c
12984 -index 37b979b..50f5b95 100644
12985 +index e46fc39..abe135b 100644
12986 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c
12987 +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c
12988 -@@ -1217,7 +1217,7 @@ flash_temp:
12989 +@@ -1228,7 +1228,7 @@ flash_temp:
12990 int qlcnic_dump_fw(struct qlcnic_adapter *adapter)
12991 {
12992 struct qlcnic_fw_dump *fw_dump = &adapter->ahw->fw_dump;
12993 @@ -46541,10 +49164,10 @@ index 37b979b..50f5b95 100644
12994 u32 entry_offset, dump, no_entries, buf_offset = 0;
12995 int i, k, ops_cnt, ops_index, dump_size = 0;
12996 diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
12997 -index aa1c079..2b1a3e8 100644
12998 +index 61623e9..ac97c27 100644
12999 --- a/drivers/net/ethernet/realtek/r8169.c
13000 +++ b/drivers/net/ethernet/realtek/r8169.c
13001 -@@ -758,22 +758,22 @@ struct rtl8169_private {
13002 +@@ -759,22 +759,22 @@ struct rtl8169_private {
13003 struct mdio_ops {
13004 void (*write)(struct rtl8169_private *, int, int);
13005 int (*read)(struct rtl8169_private *, int);
13006 @@ -46599,11 +49222,94 @@ index 50617c5..b13724c 100644
13007 }
13008
13009 /* To mask all all interrupts.*/
13010 +diff --git a/drivers/net/ethernet/ti/cpts.c b/drivers/net/ethernet/ti/cpts.c
13011 +index 6b56f85..50e285f 100644
13012 +--- a/drivers/net/ethernet/ti/cpts.c
13013 ++++ b/drivers/net/ethernet/ti/cpts.c
13014 +@@ -33,6 +33,10 @@
13015 +
13016 + #ifdef CONFIG_TI_CPTS
13017 +
13018 ++static struct sock_filter ptp_filter[] = {
13019 ++ PTP_FILTER
13020 ++};
13021 ++
13022 + #define cpts_read32(c, r) __raw_readl(&c->reg->r)
13023 + #define cpts_write32(c, v, r) __raw_writel(v, &c->reg->r)
13024 +
13025 +@@ -296,7 +300,7 @@ static u64 cpts_find_ts(struct cpts *cpts, struct sk_buff *skb, int ev_type)
13026 + u64 ns = 0;
13027 + struct cpts_event *event;
13028 + struct list_head *this, *next;
13029 +- unsigned int class = ptp_classify_raw(skb);
13030 ++ unsigned int class = sk_run_filter(skb, ptp_filter);
13031 + unsigned long flags;
13032 + u16 seqid;
13033 + u8 mtype;
13034 +@@ -367,6 +371,10 @@ int cpts_register(struct device *dev, struct cpts *cpts,
13035 + int err, i;
13036 + unsigned long flags;
13037 +
13038 ++ if (ptp_filter_init(ptp_filter, ARRAY_SIZE(ptp_filter))) {
13039 ++ pr_err("cpts: bad ptp filter\n");
13040 ++ return -EINVAL;
13041 ++ }
13042 + cpts->info = cpts_info;
13043 + cpts->clock = ptp_clock_register(&cpts->info, dev);
13044 + if (IS_ERR(cpts->clock)) {
13045 +diff --git a/drivers/net/ethernet/xscale/Kconfig b/drivers/net/ethernet/xscale/Kconfig
13046 +index b81bc9f..3f43101 100644
13047 +--- a/drivers/net/ethernet/xscale/Kconfig
13048 ++++ b/drivers/net/ethernet/xscale/Kconfig
13049 +@@ -23,7 +23,6 @@ config IXP4XX_ETH
13050 + tristate "Intel IXP4xx Ethernet support"
13051 + depends on ARM && ARCH_IXP4XX && IXP4XX_NPE && IXP4XX_QMGR
13052 + select PHYLIB
13053 +- select NET_PTP_CLASSIFY
13054 + ---help---
13055 + Say Y here if you want to use built-in Ethernet ports
13056 + on IXP4xx processor.
13057 +diff --git a/drivers/net/ethernet/xscale/ixp4xx_eth.c b/drivers/net/ethernet/xscale/ixp4xx_eth.c
13058 +index f7e0f0f..25283f1 100644
13059 +--- a/drivers/net/ethernet/xscale/ixp4xx_eth.c
13060 ++++ b/drivers/net/ethernet/xscale/ixp4xx_eth.c
13061 +@@ -256,6 +256,10 @@ static int ports_open;
13062 + static struct port *npe_port_tab[MAX_NPES];
13063 + static struct dma_pool *dma_pool;
13064 +
13065 ++static struct sock_filter ptp_filter[] = {
13066 ++ PTP_FILTER
13067 ++};
13068 ++
13069 + static int ixp_ptp_match(struct sk_buff *skb, u16 uid_hi, u32 uid_lo, u16 seqid)
13070 + {
13071 + u8 *data = skb->data;
13072 +@@ -263,7 +267,7 @@ static int ixp_ptp_match(struct sk_buff *skb, u16 uid_hi, u32 uid_lo, u16 seqid)
13073 + u16 *hi, *id;
13074 + u32 lo;
13075 +
13076 +- if (ptp_classify_raw(skb) != PTP_CLASS_V1_IPV4)
13077 ++ if (sk_run_filter(skb, ptp_filter) != PTP_CLASS_V1_IPV4)
13078 + return 0;
13079 +
13080 + offset = ETH_HLEN + IPV4_HLEN(data) + UDP_HLEN;
13081 +@@ -1409,6 +1413,11 @@ static int eth_init_one(struct platform_device *pdev)
13082 + char phy_id[MII_BUS_ID_SIZE + 3];
13083 + int err;
13084 +
13085 ++ if (ptp_filter_init(ptp_filter, ARRAY_SIZE(ptp_filter))) {
13086 ++ pr_err("ixp4xx_eth: bad ptp filter\n");
13087 ++ return -EINVAL;
13088 ++ }
13089 ++
13090 + if (!(dev = alloc_etherdev(sizeof(struct port))))
13091 + return -ENOMEM;
13092 +
13093 diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
13094 -index d18f711d..5755800 100644
13095 +index 6cc37c1..fdd9d77 100644
13096 --- a/drivers/net/hyperv/hyperv_net.h
13097 +++ b/drivers/net/hyperv/hyperv_net.h
13098 -@@ -101,7 +101,7 @@ struct rndis_device {
13099 +@@ -170,7 +170,7 @@ struct rndis_device {
13100
13101 enum rndis_device_state state;
13102 bool link_state;
13103 @@ -46613,10 +49319,10 @@ index d18f711d..5755800 100644
13104 spinlock_t request_lock;
13105 struct list_head req_list;
13106 diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
13107 -index 143a98c..d54fbaa 100644
13108 +index 99c527a..6a2ce38 100644
13109 --- a/drivers/net/hyperv/rndis_filter.c
13110 +++ b/drivers/net/hyperv/rndis_filter.c
13111 -@@ -100,7 +100,7 @@ static struct rndis_request *get_rndis_request(struct rndis_device *dev,
13112 +@@ -102,7 +102,7 @@ static struct rndis_request *get_rndis_request(struct rndis_device *dev,
13113 * template
13114 */
13115 set = &rndis_msg->msg.set_req;
13116 @@ -46625,7 +49331,7 @@ index 143a98c..d54fbaa 100644
13117
13118 /* Add to the request list */
13119 spin_lock_irqsave(&dev->request_lock, flags);
13120 -@@ -834,7 +834,7 @@ static void rndis_filter_halt_device(struct rndis_device *dev)
13121 +@@ -930,7 +930,7 @@ static void rndis_filter_halt_device(struct rndis_device *dev)
13122
13123 /* Setup the rndis set */
13124 halt = &request->request_msg.msg.halt_req;
13125 @@ -46648,10 +49354,19 @@ index 78f18be..1d19c62 100644
13126 priv = netdev_priv(dev);
13127 priv->phy = phy;
13128 diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
13129 -index d650b91..7717c68 100644
13130 +index ef8a5c2..76877d6 100644
13131 --- a/drivers/net/macvlan.c
13132 +++ b/drivers/net/macvlan.c
13133 -@@ -985,13 +985,15 @@ static const struct nla_policy macvlan_policy[IFLA_MACVLAN_MAX + 1] = {
13134 +@@ -264,7 +264,7 @@ static void macvlan_broadcast_enqueue(struct macvlan_port *port,
13135 + free_nskb:
13136 + kfree_skb(nskb);
13137 + err:
13138 +- atomic_long_inc(&skb->dev->rx_dropped);
13139 ++ atomic_long_inc_unchecked(&skb->dev->rx_dropped);
13140 + }
13141 +
13142 + /* called under rcu_read_lock() from netif_receive_skb */
13143 +@@ -1134,13 +1134,15 @@ static const struct nla_policy macvlan_policy[IFLA_MACVLAN_MAX + 1] = {
13144 int macvlan_link_register(struct rtnl_link_ops *ops)
13145 {
13146 /* common fields */
13147 @@ -46674,7 +49389,7 @@ index d650b91..7717c68 100644
13148
13149 return rtnl_link_register(ops);
13150 };
13151 -@@ -1045,7 +1047,7 @@ static int macvlan_device_event(struct notifier_block *unused,
13152 +@@ -1220,7 +1222,7 @@ static int macvlan_device_event(struct notifier_block *unused,
13153 return NOTIFY_DONE;
13154 }
13155
13156 @@ -46705,28 +49420,184 @@ index 3381c4f..dea5fd5 100644
13157 .notifier_call = macvtap_device_event,
13158 };
13159
13160 +diff --git a/drivers/net/phy/dp83640.c b/drivers/net/phy/dp83640.c
13161 +index 9408157..d53b924 100644
13162 +--- a/drivers/net/phy/dp83640.c
13163 ++++ b/drivers/net/phy/dp83640.c
13164 +@@ -27,7 +27,6 @@
13165 + #include <linux/module.h>
13166 + #include <linux/net_tstamp.h>
13167 + #include <linux/netdevice.h>
13168 +-#include <linux/if_vlan.h>
13169 + #include <linux/phy.h>
13170 + #include <linux/ptp_classify.h>
13171 + #include <linux/ptp_clock_kernel.h>
13172 diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c
13173 -index 3c41a83..5fe2d7f 100644
13174 +index d5b77ef..72ff14b 100644
13175 --- a/drivers/net/ppp/ppp_generic.c
13176 +++ b/drivers/net/ppp/ppp_generic.c
13177 -@@ -1016,7 +1016,6 @@ ppp_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
13178 - void __user *addr = (void __user *) ifr->ifr_ifru.ifru_data;
13179 - struct ppp_stats stats;
13180 - struct ppp_comp_stats cstats;
13181 -- char *vers;
13182 +@@ -143,8 +143,9 @@ struct ppp {
13183 + struct sk_buff_head mrq; /* MP: receive reconstruction queue */
13184 + #endif /* CONFIG_PPP_MULTILINK */
13185 + #ifdef CONFIG_PPP_FILTER
13186 +- struct sk_filter *pass_filter; /* filter for packets to pass */
13187 +- struct sk_filter *active_filter;/* filter for pkts to reset idle */
13188 ++ struct sock_filter *pass_filter; /* filter for packets to pass */
13189 ++ struct sock_filter *active_filter;/* filter for pkts to reset idle */
13190 ++ unsigned pass_len, active_len;
13191 + #endif /* CONFIG_PPP_FILTER */
13192 + struct net *ppp_net; /* the net we belong to */
13193 + struct ppp_link_stats stats64; /* 64 bit network stats */
13194 +@@ -539,7 +540,7 @@ static int get_filter(void __user *arg, struct sock_filter **p)
13195 + {
13196 + struct sock_fprog uprog;
13197 + struct sock_filter *code = NULL;
13198 +- int len;
13199 ++ int len, err;
13200
13201 - switch (cmd) {
13202 - case SIOCGPPPSTATS:
13203 -@@ -1038,8 +1037,7 @@ ppp_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
13204 - break;
13205 + if (copy_from_user(&uprog, arg, sizeof(uprog)))
13206 + return -EFAULT;
13207 +@@ -554,6 +555,12 @@ static int get_filter(void __user *arg, struct sock_filter **p)
13208 + if (IS_ERR(code))
13209 + return PTR_ERR(code);
13210
13211 - case SIOCGPPPVER:
13212 -- vers = PPP_VERSION;
13213 -- if (copy_to_user(addr, vers, strlen(vers) + 1))
13214 -+ if (copy_to_user(addr, PPP_VERSION, sizeof(PPP_VERSION)))
13215 - break;
13216 - err = 0;
13217 ++ err = sk_chk_filter(code, uprog.len);
13218 ++ if (err) {
13219 ++ kfree(code);
13220 ++ return err;
13221 ++ }
13222 ++
13223 + *p = code;
13224 + return uprog.len;
13225 + }
13226 +@@ -748,52 +755,28 @@ static long ppp_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
13227 + case PPPIOCSPASS:
13228 + {
13229 + struct sock_filter *code;
13230 +-
13231 + err = get_filter(argp, &code);
13232 + if (err >= 0) {
13233 +- struct sock_fprog_kern fprog = {
13234 +- .len = err,
13235 +- .filter = code,
13236 +- };
13237 +-
13238 + ppp_lock(ppp);
13239 +- if (ppp->pass_filter) {
13240 +- sk_unattached_filter_destroy(ppp->pass_filter);
13241 +- ppp->pass_filter = NULL;
13242 +- }
13243 +- if (fprog.filter != NULL)
13244 +- err = sk_unattached_filter_create(&ppp->pass_filter,
13245 +- &fprog);
13246 +- else
13247 +- err = 0;
13248 +- kfree(code);
13249 ++ kfree(ppp->pass_filter);
13250 ++ ppp->pass_filter = code;
13251 ++ ppp->pass_len = err;
13252 + ppp_unlock(ppp);
13253 ++ err = 0;
13254 + }
13255 + break;
13256 + }
13257 + case PPPIOCSACTIVE:
13258 + {
13259 + struct sock_filter *code;
13260 +-
13261 + err = get_filter(argp, &code);
13262 + if (err >= 0) {
13263 +- struct sock_fprog_kern fprog = {
13264 +- .len = err,
13265 +- .filter = code,
13266 +- };
13267 +-
13268 + ppp_lock(ppp);
13269 +- if (ppp->active_filter) {
13270 +- sk_unattached_filter_destroy(ppp->active_filter);
13271 +- ppp->active_filter = NULL;
13272 +- }
13273 +- if (fprog.filter != NULL)
13274 +- err = sk_unattached_filter_create(&ppp->active_filter,
13275 +- &fprog);
13276 +- else
13277 +- err = 0;
13278 +- kfree(code);
13279 ++ kfree(ppp->active_filter);
13280 ++ ppp->active_filter = code;
13281 ++ ppp->active_len = err;
13282 + ppp_unlock(ppp);
13283 ++ err = 0;
13284 + }
13285 break;
13286 + }
13287 +@@ -1201,7 +1184,7 @@ ppp_send_frame(struct ppp *ppp, struct sk_buff *skb)
13288 + a four-byte PPP header on each packet */
13289 + *skb_push(skb, 2) = 1;
13290 + if (ppp->pass_filter &&
13291 +- SK_RUN_FILTER(ppp->pass_filter, skb) == 0) {
13292 ++ sk_run_filter(skb, ppp->pass_filter) == 0) {
13293 + if (ppp->debug & 1)
13294 + netdev_printk(KERN_DEBUG, ppp->dev,
13295 + "PPP: outbound frame "
13296 +@@ -1211,7 +1194,7 @@ ppp_send_frame(struct ppp *ppp, struct sk_buff *skb)
13297 + }
13298 + /* if this packet passes the active filter, record the time */
13299 + if (!(ppp->active_filter &&
13300 +- SK_RUN_FILTER(ppp->active_filter, skb) == 0))
13301 ++ sk_run_filter(skb, ppp->active_filter) == 0))
13302 + ppp->last_xmit = jiffies;
13303 + skb_pull(skb, 2);
13304 + #else
13305 +@@ -1835,7 +1818,7 @@ ppp_receive_nonmp_frame(struct ppp *ppp, struct sk_buff *skb)
13306 +
13307 + *skb_push(skb, 2) = 0;
13308 + if (ppp->pass_filter &&
13309 +- SK_RUN_FILTER(ppp->pass_filter, skb) == 0) {
13310 ++ sk_run_filter(skb, ppp->pass_filter) == 0) {
13311 + if (ppp->debug & 1)
13312 + netdev_printk(KERN_DEBUG, ppp->dev,
13313 + "PPP: inbound frame "
13314 +@@ -1844,7 +1827,7 @@ ppp_receive_nonmp_frame(struct ppp *ppp, struct sk_buff *skb)
13315 + return;
13316 + }
13317 + if (!(ppp->active_filter &&
13318 +- SK_RUN_FILTER(ppp->active_filter, skb) == 0))
13319 ++ sk_run_filter(skb, ppp->active_filter) == 0))
13320 + ppp->last_recv = jiffies;
13321 + __skb_pull(skb, 2);
13322 + } else
13323 +@@ -2689,10 +2672,6 @@ ppp_create_interface(struct net *net, int unit, int *retp)
13324 + ppp->minseq = -1;
13325 + skb_queue_head_init(&ppp->mrq);
13326 + #endif /* CONFIG_PPP_MULTILINK */
13327 +-#ifdef CONFIG_PPP_FILTER
13328 +- ppp->pass_filter = NULL;
13329 +- ppp->active_filter = NULL;
13330 +-#endif /* CONFIG_PPP_FILTER */
13331 +
13332 + /*
13333 + * drum roll: don't forget to set
13334 +@@ -2823,15 +2802,10 @@ static void ppp_destroy_interface(struct ppp *ppp)
13335 + skb_queue_purge(&ppp->mrq);
13336 + #endif /* CONFIG_PPP_MULTILINK */
13337 + #ifdef CONFIG_PPP_FILTER
13338 +- if (ppp->pass_filter) {
13339 +- sk_unattached_filter_destroy(ppp->pass_filter);
13340 +- ppp->pass_filter = NULL;
13341 +- }
13342 +-
13343 +- if (ppp->active_filter) {
13344 +- sk_unattached_filter_destroy(ppp->active_filter);
13345 +- ppp->active_filter = NULL;
13346 +- }
13347 ++ kfree(ppp->pass_filter);
13348 ++ ppp->pass_filter = NULL;
13349 ++ kfree(ppp->active_filter);
13350 ++ ppp->active_filter = NULL;
13351 + #endif /* CONFIG_PPP_FILTER */
13352 +
13353 + kfree_skb(ppp->xmit_pending);
13354 diff --git a/drivers/net/slip/slhc.c b/drivers/net/slip/slhc.c
13355 index 1252d9c..80e660b 100644
13356 --- a/drivers/net/slip/slhc.c
13357 @@ -46741,7 +49612,7 @@ index 1252d9c..80e660b 100644
13358
13359 /* We've got a compressed packet; read the change byte */
13360 diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
13361 -index ce4989b..b40b328 100644
13362 +index b4958c7..277cb96 100644
13363 --- a/drivers/net/team/team.c
13364 +++ b/drivers/net/team/team.c
13365 @@ -2868,7 +2868,7 @@ static int team_device_event(struct notifier_block *unused,
13366 @@ -46753,11 +49624,61 @@ index ce4989b..b40b328 100644
13367 .notifier_call = team_device_event,
13368 };
13369
13370 +diff --git a/drivers/net/team/team_mode_loadbalance.c b/drivers/net/team/team_mode_loadbalance.c
13371 +index a58dfeb..dbde341 100644
13372 +--- a/drivers/net/team/team_mode_loadbalance.c
13373 ++++ b/drivers/net/team/team_mode_loadbalance.c
13374 +@@ -49,7 +49,7 @@ struct lb_port_mapping {
13375 + struct lb_priv_ex {
13376 + struct team *team;
13377 + struct lb_port_mapping tx_hash_to_port_mapping[LB_TX_HASHTABLE_SIZE];
13378 +- struct sock_fprog_kern *orig_fprog;
13379 ++ struct sock_fprog *orig_fprog;
13380 + struct {
13381 + unsigned int refresh_interval; /* in tenths of second */
13382 + struct delayed_work refresh_dw;
13383 +@@ -241,15 +241,15 @@ static int lb_bpf_func_get(struct team *team, struct team_gsetter_ctx *ctx)
13384 + return 0;
13385 + }
13386 +
13387 +-static int __fprog_create(struct sock_fprog_kern **pfprog, u32 data_len,
13388 ++static int __fprog_create(struct sock_fprog **pfprog, u32 data_len,
13389 + const void *data)
13390 + {
13391 +- struct sock_fprog_kern *fprog;
13392 ++ struct sock_fprog *fprog;
13393 + struct sock_filter *filter = (struct sock_filter *) data;
13394 +
13395 + if (data_len % sizeof(struct sock_filter))
13396 + return -EINVAL;
13397 +- fprog = kmalloc(sizeof(*fprog), GFP_KERNEL);
13398 ++ fprog = kmalloc(sizeof(struct sock_fprog), GFP_KERNEL);
13399 + if (!fprog)
13400 + return -ENOMEM;
13401 + fprog->filter = kmemdup(filter, data_len, GFP_KERNEL);
13402 +@@ -262,7 +262,7 @@ static int __fprog_create(struct sock_fprog_kern **pfprog, u32 data_len,
13403 + return 0;
13404 + }
13405 +
13406 +-static void __fprog_destroy(struct sock_fprog_kern *fprog)
13407 ++static void __fprog_destroy(struct sock_fprog *fprog)
13408 + {
13409 + kfree(fprog->filter);
13410 + kfree(fprog);
13411 +@@ -273,7 +273,7 @@ static int lb_bpf_func_set(struct team *team, struct team_gsetter_ctx *ctx)
13412 + struct lb_priv *lb_priv = get_lb_priv(team);
13413 + struct sk_filter *fp = NULL;
13414 + struct sk_filter *orig_fp;
13415 +- struct sock_fprog_kern *fprog = NULL;
13416 ++ struct sock_fprog *fprog = NULL;
13417 + int err;
13418 +
13419 + if (ctx->data.bin_val.len) {
13420 diff --git a/drivers/net/tun.c b/drivers/net/tun.c
13421 -index ee328ba..c4a0041 100644
13422 +index 98bad1f..f197d7a 100644
13423 --- a/drivers/net/tun.c
13424 +++ b/drivers/net/tun.c
13425 -@@ -1876,7 +1876,7 @@ unlock:
13426 +@@ -1854,7 +1854,7 @@ unlock:
13427 }
13428
13429 static long __tun_chr_ioctl(struct file *file, unsigned int cmd,
13430 @@ -46766,7 +49687,7 @@ index ee328ba..c4a0041 100644
13431 {
13432 struct tun_file *tfile = file->private_data;
13433 struct tun_struct *tun;
13434 -@@ -1889,6 +1889,9 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd,
13435 +@@ -1867,6 +1867,9 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd,
13436 unsigned int ifindex;
13437 int ret;
13438
13439 @@ -46777,7 +49698,7 @@ index ee328ba..c4a0041 100644
13440 if (copy_from_user(&ifr, argp, ifreq_len))
13441 return -EFAULT;
13442 diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c
13443 -index 660bd5e..ac59452 100644
13444 +index a4272ed..cdd69ff 100644
13445 --- a/drivers/net/usb/hso.c
13446 +++ b/drivers/net/usb/hso.c
13447 @@ -71,7 +71,7 @@
13448 @@ -46789,7 +49710,7 @@ index 660bd5e..ac59452 100644
13449
13450 #define MOD_AUTHOR "Option Wireless"
13451 #define MOD_DESCRIPTION "USB High Speed Option driver"
13452 -@@ -1179,7 +1179,7 @@ static void put_rxbuf_data_and_resubmit_ctrl_urb(struct hso_serial *serial)
13453 +@@ -1177,7 +1177,7 @@ static void put_rxbuf_data_and_resubmit_ctrl_urb(struct hso_serial *serial)
13454 struct urb *urb;
13455
13456 urb = serial->rx_urb[0];
13457 @@ -46798,7 +49719,7 @@ index 660bd5e..ac59452 100644
13458 count = put_rxbuf_data(urb, serial);
13459 if (count == -1)
13460 return;
13461 -@@ -1217,7 +1217,7 @@ static void hso_std_serial_read_bulk_callback(struct urb *urb)
13462 +@@ -1215,7 +1215,7 @@ static void hso_std_serial_read_bulk_callback(struct urb *urb)
13463 DUMP1(urb->transfer_buffer, urb->actual_length);
13464
13465 /* Anyone listening? */
13466 @@ -46807,7 +49728,7 @@ index 660bd5e..ac59452 100644
13467 return;
13468
13469 if (serial->parent->port_spec & HSO_INFO_CRC_BUG)
13470 -@@ -1287,8 +1287,7 @@ static int hso_serial_open(struct tty_struct *tty, struct file *filp)
13471 +@@ -1277,8 +1277,7 @@ static int hso_serial_open(struct tty_struct *tty, struct file *filp)
13472 tty_port_tty_set(&serial->port, tty);
13473
13474 /* check for port already opened, if not set the termios */
13475 @@ -46817,7 +49738,7 @@ index 660bd5e..ac59452 100644
13476 serial->rx_state = RX_IDLE;
13477 /* Force default termio settings */
13478 _hso_serial_set_termios(tty, NULL);
13479 -@@ -1300,7 +1299,7 @@ static int hso_serial_open(struct tty_struct *tty, struct file *filp)
13480 +@@ -1288,7 +1287,7 @@ static int hso_serial_open(struct tty_struct *tty, struct file *filp)
13481 result = hso_start_serial_device(serial->parent, GFP_KERNEL);
13482 if (result) {
13483 hso_stop_serial_device(serial->parent);
13484 @@ -46826,7 +49747,7 @@ index 660bd5e..ac59452 100644
13485 kref_put(&serial->parent->ref, hso_serial_ref_free);
13486 }
13487 } else {
13488 -@@ -1337,10 +1336,10 @@ static void hso_serial_close(struct tty_struct *tty, struct file *filp)
13489 +@@ -1325,10 +1324,10 @@ static void hso_serial_close(struct tty_struct *tty, struct file *filp)
13490
13491 /* reset the rts and dtr */
13492 /* do the actual close */
13493 @@ -46840,7 +49761,7 @@ index 660bd5e..ac59452 100644
13494 tty_port_tty_set(&serial->port, NULL);
13495 if (!usb_gone)
13496 hso_stop_serial_device(serial->parent);
13497 -@@ -1416,7 +1415,7 @@ static void hso_serial_set_termios(struct tty_struct *tty, struct ktermios *old)
13498 +@@ -1403,7 +1402,7 @@ static void hso_serial_set_termios(struct tty_struct *tty, struct ktermios *old)
13499
13500 /* the actual setup */
13501 spin_lock_irqsave(&serial->serial_lock, flags);
13502 @@ -46849,7 +49770,7 @@ index 660bd5e..ac59452 100644
13503 _hso_serial_set_termios(tty, old);
13504 else
13505 tty->termios = *old;
13506 -@@ -1885,7 +1884,7 @@ static void intr_callback(struct urb *urb)
13507 +@@ -1872,7 +1871,7 @@ static void intr_callback(struct urb *urb)
13508 D1("Pending read interrupt on port %d\n", i);
13509 spin_lock(&serial->serial_lock);
13510 if (serial->rx_state == RX_IDLE &&
13511 @@ -46858,7 +49779,7 @@ index 660bd5e..ac59452 100644
13512 /* Setup and send a ctrl req read on
13513 * port i */
13514 if (!serial->rx_urb_filled[0]) {
13515 -@@ -3061,7 +3060,7 @@ static int hso_resume(struct usb_interface *iface)
13516 +@@ -3045,7 +3044,7 @@ static int hso_resume(struct usb_interface *iface)
13517 /* Start all serial ports */
13518 for (i = 0; i < HSO_SERIAL_TTY_MINORS; i++) {
13519 if (serial_table[i] && (serial_table[i]->interface == iface)) {
13520 @@ -46868,7 +49789,7 @@ index 660bd5e..ac59452 100644
13521 hso_start_serial_device(serial_table[i], GFP_NOIO);
13522 hso_kick_transmit(dev2ser(serial_table[i]));
13523 diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
13524 -index d2c0070..3c3da43 100644
13525 +index 3eab74c..fb6097c 100644
13526 --- a/drivers/net/usb/r8152.c
13527 +++ b/drivers/net/usb/r8152.c
13528 @@ -567,7 +567,7 @@ struct r8152 {
13529 @@ -46903,7 +49824,7 @@ index a2515887..6d13233 100644
13530
13531 /* we will have to manufacture ethernet headers, prepare template */
13532 diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
13533 -index 8a852b5..668a4b6 100644
13534 +index 7d9f84a..7f690da 100644
13535 --- a/drivers/net/virtio_net.c
13536 +++ b/drivers/net/virtio_net.c
13537 @@ -47,7 +47,7 @@ module_param(gso, bool, 0444);
13538 @@ -46916,10 +49837,10 @@ index 8a852b5..668a4b6 100644
13539 #define VIRTNET_DRIVER_VERSION "1.0.0"
13540
13541 diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
13542 -index 77dcf92..549924a 100644
13543 +index 9f79192..838cf95 100644
13544 --- a/drivers/net/vxlan.c
13545 +++ b/drivers/net/vxlan.c
13546 -@@ -2839,7 +2839,7 @@ nla_put_failure:
13547 +@@ -2838,7 +2838,7 @@ nla_put_failure:
13548 return -EMSGSIZE;
13549 }
13550
13551 @@ -46928,7 +49849,7 @@ index 77dcf92..549924a 100644
13552 .kind = "vxlan",
13553 .maxtype = IFLA_VXLAN_MAX,
13554 .policy = vxlan_policy,
13555 -@@ -2886,7 +2886,7 @@ static int vxlan_lowerdev_event(struct notifier_block *unused,
13556 +@@ -2885,7 +2885,7 @@ static int vxlan_lowerdev_event(struct notifier_block *unused,
13557 return NOTIFY_DONE;
13558 }
13559
13560 @@ -47053,24 +49974,6 @@ index 5920c99..ff2e4a5 100644
13561 };
13562
13563 static void
13564 -diff --git a/drivers/net/wan/x25_asy.c b/drivers/net/wan/x25_asy.c
13565 -index 5895f19..fa9fdfa 100644
13566 ---- a/drivers/net/wan/x25_asy.c
13567 -+++ b/drivers/net/wan/x25_asy.c
13568 -@@ -122,8 +122,12 @@ static int x25_asy_change_mtu(struct net_device *dev, int newmtu)
13569 - {
13570 - struct x25_asy *sl = netdev_priv(dev);
13571 - unsigned char *xbuff, *rbuff;
13572 -- int len = 2 * newmtu;
13573 -+ int len;
13574 -
13575 -+ if (newmtu > 65534)
13576 -+ return -EINVAL;
13577 -+
13578 -+ len = 2 * newmtu;
13579 - xbuff = kmalloc(len + 4, GFP_ATOMIC);
13580 - rbuff = kmalloc(len + 4, GFP_ATOMIC);
13581 -
13582 diff --git a/drivers/net/wan/z85230.c b/drivers/net/wan/z85230.c
13583 index feacc3b..5bac0de 100644
13584 --- a/drivers/net/wan/z85230.c
13585 @@ -47150,7 +50053,7 @@ index 64747d4..17c4cf3 100644
13586
13587 /* Only super-user can write RIDs */
13588 diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c
13589 -index 99b3bfa..9559372 100644
13590 +index d48776e..373d049 100644
13591 --- a/drivers/net/wireless/at76c50x-usb.c
13592 +++ b/drivers/net/wireless/at76c50x-usb.c
13593 @@ -353,7 +353,7 @@ static int at76_dfu_get_state(struct usb_device *udev, u8 *state)
13594 @@ -47163,7 +50066,7 @@ index 99b3bfa..9559372 100644
13595 return msecs_to_jiffies((s->poll_timeout[2] << 16)
13596 | (s->poll_timeout[1] << 8)
13597 diff --git a/drivers/net/wireless/ath/ath10k/htc.c b/drivers/net/wireless/ath/ath10k/htc.c
13598 -index 7f1bccd..ca2ffca 100644
13599 +index e493db4..2c1853a 100644
13600 --- a/drivers/net/wireless/ath/ath10k/htc.c
13601 +++ b/drivers/net/wireless/ath/ath10k/htc.c
13602 @@ -840,7 +840,10 @@ void ath10k_htc_stop(struct ath10k_htc *htc)
13603 @@ -47463,7 +50366,7 @@ index dc1d20c..f7a4f06 100644
13604
13605 D_INFO("*** LOAD DRIVER ***\n");
13606 diff --git a/drivers/net/wireless/iwlwifi/dvm/debugfs.c b/drivers/net/wireless/iwlwifi/dvm/debugfs.c
13607 -index d2fe259..0c4c682 100644
13608 +index 0ffb6ff..c0b7f0e 100644
13609 --- a/drivers/net/wireless/iwlwifi/dvm/debugfs.c
13610 +++ b/drivers/net/wireless/iwlwifi/dvm/debugfs.c
13611 @@ -188,7 +188,7 @@ static ssize_t iwl_dbgfs_sram_write(struct file *file,
13612 @@ -47571,7 +50474,7 @@ index d2fe259..0c4c682 100644
13613 int rts;
13614
13615 if (!priv->cfg->ht_params)
13616 -@@ -2205,7 +2205,7 @@ static ssize_t iwl_dbgfs_echo_test_write(struct file *file,
13617 +@@ -2204,7 +2204,7 @@ static ssize_t iwl_dbgfs_echo_test_write(struct file *file,
13618 {
13619 struct iwl_priv *priv = file->private_data;
13620 char buf[8];
13621 @@ -47580,7 +50483,7 @@ index d2fe259..0c4c682 100644
13622
13623 memset(buf, 0, sizeof(buf));
13624 buf_size = min(count, sizeof(buf) - 1);
13625 -@@ -2239,7 +2239,7 @@ static ssize_t iwl_dbgfs_log_event_write(struct file *file,
13626 +@@ -2238,7 +2238,7 @@ static ssize_t iwl_dbgfs_log_event_write(struct file *file,
13627 struct iwl_priv *priv = file->private_data;
13628 u32 event_log_flag;
13629 char buf[8];
13630 @@ -47589,7 +50492,7 @@ index d2fe259..0c4c682 100644
13631
13632 /* check that the interface is up */
13633 if (!iwl_is_ready(priv))
13634 -@@ -2293,7 +2293,7 @@ static ssize_t iwl_dbgfs_calib_disabled_write(struct file *file,
13635 +@@ -2292,7 +2292,7 @@ static ssize_t iwl_dbgfs_calib_disabled_write(struct file *file,
13636 struct iwl_priv *priv = file->private_data;
13637 char buf[8];
13638 u32 calib_disabled;
13639 @@ -47598,32 +50501,11 @@ index d2fe259..0c4c682 100644
13640
13641 memset(buf, 0, sizeof(buf));
13642 buf_size = min(count, sizeof(buf) - 1);
13643 -diff --git a/drivers/net/wireless/iwlwifi/dvm/main.c b/drivers/net/wireless/iwlwifi/dvm/main.c
13644 -index 6a6df71..eb5c93a 100644
13645 ---- a/drivers/net/wireless/iwlwifi/dvm/main.c
13646 -+++ b/drivers/net/wireless/iwlwifi/dvm/main.c
13647 -@@ -1127,7 +1127,7 @@ static void iwl_option_config(struct iwl_priv *priv)
13648 - static int iwl_eeprom_init_hw_params(struct iwl_priv *priv)
13649 - {
13650 - struct iwl_nvm_data *data = priv->nvm_data;
13651 -- char *debug_msg;
13652 -+ static const char debug_msg[] = "Device SKU: 24GHz %s %s, 52GHz %s %s, 11.n %s %s\n";
13653 -
13654 - if (data->sku_cap_11n_enable &&
13655 - !priv->cfg->ht_params) {
13656 -@@ -1141,7 +1141,6 @@ static int iwl_eeprom_init_hw_params(struct iwl_priv *priv)
13657 - return -EINVAL;
13658 - }
13659 -
13660 -- debug_msg = "Device SKU: 24GHz %s %s, 52GHz %s %s, 11.n %s %s\n";
13661 - IWL_DEBUG_INFO(priv, debug_msg,
13662 - data->sku_cap_band_24GHz_enable ? "" : "NOT", "enabled",
13663 - data->sku_cap_band_52GHz_enable ? "" : "NOT", "enabled",
13664 diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c
13665 -index 295b24c..cb4f823 100644
13666 +index 788085b..0bc852a 100644
13667 --- a/drivers/net/wireless/iwlwifi/pcie/trans.c
13668 +++ b/drivers/net/wireless/iwlwifi/pcie/trans.c
13669 -@@ -1558,7 +1558,7 @@ static ssize_t iwl_dbgfs_interrupt_write(struct file *file,
13670 +@@ -1598,7 +1598,7 @@ static ssize_t iwl_dbgfs_interrupt_write(struct file *file,
13671 struct isr_statistics *isr_stats = &trans_pcie->isr_stats;
13672
13673 char buf[8];
13674 @@ -47632,7 +50514,7 @@ index 295b24c..cb4f823 100644
13675 u32 reset_flag;
13676
13677 memset(buf, 0, sizeof(buf));
13678 -@@ -1579,7 +1579,7 @@ static ssize_t iwl_dbgfs_csr_write(struct file *file,
13679 +@@ -1619,7 +1619,7 @@ static ssize_t iwl_dbgfs_csr_write(struct file *file,
13680 {
13681 struct iwl_trans *trans = file->private_data;
13682 char buf[8];
13683 @@ -47642,10 +50524,10 @@ index 295b24c..cb4f823 100644
13684
13685 memset(buf, 0, sizeof(buf));
13686 diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
13687 -index 9d7a52f..2729a99 100644
13688 +index a312c65..162b13a 100644
13689 --- a/drivers/net/wireless/mac80211_hwsim.c
13690 +++ b/drivers/net/wireless/mac80211_hwsim.c
13691 -@@ -2570,20 +2570,20 @@ static int __init init_mac80211_hwsim(void)
13692 +@@ -2573,20 +2573,20 @@ static int __init init_mac80211_hwsim(void)
13693 if (channels < 1)
13694 return -EINVAL;
13695
13696 @@ -47681,7 +50563,7 @@ index 9d7a52f..2729a99 100644
13697 spin_lock_init(&hwsim_radio_lock);
13698 INIT_LIST_HEAD(&hwsim_radios);
13699 diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
13700 -index 39d22a1..4ec8612 100644
13701 +index d2a9a08..0cb175d 100644
13702 --- a/drivers/net/wireless/rndis_wlan.c
13703 +++ b/drivers/net/wireless/rndis_wlan.c
13704 @@ -1236,7 +1236,7 @@ static int set_rts_threshold(struct usbnet *usbdev, u32 rts_threshold)
13705 @@ -47694,7 +50576,7 @@ index 39d22a1..4ec8612 100644
13706
13707 tmp = cpu_to_le32(rts_threshold);
13708 diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
13709 -index 5d45a1a..6f5f041 100644
13710 +index d13f25c..2573994 100644
13711 --- a/drivers/net/wireless/rt2x00/rt2x00.h
13712 +++ b/drivers/net/wireless/rt2x00/rt2x00.h
13713 @@ -375,7 +375,7 @@ struct rt2x00_intf {
13714 @@ -47975,10 +50857,10 @@ index 61be1d9..dec05d7 100644
13715 };
13716
13717 diff --git a/drivers/parport/procfs.c b/drivers/parport/procfs.c
13718 -index 92ed045..62d39bd7 100644
13719 +index 3b47080..6cd05dd 100644
13720 --- a/drivers/parport/procfs.c
13721 +++ b/drivers/parport/procfs.c
13722 -@@ -64,7 +64,7 @@ static int do_active_device(ctl_table *table, int write,
13723 +@@ -64,7 +64,7 @@ static int do_active_device(struct ctl_table *table, int write,
13724
13725 *ppos += len;
13726
13727 @@ -47987,7 +50869,7 @@ index 92ed045..62d39bd7 100644
13728 }
13729
13730 #ifdef CONFIG_PARPORT_1284
13731 -@@ -106,7 +106,7 @@ static int do_autoprobe(ctl_table *table, int write,
13732 +@@ -106,7 +106,7 @@ static int do_autoprobe(struct ctl_table *table, int write,
13733
13734 *ppos += len;
13735
13736 @@ -48012,7 +50894,7 @@ index 8dcccff..35d701d 100644
13737
13738 return retval;
13739 diff --git a/drivers/pci/hotplug/cpcihp_generic.c b/drivers/pci/hotplug/cpcihp_generic.c
13740 -index 7536eef..52dc8fa 100644
13741 +index 04fcd78..39e83f1 100644
13742 --- a/drivers/pci/hotplug/cpcihp_generic.c
13743 +++ b/drivers/pci/hotplug/cpcihp_generic.c
13744 @@ -73,7 +73,6 @@ static u16 port;
13745 @@ -48043,7 +50925,7 @@ index 7536eef..52dc8fa 100644
13746
13747 status = cpci_hp_register_controller(&generic_hpc);
13748 diff --git a/drivers/pci/hotplug/cpcihp_zt5550.c b/drivers/pci/hotplug/cpcihp_zt5550.c
13749 -index e8c4a7c..7046f5c 100644
13750 +index 6757b3e..d3bad62 100644
13751 --- a/drivers/pci/hotplug/cpcihp_zt5550.c
13752 +++ b/drivers/pci/hotplug/cpcihp_zt5550.c
13753 @@ -59,7 +59,6 @@
13754 @@ -48088,10 +50970,10 @@ index e8c4a7c..7046f5c 100644
13755 info("using ENUM# polling mode");
13756 }
13757 diff --git a/drivers/pci/hotplug/cpqphp_nvram.c b/drivers/pci/hotplug/cpqphp_nvram.c
13758 -index 76ba8a1..20ca857 100644
13759 +index 0968a9b..5a00edf 100644
13760 --- a/drivers/pci/hotplug/cpqphp_nvram.c
13761 +++ b/drivers/pci/hotplug/cpqphp_nvram.c
13762 -@@ -428,9 +428,13 @@ static u32 store_HRT (void __iomem *rom_start)
13763 +@@ -427,9 +427,13 @@ static u32 store_HRT (void __iomem *rom_start)
13764
13765 void compaq_nvram_init (void __iomem *rom_start)
13766 {
13767 @@ -48106,10 +50988,10 @@ index 76ba8a1..20ca857 100644
13768
13769 /* initialize our int15 lock */
13770 diff --git a/drivers/pci/hotplug/pci_hotplug_core.c b/drivers/pci/hotplug/pci_hotplug_core.c
13771 -index cfa92a9..29539c5 100644
13772 +index 56d8486..f26113f 100644
13773 --- a/drivers/pci/hotplug/pci_hotplug_core.c
13774 +++ b/drivers/pci/hotplug/pci_hotplug_core.c
13775 -@@ -441,8 +441,10 @@ int __pci_hp_register(struct hotplug_slot *slot, struct pci_bus *bus,
13776 +@@ -436,8 +436,10 @@ int __pci_hp_register(struct hotplug_slot *slot, struct pci_bus *bus,
13777 return -EINVAL;
13778 }
13779
13780 @@ -48123,7 +51005,7 @@ index cfa92a9..29539c5 100644
13781 mutex_lock(&pci_hp_mutex);
13782 /*
13783 diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c
13784 -index 0e0a2ff..29dff57 100644
13785 +index a2297db..7c7d161 100644
13786 --- a/drivers/pci/hotplug/pciehp_core.c
13787 +++ b/drivers/pci/hotplug/pciehp_core.c
13788 @@ -92,7 +92,7 @@ static int init_slot(struct controller *ctrl)
13789 @@ -48136,10 +51018,10 @@ index 0e0a2ff..29dff57 100644
13790 int retval = -ENOMEM;
13791
13792 diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
13793 -index fb02fc2..83dc2c3 100644
13794 +index 13f3d30..363cb44 100644
13795 --- a/drivers/pci/msi.c
13796 +++ b/drivers/pci/msi.c
13797 -@@ -524,8 +524,8 @@ static int populate_msi_sysfs(struct pci_dev *pdev)
13798 +@@ -523,8 +523,8 @@ static int populate_msi_sysfs(struct pci_dev *pdev)
13799 {
13800 struct attribute **msi_attrs;
13801 struct attribute *msi_attr;
13802 @@ -48150,7 +51032,7 @@ index fb02fc2..83dc2c3 100644
13803 const struct attribute_group **msi_irq_groups;
13804 struct msi_desc *entry;
13805 int ret = -ENOMEM;
13806 -@@ -589,7 +589,7 @@ error_attrs:
13807 +@@ -584,7 +584,7 @@ error_attrs:
13808 count = 0;
13809 msi_attr = msi_attrs[count];
13810 while (msi_attr) {
13811 @@ -48160,10 +51042,10 @@ index fb02fc2..83dc2c3 100644
13812 kfree(msi_dev_attr);
13813 ++count;
13814 diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
13815 -index 4e0acef..bd98e31 100644
13816 +index 9ff0a90..e819dda 100644
13817 --- a/drivers/pci/pci-sysfs.c
13818 +++ b/drivers/pci/pci-sysfs.c
13819 -@@ -1101,7 +1101,7 @@ static int pci_create_attr(struct pci_dev *pdev, int num, int write_combine)
13820 +@@ -1134,7 +1134,7 @@ static int pci_create_attr(struct pci_dev *pdev, int num, int write_combine)
13821 {
13822 /* allocate attribute structure, piggyback attribute name */
13823 int name_len = write_combine ? 13 : 10;
13824 @@ -48172,7 +51054,7 @@ index 4e0acef..bd98e31 100644
13825 int retval;
13826
13827 res_attr = kzalloc(sizeof(*res_attr) + name_len, GFP_ATOMIC);
13828 -@@ -1286,7 +1286,7 @@ static struct device_attribute reset_attr = __ATTR(reset, 0200, NULL, reset_stor
13829 +@@ -1311,7 +1311,7 @@ static struct device_attribute reset_attr = __ATTR(reset, 0200, NULL, reset_stor
13830 static int pci_create_capabilities_sysfs(struct pci_dev *dev)
13831 {
13832 int retval;
13833 @@ -48181,7 +51063,7 @@ index 4e0acef..bd98e31 100644
13834
13835 /* If the device has VPD, try to expose it in sysfs. */
13836 if (dev->vpd) {
13837 -@@ -1333,7 +1333,7 @@ int __must_check pci_create_sysfs_dev_files (struct pci_dev *pdev)
13838 +@@ -1358,7 +1358,7 @@ int __must_check pci_create_sysfs_dev_files(struct pci_dev *pdev)
13839 {
13840 int retval;
13841 int rom_size = 0;
13842 @@ -48191,7 +51073,7 @@ index 4e0acef..bd98e31 100644
13843 if (!sysfs_initialized)
13844 return -EACCES;
13845 diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
13846 -index 6bd0822..35bc2b3 100644
13847 +index 0601890..dc15007 100644
13848 --- a/drivers/pci/pci.h
13849 +++ b/drivers/pci/pci.h
13850 @@ -91,7 +91,7 @@ struct pci_vpd_ops {
13851 @@ -48221,12 +51103,12 @@ index e1e7026..d28dd33 100644
13852 #define ASPM_STATE_ALL (ASPM_STATE_L0S | ASPM_STATE_L1)
13853
13854 diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
13855 -index ef09f5f..49ac62f 100644
13856 +index e3cf8a2..be1baf0 100644
13857 --- a/drivers/pci/probe.c
13858 +++ b/drivers/pci/probe.c
13859 -@@ -175,7 +175,7 @@ int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
13860 +@@ -176,7 +176,7 @@ int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
13861 struct pci_bus_region region, inverted_region;
13862 - bool bar_too_big = false, bar_disabled = false;
13863 + bool bar_too_big = false, bar_too_high = false, bar_invalid = false;
13864
13865 - mask = type ? PCI_ROM_ADDRESS_MASK : ~0;
13866 + mask = type ? (u32)PCI_ROM_ADDRESS_MASK : ~0;
13867 @@ -48234,7 +51116,7 @@ index ef09f5f..49ac62f 100644
13868 /* No printks while decoding is disabled! */
13869 if (!dev->mmio_always_on) {
13870 diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c
13871 -index 46d1378..30e452b 100644
13872 +index 3f155e7..0f4b1f0 100644
13873 --- a/drivers/pci/proc.c
13874 +++ b/drivers/pci/proc.c
13875 @@ -434,7 +434,16 @@ static const struct file_operations proc_bus_pci_dev_operations = {
13876 @@ -48255,10 +51137,10 @@ index 46d1378..30e452b 100644
13877 &proc_bus_pci_dev_operations);
13878 proc_initialized = 1;
13879 diff --git a/drivers/platform/chrome/chromeos_laptop.c b/drivers/platform/chrome/chromeos_laptop.c
13880 -index 7f3aad0..7d604bb 100644
13881 +index 7f1a2e2..bc4b405 100644
13882 --- a/drivers/platform/chrome/chromeos_laptop.c
13883 +++ b/drivers/platform/chrome/chromeos_laptop.c
13884 -@@ -406,7 +406,7 @@ static struct chromeos_laptop cr48 = {
13885 +@@ -395,7 +395,7 @@ static struct chromeos_laptop cr48 = {
13886 .callback = chromeos_laptop_dmi_matched, \
13887 .driver_data = (void *)&board_
13888
13889 @@ -48268,10 +51150,10 @@ index 7f3aad0..7d604bb 100644
13890 .ident = "Samsung Series 5 550",
13891 .matches = {
13892 diff --git a/drivers/platform/x86/alienware-wmi.c b/drivers/platform/x86/alienware-wmi.c
13893 -index 541f951..4dfd598 100644
13894 +index 297b664..ab91e39 100644
13895 --- a/drivers/platform/x86/alienware-wmi.c
13896 +++ b/drivers/platform/x86/alienware-wmi.c
13897 -@@ -132,7 +132,7 @@ struct wmax_led_args {
13898 +@@ -133,7 +133,7 @@ struct wmax_led_args {
13899 } __packed;
13900
13901 static struct platform_device *platform_device;
13902 @@ -48280,7 +51162,7 @@ index 541f951..4dfd598 100644
13903 static struct attribute **zone_attrs;
13904 static struct platform_zone *zone_data;
13905
13906 -@@ -143,7 +143,7 @@ static struct platform_driver platform_driver = {
13907 +@@ -144,7 +144,7 @@ static struct platform_driver platform_driver = {
13908 }
13909 };
13910
13911 @@ -48290,10 +51172,10 @@ index 541f951..4dfd598 100644
13912 };
13913
13914 diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c
13915 -index c5e082f..d6307a0 100644
13916 +index 3c6cced..12e0771 100644
13917 --- a/drivers/platform/x86/asus-wmi.c
13918 +++ b/drivers/platform/x86/asus-wmi.c
13919 -@@ -1595,6 +1595,10 @@ static int show_dsts(struct seq_file *m, void *data)
13920 +@@ -1592,6 +1592,10 @@ static int show_dsts(struct seq_file *m, void *data)
13921 int err;
13922 u32 retval = -1;
13923
13924 @@ -48304,7 +51186,7 @@ index c5e082f..d6307a0 100644
13925 err = asus_wmi_get_devstate(asus, asus->debug.dev_id, &retval);
13926
13927 if (err < 0)
13928 -@@ -1611,6 +1615,10 @@ static int show_devs(struct seq_file *m, void *data)
13929 +@@ -1608,6 +1612,10 @@ static int show_devs(struct seq_file *m, void *data)
13930 int err;
13931 u32 retval = -1;
13932
13933 @@ -48315,7 +51197,7 @@ index c5e082f..d6307a0 100644
13934 err = asus_wmi_set_devstate(asus->debug.dev_id, asus->debug.ctrl_param,
13935 &retval);
13936
13937 -@@ -1635,6 +1643,10 @@ static int show_call(struct seq_file *m, void *data)
13938 +@@ -1632,6 +1640,10 @@ static int show_call(struct seq_file *m, void *data)
13939 union acpi_object *obj;
13940 acpi_status status;
13941
13942 @@ -48423,7 +51305,7 @@ index 9c5a074..06c976a 100644
13943 static ssize_t sony_nc_smart_conn_store(struct device *dev,
13944 struct device_attribute *attr,
13945 diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
13946 -index 15e61c1..40a39c7 100644
13947 +index d82f196..5458f34 100644
13948 --- a/drivers/platform/x86/thinkpad_acpi.c
13949 +++ b/drivers/platform/x86/thinkpad_acpi.c
13950 @@ -2094,7 +2094,7 @@ static int hotkey_mask_get(void)
13951 @@ -48507,28 +51389,6 @@ index 438d4c7..ca8a2fb 100644
13952 +
13953 + pax_close_kernel();
13954 }
13955 -diff --git a/drivers/pnp/resource.c b/drivers/pnp/resource.c
13956 -index 01712cb..782e822 100644
13957 ---- a/drivers/pnp/resource.c
13958 -+++ b/drivers/pnp/resource.c
13959 -@@ -360,7 +360,7 @@ int pnp_check_irq(struct pnp_dev *dev, struct resource *res)
13960 - return 1;
13961 -
13962 - /* check if the resource is valid */
13963 -- if (*irq < 0 || *irq > 15)
13964 -+ if (*irq > 15)
13965 - return 0;
13966 -
13967 - /* check if the resource is reserved */
13968 -@@ -424,7 +424,7 @@ int pnp_check_dma(struct pnp_dev *dev, struct resource *res)
13969 - return 1;
13970 -
13971 - /* check if the resource is valid */
13972 -- if (*dma < 0 || *dma == 4 || *dma > 7)
13973 -+ if (*dma == 4 || *dma > 7)
13974 - return 0;
13975 -
13976 - /* check if the resource is reserved */
13977 diff --git a/drivers/power/pda_power.c b/drivers/power/pda_power.c
13978 index 0c52e2a..3421ab7 100644
13979 --- a/drivers/power/pda_power.c
13980 @@ -48574,7 +51434,7 @@ index cc439fd..8fa30df 100644
13981
13982 #endif /* CONFIG_SYSFS */
13983 diff --git a/drivers/power/power_supply_core.c b/drivers/power/power_supply_core.c
13984 -index 2660664..75fcb04 100644
13985 +index 5a5a24e..f7a3754 100644
13986 --- a/drivers/power/power_supply_core.c
13987 +++ b/drivers/power/power_supply_core.c
13988 @@ -28,7 +28,10 @@ EXPORT_SYMBOL_GPL(power_supply_class);
13989 @@ -48589,7 +51449,7 @@ index 2660664..75fcb04 100644
13990
13991 static bool __power_supply_is_supplied_by(struct power_supply *supplier,
13992 struct power_supply *supply)
13993 -@@ -628,7 +631,7 @@ static int __init power_supply_class_init(void)
13994 +@@ -639,7 +642,7 @@ static int __init power_supply_class_init(void)
13995 return PTR_ERR(power_supply_class);
13996
13997 power_supply_class->dev_uevent = power_supply_uevent;
13998 @@ -48811,6 +51671,18 @@ index 84419af..268ede8 100644
13999 power_zone->zone_dev_attrs[count++] =
14000 &dev_attr_energy_uj.attr;
14001 }
14002 +diff --git a/drivers/ptp/Kconfig b/drivers/ptp/Kconfig
14003 +index ee3de34..bec7285 100644
14004 +--- a/drivers/ptp/Kconfig
14005 ++++ b/drivers/ptp/Kconfig
14006 +@@ -8,7 +8,6 @@ config PTP_1588_CLOCK
14007 + tristate "PTP clock support"
14008 + depends on NET
14009 + select PPS
14010 +- select NET_PTP_CLASSIFY
14011 + help
14012 + The IEEE 1588 standard defines a method to precisely
14013 + synchronize distributed clocks over Ethernet networks. The
14014 diff --git a/drivers/ptp/ptp_private.h b/drivers/ptp/ptp_private.h
14015 index 9c5d414..c7900ce 100644
14016 --- a/drivers/ptp/ptp_private.h
14017 @@ -48838,10 +51710,10 @@ index 302e626..12579af 100644
14018 da->attr.name = info->pin_config[i].name;
14019 da->attr.mode = 0644;
14020 diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
14021 -index 9a09f3c..450b523 100644
14022 +index 4c1f999..11078c9 100644
14023 --- a/drivers/regulator/core.c
14024 +++ b/drivers/regulator/core.c
14025 -@@ -3380,7 +3380,7 @@ regulator_register(const struct regulator_desc *regulator_desc,
14026 +@@ -3391,7 +3391,7 @@ regulator_register(const struct regulator_desc *regulator_desc,
14027 {
14028 const struct regulation_constraints *constraints = NULL;
14029 const struct regulator_init_data *init_data;
14030 @@ -48850,8 +51722,8 @@ index 9a09f3c..450b523 100644
14031 struct regulator_dev *rdev;
14032 struct device *dev;
14033 int ret, i;
14034 -@@ -3450,7 +3450,7 @@ regulator_register(const struct regulator_desc *regulator_desc,
14035 - rdev->dev.of_node = config->of_node;
14036 +@@ -3461,7 +3461,7 @@ regulator_register(const struct regulator_desc *regulator_desc,
14037 + rdev->dev.of_node = of_node_get(config->of_node);
14038 rdev->dev.parent = dev;
14039 dev_set_name(&rdev->dev, "regulator.%d",
14040 - atomic_inc_return(&regulator_no) - 1);
14041 @@ -48915,10 +51787,10 @@ index f374fa5..26f0683 100644
14042 mc13xxx_data = mc13xxx_parse_regulators_dt(pdev, mc13892_regulators,
14043 ARRAY_SIZE(mc13892_regulators));
14044 diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c
14045 -index 0963c93..ea29cce 100644
14046 +index b0e4a3e..e5dc11e 100644
14047 --- a/drivers/rtc/rtc-cmos.c
14048 +++ b/drivers/rtc/rtc-cmos.c
14049 -@@ -777,7 +777,9 @@ cmos_do_probe(struct device *dev, struct resource *ports, int rtc_irq)
14050 +@@ -789,7 +789,9 @@ cmos_do_probe(struct device *dev, struct resource *ports, int rtc_irq)
14051 hpet_rtc_timer_init();
14052
14053 /* export at least the first block of NVRAM */
14054 @@ -48978,47 +51850,6 @@ index 11880c1..b823aa4 100644
14055
14056 ret = sysfs_create_bin_file(&pdev->dev.kobj, &m48t59_nvram_attr);
14057 if (ret)
14058 -diff --git a/drivers/scsi/aic7xxx/aic79xx_pci.c b/drivers/scsi/aic7xxx/aic79xx_pci.c
14059 -index 14b5f8d..cc9bd26 100644
14060 ---- a/drivers/scsi/aic7xxx/aic79xx_pci.c
14061 -+++ b/drivers/scsi/aic7xxx/aic79xx_pci.c
14062 -@@ -827,7 +827,7 @@ ahd_pci_intr(struct ahd_softc *ahd)
14063 - for (bit = 0; bit < 8; bit++) {
14064 -
14065 - if ((pci_status[i] & (0x1 << bit)) != 0) {
14066 -- static const char *s;
14067 -+ const char *s;
14068 -
14069 - s = pci_status_strings[bit];
14070 - if (i == 7/*TARG*/ && bit == 3)
14071 -@@ -887,23 +887,15 @@ ahd_pci_split_intr(struct ahd_softc *ahd, u_int intstat)
14072 -
14073 - for (bit = 0; bit < 8; bit++) {
14074 -
14075 -- if ((split_status[i] & (0x1 << bit)) != 0) {
14076 -- static const char *s;
14077 --
14078 -- s = split_status_strings[bit];
14079 -- printk(s, ahd_name(ahd),
14080 -+ if ((split_status[i] & (0x1 << bit)) != 0)
14081 -+ printk(split_status_strings[bit], ahd_name(ahd),
14082 - split_status_source[i]);
14083 -- }
14084 -
14085 - if (i > 1)
14086 - continue;
14087 -
14088 -- if ((sg_split_status[i] & (0x1 << bit)) != 0) {
14089 -- static const char *s;
14090 --
14091 -- s = split_status_strings[bit];
14092 -- printk(s, ahd_name(ahd), "SG");
14093 -- }
14094 -+ if ((sg_split_status[i] & (0x1 << bit)) != 0)
14095 -+ printk(split_status_strings[bit], ahd_name(ahd), "SG");
14096 - }
14097 - }
14098 - /*
14099 diff --git a/drivers/scsi/bfa/bfa_fcpim.h b/drivers/scsi/bfa/bfa_fcpim.h
14100 index e693af6..2e525b6 100644
14101 --- a/drivers/scsi/bfa/bfa_fcpim.h
14102 @@ -49214,10 +52045,10 @@ index 3cbb57a..95e47a3 100644
14103
14104 /* These three are default values which can be overridden */
14105 diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
14106 -index fda6cf1..7a6b5d8 100644
14107 +index 31184b3..cc44bbf 100644
14108 --- a/drivers/scsi/hpsa.c
14109 +++ b/drivers/scsi/hpsa.c
14110 -@@ -699,10 +699,10 @@ static inline u32 next_command(struct ctlr_info *h, u8 q)
14111 +@@ -701,10 +701,10 @@ static inline u32 next_command(struct ctlr_info *h, u8 q)
14112 unsigned long flags;
14113
14114 if (h->transMethod & CFGTBL_Trans_io_accel1)
14115 @@ -49230,7 +52061,7 @@ index fda6cf1..7a6b5d8 100644
14116
14117 if ((rq->head[rq->current_entry] & 1) == rq->wraparound) {
14118 a = rq->head[rq->current_entry];
14119 -@@ -5460,7 +5460,7 @@ static void start_io(struct ctlr_info *h)
14120 +@@ -5455,7 +5455,7 @@ static void start_io(struct ctlr_info *h, unsigned long *flags)
14121 while (!list_empty(&h->reqQ)) {
14122 c = list_entry(h->reqQ.next, struct CommandList, list);
14123 /* can't do anything if fifo is full */
14124 @@ -49239,16 +52070,16 @@ index fda6cf1..7a6b5d8 100644
14125 h->fifo_recently_full = 1;
14126 dev_warn(&h->pdev->dev, "fifo full\n");
14127 break;
14128 -@@ -5484,7 +5484,7 @@ static void start_io(struct ctlr_info *h)
14129 +@@ -5477,7 +5477,7 @@ static void start_io(struct ctlr_info *h, unsigned long *flags)
14130
14131 /* Tell the controller execute command */
14132 - spin_unlock_irqrestore(&h->lock, flags);
14133 + spin_unlock_irqrestore(&h->lock, *flags);
14134 - h->access.submit_command(h, c);
14135 + h->access->submit_command(h, c);
14136 - spin_lock_irqsave(&h->lock, flags);
14137 + spin_lock_irqsave(&h->lock, *flags);
14138 }
14139 - spin_unlock_irqrestore(&h->lock, flags);
14140 -@@ -5492,17 +5492,17 @@ static void start_io(struct ctlr_info *h)
14141 + }
14142 +@@ -5493,17 +5493,17 @@ static void lock_and_start_io(struct ctlr_info *h)
14143
14144 static inline unsigned long get_next_completion(struct ctlr_info *h, u8 q)
14145 {
14146 @@ -49269,7 +52100,7 @@ index fda6cf1..7a6b5d8 100644
14147 (h->interrupts_enabled == 0);
14148 }
14149
14150 -@@ -6456,7 +6456,7 @@ static int hpsa_pci_init(struct ctlr_info *h)
14151 +@@ -6459,7 +6459,7 @@ static int hpsa_pci_init(struct ctlr_info *h)
14152 if (prod_index < 0)
14153 return -ENODEV;
14154 h->product_name = products[prod_index].product_name;
14155 @@ -49278,16 +52109,16 @@ index fda6cf1..7a6b5d8 100644
14156
14157 pci_disable_link_state(h->pdev, PCIE_LINK_STATE_L0S |
14158 PCIE_LINK_STATE_L1 | PCIE_LINK_STATE_CLKPM);
14159 -@@ -6735,7 +6735,7 @@ static void controller_lockup_detected(struct ctlr_info *h)
14160 - {
14161 +@@ -6781,7 +6781,7 @@ static void controller_lockup_detected(struct ctlr_info *h)
14162 unsigned long flags;
14163 + u32 lockup_detected;
14164
14165 - h->access.set_intr_mask(h, HPSA_INTR_OFF);
14166 + h->access->set_intr_mask(h, HPSA_INTR_OFF);
14167 spin_lock_irqsave(&h->lock, flags);
14168 - h->lockup_detected = readl(h->vaddr + SA5_SCRATCHPAD_OFFSET);
14169 - spin_unlock_irqrestore(&h->lock, flags);
14170 -@@ -6963,7 +6963,7 @@ reinit_after_soft_reset:
14171 + lockup_detected = readl(h->vaddr + SA5_SCRATCHPAD_OFFSET);
14172 + if (!lockup_detected) {
14173 +@@ -7022,7 +7022,7 @@ reinit_after_soft_reset:
14174 }
14175
14176 /* make sure the board interrupts are off */
14177 @@ -49296,7 +52127,7 @@ index fda6cf1..7a6b5d8 100644
14178
14179 if (hpsa_request_irq(h, do_hpsa_intr_msi, do_hpsa_intr_intx))
14180 goto clean2;
14181 -@@ -6998,7 +6998,7 @@ reinit_after_soft_reset:
14182 +@@ -7057,7 +7057,7 @@ reinit_after_soft_reset:
14183 * fake ones to scoop up any residual completions.
14184 */
14185 spin_lock_irqsave(&h->lock, flags);
14186 @@ -49305,7 +52136,7 @@ index fda6cf1..7a6b5d8 100644
14187 spin_unlock_irqrestore(&h->lock, flags);
14188 free_irqs(h);
14189 rc = hpsa_request_irq(h, hpsa_msix_discard_completions,
14190 -@@ -7017,9 +7017,9 @@ reinit_after_soft_reset:
14191 +@@ -7076,9 +7076,9 @@ reinit_after_soft_reset:
14192 dev_info(&h->pdev->dev, "Board READY.\n");
14193 dev_info(&h->pdev->dev,
14194 "Waiting for stale completions to drain.\n");
14195 @@ -49317,7 +52148,7 @@ index fda6cf1..7a6b5d8 100644
14196
14197 rc = controller_reset_failed(h->cfgtable);
14198 if (rc)
14199 -@@ -7045,7 +7045,7 @@ reinit_after_soft_reset:
14200 +@@ -7104,7 +7104,7 @@ reinit_after_soft_reset:
14201 h->drv_req_rescan = 0;
14202
14203 /* Turn the interrupts on so we can service requests */
14204 @@ -49326,7 +52157,7 @@ index fda6cf1..7a6b5d8 100644
14205
14206 hpsa_hba_inquiry(h);
14207 hpsa_register_scsi(h); /* hook ourselves into SCSI subsystem */
14208 -@@ -7114,7 +7114,7 @@ static void hpsa_shutdown(struct pci_dev *pdev)
14209 +@@ -7169,7 +7169,7 @@ static void hpsa_shutdown(struct pci_dev *pdev)
14210 * To write all data in the battery backed cache to disks
14211 */
14212 hpsa_flush_cache(h);
14213 @@ -49335,7 +52166,7 @@ index fda6cf1..7a6b5d8 100644
14214 hpsa_free_irqs_and_disable_msix(h);
14215 }
14216
14217 -@@ -7232,7 +7232,7 @@ static void hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support)
14218 +@@ -7287,7 +7287,7 @@ static void hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support)
14219 CFGTBL_Trans_enable_directed_msix |
14220 (trans_support & (CFGTBL_Trans_io_accel1 |
14221 CFGTBL_Trans_io_accel2));
14222 @@ -49344,7 +52175,16 @@ index fda6cf1..7a6b5d8 100644
14223
14224 /* This is a bit complicated. There are 8 registers on
14225 * the controller which we write to to tell it 8 different
14226 -@@ -7297,12 +7297,12 @@ static void hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support)
14227 +@@ -7329,7 +7329,7 @@ static void hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support)
14228 + * perform the superfluous readl() after each command submission.
14229 + */
14230 + if (trans_support & (CFGTBL_Trans_io_accel1 | CFGTBL_Trans_io_accel2))
14231 +- access = SA5_performant_access_no_read;
14232 ++ access = &SA5_performant_access_no_read;
14233 +
14234 + /* Controller spec: zero out this buffer. */
14235 + for (i = 0; i < h->nreply_queues; i++)
14236 +@@ -7359,12 +7359,12 @@ static void hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support)
14237 * enable outbound interrupt coalescing in accelerator mode;
14238 */
14239 if (trans_support & CFGTBL_Trans_io_accel1) {
14240 @@ -49360,10 +52200,10 @@ index fda6cf1..7a6b5d8 100644
14241 writel(4, &h->cfgtable->HostWrite.CoalIntCount);
14242 }
14243 diff --git a/drivers/scsi/hpsa.h b/drivers/scsi/hpsa.h
14244 -index 44235a2..962e91b 100644
14245 +index 24472ce..8782caf 100644
14246 --- a/drivers/scsi/hpsa.h
14247 +++ b/drivers/scsi/hpsa.h
14248 -@@ -128,7 +128,7 @@ struct ctlr_info {
14249 +@@ -127,7 +127,7 @@ struct ctlr_info {
14250 unsigned int msix_vector;
14251 unsigned int msi_vector;
14252 int intr_mode; /* either PERF_MODE_INT or SIMPLE_MODE_INT */
14253 @@ -49372,7 +52212,7 @@ index 44235a2..962e91b 100644
14254 char hba_mode_enabled;
14255
14256 /* queue and queue Info */
14257 -@@ -541,35 +541,35 @@ static unsigned long SA5_ioaccel_mode1_completed(struct ctlr_info *h, u8 q)
14258 +@@ -536,43 +536,43 @@ static unsigned long SA5_ioaccel_mode1_completed(struct ctlr_info *h, u8 q)
14259 }
14260
14261 static struct access_method SA5_access = {
14262 @@ -49427,6 +52267,19 @@ index 44235a2..962e91b 100644
14263 + .command_completed = SA5_performant_completed,
14264 };
14265
14266 + static struct access_method SA5_performant_access_no_read = {
14267 +- SA5_submit_command_no_read,
14268 +- SA5_performant_intr_mask,
14269 +- SA5_fifo_full,
14270 +- SA5_performant_intr_pending,
14271 +- SA5_performant_completed,
14272 ++ .submit_command = SA5_submit_command_no_read,
14273 ++ .set_intr_mask = SA5_performant_intr_mask,
14274 ++ .fifo_full = SA5_fifo_full,
14275 ++ .intr_pending = SA5_performant_intr_pending,
14276 ++ .command_completed = SA5_performant_completed,
14277 + };
14278 +
14279 struct board_type {
14280 diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c
14281 index 1b3a094..068e683 100644
14282 @@ -49587,7 +52440,7 @@ index 766098a..1c6c971 100644
14283 .qc_issue = sas_ata_qc_issue,
14284 .qc_fill_rtf = sas_ata_qc_fill_rtf,
14285 diff --git a/drivers/scsi/lpfc/lpfc.h b/drivers/scsi/lpfc/lpfc.h
14286 -index 94a3caf..a118dec 100644
14287 +index 434e903..5a4a79b 100644
14288 --- a/drivers/scsi/lpfc/lpfc.h
14289 +++ b/drivers/scsi/lpfc/lpfc.h
14290 @@ -430,7 +430,7 @@ struct lpfc_vport {
14291 @@ -49599,7 +52452,7 @@ index 94a3caf..a118dec 100644
14292 #endif
14293 uint8_t stat_data_enabled;
14294 uint8_t stat_data_blocked;
14295 -@@ -879,8 +879,8 @@ struct lpfc_hba {
14296 +@@ -880,8 +880,8 @@ struct lpfc_hba {
14297 struct timer_list fabric_block_timer;
14298 unsigned long bit_flags;
14299 #define FABRIC_COMANDS_BLOCKED 0
14300 @@ -49610,7 +52463,7 @@ index 94a3caf..a118dec 100644
14301 unsigned long last_rsrc_error_time;
14302 unsigned long last_ramp_down_time;
14303 #ifdef CONFIG_SCSI_LPFC_DEBUG_FS
14304 -@@ -915,7 +915,7 @@ struct lpfc_hba {
14305 +@@ -916,7 +916,7 @@ struct lpfc_hba {
14306
14307 struct dentry *debug_slow_ring_trc;
14308 struct lpfc_debugfs_trc *slow_ring_trc;
14309 @@ -49620,7 +52473,7 @@ index 94a3caf..a118dec 100644
14310 struct dentry *idiag_root;
14311 struct dentry *idiag_pci_cfg;
14312 diff --git a/drivers/scsi/lpfc/lpfc_debugfs.c b/drivers/scsi/lpfc/lpfc_debugfs.c
14313 -index 828c08e..e3378e0 100644
14314 +index b0aedce..89c6ca6 100644
14315 --- a/drivers/scsi/lpfc/lpfc_debugfs.c
14316 +++ b/drivers/scsi/lpfc/lpfc_debugfs.c
14317 @@ -106,7 +106,7 @@ MODULE_PARM_DESC(lpfc_debugfs_mask_disc_trc,
14318 @@ -49703,10 +52556,10 @@ index 828c08e..e3378e0 100644
14319 snprintf(name, sizeof(name), "discovery_trace");
14320 vport->debug_disc_trc =
14321 diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
14322 -index 635eeb3..038aef6 100644
14323 +index 06f9a5b..82812092 100644
14324 --- a/drivers/scsi/lpfc/lpfc_init.c
14325 +++ b/drivers/scsi/lpfc/lpfc_init.c
14326 -@@ -11194,8 +11194,10 @@ lpfc_init(void)
14327 +@@ -11296,8 +11296,10 @@ lpfc_init(void)
14328 "misc_register returned with status %d", error);
14329
14330 if (lpfc_enable_npiv) {
14331 @@ -49720,7 +52573,7 @@ index 635eeb3..038aef6 100644
14332 lpfc_transport_template =
14333 fc_attach_transport(&lpfc_transport_functions);
14334 diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c
14335 -index 462453e..c0023a6 100644
14336 +index 2df11da..e660a2c 100644
14337 --- a/drivers/scsi/lpfc/lpfc_scsi.c
14338 +++ b/drivers/scsi/lpfc/lpfc_scsi.c
14339 @@ -382,7 +382,7 @@ lpfc_rampdown_queue_depth(struct lpfc_hba *phba)
14340 @@ -49755,7 +52608,7 @@ index 462453e..c0023a6 100644
14341
14342 /**
14343 diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
14344 -index 6fd7d40..b444223 100644
14345 +index 5055f92..376cd98 100644
14346 --- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c
14347 +++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
14348 @@ -1557,7 +1557,7 @@ _scsih_get_resync(struct device *dev)
14349 @@ -49776,7 +52629,7 @@ index 6fd7d40..b444223 100644
14350 unsigned long flags;
14351 Mpi2RaidVolPage0_t vol_pg0;
14352 Mpi2ConfigReply_t mpi_reply;
14353 -@@ -6637,7 +6637,7 @@ _scsih_sas_ir_operation_status_event(struct MPT2SAS_ADAPTER *ioc,
14354 +@@ -6631,7 +6631,7 @@ _scsih_sas_ir_operation_status_event(struct MPT2SAS_ADAPTER *ioc,
14355 struct fw_event_work *fw_event)
14356 {
14357 Mpi2EventDataIrOperationStatus_t *event_data = fw_event->event_data;
14358 @@ -49785,7 +52638,7 @@ index 6fd7d40..b444223 100644
14359 unsigned long flags;
14360 u16 handle;
14361
14362 -@@ -7108,7 +7108,7 @@ _scsih_scan_for_devices_after_reset(struct MPT2SAS_ADAPTER *ioc)
14363 +@@ -7102,7 +7102,7 @@ _scsih_scan_for_devices_after_reset(struct MPT2SAS_ADAPTER *ioc)
14364 u64 sas_address;
14365 struct _sas_device *sas_device;
14366 struct _sas_node *expander_device;
14367 @@ -49902,7 +52755,7 @@ index e1d150f..6c6df44 100644
14368 /* To indicate add/delete/modify during CCN */
14369 u8 change_detected;
14370 diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c
14371 -index 07befcf..c0bff13 100644
14372 +index 16fe519..3b1ec82 100644
14373 --- a/drivers/scsi/qla2xxx/qla_attr.c
14374 +++ b/drivers/scsi/qla2xxx/qla_attr.c
14375 @@ -2188,7 +2188,7 @@ qla24xx_vport_disable(struct fc_vport *fc_vport, bool disable)
14376 @@ -49924,10 +52777,10 @@ index 07befcf..c0bff13 100644
14377 .show_host_node_name = 1,
14378 .show_host_port_name = 1,
14379 diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h
14380 -index e665e81..16e84e6 100644
14381 +index d48dea8..0845f78 100644
14382 --- a/drivers/scsi/qla2xxx/qla_gbl.h
14383 +++ b/drivers/scsi/qla2xxx/qla_gbl.h
14384 -@@ -557,8 +557,8 @@ extern void qla2x00_get_sym_node_name(scsi_qla_host_t *, uint8_t *);
14385 +@@ -569,8 +569,8 @@ extern void qla2x00_get_sym_node_name(scsi_qla_host_t *, uint8_t *);
14386 struct device_attribute;
14387 extern struct device_attribute *qla2x00_host_attrs[];
14388 struct fc_function_template;
14389 @@ -49939,10 +52792,10 @@ index e665e81..16e84e6 100644
14390 extern void qla2x00_free_sysfs_attr(scsi_qla_host_t *, bool);
14391 extern void qla2x00_init_host_attr(scsi_qla_host_t *);
14392 diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
14393 -index 19e99cc..b3c0b7b 100644
14394 +index d96bfb5..d7afe90 100644
14395 --- a/drivers/scsi/qla2xxx/qla_os.c
14396 +++ b/drivers/scsi/qla2xxx/qla_os.c
14397 -@@ -1493,8 +1493,10 @@ qla2x00_config_dma_addressing(struct qla_hw_data *ha)
14398 +@@ -1490,8 +1490,10 @@ qla2x00_config_dma_addressing(struct qla_hw_data *ha)
14399 !pci_set_consistent_dma_mask(ha->pdev, DMA_BIT_MASK(64))) {
14400 /* Ok, a 64bit DMA mask is applicable. */
14401 ha->flags.enable_64bit_addressing = 1;
14402 @@ -49956,7 +52809,7 @@ index 19e99cc..b3c0b7b 100644
14403 }
14404 }
14405 diff --git a/drivers/scsi/qla4xxx/ql4_def.h b/drivers/scsi/qla4xxx/ql4_def.h
14406 -index 73a5022..4e0797c 100644
14407 +index 8f6d0fb..1b21097 100644
14408 --- a/drivers/scsi/qla4xxx/ql4_def.h
14409 +++ b/drivers/scsi/qla4xxx/ql4_def.h
14410 @@ -305,7 +305,7 @@ struct ddb_entry {
14411 @@ -49969,10 +52822,10 @@ index 73a5022..4e0797c 100644
14412 uint32_t default_time2wait; /* Default Min time between
14413 * relogins (+aens) */
14414 diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
14415 -index 459b9f7..2930a68 100644
14416 +index 3202063..f9f0ff6 100644
14417 --- a/drivers/scsi/qla4xxx/ql4_os.c
14418 +++ b/drivers/scsi/qla4xxx/ql4_os.c
14419 -@@ -4499,12 +4499,12 @@ static void qla4xxx_check_relogin_flash_ddb(struct iscsi_cls_session *cls_sess)
14420 +@@ -4494,12 +4494,12 @@ static void qla4xxx_check_relogin_flash_ddb(struct iscsi_cls_session *cls_sess)
14421 */
14422 if (!iscsi_is_session_online(cls_sess)) {
14423 /* Reset retry relogin timer */
14424 @@ -49987,7 +52840,7 @@ index 459b9f7..2930a68 100644
14425 ddb_entry->default_time2wait + 4));
14426 set_bit(DPC_RELOGIN_DEVICE, &ha->dpc_flags);
14427 atomic_set(&ddb_entry->retry_relogin_timer,
14428 -@@ -6609,7 +6609,7 @@ static void qla4xxx_setup_flash_ddb_entry(struct scsi_qla_host *ha,
14429 +@@ -6607,7 +6607,7 @@ static void qla4xxx_setup_flash_ddb_entry(struct scsi_qla_host *ha,
14430
14431 atomic_set(&ddb_entry->retry_relogin_timer, INVALID_ENTRY);
14432 atomic_set(&ddb_entry->relogin_timer, 0);
14433 @@ -50010,10 +52863,10 @@ index 88d46fe..7351be5 100644
14434 /* check if the device is still usable */
14435 if (unlikely(cmd->device->sdev_state == SDEV_DEL)) {
14436 diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
14437 -index d99ab3b..c4ccdef 100644
14438 +index 3f50dfc..86af487 100644
14439 --- a/drivers/scsi/scsi_lib.c
14440 +++ b/drivers/scsi/scsi_lib.c
14441 -@@ -1472,7 +1472,7 @@ static void scsi_kill_request(struct request *req, struct request_queue *q)
14442 +@@ -1423,7 +1423,7 @@ static void scsi_kill_request(struct request *req, struct request_queue *q)
14443 shost = sdev->host;
14444 scsi_init_cmd_errh(cmd);
14445 cmd->result = DID_NO_CONNECT << 16;
14446 @@ -50022,7 +52875,7 @@ index d99ab3b..c4ccdef 100644
14447
14448 /*
14449 * SCSI request completion path will do scsi_device_unbusy(),
14450 -@@ -1498,9 +1498,9 @@ static void scsi_softirq_done(struct request *rq)
14451 +@@ -1449,9 +1449,9 @@ static void scsi_softirq_done(struct request *rq)
14452
14453 INIT_LIST_HEAD(&cmd->eh_entry);
14454
14455 @@ -50061,7 +52914,7 @@ index e51add0..1e06a96 100644
14456 /*
14457 * TODO: need to fixup sg_tablesize, max_segment_size,
14458 diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c
14459 -index f80908f..22aba76 100644
14460 +index 521f583..6b15966 100644
14461 --- a/drivers/scsi/scsi_transport_fc.c
14462 +++ b/drivers/scsi/scsi_transport_fc.c
14463 @@ -498,7 +498,7 @@ static DECLARE_TRANSPORT_CLASS(fc_vport_class,
14464 @@ -50163,10 +53016,10 @@ index 13e8983..d306a68 100644
14465
14466 transport_setup_device(&rport->dev);
14467 diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
14468 -index bffbd4b..cb1b68a 100644
14469 +index 6825eda..be470c4 100644
14470 --- a/drivers/scsi/sd.c
14471 +++ b/drivers/scsi/sd.c
14472 -@@ -2971,7 +2971,7 @@ static int sd_probe(struct device *dev)
14473 +@@ -2954,7 +2954,7 @@ static int sd_probe(struct device *dev)
14474 sdkp->disk = gd;
14475 sdkp->index = index;
14476 atomic_set(&sdkp->openers, 0);
14477 @@ -50176,7 +53029,7 @@ index bffbd4b..cb1b68a 100644
14478 if (!sdp->request_queue->rq_timeout) {
14479 if (sdp->type != TYPE_MOD)
14480 diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
14481 -index df5e961..df6b97f 100644
14482 +index 53268aab..17c2764 100644
14483 --- a/drivers/scsi/sg.c
14484 +++ b/drivers/scsi/sg.c
14485 @@ -1102,7 +1102,7 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
14486 @@ -50189,7 +53042,7 @@ index df5e961..df6b97f 100644
14487 return blk_trace_startstop(sdp->device->request_queue, 1);
14488 case BLKTRACESTOP:
14489 diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
14490 -index 939edf4..3f50423 100644
14491 +index d4f9670..d37b662 100644
14492 --- a/drivers/spi/spi.c
14493 +++ b/drivers/spi/spi.c
14494 @@ -2204,7 +2204,7 @@ int spi_bus_unlock(struct spi_master *master)
14495 @@ -50202,7 +53055,7 @@ index 939edf4..3f50423 100644
14496 static u8 *buf;
14497
14498 diff --git a/drivers/staging/android/timed_output.c b/drivers/staging/android/timed_output.c
14499 -index 2c61783..4d49e4e 100644
14500 +index c341ac1..bf9799f 100644
14501 --- a/drivers/staging/android/timed_output.c
14502 +++ b/drivers/staging/android/timed_output.c
14503 @@ -25,7 +25,7 @@
14504 @@ -50246,10 +53099,10 @@ index fe47cd3..19a1bd1 100644
14505 static struct tty_driver *gdm_driver[TTY_MAX_COUNT];
14506 static struct gdm *gdm_table[TTY_MAX_COUNT][GDM_TTY_MINOR];
14507 diff --git a/drivers/staging/imx-drm/imx-drm-core.c b/drivers/staging/imx-drm/imx-drm-core.c
14508 -index c270c9a..94ddf82 100644
14509 +index def8280..e3fd96a 100644
14510 --- a/drivers/staging/imx-drm/imx-drm-core.c
14511 +++ b/drivers/staging/imx-drm/imx-drm-core.c
14512 -@@ -362,7 +362,7 @@ int imx_drm_add_crtc(struct drm_device *drm, struct drm_crtc *crtc,
14513 +@@ -355,7 +355,7 @@ int imx_drm_add_crtc(struct drm_device *drm, struct drm_crtc *crtc,
14514 if (imxdrm->pipes >= MAX_CRTC)
14515 return -EINVAL;
14516
14517 @@ -50337,7 +53190,7 @@ index 750cac4..e4d751f 100644
14518 srpc_service_t ping_test_service;
14519 void ping_init_test_service(void)
14520 diff --git a/drivers/staging/lustre/lustre/include/lustre_dlm.h b/drivers/staging/lustre/lustre/include/lustre_dlm.h
14521 -index 3e25f00..0d59cf5 100644
14522 +index 0c6b784..c64235c 100644
14523 --- a/drivers/staging/lustre/lustre/include/lustre_dlm.h
14524 +++ b/drivers/staging/lustre/lustre/include/lustre_dlm.h
14525 @@ -1141,7 +1141,7 @@ struct ldlm_callback_suite {
14526 @@ -50350,10 +53203,10 @@ index 3e25f00..0d59cf5 100644
14527 /* ldlm_lockd.c */
14528 int ldlm_del_waiting_lock(struct ldlm_lock *lock);
14529 diff --git a/drivers/staging/lustre/lustre/include/obd.h b/drivers/staging/lustre/lustre/include/obd.h
14530 -index 72cf3fe..4beac19 100644
14531 +index d5c4613..a341678 100644
14532 --- a/drivers/staging/lustre/lustre/include/obd.h
14533 +++ b/drivers/staging/lustre/lustre/include/obd.h
14534 -@@ -1427,7 +1427,7 @@ struct md_ops {
14535 +@@ -1439,7 +1439,7 @@ struct md_ops {
14536 * lprocfs_alloc_md_stats() in obdclass/lprocfs_status.c. Also, add a
14537 * wrapper function in include/linux/obd_class.h.
14538 */
14539 @@ -50407,10 +53260,10 @@ index e947b91..f408990 100644
14540 dummy.data = &backoff;
14541 dummy.proc_handler = &proc_dointvec;
14542 diff --git a/drivers/staging/lustre/lustre/libcfs/module.c b/drivers/staging/lustre/lustre/libcfs/module.c
14543 -index 24ae26d..9d09cab 100644
14544 +index b16ee08..a3db5c6 100644
14545 --- a/drivers/staging/lustre/lustre/libcfs/module.c
14546 +++ b/drivers/staging/lustre/lustre/libcfs/module.c
14547 -@@ -313,11 +313,11 @@ out:
14548 +@@ -314,11 +314,11 @@ out:
14549
14550
14551 struct cfs_psdev_ops libcfs_psdev_ops = {
14552 @@ -50428,7 +53281,7 @@ index 24ae26d..9d09cab 100644
14553
14554 extern int insert_proc(void);
14555 diff --git a/drivers/staging/lustre/lustre/llite/dir.c b/drivers/staging/lustre/lustre/llite/dir.c
14556 -index 7fbc18e..f982071 100644
14557 +index ae6f61a..03c3d5d 100644
14558 --- a/drivers/staging/lustre/lustre/llite/dir.c
14559 +++ b/drivers/staging/lustre/lustre/llite/dir.c
14560 @@ -660,7 +660,7 @@ int ll_dir_setdirstripe(struct inode *dir, struct lmv_user_md *lump,
14561 @@ -50525,7 +53378,7 @@ index a0f4868..139f1fb 100644
14562 dev_kfree_skb_irq(skb);
14563 }
14564 diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/ethernet.c
14565 -index ff7214a..6dd90f0 100644
14566 +index da9dd6b..8e3e0f5 100644
14567 --- a/drivers/staging/octeon/ethernet.c
14568 +++ b/drivers/staging/octeon/ethernet.c
14569 @@ -247,11 +247,11 @@ static struct net_device_stats *cvm_oct_common_get_stats(struct net_device *dev)
14570 @@ -50545,10 +53398,10 @@ index ff7214a..6dd90f0 100644
14571 }
14572
14573 diff --git a/drivers/staging/rtl8188eu/include/hal_intf.h b/drivers/staging/rtl8188eu/include/hal_intf.h
14574 -index c274b34..f84de76 100644
14575 +index c59fccd..79f8fc2 100644
14576 --- a/drivers/staging/rtl8188eu/include/hal_intf.h
14577 +++ b/drivers/staging/rtl8188eu/include/hal_intf.h
14578 -@@ -271,7 +271,7 @@ struct hal_ops {
14579 +@@ -267,7 +267,7 @@ struct hal_ops {
14580 s32 (*c2h_handler)(struct adapter *padapter,
14581 struct c2h_evt_hdr *c2h_evt);
14582 c2h_id_filter c2h_id_filter_ccx;
14583 @@ -50583,45 +53436,6 @@ index dc23395..cf7e9b1 100644
14584
14585 struct io_req {
14586 struct list_head list;
14587 -diff --git a/drivers/staging/rtl8723au/include/hal_intf.h b/drivers/staging/rtl8723au/include/hal_intf.h
14588 -index d183f4b..3f4903d 100644
14589 ---- a/drivers/staging/rtl8723au/include/hal_intf.h
14590 -+++ b/drivers/staging/rtl8723au/include/hal_intf.h
14591 -@@ -251,7 +251,7 @@ struct hal_ops {
14592 - void (*hal_reset_security_engine)(struct rtw_adapter *adapter);
14593 - s32 (*c2h_handler)(struct rtw_adapter *padapter, struct c2h_evt_hdr *c2h_evt);
14594 - c2h_id_filter c2h_id_filter_ccx;
14595 --};
14596 -+} __no_const;
14597 -
14598 - enum rt_eeprom_type {
14599 - EEPROM_93C46,
14600 -diff --git a/drivers/staging/rtl8723au/include/rtw_io.h b/drivers/staging/rtl8723au/include/rtw_io.h
14601 -index 8d39d800..3f21c0c 100644
14602 ---- a/drivers/staging/rtl8723au/include/rtw_io.h
14603 -+++ b/drivers/staging/rtl8723au/include/rtw_io.h
14604 -@@ -130,7 +130,7 @@ struct _io_ops
14605 - void (*_read_port_cancel)(struct intf_hdl *pintfhdl);
14606 - void (*_write_port_cancel)(struct intf_hdl *pintfhdl);
14607 -
14608 --};
14609 -+} __no_const;
14610 -
14611 - struct io_req {
14612 - struct list_head list;
14613 -diff --git a/drivers/staging/sbe-2t3e3/netdev.c b/drivers/staging/sbe-2t3e3/netdev.c
14614 -index fe6c951..72935ba 100644
14615 ---- a/drivers/staging/sbe-2t3e3/netdev.c
14616 -+++ b/drivers/staging/sbe-2t3e3/netdev.c
14617 -@@ -51,7 +51,7 @@ static int t3e3_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
14618 - t3e3_if_config(sc, cmd_2t3e3, (char *)&param, &resp, &rlen);
14619 -
14620 - if (rlen)
14621 -- if (copy_to_user(data, &resp, rlen))
14622 -+ if (rlen > sizeof resp || copy_to_user(data, &resp, rlen))
14623 - return -EFAULT;
14624 -
14625 - return 0;
14626 diff --git a/drivers/staging/usbip/vhci.h b/drivers/staging/usbip/vhci.h
14627 index a863a98..d272795 100644
14628 --- a/drivers/staging/usbip/vhci.h
14629 @@ -50636,7 +53450,7 @@ index a863a98..d272795 100644
14630 /*
14631 * NOTE:
14632 diff --git a/drivers/staging/usbip/vhci_hcd.c b/drivers/staging/usbip/vhci_hcd.c
14633 -index 70e1755..de41855 100644
14634 +index 0007d30..c06a693 100644
14635 --- a/drivers/staging/usbip/vhci_hcd.c
14636 +++ b/drivers/staging/usbip/vhci_hcd.c
14637 @@ -439,7 +439,7 @@ static void vhci_tx_urb(struct urb *urb)
14638 @@ -50648,7 +53462,7 @@ index 70e1755..de41855 100644
14639 if (priv->seqnum == 0xffff)
14640 dev_info(&urb->dev->dev, "seqnum max\n");
14641
14642 -@@ -685,7 +685,7 @@ static int vhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
14643 +@@ -686,7 +686,7 @@ static int vhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
14644 return -ENOMEM;
14645 }
14646
14647 @@ -50657,7 +53471,7 @@ index 70e1755..de41855 100644
14648 if (unlink->seqnum == 0xffff)
14649 pr_info("seqnum max\n");
14650
14651 -@@ -889,7 +889,7 @@ static int vhci_start(struct usb_hcd *hcd)
14652 +@@ -891,7 +891,7 @@ static int vhci_start(struct usb_hcd *hcd)
14653 vdev->rhport = rhport;
14654 }
14655
14656 @@ -50680,10 +53494,10 @@ index d07fcb5..358e1e1 100644
14657 return;
14658 }
14659 diff --git a/drivers/staging/vt6655/hostap.c b/drivers/staging/vt6655/hostap.c
14660 -index 6eecd53..29317c6 100644
14661 +index 317c2a8..ffeb4ef 100644
14662 --- a/drivers/staging/vt6655/hostap.c
14663 +++ b/drivers/staging/vt6655/hostap.c
14664 -@@ -69,14 +69,13 @@ static int msglevel = MSG_LEVEL_INFO;
14665 +@@ -68,14 +68,13 @@ static int msglevel = MSG_LEVEL_INFO;
14666 *
14667 */
14668
14669 @@ -50700,7 +53514,7 @@ index 6eecd53..29317c6 100644
14670
14671 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "%s: Enabling hostapd mode\n", dev->name);
14672
14673 -@@ -88,6 +87,8 @@ static int hostap_enable_hostapd(PSDevice pDevice, int rtnl_locked)
14674 +@@ -87,6 +86,8 @@ static int hostap_enable_hostapd(PSDevice pDevice, int rtnl_locked)
14675 *apdev_priv = *pDevice;
14676 eth_hw_addr_inherit(pDevice->apdev, dev);
14677
14678 @@ -50709,36 +53523,6 @@ index 6eecd53..29317c6 100644
14679 pDevice->apdev->netdev_ops = &apdev_netdev_ops;
14680
14681 pDevice->apdev->type = ARPHRD_IEEE80211;
14682 -diff --git a/drivers/staging/vt6656/hostap.c b/drivers/staging/vt6656/hostap.c
14683 -index 67ba48b..24e602f 100644
14684 ---- a/drivers/staging/vt6656/hostap.c
14685 -+++ b/drivers/staging/vt6656/hostap.c
14686 -@@ -60,14 +60,13 @@ static int msglevel =MSG_LEVEL_INFO;
14687 - *
14688 - */
14689 -
14690 -+static net_device_ops_no_const apdev_netdev_ops;
14691 -+
14692 - static int hostap_enable_hostapd(struct vnt_private *pDevice, int rtnl_locked)
14693 - {
14694 - struct vnt_private *apdev_priv;
14695 - struct net_device *dev = pDevice->dev;
14696 - int ret;
14697 -- const struct net_device_ops apdev_netdev_ops = {
14698 -- .ndo_start_xmit = pDevice->tx_80211,
14699 -- };
14700 -
14701 - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "%s: Enabling hostapd mode\n", dev->name);
14702 -
14703 -@@ -79,6 +78,8 @@ static int hostap_enable_hostapd(struct vnt_private *pDevice, int rtnl_locked)
14704 - *apdev_priv = *pDevice;
14705 - memcpy(pDevice->apdev->dev_addr, dev->dev_addr, ETH_ALEN);
14706 -
14707 -+ /* only half broken now */
14708 -+ apdev_netdev_ops.ndo_start_xmit = pDevice->tx_80211;
14709 - pDevice->apdev->netdev_ops = &apdev_netdev_ops;
14710 -
14711 - pDevice->apdev->type = ARPHRD_IEEE80211;
14712 diff --git a/drivers/target/sbp/sbp_target.c b/drivers/target/sbp/sbp_target.c
14713 index e7e9372..161f530 100644
14714 --- a/drivers/target/sbp/sbp_target.c
14715 @@ -50762,7 +53546,7 @@ index e7e9372..161f530 100644
14716 login->tgt_agt = sbp_target_agent_register(login);
14717 if (IS_ERR(login->tgt_agt)) {
14718 diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c
14719 -index 6ea95d2..88607b4 100644
14720 +index 98da901..bb443e8 100644
14721 --- a/drivers/target/target_core_device.c
14722 +++ b/drivers/target/target_core_device.c
14723 @@ -1525,7 +1525,7 @@ struct se_device *target_alloc_device(struct se_hba *hba, const char *name)
14724 @@ -50775,7 +53559,7 @@ index 6ea95d2..88607b4 100644
14725 spin_lock_init(&dev->t10_wwn.t10_vpd_lock);
14726 INIT_LIST_HEAD(&dev->t10_pr.registration_list);
14727 diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
14728 -index 14772e9..42d9f63 100644
14729 +index 7fa62fc..abdd041 100644
14730 --- a/drivers/target/target_core_transport.c
14731 +++ b/drivers/target/target_core_transport.c
14732 @@ -1165,7 +1165,7 @@ transport_check_alloc_task_attr(struct se_cmd *cmd)
14733 @@ -50784,11 +53568,11 @@ index 14772e9..42d9f63 100644
14734 */
14735 - cmd->se_ordered_id = atomic_inc_return(&dev->dev_ordered_id);
14736 + cmd->se_ordered_id = atomic_inc_return_unchecked(&dev->dev_ordered_id);
14737 - smp_mb__after_atomic_inc();
14738 + smp_mb__after_atomic();
14739 pr_debug("Allocated se_ordered_id: %u for Task Attr: 0x%02x on %s\n",
14740 cmd->se_ordered_id, cmd->sam_task_attr,
14741 diff --git a/drivers/thermal/of-thermal.c b/drivers/thermal/of-thermal.c
14742 -index 04b1be7..5eff86d 100644
14743 +index 4b2b999..cad9fa5 100644
14744 --- a/drivers/thermal/of-thermal.c
14745 +++ b/drivers/thermal/of-thermal.c
14746 @@ -30,6 +30,7 @@
14747 @@ -50852,7 +53636,7 @@ index a57bb5a..1f727d33 100644
14748 struct tty_struct *tty;
14749 struct tty_ldisc *ld;
14750 diff --git a/drivers/tty/hvc/hvc_console.c b/drivers/tty/hvc/hvc_console.c
14751 -index 0ff7fda..dbc7d52 100644
14752 +index 4fcec1d..5a036f7 100644
14753 --- a/drivers/tty/hvc/hvc_console.c
14754 +++ b/drivers/tty/hvc/hvc_console.c
14755 @@ -342,7 +342,7 @@ static int hvc_open(struct tty_struct *tty, struct file * filp)
14756 @@ -51278,7 +54062,7 @@ index 2ebe47b..3205833 100644
14757
14758 dlci->modem_rx = 0;
14759 diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c
14760 -index 0391f17..31fa586 100644
14761 +index f44f1ba..a8d5915 100644
14762 --- a/drivers/tty/n_tty.c
14763 +++ b/drivers/tty/n_tty.c
14764 @@ -115,7 +115,7 @@ struct n_tty_data {
14765 @@ -51377,6 +54161,21 @@ index 1274499..f541382 100644
14766 &soft->is_intr_type[intr_type].is_num_intrs);
14767
14768 this_mir = this_ir = pending_intrs(soft, intr_type);
14769 +diff --git a/drivers/tty/serial/kgdb_nmi.c b/drivers/tty/serial/kgdb_nmi.c
14770 +index cfadf29..8cf4595 100644
14771 +--- a/drivers/tty/serial/kgdb_nmi.c
14772 ++++ b/drivers/tty/serial/kgdb_nmi.c
14773 +@@ -51,7 +51,9 @@ static int kgdb_nmi_console_setup(struct console *co, char *options)
14774 + * I/O utilities that messages sent to the console will automatically
14775 + * be displayed on the dbg_io.
14776 + */
14777 +- dbg_io_ops->is_console = true;
14778 ++ pax_open_kernel();
14779 ++ *(int *)&dbg_io_ops->is_console = true;
14780 ++ pax_close_kernel();
14781 +
14782 + return 0;
14783 + }
14784 diff --git a/drivers/tty/serial/kgdboc.c b/drivers/tty/serial/kgdboc.c
14785 index a260cde..6b2b5ce 100644
14786 --- a/drivers/tty/serial/kgdboc.c
14787 @@ -51484,10 +54283,10 @@ index a260cde..6b2b5ce 100644
14788 /* This is only available if kgdboc is a built in for early debugging */
14789 static int __init kgdboc_early_init(char *opt)
14790 diff --git a/drivers/tty/serial/msm_serial.c b/drivers/tty/serial/msm_serial.c
14791 -index 7307dc4..ce4fe90 100644
14792 +index 72000a6..a190bc4 100644
14793 --- a/drivers/tty/serial/msm_serial.c
14794 +++ b/drivers/tty/serial/msm_serial.c
14795 -@@ -1026,7 +1026,7 @@ static struct uart_driver msm_uart_driver = {
14796 +@@ -981,7 +981,7 @@ static struct uart_driver msm_uart_driver = {
14797 .cons = MSM_CONSOLE,
14798 };
14799
14800 @@ -51496,7 +54295,7 @@ index 7307dc4..ce4fe90 100644
14801
14802 static const struct of_device_id msm_uartdm_table[] = {
14803 { .compatible = "qcom,msm-uartdm-v1.1", .data = (void *)UARTDM_1P1 },
14804 -@@ -1045,7 +1045,7 @@ static int __init msm_serial_probe(struct platform_device *pdev)
14805 +@@ -1000,7 +1000,7 @@ static int msm_serial_probe(struct platform_device *pdev)
14806 int irq;
14807
14808 if (pdev->id == -1)
14809 @@ -51506,10 +54305,10 @@ index 7307dc4..ce4fe90 100644
14810 if (unlikely(pdev->id < 0 || pdev->id >= UART_NR))
14811 return -ENXIO;
14812 diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c
14813 -index 1f5505e..a1a767d 100644
14814 +index c1d3ebd..f618a93 100644
14815 --- a/drivers/tty/serial/samsung.c
14816 +++ b/drivers/tty/serial/samsung.c
14817 -@@ -463,11 +463,16 @@ static void s3c24xx_serial_shutdown(struct uart_port *port)
14818 +@@ -486,11 +486,16 @@ static void s3c24xx_serial_shutdown(struct uart_port *port)
14819 }
14820 }
14821
14822 @@ -51523,10 +54322,10 @@ index 1f5505e..a1a767d 100644
14823 + if (s3c24xx_serial_has_interrupt_mask(port))
14824 + return s3c64xx_serial_startup(port);
14825 +
14826 - dbg("s3c24xx_serial_startup: port=%p (%08lx,%p)\n",
14827 - port->mapbase, port->membase);
14828 + dbg("s3c24xx_serial_startup: port=%p (%08llx,%p)\n",
14829 + port, (unsigned long long)port->mapbase, port->membase);
14830
14831 -@@ -1141,10 +1146,6 @@ static int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport,
14832 +@@ -1164,10 +1169,6 @@ static int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport,
14833 /* setup info for port */
14834 port->dev = &platdev->dev;
14835
14836 @@ -51538,10 +54337,10 @@ index 1f5505e..a1a767d 100644
14837
14838 if (cfg->uart_flags & UPF_CONS_FLOW) {
14839 diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
14840 -index b68550d..a62d7f8 100644
14841 +index fbf6c5a..3939d92 100644
14842 --- a/drivers/tty/serial/serial_core.c
14843 +++ b/drivers/tty/serial/serial_core.c
14844 -@@ -1329,7 +1329,7 @@ static void uart_close(struct tty_struct *tty, struct file *filp)
14845 +@@ -1333,7 +1333,7 @@ static void uart_close(struct tty_struct *tty, struct file *filp)
14846
14847 pr_debug("uart_close(%d) called\n", uport ? uport->line : -1);
14848
14849 @@ -51550,7 +54349,7 @@ index b68550d..a62d7f8 100644
14850 return;
14851
14852 /*
14853 -@@ -1456,7 +1456,7 @@ static void uart_hangup(struct tty_struct *tty)
14854 +@@ -1460,7 +1460,7 @@ static void uart_hangup(struct tty_struct *tty)
14855 uart_flush_buffer(tty);
14856 uart_shutdown(tty, state);
14857 spin_lock_irqsave(&port->lock, flags);
14858 @@ -51559,7 +54358,7 @@ index b68550d..a62d7f8 100644
14859 clear_bit(ASYNCB_NORMAL_ACTIVE, &port->flags);
14860 spin_unlock_irqrestore(&port->lock, flags);
14861 tty_port_tty_set(port, NULL);
14862 -@@ -1554,7 +1554,7 @@ static int uart_open(struct tty_struct *tty, struct file *filp)
14863 +@@ -1558,7 +1558,7 @@ static int uart_open(struct tty_struct *tty, struct file *filp)
14864 goto end;
14865 }
14866
14867 @@ -51568,7 +54367,7 @@ index b68550d..a62d7f8 100644
14868 if (!state->uart_port || state->uart_port->flags & UPF_DEAD) {
14869 retval = -ENXIO;
14870 goto err_dec_count;
14871 -@@ -1594,7 +1594,7 @@ static int uart_open(struct tty_struct *tty, struct file *filp)
14872 +@@ -1598,7 +1598,7 @@ static int uart_open(struct tty_struct *tty, struct file *filp)
14873 end:
14874 return retval;
14875 err_dec_count:
14876 @@ -51967,10 +54766,10 @@ index 53ba853..3c30f6d 100644
14877 if (!retval)
14878 port->flags |= ASYNC_NORMAL_ACTIVE;
14879 diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c
14880 -index ce396ec..04a37be 100644
14881 +index 454b658..57b1430 100644
14882 --- a/drivers/tty/sysrq.c
14883 +++ b/drivers/tty/sysrq.c
14884 -@@ -1075,7 +1075,7 @@ EXPORT_SYMBOL(unregister_sysrq_key);
14885 +@@ -1084,7 +1084,7 @@ EXPORT_SYMBOL(unregister_sysrq_key);
14886 static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf,
14887 size_t count, loff_t *ppos)
14888 {
14889 @@ -52418,10 +55217,10 @@ index 257876e..4304364 100644
14890 dev->rawdescriptors[i] + (*ppos - pos),
14891 min(len, alloclen))) {
14892 diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
14893 -index 9c4e292..b89877f 100644
14894 +index bec31e2..b8091cd 100644
14895 --- a/drivers/usb/core/hcd.c
14896 +++ b/drivers/usb/core/hcd.c
14897 -@@ -1550,7 +1550,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags)
14898 +@@ -1554,7 +1554,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags)
14899 */
14900 usb_get_urb(urb);
14901 atomic_inc(&urb->use_count);
14902 @@ -52430,7 +55229,7 @@ index 9c4e292..b89877f 100644
14903 usbmon_urb_submit(&hcd->self, urb);
14904
14905 /* NOTE requirements on root-hub callers (usbfs and the hub
14906 -@@ -1577,7 +1577,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags)
14907 +@@ -1581,7 +1581,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags)
14908 urb->hcpriv = NULL;
14909 INIT_LIST_HEAD(&urb->urb_list);
14910 atomic_dec(&urb->use_count);
14911 @@ -52440,7 +55239,7 @@ index 9c4e292..b89877f 100644
14912 wake_up(&usb_kill_urb_queue);
14913 usb_put_urb(urb);
14914 diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
14915 -index 00c4b96..b4498c8 100644
14916 +index 0e950ad..a2be5b0 100644
14917 --- a/drivers/usb/core/hub.c
14918 +++ b/drivers/usb/core/hub.c
14919 @@ -27,6 +27,7 @@
14920 @@ -52451,7 +55250,7 @@ index 00c4b96..b4498c8 100644
14921
14922 #include <asm/uaccess.h>
14923 #include <asm/byteorder.h>
14924 -@@ -4531,6 +4532,10 @@ static void hub_port_connect_change(struct usb_hub *hub, int port1,
14925 +@@ -4594,6 +4595,10 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus,
14926 goto done;
14927 return;
14928 }
14929 @@ -52520,10 +55319,10 @@ index 4d11449..f4ccabf 100644
14930 INIT_LIST_HEAD(&dev->ep0.urb_list);
14931 dev->ep0.desc.bLength = USB_DT_ENDPOINT_SIZE;
14932 diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
14933 -index 85f398d..d375bbe 100644
14934 +index dab7927..6f53afc 100644
14935 --- a/drivers/usb/dwc3/gadget.c
14936 +++ b/drivers/usb/dwc3/gadget.c
14937 -@@ -550,8 +550,6 @@ static int __dwc3_gadget_ep_enable(struct dwc3_ep *dep,
14938 +@@ -615,8 +615,6 @@ static int __dwc3_gadget_ep_enable(struct dwc3_ep *dep,
14939 if (!usb_endpoint_xfer_isoc(desc))
14940 return 0;
14941
14942 @@ -52683,10 +55482,10 @@ index 7a55fea..cc0ed4f 100644
14943 #include "u_uac1.h"
14944
14945 diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c
14946 -index 7ae0c4d..35521b7 100644
14947 +index cc305c7..cf6da4a 100644
14948 --- a/drivers/usb/host/ehci-hub.c
14949 +++ b/drivers/usb/host/ehci-hub.c
14950 -@@ -780,7 +780,7 @@ static struct urb *request_single_step_set_feature_urb(
14951 +@@ -771,7 +771,7 @@ static struct urb *request_single_step_set_feature_urb(
14952 urb->transfer_flags = URB_DIR_IN;
14953 usb_get_urb(urb);
14954 atomic_inc(&urb->use_count);
14955 @@ -52695,7 +55494,7 @@ index 7ae0c4d..35521b7 100644
14956 urb->setup_dma = dma_map_single(
14957 hcd->self.controller,
14958 urb->setup_packet,
14959 -@@ -847,7 +847,7 @@ static int ehset_single_step_set_feature(struct usb_hcd *hcd, int port)
14960 +@@ -838,7 +838,7 @@ static int ehset_single_step_set_feature(struct usb_hcd *hcd, int port)
14961 urb->status = -EINPROGRESS;
14962 usb_get_urb(urb);
14963 atomic_inc(&urb->use_count);
14964 @@ -52735,11 +55534,11 @@ index d0d8fad..668ef7b 100644
14965 }
14966
14967 diff --git a/drivers/usb/misc/appledisplay.c b/drivers/usb/misc/appledisplay.c
14968 -index ba6a5d6..f88f7f3 100644
14969 +index b3d245e..99549ed 100644
14970 --- a/drivers/usb/misc/appledisplay.c
14971 +++ b/drivers/usb/misc/appledisplay.c
14972 -@@ -83,7 +83,7 @@ struct appledisplay {
14973 - spinlock_t lock;
14974 +@@ -84,7 +84,7 @@ struct appledisplay {
14975 + struct mutex sysfslock; /* concurrent read and write */
14976 };
14977
14978 -static atomic_t count_displays = ATOMIC_INIT(0);
14979 @@ -52747,7 +55546,7 @@ index ba6a5d6..f88f7f3 100644
14980 static struct workqueue_struct *wq;
14981
14982 static void appledisplay_complete(struct urb *urb)
14983 -@@ -281,7 +281,7 @@ static int appledisplay_probe(struct usb_interface *iface,
14984 +@@ -288,7 +288,7 @@ static int appledisplay_probe(struct usb_interface *iface,
14985
14986 /* Register backlight device */
14987 snprintf(bl_name, sizeof(bl_name), "appledisplay%d",
14988 @@ -52845,10 +55644,10 @@ index 3e2e4ed..060c9b8 100644
14989
14990 /* Return the xfer's ID. */
14991 diff --git a/drivers/vfio/vfio.c b/drivers/vfio/vfio.c
14992 -index 512f479..7e041d0 100644
14993 +index f018d8d..ccab63f 100644
14994 --- a/drivers/vfio/vfio.c
14995 +++ b/drivers/vfio/vfio.c
14996 -@@ -487,7 +487,7 @@ static int vfio_group_nb_add_dev(struct vfio_group *group, struct device *dev)
14997 +@@ -481,7 +481,7 @@ static int vfio_group_nb_add_dev(struct vfio_group *group, struct device *dev)
14998 return 0;
14999
15000 /* TODO Prevent device auto probing */
15001 @@ -53035,37 +55834,10 @@ index 900aa4e..6d49418 100644
15002 }
15003 EXPORT_SYMBOL_GPL(fb_deferred_io_cleanup);
15004 diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
15005 -index b6d5008..5bca7bf 100644
15006 +index b5e85f6..290f8c7 100644
15007 --- a/drivers/video/fbdev/core/fbmem.c
15008 +++ b/drivers/video/fbdev/core/fbmem.c
15009 -@@ -433,7 +433,7 @@ static void fb_do_show_logo(struct fb_info *info, struct fb_image *image,
15010 - image->dx += image->width + 8;
15011 - }
15012 - } else if (rotate == FB_ROTATE_UD) {
15013 -- for (x = 0; x < num && image->dx >= 0; x++) {
15014 -+ for (x = 0; x < num && (__s32)image->dx >= 0; x++) {
15015 - info->fbops->fb_imageblit(info, image);
15016 - image->dx -= image->width + 8;
15017 - }
15018 -@@ -445,7 +445,7 @@ static void fb_do_show_logo(struct fb_info *info, struct fb_image *image,
15019 - image->dy += image->height + 8;
15020 - }
15021 - } else if (rotate == FB_ROTATE_CCW) {
15022 -- for (x = 0; x < num && image->dy >= 0; x++) {
15023 -+ for (x = 0; x < num && (__s32)image->dy >= 0; x++) {
15024 - info->fbops->fb_imageblit(info, image);
15025 - image->dy -= image->height + 8;
15026 - }
15027 -@@ -1179,7 +1179,7 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
15028 - return -EFAULT;
15029 - if (con2fb.console < 1 || con2fb.console > MAX_NR_CONSOLES)
15030 - return -EINVAL;
15031 -- if (con2fb.framebuffer < 0 || con2fb.framebuffer >= FB_MAX)
15032 -+ if (con2fb.framebuffer >= FB_MAX)
15033 - return -EINVAL;
15034 - if (!registered_fb[con2fb.framebuffer])
15035 - request_module("fb%d", con2fb.framebuffer);
15036 -@@ -1300,7 +1300,7 @@ static int do_fscreeninfo_to_user(struct fb_fix_screeninfo *fix,
15037 +@@ -1301,7 +1301,7 @@ static int do_fscreeninfo_to_user(struct fb_fix_screeninfo *fix,
15038 __u32 data;
15039 int err;
15040
15041 @@ -56392,7 +59164,7 @@ index fef20db..d28b1ab 100644
15042 return -ENOMEM;
15043 return 0;
15044 diff --git a/fs/9p/vfs_addr.c b/fs/9p/vfs_addr.c
15045 -index c71e886..61d3d44b 100644
15046 +index cc1cfae..41158ad 100644
15047 --- a/fs/9p/vfs_addr.c
15048 +++ b/fs/9p/vfs_addr.c
15049 @@ -187,7 +187,7 @@ static int v9fs_vfs_writepage_locked(struct page *page)
15050 @@ -56405,7 +59177,7 @@ index c71e886..61d3d44b 100644
15051 if (retval > 0)
15052 retval = 0;
15053 diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
15054 -index 53161ec..e261d8a 100644
15055 +index 7fa4f7a..a7ebf8c 100644
15056 --- a/fs/9p/vfs_inode.c
15057 +++ b/fs/9p/vfs_inode.c
15058 @@ -1312,7 +1312,7 @@ static void *v9fs_vfs_follow_link(struct dentry *dentry, struct nameidata *nd)
15059 @@ -56453,10 +59225,18 @@ index 2946712..f737435 100644
15060 &data);
15061 if (!inode) {
15062 diff --git a/fs/aio.c b/fs/aio.c
15063 -index 6d68e01..573d8dc 100644
15064 +index 1c9c5f0..94455bc 100644
15065 --- a/fs/aio.c
15066 +++ b/fs/aio.c
15067 -@@ -380,7 +380,7 @@ static int aio_setup_ring(struct kioctx *ctx)
15068 +@@ -141,6 +141,7 @@ struct kioctx {
15069 +
15070 + struct {
15071 + unsigned tail;
15072 ++ unsigned completed_events;
15073 + spinlock_t completion_lock;
15074 + } ____cacheline_aligned_in_smp;
15075 +
15076 +@@ -380,7 +381,7 @@ static int aio_setup_ring(struct kioctx *ctx)
15077 size += sizeof(struct io_event) * nr_events;
15078
15079 nr_pages = PFN_UP(size);
15080 @@ -56465,6 +59245,122 @@ index 6d68e01..573d8dc 100644
15081 return -EINVAL;
15082
15083 file = aio_private_file(ctx, nr_pages);
15084 +@@ -880,6 +881,68 @@ out:
15085 + return ret;
15086 + }
15087 +
15088 ++/* refill_reqs_available
15089 ++ * Updates the reqs_available reference counts used for tracking the
15090 ++ * number of free slots in the completion ring. This can be called
15091 ++ * from aio_complete() (to optimistically update reqs_available) or
15092 ++ * from aio_get_req() (the we're out of events case). It must be
15093 ++ * called holding ctx->completion_lock.
15094 ++ */
15095 ++static void refill_reqs_available(struct kioctx *ctx, unsigned head,
15096 ++ unsigned tail)
15097 ++{
15098 ++ unsigned events_in_ring, completed;
15099 ++
15100 ++ /* Clamp head since userland can write to it. */
15101 ++ head %= ctx->nr_events;
15102 ++ if (head <= tail)
15103 ++ events_in_ring = tail - head;
15104 ++ else
15105 ++ events_in_ring = ctx->nr_events - (head - tail);
15106 ++
15107 ++ completed = ctx->completed_events;
15108 ++ if (events_in_ring < completed)
15109 ++ completed -= events_in_ring;
15110 ++ else
15111 ++ completed = 0;
15112 ++
15113 ++ if (!completed)
15114 ++ return;
15115 ++
15116 ++ ctx->completed_events -= completed;
15117 ++ put_reqs_available(ctx, completed);
15118 ++}
15119 ++
15120 ++/* user_refill_reqs_available
15121 ++ * Called to refill reqs_available when aio_get_req() encounters an
15122 ++ * out of space in the completion ring.
15123 ++ */
15124 ++static void user_refill_reqs_available(struct kioctx *ctx)
15125 ++{
15126 ++ spin_lock_irq(&ctx->completion_lock);
15127 ++ if (ctx->completed_events) {
15128 ++ struct aio_ring *ring;
15129 ++ unsigned head;
15130 ++
15131 ++ /* Access of ring->head may race with aio_read_events_ring()
15132 ++ * here, but that's okay since whether we read the old version
15133 ++ * or the new version, and either will be valid. The important
15134 ++ * part is that head cannot pass tail since we prevent
15135 ++ * aio_complete() from updating tail by holding
15136 ++ * ctx->completion_lock. Even if head is invalid, the check
15137 ++ * against ctx->completed_events below will make sure we do the
15138 ++ * safe/right thing.
15139 ++ */
15140 ++ ring = kmap_atomic(ctx->ring_pages[0]);
15141 ++ head = ring->head;
15142 ++ kunmap_atomic(ring);
15143 ++
15144 ++ refill_reqs_available(ctx, head, ctx->tail);
15145 ++ }
15146 ++
15147 ++ spin_unlock_irq(&ctx->completion_lock);
15148 ++}
15149 ++
15150 + /* aio_get_req
15151 + * Allocate a slot for an aio request.
15152 + * Returns NULL if no requests are free.
15153 +@@ -888,8 +951,11 @@ static inline struct kiocb *aio_get_req(struct kioctx *ctx)
15154 + {
15155 + struct kiocb *req;
15156 +
15157 +- if (!get_reqs_available(ctx))
15158 +- return NULL;
15159 ++ if (!get_reqs_available(ctx)) {
15160 ++ user_refill_reqs_available(ctx);
15161 ++ if (!get_reqs_available(ctx))
15162 ++ return NULL;
15163 ++ }
15164 +
15165 + req = kmem_cache_alloc(kiocb_cachep, GFP_KERNEL|__GFP_ZERO);
15166 + if (unlikely(!req))
15167 +@@ -948,8 +1014,8 @@ void aio_complete(struct kiocb *iocb, long res, long res2)
15168 + struct kioctx *ctx = iocb->ki_ctx;
15169 + struct aio_ring *ring;
15170 + struct io_event *ev_page, *event;
15171 ++ unsigned tail, pos, head;
15172 + unsigned long flags;
15173 +- unsigned tail, pos;
15174 +
15175 + /*
15176 + * Special case handling for sync iocbs:
15177 +@@ -1010,10 +1076,14 @@ void aio_complete(struct kiocb *iocb, long res, long res2)
15178 + ctx->tail = tail;
15179 +
15180 + ring = kmap_atomic(ctx->ring_pages[0]);
15181 ++ head = ring->head;
15182 + ring->tail = tail;
15183 + kunmap_atomic(ring);
15184 + flush_dcache_page(ctx->ring_pages[0]);
15185 +
15186 ++ ctx->completed_events++;
15187 ++ if (ctx->completed_events > 1)
15188 ++ refill_reqs_available(ctx, head, tail);
15189 + spin_unlock_irqrestore(&ctx->completion_lock, flags);
15190 +
15191 + pr_debug("added to ring %p at [%u]\n", iocb, tail);
15192 +@@ -1028,7 +1098,6 @@ void aio_complete(struct kiocb *iocb, long res, long res2)
15193 +
15194 + /* everything turned out well, dispose of the aiocb. */
15195 + kiocb_free(iocb);
15196 +- put_reqs_available(ctx, 1);
15197 +
15198 + /*
15199 + * We have to order our ring_info tail store above and test
15200 diff --git a/fs/attr.c b/fs/attr.c
15201 index 6530ced..4a827e2 100644
15202 --- a/fs/attr.c
15203 @@ -56626,7 +59522,7 @@ index ca0ba15..0fa3257 100644
15204 fd_offset + ex.a_text);
15205 if (error != N_DATADDR(ex)) {
15206 diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
15207 -index aa3cb62..bc53934 100644
15208 +index 3892c1a..4e27c04 100644
15209 --- a/fs/binfmt_elf.c
15210 +++ b/fs/binfmt_elf.c
15211 @@ -34,6 +34,7 @@
15212 @@ -57334,7 +60230,7 @@ index aa3cb62..bc53934 100644
15213 load_bias);
15214 if (!IS_ERR((void *)elf_entry)) {
15215 /*
15216 -@@ -1122,7 +1602,7 @@ static bool always_dump_vma(struct vm_area_struct *vma)
15217 +@@ -1130,7 +1610,7 @@ static bool always_dump_vma(struct vm_area_struct *vma)
15218 * Decide what to dump of a segment, part, all or none.
15219 */
15220 static unsigned long vma_dump_size(struct vm_area_struct *vma,
15221 @@ -57343,7 +60239,7 @@ index aa3cb62..bc53934 100644
15222 {
15223 #define FILTER(type) (mm_flags & (1UL << MMF_DUMP_##type))
15224
15225 -@@ -1160,7 +1640,7 @@ static unsigned long vma_dump_size(struct vm_area_struct *vma,
15226 +@@ -1168,7 +1648,7 @@ static unsigned long vma_dump_size(struct vm_area_struct *vma,
15227 if (vma->vm_file == NULL)
15228 return 0;
15229
15230 @@ -57352,7 +60248,7 @@ index aa3cb62..bc53934 100644
15231 goto whole;
15232
15233 /*
15234 -@@ -1367,9 +1847,9 @@ static void fill_auxv_note(struct memelfnote *note, struct mm_struct *mm)
15235 +@@ -1375,9 +1855,9 @@ static void fill_auxv_note(struct memelfnote *note, struct mm_struct *mm)
15236 {
15237 elf_addr_t *auxv = (elf_addr_t *) mm->saved_auxv;
15238 int i = 0;
15239 @@ -57364,7 +60260,7 @@ index aa3cb62..bc53934 100644
15240 fill_note(note, "CORE", NT_AUXV, i * sizeof(elf_addr_t), auxv);
15241 }
15242
15243 -@@ -1378,7 +1858,7 @@ static void fill_siginfo_note(struct memelfnote *note, user_siginfo_t *csigdata,
15244 +@@ -1386,7 +1866,7 @@ static void fill_siginfo_note(struct memelfnote *note, user_siginfo_t *csigdata,
15245 {
15246 mm_segment_t old_fs = get_fs();
15247 set_fs(KERNEL_DS);
15248 @@ -57373,7 +60269,7 @@ index aa3cb62..bc53934 100644
15249 set_fs(old_fs);
15250 fill_note(note, "CORE", NT_SIGINFO, sizeof(*csigdata), csigdata);
15251 }
15252 -@@ -2002,14 +2482,14 @@ static void fill_extnum_info(struct elfhdr *elf, struct elf_shdr *shdr4extnum,
15253 +@@ -2010,14 +2490,14 @@ static void fill_extnum_info(struct elfhdr *elf, struct elf_shdr *shdr4extnum,
15254 }
15255
15256 static size_t elf_core_vma_data_size(struct vm_area_struct *gate_vma,
15257 @@ -57390,7 +60286,7 @@ index aa3cb62..bc53934 100644
15258 return size;
15259 }
15260
15261 -@@ -2100,7 +2580,7 @@ static int elf_core_dump(struct coredump_params *cprm)
15262 +@@ -2108,7 +2588,7 @@ static int elf_core_dump(struct coredump_params *cprm)
15263
15264 dataoff = offset = roundup(offset, ELF_EXEC_PAGESIZE);
15265
15266 @@ -57399,7 +60295,7 @@ index aa3cb62..bc53934 100644
15267 offset += elf_core_extra_data_size();
15268 e_shoff = offset;
15269
15270 -@@ -2128,7 +2608,7 @@ static int elf_core_dump(struct coredump_params *cprm)
15271 +@@ -2136,7 +2616,7 @@ static int elf_core_dump(struct coredump_params *cprm)
15272 phdr.p_offset = offset;
15273 phdr.p_vaddr = vma->vm_start;
15274 phdr.p_paddr = 0;
15275 @@ -57408,7 +60304,7 @@ index aa3cb62..bc53934 100644
15276 phdr.p_memsz = vma->vm_end - vma->vm_start;
15277 offset += phdr.p_filesz;
15278 phdr.p_flags = vma->vm_flags & VM_READ ? PF_R : 0;
15279 -@@ -2161,7 +2641,7 @@ static int elf_core_dump(struct coredump_params *cprm)
15280 +@@ -2169,7 +2649,7 @@ static int elf_core_dump(struct coredump_params *cprm)
15281 unsigned long addr;
15282 unsigned long end;
15283
15284 @@ -57417,7 +60313,7 @@ index aa3cb62..bc53934 100644
15285
15286 for (addr = vma->vm_start; addr < end; addr += PAGE_SIZE) {
15287 struct page *page;
15288 -@@ -2202,6 +2682,167 @@ out:
15289 +@@ -2210,6 +2690,167 @@ out:
15290
15291 #endif /* CONFIG_ELF_CORE */
15292
15293 @@ -57585,42 +60481,11 @@ index aa3cb62..bc53934 100644
15294 static int __init init_elf_binfmt(void)
15295 {
15296 register_binfmt(&elf_format);
15297 -diff --git a/fs/bio.c b/fs/bio.c
15298 -index 6f0362b..26a7496 100644
15299 ---- a/fs/bio.c
15300 -+++ b/fs/bio.c
15301 -@@ -1144,7 +1144,7 @@ struct bio *bio_copy_user_iov(struct request_queue *q,
15302 - /*
15303 - * Overflow, abort
15304 - */
15305 -- if (end < start)
15306 -+ if (end < start || end - start > INT_MAX - nr_pages)
15307 - return ERR_PTR(-EINVAL);
15308 -
15309 - nr_pages += end - start;
15310 -@@ -1278,7 +1278,7 @@ static struct bio *__bio_map_user_iov(struct request_queue *q,
15311 - /*
15312 - * Overflow, abort
15313 - */
15314 -- if (end < start)
15315 -+ if (end < start || end - start > INT_MAX - nr_pages)
15316 - return ERR_PTR(-EINVAL);
15317 -
15318 - nr_pages += end - start;
15319 -@@ -1540,7 +1540,7 @@ static void bio_copy_kern_endio(struct bio *bio, int err)
15320 - const int read = bio_data_dir(bio) == READ;
15321 - struct bio_map_data *bmd = bio->bi_private;
15322 - int i;
15323 -- char *p = bmd->sgvecs[0].iov_base;
15324 -+ char *p = (char __force_kernel *)bmd->sgvecs[0].iov_base;
15325 -
15326 - bio_for_each_segment_all(bvec, bio, i) {
15327 - char *addr = page_address(bvec->bv_page);
15328 diff --git a/fs/block_dev.c b/fs/block_dev.c
15329 -index 552a8d1..d51ccf3 100644
15330 +index 6d72746..536d1db 100644
15331 --- a/fs/block_dev.c
15332 +++ b/fs/block_dev.c
15333 -@@ -637,7 +637,7 @@ static bool bd_may_claim(struct block_device *bdev, struct block_device *whole,
15334 +@@ -701,7 +701,7 @@ static bool bd_may_claim(struct block_device *bdev, struct block_device *whole,
15335 else if (bdev->bd_contains == bdev)
15336 return true; /* is a whole device which isn't held */
15337
15338 @@ -57630,10 +60495,10 @@ index 552a8d1..d51ccf3 100644
15339 else if (whole->bd_holder != NULL)
15340 return false; /* is a partition of a held device */
15341 diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c
15342 -index 1bcfcdb..e942132 100644
15343 +index aeab453..48dbafc 100644
15344 --- a/fs/btrfs/ctree.c
15345 +++ b/fs/btrfs/ctree.c
15346 -@@ -1216,9 +1216,12 @@ static noinline int __btrfs_cow_block(struct btrfs_trans_handle *trans,
15347 +@@ -1184,9 +1184,12 @@ static noinline int __btrfs_cow_block(struct btrfs_trans_handle *trans,
15348 free_extent_buffer(buf);
15349 add_root_to_dirty_list(root);
15350 } else {
15351 @@ -57650,10 +60515,10 @@ index 1bcfcdb..e942132 100644
15352
15353 WARN_ON(trans->transid != btrfs_header_generation(parent));
15354 diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c
15355 -index 33e561a..16df7ae 100644
15356 +index da775bf..882da68 100644
15357 --- a/fs/btrfs/delayed-inode.c
15358 +++ b/fs/btrfs/delayed-inode.c
15359 -@@ -459,7 +459,7 @@ static int __btrfs_add_delayed_deletion_item(struct btrfs_delayed_node *node,
15360 +@@ -462,7 +462,7 @@ static int __btrfs_add_delayed_deletion_item(struct btrfs_delayed_node *node,
15361
15362 static void finish_one_item(struct btrfs_delayed_root *delayed_root)
15363 {
15364 @@ -57662,7 +60527,7 @@ index 33e561a..16df7ae 100644
15365 if ((atomic_dec_return(&delayed_root->items) <
15366 BTRFS_DELAYED_BACKGROUND || seq % BTRFS_DELAYED_BATCH == 0) &&
15367 waitqueue_active(&delayed_root->wait))
15368 -@@ -1409,7 +1409,7 @@ void btrfs_assert_delayed_root_empty(struct btrfs_root *root)
15369 +@@ -1412,7 +1412,7 @@ void btrfs_assert_delayed_root_empty(struct btrfs_root *root)
15370
15371 static int could_end_wait(struct btrfs_delayed_root *delayed_root, int seq)
15372 {
15373 @@ -57671,7 +60536,7 @@ index 33e561a..16df7ae 100644
15374
15375 if (val < seq || val >= seq + BTRFS_DELAYED_BATCH)
15376 return 1;
15377 -@@ -1433,7 +1433,7 @@ void btrfs_balance_delayed_items(struct btrfs_root *root)
15378 +@@ -1436,7 +1436,7 @@ void btrfs_balance_delayed_items(struct btrfs_root *root)
15379 int seq;
15380 int ret;
15381
15382 @@ -57703,10 +60568,10 @@ index f70119f..ab5894d 100644
15383 spin_lock_init(&delayed_root->lock);
15384 init_waitqueue_head(&delayed_root->wait);
15385 diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
15386 -index 2f6d7b1..f186382 100644
15387 +index 47aceb4..7d28b1c 100644
15388 --- a/fs/btrfs/ioctl.c
15389 +++ b/fs/btrfs/ioctl.c
15390 -@@ -3575,9 +3575,12 @@ static long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg)
15391 +@@ -3965,9 +3965,12 @@ static long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg)
15392 for (i = 0; i < num_types; i++) {
15393 struct btrfs_space_info *tmp;
15394
15395 @@ -57719,7 +60584,7 @@ index 2f6d7b1..f186382 100644
15396 info = NULL;
15397 rcu_read_lock();
15398 list_for_each_entry_rcu(tmp, &root->fs_info->space_info,
15399 -@@ -3599,10 +3602,7 @@ static long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg)
15400 +@@ -3989,10 +3992,7 @@ static long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg)
15401 memcpy(dest, &space, sizeof(space));
15402 dest++;
15403 space_args.total_spaces++;
15404 @@ -57731,7 +60596,7 @@ index 2f6d7b1..f186382 100644
15405 up_read(&info->groups_sem);
15406 }
15407 diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
15408 -index 9601d25..2896d6c 100644
15409 +index 8e16bca..6eabd9e 100644
15410 --- a/fs/btrfs/super.c
15411 +++ b/fs/btrfs/super.c
15412 @@ -270,7 +270,7 @@ void __btrfs_abort_transaction(struct btrfs_trans_handle *trans,
15413 @@ -57744,10 +60609,10 @@ index 9601d25..2896d6c 100644
15414 wake_up(&root->fs_info->transaction_wait);
15415 wake_up(&root->fs_info->transaction_blocked_wait);
15416 diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c
15417 -index 4825cd2..b2fe768 100644
15418 +index 7869936..7e153dc 100644
15419 --- a/fs/btrfs/sysfs.c
15420 +++ b/fs/btrfs/sysfs.c
15421 -@@ -438,7 +438,7 @@ static int addrm_unknown_feature_attrs(struct btrfs_fs_info *fs_info, bool add)
15422 +@@ -475,7 +475,7 @@ static int addrm_unknown_feature_attrs(struct btrfs_fs_info *fs_info, bool add)
15423 for (set = 0; set < FEAT_MAX; set++) {
15424 int i;
15425 struct attribute *attrs[2];
15426 @@ -57756,60 +60621,24 @@ index 4825cd2..b2fe768 100644
15427 .name = "features",
15428 .attrs = attrs,
15429 };
15430 -diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
15431 -index e2f45fc..b036909 100644
15432 ---- a/fs/btrfs/tree-log.c
15433 -+++ b/fs/btrfs/tree-log.c
15434 -@@ -2533,7 +2533,7 @@ int btrfs_sync_log(struct btrfs_trans_handle *trans,
15435 - blk_finish_plug(&plug);
15436 - btrfs_abort_transaction(trans, root, ret);
15437 - btrfs_free_logged_extents(log, log_transid);
15438 -- ACCESS_ONCE(root->fs_info->last_trans_log_full_commit) =
15439 -+ ACCESS_ONCE_RW(root->fs_info->last_trans_log_full_commit) =
15440 - trans->transid;
15441 - mutex_unlock(&root->log_mutex);
15442 - goto out;
15443 -@@ -2577,7 +2577,7 @@ int btrfs_sync_log(struct btrfs_trans_handle *trans,
15444 - list_del_init(&root_log_ctx.list);
15445 -
15446 - blk_finish_plug(&plug);
15447 -- ACCESS_ONCE(root->fs_info->last_trans_log_full_commit) =
15448 -+ ACCESS_ONCE_RW(root->fs_info->last_trans_log_full_commit) =
15449 - trans->transid;
15450 - if (ret != -ENOSPC) {
15451 - btrfs_abort_transaction(trans, root, ret);
15452 -@@ -2622,7 +2622,7 @@ int btrfs_sync_log(struct btrfs_trans_handle *trans,
15453 - * now that we've moved on to the tree of log tree roots,
15454 - * check the full commit flag again
15455 - */
15456 -- if (ACCESS_ONCE(root->fs_info->last_trans_log_full_commit) ==
15457 -+ if (ACCESS_ONCE_RW(root->fs_info->last_trans_log_full_commit) ==
15458 - trans->transid) {
15459 - blk_finish_plug(&plug);
15460 - btrfs_wait_marked_extents(log, &log->dirty_log_pages, mark);
15461 -@@ -2637,7 +2637,7 @@ int btrfs_sync_log(struct btrfs_trans_handle *trans,
15462 - EXTENT_DIRTY | EXTENT_NEW);
15463 - blk_finish_plug(&plug);
15464 - if (ret) {
15465 -- ACCESS_ONCE(root->fs_info->last_trans_log_full_commit) =
15466 -+ ACCESS_ONCE_RW(root->fs_info->last_trans_log_full_commit) =
15467 - trans->transid;
15468 - btrfs_abort_transaction(trans, root, ret);
15469 - btrfs_free_logged_extents(log, log_transid);
15470 -@@ -2667,7 +2667,7 @@ int btrfs_sync_log(struct btrfs_trans_handle *trans,
15471 - */
15472 - ret = write_ctree_super(trans, root->fs_info->tree_root, 1);
15473 - if (ret) {
15474 -- ACCESS_ONCE(root->fs_info->last_trans_log_full_commit) =
15475 -+ ACCESS_ONCE_RW(root->fs_info->last_trans_log_full_commit) =
15476 - trans->transid;
15477 - btrfs_abort_transaction(trans, root, ret);
15478 - goto out_wake_log_root;
15479 +diff --git a/fs/btrfs/tree-log.h b/fs/btrfs/tree-log.h
15480 +index 7f5b41b..e589c13 100644
15481 +--- a/fs/btrfs/tree-log.h
15482 ++++ b/fs/btrfs/tree-log.h
15483 +@@ -41,7 +41,7 @@ static inline void btrfs_init_log_ctx(struct btrfs_log_ctx *ctx)
15484 + static inline void btrfs_set_log_full_commit(struct btrfs_fs_info *fs_info,
15485 + struct btrfs_trans_handle *trans)
15486 + {
15487 +- ACCESS_ONCE(fs_info->last_trans_log_full_commit) = trans->transid;
15488 ++ ACCESS_ONCE_RW(fs_info->last_trans_log_full_commit) = trans->transid;
15489 + }
15490 +
15491 + static inline int btrfs_need_log_full_commit(struct btrfs_fs_info *fs_info,
15492 diff --git a/fs/buffer.c b/fs/buffer.c
15493 -index 9ddb9fc..7aa2487 100644
15494 +index eba6e4f..af1182c 100644
15495 --- a/fs/buffer.c
15496 +++ b/fs/buffer.c
15497 -@@ -3428,7 +3428,7 @@ void __init buffer_init(void)
15498 +@@ -3429,7 +3429,7 @@ void __init buffer_init(void)
15499 bh_cachep = kmem_cache_create("buffer_head",
15500 sizeof(struct buffer_head), 0,
15501 (SLAB_RECLAIM_ACCOUNT|SLAB_PANIC|
15502 @@ -57819,7 +60648,7 @@ index 9ddb9fc..7aa2487 100644
15503
15504 /*
15505 diff --git a/fs/cachefiles/bind.c b/fs/cachefiles/bind.c
15506 -index 5b99baf..47fffb5 100644
15507 +index d749731..dd333a6 100644
15508 --- a/fs/cachefiles/bind.c
15509 +++ b/fs/cachefiles/bind.c
15510 @@ -39,13 +39,11 @@ int cachefiles_daemon_bind(struct cachefiles_cache *cache, char *args)
15511 @@ -57839,7 +60668,7 @@ index 5b99baf..47fffb5 100644
15512 cache->brun_percent < 100);
15513
15514 diff --git a/fs/cachefiles/daemon.c b/fs/cachefiles/daemon.c
15515 -index 0a1467b..6a53245 100644
15516 +index b078d30..db23012 100644
15517 --- a/fs/cachefiles/daemon.c
15518 +++ b/fs/cachefiles/daemon.c
15519 @@ -196,7 +196,7 @@ static ssize_t cachefiles_daemon_read(struct file *file, char __user *_buffer,
15520 @@ -57860,7 +60689,7 @@ index 0a1467b..6a53245 100644
15521 return -EOPNOTSUPP;
15522
15523 /* drag the command string into the kernel so we can parse it */
15524 -@@ -386,7 +386,7 @@ static int cachefiles_daemon_fstop(struct cachefiles_cache *cache, char *args)
15525 +@@ -385,7 +385,7 @@ static int cachefiles_daemon_fstop(struct cachefiles_cache *cache, char *args)
15526 if (args[0] != '%' || args[1] != '\0')
15527 return -EINVAL;
15528
15529 @@ -57869,7 +60698,7 @@ index 0a1467b..6a53245 100644
15530 return cachefiles_daemon_range_error(cache, args);
15531
15532 cache->fstop_percent = fstop;
15533 -@@ -458,7 +458,7 @@ static int cachefiles_daemon_bstop(struct cachefiles_cache *cache, char *args)
15534 +@@ -457,7 +457,7 @@ static int cachefiles_daemon_bstop(struct cachefiles_cache *cache, char *args)
15535 if (args[0] != '%' || args[1] != '\0')
15536 return -EINVAL;
15537
15538 @@ -57879,10 +60708,10 @@ index 0a1467b..6a53245 100644
15539
15540 cache->bstop_percent = bstop;
15541 diff --git a/fs/cachefiles/internal.h b/fs/cachefiles/internal.h
15542 -index 5349473..d6c0b93 100644
15543 +index 3d50998..0550d67 100644
15544 --- a/fs/cachefiles/internal.h
15545 +++ b/fs/cachefiles/internal.h
15546 -@@ -59,7 +59,7 @@ struct cachefiles_cache {
15547 +@@ -66,7 +66,7 @@ struct cachefiles_cache {
15548 wait_queue_head_t daemon_pollwq; /* poll waitqueue for daemon */
15549 struct rb_root active_nodes; /* active nodes (can't be culled) */
15550 rwlock_t active_lock; /* lock for active_nodes */
15551 @@ -57891,7 +60720,7 @@ index 5349473..d6c0b93 100644
15552 unsigned frun_percent; /* when to stop culling (% files) */
15553 unsigned fcull_percent; /* when to start culling (% files) */
15554 unsigned fstop_percent; /* when to stop allocating (% files) */
15555 -@@ -171,19 +171,19 @@ extern int cachefiles_check_in_use(struct cachefiles_cache *cache,
15556 +@@ -178,19 +178,19 @@ extern int cachefiles_check_in_use(struct cachefiles_cache *cache,
15557 * proc.c
15558 */
15559 #ifdef CONFIG_CACHEFILES_HISTOGRAM
15560 @@ -57917,10 +60746,10 @@ index 5349473..d6c0b93 100644
15561
15562 #else
15563 diff --git a/fs/cachefiles/namei.c b/fs/cachefiles/namei.c
15564 -index c0a6817..ea811166 100644
15565 +index 5bf2b41..85b93f9 100644
15566 --- a/fs/cachefiles/namei.c
15567 +++ b/fs/cachefiles/namei.c
15568 -@@ -317,7 +317,7 @@ try_again:
15569 +@@ -312,7 +312,7 @@ try_again:
15570 /* first step is to make up a grave dentry in the graveyard */
15571 sprintf(nbuffer, "%08x%08x",
15572 (uint32_t) get_seconds(),
15573 @@ -58052,10 +60881,10 @@ index f3ac415..3d2420c 100644
15574 server->ops->print_stats(m, tcon);
15575 }
15576 diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
15577 -index 5be1f997..fa1015a1 100644
15578 +index 8883980..c8ade72 100644
15579 --- a/fs/cifs/cifsfs.c
15580 +++ b/fs/cifs/cifsfs.c
15581 -@@ -1068,7 +1068,7 @@ cifs_init_request_bufs(void)
15582 +@@ -1072,7 +1072,7 @@ cifs_init_request_bufs(void)
15583 */
15584 cifs_req_cachep = kmem_cache_create("cifs_request",
15585 CIFSMaxBufSize + max_hdr_size, 0,
15586 @@ -58064,7 +60893,7 @@ index 5be1f997..fa1015a1 100644
15587 if (cifs_req_cachep == NULL)
15588 return -ENOMEM;
15589
15590 -@@ -1095,7 +1095,7 @@ cifs_init_request_bufs(void)
15591 +@@ -1099,7 +1099,7 @@ cifs_init_request_bufs(void)
15592 efficient to alloc 1 per page off the slab compared to 17K (5page)
15593 alloc of large cifs buffers even when page debugging is on */
15594 cifs_sm_req_cachep = kmem_cache_create("cifs_small_rq",
15595 @@ -58073,7 +60902,7 @@ index 5be1f997..fa1015a1 100644
15596 NULL);
15597 if (cifs_sm_req_cachep == NULL) {
15598 mempool_destroy(cifs_req_poolp);
15599 -@@ -1180,8 +1180,8 @@ init_cifs(void)
15600 +@@ -1184,8 +1184,8 @@ init_cifs(void)
15601 atomic_set(&bufAllocCount, 0);
15602 atomic_set(&smBufAllocCount, 0);
15603 #ifdef CONFIG_CIFS_STATS2
15604 @@ -58085,10 +60914,10 @@ index 5be1f997..fa1015a1 100644
15605
15606 atomic_set(&midCount, 0);
15607 diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
15608 -index 30f6e92..e915ba5 100644
15609 +index de6aed8..a0a76fd 100644
15610 --- a/fs/cifs/cifsglob.h
15611 +++ b/fs/cifs/cifsglob.h
15612 -@@ -806,35 +806,35 @@ struct cifs_tcon {
15613 +@@ -807,35 +807,35 @@ struct cifs_tcon {
15614 __u16 Flags; /* optional support bits */
15615 enum statusEnum tidStatus;
15616 #ifdef CONFIG_CIFS_STATS
15617 @@ -58148,7 +60977,7 @@ index 30f6e92..e915ba5 100644
15618 } smb2_stats;
15619 #endif /* CONFIG_CIFS_SMB2 */
15620 } stats;
15621 -@@ -1170,7 +1170,7 @@ convert_delimiter(char *path, char delim)
15622 +@@ -1172,7 +1172,7 @@ convert_delimiter(char *path, char delim)
15623 }
15624
15625 #ifdef CONFIG_CIFS_STATS
15626 @@ -58157,7 +60986,7 @@ index 30f6e92..e915ba5 100644
15627
15628 static inline void cifs_stats_bytes_written(struct cifs_tcon *tcon,
15629 unsigned int bytes)
15630 -@@ -1536,8 +1536,8 @@ GLOBAL_EXTERN atomic_t tconInfoReconnectCount;
15631 +@@ -1538,8 +1538,8 @@ GLOBAL_EXTERN atomic_t tconInfoReconnectCount;
15632 /* Various Debug counters */
15633 GLOBAL_EXTERN atomic_t bufAllocCount; /* current number allocated */
15634 #ifdef CONFIG_CIFS_STATS2
15635 @@ -58169,7 +60998,7 @@ index 30f6e92..e915ba5 100644
15636 GLOBAL_EXTERN atomic_t smBufAllocCount;
15637 GLOBAL_EXTERN atomic_t midCount;
15638 diff --git a/fs/cifs/file.c b/fs/cifs/file.c
15639 -index 5ed03e0..e9a3a6c 100644
15640 +index e90a1e9..908699d 100644
15641 --- a/fs/cifs/file.c
15642 +++ b/fs/cifs/file.c
15643 @@ -1900,10 +1900,14 @@ static int cifs_writepages(struct address_space *mapping,
15644 @@ -58322,7 +61151,7 @@ index d1fdfa8..94558f8 100644
15645 }
15646
15647 diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c
15648 -index 35ddc3e..563e809 100644
15649 +index 787844b..8e7bc7d 100644
15650 --- a/fs/cifs/smb2ops.c
15651 +++ b/fs/cifs/smb2ops.c
15652 @@ -364,8 +364,8 @@ smb2_clear_stats(struct cifs_tcon *tcon)
15653 @@ -58443,10 +61272,10 @@ index 35ddc3e..563e809 100644
15654 }
15655
15656 diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
15657 -index 1fb6ad2..758e171 100644
15658 +index b0b260d..c8927e1 100644
15659 --- a/fs/cifs/smb2pdu.c
15660 +++ b/fs/cifs/smb2pdu.c
15661 -@@ -2097,8 +2097,7 @@ SMB2_query_directory(const unsigned int xid, struct cifs_tcon *tcon,
15662 +@@ -2105,8 +2105,7 @@ SMB2_query_directory(const unsigned int xid, struct cifs_tcon *tcon,
15663 default:
15664 cifs_dbg(VFS, "info level %u isn't supported\n",
15665 srch_inf->info_level);
15666 @@ -58679,7 +61508,7 @@ index e822890..fed89d9 100644
15667 return 1;
15668 if (a < b)
15669 diff --git a/fs/configfs/dir.c b/fs/configfs/dir.c
15670 -index e081acb..911df21 100644
15671 +index 668dcab..daebcd6 100644
15672 --- a/fs/configfs/dir.c
15673 +++ b/fs/configfs/dir.c
15674 @@ -1548,7 +1548,8 @@ static int configfs_readdir(struct file *file, struct dir_context *ctx)
15675 @@ -58813,7 +61642,7 @@ index a93f7e6..d58bcbe 100644
15676 return 0;
15677 while (nr) {
15678 diff --git a/fs/dcache.c b/fs/dcache.c
15679 -index e99c6f5..2838bf58 100644
15680 +index 06f6585..f95a6d1 100644
15681 --- a/fs/dcache.c
15682 +++ b/fs/dcache.c
15683 @@ -1445,7 +1445,7 @@ struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name)
15684 @@ -58878,7 +61707,7 @@ index e4141f2..d8263e8 100644
15685 i += packet_length_size;
15686 if (copy_to_user(&buf[i], msg_ctx->msg, msg_ctx->msg_size))
15687 diff --git a/fs/exec.c b/fs/exec.c
15688 -index 238b7aa..a421d91 100644
15689 +index a3d33fe..49e9bc9 100644
15690 --- a/fs/exec.c
15691 +++ b/fs/exec.c
15692 @@ -56,8 +56,20 @@
15693 @@ -59195,7 +62024,7 @@ index 238b7aa..a421d91 100644
15694 tsk->mm->vmacache_seqnum = 0;
15695 vmacache_flush(tsk);
15696 task_unlock(tsk);
15697 -@@ -1246,7 +1325,7 @@ static void check_unsafe_exec(struct linux_binprm *bprm)
15698 +@@ -1247,7 +1326,7 @@ static void check_unsafe_exec(struct linux_binprm *bprm)
15699 }
15700 rcu_read_unlock();
15701
15702 @@ -59204,7 +62033,7 @@ index 238b7aa..a421d91 100644
15703 bprm->unsafe |= LSM_UNSAFE_SHARE;
15704 else
15705 p->fs->in_exec = 1;
15706 -@@ -1422,6 +1501,31 @@ static int exec_binprm(struct linux_binprm *bprm)
15707 +@@ -1423,6 +1502,31 @@ static int exec_binprm(struct linux_binprm *bprm)
15708 return ret;
15709 }
15710
15711 @@ -59236,7 +62065,7 @@ index 238b7aa..a421d91 100644
15712 /*
15713 * sys_execve() executes a new program.
15714 */
15715 -@@ -1429,6 +1533,11 @@ static int do_execve_common(struct filename *filename,
15716 +@@ -1430,6 +1534,11 @@ static int do_execve_common(struct filename *filename,
15717 struct user_arg_ptr argv,
15718 struct user_arg_ptr envp)
15719 {
15720 @@ -59248,7 +62077,7 @@ index 238b7aa..a421d91 100644
15721 struct linux_binprm *bprm;
15722 struct file *file;
15723 struct files_struct *displaced;
15724 -@@ -1437,6 +1546,8 @@ static int do_execve_common(struct filename *filename,
15725 +@@ -1438,6 +1547,8 @@ static int do_execve_common(struct filename *filename,
15726 if (IS_ERR(filename))
15727 return PTR_ERR(filename);
15728
15729 @@ -59257,7 +62086,7 @@ index 238b7aa..a421d91 100644
15730 /*
15731 * We move the actual failure in case of RLIMIT_NPROC excess from
15732 * set*uid() to execve() because too many poorly written programs
15733 -@@ -1474,11 +1585,21 @@ static int do_execve_common(struct filename *filename,
15734 +@@ -1475,11 +1586,21 @@ static int do_execve_common(struct filename *filename,
15735 if (IS_ERR(file))
15736 goto out_unmark;
15737
15738 @@ -59279,7 +62108,7 @@ index 238b7aa..a421d91 100644
15739 retval = bprm_mm_init(bprm);
15740 if (retval)
15741 goto out_unmark;
15742 -@@ -1495,24 +1616,70 @@ static int do_execve_common(struct filename *filename,
15743 +@@ -1496,24 +1617,70 @@ static int do_execve_common(struct filename *filename,
15744 if (retval < 0)
15745 goto out;
15746
15747 @@ -59354,7 +62183,7 @@ index 238b7aa..a421d91 100644
15748 current->fs->in_exec = 0;
15749 current->in_execve = 0;
15750 acct_update_integrals(current);
15751 -@@ -1523,6 +1690,14 @@ static int do_execve_common(struct filename *filename,
15752 +@@ -1524,6 +1691,14 @@ static int do_execve_common(struct filename *filename,
15753 put_files_struct(displaced);
15754 return retval;
15755
15756 @@ -59369,7 +62198,7 @@ index 238b7aa..a421d91 100644
15757 out:
15758 if (bprm->mm) {
15759 acct_arg_size(bprm, 0);
15760 -@@ -1614,3 +1789,312 @@ COMPAT_SYSCALL_DEFINE3(execve, const char __user *, filename,
15761 +@@ -1615,3 +1790,312 @@ COMPAT_SYSCALL_DEFINE3(execve, const char __user *, filename,
15762 return compat_do_execve(getname(filename), argv, envp);
15763 }
15764 #endif
15765 @@ -59767,10 +62596,10 @@ index c6874be..f8a6ae8 100644
15766
15767 static int
15768 diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c
15769 -index 5c56785..77698a2 100644
15770 +index fca3820..e1ea241 100644
15771 --- a/fs/ext4/balloc.c
15772 +++ b/fs/ext4/balloc.c
15773 -@@ -534,8 +534,8 @@ static int ext4_has_free_clusters(struct ext4_sb_info *sbi,
15774 +@@ -553,8 +553,8 @@ static int ext4_has_free_clusters(struct ext4_sb_info *sbi,
15775 /* Hm, nope. Are (enough) root reserved clusters available? */
15776 if (uid_eq(sbi->s_resuid, current_fsuid()) ||
15777 (!gid_eq(sbi->s_resgid, GLOBAL_ROOT_GID) && in_group_p(sbi->s_resgid)) ||
15778 @@ -59782,10 +62611,10 @@ index 5c56785..77698a2 100644
15779 if (free_clusters >= (nclusters + dirty_clusters +
15780 resv_clusters))
15781 diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
15782 -index f542e48..c0275f5 100644
15783 +index 7cc5a0e..851f176 100644
15784 --- a/fs/ext4/ext4.h
15785 +++ b/fs/ext4/ext4.h
15786 -@@ -1274,19 +1274,19 @@ struct ext4_sb_info {
15787 +@@ -1276,19 +1276,19 @@ struct ext4_sb_info {
15788 unsigned long s_mb_last_start;
15789
15790 /* stats for buddy allocator */
15791 @@ -59815,26 +62644,11 @@ index f542e48..c0275f5 100644
15792 atomic_t s_lock_busy;
15793
15794 /* locality groups */
15795 -diff --git a/fs/ext4/indirect.c b/fs/ext4/indirect.c
15796 -index e6574d7..c30cbe2 100644
15797 ---- a/fs/ext4/indirect.c
15798 -+++ b/fs/ext4/indirect.c
15799 -@@ -1345,8 +1345,8 @@ static int free_hole_blocks(handle_t *handle, struct inode *inode,
15800 - if (level == 0 ||
15801 - (bh && all_zeroes((__le32 *)bh->b_data,
15802 - (__le32 *)bh->b_data + addr_per_block))) {
15803 -- ext4_free_data(handle, inode, parent_bh, &blk, &blk+1);
15804 -- *i_data = 0;
15805 -+ ext4_free_data(handle, inode, parent_bh,
15806 -+ i_data, i_data + 1);
15807 - }
15808 - brelse(bh);
15809 - bh = NULL;
15810 diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
15811 -index 2735a72..d083044 100644
15812 +index 2dcb936..f5625a0 100644
15813 --- a/fs/ext4/mballoc.c
15814 +++ b/fs/ext4/mballoc.c
15815 -@@ -1889,7 +1889,7 @@ void ext4_mb_simple_scan_group(struct ext4_allocation_context *ac,
15816 +@@ -1899,7 +1899,7 @@ void ext4_mb_simple_scan_group(struct ext4_allocation_context *ac,
15817 BUG_ON(ac->ac_b_ex.fe_len != ac->ac_g_ex.fe_len);
15818
15819 if (EXT4_SB(sb)->s_mb_stats)
15820 @@ -59843,7 +62657,7 @@ index 2735a72..d083044 100644
15821
15822 break;
15823 }
15824 -@@ -2199,7 +2199,7 @@ repeat:
15825 +@@ -2209,7 +2209,7 @@ repeat:
15826 ac->ac_status = AC_STATUS_CONTINUE;
15827 ac->ac_flags |= EXT4_MB_HINT_FIRST;
15828 cr = 3;
15829 @@ -59852,7 +62666,7 @@ index 2735a72..d083044 100644
15830 goto repeat;
15831 }
15832 }
15833 -@@ -2707,25 +2707,25 @@ int ext4_mb_release(struct super_block *sb)
15834 +@@ -2715,25 +2715,25 @@ int ext4_mb_release(struct super_block *sb)
15835 if (sbi->s_mb_stats) {
15836 ext4_msg(sb, KERN_INFO,
15837 "mballoc: %u blocks %u reqs (%u success)",
15838 @@ -59888,7 +62702,7 @@ index 2735a72..d083044 100644
15839 }
15840
15841 free_percpu(sbi->s_locality_groups);
15842 -@@ -3179,16 +3179,16 @@ static void ext4_mb_collect_stats(struct ext4_allocation_context *ac)
15843 +@@ -3189,16 +3189,16 @@ static void ext4_mb_collect_stats(struct ext4_allocation_context *ac)
15844 struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb);
15845
15846 if (sbi->s_mb_stats && ac->ac_g_ex.fe_len > 1) {
15847 @@ -59911,7 +62725,7 @@ index 2735a72..d083044 100644
15848 }
15849
15850 if (ac->ac_op == EXT4_MB_HISTORY_ALLOC)
15851 -@@ -3593,7 +3593,7 @@ ext4_mb_new_inode_pa(struct ext4_allocation_context *ac)
15852 +@@ -3603,7 +3603,7 @@ ext4_mb_new_inode_pa(struct ext4_allocation_context *ac)
15853 trace_ext4_mb_new_inode_pa(ac, pa);
15854
15855 ext4_mb_use_inode_pa(ac, pa);
15856 @@ -59920,7 +62734,7 @@ index 2735a72..d083044 100644
15857
15858 ei = EXT4_I(ac->ac_inode);
15859 grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group);
15860 -@@ -3653,7 +3653,7 @@ ext4_mb_new_group_pa(struct ext4_allocation_context *ac)
15861 +@@ -3663,7 +3663,7 @@ ext4_mb_new_group_pa(struct ext4_allocation_context *ac)
15862 trace_ext4_mb_new_group_pa(ac, pa);
15863
15864 ext4_mb_use_group_pa(ac, pa);
15865 @@ -59929,7 +62743,7 @@ index 2735a72..d083044 100644
15866
15867 grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group);
15868 lg = ac->ac_lg;
15869 -@@ -3742,7 +3742,7 @@ ext4_mb_release_inode_pa(struct ext4_buddy *e4b, struct buffer_head *bitmap_bh,
15870 +@@ -3752,7 +3752,7 @@ ext4_mb_release_inode_pa(struct ext4_buddy *e4b, struct buffer_head *bitmap_bh,
15871 * from the bitmap and continue.
15872 */
15873 }
15874 @@ -59938,7 +62752,7 @@ index 2735a72..d083044 100644
15875
15876 return err;
15877 }
15878 -@@ -3760,7 +3760,7 @@ ext4_mb_release_group_pa(struct ext4_buddy *e4b,
15879 +@@ -3770,7 +3770,7 @@ ext4_mb_release_group_pa(struct ext4_buddy *e4b,
15880 ext4_get_group_no_and_offset(sb, pa->pa_pstart, &group, &bit);
15881 BUG_ON(group != e4b->bd_group && pa->pa_len != 0);
15882 mb_free_blocks(pa->pa_inode, e4b, bit, pa->pa_len);
15883 @@ -59948,7 +62762,7 @@ index 2735a72..d083044 100644
15884
15885 return 0;
15886 diff --git a/fs/ext4/mmp.c b/fs/ext4/mmp.c
15887 -index 04434ad..6404663 100644
15888 +index 32bce84..112d969 100644
15889 --- a/fs/ext4/mmp.c
15890 +++ b/fs/ext4/mmp.c
15891 @@ -113,7 +113,7 @@ static int read_mmp_block(struct super_block *sb, struct buffer_head **bh,
15892 @@ -59961,10 +62775,10 @@ index 04434ad..6404663 100644
15893 "MMP failure info: last update time: %llu, last update "
15894 "node: %s, last update device: %s\n",
15895 diff --git a/fs/ext4/super.c b/fs/ext4/super.c
15896 -index 29a403c..f58dbdb 100644
15897 +index 6df7bc6..410a655 100644
15898 --- a/fs/ext4/super.c
15899 +++ b/fs/ext4/super.c
15900 -@@ -1275,7 +1275,7 @@ static ext4_fsblk_t get_sb_block(void **data)
15901 +@@ -1276,7 +1276,7 @@ static ext4_fsblk_t get_sb_block(void **data)
15902 }
15903
15904 #define DEFAULT_JOURNAL_IOPRIO (IOPRIO_PRIO_VALUE(IOPRIO_CLASS_BE, 3))
15905 @@ -59973,7 +62787,7 @@ index 29a403c..f58dbdb 100644
15906 "Contact linux-ext4@×××××××××××.org if you think we should keep it.\n";
15907
15908 #ifdef CONFIG_QUOTA
15909 -@@ -2453,7 +2453,7 @@ struct ext4_attr {
15910 +@@ -2464,7 +2464,7 @@ struct ext4_attr {
15911 int offset;
15912 int deprecated_val;
15913 } u;
15914 @@ -59983,10 +62797,10 @@ index 29a403c..f58dbdb 100644
15915 static int parse_strtoull(const char *buf,
15916 unsigned long long max, unsigned long long *value)
15917 diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c
15918 -index 4eec399..1d9444c 100644
15919 +index e738733..9843a6c 100644
15920 --- a/fs/ext4/xattr.c
15921 +++ b/fs/ext4/xattr.c
15922 -@@ -383,7 +383,7 @@ static int
15923 +@@ -386,7 +386,7 @@ static int
15924 ext4_xattr_list_entries(struct dentry *dentry, struct ext4_xattr_entry *entry,
15925 char *buffer, size_t buffer_size)
15926 {
15927 @@ -59995,7 +62809,7 @@ index 4eec399..1d9444c 100644
15928
15929 for (; !IS_LAST_ENTRY(entry); entry = EXT4_XATTR_NEXT(entry)) {
15930 const struct xattr_handler *handler =
15931 -@@ -400,9 +400,10 @@ ext4_xattr_list_entries(struct dentry *dentry, struct ext4_xattr_entry *entry,
15932 +@@ -403,9 +403,10 @@ ext4_xattr_list_entries(struct dentry *dentry, struct ext4_xattr_entry *entry,
15933 buffer += size;
15934 }
15935 rest -= size;
15936 @@ -60055,7 +62869,7 @@ index 999ff5c..ac037c9 100644
15937 goto out_err;
15938 }
15939 diff --git a/fs/file.c b/fs/file.c
15940 -index 8f294cf..d0f3872 100644
15941 +index 66923fe..2849783 100644
15942 --- a/fs/file.c
15943 +++ b/fs/file.c
15944 @@ -16,6 +16,7 @@
15945 @@ -60066,7 +62880,7 @@ index 8f294cf..d0f3872 100644
15946 #include <linux/fdtable.h>
15947 #include <linux/bitops.h>
15948 #include <linux/interrupt.h>
15949 -@@ -144,7 +145,7 @@ out:
15950 +@@ -139,7 +140,7 @@ out:
15951 * Return <0 error code on error; 1 on successful completion.
15952 * The files->file_lock should be held on entry, and will be held on exit.
15953 */
15954 @@ -60075,7 +62889,7 @@ index 8f294cf..d0f3872 100644
15955 __releases(files->file_lock)
15956 __acquires(files->file_lock)
15957 {
15958 -@@ -189,7 +190,7 @@ static int expand_fdtable(struct files_struct *files, int nr)
15959 +@@ -184,7 +185,7 @@ static int expand_fdtable(struct files_struct *files, int nr)
15960 * expanded and execution may have blocked.
15961 * The files->file_lock should be held on entry, and will be held on exit.
15962 */
15963 @@ -60084,7 +62898,7 @@ index 8f294cf..d0f3872 100644
15964 {
15965 struct fdtable *fdt;
15966
15967 -@@ -804,6 +805,7 @@ int replace_fd(unsigned fd, struct file *file, unsigned flags)
15968 +@@ -799,6 +800,7 @@ int replace_fd(unsigned fd, struct file *file, unsigned flags)
15969 if (!file)
15970 return __close_fd(files, fd);
15971
15972 @@ -60092,7 +62906,7 @@ index 8f294cf..d0f3872 100644
15973 if (fd >= rlimit(RLIMIT_NOFILE))
15974 return -EBADF;
15975
15976 -@@ -830,6 +832,7 @@ SYSCALL_DEFINE3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags)
15977 +@@ -825,6 +827,7 @@ SYSCALL_DEFINE3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags)
15978 if (unlikely(oldfd == newfd))
15979 return -EINVAL;
15980
15981 @@ -60100,7 +62914,7 @@ index 8f294cf..d0f3872 100644
15982 if (newfd >= rlimit(RLIMIT_NOFILE))
15983 return -EBADF;
15984
15985 -@@ -885,6 +888,7 @@ SYSCALL_DEFINE1(dup, unsigned int, fildes)
15986 +@@ -880,6 +883,7 @@ SYSCALL_DEFINE1(dup, unsigned int, fildes)
15987 int f_dupfd(unsigned int from, struct file *file, unsigned flags)
15988 {
15989 int err;
15990 @@ -60212,7 +63026,7 @@ index 7dca743..543d620 100644
15991 .seq = SEQCNT_ZERO(init_fs.seq),
15992 .umask = 0022,
15993 diff --git a/fs/fscache/cookie.c b/fs/fscache/cookie.c
15994 -index 29d7feb..303644d 100644
15995 +index aec01be..cf81ff9 100644
15996 --- a/fs/fscache/cookie.c
15997 +++ b/fs/fscache/cookie.c
15998 @@ -19,7 +19,7 @@
15999 @@ -60357,10 +63171,10 @@ index 29d7feb..303644d 100644
16000 __fscache_use_cookie(cookie);
16001 if (fscache_submit_op(object, op) < 0)
16002 diff --git a/fs/fscache/internal.h b/fs/fscache/internal.h
16003 -index 4226f66..0fb3f45 100644
16004 +index bc6c08f..09c0d96 100644
16005 --- a/fs/fscache/internal.h
16006 +++ b/fs/fscache/internal.h
16007 -@@ -133,8 +133,8 @@ extern void fscache_operation_gc(struct work_struct *);
16008 +@@ -139,8 +139,8 @@ extern void fscache_operation_gc(struct work_struct *);
16009 extern int fscache_wait_for_deferred_lookup(struct fscache_cookie *);
16010 extern int fscache_wait_for_operation_activation(struct fscache_object *,
16011 struct fscache_operation *,
16012 @@ -60371,7 +63185,7 @@ index 4226f66..0fb3f45 100644
16013 void (*)(struct fscache_operation *));
16014 extern void fscache_invalidate_writes(struct fscache_cookie *);
16015
16016 -@@ -153,101 +153,101 @@ extern void fscache_proc_cleanup(void);
16017 +@@ -159,101 +159,101 @@ extern void fscache_proc_cleanup(void);
16018 * stats.c
16019 */
16020 #ifdef CONFIG_FSCACHE_STATS
16021 @@ -60554,7 +63368,7 @@ index 4226f66..0fb3f45 100644
16022
16023 extern atomic_t fscache_n_cop_alloc_object;
16024 extern atomic_t fscache_n_cop_lookup_object;
16025 -@@ -272,6 +272,11 @@ static inline void fscache_stat(atomic_t *stat)
16026 +@@ -278,6 +278,11 @@ static inline void fscache_stat(atomic_t *stat)
16027 atomic_inc(stat);
16028 }
16029
16030 @@ -60566,7 +63380,7 @@ index 4226f66..0fb3f45 100644
16031 static inline void fscache_stat_d(atomic_t *stat)
16032 {
16033 atomic_dec(stat);
16034 -@@ -284,6 +289,7 @@ extern const struct file_operations fscache_stats_fops;
16035 +@@ -290,6 +295,7 @@ extern const struct file_operations fscache_stats_fops;
16036
16037 #define __fscache_stat(stat) (NULL)
16038 #define fscache_stat(stat) do {} while (0)
16039 @@ -60690,7 +63504,7 @@ index d3b4539..ed0c659 100644
16040 object->cache->ops->update_object(object);
16041 fscache_stat_d(&fscache_n_cop_update_object);
16042 diff --git a/fs/fscache/operation.c b/fs/fscache/operation.c
16043 -index 318071a..379938b 100644
16044 +index e7b87a0..a85d47a 100644
16045 --- a/fs/fscache/operation.c
16046 +++ b/fs/fscache/operation.c
16047 @@ -17,7 +17,7 @@
16048 @@ -60711,7 +63525,7 @@ index 318071a..379938b 100644
16049 switch (op->flags & FSCACHE_OP_TYPE) {
16050 case FSCACHE_OP_ASYNC:
16051 _debug("queue async");
16052 -@@ -73,7 +73,7 @@ static void fscache_run_op(struct fscache_object *object,
16053 +@@ -72,7 +72,7 @@ static void fscache_run_op(struct fscache_object *object,
16054 wake_up_bit(&op->flags, FSCACHE_OP_WAITING);
16055 if (op->processor)
16056 fscache_enqueue_operation(op);
16057 @@ -60720,7 +63534,7 @@ index 318071a..379938b 100644
16058 }
16059
16060 /*
16061 -@@ -105,11 +105,11 @@ int fscache_submit_exclusive_op(struct fscache_object *object,
16062 +@@ -104,11 +104,11 @@ int fscache_submit_exclusive_op(struct fscache_object *object,
16063 if (object->n_in_progress > 0) {
16064 atomic_inc(&op->usage);
16065 list_add_tail(&op->pend_link, &object->pending_ops);
16066 @@ -60734,7 +63548,7 @@ index 318071a..379938b 100644
16067 fscache_start_operations(object);
16068 } else {
16069 ASSERTCMP(object->n_in_progress, ==, 0);
16070 -@@ -125,7 +125,7 @@ int fscache_submit_exclusive_op(struct fscache_object *object,
16071 +@@ -124,7 +124,7 @@ int fscache_submit_exclusive_op(struct fscache_object *object,
16072 object->n_exclusive++; /* reads and writes must wait */
16073 atomic_inc(&op->usage);
16074 list_add_tail(&op->pend_link, &object->pending_ops);
16075 @@ -60743,7 +63557,7 @@ index 318071a..379938b 100644
16076 ret = 0;
16077 } else {
16078 /* If we're in any other state, there must have been an I/O
16079 -@@ -212,11 +212,11 @@ int fscache_submit_op(struct fscache_object *object,
16080 +@@ -211,11 +211,11 @@ int fscache_submit_op(struct fscache_object *object,
16081 if (object->n_exclusive > 0) {
16082 atomic_inc(&op->usage);
16083 list_add_tail(&op->pend_link, &object->pending_ops);
16084 @@ -60757,7 +63571,7 @@ index 318071a..379938b 100644
16085 fscache_start_operations(object);
16086 } else {
16087 ASSERTCMP(object->n_exclusive, ==, 0);
16088 -@@ -228,10 +228,10 @@ int fscache_submit_op(struct fscache_object *object,
16089 +@@ -227,10 +227,10 @@ int fscache_submit_op(struct fscache_object *object,
16090 object->n_ops++;
16091 atomic_inc(&op->usage);
16092 list_add_tail(&op->pend_link, &object->pending_ops);
16093 @@ -60770,7 +63584,7 @@ index 318071a..379938b 100644
16094 op->state = FSCACHE_OP_ST_CANCELLED;
16095 ret = -ENOBUFS;
16096 } else if (!test_bit(FSCACHE_IOERROR, &object->cache->flags)) {
16097 -@@ -310,7 +310,7 @@ int fscache_cancel_op(struct fscache_operation *op,
16098 +@@ -309,7 +309,7 @@ int fscache_cancel_op(struct fscache_operation *op,
16099 ret = -EBUSY;
16100 if (op->state == FSCACHE_OP_ST_PENDING) {
16101 ASSERT(!list_empty(&op->pend_link));
16102 @@ -60779,7 +63593,7 @@ index 318071a..379938b 100644
16103 list_del_init(&op->pend_link);
16104 if (do_cancel)
16105 do_cancel(op);
16106 -@@ -342,7 +342,7 @@ void fscache_cancel_all_ops(struct fscache_object *object)
16107 +@@ -341,7 +341,7 @@ void fscache_cancel_all_ops(struct fscache_object *object)
16108 while (!list_empty(&object->pending_ops)) {
16109 op = list_entry(object->pending_ops.next,
16110 struct fscache_operation, pend_link);
16111 @@ -60788,7 +63602,7 @@ index 318071a..379938b 100644
16112 list_del_init(&op->pend_link);
16113
16114 ASSERTCMP(op->state, ==, FSCACHE_OP_ST_PENDING);
16115 -@@ -414,7 +414,7 @@ void fscache_put_operation(struct fscache_operation *op)
16116 +@@ -413,7 +413,7 @@ void fscache_put_operation(struct fscache_operation *op)
16117 op->state, ==, FSCACHE_OP_ST_CANCELLED);
16118 op->state = FSCACHE_OP_ST_DEAD;
16119
16120 @@ -60797,7 +63611,7 @@ index 318071a..379938b 100644
16121
16122 if (op->release) {
16123 op->release(op);
16124 -@@ -433,7 +433,7 @@ void fscache_put_operation(struct fscache_operation *op)
16125 +@@ -432,7 +432,7 @@ void fscache_put_operation(struct fscache_operation *op)
16126 * lock, and defer it otherwise */
16127 if (!spin_trylock(&object->lock)) {
16128 _debug("defer put");
16129 @@ -60806,7 +63620,7 @@ index 318071a..379938b 100644
16130
16131 cache = object->cache;
16132 spin_lock(&cache->op_gc_list_lock);
16133 -@@ -486,7 +486,7 @@ void fscache_operation_gc(struct work_struct *work)
16134 +@@ -485,7 +485,7 @@ void fscache_operation_gc(struct work_struct *work)
16135
16136 _debug("GC DEFERRED REL OBJ%x OP%x",
16137 object->debug_id, op->debug_id);
16138 @@ -60816,7 +63630,7 @@ index 318071a..379938b 100644
16139 ASSERTCMP(atomic_read(&op->usage), ==, 0);
16140 ASSERTCMP(op->state, ==, FSCACHE_OP_ST_DEAD);
16141 diff --git a/fs/fscache/page.c b/fs/fscache/page.c
16142 -index 7f5c658..6c1e164 100644
16143 +index ed70714..67f4982 100644
16144 --- a/fs/fscache/page.c
16145 +++ b/fs/fscache/page.c
16146 @@ -61,7 +61,7 @@ try_again:
16147 @@ -61599,10 +64413,10 @@ index 40d13c7..ddf52b9 100644
16148 seq_printf(m, "CacheOp: alo=%d luo=%d luc=%d gro=%d\n",
16149 atomic_read(&fscache_n_cop_alloc_object),
16150 diff --git a/fs/fuse/cuse.c b/fs/fuse/cuse.c
16151 -index 13b691a..1ffca5ae 100644
16152 +index 966ace8..030a03a 100644
16153 --- a/fs/fuse/cuse.c
16154 +++ b/fs/fuse/cuse.c
16155 -@@ -607,10 +607,12 @@ static int __init cuse_init(void)
16156 +@@ -611,10 +611,12 @@ static int __init cuse_init(void)
16157 INIT_LIST_HEAD(&cuse_conntbl[i]);
16158
16159 /* inherit and extend fuse_dev_operations */
16160 @@ -61620,7 +64434,7 @@ index 13b691a..1ffca5ae 100644
16161 cuse_class = class_create(THIS_MODULE, "cuse");
16162 if (IS_ERR(cuse_class))
16163 diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
16164 -index 75fa055..73b76d8 100644
16165 +index ca88731..8e9c55d 100644
16166 --- a/fs/fuse/dev.c
16167 +++ b/fs/fuse/dev.c
16168 @@ -1318,7 +1318,7 @@ static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos,
16169 @@ -61642,10 +64456,10 @@ index 75fa055..73b76d8 100644
16170 }
16171
16172 diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
16173 -index 202a972..c4836eb 100644
16174 +index 0c60482..025724f 100644
16175 --- a/fs/fuse/dir.c
16176 +++ b/fs/fuse/dir.c
16177 -@@ -1479,7 +1479,7 @@ static char *read_link(struct dentry *dentry)
16178 +@@ -1485,7 +1485,7 @@ static char *read_link(struct dentry *dentry)
16179 return link;
16180 }
16181
16182 @@ -61655,7 +64469,7 @@ index 202a972..c4836eb 100644
16183 if (!IS_ERR(link))
16184 free_page((unsigned long) link);
16185 diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c
16186 -index 9c470fd..aae410e 100644
16187 +index bb529f3..454c253 100644
16188 --- a/fs/hostfs/hostfs_kern.c
16189 +++ b/fs/hostfs/hostfs_kern.c
16190 @@ -898,7 +898,7 @@ static void *hostfs_follow_link(struct dentry *dentry, struct nameidata *nd)
16191 @@ -61668,10 +64482,10 @@ index 9c470fd..aae410e 100644
16192 __putname(s);
16193 }
16194 diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
16195 -index e19d4c0..8a357a9 100644
16196 +index 1e2872b..7aea000 100644
16197 --- a/fs/hugetlbfs/inode.c
16198 +++ b/fs/hugetlbfs/inode.c
16199 -@@ -152,6 +152,7 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
16200 +@@ -154,6 +154,7 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
16201 struct mm_struct *mm = current->mm;
16202 struct vm_area_struct *vma;
16203 struct hstate *h = hstate_file(file);
16204 @@ -61679,7 +64493,7 @@ index e19d4c0..8a357a9 100644
16205 struct vm_unmapped_area_info info;
16206
16207 if (len & ~huge_page_mask(h))
16208 -@@ -165,17 +166,26 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
16209 +@@ -167,17 +168,26 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
16210 return addr;
16211 }
16212
16213 @@ -61708,7 +64522,7 @@ index e19d4c0..8a357a9 100644
16214 info.high_limit = TASK_SIZE;
16215 info.align_mask = PAGE_MASK & ~huge_page_mask(h);
16216 info.align_offset = 0;
16217 -@@ -921,7 +931,7 @@ static struct file_system_type hugetlbfs_fs_type = {
16218 +@@ -919,7 +929,7 @@ static struct file_system_type hugetlbfs_fs_type = {
16219 };
16220 MODULE_ALIAS_FS("hugetlbfs");
16221
16222 @@ -61718,7 +64532,7 @@ index e19d4c0..8a357a9 100644
16223 static int can_do_hugetlb_shm(void)
16224 {
16225 diff --git a/fs/inode.c b/fs/inode.c
16226 -index d2fb2f2..a6444b0 100644
16227 +index 6eecb7f..abec305 100644
16228 --- a/fs/inode.c
16229 +++ b/fs/inode.c
16230 @@ -839,16 +839,20 @@ unsigned int get_next_ino(void)
16231 @@ -61953,10 +64767,10 @@ index a6597d6..41b30ec 100644
16232
16233 /*
16234 diff --git a/fs/jfs/super.c b/fs/jfs/super.c
16235 -index 97f7fda..09bd33d 100644
16236 +index adf8cb0..bb935fa 100644
16237 --- a/fs/jfs/super.c
16238 +++ b/fs/jfs/super.c
16239 -@@ -885,7 +885,7 @@ static int __init init_jfs_fs(void)
16240 +@@ -893,7 +893,7 @@ static int __init init_jfs_fs(void)
16241
16242 jfs_inode_cachep =
16243 kmem_cache_create("jfs_ip", sizeof(struct jfs_inode_info), 0,
16244 @@ -61979,10 +64793,10 @@ index a693f5b..82276a1 100644
16245 unsigned long hash = init_name_hash();
16246 unsigned int len = strlen(name);
16247 diff --git a/fs/kernfs/file.c b/fs/kernfs/file.c
16248 -index 5e9a80c..3853a24 100644
16249 +index d895b4b..0b8af77 100644
16250 --- a/fs/kernfs/file.c
16251 +++ b/fs/kernfs/file.c
16252 -@@ -33,7 +33,7 @@ static DEFINE_MUTEX(kernfs_open_file_mutex);
16253 +@@ -34,7 +34,7 @@ static DEFINE_MUTEX(kernfs_open_file_mutex);
16254
16255 struct kernfs_open_node {
16256 atomic_t refcnt;
16257 @@ -61991,7 +64805,7 @@ index 5e9a80c..3853a24 100644
16258 wait_queue_head_t poll;
16259 struct list_head files; /* goes through kernfs_open_file.list */
16260 };
16261 -@@ -149,7 +149,7 @@ static int kernfs_seq_show(struct seq_file *sf, void *v)
16262 +@@ -163,7 +163,7 @@ static int kernfs_seq_show(struct seq_file *sf, void *v)
16263 {
16264 struct kernfs_open_file *of = sf->private;
16265
16266 @@ -62000,7 +64814,7 @@ index 5e9a80c..3853a24 100644
16267
16268 return of->kn->attr.ops->seq_show(sf, v);
16269 }
16270 -@@ -361,12 +361,12 @@ static int kernfs_vma_page_mkwrite(struct vm_area_struct *vma,
16271 +@@ -375,12 +375,12 @@ static int kernfs_vma_page_mkwrite(struct vm_area_struct *vma,
16272 return ret;
16273 }
16274
16275 @@ -62016,7 +64830,7 @@ index 5e9a80c..3853a24 100644
16276
16277 if (!of->vm_ops)
16278 return -EINVAL;
16279 -@@ -567,7 +567,7 @@ static int kernfs_get_open_node(struct kernfs_node *kn,
16280 +@@ -581,7 +581,7 @@ static int kernfs_get_open_node(struct kernfs_node *kn,
16281 return -ENOMEM;
16282
16283 atomic_set(&new_on->refcnt, 0);
16284 @@ -62025,7 +64839,7 @@ index 5e9a80c..3853a24 100644
16285 init_waitqueue_head(&new_on->poll);
16286 INIT_LIST_HEAD(&new_on->files);
16287 goto retry;
16288 -@@ -773,7 +773,7 @@ static unsigned int kernfs_fop_poll(struct file *filp, poll_table *wait)
16289 +@@ -787,7 +787,7 @@ static unsigned int kernfs_fop_poll(struct file *filp, poll_table *wait)
16290
16291 kernfs_put_active(kn);
16292
16293 @@ -62034,15 +64848,15 @@ index 5e9a80c..3853a24 100644
16294 goto trigger;
16295
16296 return DEFAULT_POLLMASK;
16297 -@@ -798,7 +798,7 @@ void kernfs_notify(struct kernfs_node *kn)
16298 - if (!WARN_ON(kernfs_type(kn) != KERNFS_FILE)) {
16299 - on = kn->attr.open;
16300 - if (on) {
16301 -- atomic_inc(&on->event);
16302 -+ atomic_inc_unchecked(&on->event);
16303 - wake_up_interruptible(&on->poll);
16304 - }
16305 +@@ -818,7 +818,7 @@ repeat:
16306 +
16307 + on = kn->attr.open;
16308 + if (on) {
16309 +- atomic_inc(&on->event);
16310 ++ atomic_inc_unchecked(&on->event);
16311 + wake_up_interruptible(&on->poll);
16312 }
16313 +
16314 diff --git a/fs/kernfs/symlink.c b/fs/kernfs/symlink.c
16315 index 8a19889..4c3069a 100644
16316 --- a/fs/kernfs/symlink.c
16317 @@ -62057,10 +64871,10 @@ index 8a19889..4c3069a 100644
16318 free_page((unsigned long)page);
16319 }
16320 diff --git a/fs/libfs.c b/fs/libfs.c
16321 -index a184424..944ddce 100644
16322 +index 88e3e00..979c262 100644
16323 --- a/fs/libfs.c
16324 +++ b/fs/libfs.c
16325 -@@ -159,6 +159,9 @@ int dcache_readdir(struct file *file, struct dir_context *ctx)
16326 +@@ -160,6 +160,9 @@ int dcache_readdir(struct file *file, struct dir_context *ctx)
16327
16328 for (p = q->next; p != &dentry->d_subdirs; p = p->next) {
16329 struct dentry *next = list_entry(p, struct dentry, d_u.d_child);
16330 @@ -62070,7 +64884,7 @@ index a184424..944ddce 100644
16331 spin_lock_nested(&next->d_lock, DENTRY_D_LOCK_NESTED);
16332 if (!simple_positive(next)) {
16333 spin_unlock(&next->d_lock);
16334 -@@ -167,7 +170,12 @@ int dcache_readdir(struct file *file, struct dir_context *ctx)
16335 +@@ -168,7 +171,12 @@ int dcache_readdir(struct file *file, struct dir_context *ctx)
16336
16337 spin_unlock(&next->d_lock);
16338 spin_unlock(&dentry->d_lock);
16339 @@ -62084,7 +64898,7 @@ index a184424..944ddce 100644
16340 next->d_inode->i_ino, dt_type(next->d_inode)))
16341 return 0;
16342 spin_lock(&dentry->d_lock);
16343 -@@ -999,7 +1007,7 @@ EXPORT_SYMBOL(noop_fsync);
16344 +@@ -1027,7 +1035,7 @@ EXPORT_SYMBOL(noop_fsync);
16345 void kfree_put_link(struct dentry *dentry, struct nameidata *nd,
16346 void *cookie)
16347 {
16348 @@ -62112,18 +64926,19 @@ index acd3947..1f896e2 100644
16349 memcpy(c->data, &cookie, 4);
16350 c->len=4;
16351 diff --git a/fs/locks.c b/fs/locks.c
16352 -index e390bd9..c79870e 100644
16353 +index 717fbc4..74628c3 100644
16354 --- a/fs/locks.c
16355 +++ b/fs/locks.c
16356 -@@ -2315,16 +2315,16 @@ void locks_remove_file(struct file *filp)
16357 +@@ -2327,7 +2327,7 @@ void locks_remove_file(struct file *filp)
16358 locks_remove_posix(filp, (fl_owner_t)filp);
16359
16360 if (filp->f_op->flock) {
16361 - struct file_lock fl = {
16362 + struct file_lock flock = {
16363 + .fl_owner = (fl_owner_t)filp,
16364 .fl_pid = current->tgid,
16365 .fl_file = filp,
16366 - .fl_flags = FL_FLOCK,
16367 +@@ -2335,9 +2335,9 @@ void locks_remove_file(struct file *filp)
16368 .fl_type = F_UNLCK,
16369 .fl_end = OFFSET_MAX,
16370 };
16371 @@ -62862,10 +65677,10 @@ index f4ccfe6..a5cf064 100644
16372 static struct callback_op callback_ops[];
16373
16374 diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
16375 -index c79f3e7..d61d671 100644
16376 +index 9927913..faffc5c 100644
16377 --- a/fs/nfs/inode.c
16378 +++ b/fs/nfs/inode.c
16379 -@@ -1209,16 +1209,16 @@ static int nfs_size_need_update(const struct inode *inode, const struct nfs_fatt
16380 +@@ -1219,16 +1219,16 @@ static int nfs_size_need_update(const struct inode *inode, const struct nfs_fatt
16381 return nfs_size_to_loff_t(fattr->size) > i_size_read(inode);
16382 }
16383
16384 @@ -62899,10 +65714,10 @@ index 8f854dd..d0fec26 100644
16385
16386 posix_acl_release(acl);
16387 diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
16388 -index 95e3720..46c23fa 100644
16389 +index 8f029db..3688b84 100644
16390 --- a/fs/nfsd/nfs4proc.c
16391 +++ b/fs/nfsd/nfs4proc.c
16392 -@@ -1169,7 +1169,7 @@ struct nfsd4_operation {
16393 +@@ -1157,7 +1157,7 @@ struct nfsd4_operation {
16394 nfsd4op_rsize op_rsize_bop;
16395 stateid_getter op_get_currentstateid;
16396 stateid_setter op_set_currentstateid;
16397 @@ -62912,10 +65727,10 @@ index 95e3720..46c23fa 100644
16398 static struct nfsd4_operation nfsd4_ops[];
16399
16400 diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
16401 -index 3297158..7bb8436 100644
16402 +index 944275c..6fc40a7 100644
16403 --- a/fs/nfsd/nfs4xdr.c
16404 +++ b/fs/nfsd/nfs4xdr.c
16405 -@@ -1541,7 +1541,7 @@ nfsd4_decode_notsupp(struct nfsd4_compoundargs *argp, void *p)
16406 +@@ -1539,7 +1539,7 @@ nfsd4_decode_notsupp(struct nfsd4_compoundargs *argp, void *p)
16407
16408 typedef __be32(*nfsd4_dec)(struct nfsd4_compoundargs *argp, void *);
16409
16410 @@ -62925,10 +65740,10 @@ index 3297158..7bb8436 100644
16411 [OP_CLOSE] = (nfsd4_dec)nfsd4_decode_close,
16412 [OP_COMMIT] = (nfsd4_dec)nfsd4_decode_commit,
16413 diff --git a/fs/nfsd/nfscache.c b/fs/nfsd/nfscache.c
16414 -index f8f060f..c4ba09a 100644
16415 +index 6040da8..4348565 100644
16416 --- a/fs/nfsd/nfscache.c
16417 +++ b/fs/nfsd/nfscache.c
16418 -@@ -519,14 +519,17 @@ nfsd_cache_update(struct svc_rqst *rqstp, int cachetype, __be32 *statp)
16419 +@@ -518,17 +518,20 @@ nfsd_cache_update(struct svc_rqst *rqstp, int cachetype, __be32 *statp)
16420 {
16421 struct svc_cacherep *rp = rqstp->rq_cacherep;
16422 struct kvec *resv = &rqstp->rq_res.head[0], *cachv;
16423 @@ -62948,21 +65763,34 @@ index f8f060f..c4ba09a 100644
16424 + }
16425
16426 /* Don't cache excessive amounts of data and XDR failures */
16427 - if (!statp || len > (256 >> 2)) {
16428 +- if (!statp || len > (256 >> 2)) {
16429 ++ if (!statp || len > (256 >> 2) || len < 0) {
16430 + nfsd_reply_cache_free(rp);
16431 + return;
16432 + }
16433 +@@ -536,7 +539,7 @@ nfsd_cache_update(struct svc_rqst *rqstp, int cachetype, __be32 *statp)
16434 + switch (cachetype) {
16435 + case RC_REPLSTAT:
16436 + if (len != 1)
16437 +- printk("nfsd: RC_REPLSTAT/reply len %d!\n",len);
16438 ++ printk("nfsd: RC_REPLSTAT/reply len %ld!\n",len);
16439 + rp->c_replstat = *statp;
16440 + break;
16441 + case RC_REPLBUFF:
16442 diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
16443 -index 16f0673..1c2c30ab 100644
16444 +index 140c496..e9cbf14 100644
16445 --- a/fs/nfsd/vfs.c
16446 +++ b/fs/nfsd/vfs.c
16447 -@@ -843,7 +843,7 @@ nfsd_vfs_read(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
16448 - } else {
16449 - oldfs = get_fs();
16450 - set_fs(KERNEL_DS);
16451 -- host_err = vfs_readv(file, (struct iovec __user *)vec, vlen, &offset);
16452 -+ host_err = vfs_readv(file, (struct iovec __force_user *)vec, vlen, &offset);
16453 - set_fs(oldfs);
16454 - }
16455 +@@ -855,7 +855,7 @@ int nfsd_readv(struct file *file, loff_t offset, struct kvec *vec, int vlen,
16456
16457 -@@ -934,7 +934,7 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
16458 + oldfs = get_fs();
16459 + set_fs(KERNEL_DS);
16460 +- host_err = vfs_readv(file, (struct iovec __user *)vec, vlen, &offset);
16461 ++ host_err = vfs_readv(file, (struct iovec __force_user *)vec, vlen, &offset);
16462 + set_fs(oldfs);
16463 + return nfsd_finish_read(file, count, host_err);
16464 + }
16465 +@@ -943,7 +943,7 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
16466
16467 /* Write the data. */
16468 oldfs = get_fs(); set_fs(KERNEL_DS);
16469 @@ -62971,7 +65799,7 @@ index 16f0673..1c2c30ab 100644
16470 set_fs(oldfs);
16471 if (host_err < 0)
16472 goto out_nfserr;
16473 -@@ -1479,7 +1479,7 @@ nfsd_readlink(struct svc_rqst *rqstp, struct svc_fh *fhp, char *buf, int *lenp)
16474 +@@ -1482,7 +1482,7 @@ nfsd_readlink(struct svc_rqst *rqstp, struct svc_fh *fhp, char *buf, int *lenp)
16475 */
16476
16477 oldfs = get_fs(); set_fs(KERNEL_DS);
16478 @@ -62981,7 +65809,7 @@ index 16f0673..1c2c30ab 100644
16479
16480 if (host_err < 0)
16481 diff --git a/fs/nls/nls_base.c b/fs/nls/nls_base.c
16482 -index 52ccd34..43a53b1 100644
16483 +index 52ccd34..7a6b202 100644
16484 --- a/fs/nls/nls_base.c
16485 +++ b/fs/nls/nls_base.c
16486 @@ -234,21 +234,25 @@ EXPORT_SYMBOL(utf16s_to_utf8s);
16487 @@ -63033,6 +65861,24 @@ index 52ccd34..43a53b1 100644
16488 spin_unlock(&nls_lock);
16489 return 0;
16490 }
16491 +@@ -272,7 +278,7 @@ int unregister_nls(struct nls_table * nls)
16492 + return -EINVAL;
16493 + }
16494 +
16495 +-static struct nls_table *find_nls(char *charset)
16496 ++static struct nls_table *find_nls(const char *charset)
16497 + {
16498 + struct nls_table *nls;
16499 + spin_lock(&nls_lock);
16500 +@@ -288,7 +294,7 @@ static struct nls_table *find_nls(char *charset)
16501 + return nls;
16502 + }
16503 +
16504 +-struct nls_table *load_nls(char *charset)
16505 ++struct nls_table *load_nls(const char *charset)
16506 + {
16507 + return try_then_request_module(find_nls(charset), "nls_%s", charset);
16508 + }
16509 diff --git a/fs/nls/nls_euc-jp.c b/fs/nls/nls_euc-jp.c
16510 index 162b3f1..6076a7c 100644
16511 --- a/fs/nls/nls_euc-jp.c
16512 @@ -63068,10 +65914,10 @@ index a80a741..7b96e1b 100644
16513 }
16514
16515 diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c
16516 -index 732648b..d3b017f 100644
16517 +index 3fdc8a3..5888623 100644
16518 --- a/fs/notify/fanotify/fanotify_user.c
16519 +++ b/fs/notify/fanotify/fanotify_user.c
16520 -@@ -203,8 +203,8 @@ static ssize_t copy_event_to_user(struct fsnotify_group *group,
16521 +@@ -216,8 +216,8 @@ static ssize_t copy_event_to_user(struct fsnotify_group *group,
16522
16523 fd = fanotify_event_metadata.fd;
16524 ret = -EFAULT;
16525 @@ -63118,7 +65964,7 @@ index 9e38daf..5727cae 100644
16526 "inode 0x%lx or driver bug.", vdir->i_ino);
16527 goto err_out;
16528 diff --git a/fs/ntfs/file.c b/fs/ntfs/file.c
16529 -index db9bd8a..8338fb6 100644
16530 +index 5c9e2c8..96e4ba0 100644
16531 --- a/fs/ntfs/file.c
16532 +++ b/fs/ntfs/file.c
16533 @@ -1282,7 +1282,7 @@ static inline size_t ntfs_copy_from_user(struct page **pages,
16534 @@ -63131,7 +65977,7 @@ index db9bd8a..8338fb6 100644
16535 do {
16536 len = PAGE_CACHE_SIZE - ofs;
16537 diff --git a/fs/ntfs/super.c b/fs/ntfs/super.c
16538 -index 9de2491..3306095 100644
16539 +index 6c3296e..c0b99f0 100644
16540 --- a/fs/ntfs/super.c
16541 +++ b/fs/ntfs/super.c
16542 @@ -688,7 +688,7 @@ static struct buffer_head *read_ntfs_boot_sector(struct super_block *sb,
16543 @@ -63175,7 +66021,7 @@ index 0440134..d52c93a 100644
16544 bail:
16545 if (handle)
16546 diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h
16547 -index 8d64a97..c37665d 100644
16548 +index bbec539..7b266d5 100644
16549 --- a/fs/ocfs2/ocfs2.h
16550 +++ b/fs/ocfs2/ocfs2.h
16551 @@ -236,11 +236,11 @@ enum ocfs2_vol_state
16552 @@ -63254,7 +66100,7 @@ index 0cb889a..6a26b24 100644
16553 }
16554 }
16555 diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
16556 -index a7cdd56..c583144 100644
16557 +index ddb662b..f701c83 100644
16558 --- a/fs/ocfs2/super.c
16559 +++ b/fs/ocfs2/super.c
16560 @@ -300,11 +300,11 @@ static int ocfs2_osb_dump(struct ocfs2_super *osb, char *buf, int len)
16561 @@ -63274,7 +66120,7 @@ index a7cdd56..c583144 100644
16562
16563 out += snprintf(buf + out, len - out,
16564 "%10s => State: %u Descriptor: %llu Size: %u bits "
16565 -@@ -2104,11 +2104,11 @@ static int ocfs2_initialize_super(struct super_block *sb,
16566 +@@ -2100,11 +2100,11 @@ static int ocfs2_initialize_super(struct super_block *sb,
16567
16568 mutex_init(&osb->system_file_mutex);
16569
16570 @@ -63292,7 +66138,7 @@ index a7cdd56..c583144 100644
16571 /* Copy the blockcheck stats from the superblock probe */
16572 osb->osb_ecc_stats = *stats;
16573 diff --git a/fs/open.c b/fs/open.c
16574 -index dd24f21..c1f4b3a 100644
16575 +index d6fd3ac..6ccf474 100644
16576 --- a/fs/open.c
16577 +++ b/fs/open.c
16578 @@ -32,6 +32,8 @@
16579 @@ -63396,7 +66242,7 @@ index dd24f21..c1f4b3a 100644
16580 newattrs.ia_valid = ATTR_CTIME;
16581 if (user != (uid_t) -1) {
16582 if (!uid_valid(uid))
16583 -@@ -977,6 +1014,7 @@ long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode)
16584 +@@ -983,6 +1020,7 @@ long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode)
16585 } else {
16586 fsnotify_open(f);
16587 fd_install(fd, f);
16588 @@ -63405,7 +66251,7 @@ index dd24f21..c1f4b3a 100644
16589 }
16590 putname(tmp);
16591 diff --git a/fs/pipe.c b/fs/pipe.c
16592 -index 034bffa..6c6b522 100644
16593 +index 21981e5..3d5f55c 100644
16594 --- a/fs/pipe.c
16595 +++ b/fs/pipe.c
16596 @@ -56,7 +56,7 @@ unsigned int pipe_min_size = PAGE_SIZE;
16597 @@ -63426,7 +66272,7 @@ index 034bffa..6c6b522 100644
16598 mutex_unlock(&pipe->mutex);
16599 }
16600 EXPORT_SYMBOL(pipe_unlock);
16601 -@@ -342,9 +342,9 @@ pipe_read(struct kiocb *iocb, const struct iovec *_iov,
16602 +@@ -292,9 +292,9 @@ pipe_read(struct kiocb *iocb, struct iov_iter *to)
16603 }
16604 if (bufs) /* More to do? */
16605 continue;
16606 @@ -63438,8 +66284,8 @@ index 034bffa..6c6b522 100644
16607 /* syscall merging: Usually we must not sleep
16608 * if O_NONBLOCK is set, or if we got some data.
16609 * But if a writer sleeps in kernel space, then
16610 -@@ -406,7 +406,7 @@ pipe_write(struct kiocb *iocb, const struct iovec *_iov,
16611 - ret = 0;
16612 +@@ -351,7 +351,7 @@ pipe_write(struct kiocb *iocb, struct iov_iter *from)
16613 +
16614 __pipe_lock(pipe);
16615
16616 - if (!pipe->readers) {
16617 @@ -63447,7 +66293,7 @@ index 034bffa..6c6b522 100644
16618 send_sig(SIGPIPE, current, 0);
16619 ret = -EPIPE;
16620 goto out;
16621 -@@ -461,7 +461,7 @@ redo1:
16622 +@@ -387,7 +387,7 @@ pipe_write(struct kiocb *iocb, struct iov_iter *from)
16623 for (;;) {
16624 int bufs;
16625
16626 @@ -63456,7 +66302,7 @@ index 034bffa..6c6b522 100644
16627 send_sig(SIGPIPE, current, 0);
16628 if (!ret)
16629 ret = -EPIPE;
16630 -@@ -552,9 +552,9 @@ redo2:
16631 +@@ -455,9 +455,9 @@ pipe_write(struct kiocb *iocb, struct iov_iter *from)
16632 kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
16633 do_wakeup = 0;
16634 }
16635 @@ -63468,7 +66314,7 @@ index 034bffa..6c6b522 100644
16636 }
16637 out:
16638 __pipe_unlock(pipe);
16639 -@@ -609,7 +609,7 @@ pipe_poll(struct file *filp, poll_table *wait)
16640 +@@ -512,7 +512,7 @@ pipe_poll(struct file *filp, poll_table *wait)
16641 mask = 0;
16642 if (filp->f_mode & FMODE_READ) {
16643 mask = (nrbufs > 0) ? POLLIN | POLLRDNORM : 0;
16644 @@ -63477,7 +66323,7 @@ index 034bffa..6c6b522 100644
16645 mask |= POLLHUP;
16646 }
16647
16648 -@@ -619,7 +619,7 @@ pipe_poll(struct file *filp, poll_table *wait)
16649 +@@ -522,7 +522,7 @@ pipe_poll(struct file *filp, poll_table *wait)
16650 * Most Unices do not set POLLERR for FIFOs but on Linux they
16651 * behave exactly like pipes for poll().
16652 */
16653 @@ -63486,7 +66332,7 @@ index 034bffa..6c6b522 100644
16654 mask |= POLLERR;
16655 }
16656
16657 -@@ -631,7 +631,7 @@ static void put_pipe_info(struct inode *inode, struct pipe_inode_info *pipe)
16658 +@@ -534,7 +534,7 @@ static void put_pipe_info(struct inode *inode, struct pipe_inode_info *pipe)
16659 int kill = 0;
16660
16661 spin_lock(&inode->i_lock);
16662 @@ -63495,7 +66341,7 @@ index 034bffa..6c6b522 100644
16663 inode->i_pipe = NULL;
16664 kill = 1;
16665 }
16666 -@@ -648,11 +648,11 @@ pipe_release(struct inode *inode, struct file *file)
16667 +@@ -551,11 +551,11 @@ pipe_release(struct inode *inode, struct file *file)
16668
16669 __pipe_lock(pipe);
16670 if (file->f_mode & FMODE_READ)
16671 @@ -63510,7 +66356,7 @@ index 034bffa..6c6b522 100644
16672 wake_up_interruptible_sync_poll(&pipe->wait, POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM | POLLERR | POLLHUP);
16673 kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
16674 kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT);
16675 -@@ -717,7 +717,7 @@ void free_pipe_info(struct pipe_inode_info *pipe)
16676 +@@ -620,7 +620,7 @@ void free_pipe_info(struct pipe_inode_info *pipe)
16677 kfree(pipe);
16678 }
16679
16680 @@ -63519,7 +66365,7 @@ index 034bffa..6c6b522 100644
16681
16682 /*
16683 * pipefs_dname() is called from d_path().
16684 -@@ -747,8 +747,9 @@ static struct inode * get_pipe_inode(void)
16685 +@@ -650,8 +650,9 @@ static struct inode * get_pipe_inode(void)
16686 goto fail_iput;
16687
16688 inode->i_pipe = pipe;
16689 @@ -63531,7 +66377,7 @@ index 034bffa..6c6b522 100644
16690 inode->i_fop = &pipefifo_fops;
16691
16692 /*
16693 -@@ -927,17 +928,17 @@ static int fifo_open(struct inode *inode, struct file *filp)
16694 +@@ -830,17 +831,17 @@ static int fifo_open(struct inode *inode, struct file *filp)
16695 spin_lock(&inode->i_lock);
16696 if (inode->i_pipe) {
16697 pipe = inode->i_pipe;
16698 @@ -63552,7 +66398,7 @@ index 034bffa..6c6b522 100644
16699 spin_unlock(&inode->i_lock);
16700 free_pipe_info(pipe);
16701 pipe = inode->i_pipe;
16702 -@@ -962,10 +963,10 @@ static int fifo_open(struct inode *inode, struct file *filp)
16703 +@@ -865,10 +866,10 @@ static int fifo_open(struct inode *inode, struct file *filp)
16704 * opened, even when there is no process writing the FIFO.
16705 */
16706 pipe->r_counter++;
16707 @@ -63565,7 +66411,7 @@ index 034bffa..6c6b522 100644
16708 if ((filp->f_flags & O_NONBLOCK)) {
16709 /* suppress POLLHUP until we have
16710 * seen a writer */
16711 -@@ -984,14 +985,14 @@ static int fifo_open(struct inode *inode, struct file *filp)
16712 +@@ -887,14 +888,14 @@ static int fifo_open(struct inode *inode, struct file *filp)
16713 * errno=ENXIO when there is no process reading the FIFO.
16714 */
16715 ret = -ENXIO;
16716 @@ -63583,7 +66429,7 @@ index 034bffa..6c6b522 100644
16717 if (wait_for_partner(pipe, &pipe->r_counter))
16718 goto err_wr;
16719 }
16720 -@@ -1005,11 +1006,11 @@ static int fifo_open(struct inode *inode, struct file *filp)
16721 +@@ -908,11 +909,11 @@ static int fifo_open(struct inode *inode, struct file *filp)
16722 * the process can at least talk to itself.
16723 */
16724
16725 @@ -63598,7 +66444,7 @@ index 034bffa..6c6b522 100644
16726 wake_up_partner(pipe);
16727 break;
16728
16729 -@@ -1023,13 +1024,13 @@ static int fifo_open(struct inode *inode, struct file *filp)
16730 +@@ -926,13 +927,13 @@ static int fifo_open(struct inode *inode, struct file *filp)
16731 return 0;
16732
16733 err_rd:
16734 @@ -64967,7 +67813,7 @@ index 5dbadec..473af2f 100644
16735 }
16736
16737 diff --git a/fs/proc/stat.c b/fs/proc/stat.c
16738 -index 9d231e9..2e1b51a 100644
16739 +index bf2d03f..f058f9c 100644
16740 --- a/fs/proc/stat.c
16741 +++ b/fs/proc/stat.c
16742 @@ -11,6 +11,7 @@
16743 @@ -65084,7 +67930,7 @@ index 9d231e9..2e1b51a 100644
16744 seq_printf(p, "softirq %llu", (unsigned long long)sum_softirq);
16745
16746 diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
16747 -index c4b2646..84f0d7b 100644
16748 +index cfa63ee..fce112e 100644
16749 --- a/fs/proc/task_mmu.c
16750 +++ b/fs/proc/task_mmu.c
16751 @@ -13,12 +13,19 @@
16752 @@ -65184,7 +68030,7 @@ index c4b2646..84f0d7b 100644
16753 goto done;
16754 }
16755
16756 -@@ -322,8 +350,9 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
16757 +@@ -328,8 +356,9 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
16758 * Thread stack in /proc/PID/task/TID/maps or
16759 * the main process stack.
16760 */
16761 @@ -65196,7 +68042,7 @@ index c4b2646..84f0d7b 100644
16762 name = "[stack]";
16763 } else {
16764 /* Thread stack in /proc/PID/maps */
16765 -@@ -347,6 +376,13 @@ static int show_map(struct seq_file *m, void *v, int is_pid)
16766 +@@ -353,6 +382,13 @@ static int show_map(struct seq_file *m, void *v, int is_pid)
16767 struct proc_maps_private *priv = m->private;
16768 struct task_struct *task = priv->task;
16769
16770 @@ -65210,7 +68056,7 @@ index c4b2646..84f0d7b 100644
16771 show_map_vma(m, vma, is_pid);
16772
16773 if (m->count < m->size) /* vma is copied successfully */
16774 -@@ -587,12 +623,23 @@ static int show_smap(struct seq_file *m, void *v, int is_pid)
16775 +@@ -593,12 +629,23 @@ static int show_smap(struct seq_file *m, void *v, int is_pid)
16776 .private = &mss,
16777 };
16778
16779 @@ -65239,7 +68085,7 @@ index c4b2646..84f0d7b 100644
16780 show_map_vma(m, vma, is_pid);
16781
16782 seq_printf(m,
16783 -@@ -610,7 +657,11 @@ static int show_smap(struct seq_file *m, void *v, int is_pid)
16784 +@@ -616,7 +663,11 @@ static int show_smap(struct seq_file *m, void *v, int is_pid)
16785 "KernelPageSize: %8lu kB\n"
16786 "MMUPageSize: %8lu kB\n"
16787 "Locked: %8lu kB\n",
16788 @@ -65251,7 +68097,7 @@ index c4b2646..84f0d7b 100644
16789 mss.resident >> 10,
16790 (unsigned long)(mss.pss >> (10 + PSS_SHIFT)),
16791 mss.shared_clean >> 10,
16792 -@@ -1388,6 +1439,13 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
16793 +@@ -1398,6 +1449,13 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
16794 char buffer[64];
16795 int nid;
16796
16797 @@ -65265,7 +68111,7 @@ index c4b2646..84f0d7b 100644
16798 if (!mm)
16799 return 0;
16800
16801 -@@ -1405,11 +1463,15 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
16802 +@@ -1415,11 +1473,15 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
16803 mpol_to_str(buffer, sizeof(buffer), pol);
16804 mpol_cond_put(pol);
16805
16806 @@ -65276,11 +68122,11 @@ index c4b2646..84f0d7b 100644
16807 +#endif
16808
16809 if (file) {
16810 - seq_printf(m, " file=");
16811 + seq_puts(m, " file=");
16812 - seq_path(m, &file->f_path, "\n\t= ");
16813 + seq_path(m, &file->f_path, "\n\t\\= ");
16814 } else if (vma->vm_start <= mm->brk && vma->vm_end >= mm->start_brk) {
16815 - seq_printf(m, " heap");
16816 + seq_puts(m, " heap");
16817 } else {
16818 diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c
16819 index 678455d..ebd3245 100644
16820 @@ -65305,7 +68151,7 @@ index 678455d..ebd3245 100644
16821 pid_t tid = vm_is_stack(priv->task, vma, is_pid);
16822
16823 diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c
16824 -index 6a8e785..41f2a6c 100644
16825 +index 382aa89..6b03974 100644
16826 --- a/fs/proc/vmcore.c
16827 +++ b/fs/proc/vmcore.c
16828 @@ -105,9 +105,13 @@ static ssize_t read_from_oldmem(char *buf, size_t count,
16829 @@ -65397,10 +68243,10 @@ index 72d2917..c917c12 100644
16830 if (!msg_head) {
16831 printk(KERN_ERR
16832 diff --git a/fs/read_write.c b/fs/read_write.c
16833 -index 31c6efa..a068805 100644
16834 +index 009d854..16ce214 100644
16835 --- a/fs/read_write.c
16836 +++ b/fs/read_write.c
16837 -@@ -450,7 +450,7 @@ ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t
16838 +@@ -495,7 +495,7 @@ ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t
16839
16840 old_fs = get_fs();
16841 set_fs(get_ds());
16842 @@ -65410,10 +68256,10 @@ index 31c6efa..a068805 100644
16843 count = MAX_RW_COUNT;
16844 if (file->f_op->write)
16845 diff --git a/fs/readdir.c b/fs/readdir.c
16846 -index 5b53d99..a6c3049 100644
16847 +index 33fd922..e0d6094 100644
16848 --- a/fs/readdir.c
16849 +++ b/fs/readdir.c
16850 -@@ -17,6 +17,7 @@
16851 +@@ -18,6 +18,7 @@
16852 #include <linux/security.h>
16853 #include <linux/syscalls.h>
16854 #include <linux/unistd.h>
16855 @@ -65421,7 +68267,7 @@ index 5b53d99..a6c3049 100644
16856
16857 #include <asm/uaccess.h>
16858
16859 -@@ -69,6 +70,7 @@ struct old_linux_dirent {
16860 +@@ -71,6 +72,7 @@ struct old_linux_dirent {
16861 struct readdir_callback {
16862 struct dir_context ctx;
16863 struct old_linux_dirent __user * dirent;
16864 @@ -65429,7 +68275,7 @@ index 5b53d99..a6c3049 100644
16865 int result;
16866 };
16867
16868 -@@ -86,6 +88,10 @@ static int fillonedir(void * __buf, const char * name, int namlen, loff_t offset
16869 +@@ -88,6 +90,10 @@ static int fillonedir(void * __buf, const char * name, int namlen, loff_t offset
16870 buf->result = -EOVERFLOW;
16871 return -EOVERFLOW;
16872 }
16873 @@ -65440,7 +68286,7 @@ index 5b53d99..a6c3049 100644
16874 buf->result++;
16875 dirent = buf->dirent;
16876 if (!access_ok(VERIFY_WRITE, dirent,
16877 -@@ -117,6 +123,7 @@ SYSCALL_DEFINE3(old_readdir, unsigned int, fd,
16878 +@@ -119,6 +125,7 @@ SYSCALL_DEFINE3(old_readdir, unsigned int, fd,
16879 if (!f.file)
16880 return -EBADF;
16881
16882 @@ -65448,7 +68294,7 @@ index 5b53d99..a6c3049 100644
16883 error = iterate_dir(f.file, &buf.ctx);
16884 if (buf.result)
16885 error = buf.result;
16886 -@@ -142,6 +149,7 @@ struct getdents_callback {
16887 +@@ -144,6 +151,7 @@ struct getdents_callback {
16888 struct dir_context ctx;
16889 struct linux_dirent __user * current_dir;
16890 struct linux_dirent __user * previous;
16891 @@ -65456,7 +68302,7 @@ index 5b53d99..a6c3049 100644
16892 int count;
16893 int error;
16894 };
16895 -@@ -163,6 +171,10 @@ static int filldir(void * __buf, const char * name, int namlen, loff_t offset,
16896 +@@ -165,6 +173,10 @@ static int filldir(void * __buf, const char * name, int namlen, loff_t offset,
16897 buf->error = -EOVERFLOW;
16898 return -EOVERFLOW;
16899 }
16900 @@ -65467,7 +68313,7 @@ index 5b53d99..a6c3049 100644
16901 dirent = buf->previous;
16902 if (dirent) {
16903 if (__put_user(offset, &dirent->d_off))
16904 -@@ -208,6 +220,7 @@ SYSCALL_DEFINE3(getdents, unsigned int, fd,
16905 +@@ -210,6 +222,7 @@ SYSCALL_DEFINE3(getdents, unsigned int, fd,
16906 if (!f.file)
16907 return -EBADF;
16908
16909 @@ -65475,7 +68321,7 @@ index 5b53d99..a6c3049 100644
16910 error = iterate_dir(f.file, &buf.ctx);
16911 if (error >= 0)
16912 error = buf.error;
16913 -@@ -226,6 +239,7 @@ struct getdents_callback64 {
16914 +@@ -228,6 +241,7 @@ struct getdents_callback64 {
16915 struct dir_context ctx;
16916 struct linux_dirent64 __user * current_dir;
16917 struct linux_dirent64 __user * previous;
16918 @@ -65483,7 +68329,7 @@ index 5b53d99..a6c3049 100644
16919 int count;
16920 int error;
16921 };
16922 -@@ -241,6 +255,10 @@ static int filldir64(void * __buf, const char * name, int namlen, loff_t offset,
16923 +@@ -243,6 +257,10 @@ static int filldir64(void * __buf, const char * name, int namlen, loff_t offset,
16924 buf->error = -EINVAL; /* only used if we fail.. */
16925 if (reclen > buf->count)
16926 return -EINVAL;
16927 @@ -65494,7 +68340,7 @@ index 5b53d99..a6c3049 100644
16928 dirent = buf->previous;
16929 if (dirent) {
16930 if (__put_user(offset, &dirent->d_off))
16931 -@@ -288,6 +306,7 @@ SYSCALL_DEFINE3(getdents64, unsigned int, fd,
16932 +@@ -290,6 +308,7 @@ SYSCALL_DEFINE3(getdents64, unsigned int, fd,
16933 if (!f.file)
16934 return -EBADF;
16935
16936 @@ -65503,23 +68349,23 @@ index 5b53d99..a6c3049 100644
16937 if (error >= 0)
16938 error = buf.error;
16939 diff --git a/fs/reiserfs/do_balan.c b/fs/reiserfs/do_balan.c
16940 -index 9a3c68c..767933e 100644
16941 +index 54fdf19..987862b 100644
16942 --- a/fs/reiserfs/do_balan.c
16943 +++ b/fs/reiserfs/do_balan.c
16944 -@@ -1546,7 +1546,7 @@ void do_balance(struct tree_balance *tb, /* tree_balance structure */
16945 +@@ -1872,7 +1872,7 @@ void do_balance(struct tree_balance *tb, struct item_head *ih,
16946 return;
16947 }
16948
16949 -- atomic_inc(&(fs_generation(tb->tb_sb)));
16950 -+ atomic_inc_unchecked(&(fs_generation(tb->tb_sb)));
16951 +- atomic_inc(&fs_generation(tb->tb_sb));
16952 ++ atomic_inc_unchecked(&fs_generation(tb->tb_sb));
16953 do_balance_starts(tb);
16954
16955 - /* balance leaf returns 0 except if combining L R and S into
16956 + /*
16957 diff --git a/fs/reiserfs/item_ops.c b/fs/reiserfs/item_ops.c
16958 -index ee382ef..f4eb6eb5 100644
16959 +index cfaee91..b9d0d60 100644
16960 --- a/fs/reiserfs/item_ops.c
16961 +++ b/fs/reiserfs/item_ops.c
16962 -@@ -725,18 +725,18 @@ static void errcatch_print_vi(struct virtual_item *vi)
16963 +@@ -724,18 +724,18 @@ static void errcatch_print_vi(struct virtual_item *vi)
16964 }
16965
16966 static struct item_operations errcatch_ops = {
16967 @@ -65548,7 +68394,7 @@ index ee382ef..f4eb6eb5 100644
16968 + .print_vi = errcatch_print_vi
16969 };
16970
16971 - //////////////////////////////////////////////////////////////////////////////
16972 + #if ! (TYPE_STAT_DATA == 0 && TYPE_INDIRECT == 1 && TYPE_DIRECT == 2 && TYPE_DIRENTRY == 3)
16973 diff --git a/fs/reiserfs/procfs.c b/fs/reiserfs/procfs.c
16974 index 02b0b7d..c85018b 100644
16975 --- a/fs/reiserfs/procfs.c
16976 @@ -65563,20 +68409,20 @@ index 02b0b7d..c85018b 100644
16977 SF(s_do_balance), SF(s_unneeded_left_neighbor),
16978 SF(s_good_search_by_key_reada), SF(s_bmaps),
16979 diff --git a/fs/reiserfs/reiserfs.h b/fs/reiserfs/reiserfs.h
16980 -index 83d4eac..04e39a7 100644
16981 +index bf53888..227f5ae 100644
16982 --- a/fs/reiserfs/reiserfs.h
16983 +++ b/fs/reiserfs/reiserfs.h
16984 -@@ -453,7 +453,7 @@ struct reiserfs_sb_info {
16985 +@@ -573,7 +573,7 @@ struct reiserfs_sb_info {
16986 /* Comment? -Hans */
16987 wait_queue_head_t s_wait;
16988 - /* To be obsoleted soon by per buffer seals.. -Hans */
16989 -- atomic_t s_generation_counter; // increased by one every time the
16990 -+ atomic_unchecked_t s_generation_counter; // increased by one every time the
16991 - // tree gets re-balanced
16992 - unsigned long s_properties; /* File system properties. Currently holds
16993 - on-disk FS format */
16994 -@@ -1972,7 +1972,7 @@ static inline loff_t max_reiserfs_offset(struct inode *inode)
16995 - #define REISERFS_USER_MEM 1 /* reiserfs user memory mode */
16996 + /* increased by one every time the tree gets re-balanced */
16997 +- atomic_t s_generation_counter;
16998 ++ atomic_unchecked_t s_generation_counter;
16999 +
17000 + /* File system properties. Currently holds on-disk FS format */
17001 + unsigned long s_properties;
17002 +@@ -2294,7 +2294,7 @@ static inline loff_t max_reiserfs_offset(struct inode *inode)
17003 + #define REISERFS_USER_MEM 1 /* user memory mode */
17004
17005 #define fs_generation(s) (REISERFS_SB(s)->s_generation_counter)
17006 -#define get_generation(s) atomic_read (&fs_generation(s))
17007 @@ -65605,19 +68451,33 @@ index 467bb1c..cf9d65a 100644
17008 return -EINVAL;
17009
17010 diff --git a/fs/seq_file.c b/fs/seq_file.c
17011 -index 1d641bb..c2f4743 100644
17012 +index 3857b72..0b7281e 100644
17013 --- a/fs/seq_file.c
17014 +++ b/fs/seq_file.c
17015 -@@ -10,6 +10,8 @@
17016 - #include <linux/seq_file.h>
17017 +@@ -12,6 +12,8 @@
17018 #include <linux/slab.h>
17019 #include <linux/cred.h>
17020 + #include <linux/mm.h>
17021 +#include <linux/sched.h>
17022 +#include <linux/grsecurity.h>
17023
17024 #include <asm/uaccess.h>
17025 #include <asm/page.h>
17026 -@@ -60,6 +62,9 @@ int seq_open(struct file *file, const struct seq_operations *op)
17027 +@@ -34,12 +36,7 @@ static void seq_set_overflow(struct seq_file *m)
17028 +
17029 + static void *seq_buf_alloc(unsigned long size)
17030 + {
17031 +- void *buf;
17032 +-
17033 +- buf = kmalloc(size, GFP_KERNEL | __GFP_NOWARN);
17034 +- if (!buf && size > PAGE_SIZE)
17035 +- buf = vmalloc(size);
17036 +- return buf;
17037 ++ return kmalloc(size, GFP_KERNEL | GFP_USERCOPY);
17038 + }
17039 +
17040 + /**
17041 +@@ -72,6 +69,9 @@ int seq_open(struct file *file, const struct seq_operations *op)
17042 #ifdef CONFIG_USER_NS
17043 p->user_ns = file->f_cred->user_ns;
17044 #endif
17045 @@ -65627,7 +68487,7 @@ index 1d641bb..c2f4743 100644
17046
17047 /*
17048 * Wrappers around seq_open(e.g. swaps_open) need to be
17049 -@@ -82,6 +87,16 @@ int seq_open(struct file *file, const struct seq_operations *op)
17050 +@@ -94,6 +94,16 @@ int seq_open(struct file *file, const struct seq_operations *op)
17051 }
17052 EXPORT_SYMBOL(seq_open);
17053
17054 @@ -65644,25 +68504,7 @@ index 1d641bb..c2f4743 100644
17055 static int traverse(struct seq_file *m, loff_t offset)
17056 {
17057 loff_t pos = 0, index;
17058 -@@ -96,7 +111,7 @@ static int traverse(struct seq_file *m, loff_t offset)
17059 - return 0;
17060 - }
17061 - if (!m->buf) {
17062 -- m->buf = kmalloc(m->size = PAGE_SIZE, GFP_KERNEL);
17063 -+ m->buf = kmalloc(m->size = PAGE_SIZE, GFP_KERNEL | GFP_USERCOPY);
17064 - if (!m->buf)
17065 - return -ENOMEM;
17066 - }
17067 -@@ -137,7 +152,7 @@ Eoverflow:
17068 - m->op->stop(m, p);
17069 - kfree(m->buf);
17070 - m->count = 0;
17071 -- m->buf = kmalloc(m->size <<= 1, GFP_KERNEL);
17072 -+ m->buf = kmalloc(m->size <<= 1, GFP_KERNEL | GFP_USERCOPY);
17073 - return !m->buf ? -ENOMEM : -EAGAIN;
17074 - }
17075 -
17076 -@@ -153,7 +168,7 @@ Eoverflow:
17077 +@@ -165,7 +175,7 @@ Eoverflow:
17078 ssize_t seq_read(struct file *file, char __user *buf, size_t size, loff_t *ppos)
17079 {
17080 struct seq_file *m = file->private_data;
17081 @@ -65671,25 +68513,7 @@ index 1d641bb..c2f4743 100644
17082 loff_t pos;
17083 size_t n;
17084 void *p;
17085 -@@ -192,7 +207,7 @@ ssize_t seq_read(struct file *file, char __user *buf, size_t size, loff_t *ppos)
17086 -
17087 - /* grab buffer if we didn't have one */
17088 - if (!m->buf) {
17089 -- m->buf = kmalloc(m->size = PAGE_SIZE, GFP_KERNEL);
17090 -+ m->buf = kmalloc(m->size = PAGE_SIZE, GFP_KERNEL | GFP_USERCOPY);
17091 - if (!m->buf)
17092 - goto Enomem;
17093 - }
17094 -@@ -234,7 +249,7 @@ ssize_t seq_read(struct file *file, char __user *buf, size_t size, loff_t *ppos)
17095 - m->op->stop(m, p);
17096 - kfree(m->buf);
17097 - m->count = 0;
17098 -- m->buf = kmalloc(m->size <<= 1, GFP_KERNEL);
17099 -+ m->buf = kmalloc(m->size <<= 1, GFP_KERNEL | GFP_USERCOPY);
17100 - if (!m->buf)
17101 - goto Enomem;
17102 - m->version = 0;
17103 -@@ -584,7 +599,7 @@ static void single_stop(struct seq_file *p, void *v)
17104 +@@ -596,7 +606,7 @@ static void single_stop(struct seq_file *p, void *v)
17105 int single_open(struct file *file, int (*show)(struct seq_file *, void *),
17106 void *data)
17107 {
17108 @@ -65698,7 +68522,7 @@ index 1d641bb..c2f4743 100644
17109 int res = -ENOMEM;
17110
17111 if (op) {
17112 -@@ -620,6 +635,17 @@ int single_open_size(struct file *file, int (*show)(struct seq_file *, void *),
17113 +@@ -632,6 +642,17 @@ int single_open_size(struct file *file, int (*show)(struct seq_file *, void *),
17114 }
17115 EXPORT_SYMBOL(single_open_size);
17116
17117 @@ -65717,10 +68541,10 @@ index 1d641bb..c2f4743 100644
17118 {
17119 const struct seq_operations *op = ((struct seq_file *)file->private_data)->op;
17120 diff --git a/fs/splice.c b/fs/splice.c
17121 -index e246954..bd4f5b5 100644
17122 +index f5cb9ba..8ddb1e9 100644
17123 --- a/fs/splice.c
17124 +++ b/fs/splice.c
17125 -@@ -192,7 +192,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
17126 +@@ -193,7 +193,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
17127 pipe_lock(pipe);
17128
17129 for (;;) {
17130 @@ -65729,7 +68553,7 @@ index e246954..bd4f5b5 100644
17131 send_sig(SIGPIPE, current, 0);
17132 if (!ret)
17133 ret = -EPIPE;
17134 -@@ -215,7 +215,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
17135 +@@ -216,7 +216,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
17136 page_nr++;
17137 ret += buf->len;
17138
17139 @@ -65738,7 +68562,7 @@ index e246954..bd4f5b5 100644
17140 do_wakeup = 1;
17141
17142 if (!--spd->nr_pages)
17143 -@@ -246,9 +246,9 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
17144 +@@ -247,9 +247,9 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
17145 do_wakeup = 0;
17146 }
17147
17148 @@ -65750,7 +68574,7 @@ index e246954..bd4f5b5 100644
17149 }
17150
17151 pipe_unlock(pipe);
17152 -@@ -575,7 +575,7 @@ static ssize_t kernel_readv(struct file *file, const struct iovec *vec,
17153 +@@ -576,7 +576,7 @@ static ssize_t kernel_readv(struct file *file, const struct iovec *vec,
17154 old_fs = get_fs();
17155 set_fs(get_ds());
17156 /* The cast to a user pointer is valid due to the set_fs() */
17157 @@ -65759,7 +68583,7 @@ index e246954..bd4f5b5 100644
17158 set_fs(old_fs);
17159
17160 return res;
17161 -@@ -590,7 +590,7 @@ ssize_t kernel_write(struct file *file, const char *buf, size_t count,
17162 +@@ -591,7 +591,7 @@ ssize_t kernel_write(struct file *file, const char *buf, size_t count,
17163 old_fs = get_fs();
17164 set_fs(get_ds());
17165 /* The cast to a user pointer is valid due to the set_fs() */
17166 @@ -65768,7 +68592,7 @@ index e246954..bd4f5b5 100644
17167 set_fs(old_fs);
17168
17169 return res;
17170 -@@ -643,7 +643,7 @@ ssize_t default_file_splice_read(struct file *in, loff_t *ppos,
17171 +@@ -644,7 +644,7 @@ ssize_t default_file_splice_read(struct file *in, loff_t *ppos,
17172 goto err;
17173
17174 this_len = min_t(size_t, len, PAGE_CACHE_SIZE - offset);
17175 @@ -65777,7 +68601,7 @@ index e246954..bd4f5b5 100644
17176 vec[i].iov_len = this_len;
17177 spd.pages[i] = page;
17178 spd.nr_pages++;
17179 -@@ -839,7 +839,7 @@ int splice_from_pipe_feed(struct pipe_inode_info *pipe, struct splice_desc *sd,
17180 +@@ -783,7 +783,7 @@ static int splice_from_pipe_feed(struct pipe_inode_info *pipe, struct splice_des
17181 ops->release(pipe, buf);
17182 pipe->curbuf = (pipe->curbuf + 1) & (pipe->buffers - 1);
17183 pipe->nrbufs--;
17184 @@ -65786,8 +68610,8 @@ index e246954..bd4f5b5 100644
17185 sd->need_wakeup = true;
17186 }
17187
17188 -@@ -864,10 +864,10 @@ EXPORT_SYMBOL(splice_from_pipe_feed);
17189 - int splice_from_pipe_next(struct pipe_inode_info *pipe, struct splice_desc *sd)
17190 +@@ -807,10 +807,10 @@ static int splice_from_pipe_feed(struct pipe_inode_info *pipe, struct splice_des
17191 + static int splice_from_pipe_next(struct pipe_inode_info *pipe, struct splice_desc *sd)
17192 {
17193 while (!pipe->nrbufs) {
17194 - if (!pipe->writers)
17195 @@ -65799,7 +68623,16 @@ index e246954..bd4f5b5 100644
17196 return 0;
17197
17198 if (sd->flags & SPLICE_F_NONBLOCK)
17199 -@@ -1189,7 +1189,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd,
17200 +@@ -1040,7 +1040,7 @@ iter_file_splice_write(struct pipe_inode_info *pipe, struct file *out,
17201 + ops->release(pipe, buf);
17202 + pipe->curbuf = (pipe->curbuf + 1) & (pipe->buffers - 1);
17203 + pipe->nrbufs--;
17204 +- if (pipe->files)
17205 ++ if (atomic_read(&pipe->files))
17206 + sd.need_wakeup = true;
17207 + } else {
17208 + buf->offset += ret;
17209 +@@ -1200,7 +1200,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd,
17210 * out of the pipe right after the splice_to_pipe(). So set
17211 * PIPE_READERS appropriately.
17212 */
17213 @@ -65808,7 +68641,7 @@ index e246954..bd4f5b5 100644
17214
17215 current->splice_pipe = pipe;
17216 }
17217 -@@ -1485,6 +1485,7 @@ static int get_iovec_page_array(const struct iovec __user *iov,
17218 +@@ -1496,6 +1496,7 @@ static int get_iovec_page_array(const struct iovec __user *iov,
17219
17220 partial[buffers].offset = off;
17221 partial[buffers].len = plen;
17222 @@ -65816,7 +68649,7 @@ index e246954..bd4f5b5 100644
17223
17224 off = 0;
17225 len -= plen;
17226 -@@ -1721,9 +1722,9 @@ static int ipipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
17227 +@@ -1732,9 +1733,9 @@ static int ipipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
17228 ret = -ERESTARTSYS;
17229 break;
17230 }
17231 @@ -65828,7 +68661,7 @@ index e246954..bd4f5b5 100644
17232 if (flags & SPLICE_F_NONBLOCK) {
17233 ret = -EAGAIN;
17234 break;
17235 -@@ -1755,7 +1756,7 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
17236 +@@ -1766,7 +1767,7 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
17237 pipe_lock(pipe);
17238
17239 while (pipe->nrbufs >= pipe->buffers) {
17240 @@ -65837,7 +68670,7 @@ index e246954..bd4f5b5 100644
17241 send_sig(SIGPIPE, current, 0);
17242 ret = -EPIPE;
17243 break;
17244 -@@ -1768,9 +1769,9 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
17245 +@@ -1779,9 +1780,9 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
17246 ret = -ERESTARTSYS;
17247 break;
17248 }
17249 @@ -65849,7 +68682,7 @@ index e246954..bd4f5b5 100644
17250 }
17251
17252 pipe_unlock(pipe);
17253 -@@ -1806,14 +1807,14 @@ retry:
17254 +@@ -1817,14 +1818,14 @@ retry:
17255 pipe_double_lock(ipipe, opipe);
17256
17257 do {
17258 @@ -65866,7 +68699,7 @@ index e246954..bd4f5b5 100644
17259 break;
17260
17261 /*
17262 -@@ -1910,7 +1911,7 @@ static int link_pipe(struct pipe_inode_info *ipipe,
17263 +@@ -1921,7 +1922,7 @@ static int link_pipe(struct pipe_inode_info *ipipe,
17264 pipe_double_lock(ipipe, opipe);
17265
17266 do {
17267 @@ -65875,7 +68708,7 @@ index e246954..bd4f5b5 100644
17268 send_sig(SIGPIPE, current, 0);
17269 if (!ret)
17270 ret = -EPIPE;
17271 -@@ -1955,7 +1956,7 @@ static int link_pipe(struct pipe_inode_info *ipipe,
17272 +@@ -1966,7 +1967,7 @@ static int link_pipe(struct pipe_inode_info *ipipe,
17273 * return EAGAIN if we have the potential of some data in the
17274 * future, otherwise just return 0
17275 */
17276 @@ -65984,7 +68817,7 @@ index 69d4889..a810bd4 100644
17277 if (sbi->s_bytesex == BYTESEX_PDP)
17278 return PDP_swab((__force __u32)n);
17279 diff --git a/fs/ubifs/io.c b/fs/ubifs/io.c
17280 -index e18b988..f1d4ad0f 100644
17281 +index 2290d58..7791371 100644
17282 --- a/fs/ubifs/io.c
17283 +++ b/fs/ubifs/io.c
17284 @@ -155,7 +155,7 @@ int ubifs_leb_change(struct ubifs_info *c, int lnum, const void *buf, int len)
17285 @@ -66057,7 +68890,7 @@ index aa138d6..5f3a811 100644
17286 error = notify_change(path->dentry, &newattrs, &delegated_inode);
17287 mutex_unlock(&inode->i_mutex);
17288 diff --git a/fs/xattr.c b/fs/xattr.c
17289 -index 3377dff..f394815 100644
17290 +index c69e6d4..cc56af5 100644
17291 --- a/fs/xattr.c
17292 +++ b/fs/xattr.c
17293 @@ -227,6 +227,27 @@ int vfs_xattr_cmp(struct dentry *dentry, const char *xattr_name,
17294 @@ -66209,10 +69042,10 @@ index 3377dff..f394815 100644
17295 }
17296 fdput(f);
17297 diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c
17298 -index f0efc7e..ba72910 100644
17299 +index 75c3fe5..b0f6bbe 100644
17300 --- a/fs/xfs/xfs_bmap.c
17301 +++ b/fs/xfs/xfs_bmap.c
17302 -@@ -584,7 +584,7 @@ xfs_bmap_validate_ret(
17303 +@@ -583,7 +583,7 @@ xfs_bmap_validate_ret(
17304
17305 #else
17306 #define xfs_bmap_check_leaf_extents(cur, ip, whichfork) do { } while (0)
17307 @@ -66222,10 +69055,10 @@ index f0efc7e..ba72910 100644
17308
17309 /*
17310 diff --git a/fs/xfs/xfs_dir2_readdir.c b/fs/xfs/xfs_dir2_readdir.c
17311 -index aead369..0dfecfd 100644
17312 +index 48e99af..54ebae3 100644
17313 --- a/fs/xfs/xfs_dir2_readdir.c
17314 +++ b/fs/xfs/xfs_dir2_readdir.c
17315 -@@ -160,7 +160,12 @@ xfs_dir2_sf_getdents(
17316 +@@ -159,7 +159,12 @@ xfs_dir2_sf_getdents(
17317 ino = dp->d_ops->sf_get_ino(sfp, sfep);
17318 filetype = dp->d_ops->sf_get_ftype(sfep);
17319 ctx->pos = off & 0x7fffffff;
17320 @@ -66233,14 +69066,14 @@ index aead369..0dfecfd 100644
17321 + if (dp->i_df.if_u1.if_data == dp->i_df.if_u2.if_inline_data) {
17322 + char name[sfep->namelen];
17323 + memcpy(name, sfep->name, sfep->namelen);
17324 -+ if (!dir_emit(ctx, name, sfep->namelen, ino, xfs_dir3_get_dtype(mp, filetype)))
17325 ++ if (!dir_emit(ctx, name, sfep->namelen, ino, xfs_dir3_get_dtype(dp->i_mount, filetype)))
17326 + return 0;
17327 + } else if (!dir_emit(ctx, (char *)sfep->name, sfep->namelen, ino,
17328 - xfs_dir3_get_dtype(mp, filetype)))
17329 + xfs_dir3_get_dtype(dp->i_mount, filetype)))
17330 return 0;
17331 sfep = dp->d_ops->sf_nextentry(sfp, sfep);
17332 diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
17333 -index 6152cbe..f0f9eaa 100644
17334 +index 8bc1bbc..0d6911b 100644
17335 --- a/fs/xfs/xfs_ioctl.c
17336 +++ b/fs/xfs/xfs_ioctl.c
17337 @@ -122,7 +122,7 @@ xfs_find_handle(
17338 @@ -70305,10 +73138,10 @@ index 0000000..18ffbbd
17339 +}
17340 diff --git a/grsecurity/gracl_cap.c b/grsecurity/gracl_cap.c
17341 new file mode 100644
17342 -index 0000000..bdd51ea
17343 +index 0000000..1a94c11
17344 --- /dev/null
17345 +++ b/grsecurity/gracl_cap.c
17346 -@@ -0,0 +1,110 @@
17347 +@@ -0,0 +1,127 @@
17348 +#include <linux/kernel.h>
17349 +#include <linux/module.h>
17350 +#include <linux/sched.h>
17351 @@ -70319,6 +73152,29 @@ index 0000000..bdd51ea
17352 +extern const char *captab_log[];
17353 +extern int captab_log_entries;
17354 +
17355 ++int gr_learn_cap(const struct task_struct *task, const struct cred *cred, const int cap)
17356 ++{
17357 ++ struct acl_subject_label *curracl;
17358 ++
17359 ++ if (!gr_acl_is_enabled())
17360 ++ return 1;
17361 ++
17362 ++ curracl = task->acl;
17363 ++
17364 ++ if (curracl->mode & (GR_LEARN | GR_INHERITLEARN)) {
17365 ++ security_learn(GR_LEARN_AUDIT_MSG, task->role->rolename,
17366 ++ task->role->roletype, GR_GLOBAL_UID(cred->uid),
17367 ++ GR_GLOBAL_GID(cred->gid), task->exec_file ?
17368 ++ gr_to_filename(task->exec_file->f_path.dentry,
17369 ++ task->exec_file->f_path.mnt) : curracl->filename,
17370 ++ curracl->filename, 0UL,
17371 ++ 0UL, "", (unsigned long) cap, &task->signal->saved_ip);
17372 ++ return 1;
17373 ++ }
17374 ++
17375 ++ return 0;
17376 ++}
17377 ++
17378 +int gr_task_acl_is_capable(const struct task_struct *task, const struct cred *cred, const int cap)
17379 +{
17380 + struct acl_subject_label *curracl;
17381 @@ -70355,19 +73211,13 @@ index 0000000..bdd51ea
17382 + return 1;
17383 + }
17384 +
17385 -+ curracl = task->acl;
17386 -+
17387 -+ if ((curracl->mode & (GR_LEARN | GR_INHERITLEARN))
17388 -+ && cap_raised(cred->cap_effective, cap)) {
17389 -+ security_learn(GR_LEARN_AUDIT_MSG, task->role->rolename,
17390 -+ task->role->roletype, GR_GLOBAL_UID(cred->uid),
17391 -+ GR_GLOBAL_GID(cred->gid), task->exec_file ?
17392 -+ gr_to_filename(task->exec_file->f_path.dentry,
17393 -+ task->exec_file->f_path.mnt) : curracl->filename,
17394 -+ curracl->filename, 0UL,
17395 -+ 0UL, "", (unsigned long) cap, &task->signal->saved_ip);
17396 ++ /* only learn the capability use if the process has the capability in the
17397 ++ general case, the two uses in sys.c of gr_learn_cap are an exception
17398 ++ to this rule to ensure any role transition involves what the full-learned
17399 ++ policy believes in a privileged process
17400 ++ */
17401 ++ if (cap_raised(cred->cap_effective, cap) && gr_learn_cap(task, cred, cap))
17402 + return 1;
17403 -+ }
17404 +
17405 + if ((cap >= 0) && (cap < captab_log_entries) && cap_raised(cred->cap_effective, cap) && !cap_raised(cap_audit, cap))
17406 + gr_log_cap(GR_DONT_AUDIT, GR_CAP_ACL_MSG, task, captab_log[cap]);
17407 @@ -74398,10 +77248,10 @@ index 0000000..baa635c
17408 +}
17409 diff --git a/grsecurity/grsec_disabled.c b/grsecurity/grsec_disabled.c
17410 new file mode 100644
17411 -index 0000000..de31e65
17412 +index 0000000..2d3bcb7
17413 --- /dev/null
17414 +++ b/grsecurity/grsec_disabled.c
17415 -@@ -0,0 +1,434 @@
17416 +@@ -0,0 +1,440 @@
17417 +#include <linux/kernel.h>
17418 +#include <linux/module.h>
17419 +#include <linux/sched.h>
17420 @@ -74443,6 +77293,12 @@ index 0000000..de31e65
17421 + return 0;
17422 +}
17423 +
17424 ++int
17425 ++gr_learn_cap(const struct task_struct *task, const struct cred *cred, const int cap)
17426 ++{
17427 ++ return 0;
17428 ++}
17429 ++
17430 +void
17431 +gr_handle_proc_create(const struct dentry *dentry, const struct inode *inode)
17432 +{
17433 @@ -77627,10 +80483,10 @@ index b7babf0..97f4c4f 100644
17434 +
17435 #endif /* _ASM_GENERIC_ATOMIC_LONG_H */
17436 diff --git a/include/asm-generic/atomic.h b/include/asm-generic/atomic.h
17437 -index 33bd2de..f31bff97 100644
17438 +index 9c79e76..9f7827d 100644
17439 --- a/include/asm-generic/atomic.h
17440 +++ b/include/asm-generic/atomic.h
17441 -@@ -153,7 +153,7 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
17442 +@@ -154,7 +154,7 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
17443 * Atomically clears the bits set in @mask from @v
17444 */
17445 #ifndef atomic_clear_mask
17446 @@ -77668,10 +80524,10 @@ index b18ce4f..2ee2843 100644
17447 +
17448 #endif /* _ASM_GENERIC_ATOMIC64_H */
17449 diff --git a/include/asm-generic/barrier.h b/include/asm-generic/barrier.h
17450 -index 6f692f8..2ad9dd2 100644
17451 +index 1402fa8..025a736 100644
17452 --- a/include/asm-generic/barrier.h
17453 +++ b/include/asm-generic/barrier.h
17454 -@@ -66,7 +66,7 @@
17455 +@@ -74,7 +74,7 @@
17456 do { \
17457 compiletime_assert_atomic_type(*p); \
17458 smp_mb(); \
17459 @@ -77909,10 +80765,10 @@ index 810431d..0ec4804f 100644
17460 * (puds are folded into pgds so this doesn't get actually called,
17461 * but the define is needed for a generic inline function.)
17462 diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h
17463 -index a8015a7..7a4407b 100644
17464 +index 53b2acc..f4568e7 100644
17465 --- a/include/asm-generic/pgtable.h
17466 +++ b/include/asm-generic/pgtable.h
17467 -@@ -815,6 +815,22 @@ static inline void pmdp_set_numa(struct mm_struct *mm, unsigned long addr,
17468 +@@ -819,6 +819,22 @@ static inline void pmdp_set_numa(struct mm_struct *mm, unsigned long addr,
17469 }
17470 #endif /* CONFIG_NUMA_BALANCING */
17471
17472 @@ -77961,10 +80817,10 @@ index 72d8803..cb9749c 100644
17473 +
17474 #endif /* __ASM_GENERIC_UACCESS_H */
17475 diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
17476 -index 146e4ff..f4f9609 100644
17477 +index c1c0b0c..05c9588 100644
17478 --- a/include/asm-generic/vmlinux.lds.h
17479 +++ b/include/asm-generic/vmlinux.lds.h
17480 -@@ -251,6 +251,7 @@
17481 +@@ -231,6 +231,7 @@
17482 .rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \
17483 VMLINUX_SYMBOL(__start_rodata) = .; \
17484 *(.rodata) *(.rodata.*) \
17485 @@ -77972,7 +80828,7 @@ index 146e4ff..f4f9609 100644
17486 *(__vermagic) /* Kernel version magic */ \
17487 . = ALIGN(8); \
17488 VMLINUX_SYMBOL(__start___tracepoints_ptrs) = .; \
17489 -@@ -737,17 +738,18 @@
17490 +@@ -719,17 +720,18 @@
17491 * section in the linker script will go there too. @phdr should have
17492 * a leading colon.
17493 *
17494 @@ -78009,7 +80865,7 @@ index 016c2f1..c4baa98 100644
17495 struct crypto_instance {
17496 struct crypto_alg alg;
17497 diff --git a/include/drm/drmP.h b/include/drm/drmP.h
17498 -index a7c2a86..078f1b6 100644
17499 +index 8af71a8..7fe6c19 100644
17500 --- a/include/drm/drmP.h
17501 +++ b/include/drm/drmP.h
17502 @@ -68,6 +68,7 @@
17503 @@ -78020,7 +80876,7 @@ index a7c2a86..078f1b6 100644
17504 #include <drm/drm.h>
17505 #include <drm/drm_sarea.h>
17506 #include <drm/drm_vma_manager.h>
17507 -@@ -268,10 +269,12 @@ do { \
17508 +@@ -261,10 +262,12 @@ do { \
17509 * \param cmd command.
17510 * \param arg argument.
17511 */
17512 @@ -78035,7 +80891,7 @@ index a7c2a86..078f1b6 100644
17513 unsigned long arg);
17514
17515 #define DRM_IOCTL_NR(n) _IOC_NR(n)
17516 -@@ -287,10 +290,10 @@ typedef int drm_ioctl_compat_t(struct file *filp, unsigned int cmd,
17517 +@@ -280,10 +283,10 @@ typedef int drm_ioctl_compat_t(struct file *filp, unsigned int cmd,
17518 struct drm_ioctl_desc {
17519 unsigned int cmd;
17520 int flags;
17521 @@ -78048,7 +80904,7 @@ index a7c2a86..078f1b6 100644
17522
17523 /**
17524 * Creates a driver or general drm_ioctl_desc array entry for the given
17525 -@@ -1001,7 +1004,8 @@ struct drm_info_list {
17526 +@@ -983,7 +986,8 @@ struct drm_info_list {
17527 int (*show)(struct seq_file*, void*); /** show callback */
17528 u32 driver_features; /**< Required driver features for this entry */
17529 void *data;
17530 @@ -78058,17 +80914,17 @@ index a7c2a86..078f1b6 100644
17531
17532 /**
17533 * debugfs node structure. This structure represents a debugfs file.
17534 -@@ -1083,7 +1087,7 @@ struct drm_device {
17535 +@@ -1067,7 +1071,7 @@ struct drm_device {
17536
17537 /** \name Usage Counters */
17538 /*@{ */
17539 -- int open_count; /**< Outstanding files open */
17540 -+ local_t open_count; /**< Outstanding files open */
17541 +- int open_count; /**< Outstanding files open, protected by drm_global_mutex. */
17542 ++ local_t open_count; /**< Outstanding files open, protected by drm_global_mutex. */
17543 + spinlock_t buf_lock; /**< For drm_device::buf_use and a few other things. */
17544 int buf_use; /**< Buffers in use -- cannot alloc */
17545 atomic_t buf_alloc; /**< Buffer allocation in progress */
17546 - /*@} */
17547 diff --git a/include/drm/drm_crtc_helper.h b/include/drm/drm_crtc_helper.h
17548 -index 36a5feb..d9f01aa 100644
17549 +index a3d75fe..6802f9c 100644
17550 --- a/include/drm/drm_crtc_helper.h
17551 +++ b/include/drm/drm_crtc_helper.h
17552 @@ -109,7 +109,7 @@ struct drm_encoder_helper_funcs {
17553 @@ -78081,7 +80937,7 @@ index 36a5feb..d9f01aa 100644
17554 /**
17555 * drm_connector_helper_funcs - helper operations for connectors
17556 diff --git a/include/drm/i915_pciids.h b/include/drm/i915_pciids.h
17557 -index 012d58f..d0a0642 100644
17558 +index a70d456..6ea07cd 100644
17559 --- a/include/drm/i915_pciids.h
17560 +++ b/include/drm/i915_pciids.h
17561 @@ -37,7 +37,7 @@
17562 @@ -78192,10 +81048,10 @@ index 61f29e5..e67c658 100644
17563 extern void __register_binfmt(struct linux_binfmt *fmt, int insert);
17564
17565 diff --git a/include/linux/bitops.h b/include/linux/bitops.h
17566 -index be5fd38..d71192a 100644
17567 +index cbc5833..8123ebc 100644
17568 --- a/include/linux/bitops.h
17569 +++ b/include/linux/bitops.h
17570 -@@ -102,7 +102,7 @@ static inline __u64 ror64(__u64 word, unsigned int shift)
17571 +@@ -122,7 +122,7 @@ static inline __u64 ror64(__u64 word, unsigned int shift)
17572 * @word: value to rotate
17573 * @shift: bits to roll
17574 */
17575 @@ -78204,7 +81060,7 @@ index be5fd38..d71192a 100644
17576 {
17577 return (word << shift) | (word >> (32 - shift));
17578 }
17579 -@@ -112,7 +112,7 @@ static inline __u32 rol32(__u32 word, unsigned int shift)
17580 +@@ -132,7 +132,7 @@ static inline __u32 rol32(__u32 word, unsigned int shift)
17581 * @word: value to rotate
17582 * @shift: bits to roll
17583 */
17584 @@ -78213,7 +81069,7 @@ index be5fd38..d71192a 100644
17585 {
17586 return (word >> shift) | (word << (32 - shift));
17587 }
17588 -@@ -168,7 +168,7 @@ static inline __s32 sign_extend32(__u32 value, int index)
17589 +@@ -188,7 +188,7 @@ static inline __s32 sign_extend32(__u32 value, int index)
17590 return (__s32)(value << shift) >> shift;
17591 }
17592
17593 @@ -78223,10 +81079,10 @@ index be5fd38..d71192a 100644
17594 if (sizeof(l) == 4)
17595 return fls(l);
17596 diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
17597 -index 0d84981..bb741c0 100644
17598 +index 8699bcf..279485d 100644
17599 --- a/include/linux/blkdev.h
17600 +++ b/include/linux/blkdev.h
17601 -@@ -1584,7 +1584,7 @@ struct block_device_operations {
17602 +@@ -1625,7 +1625,7 @@ struct block_device_operations {
17603 /* this callback is with swap_lock and sometimes page table lock held */
17604 void (*swap_slot_free_notify) (struct block_device *, unsigned long);
17605 struct module *owner;
17606 @@ -78312,10 +81168,10 @@ index 4ce9056..86caac6 100644
17607 extern struct cleancache_ops *
17608 cleancache_register_ops(struct cleancache_ops *ops);
17609 diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
17610 -index 5119174..8e264f8 100644
17611 +index 0c287db..5efa775 100644
17612 --- a/include/linux/clk-provider.h
17613 +++ b/include/linux/clk-provider.h
17614 -@@ -174,6 +174,7 @@ struct clk_ops {
17615 +@@ -180,6 +180,7 @@ struct clk_ops {
17616 void (*init)(struct clk_hw *hw);
17617 int (*debug_init)(struct clk_hw *hw, struct dentry *dentry);
17618 };
17619 @@ -78385,7 +81241,7 @@ index 2507fd2..55203f8 100644
17620 * Mark a position in code as unreachable. This can be used to
17621 * suppress control flow warnings after asm blocks that transfer
17622 diff --git a/include/linux/compiler.h b/include/linux/compiler.h
17623 -index ee7239e..7c11769 100644
17624 +index d5ad7b1..3b74638 100644
17625 --- a/include/linux/compiler.h
17626 +++ b/include/linux/compiler.h
17627 @@ -5,11 +5,14 @@
17628 @@ -78511,7 +81367,7 @@ index ee7239e..7c11769 100644
17629 /* Simple shorthand for a section definition */
17630 #ifndef __section
17631 # define __section(S) __attribute__ ((__section__(#S)))
17632 -@@ -369,7 +435,8 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect);
17633 +@@ -378,7 +444,8 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect);
17634 * use is to mediate communication between process-level code and irq/NMI
17635 * handlers, all running on the same CPU.
17636 */
17637 @@ -78562,10 +81418,10 @@ index 34025df..d94bbbc 100644
17638 /*
17639 * Users often need to create attribute structures for their configurable
17640 diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h
17641 -index 5ae5100..b809662 100644
17642 +index 8f8ae95..b9b0e6d 100644
17643 --- a/include/linux/cpufreq.h
17644 +++ b/include/linux/cpufreq.h
17645 -@@ -200,6 +200,7 @@ struct global_attr {
17646 +@@ -202,6 +202,7 @@ struct global_attr {
17647 ssize_t (*store)(struct kobject *a, struct attribute *b,
17648 const char *c, size_t count);
17649 };
17650 @@ -78573,7 +81429,7 @@ index 5ae5100..b809662 100644
17651
17652 #define define_one_global_ro(_name) \
17653 static struct global_attr _name = \
17654 -@@ -242,7 +243,7 @@ struct cpufreq_driver {
17655 +@@ -268,7 +269,7 @@ struct cpufreq_driver {
17656 bool boost_supported;
17657 bool boost_enabled;
17658 int (*set_boost) (int state);
17659 @@ -78583,7 +81439,7 @@ index 5ae5100..b809662 100644
17660 /* flags */
17661 #define CPUFREQ_STICKY (1 << 0) /* driver isn't removed even if
17662 diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h
17663 -index b0238cb..db89e1e 100644
17664 +index 25e0df6..952dffd 100644
17665 --- a/include/linux/cpuidle.h
17666 +++ b/include/linux/cpuidle.h
17667 @@ -50,7 +50,8 @@ struct cpuidle_state {
17668 @@ -78596,7 +81452,7 @@ index b0238cb..db89e1e 100644
17669
17670 /* Idle State Flags */
17671 #define CPUIDLE_FLAG_TIME_VALID (0x01) /* is residency time measurable? */
17672 -@@ -211,7 +212,7 @@ struct cpuidle_governor {
17673 +@@ -209,7 +210,7 @@ struct cpuidle_governor {
17674 void (*reflect) (struct cpuidle_device *dev, int index);
17675
17676 struct module *owner;
17677 @@ -78606,7 +81462,7 @@ index b0238cb..db89e1e 100644
17678 #ifdef CONFIG_CPU_IDLE
17679 extern int cpuidle_register_governor(struct cpuidle_governor *gov);
17680 diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h
17681 -index d08e4d2..95fad61 100644
17682 +index 2997af6..424ddc1 100644
17683 --- a/include/linux/cpumask.h
17684 +++ b/include/linux/cpumask.h
17685 @@ -118,17 +118,17 @@ static inline unsigned int cpumask_first(const struct cpumask *srcp)
17686 @@ -78630,7 +81486,7 @@ index d08e4d2..95fad61 100644
17687 const struct cpumask *srcp,
17688 const struct cpumask *andp)
17689 {
17690 -@@ -167,7 +167,7 @@ static inline unsigned int cpumask_first(const struct cpumask *srcp)
17691 +@@ -174,7 +174,7 @@ static inline unsigned int cpumask_first(const struct cpumask *srcp)
17692 *
17693 * Returns >= nr_cpu_ids if no further cpus set.
17694 */
17695 @@ -78639,7 +81495,7 @@ index d08e4d2..95fad61 100644
17696 {
17697 /* -1 is a legal arg here. */
17698 if (n != -1)
17699 -@@ -182,7 +182,7 @@ static inline unsigned int cpumask_next(int n, const struct cpumask *srcp)
17700 +@@ -189,7 +189,7 @@ static inline unsigned int cpumask_next(int n, const struct cpumask *srcp)
17701 *
17702 * Returns >= nr_cpu_ids if no further cpus unset.
17703 */
17704 @@ -78648,15 +81504,15 @@ index d08e4d2..95fad61 100644
17705 {
17706 /* -1 is a legal arg here. */
17707 if (n != -1)
17708 -@@ -190,7 +190,7 @@ static inline unsigned int cpumask_next_zero(int n, const struct cpumask *srcp)
17709 +@@ -197,7 +197,7 @@ static inline unsigned int cpumask_next_zero(int n, const struct cpumask *srcp)
17710 return find_next_zero_bit(cpumask_bits(srcp), nr_cpumask_bits, n+1);
17711 }
17712
17713 -int cpumask_next_and(int n, const struct cpumask *, const struct cpumask *);
17714 +int cpumask_next_and(int n, const struct cpumask *, const struct cpumask *) __intentional_overflow(-1);
17715 int cpumask_any_but(const struct cpumask *mask, unsigned int cpu);
17716 + int cpumask_set_cpu_local_first(int i, int numa_node, cpumask_t *dstp);
17717
17718 - /**
17719 diff --git a/include/linux/cred.h b/include/linux/cred.h
17720 index f61d6c8..d372d95 100644
17721 --- a/include/linux/cred.h
17722 @@ -78766,7 +81622,7 @@ index 7925bf0..d5143d2 100644
17723
17724 #define large_malloc(a) vmalloc(a)
17725 diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h
17726 -index d48dc00..211ee54 100644
17727 +index f1863dc..5c26074 100644
17728 --- a/include/linux/devfreq.h
17729 +++ b/include/linux/devfreq.h
17730 @@ -114,7 +114,7 @@ struct devfreq_governor {
17731 @@ -78779,7 +81635,7 @@ index d48dc00..211ee54 100644
17732 /**
17733 * struct devfreq - Device devfreq structure
17734 diff --git a/include/linux/device.h b/include/linux/device.h
17735 -index d1d1c05..a90fdb0 100644
17736 +index af424ac..fd46ddf 100644
17737 --- a/include/linux/device.h
17738 +++ b/include/linux/device.h
17739 @@ -310,7 +310,7 @@ struct subsys_interface {
17740 @@ -78815,10 +81671,10 @@ index d1d1c05..a90fdb0 100644
17741 ssize_t device_show_ulong(struct device *dev, struct device_attribute *attr,
17742 char *buf);
17743 diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
17744 -index fd4aee2..1f28db9 100644
17745 +index 931b709..89b2d89 100644
17746 --- a/include/linux/dma-mapping.h
17747 +++ b/include/linux/dma-mapping.h
17748 -@@ -54,7 +54,7 @@ struct dma_map_ops {
17749 +@@ -60,7 +60,7 @@ struct dma_map_ops {
17750 u64 (*get_required_mask)(struct device *dev);
17751 #endif
17752 int is_phys;
17753 @@ -78828,7 +81684,7 @@ index fd4aee2..1f28db9 100644
17754 #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
17755
17756 diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
17757 -index 72cb0dd..7fe9a4b 100644
17758 +index d2c5cc7..d193394 100644
17759 --- a/include/linux/dmaengine.h
17760 +++ b/include/linux/dmaengine.h
17761 @@ -1147,9 +1147,9 @@ struct dma_pinned_list {
17762 @@ -78844,10 +81700,10 @@ index 72cb0dd..7fe9a4b 100644
17763 unsigned int offset, size_t len);
17764
17765 diff --git a/include/linux/efi.h b/include/linux/efi.h
17766 -index 6c100ff..e3289b4 100644
17767 +index 41bbf8b..bd3a718 100644
17768 --- a/include/linux/efi.h
17769 +++ b/include/linux/efi.h
17770 -@@ -1009,6 +1009,7 @@ struct efivar_operations {
17771 +@@ -1027,6 +1027,7 @@ struct efivar_operations {
17772 efi_set_variable_t *set_variable;
17773 efi_query_variable_store_t *query_variable_store;
17774 };
17775 @@ -78895,7 +81751,7 @@ index a729120..6ede2c9 100644
17776 return (long) ptr;
17777 }
17778 diff --git a/include/linux/extcon.h b/include/linux/extcon.h
17779 -index f488145..3b6b04e 100644
17780 +index 36f49c4..a2a1f4c 100644
17781 --- a/include/linux/extcon.h
17782 +++ b/include/linux/extcon.h
17783 @@ -135,7 +135,7 @@ struct extcon_dev {
17784 @@ -78908,10 +81764,10 @@ index f488145..3b6b04e 100644
17785
17786 /**
17787 diff --git a/include/linux/fb.h b/include/linux/fb.h
17788 -index fe6ac95..898d41d 100644
17789 +index b6bfda9..1f13487 100644
17790 --- a/include/linux/fb.h
17791 +++ b/include/linux/fb.h
17792 -@@ -304,7 +304,7 @@ struct fb_ops {
17793 +@@ -305,7 +305,7 @@ struct fb_ops {
17794 /* called at KDB enter and leave time to prepare the console */
17795 int (*fb_debug_enter)(struct fb_info *info);
17796 int (*fb_debug_leave)(struct fb_info *info);
17797 @@ -78933,6 +81789,534 @@ index 230f87b..1fd0485 100644
17798 void do_close_on_exec(struct files_struct *);
17799 int iterate_fd(struct files_struct *, unsigned,
17800 int (*)(const void *, struct file *, unsigned),
17801 +diff --git a/include/linux/filter.h b/include/linux/filter.h
17802 +index a7e3c48..e568c8e 100644
17803 +--- a/include/linux/filter.h
17804 ++++ b/include/linux/filter.h
17805 +@@ -9,330 +9,28 @@
17806 + #include <linux/workqueue.h>
17807 + #include <uapi/linux/filter.h>
17808 +
17809 +-/* Internally used and optimized filter representation with extended
17810 +- * instruction set based on top of classic BPF.
17811 +- */
17812 +-
17813 +-/* instruction classes */
17814 +-#define BPF_ALU64 0x07 /* alu mode in double word width */
17815 +-
17816 +-/* ld/ldx fields */
17817 +-#define BPF_DW 0x18 /* double word */
17818 +-#define BPF_XADD 0xc0 /* exclusive add */
17819 +-
17820 +-/* alu/jmp fields */
17821 +-#define BPF_MOV 0xb0 /* mov reg to reg */
17822 +-#define BPF_ARSH 0xc0 /* sign extending arithmetic shift right */
17823 +-
17824 +-/* change endianness of a register */
17825 +-#define BPF_END 0xd0 /* flags for endianness conversion: */
17826 +-#define BPF_TO_LE 0x00 /* convert to little-endian */
17827 +-#define BPF_TO_BE 0x08 /* convert to big-endian */
17828 +-#define BPF_FROM_LE BPF_TO_LE
17829 +-#define BPF_FROM_BE BPF_TO_BE
17830 +-
17831 +-#define BPF_JNE 0x50 /* jump != */
17832 +-#define BPF_JSGT 0x60 /* SGT is signed '>', GT in x86 */
17833 +-#define BPF_JSGE 0x70 /* SGE is signed '>=', GE in x86 */
17834 +-#define BPF_CALL 0x80 /* function call */
17835 +-#define BPF_EXIT 0x90 /* function return */
17836 +-
17837 +-/* Register numbers */
17838 +-enum {
17839 +- BPF_REG_0 = 0,
17840 +- BPF_REG_1,
17841 +- BPF_REG_2,
17842 +- BPF_REG_3,
17843 +- BPF_REG_4,
17844 +- BPF_REG_5,
17845 +- BPF_REG_6,
17846 +- BPF_REG_7,
17847 +- BPF_REG_8,
17848 +- BPF_REG_9,
17849 +- BPF_REG_10,
17850 +- __MAX_BPF_REG,
17851 +-};
17852 +-
17853 +-/* BPF has 10 general purpose 64-bit registers and stack frame. */
17854 +-#define MAX_BPF_REG __MAX_BPF_REG
17855 +-
17856 +-/* ArgX, context and stack frame pointer register positions. Note,
17857 +- * Arg1, Arg2, Arg3, etc are used as argument mappings of function
17858 +- * calls in BPF_CALL instruction.
17859 +- */
17860 +-#define BPF_REG_ARG1 BPF_REG_1
17861 +-#define BPF_REG_ARG2 BPF_REG_2
17862 +-#define BPF_REG_ARG3 BPF_REG_3
17863 +-#define BPF_REG_ARG4 BPF_REG_4
17864 +-#define BPF_REG_ARG5 BPF_REG_5
17865 +-#define BPF_REG_CTX BPF_REG_6
17866 +-#define BPF_REG_FP BPF_REG_10
17867 +-
17868 +-/* Additional register mappings for converted user programs. */
17869 +-#define BPF_REG_A BPF_REG_0
17870 +-#define BPF_REG_X BPF_REG_7
17871 +-#define BPF_REG_TMP BPF_REG_8
17872 +-
17873 +-/* BPF program can access up to 512 bytes of stack space. */
17874 +-#define MAX_BPF_STACK 512
17875 +-
17876 +-/* Helper macros for filter block array initializers. */
17877 +-
17878 +-/* ALU ops on registers, bpf_add|sub|...: dst_reg += src_reg */
17879 +-
17880 +-#define BPF_ALU64_REG(OP, DST, SRC) \
17881 +- ((struct sock_filter_int) { \
17882 +- .code = BPF_ALU64 | BPF_OP(OP) | BPF_X, \
17883 +- .dst_reg = DST, \
17884 +- .src_reg = SRC, \
17885 +- .off = 0, \
17886 +- .imm = 0 })
17887 +-
17888 +-#define BPF_ALU32_REG(OP, DST, SRC) \
17889 +- ((struct sock_filter_int) { \
17890 +- .code = BPF_ALU | BPF_OP(OP) | BPF_X, \
17891 +- .dst_reg = DST, \
17892 +- .src_reg = SRC, \
17893 +- .off = 0, \
17894 +- .imm = 0 })
17895 +-
17896 +-/* ALU ops on immediates, bpf_add|sub|...: dst_reg += imm32 */
17897 +-
17898 +-#define BPF_ALU64_IMM(OP, DST, IMM) \
17899 +- ((struct sock_filter_int) { \
17900 +- .code = BPF_ALU64 | BPF_OP(OP) | BPF_K, \
17901 +- .dst_reg = DST, \
17902 +- .src_reg = 0, \
17903 +- .off = 0, \
17904 +- .imm = IMM })
17905 +-
17906 +-#define BPF_ALU32_IMM(OP, DST, IMM) \
17907 +- ((struct sock_filter_int) { \
17908 +- .code = BPF_ALU | BPF_OP(OP) | BPF_K, \
17909 +- .dst_reg = DST, \
17910 +- .src_reg = 0, \
17911 +- .off = 0, \
17912 +- .imm = IMM })
17913 +-
17914 +-/* Endianess conversion, cpu_to_{l,b}e(), {l,b}e_to_cpu() */
17915 +-
17916 +-#define BPF_ENDIAN(TYPE, DST, LEN) \
17917 +- ((struct sock_filter_int) { \
17918 +- .code = BPF_ALU | BPF_END | BPF_SRC(TYPE), \
17919 +- .dst_reg = DST, \
17920 +- .src_reg = 0, \
17921 +- .off = 0, \
17922 +- .imm = LEN })
17923 +-
17924 +-/* Short form of mov, dst_reg = src_reg */
17925 +-
17926 +-#define BPF_MOV64_REG(DST, SRC) \
17927 +- ((struct sock_filter_int) { \
17928 +- .code = BPF_ALU64 | BPF_MOV | BPF_X, \
17929 +- .dst_reg = DST, \
17930 +- .src_reg = SRC, \
17931 +- .off = 0, \
17932 +- .imm = 0 })
17933 +-
17934 +-#define BPF_MOV32_REG(DST, SRC) \
17935 +- ((struct sock_filter_int) { \
17936 +- .code = BPF_ALU | BPF_MOV | BPF_X, \
17937 +- .dst_reg = DST, \
17938 +- .src_reg = SRC, \
17939 +- .off = 0, \
17940 +- .imm = 0 })
17941 +-
17942 +-/* Short form of mov, dst_reg = imm32 */
17943 +-
17944 +-#define BPF_MOV64_IMM(DST, IMM) \
17945 +- ((struct sock_filter_int) { \
17946 +- .code = BPF_ALU64 | BPF_MOV | BPF_K, \
17947 +- .dst_reg = DST, \
17948 +- .src_reg = 0, \
17949 +- .off = 0, \
17950 +- .imm = IMM })
17951 +-
17952 +-#define BPF_MOV32_IMM(DST, IMM) \
17953 +- ((struct sock_filter_int) { \
17954 +- .code = BPF_ALU | BPF_MOV | BPF_K, \
17955 +- .dst_reg = DST, \
17956 +- .src_reg = 0, \
17957 +- .off = 0, \
17958 +- .imm = IMM })
17959 +-
17960 +-/* Short form of mov based on type, BPF_X: dst_reg = src_reg, BPF_K: dst_reg = imm32 */
17961 +-
17962 +-#define BPF_MOV64_RAW(TYPE, DST, SRC, IMM) \
17963 +- ((struct sock_filter_int) { \
17964 +- .code = BPF_ALU64 | BPF_MOV | BPF_SRC(TYPE), \
17965 +- .dst_reg = DST, \
17966 +- .src_reg = SRC, \
17967 +- .off = 0, \
17968 +- .imm = IMM })
17969 +-
17970 +-#define BPF_MOV32_RAW(TYPE, DST, SRC, IMM) \
17971 +- ((struct sock_filter_int) { \
17972 +- .code = BPF_ALU | BPF_MOV | BPF_SRC(TYPE), \
17973 +- .dst_reg = DST, \
17974 +- .src_reg = SRC, \
17975 +- .off = 0, \
17976 +- .imm = IMM })
17977 +-
17978 +-/* Direct packet access, R0 = *(uint *) (skb->data + imm32) */
17979 +-
17980 +-#define BPF_LD_ABS(SIZE, IMM) \
17981 +- ((struct sock_filter_int) { \
17982 +- .code = BPF_LD | BPF_SIZE(SIZE) | BPF_ABS, \
17983 +- .dst_reg = 0, \
17984 +- .src_reg = 0, \
17985 +- .off = 0, \
17986 +- .imm = IMM })
17987 +-
17988 +-/* Indirect packet access, R0 = *(uint *) (skb->data + src_reg + imm32) */
17989 +-
17990 +-#define BPF_LD_IND(SIZE, SRC, IMM) \
17991 +- ((struct sock_filter_int) { \
17992 +- .code = BPF_LD | BPF_SIZE(SIZE) | BPF_IND, \
17993 +- .dst_reg = 0, \
17994 +- .src_reg = SRC, \
17995 +- .off = 0, \
17996 +- .imm = IMM })
17997 +-
17998 +-/* Memory load, dst_reg = *(uint *) (src_reg + off16) */
17999 +-
18000 +-#define BPF_LDX_MEM(SIZE, DST, SRC, OFF) \
18001 +- ((struct sock_filter_int) { \
18002 +- .code = BPF_LDX | BPF_SIZE(SIZE) | BPF_MEM, \
18003 +- .dst_reg = DST, \
18004 +- .src_reg = SRC, \
18005 +- .off = OFF, \
18006 +- .imm = 0 })
18007 +-
18008 +-/* Memory store, *(uint *) (dst_reg + off16) = src_reg */
18009 +-
18010 +-#define BPF_STX_MEM(SIZE, DST, SRC, OFF) \
18011 +- ((struct sock_filter_int) { \
18012 +- .code = BPF_STX | BPF_SIZE(SIZE) | BPF_MEM, \
18013 +- .dst_reg = DST, \
18014 +- .src_reg = SRC, \
18015 +- .off = OFF, \
18016 +- .imm = 0 })
18017 +-
18018 +-/* Memory store, *(uint *) (dst_reg + off16) = imm32 */
18019 +-
18020 +-#define BPF_ST_MEM(SIZE, DST, OFF, IMM) \
18021 +- ((struct sock_filter_int) { \
18022 +- .code = BPF_ST | BPF_SIZE(SIZE) | BPF_MEM, \
18023 +- .dst_reg = DST, \
18024 +- .src_reg = 0, \
18025 +- .off = OFF, \
18026 +- .imm = IMM })
18027 +-
18028 +-/* Conditional jumps against registers, if (dst_reg 'op' src_reg) goto pc + off16 */
18029 +-
18030 +-#define BPF_JMP_REG(OP, DST, SRC, OFF) \
18031 +- ((struct sock_filter_int) { \
18032 +- .code = BPF_JMP | BPF_OP(OP) | BPF_X, \
18033 +- .dst_reg = DST, \
18034 +- .src_reg = SRC, \
18035 +- .off = OFF, \
18036 +- .imm = 0 })
18037 +-
18038 +-/* Conditional jumps against immediates, if (dst_reg 'op' imm32) goto pc + off16 */
18039 +-
18040 +-#define BPF_JMP_IMM(OP, DST, IMM, OFF) \
18041 +- ((struct sock_filter_int) { \
18042 +- .code = BPF_JMP | BPF_OP(OP) | BPF_K, \
18043 +- .dst_reg = DST, \
18044 +- .src_reg = 0, \
18045 +- .off = OFF, \
18046 +- .imm = IMM })
18047 +-
18048 +-/* Function call */
18049 +-
18050 +-#define BPF_EMIT_CALL(FUNC) \
18051 +- ((struct sock_filter_int) { \
18052 +- .code = BPF_JMP | BPF_CALL, \
18053 +- .dst_reg = 0, \
18054 +- .src_reg = 0, \
18055 +- .off = 0, \
18056 +- .imm = ((FUNC) - __bpf_call_base) })
18057 +-
18058 +-/* Raw code statement block */
18059 +-
18060 +-#define BPF_RAW_INSN(CODE, DST, SRC, OFF, IMM) \
18061 +- ((struct sock_filter_int) { \
18062 +- .code = CODE, \
18063 +- .dst_reg = DST, \
18064 +- .src_reg = SRC, \
18065 +- .off = OFF, \
18066 +- .imm = IMM })
18067 +-
18068 +-/* Program exit */
18069 +-
18070 +-#define BPF_EXIT_INSN() \
18071 +- ((struct sock_filter_int) { \
18072 +- .code = BPF_JMP | BPF_EXIT, \
18073 +- .dst_reg = 0, \
18074 +- .src_reg = 0, \
18075 +- .off = 0, \
18076 +- .imm = 0 })
18077 +-
18078 +-#define bytes_to_bpf_size(bytes) \
18079 +-({ \
18080 +- int bpf_size = -EINVAL; \
18081 +- \
18082 +- if (bytes == sizeof(u8)) \
18083 +- bpf_size = BPF_B; \
18084 +- else if (bytes == sizeof(u16)) \
18085 +- bpf_size = BPF_H; \
18086 +- else if (bytes == sizeof(u32)) \
18087 +- bpf_size = BPF_W; \
18088 +- else if (bytes == sizeof(u64)) \
18089 +- bpf_size = BPF_DW; \
18090 +- \
18091 +- bpf_size; \
18092 +-})
18093 +-
18094 +-/* Macro to invoke filter function. */
18095 +-#define SK_RUN_FILTER(filter, ctx) (*filter->bpf_func)(ctx, filter->insnsi)
18096 +-
18097 +-struct sock_filter_int {
18098 +- __u8 code; /* opcode */
18099 +- __u8 dst_reg:4; /* dest register */
18100 +- __u8 src_reg:4; /* source register */
18101 +- __s16 off; /* signed offset */
18102 +- __s32 imm; /* signed immediate constant */
18103 +-};
18104 +-
18105 + #ifdef CONFIG_COMPAT
18106 +-/* A struct sock_filter is architecture independent. */
18107 ++/*
18108 ++ * A struct sock_filter is architecture independent.
18109 ++ */
18110 + struct compat_sock_fprog {
18111 + u16 len;
18112 +- compat_uptr_t filter; /* struct sock_filter * */
18113 ++ compat_uptr_t filter; /* struct sock_filter * */
18114 + };
18115 + #endif
18116 +
18117 +-struct sock_fprog_kern {
18118 +- u16 len;
18119 +- struct sock_filter *filter;
18120 +-};
18121 +-
18122 + struct sk_buff;
18123 + struct sock;
18124 +-struct seccomp_data;
18125 +
18126 +-struct sk_filter {
18127 ++struct sk_filter
18128 ++{
18129 + atomic_t refcnt;
18130 +- u32 jited:1, /* Is our filter JIT'ed? */
18131 +- len:31; /* Number of filter blocks */
18132 +- struct sock_fprog_kern *orig_prog; /* Original BPF program */
18133 ++ unsigned int len; /* Number of filter blocks */
18134 + struct rcu_head rcu;
18135 + unsigned int (*bpf_func)(const struct sk_buff *skb,
18136 +- const struct sock_filter_int *filter);
18137 ++ const struct sock_filter *filter);
18138 + union {
18139 +- struct sock_filter insns[0];
18140 +- struct sock_filter_int insnsi[0];
18141 ++ struct sock_filter insns[0];
18142 + struct work_struct work;
18143 + };
18144 + };
18145 +@@ -343,76 +41,25 @@ static inline unsigned int sk_filter_size(unsigned int proglen)
18146 + offsetof(struct sk_filter, insns[proglen]));
18147 + }
18148 +
18149 +-#define sk_filter_proglen(fprog) \
18150 +- (fprog->len * sizeof(fprog->filter[0]))
18151 +-
18152 +-int sk_filter(struct sock *sk, struct sk_buff *skb);
18153 +-
18154 +-void sk_filter_select_runtime(struct sk_filter *fp);
18155 +-void sk_filter_free(struct sk_filter *fp);
18156 +-
18157 +-int sk_convert_filter(struct sock_filter *prog, int len,
18158 +- struct sock_filter_int *new_prog, int *new_len);
18159 +-
18160 +-int sk_unattached_filter_create(struct sk_filter **pfp,
18161 +- struct sock_fprog_kern *fprog);
18162 +-void sk_unattached_filter_destroy(struct sk_filter *fp);
18163 +-
18164 +-int sk_attach_filter(struct sock_fprog *fprog, struct sock *sk);
18165 +-int sk_detach_filter(struct sock *sk);
18166 +-
18167 +-int sk_chk_filter(struct sock_filter *filter, unsigned int flen);
18168 +-int sk_get_filter(struct sock *sk, struct sock_filter __user *filter,
18169 +- unsigned int len);
18170 +-
18171 +-void sk_filter_charge(struct sock *sk, struct sk_filter *fp);
18172 +-void sk_filter_uncharge(struct sock *sk, struct sk_filter *fp);
18173 +-
18174 +-u64 __bpf_call_base(u64 r1, u64 r2, u64 r3, u64 r4, u64 r5);
18175 +-void bpf_int_jit_compile(struct sk_filter *fp);
18176 +-
18177 +-#define BPF_ANC BIT(15)
18178 +-
18179 +-static inline u16 bpf_anc_helper(const struct sock_filter *ftest)
18180 +-{
18181 +- BUG_ON(ftest->code & BPF_ANC);
18182 +-
18183 +- switch (ftest->code) {
18184 +- case BPF_LD | BPF_W | BPF_ABS:
18185 +- case BPF_LD | BPF_H | BPF_ABS:
18186 +- case BPF_LD | BPF_B | BPF_ABS:
18187 +-#define BPF_ANCILLARY(CODE) case SKF_AD_OFF + SKF_AD_##CODE: \
18188 +- return BPF_ANC | SKF_AD_##CODE
18189 +- switch (ftest->k) {
18190 +- BPF_ANCILLARY(PROTOCOL);
18191 +- BPF_ANCILLARY(PKTTYPE);
18192 +- BPF_ANCILLARY(IFINDEX);
18193 +- BPF_ANCILLARY(NLATTR);
18194 +- BPF_ANCILLARY(NLATTR_NEST);
18195 +- BPF_ANCILLARY(MARK);
18196 +- BPF_ANCILLARY(QUEUE);
18197 +- BPF_ANCILLARY(HATYPE);
18198 +- BPF_ANCILLARY(RXHASH);
18199 +- BPF_ANCILLARY(CPU);
18200 +- BPF_ANCILLARY(ALU_XOR_X);
18201 +- BPF_ANCILLARY(VLAN_TAG);
18202 +- BPF_ANCILLARY(VLAN_TAG_PRESENT);
18203 +- BPF_ANCILLARY(PAY_OFFSET);
18204 +- BPF_ANCILLARY(RANDOM);
18205 +- }
18206 +- /* Fallthrough. */
18207 +- default:
18208 +- return ftest->code;
18209 +- }
18210 +-}
18211 ++extern int sk_filter(struct sock *sk, struct sk_buff *skb);
18212 ++extern unsigned int sk_run_filter(const struct sk_buff *skb,
18213 ++ const struct sock_filter *filter);
18214 ++extern int sk_unattached_filter_create(struct sk_filter **pfp,
18215 ++ struct sock_fprog *fprog);
18216 ++extern void sk_unattached_filter_destroy(struct sk_filter *fp);
18217 ++extern int sk_attach_filter(struct sock_fprog *fprog, struct sock *sk);
18218 ++extern int sk_detach_filter(struct sock *sk);
18219 ++extern int sk_chk_filter(struct sock_filter *filter, unsigned int flen);
18220 ++extern int sk_get_filter(struct sock *sk, struct sock_filter __user *filter, unsigned len);
18221 ++extern void sk_decode_filter(struct sock_filter *filt, struct sock_filter *to);
18222 +
18223 + #ifdef CONFIG_BPF_JIT
18224 + #include <stdarg.h>
18225 + #include <linux/linkage.h>
18226 + #include <linux/printk.h>
18227 +
18228 +-void bpf_jit_compile(struct sk_filter *fp);
18229 +-void bpf_jit_free(struct sk_filter *fp);
18230 ++extern void bpf_jit_compile(struct sk_filter *fp);
18231 ++extern void bpf_jit_free(struct sk_filter *fp);
18232 +
18233 + static inline void bpf_jit_dump(unsigned int flen, unsigned int proglen,
18234 + u32 pass, void *image)
18235 +@@ -423,22 +70,90 @@ static inline void bpf_jit_dump(unsigned int flen, unsigned int proglen,
18236 + print_hex_dump(KERN_ERR, "JIT code: ", DUMP_PREFIX_OFFSET,
18237 + 16, 1, image, proglen, false);
18238 + }
18239 ++#define SK_RUN_FILTER(FILTER, SKB) (*FILTER->bpf_func)(SKB, FILTER->insns)
18240 + #else
18241 + #include <linux/slab.h>
18242 +-
18243 + static inline void bpf_jit_compile(struct sk_filter *fp)
18244 + {
18245 + }
18246 +-
18247 + static inline void bpf_jit_free(struct sk_filter *fp)
18248 + {
18249 + kfree(fp);
18250 + }
18251 +-#endif /* CONFIG_BPF_JIT */
18252 ++#define SK_RUN_FILTER(FILTER, SKB) sk_run_filter(SKB, FILTER->insns)
18253 ++#endif
18254 +
18255 + static inline int bpf_tell_extensions(void)
18256 + {
18257 + return SKF_AD_MAX;
18258 + }
18259 +
18260 ++enum {
18261 ++ BPF_S_RET_K = 1,
18262 ++ BPF_S_RET_A,
18263 ++ BPF_S_ALU_ADD_K,
18264 ++ BPF_S_ALU_ADD_X,
18265 ++ BPF_S_ALU_SUB_K,
18266 ++ BPF_S_ALU_SUB_X,
18267 ++ BPF_S_ALU_MUL_K,
18268 ++ BPF_S_ALU_MUL_X,
18269 ++ BPF_S_ALU_DIV_X,
18270 ++ BPF_S_ALU_MOD_K,
18271 ++ BPF_S_ALU_MOD_X,
18272 ++ BPF_S_ALU_AND_K,
18273 ++ BPF_S_ALU_AND_X,
18274 ++ BPF_S_ALU_OR_K,
18275 ++ BPF_S_ALU_OR_X,
18276 ++ BPF_S_ALU_XOR_K,
18277 ++ BPF_S_ALU_XOR_X,
18278 ++ BPF_S_ALU_LSH_K,
18279 ++ BPF_S_ALU_LSH_X,
18280 ++ BPF_S_ALU_RSH_K,
18281 ++ BPF_S_ALU_RSH_X,
18282 ++ BPF_S_ALU_NEG,
18283 ++ BPF_S_LD_W_ABS,
18284 ++ BPF_S_LD_H_ABS,
18285 ++ BPF_S_LD_B_ABS,
18286 ++ BPF_S_LD_W_LEN,
18287 ++ BPF_S_LD_W_IND,
18288 ++ BPF_S_LD_H_IND,
18289 ++ BPF_S_LD_B_IND,
18290 ++ BPF_S_LD_IMM,
18291 ++ BPF_S_LDX_W_LEN,
18292 ++ BPF_S_LDX_B_MSH,
18293 ++ BPF_S_LDX_IMM,
18294 ++ BPF_S_MISC_TAX,
18295 ++ BPF_S_MISC_TXA,
18296 ++ BPF_S_ALU_DIV_K,
18297 ++ BPF_S_LD_MEM,
18298 ++ BPF_S_LDX_MEM,
18299 ++ BPF_S_ST,
18300 ++ BPF_S_STX,
18301 ++ BPF_S_JMP_JA,
18302 ++ BPF_S_JMP_JEQ_K,
18303 ++ BPF_S_JMP_JEQ_X,
18304 ++ BPF_S_JMP_JGE_K,
18305 ++ BPF_S_JMP_JGE_X,
18306 ++ BPF_S_JMP_JGT_K,
18307 ++ BPF_S_JMP_JGT_X,
18308 ++ BPF_S_JMP_JSET_K,
18309 ++ BPF_S_JMP_JSET_X,
18310 ++ /* Ancillary data */
18311 ++ BPF_S_ANC_PROTOCOL,
18312 ++ BPF_S_ANC_PKTTYPE,
18313 ++ BPF_S_ANC_IFINDEX,
18314 ++ BPF_S_ANC_NLATTR,
18315 ++ BPF_S_ANC_NLATTR_NEST,
18316 ++ BPF_S_ANC_MARK,
18317 ++ BPF_S_ANC_QUEUE,
18318 ++ BPF_S_ANC_HATYPE,
18319 ++ BPF_S_ANC_RXHASH,
18320 ++ BPF_S_ANC_CPU,
18321 ++ BPF_S_ANC_ALU_XOR_X,
18322 ++ BPF_S_ANC_SECCOMP_LD_W,
18323 ++ BPF_S_ANC_VLAN_TAG,
18324 ++ BPF_S_ANC_VLAN_TAG_PRESENT,
18325 ++ BPF_S_ANC_PAY_OFFSET,
18326 ++};
18327 ++
18328 + #endif /* __LINUX_FILTER_H__ */
18329 diff --git a/include/linux/frontswap.h b/include/linux/frontswap.h
18330 index 8293262..2b3b8bd 100644
18331 --- a/include/linux/frontswap.h
18332 @@ -78947,10 +82331,10 @@ index 8293262..2b3b8bd 100644
18333 extern bool frontswap_enabled;
18334 extern struct frontswap_ops *
18335 diff --git a/include/linux/fs.h b/include/linux/fs.h
18336 -index 8780312..425cc22 100644
18337 +index e11d60c..901317a 100644
18338 --- a/include/linux/fs.h
18339 +++ b/include/linux/fs.h
18340 -@@ -398,7 +398,7 @@ struct address_space {
18341 +@@ -401,7 +401,7 @@ struct address_space {
18342 spinlock_t private_lock; /* for use by the address_space */
18343 struct list_head private_list; /* ditto */
18344 void *private_data; /* ditto */
18345 @@ -78959,7 +82343,7 @@ index 8780312..425cc22 100644
18346 /*
18347 * On most architectures that alignment is already the case; but
18348 * must be enforced here for CRIS, to let the least significant bit
18349 -@@ -441,7 +441,7 @@ struct block_device {
18350 +@@ -444,7 +444,7 @@ struct block_device {
18351 int bd_fsfreeze_count;
18352 /* Mutex for freeze */
18353 struct mutex bd_fsfreeze_mutex;
18354 @@ -78968,7 +82352,7 @@ index 8780312..425cc22 100644
18355
18356 /*
18357 * Radix-tree tags, for tagging dirty and writeback pages within the pagecache
18358 -@@ -585,7 +585,7 @@ struct inode {
18359 +@@ -588,7 +588,7 @@ struct inode {
18360 #endif
18361
18362 void *i_private; /* fs or device private pointer */
18363 @@ -78977,7 +82361,7 @@ index 8780312..425cc22 100644
18364
18365 static inline int inode_unhashed(struct inode *inode)
18366 {
18367 -@@ -778,7 +778,7 @@ struct file {
18368 +@@ -781,7 +781,7 @@ struct file {
18369 struct list_head f_tfile_llink;
18370 #endif /* #ifdef CONFIG_EPOLL */
18371 struct address_space *f_mapping;
18372 @@ -78986,7 +82370,7 @@ index 8780312..425cc22 100644
18373
18374 struct file_handle {
18375 __u32 handle_bytes;
18376 -@@ -906,7 +906,7 @@ struct file_lock {
18377 +@@ -909,7 +909,7 @@ struct file_lock {
18378 int state; /* state of grant or error if -ve */
18379 } afs;
18380 } fl_u;
18381 @@ -78995,7 +82379,7 @@ index 8780312..425cc22 100644
18382
18383 /* The following constant reflects the upper bound of the file/locking space */
18384 #ifndef OFFSET_MAX
18385 -@@ -1255,7 +1255,7 @@ struct super_block {
18386 +@@ -1258,7 +1258,7 @@ struct super_block {
18387 struct list_lru s_dentry_lru ____cacheline_aligned_in_smp;
18388 struct list_lru s_inode_lru ____cacheline_aligned_in_smp;
18389 struct rcu_head rcu;
18390 @@ -79004,7 +82388,7 @@ index 8780312..425cc22 100644
18391
18392 extern struct timespec current_fs_time(struct super_block *sb);
18393
18394 -@@ -1477,7 +1477,8 @@ struct file_operations {
18395 +@@ -1484,7 +1484,8 @@ struct file_operations {
18396 long (*fallocate)(struct file *file, int mode, loff_t offset,
18397 loff_t len);
18398 int (*show_fdinfo)(struct seq_file *m, struct file *f);
18399 @@ -79014,7 +82398,7 @@ index 8780312..425cc22 100644
18400
18401 struct inode_operations {
18402 struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int);
18403 -@@ -2757,4 +2758,14 @@ static inline bool dir_relax(struct inode *inode)
18404 +@@ -2769,4 +2770,14 @@ static inline bool dir_relax(struct inode *inode)
18405 return !IS_DEADDIR(inode);
18406 }
18407
18408 @@ -79118,7 +82502,7 @@ index 1c804b0..1432c2b 100644
18409
18410 /*
18411 diff --git a/include/linux/genhd.h b/include/linux/genhd.h
18412 -index 9f3c275..8bdff5d 100644
18413 +index ec274e0..e678159 100644
18414 --- a/include/linux/genhd.h
18415 +++ b/include/linux/genhd.h
18416 @@ -194,7 +194,7 @@ struct gendisk {
18417 @@ -79153,10 +82537,10 @@ index c0894dd..2fbf10c 100644
18418 };
18419
18420 diff --git a/include/linux/gfp.h b/include/linux/gfp.h
18421 -index 39b81dc..819dc51 100644
18422 +index 6eb1fb3..30fe7e4 100644
18423 --- a/include/linux/gfp.h
18424 +++ b/include/linux/gfp.h
18425 -@@ -36,6 +36,13 @@ struct vm_area_struct;
18426 +@@ -34,6 +34,13 @@ struct vm_area_struct;
18427 #define ___GFP_NO_KSWAPD 0x400000u
18428 #define ___GFP_OTHER_NODE 0x800000u
18429 #define ___GFP_WRITE 0x1000000u
18430 @@ -79170,15 +82554,15 @@ index 39b81dc..819dc51 100644
18431 /* If the above are modified, __GFP_BITS_SHIFT may need updating */
18432
18433 /*
18434 -@@ -93,6 +100,7 @@ struct vm_area_struct;
18435 +@@ -90,6 +97,7 @@ struct vm_area_struct;
18436 + #define __GFP_NO_KSWAPD ((__force gfp_t)___GFP_NO_KSWAPD)
18437 #define __GFP_OTHER_NODE ((__force gfp_t)___GFP_OTHER_NODE) /* On behalf of other node */
18438 - #define __GFP_KMEMCG ((__force gfp_t)___GFP_KMEMCG) /* Allocation comes from a memcg-accounted resource */
18439 #define __GFP_WRITE ((__force gfp_t)___GFP_WRITE) /* Allocator intends to dirty page */
18440 +#define __GFP_USERCOPY ((__force gfp_t)___GFP_USERCOPY)/* Allocator intends to copy page to/from userland */
18441
18442 /*
18443 * This may seem redundant, but it's a way of annotating false positives vs.
18444 -@@ -100,7 +108,7 @@ struct vm_area_struct;
18445 +@@ -97,7 +105,7 @@ struct vm_area_struct;
18446 */
18447 #define __GFP_NOTRACK_FALSE_POSITIVE (__GFP_NOTRACK)
18448
18449 @@ -79187,7 +82571,7 @@ index 39b81dc..819dc51 100644
18450 #define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1))
18451
18452 /* This equals 0, but use constants in case they ever change */
18453 -@@ -158,6 +166,8 @@ struct vm_area_struct;
18454 +@@ -155,6 +163,8 @@ struct vm_area_struct;
18455 /* 4GB DMA on some platforms */
18456 #define GFP_DMA32 __GFP_DMA32
18457
18458 @@ -80225,10 +83609,10 @@ index 0000000..b02ba9d
18459 +#define GR_MSRWRITE_MSG "denied write to CPU MSR by "
18460 diff --git a/include/linux/grsecurity.h b/include/linux/grsecurity.h
18461 new file mode 100644
18462 -index 0000000..e6d120f
18463 +index 0000000..10b9635
18464 --- /dev/null
18465 +++ b/include/linux/grsecurity.h
18466 -@@ -0,0 +1,252 @@
18467 +@@ -0,0 +1,254 @@
18468 +#ifndef GR_SECURITY_H
18469 +#define GR_SECURITY_H
18470 +#include <linux/fs.h>
18471 @@ -80268,6 +83652,8 @@ index 0000000..e6d120f
18472 +int gr_check_user_change(kuid_t real, kuid_t effective, kuid_t fs);
18473 +int gr_check_group_change(kgid_t real, kgid_t effective, kgid_t fs);
18474 +
18475 ++int gr_learn_cap(const struct task_struct *task, const struct cred *cred, const int cap);
18476 ++
18477 +void gr_del_task_from_ip_table(struct task_struct *p);
18478 +
18479 +int gr_pid_is_chrooted(struct task_struct *p);
18480 @@ -80605,7 +83991,7 @@ index aff7ad8..3942bbd 100644
18481 extern int register_pppox_proto(int proto_num, const struct pppox_proto *pp);
18482 extern void unregister_pppox_proto(int proto_num);
18483 diff --git a/include/linux/init.h b/include/linux/init.h
18484 -index a3ba270..a1b6604 100644
18485 +index 2df8e8d..3e1280d 100644
18486 --- a/include/linux/init.h
18487 +++ b/include/linux/init.h
18488 @@ -37,9 +37,17 @@
18489 @@ -80662,10 +84048,10 @@ index 6df7f9f..d0bf699 100644
18490 .files = &init_files, \
18491 .signal = &init_signals, \
18492 diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
18493 -index 051c850..431f83a 100644
18494 +index 698ad05..8601bb7 100644
18495 --- a/include/linux/interrupt.h
18496 +++ b/include/linux/interrupt.h
18497 -@@ -412,8 +412,8 @@ extern const char * const softirq_to_name[NR_SOFTIRQS];
18498 +@@ -418,8 +418,8 @@ extern const char * const softirq_to_name[NR_SOFTIRQS];
18499
18500 struct softirq_action
18501 {
18502 @@ -80676,7 +84062,7 @@ index 051c850..431f83a 100644
18503
18504 asmlinkage void do_softirq(void);
18505 asmlinkage void __do_softirq(void);
18506 -@@ -427,7 +427,7 @@ static inline void do_softirq_own_stack(void)
18507 +@@ -433,7 +433,7 @@ static inline void do_softirq_own_stack(void)
18508 }
18509 #endif
18510
18511 @@ -80725,7 +84111,7 @@ index 35e7eca..6afb7ad 100644
18512 extern struct ipc_namespace init_ipc_ns;
18513 extern atomic_t nr_ipc_ns;
18514 diff --git a/include/linux/irq.h b/include/linux/irq.h
18515 -index 5c57efb..965a62b 100644
18516 +index 0d998d8..3a1c782 100644
18517 --- a/include/linux/irq.h
18518 +++ b/include/linux/irq.h
18519 @@ -344,7 +344,8 @@ struct irq_chip {
18520 @@ -80739,10 +84125,10 @@ index 5c57efb..965a62b 100644
18521 /*
18522 * irq_chip specific flags
18523 diff --git a/include/linux/irqchip/arm-gic.h b/include/linux/irqchip/arm-gic.h
18524 -index 7ed92d0..589abf5 100644
18525 +index 45e2d8c..26d85da 100644
18526 --- a/include/linux/irqchip/arm-gic.h
18527 +++ b/include/linux/irqchip/arm-gic.h
18528 -@@ -73,9 +73,11 @@
18529 +@@ -75,9 +75,11 @@
18530
18531 #ifndef __ASSEMBLY__
18532
18533 @@ -80755,6 +84141,22 @@ index 7ed92d0..589abf5 100644
18534
18535 void gic_init_bases(unsigned int, int, void __iomem *, void __iomem *,
18536 u32 offset, struct device_node *);
18537 +diff --git a/include/linux/isdn_ppp.h b/include/linux/isdn_ppp.h
18538 +index 8e10f57..d5f62bc 100644
18539 +--- a/include/linux/isdn_ppp.h
18540 ++++ b/include/linux/isdn_ppp.h
18541 +@@ -180,8 +180,9 @@ struct ippp_struct {
18542 + struct slcompress *slcomp;
18543 + #endif
18544 + #ifdef CONFIG_IPPP_FILTER
18545 +- struct sk_filter *pass_filter; /* filter for packets to pass */
18546 +- struct sk_filter *active_filter; /* filter for pkts to reset idle */
18547 ++ struct sock_filter *pass_filter; /* filter for packets to pass */
18548 ++ struct sock_filter *active_filter; /* filter for pkts to reset idle */
18549 ++ unsigned pass_len, active_len;
18550 + #endif
18551 + unsigned long debug;
18552 + struct isdn_ppp_compressor *compressor,*decompressor;
18553 diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
18554 index 1f44466..b481806 100644
18555 --- a/include/linux/jiffies.h
18556 @@ -80891,10 +84293,10 @@ index 0555cc6..40116ce 100644
18557 char **envp;
18558 int wait;
18559 diff --git a/include/linux/kobject.h b/include/linux/kobject.h
18560 -index f896a33..f2eb10f 100644
18561 +index 2d61b90..a1d0a13 100644
18562 --- a/include/linux/kobject.h
18563 +++ b/include/linux/kobject.h
18564 -@@ -116,7 +116,7 @@ struct kobj_type {
18565 +@@ -118,7 +118,7 @@ struct kobj_type {
18566 struct attribute **default_attrs;
18567 const struct kobj_ns_type_operations *(*child_ns_type)(struct kobject *kobj);
18568 const void *(*namespace)(struct kobject *kobj);
18569 @@ -80903,7 +84305,7 @@ index f896a33..f2eb10f 100644
18570
18571 struct kobj_uevent_env {
18572 char *argv[3];
18573 -@@ -140,6 +140,7 @@ struct kobj_attribute {
18574 +@@ -142,6 +142,7 @@ struct kobj_attribute {
18575 ssize_t (*store)(struct kobject *kobj, struct kobj_attribute *attr,
18576 const char *buf, size_t count);
18577 };
18578 @@ -80911,7 +84313,7 @@ index f896a33..f2eb10f 100644
18579
18580 extern const struct sysfs_ops kobj_sysfs_ops;
18581
18582 -@@ -167,7 +168,7 @@ struct kset {
18583 +@@ -169,7 +170,7 @@ struct kset {
18584 spinlock_t list_lock;
18585 struct kobject kobj;
18586 const struct kset_uevent_ops *uevent_ops;
18587 @@ -80947,10 +84349,10 @@ index 484604d..0f6c5b6 100644
18588 if (atomic_sub_and_test((int) count, &kref->refcount)) {
18589 release(kref);
18590 diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
18591 -index 7d21cf9..bc0c81f 100644
18592 +index ec4e3bd..14db03a 100644
18593 --- a/include/linux/kvm_host.h
18594 +++ b/include/linux/kvm_host.h
18595 -@@ -466,7 +466,7 @@ static inline void kvm_irqfd_exit(void)
18596 +@@ -468,7 +468,7 @@ static inline void kvm_irqfd_exit(void)
18597 {
18598 }
18599 #endif
18600 @@ -80959,7 +84361,7 @@ index 7d21cf9..bc0c81f 100644
18601 struct module *module);
18602 void kvm_exit(void);
18603
18604 -@@ -632,7 +632,7 @@ int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
18605 +@@ -634,7 +634,7 @@ int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
18606 struct kvm_guest_debug *dbg);
18607 int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run);
18608
18609 @@ -81101,7 +84503,7 @@ index f230a97..714c006 100644
18610 static inline int
18611 vma_dup_policy(struct vm_area_struct *src, struct vm_area_struct *dst)
18612 diff --git a/include/linux/mm.h b/include/linux/mm.h
18613 -index d677706..673408c 100644
18614 +index e03dd29..eaf923c 100644
18615 --- a/include/linux/mm.h
18616 +++ b/include/linux/mm.h
18617 @@ -127,6 +127,11 @@ extern unsigned int kobjsize(const void *objp);
18618 @@ -81124,10 +84526,10 @@ index d677706..673408c 100644
18619 - void *buf, int len, int write);
18620 + ssize_t (*access)(struct vm_area_struct *vma, unsigned long addr,
18621 + void *buf, size_t len, int write);
18622 - #ifdef CONFIG_NUMA
18623 - /*
18624 - * set_policy() op must add a reference to any non-NULL @new mempolicy
18625 -@@ -268,6 +273,7 @@ struct vm_operations_struct {
18626 +
18627 + /* Called by the /proc/PID/maps code to ask the vma whether it
18628 + * has a special name. Returning non-NULL will also cause this
18629 +@@ -274,6 +279,7 @@ struct vm_operations_struct {
18630 int (*remap_pages)(struct vm_area_struct *vma, unsigned long addr,
18631 unsigned long size, pgoff_t pgoff);
18632 };
18633 @@ -81135,7 +84537,7 @@ index d677706..673408c 100644
18634
18635 struct mmu_gather;
18636 struct inode;
18637 -@@ -1133,8 +1139,8 @@ int follow_pfn(struct vm_area_struct *vma, unsigned long address,
18638 +@@ -1144,8 +1150,8 @@ int follow_pfn(struct vm_area_struct *vma, unsigned long address,
18639 unsigned long *pfn);
18640 int follow_phys(struct vm_area_struct *vma, unsigned long address,
18641 unsigned int flags, unsigned long *prot, resource_size_t *phys);
18642 @@ -81146,7 +84548,7 @@ index d677706..673408c 100644
18643
18644 static inline void unmap_shared_mapping_range(struct address_space *mapping,
18645 loff_t const holebegin, loff_t const holelen)
18646 -@@ -1173,9 +1179,9 @@ static inline int fixup_user_fault(struct task_struct *tsk,
18647 +@@ -1184,9 +1190,9 @@ static inline int fixup_user_fault(struct task_struct *tsk,
18648 }
18649 #endif
18650
18651 @@ -81159,7 +84561,7 @@ index d677706..673408c 100644
18652
18653 long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
18654 unsigned long start, unsigned long nr_pages,
18655 -@@ -1208,34 +1214,6 @@ int set_page_dirty_lock(struct page *page);
18656 +@@ -1219,34 +1225,6 @@ int set_page_dirty_lock(struct page *page);
18657 int clear_page_dirty_for_io(struct page *page);
18658 int get_cmdline(struct task_struct *task, char *buffer, int buflen);
18659
18660 @@ -81194,7 +84596,7 @@ index d677706..673408c 100644
18661 extern pid_t
18662 vm_is_stack(struct task_struct *task, struct vm_area_struct *vma, int in_group);
18663
18664 -@@ -1335,6 +1313,15 @@ static inline void sync_mm_rss(struct mm_struct *mm)
18665 +@@ -1346,6 +1324,15 @@ static inline void sync_mm_rss(struct mm_struct *mm)
18666 }
18667 #endif
18668
18669 @@ -81210,7 +84612,7 @@ index d677706..673408c 100644
18670 int vma_wants_writenotify(struct vm_area_struct *vma);
18671
18672 extern pte_t *__get_locked_pte(struct mm_struct *mm, unsigned long addr,
18673 -@@ -1353,8 +1340,15 @@ static inline int __pud_alloc(struct mm_struct *mm, pgd_t *pgd,
18674 +@@ -1364,8 +1351,15 @@ static inline int __pud_alloc(struct mm_struct *mm, pgd_t *pgd,
18675 {
18676 return 0;
18677 }
18678 @@ -81226,7 +84628,7 @@ index d677706..673408c 100644
18679 #endif
18680
18681 #ifdef __PAGETABLE_PMD_FOLDED
18682 -@@ -1363,8 +1357,15 @@ static inline int __pmd_alloc(struct mm_struct *mm, pud_t *pud,
18683 +@@ -1374,8 +1368,15 @@ static inline int __pmd_alloc(struct mm_struct *mm, pud_t *pud,
18684 {
18685 return 0;
18686 }
18687 @@ -81242,7 +84644,7 @@ index d677706..673408c 100644
18688 #endif
18689
18690 int __pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma,
18691 -@@ -1382,11 +1383,23 @@ static inline pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long a
18692 +@@ -1393,11 +1394,23 @@ static inline pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long a
18693 NULL: pud_offset(pgd, address);
18694 }
18695
18696 @@ -81266,7 +84668,7 @@ index d677706..673408c 100644
18697 #endif /* CONFIG_MMU && !__ARCH_HAS_4LEVEL_HACK */
18698
18699 #if USE_SPLIT_PTE_PTLOCKS
18700 -@@ -1783,7 +1796,7 @@ extern int install_special_mapping(struct mm_struct *mm,
18701 +@@ -1796,7 +1809,7 @@ extern int install_special_mapping(struct mm_struct *mm,
18702 unsigned long addr, unsigned long len,
18703 unsigned long flags, struct page **pages);
18704
18705 @@ -81275,7 +84677,7 @@ index d677706..673408c 100644
18706
18707 extern unsigned long mmap_region(struct file *file, unsigned long addr,
18708 unsigned long len, vm_flags_t vm_flags, unsigned long pgoff);
18709 -@@ -1791,6 +1804,7 @@ extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
18710 +@@ -1804,6 +1817,7 @@ extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
18711 unsigned long len, unsigned long prot, unsigned long flags,
18712 unsigned long pgoff, unsigned long *populate);
18713 extern int do_munmap(struct mm_struct *, unsigned long, size_t);
18714 @@ -81283,7 +84685,7 @@ index d677706..673408c 100644
18715
18716 #ifdef CONFIG_MMU
18717 extern int __mm_populate(unsigned long addr, unsigned long len,
18718 -@@ -1819,10 +1833,11 @@ struct vm_unmapped_area_info {
18719 +@@ -1832,10 +1846,11 @@ struct vm_unmapped_area_info {
18720 unsigned long high_limit;
18721 unsigned long align_mask;
18722 unsigned long align_offset;
18723 @@ -81297,7 +84699,7 @@ index d677706..673408c 100644
18724
18725 /*
18726 * Search for an unmapped address range.
18727 -@@ -1834,7 +1849,7 @@ extern unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info);
18728 +@@ -1847,7 +1862,7 @@ extern unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info);
18729 * - satisfies (begin_addr & align_mask) == (align_offset & align_mask)
18730 */
18731 static inline unsigned long
18732 @@ -81306,7 +84708,7 @@ index d677706..673408c 100644
18733 {
18734 if (!(info->flags & VM_UNMAPPED_AREA_TOPDOWN))
18735 return unmapped_area(info);
18736 -@@ -1896,6 +1911,10 @@ extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long add
18737 +@@ -1909,6 +1924,10 @@ extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long add
18738 extern struct vm_area_struct * find_vma_prev(struct mm_struct * mm, unsigned long addr,
18739 struct vm_area_struct **pprev);
18740
18741 @@ -81317,7 +84719,7 @@ index d677706..673408c 100644
18742 /* Look up the first VMA which intersects the interval start_addr..end_addr-1,
18743 NULL if none. Assume start_addr < end_addr. */
18744 static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * mm, unsigned long start_addr, unsigned long end_addr)
18745 -@@ -1924,15 +1943,6 @@ static inline struct vm_area_struct *find_exact_vma(struct mm_struct *mm,
18746 +@@ -1937,15 +1956,6 @@ static inline struct vm_area_struct *find_exact_vma(struct mm_struct *mm,
18747 return vma;
18748 }
18749
18750 @@ -81333,7 +84735,7 @@ index d677706..673408c 100644
18751 #ifdef CONFIG_NUMA_BALANCING
18752 unsigned long change_prot_numa(struct vm_area_struct *vma,
18753 unsigned long start, unsigned long end);
18754 -@@ -1984,6 +1994,11 @@ void vm_stat_account(struct mm_struct *, unsigned long, struct file *, long);
18755 +@@ -1997,6 +2007,11 @@ void vm_stat_account(struct mm_struct *, unsigned long, struct file *, long);
18756 static inline void vm_stat_account(struct mm_struct *mm,
18757 unsigned long flags, struct file *file, long pages)
18758 {
18759 @@ -81345,7 +84747,7 @@ index d677706..673408c 100644
18760 mm->total_vm += pages;
18761 }
18762 #endif /* CONFIG_PROC_FS */
18763 -@@ -2065,7 +2080,7 @@ extern int unpoison_memory(unsigned long pfn);
18764 +@@ -2078,7 +2093,7 @@ extern int unpoison_memory(unsigned long pfn);
18765 extern int sysctl_memory_failure_early_kill;
18766 extern int sysctl_memory_failure_recovery;
18767 extern void shake_page(struct page *p, int access);
18768 @@ -81354,7 +84756,7 @@ index d677706..673408c 100644
18769 extern int soft_offline_page(struct page *page, int flags);
18770
18771 #if defined(CONFIG_TRANSPARENT_HUGEPAGE) || defined(CONFIG_HUGETLBFS)
18772 -@@ -2100,5 +2115,11 @@ void __init setup_nr_node_ids(void);
18773 +@@ -2113,5 +2128,11 @@ void __init setup_nr_node_ids(void);
18774 static inline void setup_nr_node_ids(void) {}
18775 #endif
18776
18777 @@ -81367,7 +84769,7 @@ index d677706..673408c 100644
18778 #endif /* __KERNEL__ */
18779 #endif /* _LINUX_MM_H */
18780 diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
18781 -index 8967e20..61f7900 100644
18782 +index 96c5750..15668ba 100644
18783 --- a/include/linux/mm_types.h
18784 +++ b/include/linux/mm_types.h
18785 @@ -308,7 +308,9 @@ struct vm_area_struct {
18786 @@ -81431,10 +84833,10 @@ index c5d5278..f0b68c8 100644
18787 }
18788
18789 diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
18790 -index 835aa3d..676b387 100644
18791 +index 6cbd1b6..b1d2f99 100644
18792 --- a/include/linux/mmzone.h
18793 +++ b/include/linux/mmzone.h
18794 -@@ -406,7 +406,7 @@ struct zone {
18795 +@@ -412,7 +412,7 @@ struct zone {
18796 unsigned long flags; /* zone flags, see below */
18797
18798 /* Zone statistics */
18799 @@ -81656,7 +85058,7 @@ index 560ca53..ef621ef 100644
18800 }
18801 #endif
18802 diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h
18803 -index 204a677..e9b486a 100644
18804 +index b1990c5..2a6e611 100644
18805 --- a/include/linux/moduleparam.h
18806 +++ b/include/linux/moduleparam.h
18807 @@ -293,7 +293,7 @@ static inline void __kernel_param_unlock(void)
18808 @@ -81732,10 +85134,10 @@ index 17d8339..81656c0 100644
18809 struct iovec;
18810 struct kvec;
18811 diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
18812 -index b42d07b..7f45ae2 100644
18813 +index 66f9a04..056078d 100644
18814 --- a/include/linux/netdevice.h
18815 +++ b/include/linux/netdevice.h
18816 -@@ -1146,6 +1146,7 @@ struct net_device_ops {
18817 +@@ -1145,6 +1145,7 @@ struct net_device_ops {
18818 void *priv);
18819 int (*ndo_get_lock_subclass)(struct net_device *dev);
18820 };
18821 @@ -81743,7 +85145,7 @@ index b42d07b..7f45ae2 100644
18822
18823 /**
18824 * enum net_device_priv_flags - &struct net_device priv_flags
18825 -@@ -1313,11 +1314,11 @@ struct net_device {
18826 +@@ -1312,11 +1313,11 @@ struct net_device {
18827 struct net_device_stats stats;
18828
18829 /* dropped packets by core network, Do not use this in drivers */
18830 @@ -81800,7 +85202,7 @@ index 0000000..33f4af8
18831 +
18832 +#endif
18833 diff --git a/include/linux/nls.h b/include/linux/nls.h
18834 -index 520681b..1d67ed2 100644
18835 +index 520681b..2b7fabb 100644
18836 --- a/include/linux/nls.h
18837 +++ b/include/linux/nls.h
18838 @@ -31,7 +31,7 @@ struct nls_table {
18839 @@ -81812,6 +85214,15 @@ index 520681b..1d67ed2 100644
18840
18841 /* this value hold the maximum octet of charset */
18842 #define NLS_MAX_CHARSET_SIZE 6 /* for UTF-8 */
18843 +@@ -46,7 +46,7 @@ enum utf16_endian {
18844 + /* nls_base.c */
18845 + extern int __register_nls(struct nls_table *, struct module *);
18846 + extern int unregister_nls(struct nls_table *);
18847 +-extern struct nls_table *load_nls(char *);
18848 ++extern struct nls_table *load_nls(const char *);
18849 + extern void unload_nls(struct nls_table *);
18850 + extern struct nls_table *load_nls_default(void);
18851 + #define register_nls(nls) __register_nls((nls), THIS_MODULE)
18852 diff --git a/include/linux/notifier.h b/include/linux/notifier.h
18853 index d14a4c3..a078786 100644
18854 --- a/include/linux/notifier.h
18855 @@ -81891,10 +85302,10 @@ index 5f2e559..7d59314 100644
18856 /**
18857 * struct hotplug_slot_info - used to notify the hotplug pci core of the state of the slot
18858 diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
18859 -index 3ef6ea1..ed1a248 100644
18860 +index 707617a..28a2e7e 100644
18861 --- a/include/linux/perf_event.h
18862 +++ b/include/linux/perf_event.h
18863 -@@ -328,8 +328,8 @@ struct perf_event {
18864 +@@ -339,8 +339,8 @@ struct perf_event {
18865
18866 enum perf_event_active_state state;
18867 unsigned int attach_state;
18868 @@ -81905,7 +85316,7 @@ index 3ef6ea1..ed1a248 100644
18869
18870 /*
18871 * These are the total time in nanoseconds that the event
18872 -@@ -380,8 +380,8 @@ struct perf_event {
18873 +@@ -391,8 +391,8 @@ struct perf_event {
18874 * These accumulate total time (in nanoseconds) that children
18875 * events have been enabled and running, respectively.
18876 */
18877 @@ -81916,7 +85327,7 @@ index 3ef6ea1..ed1a248 100644
18878
18879 /*
18880 * Protect attach/detach and child_list:
18881 -@@ -710,7 +710,7 @@ static inline void perf_callchain_store(struct perf_callchain_entry *entry, u64
18882 +@@ -722,7 +722,7 @@ static inline void perf_callchain_store(struct perf_callchain_entry *entry, u64
18883 entry->ip[entry->nr++] = ip;
18884 }
18885
18886 @@ -81925,7 +85336,7 @@ index 3ef6ea1..ed1a248 100644
18887 extern int sysctl_perf_event_mlock;
18888 extern int sysctl_perf_event_sample_rate;
18889 extern int sysctl_perf_cpu_time_max_percent;
18890 -@@ -725,19 +725,24 @@ extern int perf_cpu_time_max_percent_handler(struct ctl_table *table, int write,
18891 +@@ -737,19 +737,24 @@ extern int perf_cpu_time_max_percent_handler(struct ctl_table *table, int write,
18892 loff_t *ppos);
18893
18894
18895 @@ -81953,7 +85364,7 @@ index 3ef6ea1..ed1a248 100644
18896 }
18897
18898 extern void perf_event_init(void);
18899 -@@ -867,7 +872,7 @@ struct perf_pmu_events_attr {
18900 +@@ -880,7 +885,7 @@ struct perf_pmu_events_attr {
18901 struct device_attribute attr;
18902 u64 id;
18903 const char *event_str;
18904 @@ -81995,10 +85406,10 @@ index eb8b8ac..62649e1 100644
18905 unsigned int w_counter;
18906 struct page *tmp_page;
18907 diff --git a/include/linux/pm.h b/include/linux/pm.h
18908 -index d915d03..0531037 100644
18909 +index 72c0fe0..26918ed 100644
18910 --- a/include/linux/pm.h
18911 +++ b/include/linux/pm.h
18912 -@@ -600,6 +600,7 @@ extern int dev_pm_put_subsys_data(struct device *dev);
18913 +@@ -620,6 +620,7 @@ extern int dev_pm_put_subsys_data(struct device *dev);
18914 struct dev_pm_domain {
18915 struct dev_pm_ops ops;
18916 };
18917 @@ -82025,10 +85436,10 @@ index 7c1d252..0e7061d 100644
18918
18919 struct generic_pm_domain {
18920 diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h
18921 -index 2a5897a..4f9af63 100644
18922 +index 43fd671..08c96ee 100644
18923 --- a/include/linux/pm_runtime.h
18924 +++ b/include/linux/pm_runtime.h
18925 -@@ -113,7 +113,7 @@ static inline bool pm_runtime_callbacks_present(struct device *dev)
18926 +@@ -118,7 +118,7 @@ static inline bool pm_runtime_callbacks_present(struct device *dev)
18927
18928 static inline void pm_runtime_mark_last_busy(struct device *dev)
18929 {
18930 @@ -82164,10 +85575,10 @@ index de83b4e..c4b997d 100644
18931 #define preempt_set_need_resched() \
18932 do { \
18933 diff --git a/include/linux/printk.h b/include/linux/printk.h
18934 -index 7847301..29cd406 100644
18935 +index 319ff7e..608849a 100644
18936 --- a/include/linux/printk.h
18937 +++ b/include/linux/printk.h
18938 -@@ -110,6 +110,8 @@ static inline __printf(1, 2) __cold
18939 +@@ -121,6 +121,8 @@ static inline __printf(1, 2) __cold
18940 void early_printk(const char *s, ...) { }
18941 #endif
18942
18943 @@ -82176,7 +85587,7 @@ index 7847301..29cd406 100644
18944 #ifdef CONFIG_PRINTK
18945 asmlinkage __printf(5, 0)
18946 int vprintk_emit(int facility, int level,
18947 -@@ -144,7 +146,6 @@ extern bool printk_timed_ratelimit(unsigned long *caller_jiffies,
18948 +@@ -155,7 +157,6 @@ extern bool printk_timed_ratelimit(unsigned long *caller_jiffies,
18949
18950 extern int printk_delay_msec;
18951 extern int dmesg_restrict;
18952 @@ -82185,7 +85596,7 @@ index 7847301..29cd406 100644
18953 extern void wake_up_klogd(void);
18954
18955 diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h
18956 -index 608e60a..79cfb18 100644
18957 +index 9d117f6..d832b31 100644
18958 --- a/include/linux/proc_fs.h
18959 +++ b/include/linux/proc_fs.h
18960 @@ -17,8 +17,11 @@ extern void proc_flush_task(struct task_struct *);
18961 @@ -82220,7 +85631,7 @@ index 608e60a..79cfb18 100644
18962 extern void proc_set_size(struct proc_dir_entry *, loff_t);
18963 extern void proc_set_user(struct proc_dir_entry *, kuid_t, kgid_t);
18964 extern void *PDE_DATA(const struct inode *);
18965 -@@ -52,8 +68,12 @@ static inline struct proc_dir_entry *proc_symlink(const char *name,
18966 +@@ -56,8 +72,12 @@ static inline struct proc_dir_entry *proc_symlink(const char *name,
18967 struct proc_dir_entry *parent,const char *dest) { return NULL;}
18968 static inline struct proc_dir_entry *proc_mkdir(const char *name,
18969 struct proc_dir_entry *parent) {return NULL;}
18970 @@ -82233,7 +85644,7 @@ index 608e60a..79cfb18 100644
18971 static inline struct proc_dir_entry *proc_mkdir_mode(const char *name,
18972 umode_t mode, struct proc_dir_entry *parent) { return NULL; }
18973 #define proc_create(name, mode, parent, proc_fops) ({NULL;})
18974 -@@ -73,7 +93,7 @@ static inline int remove_proc_subtree(const char *name, struct proc_dir_entry *p
18975 +@@ -77,7 +97,7 @@ static inline int remove_proc_subtree(const char *name, struct proc_dir_entry *p
18976 static inline struct proc_dir_entry *proc_net_mkdir(
18977 struct net *net, const char *name, struct proc_dir_entry *parent)
18978 {
18979 @@ -82255,8 +85666,146 @@ index 34a1e10..70f6bde 100644
18980
18981 struct proc_ns {
18982 void *ns;
18983 +diff --git a/include/linux/ptp_classify.h b/include/linux/ptp_classify.h
18984 +index 7dfed71..1dc420b 100644
18985 +--- a/include/linux/ptp_classify.h
18986 ++++ b/include/linux/ptp_classify.h
18987 +@@ -23,8 +23,15 @@
18988 + #ifndef _PTP_CLASSIFY_H_
18989 + #define _PTP_CLASSIFY_H_
18990 +
18991 ++#include <linux/if_ether.h>
18992 ++#include <linux/if_vlan.h>
18993 + #include <linux/ip.h>
18994 +-#include <linux/skbuff.h>
18995 ++#include <linux/filter.h>
18996 ++#ifdef __KERNEL__
18997 ++#include <linux/in.h>
18998 ++#else
18999 ++#include <netinet/in.h>
19000 ++#endif
19001 +
19002 + #define PTP_CLASS_NONE 0x00 /* not a PTP event message */
19003 + #define PTP_CLASS_V1 0x01 /* protocol version 1 */
19004 +@@ -37,7 +44,7 @@
19005 + #define PTP_CLASS_PMASK 0xf0 /* mask for the packet type field */
19006 +
19007 + #define PTP_CLASS_V1_IPV4 (PTP_CLASS_V1 | PTP_CLASS_IPV4)
19008 +-#define PTP_CLASS_V1_IPV6 (PTP_CLASS_V1 | PTP_CLASS_IPV6) /* probably DNE */
19009 ++#define PTP_CLASS_V1_IPV6 (PTP_CLASS_V1 | PTP_CLASS_IPV6) /*probably DNE*/
19010 + #define PTP_CLASS_V2_IPV4 (PTP_CLASS_V2 | PTP_CLASS_IPV4)
19011 + #define PTP_CLASS_V2_IPV6 (PTP_CLASS_V2 | PTP_CLASS_IPV6)
19012 + #define PTP_CLASS_V2_L2 (PTP_CLASS_V2 | PTP_CLASS_L2)
19013 +@@ -46,34 +53,88 @@
19014 + #define PTP_EV_PORT 319
19015 + #define PTP_GEN_BIT 0x08 /* indicates general message, if set in message type */
19016 +
19017 ++#define OFF_ETYPE 12
19018 ++#define OFF_IHL 14
19019 ++#define OFF_FRAG 20
19020 ++#define OFF_PROTO4 23
19021 ++#define OFF_NEXT 6
19022 ++#define OFF_UDP_DST 2
19023 ++
19024 + #define OFF_PTP_SOURCE_UUID 22 /* PTPv1 only */
19025 + #define OFF_PTP_SEQUENCE_ID 30
19026 + #define OFF_PTP_CONTROL 32 /* PTPv1 only */
19027 +
19028 +-/* Below defines should actually be removed at some point in time. */
19029 ++#define IPV4_HLEN(data) (((struct iphdr *)(data + OFF_IHL))->ihl << 2)
19030 ++
19031 + #define IP6_HLEN 40
19032 + #define UDP_HLEN 8
19033 +-#define OFF_IHL 14
19034 ++
19035 ++#define RELOFF_DST4 (ETH_HLEN + OFF_UDP_DST)
19036 ++#define OFF_DST6 (ETH_HLEN + IP6_HLEN + OFF_UDP_DST)
19037 + #define OFF_PTP6 (ETH_HLEN + IP6_HLEN + UDP_HLEN)
19038 +-#define IPV4_HLEN(data) (((struct iphdr *)(data + OFF_IHL))->ihl << 2)
19039 +
19040 +-#if defined(CONFIG_NET_PTP_CLASSIFY)
19041 +-/**
19042 +- * ptp_classify_raw - classify a PTP packet
19043 +- * @skb: buffer
19044 +- *
19045 +- * Runs a minimal BPF dissector to classify a network packet to
19046 +- * determine the PTP class. In case the skb does not contain any
19047 +- * PTP protocol data, PTP_CLASS_NONE will be returned, otherwise
19048 +- * PTP_CLASS_V1_IPV{4,6}, PTP_CLASS_V2_IPV{4,6} or
19049 +- * PTP_CLASS_V2_{L2,VLAN}, depending on the packet content.
19050 +- */
19051 +-unsigned int ptp_classify_raw(const struct sk_buff *skb);
19052 ++#define OP_AND (BPF_ALU | BPF_AND | BPF_K)
19053 ++#define OP_JEQ (BPF_JMP | BPF_JEQ | BPF_K)
19054 ++#define OP_JSET (BPF_JMP | BPF_JSET | BPF_K)
19055 ++#define OP_LDB (BPF_LD | BPF_B | BPF_ABS)
19056 ++#define OP_LDH (BPF_LD | BPF_H | BPF_ABS)
19057 ++#define OP_LDHI (BPF_LD | BPF_H | BPF_IND)
19058 ++#define OP_LDX (BPF_LDX | BPF_B | BPF_MSH)
19059 ++#define OP_OR (BPF_ALU | BPF_OR | BPF_K)
19060 ++#define OP_RETA (BPF_RET | BPF_A)
19061 ++#define OP_RETK (BPF_RET | BPF_K)
19062 +
19063 +-void __init ptp_classifier_init(void);
19064 +-#else
19065 +-static inline void ptp_classifier_init(void)
19066 ++static inline int ptp_filter_init(struct sock_filter *f, int len)
19067 + {
19068 ++ if (OP_LDH == f[0].code)
19069 ++ return sk_chk_filter(f, len);
19070 ++ else
19071 ++ return 0;
19072 + }
19073 ++
19074 ++#define PTP_FILTER \
19075 ++ {OP_LDH, 0, 0, OFF_ETYPE }, /* */ \
19076 ++ {OP_JEQ, 0, 12, ETH_P_IP }, /* f goto L20 */ \
19077 ++ {OP_LDB, 0, 0, OFF_PROTO4 }, /* */ \
19078 ++ {OP_JEQ, 0, 9, IPPROTO_UDP }, /* f goto L10 */ \
19079 ++ {OP_LDH, 0, 0, OFF_FRAG }, /* */ \
19080 ++ {OP_JSET, 7, 0, 0x1fff }, /* t goto L11 */ \
19081 ++ {OP_LDX, 0, 0, OFF_IHL }, /* */ \
19082 ++ {OP_LDHI, 0, 0, RELOFF_DST4 }, /* */ \
19083 ++ {OP_JEQ, 0, 4, PTP_EV_PORT }, /* f goto L12 */ \
19084 ++ {OP_LDHI, 0, 0, ETH_HLEN + UDP_HLEN }, /* */ \
19085 ++ {OP_AND, 0, 0, PTP_CLASS_VMASK }, /* */ \
19086 ++ {OP_OR, 0, 0, PTP_CLASS_IPV4 }, /* */ \
19087 ++ {OP_RETA, 0, 0, 0 }, /* */ \
19088 ++/*L1x*/ {OP_RETK, 0, 0, PTP_CLASS_NONE }, /* */ \
19089 ++/*L20*/ {OP_JEQ, 0, 9, ETH_P_IPV6 }, /* f goto L40 */ \
19090 ++ {OP_LDB, 0, 0, ETH_HLEN + OFF_NEXT }, /* */ \
19091 ++ {OP_JEQ, 0, 6, IPPROTO_UDP }, /* f goto L30 */ \
19092 ++ {OP_LDH, 0, 0, OFF_DST6 }, /* */ \
19093 ++ {OP_JEQ, 0, 4, PTP_EV_PORT }, /* f goto L31 */ \
19094 ++ {OP_LDH, 0, 0, OFF_PTP6 }, /* */ \
19095 ++ {OP_AND, 0, 0, PTP_CLASS_VMASK }, /* */ \
19096 ++ {OP_OR, 0, 0, PTP_CLASS_IPV6 }, /* */ \
19097 ++ {OP_RETA, 0, 0, 0 }, /* */ \
19098 ++/*L3x*/ {OP_RETK, 0, 0, PTP_CLASS_NONE }, /* */ \
19099 ++/*L40*/ {OP_JEQ, 0, 9, ETH_P_8021Q }, /* f goto L50 */ \
19100 ++ {OP_LDH, 0, 0, OFF_ETYPE + 4 }, /* */ \
19101 ++ {OP_JEQ, 0, 15, ETH_P_1588 }, /* f goto L60 */ \
19102 ++ {OP_LDB, 0, 0, ETH_HLEN + VLAN_HLEN }, /* */ \
19103 ++ {OP_AND, 0, 0, PTP_GEN_BIT }, /* */ \
19104 ++ {OP_JEQ, 0, 12, 0 }, /* f goto L6x */ \
19105 ++ {OP_LDH, 0, 0, ETH_HLEN + VLAN_HLEN }, /* */ \
19106 ++ {OP_AND, 0, 0, PTP_CLASS_VMASK }, /* */ \
19107 ++ {OP_OR, 0, 0, PTP_CLASS_VLAN }, /* */ \
19108 ++ {OP_RETA, 0, 0, 0 }, /* */ \
19109 ++/*L50*/ {OP_JEQ, 0, 7, ETH_P_1588 }, /* f goto L61 */ \
19110 ++ {OP_LDB, 0, 0, ETH_HLEN }, /* */ \
19111 ++ {OP_AND, 0, 0, PTP_GEN_BIT }, /* */ \
19112 ++ {OP_JEQ, 0, 4, 0 }, /* f goto L6x */ \
19113 ++ {OP_LDH, 0, 0, ETH_HLEN }, /* */ \
19114 ++ {OP_AND, 0, 0, PTP_CLASS_VMASK }, /* */ \
19115 ++ {OP_OR, 0, 0, PTP_CLASS_L2 }, /* */ \
19116 ++ {OP_RETA, 0, 0, 0 }, /* */ \
19117 ++/*L6x*/ {OP_RETK, 0, 0, PTP_CLASS_NONE },
19118 ++
19119 + #endif
19120 +-#endif /* _PTP_CLASSIFY_H_ */
19121 diff --git a/include/linux/quota.h b/include/linux/quota.h
19122 -index cc7494a..1e27036 100644
19123 +index 0f3c5d3..bc559e3 100644
19124 --- a/include/linux/quota.h
19125 +++ b/include/linux/quota.h
19126 @@ -70,7 +70,7 @@ struct kqid { /* Type in which we store the quota identifier */
19127 @@ -82482,10 +86031,10 @@ index 6bda06f..bf39a9b 100644
19128 #define RIO_RESOURCE_MEM 0x00000100
19129 #define RIO_RESOURCE_DOORBELL 0x00000200
19130 diff --git a/include/linux/rmap.h b/include/linux/rmap.h
19131 -index b66c211..13d2915 100644
19132 +index be57450..31cf65e 100644
19133 --- a/include/linux/rmap.h
19134 +++ b/include/linux/rmap.h
19135 -@@ -145,8 +145,8 @@ static inline void anon_vma_unlock_read(struct anon_vma *anon_vma)
19136 +@@ -144,8 +144,8 @@ static inline void anon_vma_unlock_read(struct anon_vma *anon_vma)
19137 void anon_vma_init(void); /* create anon_vma_cachep */
19138 int anon_vma_prepare(struct vm_area_struct *);
19139 void unlink_anon_vmas(struct vm_area_struct *);
19140 @@ -82522,7 +86071,7 @@ index a964f72..b475afb 100644
19141 }
19142
19143 diff --git a/include/linux/sched.h b/include/linux/sched.h
19144 -index 221b2bd..e2e5f82 100644
19145 +index 0376b05..82054c2 100644
19146 --- a/include/linux/sched.h
19147 +++ b/include/linux/sched.h
19148 @@ -131,6 +131,7 @@ struct fs_struct;
19149 @@ -82533,7 +86082,7 @@ index 221b2bd..e2e5f82 100644
19150
19151 #define VMACACHE_BITS 2
19152 #define VMACACHE_SIZE (1U << VMACACHE_BITS)
19153 -@@ -380,7 +381,7 @@ extern char __sched_text_start[], __sched_text_end[];
19154 +@@ -374,7 +375,7 @@ extern char __sched_text_start[], __sched_text_end[];
19155 extern int in_sched_functions(unsigned long addr);
19156
19157 #define MAX_SCHEDULE_TIMEOUT LONG_MAX
19158 @@ -82542,7 +86091,7 @@ index 221b2bd..e2e5f82 100644
19159 extern signed long schedule_timeout_interruptible(signed long timeout);
19160 extern signed long schedule_timeout_killable(signed long timeout);
19161 extern signed long schedule_timeout_uninterruptible(signed long timeout);
19162 -@@ -391,6 +392,19 @@ struct nsproxy;
19163 +@@ -385,6 +386,19 @@ struct nsproxy;
19164 struct user_namespace;
19165
19166 #ifdef CONFIG_MMU
19167 @@ -82562,7 +86111,7 @@ index 221b2bd..e2e5f82 100644
19168 extern void arch_pick_mmap_layout(struct mm_struct *mm);
19169 extern unsigned long
19170 arch_get_unmapped_area(struct file *, unsigned long, unsigned long,
19171 -@@ -688,6 +702,17 @@ struct signal_struct {
19172 +@@ -682,6 +696,17 @@ struct signal_struct {
19173 #ifdef CONFIG_TASKSTATS
19174 struct taskstats *stats;
19175 #endif
19176 @@ -82580,7 +86129,7 @@ index 221b2bd..e2e5f82 100644
19177 #ifdef CONFIG_AUDIT
19178 unsigned audit_tty;
19179 unsigned audit_tty_log_passwd;
19180 -@@ -714,7 +739,7 @@ struct signal_struct {
19181 +@@ -708,7 +733,7 @@ struct signal_struct {
19182 struct mutex cred_guard_mutex; /* guard against foreign influences on
19183 * credential calculations
19184 * (notably. ptrace) */
19185 @@ -82589,7 +86138,7 @@ index 221b2bd..e2e5f82 100644
19186
19187 /*
19188 * Bits in flags field of signal_struct.
19189 -@@ -768,6 +793,14 @@ struct user_struct {
19190 +@@ -761,6 +786,14 @@ struct user_struct {
19191 struct key *session_keyring; /* UID's default session keyring */
19192 #endif
19193
19194 @@ -82604,7 +86153,7 @@ index 221b2bd..e2e5f82 100644
19195 /* Hash table maintenance information */
19196 struct hlist_node uidhash_node;
19197 kuid_t uid;
19198 -@@ -775,7 +808,7 @@ struct user_struct {
19199 +@@ -768,7 +801,7 @@ struct user_struct {
19200 #ifdef CONFIG_PERF_EVENTS
19201 atomic_long_t locked_vm;
19202 #endif
19203 @@ -82613,7 +86162,7 @@ index 221b2bd..e2e5f82 100644
19204
19205 extern int uids_sysfs_init(void);
19206
19207 -@@ -1179,6 +1212,9 @@ enum perf_event_task_context {
19208 +@@ -1224,6 +1257,9 @@ enum perf_event_task_context {
19209 struct task_struct {
19210 volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */
19211 void *stack;
19212 @@ -82623,7 +86172,7 @@ index 221b2bd..e2e5f82 100644
19213 atomic_t usage;
19214 unsigned int flags; /* per process flags, defined below */
19215 unsigned int ptrace;
19216 -@@ -1304,8 +1340,8 @@ struct task_struct {
19217 +@@ -1349,8 +1385,8 @@ struct task_struct {
19218 struct list_head thread_node;
19219
19220 struct completion *vfork_done; /* for vfork() */
19221 @@ -82634,7 +86183,7 @@ index 221b2bd..e2e5f82 100644
19222
19223 cputime_t utime, stime, utimescaled, stimescaled;
19224 cputime_t gtime;
19225 -@@ -1330,11 +1366,6 @@ struct task_struct {
19226 +@@ -1375,11 +1411,6 @@ struct task_struct {
19227 struct task_cputime cputime_expires;
19228 struct list_head cpu_timers[3];
19229
19230 @@ -82646,7 +86195,7 @@ index 221b2bd..e2e5f82 100644
19231 char comm[TASK_COMM_LEN]; /* executable name excluding path
19232 - access with [gs]et_task_comm (which lock
19233 it with task_lock())
19234 -@@ -1351,6 +1382,10 @@ struct task_struct {
19235 +@@ -1396,6 +1427,10 @@ struct task_struct {
19236 #endif
19237 /* CPU-specific state of this task */
19238 struct thread_struct thread;
19239 @@ -82657,7 +86206,7 @@ index 221b2bd..e2e5f82 100644
19240 /* filesystem information */
19241 struct fs_struct *fs;
19242 /* open file information */
19243 -@@ -1427,6 +1462,10 @@ struct task_struct {
19244 +@@ -1472,6 +1507,10 @@ struct task_struct {
19245 gfp_t lockdep_reclaim_gfp;
19246 #endif
19247
19248 @@ -82668,7 +86217,7 @@ index 221b2bd..e2e5f82 100644
19249 /* journalling filesystem info */
19250 void *journal_info;
19251
19252 -@@ -1465,6 +1504,10 @@ struct task_struct {
19253 +@@ -1510,6 +1549,10 @@ struct task_struct {
19254 /* cg_list protected by css_set_lock and tsk->alloc_lock */
19255 struct list_head cg_list;
19256 #endif
19257 @@ -82679,7 +86228,7 @@ index 221b2bd..e2e5f82 100644
19258 #ifdef CONFIG_FUTEX
19259 struct robust_list_head __user *robust_list;
19260 #ifdef CONFIG_COMPAT
19261 -@@ -1610,7 +1653,78 @@ struct task_struct {
19262 +@@ -1655,7 +1698,78 @@ struct task_struct {
19263 unsigned int sequential_io;
19264 unsigned int sequential_io_avg;
19265 #endif
19266 @@ -82759,7 +86308,7 @@ index 221b2bd..e2e5f82 100644
19267
19268 /* Future-safe accessor for struct task_struct's cpus_allowed. */
19269 #define tsk_cpus_allowed(tsk) (&(tsk)->cpus_allowed)
19270 -@@ -1692,7 +1806,7 @@ struct pid_namespace;
19271 +@@ -1737,7 +1851,7 @@ struct pid_namespace;
19272 pid_t __task_pid_nr_ns(struct task_struct *task, enum pid_type type,
19273 struct pid_namespace *ns);
19274
19275 @@ -82768,7 +86317,7 @@ index 221b2bd..e2e5f82 100644
19276 {
19277 return tsk->pid;
19278 }
19279 -@@ -2039,6 +2153,25 @@ extern u64 sched_clock_cpu(int cpu);
19280 +@@ -2084,6 +2198,25 @@ extern u64 sched_clock_cpu(int cpu);
19281
19282 extern void sched_clock_init(void);
19283
19284 @@ -82794,7 +86343,7 @@ index 221b2bd..e2e5f82 100644
19285 #ifndef CONFIG_HAVE_UNSTABLE_SCHED_CLOCK
19286 static inline void sched_clock_tick(void)
19287 {
19288 -@@ -2172,7 +2305,9 @@ void yield(void);
19289 +@@ -2217,7 +2350,9 @@ void yield(void);
19290 extern struct exec_domain default_exec_domain;
19291
19292 union thread_union {
19293 @@ -82804,7 +86353,7 @@ index 221b2bd..e2e5f82 100644
19294 unsigned long stack[THREAD_SIZE/sizeof(long)];
19295 };
19296
19297 -@@ -2205,6 +2340,7 @@ extern struct pid_namespace init_pid_ns;
19298 +@@ -2250,6 +2385,7 @@ extern struct pid_namespace init_pid_ns;
19299 */
19300
19301 extern struct task_struct *find_task_by_vpid(pid_t nr);
19302 @@ -82812,16 +86361,16 @@ index 221b2bd..e2e5f82 100644
19303 extern struct task_struct *find_task_by_pid_ns(pid_t nr,
19304 struct pid_namespace *ns);
19305
19306 -@@ -2367,7 +2503,7 @@ extern void __cleanup_sighand(struct sighand_struct *);
19307 +@@ -2412,7 +2548,7 @@ extern void __cleanup_sighand(struct sighand_struct *);
19308 extern void exit_itimers(struct signal_struct *);
19309 extern void flush_itimer_signals(void);
19310
19311 -extern void do_group_exit(int);
19312 +extern __noreturn void do_group_exit(int);
19313
19314 - extern int allow_signal(int);
19315 - extern int disallow_signal(int);
19316 -@@ -2568,9 +2704,9 @@ static inline unsigned long *end_of_stack(struct task_struct *p)
19317 + extern int do_execve(struct filename *,
19318 + const char __user * const __user *,
19319 +@@ -2614,9 +2750,9 @@ static inline unsigned long *end_of_stack(struct task_struct *p)
19320
19321 #endif
19322
19323 @@ -82834,10 +86383,10 @@ index 221b2bd..e2e5f82 100644
19324 return (obj >= stack) && (obj < (stack + THREAD_SIZE));
19325 }
19326 diff --git a/include/linux/sched/sysctl.h b/include/linux/sched/sysctl.h
19327 -index 8045a55..c959cd5 100644
19328 +index 596a0e0..bea77ec 100644
19329 --- a/include/linux/sched/sysctl.h
19330 +++ b/include/linux/sched/sysctl.h
19331 -@@ -30,6 +30,7 @@ enum { sysctl_hung_task_timeout_secs = 0 };
19332 +@@ -34,6 +34,7 @@ enum { sysctl_hung_task_timeout_secs = 0 };
19333 #define DEFAULT_MAX_MAP_COUNT (USHRT_MAX - MAPCOUNT_ELF_CORE_MARGIN)
19334
19335 extern int sysctl_max_map_count;
19336 @@ -82845,8 +86394,20 @@ index 8045a55..c959cd5 100644
19337
19338 extern unsigned int sysctl_sched_latency;
19339 extern unsigned int sysctl_sched_min_granularity;
19340 +diff --git a/include/linux/seccomp.h b/include/linux/seccomp.h
19341 +index 4054b09..6f19cfd 100644
19342 +--- a/include/linux/seccomp.h
19343 ++++ b/include/linux/seccomp.h
19344 +@@ -76,6 +76,7 @@ static inline int seccomp_mode(struct seccomp *s)
19345 + #ifdef CONFIG_SECCOMP_FILTER
19346 + extern void put_seccomp_filter(struct task_struct *tsk);
19347 + extern void get_seccomp_filter(struct task_struct *tsk);
19348 ++extern u32 seccomp_bpf_load(int off);
19349 + #else /* CONFIG_SECCOMP_FILTER */
19350 + static inline void put_seccomp_filter(struct task_struct *tsk)
19351 + {
19352 diff --git a/include/linux/security.h b/include/linux/security.h
19353 -index 6478ce3..5e6ad6e 100644
19354 +index 9c6b972..7e7c704 100644
19355 --- a/include/linux/security.h
19356 +++ b/include/linux/security.h
19357 @@ -27,6 +27,7 @@
19358 @@ -82927,10 +86488,10 @@ index 52e0097..383f21d 100644
19359 int single_release(struct inode *, struct file *);
19360 void *__seq_open_private(struct file *, const struct seq_operations *, int);
19361 diff --git a/include/linux/shm.h b/include/linux/shm.h
19362 -index 1e2cd2e..0288750 100644
19363 +index 57d7770..0936af6 100644
19364 --- a/include/linux/shm.h
19365 +++ b/include/linux/shm.h
19366 -@@ -21,6 +21,10 @@ struct shmid_kernel /* private to the kernel */
19367 +@@ -20,6 +20,10 @@ struct shmid_kernel /* private to the kernel */
19368
19369 /* The task created the shm object. NULL if the task is dead. */
19370 struct task_struct *shm_creator;
19371 @@ -82941,11 +86502,24 @@ index 1e2cd2e..0288750 100644
19372 };
19373
19374 /* shm_mode upper byte flags */
19375 +diff --git a/include/linux/signal.h b/include/linux/signal.h
19376 +index c9e6536..923b302 100644
19377 +--- a/include/linux/signal.h
19378 ++++ b/include/linux/signal.h
19379 +@@ -293,7 +293,7 @@ static inline void allow_signal(int sig)
19380 + * know it'll be handled, so that they don't get converted to
19381 + * SIGKILL or just silently dropped.
19382 + */
19383 +- kernel_sigaction(sig, (__force __sighandler_t)2);
19384 ++ kernel_sigaction(sig, (__force_user __sighandler_t)2);
19385 + }
19386 +
19387 + static inline void disallow_signal(int sig)
19388 diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
19389 -index 08074a8..e2ae280 100644
19390 +index ec89301..4fd29a6 100644
19391 --- a/include/linux/skbuff.h
19392 +++ b/include/linux/skbuff.h
19393 -@@ -717,7 +717,7 @@ bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from,
19394 +@@ -725,7 +725,7 @@ bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from,
19395 struct sk_buff *__alloc_skb(unsigned int size, gfp_t priority, int flags,
19396 int node);
19397 struct sk_buff *build_skb(void *data, unsigned int frag_size);
19398 @@ -82954,7 +86528,7 @@ index 08074a8..e2ae280 100644
19399 gfp_t priority)
19400 {
19401 return __alloc_skb(size, priority, 0, NUMA_NO_NODE);
19402 -@@ -1825,7 +1825,7 @@ static inline u32 skb_inner_network_header_len(const struct sk_buff *skb)
19403 +@@ -1839,7 +1839,7 @@ static inline u32 skb_inner_network_header_len(const struct sk_buff *skb)
19404 return skb->inner_transport_header - skb->inner_network_header;
19405 }
19406
19407 @@ -82963,7 +86537,7 @@ index 08074a8..e2ae280 100644
19408 {
19409 return skb_network_header(skb) - skb->data;
19410 }
19411 -@@ -1885,7 +1885,7 @@ static inline int pskb_network_may_pull(struct sk_buff *skb, unsigned int len)
19412 +@@ -1911,7 +1911,7 @@ static inline void skb_pop_rcv_encapsulation(struct sk_buff *skb)
19413 * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
19414 */
19415 #ifndef NET_SKB_PAD
19416 @@ -82972,7 +86546,7 @@ index 08074a8..e2ae280 100644
19417 #endif
19418
19419 int ___pskb_trim(struct sk_buff *skb, unsigned int len);
19420 -@@ -2484,7 +2484,7 @@ struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, int noblock,
19421 +@@ -2518,7 +2518,7 @@ struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, int noblock,
19422 int *err);
19423 unsigned int datagram_poll(struct file *file, struct socket *sock,
19424 struct poll_table_struct *wait);
19425 @@ -82981,7 +86555,16 @@ index 08074a8..e2ae280 100644
19426 struct iovec *to, int size);
19427 int skb_copy_and_csum_datagram_iovec(struct sk_buff *skb, int hlen,
19428 struct iovec *iov);
19429 -@@ -2776,6 +2776,9 @@ static inline void nf_reset(struct sk_buff *skb)
19430 +@@ -2664,6 +2664,8 @@ static inline ktime_t net_invalid_timestamp(void)
19431 + return ktime_set(0, 0);
19432 + }
19433 +
19434 ++void skb_timestamping_init(void);
19435 ++
19436 + #ifdef CONFIG_NETWORK_PHY_TIMESTAMPING
19437 +
19438 + void skb_clone_tx_timestamp(struct sk_buff *skb);
19439 +@@ -2907,6 +2909,9 @@ static inline void nf_reset(struct sk_buff *skb)
19440 nf_bridge_put(skb->nf_bridge);
19441 skb->nf_bridge = NULL;
19442 #endif
19443 @@ -82992,7 +86575,7 @@ index 08074a8..e2ae280 100644
19444
19445 static inline void nf_reset_trace(struct sk_buff *skb)
19446 diff --git a/include/linux/slab.h b/include/linux/slab.h
19447 -index 307bfbe..a999cf3 100644
19448 +index 1d9abb7..b1e8b10 100644
19449 --- a/include/linux/slab.h
19450 +++ b/include/linux/slab.h
19451 @@ -14,15 +14,29 @@
19452 @@ -83043,7 +86626,7 @@ index 307bfbe..a999cf3 100644
19453
19454 #include <linux/kmemleak.h>
19455
19456 -@@ -142,6 +159,8 @@ void * __must_check krealloc(const void *, size_t, gfp_t);
19457 +@@ -144,6 +161,8 @@ void * __must_check krealloc(const void *, size_t, gfp_t);
19458 void kfree(const void *);
19459 void kzfree(const void *);
19460 size_t ksize(const void *);
19461 @@ -83052,7 +86635,7 @@ index 307bfbe..a999cf3 100644
19462
19463 /*
19464 * Some archs want to perform DMA into kmalloc caches and need a guaranteed
19465 -@@ -174,7 +193,7 @@ struct kmem_cache {
19466 +@@ -176,7 +195,7 @@ struct kmem_cache {
19467 unsigned int align; /* Alignment as calculated */
19468 unsigned long flags; /* Active flags on the slab */
19469 const char *name; /* Slab name for sysfs */
19470 @@ -83061,7 +86644,7 @@ index 307bfbe..a999cf3 100644
19471 void (*ctor)(void *); /* Called on object slot creation */
19472 struct list_head list; /* List of all slab caches on the system */
19473 };
19474 -@@ -259,6 +278,10 @@ extern struct kmem_cache *kmalloc_caches[KMALLOC_SHIFT_HIGH + 1];
19475 +@@ -261,6 +280,10 @@ extern struct kmem_cache *kmalloc_caches[KMALLOC_SHIFT_HIGH + 1];
19476 extern struct kmem_cache *kmalloc_dma_caches[KMALLOC_SHIFT_HIGH + 1];
19477 #endif
19478
19479 @@ -83072,7 +86655,7 @@ index 307bfbe..a999cf3 100644
19480 /*
19481 * Figure out which kmalloc slab an allocation of a certain size
19482 * belongs to.
19483 -@@ -267,7 +290,7 @@ extern struct kmem_cache *kmalloc_dma_caches[KMALLOC_SHIFT_HIGH + 1];
19484 +@@ -269,7 +292,7 @@ extern struct kmem_cache *kmalloc_dma_caches[KMALLOC_SHIFT_HIGH + 1];
19485 * 2 = 120 .. 192 bytes
19486 * n = 2^(n-1) .. 2^n -1
19487 */
19488 @@ -83081,7 +86664,7 @@ index 307bfbe..a999cf3 100644
19489 {
19490 if (!size)
19491 return 0;
19492 -@@ -310,11 +333,11 @@ static __always_inline int kmalloc_index(size_t size)
19493 +@@ -312,11 +335,11 @@ static __always_inline int kmalloc_index(size_t size)
19494 }
19495 #endif /* !CONFIG_SLOB */
19496
19497 @@ -83141,10 +86724,10 @@ index d82abd4..408c3a0 100644
19498 int inuse; /* Offset to metadata */
19499 int align; /* Alignment */
19500 diff --git a/include/linux/smp.h b/include/linux/smp.h
19501 -index 633f5ed..6c3dc3f 100644
19502 +index 34347f2..8739978 100644
19503 --- a/include/linux/smp.h
19504 +++ b/include/linux/smp.h
19505 -@@ -176,7 +176,9 @@ static inline void kick_all_cpus_sync(void) { }
19506 +@@ -174,7 +174,9 @@ static inline void kick_all_cpus_sync(void) { }
19507 #endif
19508
19509 #define get_cpu() ({ preempt_disable(); smp_processor_id(); })
19510 @@ -83228,10 +86811,10 @@ index 70736b9..37f33db 100644
19511 #ifdef __KERNEL__
19512
19513 diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h
19514 -index 04e7632..2e2a8a3 100644
19515 +index 1bc7cd0..7912dc2 100644
19516 --- a/include/linux/sunrpc/svc.h
19517 +++ b/include/linux/sunrpc/svc.h
19518 -@@ -412,7 +412,7 @@ struct svc_procedure {
19519 +@@ -417,7 +417,7 @@ struct svc_procedure {
19520 unsigned int pc_count; /* call count */
19521 unsigned int pc_cachetype; /* cache info (NFS) */
19522 unsigned int pc_xdrressize; /* maximum size of XDR reply */
19523 @@ -83241,7 +86824,7 @@ index 04e7632..2e2a8a3 100644
19524 /*
19525 * Function prototypes.
19526 diff --git a/include/linux/sunrpc/svc_rdma.h b/include/linux/sunrpc/svc_rdma.h
19527 -index 0b8e3e6..33e0a01 100644
19528 +index 5cf99a0..c0a1b98 100644
19529 --- a/include/linux/sunrpc/svc_rdma.h
19530 +++ b/include/linux/sunrpc/svc_rdma.h
19531 @@ -53,15 +53,15 @@ extern unsigned int svcrdma_ord;
19532 @@ -83283,7 +86866,7 @@ index 8d71d65..f79586e 100644
19533 #define SVC_GARBAGE 1
19534 #define SVC_SYSERR 2
19535 diff --git a/include/linux/swiotlb.h b/include/linux/swiotlb.h
19536 -index a5ffd32..0935dea 100644
19537 +index e7a018e..49f8b17 100644
19538 --- a/include/linux/swiotlb.h
19539 +++ b/include/linux/swiotlb.h
19540 @@ -60,7 +60,8 @@ extern void
19541 @@ -83297,7 +86880,7 @@ index a5ffd32..0935dea 100644
19542 extern dma_addr_t swiotlb_map_page(struct device *dev, struct page *page,
19543 unsigned long offset, size_t size,
19544 diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
19545 -index a4a0588..752870e 100644
19546 +index b0881a0..559a440 100644
19547 --- a/include/linux/syscalls.h
19548 +++ b/include/linux/syscalls.h
19549 @@ -98,10 +98,16 @@ struct sigaltstack;
19550 @@ -83388,7 +86971,7 @@ index 14a8ff2..fa95f3a 100644
19551 struct ctl_node {
19552 struct rb_node node;
19553 diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h
19554 -index 5ffaa34..fe3e31c 100644
19555 +index f97d0db..c1187dc 100644
19556 --- a/include/linux/sysfs.h
19557 +++ b/include/linux/sysfs.h
19558 @@ -34,7 +34,8 @@ struct attribute {
19559 @@ -83443,10 +87026,10 @@ index 387fa7d..3fcde6b 100644
19560 #ifdef CONFIG_MAGIC_SYSRQ
19561
19562 diff --git a/include/linux/thread_info.h b/include/linux/thread_info.h
19563 -index fddbe20..a0e76ab 100644
19564 +index ff307b5..f1a4468 100644
19565 --- a/include/linux/thread_info.h
19566 +++ b/include/linux/thread_info.h
19567 -@@ -161,6 +161,13 @@ static inline bool test_and_clear_restore_sigmask(void)
19568 +@@ -145,6 +145,13 @@ static inline bool test_and_clear_restore_sigmask(void)
19569 #error "no set_restore_sigmask() provided and default one won't work"
19570 #endif
19571
19572 @@ -83514,10 +87097,10 @@ index 756a609..89db85e 100644
19573 extern struct list_head tty_drivers;
19574
19575 diff --git a/include/linux/tty_ldisc.h b/include/linux/tty_ldisc.h
19576 -index add26da..22c00bef 100644
19577 +index 00c9d68..bc0188b 100644
19578 --- a/include/linux/tty_ldisc.h
19579 +++ b/include/linux/tty_ldisc.h
19580 -@@ -212,7 +212,7 @@ struct tty_ldisc_ops {
19581 +@@ -215,7 +215,7 @@ struct tty_ldisc_ops {
19582
19583 struct module *owner;
19584
19585 @@ -83527,10 +87110,10 @@ index add26da..22c00bef 100644
19586
19587 struct tty_ldisc {
19588 diff --git a/include/linux/types.h b/include/linux/types.h
19589 -index 4d118ba..c3ee9bf 100644
19590 +index a0bb704..f511c77 100644
19591 --- a/include/linux/types.h
19592 +++ b/include/linux/types.h
19593 -@@ -176,10 +176,26 @@ typedef struct {
19594 +@@ -177,10 +177,26 @@ typedef struct {
19595 int counter;
19596 } atomic_t;
19597
19598 @@ -83642,10 +87225,10 @@ index 99c1b4d..562e6f3 100644
19599
19600 static inline void put_unaligned_le16(u16 val, void *p)
19601 diff --git a/include/linux/usb.h b/include/linux/usb.h
19602 -index 6b7ec37..4428419 100644
19603 +index d2465bc..5256de4 100644
19604 --- a/include/linux/usb.h
19605 +++ b/include/linux/usb.h
19606 -@@ -569,7 +569,7 @@ struct usb_device {
19607 +@@ -571,7 +571,7 @@ struct usb_device {
19608 int maxchild;
19609
19610 u32 quirks;
19611 @@ -83654,7 +87237,7 @@ index 6b7ec37..4428419 100644
19612
19613 unsigned long active_duration;
19614
19615 -@@ -1653,7 +1653,7 @@ void usb_buffer_unmap_sg(const struct usb_device *dev, int is_in,
19616 +@@ -1655,7 +1655,7 @@ void usb_buffer_unmap_sg(const struct usb_device *dev, int is_in,
19617
19618 extern int usb_control_msg(struct usb_device *dev, unsigned int pipe,
19619 __u8 request, __u8 requesttype, __u16 value, __u16 index,
19620 @@ -83813,10 +87396,10 @@ index 4b8a891..e9a2863 100644
19621 /*
19622 * Internals. Dont't use..
19623 diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
19624 -index 45c9cd1..20bd0bf 100644
19625 +index 82e7db7..f8ce3d0 100644
19626 --- a/include/linux/vmstat.h
19627 +++ b/include/linux/vmstat.h
19628 -@@ -102,18 +102,18 @@ static inline void vm_events_fold_cpu(int cpu)
19629 +@@ -108,18 +108,18 @@ static inline void vm_events_fold_cpu(int cpu)
19630 /*
19631 * Zone based page accounting with per cpu differentials.
19632 */
19633 @@ -83840,7 +87423,7 @@ index 45c9cd1..20bd0bf 100644
19634 #ifdef CONFIG_SMP
19635 if (x < 0)
19636 x = 0;
19637 -@@ -121,10 +121,10 @@ static inline unsigned long global_page_state(enum zone_stat_item item)
19638 +@@ -127,10 +127,10 @@ static inline unsigned long global_page_state(enum zone_stat_item item)
19639 return x;
19640 }
19641
19642 @@ -83853,7 +87436,7 @@ index 45c9cd1..20bd0bf 100644
19643 #ifdef CONFIG_SMP
19644 if (x < 0)
19645 x = 0;
19646 -@@ -141,7 +141,7 @@ static inline unsigned long zone_page_state(struct zone *zone,
19647 +@@ -147,7 +147,7 @@ static inline unsigned long zone_page_state(struct zone *zone,
19648 static inline unsigned long zone_page_state_snapshot(struct zone *zone,
19649 enum zone_stat_item item)
19650 {
19651 @@ -83862,7 +87445,7 @@ index 45c9cd1..20bd0bf 100644
19652
19653 #ifdef CONFIG_SMP
19654 int cpu;
19655 -@@ -228,14 +228,14 @@ static inline void __mod_zone_page_state(struct zone *zone,
19656 +@@ -234,14 +234,14 @@ static inline void __mod_zone_page_state(struct zone *zone,
19657
19658 static inline void __inc_zone_state(struct zone *zone, enum zone_stat_item item)
19659 {
19660 @@ -83939,7 +87522,7 @@ index eec6e46..82d5641 100644
19661 /*
19662 * Newer version of video_device, handled by videodev2.c
19663 diff --git a/include/media/v4l2-device.h b/include/media/v4l2-device.h
19664 -index c9b1593..a572459 100644
19665 +index ffb69da..040393e 100644
19666 --- a/include/media/v4l2-device.h
19667 +++ b/include/media/v4l2-device.h
19668 @@ -95,7 +95,7 @@ int __must_check v4l2_device_register(struct device *dev, struct v4l2_device *v4
19669 @@ -84066,7 +87649,7 @@ index 7a43138..bc76865 100644
19670 /** inet_connection_sock - INET connection oriented sock
19671 *
19672 diff --git a/include/net/inetpeer.h b/include/net/inetpeer.h
19673 -index 823ec7b..1af4453 100644
19674 +index 01d590e..f69c61d 100644
19675 --- a/include/net/inetpeer.h
19676 +++ b/include/net/inetpeer.h
19677 @@ -47,7 +47,7 @@ struct inet_peer {
19678 @@ -84074,24 +87657,15 @@ index 823ec7b..1af4453 100644
19679 union {
19680 struct {
19681 - atomic_t rid; /* Frag reception counter */
19682 -+ atomic_unchecked_t rid; /* Frag reception counter */
19683 ++ atomic_unchecked_t rid; /* Frag reception counter */
19684 };
19685 struct rcu_head rcu;
19686 struct inet_peer *gc_next;
19687 diff --git a/include/net/ip.h b/include/net/ip.h
19688 -index 54de029..6a28064 100644
19689 +index 7596eb2..f7f5fad 100644
19690 --- a/include/net/ip.h
19691 +++ b/include/net/ip.h
19692 -@@ -220,7 +220,7 @@ static inline void snmp_mib_free(void __percpu *ptr[SNMP_ARRAY_SZ])
19693 -
19694 - void inet_get_local_port_range(struct net *net, int *low, int *high);
19695 -
19696 --extern unsigned long *sysctl_local_reserved_ports;
19697 -+extern unsigned long sysctl_local_reserved_ports[65536 / 8 / sizeof(unsigned long)];
19698 - static inline int inet_is_reserved_local_port(int port)
19699 - {
19700 - return test_bit(port, sysctl_local_reserved_ports);
19701 -@@ -310,7 +310,7 @@ static inline unsigned int ip_skb_dst_mtu(const struct sk_buff *skb)
19702 +@@ -309,7 +309,7 @@ static inline unsigned int ip_skb_dst_mtu(const struct sk_buff *skb)
19703 }
19704 }
19705
19706 @@ -84114,7 +87688,7 @@ index 9922093..a1755d6 100644
19707 fib_info_update_nh_saddr((net), &FIB_RES_NH(res)))
19708 #define FIB_RES_GW(res) (FIB_RES_NH(res).nh_gw)
19709 diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h
19710 -index 5679d92..2e7a690 100644
19711 +index 624a8a5..b1e2a24 100644
19712 --- a/include/net/ip_vs.h
19713 +++ b/include/net/ip_vs.h
19714 @@ -558,7 +558,7 @@ struct ip_vs_conn {
19715 @@ -84242,20 +87816,20 @@ index 567c681..cd73ac02 100644
19716 struct llc_sap_state {
19717 u8 curr_state;
19718 diff --git a/include/net/mac80211.h b/include/net/mac80211.h
19719 -index 8248e39..7610eec 100644
19720 +index 421b6ec..5a03729 100644
19721 --- a/include/net/mac80211.h
19722 +++ b/include/net/mac80211.h
19723 -@@ -4467,7 +4467,7 @@ struct rate_control_ops {
19724 - void (*add_sta_debugfs)(void *priv, void *priv_sta,
19725 - struct dentry *dir);
19726 +@@ -4588,7 +4588,7 @@ struct rate_control_ops {
19727 void (*remove_sta_debugfs)(void *priv, void *priv_sta);
19728 +
19729 + u32 (*get_expected_throughput)(void *priv_sta);
19730 -};
19731 +} __do_const;
19732
19733 static inline int rate_supported(struct ieee80211_sta *sta,
19734 enum ieee80211_band band,
19735 diff --git a/include/net/neighbour.h b/include/net/neighbour.h
19736 -index 7277caf..fd095bc 100644
19737 +index 47f4254..fd095bc 100644
19738 --- a/include/net/neighbour.h
19739 +++ b/include/net/neighbour.h
19740 @@ -163,7 +163,7 @@ struct neigh_ops {
19741 @@ -84267,15 +87841,7 @@ index 7277caf..fd095bc 100644
19742
19743 struct pneigh_entry {
19744 struct pneigh_entry *next;
19745 -@@ -203,7 +203,6 @@ struct neigh_table {
19746 - void (*proxy_redo)(struct sk_buff *skb);
19747 - char *id;
19748 - struct neigh_parms parms;
19749 -- /* HACK. gc_* should follow parms without a gap! */
19750 - int gc_interval;
19751 - int gc_thresh1;
19752 - int gc_thresh2;
19753 -@@ -218,7 +217,7 @@ struct neigh_table {
19754 +@@ -217,7 +217,7 @@ struct neigh_table {
19755 struct neigh_statistics __percpu *stats;
19756 struct neigh_hash_table __rcu *nht;
19757 struct pneigh_entry **phash_buckets;
19758 @@ -84285,7 +87851,7 @@ index 7277caf..fd095bc 100644
19759 static inline int neigh_parms_family(struct neigh_parms *p)
19760 {
19761 diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h
19762 -index 5f9eb26..85699c4 100644
19763 +index 361d260..903d15f 100644
19764 --- a/include/net/net_namespace.h
19765 +++ b/include/net/net_namespace.h
19766 @@ -129,8 +129,8 @@ struct net {
19767 @@ -84348,7 +87914,7 @@ index 5f9eb26..85699c4 100644
19768 }
19769 #else
19770 static inline int rt_genid_ipv6(struct net *net)
19771 -@@ -382,12 +386,12 @@ static inline void rt_genid_bump_all(struct net *net)
19772 +@@ -390,12 +394,12 @@ static inline void rt_genid_bump_all(struct net *net)
19773
19774 static inline int fnhe_genid(struct net *net)
19775 {
19776 @@ -84416,19 +87982,19 @@ index 773cce3..6a11852 100644
19777 };
19778
19779 diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h
19780 -index b2704fd0..421d717 100644
19781 +index aec5e12..807233f 100644
19782 --- a/include/net/netns/ipv4.h
19783 +++ b/include/net/netns/ipv4.h
19784 -@@ -79,7 +79,7 @@ struct netns_ipv4 {
19785 +@@ -82,7 +82,7 @@ struct netns_ipv4 {
19786
19787 struct ping_group_range ping_group_range;
19788
19789 - atomic_t dev_addr_genid;
19790 + atomic_unchecked_t dev_addr_genid;
19791
19792 - #ifdef CONFIG_IP_MROUTE
19793 - #ifndef CONFIG_IP_MROUTE_MULTIPLE_TABLES
19794 -@@ -89,6 +89,6 @@ struct netns_ipv4 {
19795 + #ifdef CONFIG_SYSCTL
19796 + unsigned long *sysctl_local_reserved_ports;
19797 +@@ -96,6 +96,6 @@ struct netns_ipv4 {
19798 struct fib_rules_ops *mr_rules_ops;
19799 #endif
19800 #endif
19801 @@ -84437,10 +88003,10 @@ index b2704fd0..421d717 100644
19802 };
19803 #endif
19804 diff --git a/include/net/netns/ipv6.h b/include/net/netns/ipv6.h
19805 -index 21edaf1..4c5faae 100644
19806 +index 19d3446..3c87195 100644
19807 --- a/include/net/netns/ipv6.h
19808 +++ b/include/net/netns/ipv6.h
19809 -@@ -73,8 +73,8 @@ struct netns_ipv6 {
19810 +@@ -74,8 +74,8 @@ struct netns_ipv6 {
19811 struct fib_rules_ops *mr6_rules_ops;
19812 #endif
19813 #endif
19814 @@ -84478,7 +88044,7 @@ index 026479b..d9b2829 100644
19815
19816 struct pingfakehdr {
19817 diff --git a/include/net/protocol.h b/include/net/protocol.h
19818 -index a7e986b..dc67bce 100644
19819 +index d6fcc1f..ca277058 100644
19820 --- a/include/net/protocol.h
19821 +++ b/include/net/protocol.h
19822 @@ -49,7 +49,7 @@ struct net_protocol {
19823 @@ -84550,7 +88116,7 @@ index 7f4eeb3..37e8fe1 100644
19824
19825 /* Get the size of a DATA chunk payload. */
19826 diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h
19827 -index 0dfcc92..7967849 100644
19828 +index f38588bf..94c1795 100644
19829 --- a/include/net/sctp/structs.h
19830 +++ b/include/net/sctp/structs.h
19831 @@ -507,7 +507,7 @@ struct sctp_pf {
19832 @@ -84563,10 +88129,10 @@ index 0dfcc92..7967849 100644
19833
19834 /* Structure to track chunk fragments that have been acked, but peer
19835 diff --git a/include/net/sock.h b/include/net/sock.h
19836 -index f5a7e22..043b85f 100644
19837 +index 1563507..20d5d0e 100644
19838 --- a/include/net/sock.h
19839 +++ b/include/net/sock.h
19840 -@@ -348,7 +348,7 @@ struct sock {
19841 +@@ -349,7 +349,7 @@ struct sock {
19842 unsigned int sk_napi_id;
19843 unsigned int sk_ll_usec;
19844 #endif
19845 @@ -84575,7 +88141,7 @@ index f5a7e22..043b85f 100644
19846 int sk_rcvbuf;
19847
19848 struct sk_filter __rcu *sk_filter;
19849 -@@ -1036,7 +1036,7 @@ struct proto {
19850 +@@ -1038,7 +1038,7 @@ struct proto {
19851 void (*destroy_cgroup)(struct mem_cgroup *memcg);
19852 struct cg_proto *(*proto_cgroup)(struct mem_cgroup *memcg);
19853 #endif
19854 @@ -84584,7 +88150,7 @@ index f5a7e22..043b85f 100644
19855
19856 /*
19857 * Bits in struct cg_proto.flags
19858 -@@ -1223,7 +1223,7 @@ static inline u64 memcg_memory_allocated_read(struct cg_proto *prot)
19859 +@@ -1225,7 +1225,7 @@ static inline u64 memcg_memory_allocated_read(struct cg_proto *prot)
19860 return ret >> PAGE_SHIFT;
19861 }
19862
19863 @@ -84593,7 +88159,7 @@ index f5a7e22..043b85f 100644
19864 sk_memory_allocated(const struct sock *sk)
19865 {
19866 struct proto *prot = sk->sk_prot;
19867 -@@ -1368,7 +1368,7 @@ struct sock_iocb {
19868 +@@ -1370,7 +1370,7 @@ struct sock_iocb {
19869 struct scm_cookie *scm;
19870 struct msghdr *msg, async_msg;
19871 struct kiocb *kiocb;
19872 @@ -84602,7 +88168,41 @@ index f5a7e22..043b85f 100644
19873
19874 static inline struct sock_iocb *kiocb_to_siocb(struct kiocb *iocb)
19875 {
19876 -@@ -1803,7 +1803,7 @@ static inline void sk_nocaps_add(struct sock *sk, netdev_features_t flags)
19877 +@@ -1623,6 +1623,33 @@ void sk_common_release(struct sock *sk);
19878 + /* Initialise core socket variables */
19879 + void sock_init_data(struct socket *sock, struct sock *sk);
19880 +
19881 ++void sk_filter_release_rcu(struct rcu_head *rcu);
19882 ++
19883 ++/**
19884 ++ * sk_filter_release - release a socket filter
19885 ++ * @fp: filter to remove
19886 ++ *
19887 ++ * Remove a filter from a socket and release its resources.
19888 ++ */
19889 ++
19890 ++static inline void sk_filter_release(struct sk_filter *fp)
19891 ++{
19892 ++ if (atomic_dec_and_test(&fp->refcnt))
19893 ++ call_rcu(&fp->rcu, sk_filter_release_rcu);
19894 ++}
19895 ++
19896 ++static inline void sk_filter_uncharge(struct sock *sk, struct sk_filter *fp)
19897 ++{
19898 ++ atomic_sub(sk_filter_size(fp->len), &sk->sk_omem_alloc);
19899 ++ sk_filter_release(fp);
19900 ++}
19901 ++
19902 ++static inline void sk_filter_charge(struct sock *sk, struct sk_filter *fp)
19903 ++{
19904 ++ atomic_inc(&fp->refcnt);
19905 ++ atomic_add(sk_filter_size(fp->len), &sk->sk_omem_alloc);
19906 ++}
19907 ++
19908 + /*
19909 + * Socket reference counting postulates.
19910 + *
19911 +@@ -1805,7 +1832,7 @@ static inline void sk_nocaps_add(struct sock *sk, netdev_features_t flags)
19912 }
19913
19914 static inline int skb_do_copy_data_nocache(struct sock *sk, struct sk_buff *skb,
19915 @@ -84611,7 +88211,7 @@ index f5a7e22..043b85f 100644
19916 int copy, int offset)
19917 {
19918 if (skb->ip_summed == CHECKSUM_NONE) {
19919 -@@ -2065,7 +2065,7 @@ static inline void sk_stream_moderate_sndbuf(struct sock *sk)
19920 +@@ -2067,7 +2094,7 @@ static inline void sk_stream_moderate_sndbuf(struct sock *sk)
19921 }
19922 }
19923
19924 @@ -84621,19 +88221,19 @@ index f5a7e22..043b85f 100644
19925 /**
19926 * sk_page_frag - return an appropriate page_frag
19927 diff --git a/include/net/tcp.h b/include/net/tcp.h
19928 -index 87d8774..cf214f8 100644
19929 +index 7286db8..f1aa7dc 100644
19930 --- a/include/net/tcp.h
19931 +++ b/include/net/tcp.h
19932 -@@ -541,7 +541,7 @@ void tcp_retransmit_timer(struct sock *sk);
19933 +@@ -535,7 +535,7 @@ void tcp_retransmit_timer(struct sock *sk);
19934 void tcp_xmit_retransmit_queue(struct sock *);
19935 void tcp_simple_retransmit(struct sock *);
19936 int tcp_trim_head(struct sock *, struct sk_buff *, u32);
19937 --int tcp_fragment(struct sock *, struct sk_buff *, u32, unsigned int);
19938 -+int __intentional_overflow(3) tcp_fragment(struct sock *, struct sk_buff *, u32, unsigned int);
19939 +-int tcp_fragment(struct sock *, struct sk_buff *, u32, unsigned int, gfp_t);
19940 ++int __intentional_overflow(3) tcp_fragment(struct sock *, struct sk_buff *, u32, unsigned int, gfp_t);
19941
19942 void tcp_send_probe0(struct sock *);
19943 void tcp_send_partial(struct sock *);
19944 -@@ -715,8 +715,8 @@ struct tcp_skb_cb {
19945 +@@ -708,8 +708,8 @@ struct tcp_skb_cb {
19946 struct inet6_skb_parm h6;
19947 #endif
19948 } header; /* For incoming frames */
19949 @@ -84644,7 +88244,7 @@ index 87d8774..cf214f8 100644
19950 __u32 when; /* used to compute rtt's */
19951 __u8 tcp_flags; /* TCP header flags. (tcp[13]) */
19952
19953 -@@ -730,7 +730,7 @@ struct tcp_skb_cb {
19954 +@@ -723,7 +723,7 @@ struct tcp_skb_cb {
19955
19956 __u8 ip_dsfield; /* IPv4 tos or IPv6 dsfield */
19957 /* 1 byte hole */
19958 @@ -84654,7 +88254,7 @@ index 87d8774..cf214f8 100644
19959
19960 #define TCP_SKB_CB(__skb) ((struct tcp_skb_cb *)&((__skb)->cb[0]))
19961 diff --git a/include/net/xfrm.h b/include/net/xfrm.h
19962 -index 116e9c7..3070537 100644
19963 +index 721e9c3b..3c81bbf 100644
19964 --- a/include/net/xfrm.h
19965 +++ b/include/net/xfrm.h
19966 @@ -285,7 +285,6 @@ struct xfrm_dst;
19967 @@ -84701,7 +88301,7 @@ index 116e9c7..3070537 100644
19968 u32 priority;
19969 u32 index;
19970 struct xfrm_mark mark;
19971 -@@ -1180,6 +1179,7 @@ static inline void xfrm_sk_free_policy(struct sock *sk)
19972 +@@ -1167,6 +1166,7 @@ static inline void xfrm_sk_free_policy(struct sock *sk)
19973 }
19974
19975 void xfrm_garbage_collect(struct net *net);
19976 @@ -84709,7 +88309,7 @@ index 116e9c7..3070537 100644
19977
19978 #else
19979
19980 -@@ -1218,6 +1218,9 @@ static inline int xfrm6_policy_check_reverse(struct sock *sk, int dir,
19981 +@@ -1205,6 +1205,9 @@ static inline int xfrm6_policy_check_reverse(struct sock *sk, int dir,
19982 static inline void xfrm_garbage_collect(struct net *net)
19983 {
19984 }
19985 @@ -84798,10 +88398,10 @@ index ae6c3b8..fd748ac 100644
19986 /**
19987 * struct snd_compr: Compressed device
19988 diff --git a/include/sound/soc.h b/include/sound/soc.h
19989 -index 0b83168..d67280a 100644
19990 +index ed9e2d7..aad0887 100644
19991 --- a/include/sound/soc.h
19992 +++ b/include/sound/soc.h
19993 -@@ -782,7 +782,7 @@ struct snd_soc_codec_driver {
19994 +@@ -798,7 +798,7 @@ struct snd_soc_codec_driver {
19995 /* probe ordering - for components with runtime dependencies */
19996 int probe_order;
19997 int remove_order;
19998 @@ -84810,7 +88410,7 @@ index 0b83168..d67280a 100644
19999
20000 /* SoC platform interface */
20001 struct snd_soc_platform_driver {
20002 -@@ -828,7 +828,7 @@ struct snd_soc_platform_driver {
20003 +@@ -845,7 +845,7 @@ struct snd_soc_platform_driver {
20004 unsigned int (*read)(struct snd_soc_platform *, unsigned int);
20005 int (*write)(struct snd_soc_platform *, unsigned int, unsigned int);
20006 int (*bespoke_trigger)(struct snd_pcm_substream *, int);
20007 @@ -85156,10 +88756,10 @@ index 6d67213..552fdd9 100644
20008 enum
20009 {
20010 diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
20011 -index ea468ee..4d367a5 100644
20012 +index 168ff50..a921df2 100644
20013 --- a/include/uapi/linux/videodev2.h
20014 +++ b/include/uapi/linux/videodev2.h
20015 -@@ -1248,7 +1248,7 @@ struct v4l2_ext_control {
20016 +@@ -1253,7 +1253,7 @@ struct v4l2_ext_control {
20017 union {
20018 __s32 value;
20019 __s64 value64;
20020 @@ -85214,10 +88814,10 @@ index 30f5362..8ed8ac9 100644
20021 void *pmi_pal;
20022 u8 *vbe_state_orig; /*
20023 diff --git a/init/Kconfig b/init/Kconfig
20024 -index 9d3585b..ad45d34 100644
20025 +index 9d76b99..d378b1e 100644
20026 --- a/init/Kconfig
20027 +++ b/init/Kconfig
20028 -@@ -1093,6 +1093,7 @@ endif # CGROUPS
20029 +@@ -1105,6 +1105,7 @@ endif # CGROUPS
20030
20031 config CHECKPOINT_RESTORE
20032 bool "Checkpoint/restore support" if EXPERT
20033 @@ -85225,7 +88825,7 @@ index 9d3585b..ad45d34 100644
20034 default n
20035 help
20036 Enables additional kernel features in a sake of checkpoint/restore.
20037 -@@ -1570,7 +1571,7 @@ config SLUB_DEBUG
20038 +@@ -1589,7 +1590,7 @@ config SLUB_DEBUG
20039
20040 config COMPAT_BRK
20041 bool "Disable heap randomization"
20042 @@ -85234,7 +88834,7 @@ index 9d3585b..ad45d34 100644
20043 help
20044 Randomizing heap placement makes heap exploits harder, but it
20045 also breaks ancient binaries (including anything libc5 based).
20046 -@@ -1858,7 +1859,7 @@ config INIT_ALL_POSSIBLE
20047 +@@ -1877,7 +1878,7 @@ config INIT_ALL_POSSIBLE
20048 config STOP_MACHINE
20049 bool
20050 default y
20051 @@ -85584,10 +89184,10 @@ index a8497fa..35b3c90 100644
20052 next_state = Reset;
20053 return 0;
20054 diff --git a/init/main.c b/init/main.c
20055 -index eb0ea86..b91cd60 100644
20056 +index e8ae1fe..f60f98c 100644
20057 --- a/init/main.c
20058 +++ b/init/main.c
20059 -@@ -97,6 +97,8 @@ extern void radix_tree_init(void);
20060 +@@ -98,6 +98,8 @@ extern void radix_tree_init(void);
20061 static inline void mark_rodata_ro(void) { }
20062 #endif
20063
20064 @@ -85596,7 +89196,7 @@ index eb0ea86..b91cd60 100644
20065 /*
20066 * Debug helper: via this flag we know that we are in 'early bootup code'
20067 * where only the boot processor is running with IRQ disabled. This means
20068 -@@ -158,6 +160,75 @@ static int __init set_reset_devices(char *str)
20069 +@@ -159,6 +161,75 @@ static int __init set_reset_devices(char *str)
20070
20071 __setup("reset_devices", set_reset_devices);
20072
20073 @@ -85672,15 +89272,25 @@ index eb0ea86..b91cd60 100644
20074 static const char * argv_init[MAX_INIT_ARGS+2] = { "init", NULL, };
20075 const char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, };
20076 static const char *panic_later, *panic_param;
20077 -@@ -692,25 +763,24 @@ int __init_or_module do_one_initcall(initcall_t fn)
20078 +@@ -727,7 +798,7 @@ static bool __init_or_module initcall_blacklisted(initcall_t fn)
20079 + struct blacklist_entry *entry;
20080 + char *fn_name;
20081 +
20082 +- fn_name = kasprintf(GFP_KERNEL, "%pf", fn);
20083 ++ fn_name = kasprintf(GFP_KERNEL, "%pX", fn);
20084 + if (!fn_name)
20085 + return false;
20086 +
20087 +@@ -779,7 +850,7 @@ int __init_or_module do_one_initcall(initcall_t fn)
20088 {
20089 int count = preempt_count();
20090 int ret;
20091 - char msgbuf[64];
20092 + const char *msg1 = "", *msg2 = "";
20093
20094 - if (initcall_debug)
20095 - ret = do_one_initcall_debug(fn);
20096 + if (initcall_blacklisted(fn))
20097 + return -EPERM;
20098 +@@ -789,18 +860,17 @@ int __init_or_module do_one_initcall(initcall_t fn)
20099 else
20100 ret = fn();
20101
20102 @@ -85703,7 +89313,7 @@ index eb0ea86..b91cd60 100644
20103 return ret;
20104 }
20105
20106 -@@ -817,8 +887,8 @@ static int run_init_process(const char *init_filename)
20107 +@@ -907,8 +977,8 @@ static int run_init_process(const char *init_filename)
20108 {
20109 argv_init[0] = init_filename;
20110 return do_execve(getname_kernel(init_filename),
20111 @@ -85714,7 +89324,7 @@ index eb0ea86..b91cd60 100644
20112 }
20113
20114 static int try_to_run_init_process(const char *init_filename)
20115 -@@ -835,6 +905,10 @@ static int try_to_run_init_process(const char *init_filename)
20116 +@@ -925,6 +995,10 @@ static int try_to_run_init_process(const char *init_filename)
20117 return ret;
20118 }
20119
20120 @@ -85725,7 +89335,7 @@ index eb0ea86..b91cd60 100644
20121 static noinline void __init kernel_init_freeable(void);
20122
20123 static int __ref kernel_init(void *unused)
20124 -@@ -859,6 +933,11 @@ static int __ref kernel_init(void *unused)
20125 +@@ -949,6 +1023,11 @@ static int __ref kernel_init(void *unused)
20126 ramdisk_execute_command, ret);
20127 }
20128
20129 @@ -85737,7 +89347,7 @@ index eb0ea86..b91cd60 100644
20130 /*
20131 * We try each of these until one succeeds.
20132 *
20133 -@@ -914,7 +993,7 @@ static noinline void __init kernel_init_freeable(void)
20134 +@@ -1004,7 +1083,7 @@ static noinline void __init kernel_init_freeable(void)
20135 do_basic_setup();
20136
20137 /* Open the /dev/console on the rootfs, this should never fail */
20138 @@ -85746,7 +89356,7 @@ index eb0ea86..b91cd60 100644
20139 pr_err("Warning: unable to open an initial console.\n");
20140
20141 (void) sys_dup(0);
20142 -@@ -927,11 +1006,13 @@ static noinline void __init kernel_init_freeable(void)
20143 +@@ -1017,11 +1096,13 @@ static noinline void __init kernel_init_freeable(void)
20144 if (!ramdisk_execute_command)
20145 ramdisk_execute_command = "/init";
20146
20147 @@ -85762,7 +89372,7 @@ index eb0ea86..b91cd60 100644
20148 * Ok, we have completed the initial bootup, and
20149 * we're essentially up and running. Get rid of the
20150 diff --git a/ipc/compat.c b/ipc/compat.c
20151 -index 45d035d..e4a7f99 100644
20152 +index b5ef4f7..ff31d87 100644
20153 --- a/ipc/compat.c
20154 +++ b/ipc/compat.c
20155 @@ -396,7 +396,7 @@ COMPAT_SYSCALL_DEFINE6(ipc, u32, call, int, first, int, second,
20156 @@ -85775,11 +89385,11 @@ index 45d035d..e4a7f99 100644
20157 case SHMDT:
20158 return sys_shmdt(compat_ptr(ptr));
20159 diff --git a/ipc/ipc_sysctl.c b/ipc/ipc_sysctl.c
20160 -index 998d31b..30c24df 100644
20161 +index c3f0326..d4e0579 100644
20162 --- a/ipc/ipc_sysctl.c
20163 +++ b/ipc/ipc_sysctl.c
20164 -@@ -30,7 +30,7 @@ static void *get_ipc(ctl_table *table)
20165 - static int proc_ipc_dointvec(ctl_table *table, int write,
20166 +@@ -30,7 +30,7 @@ static void *get_ipc(struct ctl_table *table)
20167 + static int proc_ipc_dointvec(struct ctl_table *table, int write,
20168 void __user *buffer, size_t *lenp, loff_t *ppos)
20169 {
20170 - struct ctl_table ipc_table;
20171 @@ -85787,8 +89397,8 @@ index 998d31b..30c24df 100644
20172
20173 memcpy(&ipc_table, table, sizeof(ipc_table));
20174 ipc_table.data = get_ipc(table);
20175 -@@ -41,7 +41,7 @@ static int proc_ipc_dointvec(ctl_table *table, int write,
20176 - static int proc_ipc_dointvec_minmax(ctl_table *table, int write,
20177 +@@ -41,7 +41,7 @@ static int proc_ipc_dointvec(struct ctl_table *table, int write,
20178 + static int proc_ipc_dointvec_minmax(struct ctl_table *table, int write,
20179 void __user *buffer, size_t *lenp, loff_t *ppos)
20180 {
20181 - struct ctl_table ipc_table;
20182 @@ -85796,8 +89406,8 @@ index 998d31b..30c24df 100644
20183
20184 memcpy(&ipc_table, table, sizeof(ipc_table));
20185 ipc_table.data = get_ipc(table);
20186 -@@ -65,7 +65,7 @@ static int proc_ipc_dointvec_minmax_orphans(ctl_table *table, int write,
20187 - static int proc_ipc_callback_dointvec_minmax(ctl_table *table, int write,
20188 +@@ -65,7 +65,7 @@ static int proc_ipc_dointvec_minmax_orphans(struct ctl_table *table, int write,
20189 + static int proc_ipc_callback_dointvec_minmax(struct ctl_table *table, int write,
20190 void __user *buffer, size_t *lenp, loff_t *ppos)
20191 {
20192 - struct ctl_table ipc_table;
20193 @@ -85805,8 +89415,8 @@ index 998d31b..30c24df 100644
20194 size_t lenp_bef = *lenp;
20195 int rc;
20196
20197 -@@ -88,7 +88,7 @@ static int proc_ipc_callback_dointvec_minmax(ctl_table *table, int write,
20198 - static int proc_ipc_doulongvec_minmax(ctl_table *table, int write,
20199 +@@ -88,7 +88,7 @@ static int proc_ipc_callback_dointvec_minmax(struct ctl_table *table, int write,
20200 + static int proc_ipc_doulongvec_minmax(struct ctl_table *table, int write,
20201 void __user *buffer, size_t *lenp, loff_t *ppos)
20202 {
20203 - struct ctl_table ipc_table;
20204 @@ -85815,7 +89425,7 @@ index 998d31b..30c24df 100644
20205 ipc_table.data = get_ipc(table);
20206
20207 @@ -122,7 +122,7 @@ static void ipc_auto_callback(int val)
20208 - static int proc_ipcauto_dointvec_minmax(ctl_table *table, int write,
20209 + static int proc_ipcauto_dointvec_minmax(struct ctl_table *table, int write,
20210 void __user *buffer, size_t *lenp, loff_t *ppos)
20211 {
20212 - struct ctl_table ipc_table;
20213 @@ -85824,11 +89434,11 @@ index 998d31b..30c24df 100644
20214 int oldval;
20215 int rc;
20216 diff --git a/ipc/mq_sysctl.c b/ipc/mq_sysctl.c
20217 -index 5bb8bfe..a38ec05 100644
20218 +index 68d4e95..1477ded 100644
20219 --- a/ipc/mq_sysctl.c
20220 +++ b/ipc/mq_sysctl.c
20221 -@@ -25,7 +25,7 @@ static void *get_mq(ctl_table *table)
20222 - static int proc_mq_dointvec(ctl_table *table, int write,
20223 +@@ -25,7 +25,7 @@ static void *get_mq(struct ctl_table *table)
20224 + static int proc_mq_dointvec(struct ctl_table *table, int write,
20225 void __user *buffer, size_t *lenp, loff_t *ppos)
20226 {
20227 - struct ctl_table mq_table;
20228 @@ -85836,8 +89446,8 @@ index 5bb8bfe..a38ec05 100644
20229 memcpy(&mq_table, table, sizeof(mq_table));
20230 mq_table.data = get_mq(table);
20231
20232 -@@ -35,7 +35,7 @@ static int proc_mq_dointvec(ctl_table *table, int write,
20233 - static int proc_mq_dointvec_minmax(ctl_table *table, int write,
20234 +@@ -35,7 +35,7 @@ static int proc_mq_dointvec(struct ctl_table *table, int write,
20235 + static int proc_mq_dointvec_minmax(struct ctl_table *table, int write,
20236 void __user *buffer, size_t *lenp, loff_t *ppos)
20237 {
20238 - struct ctl_table mq_table;
20239 @@ -85857,69 +89467,8 @@ index 4fcf39a..d3cc2ec 100644
20240 spin_lock(&mq_lock);
20241 if (u->mq_bytes + mq_bytes < u->mq_bytes ||
20242 u->mq_bytes + mq_bytes > rlimit(RLIMIT_MSGQUEUE)) {
20243 -diff --git a/ipc/msg.c b/ipc/msg.c
20244 -index 6498531..b0ff3c8 100644
20245 ---- a/ipc/msg.c
20246 -+++ b/ipc/msg.c
20247 -@@ -303,18 +303,19 @@ static inline int msg_security(struct kern_ipc_perm *ipcp, int msgflg)
20248 - return security_msg_queue_associate(msq, msgflg);
20249 - }
20250 -
20251 -+static struct ipc_ops msg_ops = {
20252 -+ .getnew = newque,
20253 -+ .associate = msg_security,
20254 -+ .more_checks = NULL
20255 -+};
20256 -+
20257 - SYSCALL_DEFINE2(msgget, key_t, key, int, msgflg)
20258 - {
20259 - struct ipc_namespace *ns;
20260 -- struct ipc_ops msg_ops;
20261 - struct ipc_params msg_params;
20262 -
20263 - ns = current->nsproxy->ipc_ns;
20264 -
20265 -- msg_ops.getnew = newque;
20266 -- msg_ops.associate = msg_security;
20267 -- msg_ops.more_checks = NULL;
20268 --
20269 - msg_params.key = key;
20270 - msg_params.flg = msgflg;
20271 -
20272 -diff --git a/ipc/sem.c b/ipc/sem.c
20273 -index bee5554..e9af81dd 100644
20274 ---- a/ipc/sem.c
20275 -+++ b/ipc/sem.c
20276 -@@ -561,10 +561,15 @@ static inline int sem_more_checks(struct kern_ipc_perm *ipcp,
20277 - return 0;
20278 - }
20279 -
20280 -+static struct ipc_ops sem_ops = {
20281 -+ .getnew = newary,
20282 -+ .associate = sem_security,
20283 -+ .more_checks = sem_more_checks
20284 -+};
20285 -+
20286 - SYSCALL_DEFINE3(semget, key_t, key, int, nsems, int, semflg)
20287 - {
20288 - struct ipc_namespace *ns;
20289 -- struct ipc_ops sem_ops;
20290 - struct ipc_params sem_params;
20291 -
20292 - ns = current->nsproxy->ipc_ns;
20293 -@@ -572,10 +577,6 @@ SYSCALL_DEFINE3(semget, key_t, key, int, nsems, int, semflg)
20294 - if (nsems < 0 || nsems > ns->sc_semmsl)
20295 - return -EINVAL;
20296 -
20297 -- sem_ops.getnew = newary;
20298 -- sem_ops.associate = sem_security;
20299 -- sem_ops.more_checks = sem_more_checks;
20300 --
20301 - sem_params.key = key;
20302 - sem_params.flg = semflg;
20303 - sem_params.u.nsems = nsems;
20304 diff --git a/ipc/shm.c b/ipc/shm.c
20305 -index 7645961..afc7f02 100644
20306 +index 89fc354..cf56786 100644
20307 --- a/ipc/shm.c
20308 +++ b/ipc/shm.c
20309 @@ -72,6 +72,14 @@ static void shm_destroy(struct ipc_namespace *ns, struct shmid_kernel *shp);
20310 @@ -85937,7 +89486,7 @@ index 7645961..afc7f02 100644
20311 void shm_init_ns(struct ipc_namespace *ns)
20312 {
20313 ns->shm_ctlmax = SHMMAX;
20314 -@@ -553,6 +561,14 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params)
20315 +@@ -557,6 +565,14 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params)
20316 shp->shm_lprid = 0;
20317 shp->shm_atim = shp->shm_dtim = 0;
20318 shp->shm_ctim = get_seconds();
20319 @@ -85952,32 +89501,7 @@ index 7645961..afc7f02 100644
20320 shp->shm_segsz = size;
20321 shp->shm_nattch = 0;
20322 shp->shm_file = file;
20323 -@@ -606,18 +622,19 @@ static inline int shm_more_checks(struct kern_ipc_perm *ipcp,
20324 - return 0;
20325 - }
20326 -
20327 -+static struct ipc_ops shm_ops = {
20328 -+ .getnew = newseg,
20329 -+ .associate = shm_security,
20330 -+ .more_checks = shm_more_checks
20331 -+};
20332 -+
20333 - SYSCALL_DEFINE3(shmget, key_t, key, size_t, size, int, shmflg)
20334 - {
20335 - struct ipc_namespace *ns;
20336 -- struct ipc_ops shm_ops;
20337 - struct ipc_params shm_params;
20338 -
20339 - ns = current->nsproxy->ipc_ns;
20340 -
20341 -- shm_ops.getnew = newseg;
20342 -- shm_ops.associate = shm_security;
20343 -- shm_ops.more_checks = shm_more_checks;
20344 --
20345 - shm_params.key = key;
20346 - shm_params.flg = shmflg;
20347 - shm_params.u.size = size;
20348 -@@ -1088,6 +1105,12 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
20349 +@@ -1092,6 +1108,12 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
20350 f_mode = FMODE_READ | FMODE_WRITE;
20351 }
20352 if (shmflg & SHM_EXEC) {
20353 @@ -85990,7 +89514,7 @@ index 7645961..afc7f02 100644
20354 prot |= PROT_EXEC;
20355 acc_mode |= S_IXUGO;
20356 }
20357 -@@ -1112,6 +1135,15 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
20358 +@@ -1116,6 +1138,15 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
20359 if (err)
20360 goto out_unlock;
20361
20362 @@ -86006,7 +89530,7 @@ index 7645961..afc7f02 100644
20363 ipc_lock_object(&shp->shm_perm);
20364
20365 /* check if shm_destroy() is tearing down shp */
20366 -@@ -1124,6 +1156,9 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
20367 +@@ -1128,6 +1159,9 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
20368 path = shp->shm_file->f_path;
20369 path_get(&path);
20370 shp->shm_nattch++;
20371 @@ -86017,7 +89541,7 @@ index 7645961..afc7f02 100644
20372 ipc_unlock_object(&shp->shm_perm);
20373 rcu_read_unlock();
20374 diff --git a/ipc/util.c b/ipc/util.c
20375 -index 2eb0d1e..0308564 100644
20376 +index 27d74e6..8be0be2 100644
20377 --- a/ipc/util.c
20378 +++ b/ipc/util.c
20379 @@ -71,6 +71,8 @@ struct ipc_proc_iface {
20380 @@ -86038,10 +89562,10 @@ index 2eb0d1e..0308564 100644
20381 + return -1;
20382 +
20383 /* is there some bit set in requested_mode but not in granted_mode? */
20384 - if ((requested_mode & ~granted_mode & 0007) &&
20385 + if ((requested_mode & ~granted_mode & 0007) &&
20386 !ns_capable(ns->user_ns, CAP_IPC_OWNER))
20387 diff --git a/kernel/acct.c b/kernel/acct.c
20388 -index 8d6e145..33e0b1e 100644
20389 +index 808a86f..da69695 100644
20390 --- a/kernel/acct.c
20391 +++ b/kernel/acct.c
20392 @@ -556,7 +556,7 @@ static void do_acct_process(struct bsd_acct_struct *acct,
20393 @@ -86054,7 +89578,7 @@ index 8d6e145..33e0b1e 100644
20394 current->signal->rlim[RLIMIT_FSIZE].rlim_cur = flim;
20395 set_fs(fs);
20396 diff --git a/kernel/audit.c b/kernel/audit.c
20397 -index 47845c5..bd9dd5b 100644
20398 +index 3ef2e0e..8873765 100644
20399 --- a/kernel/audit.c
20400 +++ b/kernel/audit.c
20401 @@ -122,7 +122,7 @@ u32 audit_sig_sid = 0;
20402 @@ -86084,7 +89608,7 @@ index 47845c5..bd9dd5b 100644
20403 audit_rate_limit,
20404 audit_backlog_limit);
20405 audit_panic(message);
20406 -@@ -808,7 +808,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
20407 +@@ -840,7 +840,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
20408 s.pid = audit_pid;
20409 s.rate_limit = audit_rate_limit;
20410 s.backlog_limit = audit_backlog_limit;
20411 @@ -86116,10 +89640,10 @@ index 21eae3c..66db239 100644
20412 task->sessionid = sessionid;
20413 task->loginuid = loginuid;
20414 diff --git a/kernel/capability.c b/kernel/capability.c
20415 -index 24663b3..b926ae1 100644
20416 +index a5cf13c..07a2647 100644
20417 --- a/kernel/capability.c
20418 +++ b/kernel/capability.c
20419 -@@ -193,6 +193,9 @@ SYSCALL_DEFINE2(capget, cap_user_header_t, header, cap_user_data_t, dataptr)
20420 +@@ -192,6 +192,9 @@ SYSCALL_DEFINE2(capget, cap_user_header_t, header, cap_user_data_t, dataptr)
20421 * before modification is attempted and the application
20422 * fails.
20423 */
20424 @@ -86129,7 +89653,7 @@ index 24663b3..b926ae1 100644
20425 if (copy_to_user(dataptr, kdata, tocopy
20426 * sizeof(struct __user_cap_data_struct))) {
20427 return -EFAULT;
20428 -@@ -294,10 +297,11 @@ bool has_ns_capability(struct task_struct *t,
20429 +@@ -293,10 +296,11 @@ bool has_ns_capability(struct task_struct *t,
20430 int ret;
20431
20432 rcu_read_lock();
20433 @@ -86143,7 +89667,7 @@ index 24663b3..b926ae1 100644
20434 }
20435
20436 /**
20437 -@@ -334,10 +338,10 @@ bool has_ns_capability_noaudit(struct task_struct *t,
20438 +@@ -333,10 +337,10 @@ bool has_ns_capability_noaudit(struct task_struct *t,
20439 int ret;
20440
20441 rcu_read_lock();
20442 @@ -86156,7 +89680,7 @@ index 24663b3..b926ae1 100644
20443 }
20444
20445 /**
20446 -@@ -375,7 +379,7 @@ bool ns_capable(struct user_namespace *ns, int cap)
20447 +@@ -374,7 +378,7 @@ bool ns_capable(struct user_namespace *ns, int cap)
20448 BUG();
20449 }
20450
20451 @@ -86165,7 +89689,7 @@ index 24663b3..b926ae1 100644
20452 current->flags |= PF_SUPERPRIV;
20453 return true;
20454 }
20455 -@@ -383,6 +387,21 @@ bool ns_capable(struct user_namespace *ns, int cap)
20456 +@@ -382,6 +386,21 @@ bool ns_capable(struct user_namespace *ns, int cap)
20457 }
20458 EXPORT_SYMBOL(ns_capable);
20459
20460 @@ -86214,10 +89738,25 @@ index 24663b3..b926ae1 100644
20461 +}
20462 +EXPORT_SYMBOL(capable_wrt_inode_uidgid_nolog);
20463 diff --git a/kernel/cgroup.c b/kernel/cgroup.c
20464 -index 073226b..969c746 100644
20465 +index 70776ae..09c4988 100644
20466 --- a/kernel/cgroup.c
20467 +++ b/kernel/cgroup.c
20468 -@@ -4808,7 +4808,7 @@ static int cgroup_css_links_read(struct seq_file *seq, void *v)
20469 +@@ -5146,6 +5146,14 @@ static void cgroup_release_agent(struct work_struct *work)
20470 + release_list);
20471 + list_del_init(&cgrp->release_list);
20472 + raw_spin_unlock(&release_list_lock);
20473 ++
20474 ++ /*
20475 ++ * don't bother calling call_usermodehelper if we haven't
20476 ++ * configured a binary to execute
20477 ++ */
20478 ++ if (cgrp->root->release_agent_path[0] == '\0')
20479 ++ goto continue_free;
20480 ++
20481 + pathbuf = kmalloc(PATH_MAX, GFP_KERNEL);
20482 + if (!pathbuf)
20483 + goto continue_free;
20484 +@@ -5336,7 +5344,7 @@ static int cgroup_css_links_read(struct seq_file *seq, void *v)
20485 struct task_struct *task;
20486 int count = 0;
20487
20488 @@ -86227,7 +89766,7 @@ index 073226b..969c746 100644
20489 list_for_each_entry(task, &cset->tasks, cg_list) {
20490 if (count++ > MAX_TASKS_SHOWN_PER_CSS)
20491 diff --git a/kernel/compat.c b/kernel/compat.c
20492 -index e40b043..3da8f51 100644
20493 +index 633394f..bdfa969 100644
20494 --- a/kernel/compat.c
20495 +++ b/kernel/compat.c
20496 @@ -13,6 +13,7 @@
20497 @@ -86551,7 +90090,7 @@ index e0573a4..26c0fd3 100644
20498
20499 /**
20500 diff --git a/kernel/debug/debug_core.c b/kernel/debug/debug_core.c
20501 -index 2956c8d..cfe1e2e 100644
20502 +index 1adf62b..7736e06 100644
20503 --- a/kernel/debug/debug_core.c
20504 +++ b/kernel/debug/debug_core.c
20505 @@ -124,7 +124,7 @@ static DEFINE_RAW_SPINLOCK(dbg_slave_lock);
20506 @@ -86615,7 +90154,7 @@ index 2956c8d..cfe1e2e 100644
20507 }
20508 EXPORT_SYMBOL_GPL(kgdb_schedule_breakpoint);
20509 diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c
20510 -index 0b097c8..11dd5c5 100644
20511 +index 2f7c760..95b6a66 100644
20512 --- a/kernel/debug/kdb/kdb_main.c
20513 +++ b/kernel/debug/kdb/kdb_main.c
20514 @@ -1977,7 +1977,7 @@ static int kdb_lsmod(int argc, const char **argv)
20515 @@ -86637,10 +90176,10 @@ index 0b097c8..11dd5c5 100644
20516 #ifdef CONFIG_MODULE_UNLOAD
20517 {
20518 diff --git a/kernel/events/core.c b/kernel/events/core.c
20519 -index 935271c..8888f93 100644
20520 +index 6b17ac1..00fd505 100644
20521 --- a/kernel/events/core.c
20522 +++ b/kernel/events/core.c
20523 -@@ -158,8 +158,15 @@ static struct srcu_struct pmus_srcu;
20524 +@@ -160,8 +160,15 @@ static struct srcu_struct pmus_srcu;
20525 * 0 - disallow raw tracepoint access for unpriv
20526 * 1 - disallow cpu events for unpriv
20527 * 2 - disallow kernel profiling for unpriv
20528 @@ -86657,7 +90196,7 @@ index 935271c..8888f93 100644
20529
20530 /* Minimum for 512 kiB + 1 user control page */
20531 int sysctl_perf_event_mlock __read_mostly = 512 + (PAGE_SIZE / 1024); /* 'free' kiB per user */
20532 -@@ -185,7 +192,7 @@ void update_perf_cpu_limits(void)
20533 +@@ -187,7 +194,7 @@ void update_perf_cpu_limits(void)
20534
20535 tmp *= sysctl_perf_cpu_time_max_percent;
20536 do_div(tmp, 100);
20537 @@ -86666,7 +90205,7 @@ index 935271c..8888f93 100644
20538 }
20539
20540 static int perf_rotate_context(struct perf_cpu_context *cpuctx);
20541 -@@ -291,7 +298,7 @@ void perf_sample_event_took(u64 sample_len_ns)
20542 +@@ -293,7 +300,7 @@ void perf_sample_event_took(u64 sample_len_ns)
20543 }
20544 }
20545
20546 @@ -86675,7 +90214,7 @@ index 935271c..8888f93 100644
20547
20548 static void cpu_ctx_sched_out(struct perf_cpu_context *cpuctx,
20549 enum event_type_t event_type);
20550 -@@ -3002,7 +3009,7 @@ static void __perf_event_read(void *info)
20551 +@@ -3023,7 +3030,7 @@ static void __perf_event_read(void *info)
20552
20553 static inline u64 perf_event_count(struct perf_event *event)
20554 {
20555 @@ -86684,7 +90223,7 @@ index 935271c..8888f93 100644
20556 }
20557
20558 static u64 perf_event_read(struct perf_event *event)
20559 -@@ -3361,9 +3368,9 @@ u64 perf_event_read_value(struct perf_event *event, u64 *enabled, u64 *running)
20560 +@@ -3399,9 +3406,9 @@ u64 perf_event_read_value(struct perf_event *event, u64 *enabled, u64 *running)
20561 mutex_lock(&event->child_mutex);
20562 total += perf_event_read(event);
20563 *enabled += event->total_time_enabled +
20564 @@ -86696,7 +90235,7 @@ index 935271c..8888f93 100644
20565
20566 list_for_each_entry(child, &event->child_list, child_list) {
20567 total += perf_event_read(child);
20568 -@@ -3792,10 +3799,10 @@ void perf_event_update_userpage(struct perf_event *event)
20569 +@@ -3830,10 +3837,10 @@ void perf_event_update_userpage(struct perf_event *event)
20570 userpg->offset -= local64_read(&event->hw.prev_count);
20571
20572 userpg->time_enabled = enabled +
20573 @@ -86709,7 +90248,7 @@ index 935271c..8888f93 100644
20574
20575 arch_perf_update_userpage(userpg, now);
20576
20577 -@@ -4359,7 +4366,7 @@ perf_output_sample_ustack(struct perf_output_handle *handle, u64 dump_size,
20578 +@@ -4397,7 +4404,7 @@ perf_output_sample_ustack(struct perf_output_handle *handle, u64 dump_size,
20579
20580 /* Data. */
20581 sp = perf_user_stack_pointer(regs);
20582 @@ -86718,7 +90257,7 @@ index 935271c..8888f93 100644
20583 dyn_size = dump_size - rem;
20584
20585 perf_output_skip(handle, rem);
20586 -@@ -4450,11 +4457,11 @@ static void perf_output_read_one(struct perf_output_handle *handle,
20587 +@@ -4488,11 +4495,11 @@ static void perf_output_read_one(struct perf_output_handle *handle,
20588 values[n++] = perf_event_count(event);
20589 if (read_format & PERF_FORMAT_TOTAL_TIME_ENABLED) {
20590 values[n++] = enabled +
20591 @@ -86732,7 +90271,7 @@ index 935271c..8888f93 100644
20592 }
20593 if (read_format & PERF_FORMAT_ID)
20594 values[n++] = primary_event_id(event);
20595 -@@ -6733,7 +6740,7 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu,
20596 +@@ -6801,7 +6808,7 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu,
20597 event->parent = parent_event;
20598
20599 event->ns = get_pid_ns(task_active_pid_ns(current));
20600 @@ -86741,7 +90280,7 @@ index 935271c..8888f93 100644
20601
20602 event->state = PERF_EVENT_STATE_INACTIVE;
20603
20604 -@@ -7015,6 +7022,11 @@ SYSCALL_DEFINE5(perf_event_open,
20605 +@@ -7080,6 +7087,11 @@ SYSCALL_DEFINE5(perf_event_open,
20606 if (flags & ~PERF_FLAG_ALL)
20607 return -EINVAL;
20608
20609 @@ -86753,7 +90292,7 @@ index 935271c..8888f93 100644
20610 err = perf_copy_attr(attr_uptr, &attr);
20611 if (err)
20612 return err;
20613 -@@ -7353,10 +7365,10 @@ static void sync_child_event(struct perf_event *child_event,
20614 +@@ -7432,10 +7444,10 @@ static void sync_child_event(struct perf_event *child_event,
20615 /*
20616 * Add back the child's count to the parent's count:
20617 */
20618 @@ -86812,10 +90351,10 @@ index 569b2187..19940d9 100644
20619 /* Callchain handling */
20620 extern struct perf_callchain_entry *
20621 diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c
20622 -index 04709b6..d330828 100644
20623 +index 6f3254e..e4c1fe4 100644
20624 --- a/kernel/events/uprobes.c
20625 +++ b/kernel/events/uprobes.c
20626 -@@ -1666,7 +1666,7 @@ static int is_trap_at_addr(struct mm_struct *mm, unsigned long vaddr)
20627 +@@ -1670,7 +1670,7 @@ static int is_trap_at_addr(struct mm_struct *mm, unsigned long vaddr)
20628 {
20629 struct page *page;
20630 uprobe_opcode_t opcode;
20631 @@ -86825,7 +90364,7 @@ index 04709b6..d330828 100644
20632 pagefault_disable();
20633 result = __copy_from_user_inatomic(&opcode, (void __user*)vaddr,
20634 diff --git a/kernel/exit.c b/kernel/exit.c
20635 -index 6ed6a1d..edecb0e 100644
20636 +index e5c4668..592d2e5 100644
20637 --- a/kernel/exit.c
20638 +++ b/kernel/exit.c
20639 @@ -173,6 +173,10 @@ void release_task(struct task_struct * p)
20640 @@ -86839,16 +90378,7 @@ index 6ed6a1d..edecb0e 100644
20641 /* don't need to get the RCU readlock here - the process is dead and
20642 * can't be modifying its own credentials. But shut RCU-lockdep up */
20643 rcu_read_lock();
20644 -@@ -330,7 +334,7 @@ int allow_signal(int sig)
20645 - * know it'll be handled, so that they don't get converted to
20646 - * SIGKILL or just silently dropped.
20647 - */
20648 -- current->sighand->action[(sig)-1].sa.sa_handler = (void __user *)2;
20649 -+ current->sighand->action[(sig)-1].sa.sa_handler = (__force void __user *)2;
20650 - recalc_sigpending();
20651 - spin_unlock_irq(&current->sighand->siglock);
20652 - return 0;
20653 -@@ -699,6 +703,8 @@ void do_exit(long code)
20654 +@@ -664,6 +668,8 @@ void do_exit(long code)
20655 struct task_struct *tsk = current;
20656 int group_dead;
20657
20658 @@ -86857,7 +90387,7 @@ index 6ed6a1d..edecb0e 100644
20659 profile_task_exit(tsk);
20660
20661 WARN_ON(blk_needs_flush_plug(tsk));
20662 -@@ -715,7 +721,6 @@ void do_exit(long code)
20663 +@@ -680,7 +686,6 @@ void do_exit(long code)
20664 * mm_release()->clear_child_tid() from writing to a user-controlled
20665 * kernel address.
20666 */
20667 @@ -86865,7 +90395,7 @@ index 6ed6a1d..edecb0e 100644
20668
20669 ptrace_event(PTRACE_EVENT_EXIT, code);
20670
20671 -@@ -774,6 +779,9 @@ void do_exit(long code)
20672 +@@ -739,6 +744,9 @@ void do_exit(long code)
20673 tsk->exit_code = code;
20674 taskstats_exit(tsk, group_dead);
20675
20676 @@ -86875,7 +90405,7 @@ index 6ed6a1d..edecb0e 100644
20677 exit_mm(tsk);
20678
20679 if (group_dead)
20680 -@@ -893,7 +901,7 @@ SYSCALL_DEFINE1(exit, int, error_code)
20681 +@@ -858,7 +866,7 @@ SYSCALL_DEFINE1(exit, int, error_code)
20682 * Take down every thread in the group. This is called by fatal signals
20683 * as well as by sys_exit_group (below).
20684 */
20685 @@ -86885,7 +90415,7 @@ index 6ed6a1d..edecb0e 100644
20686 {
20687 struct signal_struct *sig = current->signal;
20688 diff --git a/kernel/fork.c b/kernel/fork.c
20689 -index 68b9226..0700bf6 100644
20690 +index 6a13c46..a623c8e 100644
20691 --- a/kernel/fork.c
20692 +++ b/kernel/fork.c
20693 @@ -183,6 +183,48 @@ void thread_info_cache_init(void)
20694 @@ -87322,7 +90852,7 @@ index 68b9226..0700bf6 100644
20695 else
20696 new_fs = fs;
20697 diff --git a/kernel/futex.c b/kernel/futex.c
20698 -index de938d2..c566038 100644
20699 +index b632b5f..ca00da9 100644
20700 --- a/kernel/futex.c
20701 +++ b/kernel/futex.c
20702 @@ -202,7 +202,7 @@ struct futex_pi_state {
20703 @@ -87398,10 +90928,10 @@ index 55c8c93..9ba7ad6 100644
20704 {
20705 compat_uptr_t base = ptr_to_compat(entry);
20706 diff --git a/kernel/gcov/base.c b/kernel/gcov/base.c
20707 -index f45b75b..bfac6d5 100644
20708 +index b358a80..fc25240 100644
20709 --- a/kernel/gcov/base.c
20710 +++ b/kernel/gcov/base.c
20711 -@@ -108,11 +108,6 @@ void gcov_enable_events(void)
20712 +@@ -114,11 +114,6 @@ void gcov_enable_events(void)
20713 }
20714
20715 #ifdef CONFIG_MODULES
20716 @@ -87413,7 +90943,7 @@ index f45b75b..bfac6d5 100644
20717 /* Update list and generate events when modules are unloaded. */
20718 static int gcov_module_notifier(struct notifier_block *nb, unsigned long event,
20719 void *data)
20720 -@@ -127,7 +122,7 @@ static int gcov_module_notifier(struct notifier_block *nb, unsigned long event,
20721 +@@ -133,7 +128,7 @@ static int gcov_module_notifier(struct notifier_block *nb, unsigned long event,
20722
20723 /* Remove entries located in module from linked list. */
20724 while ((info = gcov_info_next(info))) {
20725 @@ -87423,10 +90953,10 @@ index f45b75b..bfac6d5 100644
20726 if (gcov_events_enabled)
20727 gcov_event(GCOV_REMOVE, info);
20728 diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
20729 -index e0501fe..312edd6 100644
20730 +index 3ab2899..c6ad010 100644
20731 --- a/kernel/hrtimer.c
20732 +++ b/kernel/hrtimer.c
20733 -@@ -1448,7 +1448,7 @@ void hrtimer_peek_ahead_timers(void)
20734 +@@ -1449,7 +1449,7 @@ void hrtimer_peek_ahead_timers(void)
20735 local_irq_restore(flags);
20736 }
20737
20738 @@ -87621,10 +91151,10 @@ index e30ac0f..3528cac 100644
20739
20740 /*
20741 diff --git a/kernel/kexec.c b/kernel/kexec.c
20742 -index 28c5706..bfc8388 100644
20743 +index 4b8f0c9..fffd0df 100644
20744 --- a/kernel/kexec.c
20745 +++ b/kernel/kexec.c
20746 -@@ -1046,7 +1046,8 @@ COMPAT_SYSCALL_DEFINE4(kexec_load, compat_ulong_t, entry,
20747 +@@ -1045,7 +1045,8 @@ COMPAT_SYSCALL_DEFINE4(kexec_load, compat_ulong_t, entry,
20748 compat_ulong_t, flags)
20749 {
20750 struct compat_kexec_segment in;
20751 @@ -87635,7 +91165,7 @@ index 28c5706..bfc8388 100644
20752
20753 /* Don't allow clients that don't understand the native
20754 diff --git a/kernel/kmod.c b/kernel/kmod.c
20755 -index 6b375af..eaff670 100644
20756 +index 8637e04..8b1d0d8 100644
20757 --- a/kernel/kmod.c
20758 +++ b/kernel/kmod.c
20759 @@ -75,7 +75,7 @@ static void free_modprobe_argv(struct subprocess_info *info)
20760 @@ -87806,7 +91336,7 @@ index 6b375af..eaff670 100644
20761 if (info->cleanup)
20762 (*info->cleanup)(info);
20763 kfree(info);
20764 -@@ -303,7 +374,7 @@ static int wait_for_helper(void *data)
20765 +@@ -300,7 +371,7 @@ static int wait_for_helper(void *data)
20766 *
20767 * Thus the __user pointer cast is valid here.
20768 */
20769 @@ -87815,7 +91345,7 @@ index 6b375af..eaff670 100644
20770
20771 /*
20772 * If ret is 0, either ____call_usermodehelper failed and the
20773 -@@ -542,7 +613,12 @@ struct subprocess_info *call_usermodehelper_setup(char *path, char **argv,
20774 +@@ -539,7 +610,12 @@ struct subprocess_info *call_usermodehelper_setup(char *path, char **argv,
20775 goto out;
20776
20777 INIT_WORK(&sub_info->work, __call_usermodehelper);
20778 @@ -87828,7 +91358,7 @@ index 6b375af..eaff670 100644
20779 sub_info->argv = argv;
20780 sub_info->envp = envp;
20781
20782 -@@ -650,7 +726,7 @@ EXPORT_SYMBOL(call_usermodehelper);
20783 +@@ -647,7 +723,7 @@ EXPORT_SYMBOL(call_usermodehelper);
20784 static int proc_cap_handler(struct ctl_table *table, int write,
20785 void __user *buffer, size_t *lenp, loff_t *ppos)
20786 {
20787 @@ -87838,7 +91368,7 @@ index 6b375af..eaff670 100644
20788 kernel_cap_t new_cap;
20789 int err, i;
20790 diff --git a/kernel/kprobes.c b/kernel/kprobes.c
20791 -index ceeadfc..11c18b6 100644
20792 +index 734e9a7..0a313b8 100644
20793 --- a/kernel/kprobes.c
20794 +++ b/kernel/kprobes.c
20795 @@ -31,6 +31,9 @@
20796 @@ -87851,7 +91381,7 @@ index ceeadfc..11c18b6 100644
20797 #include <linux/kprobes.h>
20798 #include <linux/hash.h>
20799 #include <linux/init.h>
20800 -@@ -135,12 +138,12 @@ enum kprobe_slot_state {
20801 +@@ -122,12 +125,12 @@ enum kprobe_slot_state {
20802
20803 static void *alloc_insn_page(void)
20804 {
20805 @@ -87866,7 +91396,7 @@ index ceeadfc..11c18b6 100644
20806 }
20807
20808 struct kprobe_insn_cache kprobe_insn_slots = {
20809 -@@ -2151,11 +2154,11 @@ static void __kprobes report_probe(struct seq_file *pi, struct kprobe *p,
20810 +@@ -2176,11 +2179,11 @@ static void report_probe(struct seq_file *pi, struct kprobe *p,
20811 kprobe_type = "k";
20812
20813 if (sym)
20814 @@ -87881,10 +91411,10 @@ index ceeadfc..11c18b6 100644
20815
20816 if (!pp)
20817 diff --git a/kernel/ksysfs.c b/kernel/ksysfs.c
20818 -index 2495a9b..071b906 100644
20819 +index 6683cce..daf8999 100644
20820 --- a/kernel/ksysfs.c
20821 +++ b/kernel/ksysfs.c
20822 -@@ -49,6 +49,8 @@ static ssize_t uevent_helper_store(struct kobject *kobj,
20823 +@@ -50,6 +50,8 @@ static ssize_t uevent_helper_store(struct kobject *kobj,
20824 {
20825 if (count+1 > UEVENT_HELPER_PATH_LEN)
20826 return -ENOENT;
20827 @@ -87893,7 +91423,7 @@ index 2495a9b..071b906 100644
20828 memcpy(uevent_helper, buf, count);
20829 uevent_helper[count] = '\0';
20830 if (count && uevent_helper[count-1] == '\n')
20831 -@@ -175,7 +177,7 @@ static ssize_t notes_read(struct file *filp, struct kobject *kobj,
20832 +@@ -176,7 +178,7 @@ static ssize_t notes_read(struct file *filp, struct kobject *kobj,
20833 return count;
20834 }
20835
20836 @@ -87984,19 +91514,19 @@ index ef43ac4..2720dfa 100644
20837 seq_printf(m, "%40s %14lu %29s %pS\n",
20838 name, stats->contending_point[i],
20839 diff --git a/kernel/locking/mcs_spinlock.c b/kernel/locking/mcs_spinlock.c
20840 -index 838dc9e..760e158 100644
20841 +index be9ee15..39d6233 100644
20842 --- a/kernel/locking/mcs_spinlock.c
20843 +++ b/kernel/locking/mcs_spinlock.c
20844 -@@ -71,7 +71,7 @@ bool osq_lock(struct optimistic_spin_queue **lock)
20845 - if (likely(prev == NULL))
20846 - return true;
20847 +@@ -102,7 +102,7 @@ bool osq_lock(struct optimistic_spin_queue *lock)
20848
20849 + prev = decode_cpu(old);
20850 + node->prev = prev;
20851 - ACCESS_ONCE(prev->next) = node;
20852 + ACCESS_ONCE_RW(prev->next) = node;
20853
20854 /*
20855 * Normally @prev is untouchable after the above store; because at that
20856 -@@ -143,8 +143,8 @@ unqueue:
20857 +@@ -174,8 +174,8 @@ unqueue:
20858 * it will wait in Step-A.
20859 */
20860
20861 @@ -88007,8 +91537,8 @@ index 838dc9e..760e158 100644
20862
20863 return false;
20864 }
20865 -@@ -165,13 +165,13 @@ void osq_unlock(struct optimistic_spin_queue **lock)
20866 - */
20867 +@@ -197,13 +197,13 @@ void osq_unlock(struct optimistic_spin_queue *lock)
20868 + node = this_cpu_ptr(&osq_node);
20869 next = xchg(&node->next, NULL);
20870 if (next) {
20871 - ACCESS_ONCE(next->locked) = 1;
20872 @@ -88024,7 +91554,7 @@ index 838dc9e..760e158 100644
20873
20874 #endif
20875 diff --git a/kernel/locking/mcs_spinlock.h b/kernel/locking/mcs_spinlock.h
20876 -index a2dbac4..e02a34a 100644
20877 +index 74356dc..48dd5e1 100644
20878 --- a/kernel/locking/mcs_spinlock.h
20879 +++ b/kernel/locking/mcs_spinlock.h
20880 @@ -81,7 +81,7 @@ void mcs_spin_lock(struct mcs_spinlock **lock, struct mcs_spinlock *node)
20881 @@ -88085,7 +91615,7 @@ index 0799fd3..d06ae3b 100644
20882 extern void debug_mutex_init(struct mutex *lock, const char *name,
20883 struct lock_class_key *key);
20884 diff --git a/kernel/locking/mutex.c b/kernel/locking/mutex.c
20885 -index bc73d33..6f308aa 100644
20886 +index acca2c1..ddeaea8 100644
20887 --- a/kernel/locking/mutex.c
20888 +++ b/kernel/locking/mutex.c
20889 @@ -490,7 +490,7 @@ slowpath:
20890 @@ -88210,7 +91740,7 @@ index 1d96dd0..994ff19 100644
20891
20892 default:
20893 diff --git a/kernel/module.c b/kernel/module.c
20894 -index 079c461..741f79c 100644
20895 +index 81e727c..a8ea6f9 100644
20896 --- a/kernel/module.c
20897 +++ b/kernel/module.c
20898 @@ -61,6 +61,7 @@
20899 @@ -88849,8 +92379,26 @@ index 079c461..741f79c 100644
20900
20901 /* Copy relocated percpu area over. */
20902 percpu_modcopy(mod, (void *)info->sechdrs[info->index.pcpu].sh_addr,
20903 -@@ -3024,16 +3158,16 @@ static int do_init_module(struct module *mod)
20904 - MODULE_STATE_COMING, mod);
20905 +@@ -3079,11 +3213,12 @@ static int do_init_module(struct module *mod)
20906 + mod->strtab = mod->core_strtab;
20907 + #endif
20908 + unset_module_init_ro_nx(mod);
20909 +- module_free(mod, mod->module_init);
20910 +- mod->module_init = NULL;
20911 +- mod->init_size = 0;
20912 +- mod->init_ro_size = 0;
20913 +- mod->init_text_size = 0;
20914 ++ module_free(mod, mod->module_init_rw);
20915 ++ module_free_exec(mod, mod->module_init_rx);
20916 ++ mod->module_init_rw = NULL;
20917 ++ mod->module_init_rx = NULL;
20918 ++ mod->init_size_rw = 0;
20919 ++ mod->init_size_rx = 0;
20920 + mutex_unlock(&module_mutex);
20921 + wake_up_all(&module_wq);
20922 +
20923 +@@ -3151,16 +3286,16 @@ static int complete_formation(struct module *mod, struct load_info *info)
20924 + module_bug_finalize(info->hdr, info->sechdrs, mod);
20925
20926 /* Set RO and NX regions for core */
20927 - set_section_ro_nx(mod->module_core,
20928 @@ -88872,27 +92420,9 @@ index 079c461..741f79c 100644
20929 + mod->init_size_rx,
20930 + mod->init_size_rx);
20931
20932 - do_mod_ctors(mod);
20933 - /* Start the module */
20934 -@@ -3094,11 +3228,12 @@ static int do_init_module(struct module *mod)
20935 - mod->strtab = mod->core_strtab;
20936 - #endif
20937 - unset_module_init_ro_nx(mod);
20938 -- module_free(mod, mod->module_init);
20939 -- mod->module_init = NULL;
20940 -- mod->init_size = 0;
20941 -- mod->init_ro_size = 0;
20942 -- mod->init_text_size = 0;
20943 -+ module_free(mod, mod->module_init_rw);
20944 -+ module_free_exec(mod, mod->module_init_rx);
20945 -+ mod->module_init_rw = NULL;
20946 -+ mod->module_init_rx = NULL;
20947 -+ mod->init_size_rw = 0;
20948 -+ mod->init_size_rx = 0;
20949 - mutex_unlock(&module_mutex);
20950 - wake_up_all(&module_wq);
20951 -
20952 -@@ -3241,9 +3376,38 @@ static int load_module(struct load_info *info, const char __user *uargs,
20953 + /* Mark state as coming so strong_try_module_get() ignores us,
20954 + * but kallsyms etc. can see us. */
20955 +@@ -3244,9 +3379,38 @@ static int load_module(struct load_info *info, const char __user *uargs,
20956 if (err)
20957 goto free_unload;
20958
20959 @@ -88931,7 +92461,7 @@ index 079c461..741f79c 100644
20960 /* Fix up syms, so that st_value is a pointer to location. */
20961 err = simplify_symbols(mod, info);
20962 if (err < 0)
20963 -@@ -3259,13 +3423,6 @@ static int load_module(struct load_info *info, const char __user *uargs,
20964 +@@ -3262,13 +3426,6 @@ static int load_module(struct load_info *info, const char __user *uargs,
20965
20966 flush_module_icache(mod);
20967
20968 @@ -88945,7 +92475,7 @@ index 079c461..741f79c 100644
20969 dynamic_debug_setup(info->debug, info->num_debug);
20970
20971 /* Ftrace init must be called in the MODULE_STATE_UNFORMED state */
20972 -@@ -3303,11 +3460,10 @@ static int load_module(struct load_info *info, const char __user *uargs,
20973 +@@ -3311,11 +3468,10 @@ static int load_module(struct load_info *info, const char __user *uargs,
20974 ddebug_cleanup:
20975 dynamic_debug_remove(info->debug);
20976 synchronize_sched();
20977 @@ -88958,7 +92488,7 @@ index 079c461..741f79c 100644
20978 free_unload:
20979 module_unload_free(mod);
20980 unlink_mod:
20981 -@@ -3390,10 +3546,16 @@ static const char *get_ksymbol(struct module *mod,
20982 +@@ -3398,10 +3554,16 @@ static const char *get_ksymbol(struct module *mod,
20983 unsigned long nextval;
20984
20985 /* At worse, next value is at end of module */
20986 @@ -88978,7 +92508,7 @@ index 079c461..741f79c 100644
20987
20988 /* Scan for closest preceding symbol, and next symbol. (ELF
20989 starts real symbols at 1). */
20990 -@@ -3644,7 +3806,7 @@ static int m_show(struct seq_file *m, void *p)
20991 +@@ -3652,7 +3814,7 @@ static int m_show(struct seq_file *m, void *p)
20992 return 0;
20993
20994 seq_printf(m, "%s %u",
20995 @@ -88987,7 +92517,7 @@ index 079c461..741f79c 100644
20996 print_unload_info(m, mod);
20997
20998 /* Informative for users. */
20999 -@@ -3653,7 +3815,7 @@ static int m_show(struct seq_file *m, void *p)
21000 +@@ -3661,7 +3823,7 @@ static int m_show(struct seq_file *m, void *p)
21001 mod->state == MODULE_STATE_COMING ? "Loading":
21002 "Live");
21003 /* Used by oprofile and other similar tools. */
21004 @@ -88996,7 +92526,7 @@ index 079c461..741f79c 100644
21005
21006 /* Taints info */
21007 if (mod->taints)
21008 -@@ -3689,7 +3851,17 @@ static const struct file_operations proc_modules_operations = {
21009 +@@ -3697,7 +3859,17 @@ static const struct file_operations proc_modules_operations = {
21010
21011 static int __init proc_modules_init(void)
21012 {
21013 @@ -89014,7 +92544,7 @@ index 079c461..741f79c 100644
21014 return 0;
21015 }
21016 module_init(proc_modules_init);
21017 -@@ -3750,14 +3922,14 @@ struct module *__module_address(unsigned long addr)
21018 +@@ -3758,14 +3930,14 @@ struct module *__module_address(unsigned long addr)
21019 {
21020 struct module *mod;
21021
21022 @@ -89032,7 +92562,7 @@ index 079c461..741f79c 100644
21023 return mod;
21024 }
21025 return NULL;
21026 -@@ -3792,11 +3964,20 @@ bool is_module_text_address(unsigned long addr)
21027 +@@ -3800,11 +3972,20 @@ bool is_module_text_address(unsigned long addr)
21028 */
21029 struct module *__module_text_address(unsigned long addr)
21030 {
21031 @@ -89057,7 +92587,7 @@ index 079c461..741f79c 100644
21032 }
21033 return mod;
21034 diff --git a/kernel/notifier.c b/kernel/notifier.c
21035 -index db4c8b0..ad011c5 100644
21036 +index 4803da6..1c5eea6 100644
21037 --- a/kernel/notifier.c
21038 +++ b/kernel/notifier.c
21039 @@ -5,6 +5,7 @@
21040 @@ -89135,10 +92665,10 @@ index 161402f..598814c 100644
21041 atomic_set(&pd->refcnt, 0);
21042 pd->pinst = pinst;
21043 diff --git a/kernel/panic.c b/kernel/panic.c
21044 -index d02fa9f..9faec0a 100644
21045 +index 62e16ce..9db5047b 100644
21046 --- a/kernel/panic.c
21047 +++ b/kernel/panic.c
21048 -@@ -52,7 +52,7 @@ EXPORT_SYMBOL(panic_blink);
21049 +@@ -53,7 +53,7 @@ EXPORT_SYMBOL(panic_blink);
21050 /*
21051 * Stop ourself in panic -- architecture code may override this
21052 */
21053 @@ -89147,7 +92677,7 @@ index d02fa9f..9faec0a 100644
21054 {
21055 while (1)
21056 cpu_relax();
21057 -@@ -408,7 +408,7 @@ static void warn_slowpath_common(const char *file, int line, void *caller,
21058 +@@ -420,7 +420,7 @@ static void warn_slowpath_common(const char *file, int line, void *caller,
21059 disable_trace_on_warning();
21060
21061 pr_warn("------------[ cut here ]------------\n");
21062 @@ -89156,7 +92686,7 @@ index d02fa9f..9faec0a 100644
21063 raw_smp_processor_id(), current->pid, file, line, caller);
21064
21065 if (args)
21066 -@@ -462,7 +462,8 @@ EXPORT_SYMBOL(warn_slowpath_null);
21067 +@@ -474,7 +474,8 @@ EXPORT_SYMBOL(warn_slowpath_null);
21068 */
21069 __visible void __stack_chk_fail(void)
21070 {
21071 @@ -89373,7 +92903,7 @@ index 424c2d4..679242f 100644
21072 }
21073
21074 diff --git a/kernel/power/Kconfig b/kernel/power/Kconfig
21075 -index 2fac9cc..56fef29 100644
21076 +index 9a83d78..128bfc0 100644
21077 --- a/kernel/power/Kconfig
21078 +++ b/kernel/power/Kconfig
21079 @@ -24,6 +24,8 @@ config HIBERNATE_CALLBACKS
21080 @@ -89386,10 +92916,10 @@ index 2fac9cc..56fef29 100644
21081 select LZO_COMPRESS
21082 select LZO_DECOMPRESS
21083 diff --git a/kernel/power/process.c b/kernel/power/process.c
21084 -index 14f9a8d..98ee610 100644
21085 +index 4ee194e..925778f 100644
21086 --- a/kernel/power/process.c
21087 +++ b/kernel/power/process.c
21088 -@@ -34,6 +34,7 @@ static int try_to_freeze_tasks(bool user_only)
21089 +@@ -35,6 +35,7 @@ static int try_to_freeze_tasks(bool user_only)
21090 unsigned int elapsed_msecs;
21091 bool wakeup = false;
21092 int sleep_usecs = USEC_PER_MSEC;
21093 @@ -89397,7 +92927,7 @@ index 14f9a8d..98ee610 100644
21094
21095 do_gettimeofday(&start);
21096
21097 -@@ -44,13 +45,20 @@ static int try_to_freeze_tasks(bool user_only)
21098 +@@ -45,13 +46,20 @@ static int try_to_freeze_tasks(bool user_only)
21099
21100 while (true) {
21101 todo = 0;
21102 @@ -89419,7 +92949,7 @@ index 14f9a8d..98ee610 100644
21103 } while_each_thread(g, p);
21104 read_unlock(&tasklist_lock);
21105
21106 -@@ -59,7 +67,7 @@ static int try_to_freeze_tasks(bool user_only)
21107 +@@ -60,7 +68,7 @@ static int try_to_freeze_tasks(bool user_only)
21108 todo += wq_busy;
21109 }
21110
21111 @@ -89429,10 +92959,10 @@ index 14f9a8d..98ee610 100644
21112
21113 if (pm_wakeup_pending()) {
21114 diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
21115 -index 63594be..8444e0f 100644
21116 +index 13e839d..8a71f12 100644
21117 --- a/kernel/printk/printk.c
21118 +++ b/kernel/printk/printk.c
21119 -@@ -385,6 +385,11 @@ static int check_syslog_permissions(int type, bool from_file)
21120 +@@ -480,6 +480,11 @@ static int check_syslog_permissions(int type, bool from_file)
21121 if (from_file && type != SYSLOG_ACTION_OPEN)
21122 return 0;
21123
21124 @@ -89445,7 +92975,7 @@ index 63594be..8444e0f 100644
21125 if (capable(CAP_SYSLOG))
21126 return 0;
21127 diff --git a/kernel/profile.c b/kernel/profile.c
21128 -index cb980f0..ccd8782 100644
21129 +index 54bf5ba..df6e0a2 100644
21130 --- a/kernel/profile.c
21131 +++ b/kernel/profile.c
21132 @@ -37,7 +37,7 @@ struct profile_hit {
21133 @@ -89457,7 +92987,7 @@ index cb980f0..ccd8782 100644
21134 static unsigned long prof_len, prof_shift;
21135
21136 int prof_on __read_mostly;
21137 -@@ -260,7 +260,7 @@ static void profile_flip_buffers(void)
21138 +@@ -256,7 +256,7 @@ static void profile_flip_buffers(void)
21139 hits[i].pc = 0;
21140 continue;
21141 }
21142 @@ -89466,7 +92996,7 @@ index cb980f0..ccd8782 100644
21143 hits[i].hits = hits[i].pc = 0;
21144 }
21145 }
21146 -@@ -321,9 +321,9 @@ static void do_profile_hits(int type, void *__pc, unsigned int nr_hits)
21147 +@@ -317,9 +317,9 @@ static void do_profile_hits(int type, void *__pc, unsigned int nr_hits)
21148 * Add the current hit(s) and flush the write-queue out
21149 * to the global buffer:
21150 */
21151 @@ -89478,7 +93008,7 @@ index cb980f0..ccd8782 100644
21152 hits[i].pc = hits[i].hits = 0;
21153 }
21154 out:
21155 -@@ -398,7 +398,7 @@ static void do_profile_hits(int type, void *__pc, unsigned int nr_hits)
21156 +@@ -394,7 +394,7 @@ static void do_profile_hits(int type, void *__pc, unsigned int nr_hits)
21157 {
21158 unsigned long pc;
21159 pc = ((unsigned long)__pc - (unsigned long)_stext) >> prof_shift;
21160 @@ -89487,7 +93017,7 @@ index cb980f0..ccd8782 100644
21161 }
21162 #endif /* !CONFIG_SMP */
21163
21164 -@@ -494,7 +494,7 @@ read_profile(struct file *file, char __user *buf, size_t count, loff_t *ppos)
21165 +@@ -490,7 +490,7 @@ read_profile(struct file *file, char __user *buf, size_t count, loff_t *ppos)
21166 return -EFAULT;
21167 buf++; p++; count--; read++;
21168 }
21169 @@ -89496,7 +93026,7 @@ index cb980f0..ccd8782 100644
21170 if (copy_to_user(buf, (void *)pnt, count))
21171 return -EFAULT;
21172 read += count;
21173 -@@ -525,7 +525,7 @@ static ssize_t write_profile(struct file *file, const char __user *buf,
21174 +@@ -521,7 +521,7 @@ static ssize_t write_profile(struct file *file, const char __user *buf,
21175 }
21176 #endif
21177 profile_discard_flip_buffers();
21178 @@ -89601,10 +93131,10 @@ index adf9862..9d86345 100644
21179 }
21180
21181 diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
21182 -index bd30bc6..dce23da 100644
21183 +index 948a769..5ca842b 100644
21184 --- a/kernel/rcu/rcutorture.c
21185 +++ b/kernel/rcu/rcutorture.c
21186 -@@ -122,12 +122,12 @@ static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1],
21187 +@@ -124,12 +124,12 @@ static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1],
21188 rcu_torture_count) = { 0 };
21189 static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1],
21190 rcu_torture_batch) = { 0 };
21191 @@ -89623,7 +93153,7 @@ index bd30bc6..dce23da 100644
21192 static long n_rcu_torture_barrier_error;
21193 static long n_rcu_torture_boost_ktrerror;
21194 static long n_rcu_torture_boost_rterror;
21195 -@@ -186,11 +186,11 @@ rcu_torture_alloc(void)
21196 +@@ -200,11 +200,11 @@ rcu_torture_alloc(void)
21197
21198 spin_lock_bh(&rcu_torture_lock);
21199 if (list_empty(&rcu_torture_freelist)) {
21200 @@ -89637,7 +93167,7 @@ index bd30bc6..dce23da 100644
21201 p = rcu_torture_freelist.next;
21202 list_del_init(p);
21203 spin_unlock_bh(&rcu_torture_lock);
21204 -@@ -203,7 +203,7 @@ rcu_torture_alloc(void)
21205 +@@ -217,7 +217,7 @@ rcu_torture_alloc(void)
21206 static void
21207 rcu_torture_free(struct rcu_torture *p)
21208 {
21209 @@ -89646,7 +93176,7 @@ index bd30bc6..dce23da 100644
21210 spin_lock_bh(&rcu_torture_lock);
21211 list_add_tail(&p->rtort_free, &rcu_torture_freelist);
21212 spin_unlock_bh(&rcu_torture_lock);
21213 -@@ -287,7 +287,7 @@ rcu_torture_cb(struct rcu_head *p)
21214 +@@ -301,7 +301,7 @@ rcu_torture_pipe_update_one(struct rcu_torture *rp)
21215 i = rp->rtort_pipe_count;
21216 if (i > RCU_TORTURE_PIPE_LEN)
21217 i = RCU_TORTURE_PIPE_LEN;
21218 @@ -89654,26 +93184,17 @@ index bd30bc6..dce23da 100644
21219 + atomic_inc_unchecked(&rcu_torture_wcount[i]);
21220 if (++rp->rtort_pipe_count >= RCU_TORTURE_PIPE_LEN) {
21221 rp->rtort_mbtest = 0;
21222 - rcu_torture_free(rp);
21223 -@@ -714,7 +714,7 @@ rcu_torture_writer(void *arg)
21224 + return true;
21225 +@@ -808,7 +808,7 @@ rcu_torture_writer(void *arg)
21226 i = old_rp->rtort_pipe_count;
21227 if (i > RCU_TORTURE_PIPE_LEN)
21228 i = RCU_TORTURE_PIPE_LEN;
21229 - atomic_inc(&rcu_torture_wcount[i]);
21230 + atomic_inc_unchecked(&rcu_torture_wcount[i]);
21231 old_rp->rtort_pipe_count++;
21232 - if (gp_normal == gp_exp)
21233 - exp = !!(torture_random(&rand) & 0x80);
21234 -@@ -732,7 +732,7 @@ rcu_torture_writer(void *arg)
21235 - i = rp->rtort_pipe_count;
21236 - if (i > RCU_TORTURE_PIPE_LEN)
21237 - i = RCU_TORTURE_PIPE_LEN;
21238 -- atomic_inc(&rcu_torture_wcount[i]);
21239 -+ atomic_inc_unchecked(&rcu_torture_wcount[i]);
21240 - if (++rp->rtort_pipe_count >=
21241 - RCU_TORTURE_PIPE_LEN) {
21242 - rp->rtort_mbtest = 0;
21243 -@@ -825,7 +825,7 @@ static void rcu_torture_timer(unsigned long unused)
21244 + switch (synctype[torture_random(&rand) % nsynctypes]) {
21245 + case RTWS_DEF_FREE:
21246 +@@ -926,7 +926,7 @@ static void rcu_torture_timer(unsigned long unused)
21247 return;
21248 }
21249 if (p->rtort_mbtest == 0)
21250 @@ -89682,7 +93203,7 @@ index bd30bc6..dce23da 100644
21251 spin_lock(&rand_lock);
21252 cur_ops->read_delay(&rand);
21253 n_rcu_torture_timers++;
21254 -@@ -895,7 +895,7 @@ rcu_torture_reader(void *arg)
21255 +@@ -996,7 +996,7 @@ rcu_torture_reader(void *arg)
21256 continue;
21257 }
21258 if (p->rtort_mbtest == 0)
21259 @@ -89691,7 +93212,7 @@ index bd30bc6..dce23da 100644
21260 cur_ops->read_delay(&rand);
21261 preempt_disable();
21262 pipe_count = p->rtort_pipe_count;
21263 -@@ -950,15 +950,15 @@ rcu_torture_printk(char *page)
21264 +@@ -1054,15 +1054,15 @@ rcu_torture_printk(char *page)
21265 }
21266 page += sprintf(page, "%s%s ", torture_type, TORTURE_FLAG);
21267 page += sprintf(page,
21268 @@ -89712,7 +93233,7 @@ index bd30bc6..dce23da 100644
21269 n_rcu_torture_boost_ktrerror,
21270 n_rcu_torture_boost_rterror);
21271 page += sprintf(page, "rtbf: %ld rtb: %ld nt: %ld ",
21272 -@@ -971,14 +971,14 @@ rcu_torture_printk(char *page)
21273 +@@ -1075,14 +1075,14 @@ rcu_torture_printk(char *page)
21274 n_barrier_attempts,
21275 n_rcu_torture_barrier_error);
21276 page += sprintf(page, "\n%s%s ", torture_type, TORTURE_FLAG);
21277 @@ -89729,7 +93250,7 @@ index bd30bc6..dce23da 100644
21278 WARN_ON_ONCE(1);
21279 }
21280 page += sprintf(page, "Reader Pipe: ");
21281 -@@ -992,7 +992,7 @@ rcu_torture_printk(char *page)
21282 +@@ -1096,7 +1096,7 @@ rcu_torture_printk(char *page)
21283 page += sprintf(page, "Free-Block Circulation: ");
21284 for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) {
21285 page += sprintf(page, " %d",
21286 @@ -89738,7 +93259,7 @@ index bd30bc6..dce23da 100644
21287 }
21288 page += sprintf(page, "\n");
21289 if (cur_ops->stats)
21290 -@@ -1341,7 +1341,7 @@ rcu_torture_cleanup(void)
21291 +@@ -1461,7 +1461,7 @@ rcu_torture_cleanup(void)
21292
21293 rcu_torture_stats_print(); /* -After- the stats thread is stopped! */
21294
21295 @@ -89747,7 +93268,7 @@ index bd30bc6..dce23da 100644
21296 rcu_torture_print_module_parms(cur_ops, "End of test: FAILURE");
21297 else if (torture_onoff_failures())
21298 rcu_torture_print_module_parms(cur_ops,
21299 -@@ -1460,18 +1460,18 @@ rcu_torture_init(void)
21300 +@@ -1584,18 +1584,18 @@ rcu_torture_init(void)
21301
21302 rcu_torture_current = NULL;
21303 rcu_torture_current_version = 0;
21304 @@ -89810,36 +93331,70 @@ index d9efcc1..ea543e9 100644
21305 {
21306 __rcu_process_callbacks(&rcu_sched_ctrlblk);
21307 __rcu_process_callbacks(&rcu_bh_ctrlblk);
21308 +diff --git a/kernel/rcu/tiny_plugin.h b/kernel/rcu/tiny_plugin.h
21309 +index 858c565..7efd915 100644
21310 +--- a/kernel/rcu/tiny_plugin.h
21311 ++++ b/kernel/rcu/tiny_plugin.h
21312 +@@ -152,17 +152,17 @@ static void check_cpu_stall(struct rcu_ctrlblk *rcp)
21313 + dump_stack();
21314 + }
21315 + if (*rcp->curtail && ULONG_CMP_GE(j, js))
21316 +- ACCESS_ONCE(rcp->jiffies_stall) = jiffies +
21317 ++ ACCESS_ONCE_RW(rcp->jiffies_stall) = jiffies +
21318 + 3 * rcu_jiffies_till_stall_check() + 3;
21319 + else if (ULONG_CMP_GE(j, js))
21320 +- ACCESS_ONCE(rcp->jiffies_stall) = jiffies + rcu_jiffies_till_stall_check();
21321 ++ ACCESS_ONCE_RW(rcp->jiffies_stall) = jiffies + rcu_jiffies_till_stall_check();
21322 + }
21323 +
21324 + static void reset_cpu_stall_ticks(struct rcu_ctrlblk *rcp)
21325 + {
21326 + rcp->ticks_this_gp = 0;
21327 + rcp->gp_start = jiffies;
21328 +- ACCESS_ONCE(rcp->jiffies_stall) = jiffies + rcu_jiffies_till_stall_check();
21329 ++ ACCESS_ONCE_RW(rcp->jiffies_stall) = jiffies + rcu_jiffies_till_stall_check();
21330 + }
21331 +
21332 + static void check_cpu_stalls(void)
21333 diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
21334 -index 0c47e30..a084591 100644
21335 +index 625d0b0..0bce4d6 100644
21336 --- a/kernel/rcu/tree.c
21337 +++ b/kernel/rcu/tree.c
21338 -@@ -388,9 +388,9 @@ static void rcu_eqs_enter_common(struct rcu_dynticks *rdtp, long long oldval,
21339 +@@ -263,7 +263,7 @@ static void rcu_momentary_dyntick_idle(void)
21340 + */
21341 + rdtp = this_cpu_ptr(&rcu_dynticks);
21342 + smp_mb__before_atomic(); /* Earlier stuff before QS. */
21343 +- atomic_add(2, &rdtp->dynticks); /* QS. */
21344 ++ atomic_add_unchecked(2, &rdtp->dynticks); /* QS. */
21345 + smp_mb__after_atomic(); /* Later stuff after QS. */
21346 + break;
21347 + }
21348 +@@ -523,9 +523,9 @@ static void rcu_eqs_enter_common(struct rcu_dynticks *rdtp, long long oldval,
21349 rcu_prepare_for_idle(smp_processor_id());
21350 /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */
21351 - smp_mb__before_atomic_inc(); /* See above. */
21352 + smp_mb__before_atomic(); /* See above. */
21353 - atomic_inc(&rdtp->dynticks);
21354 + atomic_inc_unchecked(&rdtp->dynticks);
21355 - smp_mb__after_atomic_inc(); /* Force ordering with next sojourn. */
21356 + smp_mb__after_atomic(); /* Force ordering with next sojourn. */
21357 - WARN_ON_ONCE(atomic_read(&rdtp->dynticks) & 0x1);
21358 + WARN_ON_ONCE(atomic_read_unchecked(&rdtp->dynticks) & 0x1);
21359
21360 /*
21361 * It is illegal to enter an extended quiescent state while
21362 -@@ -508,10 +508,10 @@ static void rcu_eqs_exit_common(struct rcu_dynticks *rdtp, long long oldval,
21363 +@@ -643,10 +643,10 @@ static void rcu_eqs_exit_common(struct rcu_dynticks *rdtp, long long oldval,
21364 int user)
21365 {
21366 - smp_mb__before_atomic_inc(); /* Force ordering w/previous sojourn. */
21367 + smp_mb__before_atomic(); /* Force ordering w/previous sojourn. */
21368 - atomic_inc(&rdtp->dynticks);
21369 + atomic_inc_unchecked(&rdtp->dynticks);
21370 /* CPUs seeing atomic_inc() must see later RCU read-side crit sects */
21371 - smp_mb__after_atomic_inc(); /* See above. */
21372 + smp_mb__after_atomic(); /* See above. */
21373 - WARN_ON_ONCE(!(atomic_read(&rdtp->dynticks) & 0x1));
21374 + WARN_ON_ONCE(!(atomic_read_unchecked(&rdtp->dynticks) & 0x1));
21375 rcu_cleanup_after_idle(smp_processor_id());
21376 trace_rcu_dyntick(TPS("End"), oldval, rdtp->dynticks_nesting);
21377 if (!user && !is_idle_task(current)) {
21378 -@@ -632,14 +632,14 @@ void rcu_nmi_enter(void)
21379 +@@ -767,14 +767,14 @@ void rcu_nmi_enter(void)
21380 struct rcu_dynticks *rdtp = this_cpu_ptr(&rcu_dynticks);
21381
21382 if (rdtp->dynticks_nmi_nesting == 0 &&
21383 @@ -89847,29 +93402,29 @@ index 0c47e30..a084591 100644
21384 + (atomic_read_unchecked(&rdtp->dynticks) & 0x1))
21385 return;
21386 rdtp->dynticks_nmi_nesting++;
21387 - smp_mb__before_atomic_inc(); /* Force delay from prior write. */
21388 + smp_mb__before_atomic(); /* Force delay from prior write. */
21389 - atomic_inc(&rdtp->dynticks);
21390 + atomic_inc_unchecked(&rdtp->dynticks);
21391 /* CPUs seeing atomic_inc() must see later RCU read-side crit sects */
21392 - smp_mb__after_atomic_inc(); /* See above. */
21393 + smp_mb__after_atomic(); /* See above. */
21394 - WARN_ON_ONCE(!(atomic_read(&rdtp->dynticks) & 0x1));
21395 + WARN_ON_ONCE(!(atomic_read_unchecked(&rdtp->dynticks) & 0x1));
21396 }
21397
21398 /**
21399 -@@ -658,9 +658,9 @@ void rcu_nmi_exit(void)
21400 +@@ -793,9 +793,9 @@ void rcu_nmi_exit(void)
21401 return;
21402 /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */
21403 - smp_mb__before_atomic_inc(); /* See above. */
21404 + smp_mb__before_atomic(); /* See above. */
21405 - atomic_inc(&rdtp->dynticks);
21406 + atomic_inc_unchecked(&rdtp->dynticks);
21407 - smp_mb__after_atomic_inc(); /* Force delay to next write. */
21408 + smp_mb__after_atomic(); /* Force delay to next write. */
21409 - WARN_ON_ONCE(atomic_read(&rdtp->dynticks) & 0x1);
21410 + WARN_ON_ONCE(atomic_read_unchecked(&rdtp->dynticks) & 0x1);
21411 }
21412
21413 /**
21414 -@@ -673,7 +673,7 @@ void rcu_nmi_exit(void)
21415 +@@ -808,7 +808,7 @@ void rcu_nmi_exit(void)
21416 */
21417 bool notrace __rcu_is_watching(void)
21418 {
21419 @@ -89878,17 +93433,17 @@ index 0c47e30..a084591 100644
21420 }
21421
21422 /**
21423 -@@ -756,7 +756,7 @@ static int rcu_is_cpu_rrupt_from_idle(void)
21424 +@@ -891,7 +891,7 @@ static int rcu_is_cpu_rrupt_from_idle(void)
21425 static int dyntick_save_progress_counter(struct rcu_data *rdp,
21426 bool *isidle, unsigned long *maxj)
21427 {
21428 - rdp->dynticks_snap = atomic_add_return(0, &rdp->dynticks->dynticks);
21429 + rdp->dynticks_snap = atomic_add_return_unchecked(0, &rdp->dynticks->dynticks);
21430 rcu_sysidle_check_cpu(rdp, isidle, maxj);
21431 - return (rdp->dynticks_snap & 0x1) == 0;
21432 - }
21433 -@@ -779,7 +779,7 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp,
21434 - unsigned int curr;
21435 + if ((rdp->dynticks_snap & 0x1) == 0) {
21436 + trace_rcu_fqs(rdp->rsp->name, rdp->gpnum, rdp->cpu, TPS("dti"));
21437 +@@ -920,7 +920,7 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp,
21438 + int *rcrmp;
21439 unsigned int snap;
21440
21441 - curr = (unsigned int)atomic_add_return(0, &rdp->dynticks->dynticks);
21442 @@ -89896,7 +93451,65 @@ index 0c47e30..a084591 100644
21443 snap = (unsigned int)rdp->dynticks_snap;
21444
21445 /*
21446 -@@ -1449,9 +1449,9 @@ static int rcu_gp_init(struct rcu_state *rsp)
21447 +@@ -983,10 +983,10 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp,
21448 + rdp->rsp->gp_start + jiffies_till_sched_qs) ||
21449 + ULONG_CMP_GE(jiffies, rdp->rsp->jiffies_resched)) {
21450 + if (!(ACCESS_ONCE(*rcrmp) & rdp->rsp->flavor_mask)) {
21451 +- ACCESS_ONCE(rdp->cond_resched_completed) =
21452 ++ ACCESS_ONCE_RW(rdp->cond_resched_completed) =
21453 + ACCESS_ONCE(rdp->mynode->completed);
21454 + smp_mb(); /* ->cond_resched_completed before *rcrmp. */
21455 +- ACCESS_ONCE(*rcrmp) =
21456 ++ ACCESS_ONCE_RW(*rcrmp) =
21457 + ACCESS_ONCE(*rcrmp) + rdp->rsp->flavor_mask;
21458 + resched_cpu(rdp->cpu); /* Force CPU into scheduler. */
21459 + rdp->rsp->jiffies_resched += 5; /* Enable beating. */
21460 +@@ -1008,7 +1008,7 @@ static void record_gp_stall_check_time(struct rcu_state *rsp)
21461 + rsp->gp_start = j;
21462 + smp_wmb(); /* Record start time before stall time. */
21463 + j1 = rcu_jiffies_till_stall_check();
21464 +- ACCESS_ONCE(rsp->jiffies_stall) = j + j1;
21465 ++ ACCESS_ONCE_RW(rsp->jiffies_stall) = j + j1;
21466 + rsp->jiffies_resched = j + j1 / 2;
21467 + }
21468 +
21469 +@@ -1052,7 +1052,7 @@ static void print_other_cpu_stall(struct rcu_state *rsp)
21470 + raw_spin_unlock_irqrestore(&rnp->lock, flags);
21471 + return;
21472 + }
21473 +- ACCESS_ONCE(rsp->jiffies_stall) = jiffies + 3 * rcu_jiffies_till_stall_check() + 3;
21474 ++ ACCESS_ONCE_RW(rsp->jiffies_stall) = jiffies + 3 * rcu_jiffies_till_stall_check() + 3;
21475 + raw_spin_unlock_irqrestore(&rnp->lock, flags);
21476 +
21477 + /*
21478 +@@ -1130,7 +1130,7 @@ static void print_cpu_stall(struct rcu_state *rsp)
21479 +
21480 + raw_spin_lock_irqsave(&rnp->lock, flags);
21481 + if (ULONG_CMP_GE(jiffies, ACCESS_ONCE(rsp->jiffies_stall)))
21482 +- ACCESS_ONCE(rsp->jiffies_stall) = jiffies +
21483 ++ ACCESS_ONCE_RW(rsp->jiffies_stall) = jiffies +
21484 + 3 * rcu_jiffies_till_stall_check() + 3;
21485 + raw_spin_unlock_irqrestore(&rnp->lock, flags);
21486 +
21487 +@@ -1214,7 +1214,7 @@ void rcu_cpu_stall_reset(void)
21488 + struct rcu_state *rsp;
21489 +
21490 + for_each_rcu_flavor(rsp)
21491 +- ACCESS_ONCE(rsp->jiffies_stall) = jiffies + ULONG_MAX / 2;
21492 ++ ACCESS_ONCE_RW(rsp->jiffies_stall) = jiffies + ULONG_MAX / 2;
21493 + }
21494 +
21495 + /*
21496 +@@ -1594,7 +1594,7 @@ static int rcu_gp_init(struct rcu_state *rsp)
21497 + raw_spin_unlock_irq(&rnp->lock);
21498 + return 0;
21499 + }
21500 +- ACCESS_ONCE(rsp->gp_flags) = 0; /* Clear all flags: New grace period. */
21501 ++ ACCESS_ONCE_RW(rsp->gp_flags) = 0; /* Clear all flags: New grace period. */
21502 +
21503 + if (WARN_ON_ONCE(rcu_gp_in_progress(rsp))) {
21504 + /*
21505 +@@ -1635,9 +1635,9 @@ static int rcu_gp_init(struct rcu_state *rsp)
21506 rdp = this_cpu_ptr(rsp->rda);
21507 rcu_preempt_check_blocked_tasks(rnp);
21508 rnp->qsmask = rnp->qsmaskinit;
21509 @@ -89906,9 +93519,18 @@ index 0c47e30..a084591 100644
21510 - ACCESS_ONCE(rnp->completed) = rsp->completed;
21511 + ACCESS_ONCE_RW(rnp->completed) = rsp->completed;
21512 if (rnp == rdp->mynode)
21513 - __note_gp_changes(rsp, rnp, rdp);
21514 + (void)__note_gp_changes(rsp, rnp, rdp);
21515 rcu_preempt_boost_start_gp(rnp);
21516 -@@ -1545,7 +1545,7 @@ static void rcu_gp_cleanup(struct rcu_state *rsp)
21517 +@@ -1687,7 +1687,7 @@ static int rcu_gp_fqs(struct rcu_state *rsp, int fqs_state_in)
21518 + if (ACCESS_ONCE(rsp->gp_flags) & RCU_GP_FLAG_FQS) {
21519 + raw_spin_lock_irq(&rnp->lock);
21520 + smp_mb__after_unlock_lock();
21521 +- ACCESS_ONCE(rsp->gp_flags) &= ~RCU_GP_FLAG_FQS;
21522 ++ ACCESS_ONCE_RW(rsp->gp_flags) &= ~RCU_GP_FLAG_FQS;
21523 + raw_spin_unlock_irq(&rnp->lock);
21524 + }
21525 + return fqs_state;
21526 +@@ -1732,7 +1732,7 @@ static void rcu_gp_cleanup(struct rcu_state *rsp)
21527 rcu_for_each_node_breadth_first(rsp, rnp) {
21528 raw_spin_lock_irq(&rnp->lock);
21529 smp_mb__after_unlock_lock();
21530 @@ -89916,8 +93538,8 @@ index 0c47e30..a084591 100644
21531 + ACCESS_ONCE_RW(rnp->completed) = rsp->gpnum;
21532 rdp = this_cpu_ptr(rsp->rda);
21533 if (rnp == rdp->mynode)
21534 - __note_gp_changes(rsp, rnp, rdp);
21535 -@@ -1560,7 +1560,7 @@ static void rcu_gp_cleanup(struct rcu_state *rsp)
21536 + needgp = __note_gp_changes(rsp, rnp, rdp) || needgp;
21537 +@@ -1747,14 +1747,14 @@ static void rcu_gp_cleanup(struct rcu_state *rsp)
21538 rcu_nocb_gp_set(rnp, nocb);
21539
21540 /* Declare grace period done. */
21541 @@ -89926,7 +93548,24 @@ index 0c47e30..a084591 100644
21542 trace_rcu_grace_period(rsp->name, rsp->completed, TPS("end"));
21543 rsp->fqs_state = RCU_GP_IDLE;
21544 rdp = this_cpu_ptr(rsp->rda);
21545 -@@ -1912,7 +1912,7 @@ rcu_send_cbs_to_orphanage(int cpu, struct rcu_state *rsp,
21546 + /* Advance CBs to reduce false positives below. */
21547 + needgp = rcu_advance_cbs(rsp, rnp, rdp) || needgp;
21548 + if (needgp || cpu_needs_another_gp(rsp, rdp)) {
21549 +- ACCESS_ONCE(rsp->gp_flags) = RCU_GP_FLAG_INIT;
21550 ++ ACCESS_ONCE_RW(rsp->gp_flags) = RCU_GP_FLAG_INIT;
21551 + trace_rcu_grace_period(rsp->name,
21552 + ACCESS_ONCE(rsp->gpnum),
21553 + TPS("newreq"));
21554 +@@ -1879,7 +1879,7 @@ rcu_start_gp_advanced(struct rcu_state *rsp, struct rcu_node *rnp,
21555 + */
21556 + return false;
21557 + }
21558 +- ACCESS_ONCE(rsp->gp_flags) = RCU_GP_FLAG_INIT;
21559 ++ ACCESS_ONCE_RW(rsp->gp_flags) = RCU_GP_FLAG_INIT;
21560 + trace_rcu_grace_period(rsp->name, ACCESS_ONCE(rsp->gpnum),
21561 + TPS("newreq"));
21562 +
21563 +@@ -2100,7 +2100,7 @@ rcu_send_cbs_to_orphanage(int cpu, struct rcu_state *rsp,
21564 rsp->qlen += rdp->qlen;
21565 rdp->n_cbs_orphaned += rdp->qlen;
21566 rdp->qlen_lazy = 0;
21567 @@ -89935,7 +93574,7 @@ index 0c47e30..a084591 100644
21568 }
21569
21570 /*
21571 -@@ -2159,7 +2159,7 @@ static void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp)
21572 +@@ -2347,7 +2347,7 @@ static void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp)
21573 }
21574 smp_mb(); /* List handling before counting for rcu_barrier(). */
21575 rdp->qlen_lazy -= count_lazy;
21576 @@ -89944,7 +93583,7 @@ index 0c47e30..a084591 100644
21577 rdp->n_cbs_invoked += count;
21578
21579 /* Reinstate batch limit if we have worked down the excess. */
21580 -@@ -2304,7 +2304,7 @@ static void force_quiescent_state(struct rcu_state *rsp)
21581 +@@ -2492,7 +2492,7 @@ static void force_quiescent_state(struct rcu_state *rsp)
21582 if (rnp_old != NULL)
21583 raw_spin_unlock(&rnp_old->fqslock);
21584 if (ret) {
21585 @@ -89953,7 +93592,7 @@ index 0c47e30..a084591 100644
21586 return;
21587 }
21588 rnp_old = rnp;
21589 -@@ -2316,7 +2316,7 @@ static void force_quiescent_state(struct rcu_state *rsp)
21590 +@@ -2504,11 +2504,11 @@ static void force_quiescent_state(struct rcu_state *rsp)
21591 smp_mb__after_unlock_lock();
21592 raw_spin_unlock(&rnp_old->fqslock);
21593 if (ACCESS_ONCE(rsp->gp_flags) & RCU_GP_FLAG_FQS) {
21594 @@ -89962,7 +93601,12 @@ index 0c47e30..a084591 100644
21595 raw_spin_unlock_irqrestore(&rnp_old->lock, flags);
21596 return; /* Someone beat us to it. */
21597 }
21598 -@@ -2362,7 +2362,7 @@ __rcu_process_callbacks(struct rcu_state *rsp)
21599 +- ACCESS_ONCE(rsp->gp_flags) |= RCU_GP_FLAG_FQS;
21600 ++ ACCESS_ONCE_RW(rsp->gp_flags) |= RCU_GP_FLAG_FQS;
21601 + raw_spin_unlock_irqrestore(&rnp_old->lock, flags);
21602 + wake_up(&rsp->gp_wq); /* Memory barrier implied by wake_up() path. */
21603 + }
21604 +@@ -2553,7 +2553,7 @@ __rcu_process_callbacks(struct rcu_state *rsp)
21605 /*
21606 * Do RCU core processing for the current CPU.
21607 */
21608 @@ -89971,7 +93615,7 @@ index 0c47e30..a084591 100644
21609 {
21610 struct rcu_state *rsp;
21611
21612 -@@ -2470,7 +2470,7 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu),
21613 +@@ -2665,7 +2665,7 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu),
21614 WARN_ON_ONCE((unsigned long)head & 0x3); /* Misaligned rcu_head! */
21615 if (debug_rcu_head_queue(head)) {
21616 /* Probable double call_rcu(), so leak the callback. */
21617 @@ -89980,7 +93624,7 @@ index 0c47e30..a084591 100644
21618 WARN_ONCE(1, "__call_rcu(): Leaked duplicate callback\n");
21619 return;
21620 }
21621 -@@ -2498,7 +2498,7 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu),
21622 +@@ -2693,7 +2693,7 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu),
21623 local_irq_restore(flags);
21624 return;
21625 }
21626 @@ -89989,7 +93633,7 @@ index 0c47e30..a084591 100644
21627 if (lazy)
21628 rdp->qlen_lazy++;
21629 else
21630 -@@ -2759,11 +2759,11 @@ void synchronize_sched_expedited(void)
21631 +@@ -2968,11 +2968,11 @@ void synchronize_sched_expedited(void)
21632 * counter wrap on a 32-bit system. Quite a few more CPUs would of
21633 * course be required on a 64-bit system.
21634 */
21635 @@ -90003,7 +93647,7 @@ index 0c47e30..a084591 100644
21636 return;
21637 }
21638
21639 -@@ -2771,7 +2771,7 @@ void synchronize_sched_expedited(void)
21640 +@@ -2980,7 +2980,7 @@ void synchronize_sched_expedited(void)
21641 * Take a ticket. Note that atomic_inc_return() implies a
21642 * full memory barrier.
21643 */
21644 @@ -90012,7 +93656,7 @@ index 0c47e30..a084591 100644
21645 firstsnap = snap;
21646 get_online_cpus();
21647 WARN_ON_ONCE(cpu_is_offline(raw_smp_processor_id()));
21648 -@@ -2784,14 +2784,14 @@ void synchronize_sched_expedited(void)
21649 +@@ -2993,14 +2993,14 @@ void synchronize_sched_expedited(void)
21650 synchronize_sched_expedited_cpu_stop,
21651 NULL) == -EAGAIN) {
21652 put_online_cpus();
21653 @@ -90023,13 +93667,13 @@ index 0c47e30..a084591 100644
21654 s = atomic_long_read(&rsp->expedited_done);
21655 if (ULONG_CMP_GE((ulong)s, (ulong)firstsnap)) {
21656 /* ensure test happens before caller kfree */
21657 - smp_mb__before_atomic_inc(); /* ^^^ */
21658 + smp_mb__before_atomic(); /* ^^^ */
21659 - atomic_long_inc(&rsp->expedited_workdone1);
21660 + atomic_long_inc_unchecked(&rsp->expedited_workdone1);
21661 return;
21662 }
21663
21664 -@@ -2800,7 +2800,7 @@ void synchronize_sched_expedited(void)
21665 +@@ -3009,7 +3009,7 @@ void synchronize_sched_expedited(void)
21666 udelay(trycount * num_online_cpus());
21667 } else {
21668 wait_rcu_gp(call_rcu_sched);
21669 @@ -90038,16 +93682,16 @@ index 0c47e30..a084591 100644
21670 return;
21671 }
21672
21673 -@@ -2809,7 +2809,7 @@ void synchronize_sched_expedited(void)
21674 +@@ -3018,7 +3018,7 @@ void synchronize_sched_expedited(void)
21675 if (ULONG_CMP_GE((ulong)s, (ulong)firstsnap)) {
21676 /* ensure test happens before caller kfree */
21677 - smp_mb__before_atomic_inc(); /* ^^^ */
21678 + smp_mb__before_atomic(); /* ^^^ */
21679 - atomic_long_inc(&rsp->expedited_workdone2);
21680 + atomic_long_inc_unchecked(&rsp->expedited_workdone2);
21681 return;
21682 }
21683
21684 -@@ -2821,10 +2821,10 @@ void synchronize_sched_expedited(void)
21685 +@@ -3030,10 +3030,10 @@ void synchronize_sched_expedited(void)
21686 * period works for us.
21687 */
21688 get_online_cpus();
21689 @@ -90060,7 +93704,7 @@ index 0c47e30..a084591 100644
21690
21691 /*
21692 * Everyone up to our most recent fetch is covered by our grace
21693 -@@ -2833,16 +2833,16 @@ void synchronize_sched_expedited(void)
21694 +@@ -3042,16 +3042,16 @@ void synchronize_sched_expedited(void)
21695 * than we did already did their update.
21696 */
21697 do {
21698 @@ -90069,7 +93713,7 @@ index 0c47e30..a084591 100644
21699 s = atomic_long_read(&rsp->expedited_done);
21700 if (ULONG_CMP_GE((ulong)s, (ulong)snap)) {
21701 /* ensure test happens before caller kfree */
21702 - smp_mb__before_atomic_inc(); /* ^^^ */
21703 + smp_mb__before_atomic(); /* ^^^ */
21704 - atomic_long_inc(&rsp->expedited_done_lost);
21705 + atomic_long_inc_unchecked(&rsp->expedited_done_lost);
21706 break;
21707 @@ -90080,7 +93724,7 @@ index 0c47e30..a084591 100644
21708
21709 put_online_cpus();
21710 }
21711 -@@ -3048,7 +3048,7 @@ static void _rcu_barrier(struct rcu_state *rsp)
21712 +@@ -3257,7 +3257,7 @@ static void _rcu_barrier(struct rcu_state *rsp)
21713 * ACCESS_ONCE() to prevent the compiler from speculating
21714 * the increment to precede the early-exit check.
21715 */
21716 @@ -90089,7 +93733,7 @@ index 0c47e30..a084591 100644
21717 WARN_ON_ONCE((rsp->n_barrier_done & 0x1) != 1);
21718 _rcu_barrier_trace(rsp, "Inc1", -1, rsp->n_barrier_done);
21719 smp_mb(); /* Order ->n_barrier_done increment with below mechanism. */
21720 -@@ -3098,7 +3098,7 @@ static void _rcu_barrier(struct rcu_state *rsp)
21721 +@@ -3307,7 +3307,7 @@ static void _rcu_barrier(struct rcu_state *rsp)
21722
21723 /* Increment ->n_barrier_done to prevent duplicate work. */
21724 smp_mb(); /* Keep increment after above mechanism. */
21725 @@ -90098,7 +93742,7 @@ index 0c47e30..a084591 100644
21726 WARN_ON_ONCE((rsp->n_barrier_done & 0x1) != 0);
21727 _rcu_barrier_trace(rsp, "Inc2", -1, rsp->n_barrier_done);
21728 smp_mb(); /* Keep increment before caller's subsequent code. */
21729 -@@ -3143,10 +3143,10 @@ rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp)
21730 +@@ -3352,10 +3352,10 @@ rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp)
21731 rdp->grpmask = 1UL << (cpu - rdp->mynode->grplo);
21732 init_callback_list(rdp);
21733 rdp->qlen_lazy = 0;
21734 @@ -90111,7 +93755,7 @@ index 0c47e30..a084591 100644
21735 rdp->cpu = cpu;
21736 rdp->rsp = rsp;
21737 rcu_boot_init_nocb_percpu_data(rdp);
21738 -@@ -3180,8 +3180,8 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp, int preemptible)
21739 +@@ -3388,8 +3388,8 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp)
21740 init_callback_list(rdp); /* Re-enable callbacks on this CPU. */
21741 rdp->dynticks->dynticks_nesting = DYNTICK_TASK_EXIT_IDLE;
21742 rcu_sysidle_init_percpu_data(rdp->dynticks);
21743 @@ -90123,7 +93767,7 @@ index 0c47e30..a084591 100644
21744
21745 /* Add CPU to rcu_node bitmasks. */
21746 diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h
21747 -index 75dc3c3..b95d624 100644
21748 +index 0f69a79..c85c2dc 100644
21749 --- a/kernel/rcu/tree.h
21750 +++ b/kernel/rcu/tree.h
21751 @@ -87,11 +87,11 @@ struct rcu_dynticks {
21752 @@ -90140,7 +93784,7 @@ index 75dc3c3..b95d624 100644
21753 /* "Idle" excludes userspace execution. */
21754 unsigned long dynticks_idle_jiffies;
21755 /* End of last non-NMI non-idle period. */
21756 -@@ -431,17 +431,17 @@ struct rcu_state {
21757 +@@ -435,17 +435,17 @@ struct rcu_state {
21758 /* _rcu_barrier(). */
21759 /* End of fields guarded by barrier_mutex. */
21760
21761 @@ -90170,10 +93814,10 @@ index 75dc3c3..b95d624 100644
21762 unsigned long jiffies_force_qs; /* Time at which to invoke */
21763 /* force_quiescent_state(). */
21764 diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h
21765 -index 962d1d5..c6c62d12d 100644
21766 +index 02ac0fb..4aa4a36 100644
21767 --- a/kernel/rcu/tree_plugin.h
21768 +++ b/kernel/rcu/tree_plugin.h
21769 -@@ -758,7 +758,7 @@ static int rcu_preempted_readers_exp(struct rcu_node *rnp)
21770 +@@ -735,7 +735,7 @@ static int rcu_preempted_readers_exp(struct rcu_node *rnp)
21771 static int sync_rcu_preempt_exp_done(struct rcu_node *rnp)
21772 {
21773 return !rcu_preempted_readers_exp(rnp) &&
21774 @@ -90182,7 +93826,7 @@ index 962d1d5..c6c62d12d 100644
21775 }
21776
21777 /*
21778 -@@ -920,7 +920,7 @@ void synchronize_rcu_expedited(void)
21779 +@@ -897,7 +897,7 @@ void synchronize_rcu_expedited(void)
21780
21781 /* Clean up and exit. */
21782 smp_mb(); /* ensure expedited GP seen before counter increment. */
21783 @@ -90191,7 +93835,7 @@ index 962d1d5..c6c62d12d 100644
21784 unlock_mb_ret:
21785 mutex_unlock(&sync_rcu_preempt_exp_mutex);
21786 mb_ret:
21787 -@@ -1496,7 +1496,7 @@ static void rcu_boost_kthread_setaffinity(struct rcu_node *rnp, int outgoingcpu)
21788 +@@ -1447,7 +1447,7 @@ static void rcu_boost_kthread_setaffinity(struct rcu_node *rnp, int outgoingcpu)
21789 free_cpumask_var(cm);
21790 }
21791
21792 @@ -90200,7 +93844,7 @@ index 962d1d5..c6c62d12d 100644
21793 .store = &rcu_cpu_kthread_task,
21794 .thread_should_run = rcu_cpu_kthread_should_run,
21795 .thread_fn = rcu_cpu_kthread,
21796 -@@ -1972,7 +1972,7 @@ static void print_cpu_stall_info(struct rcu_state *rsp, int cpu)
21797 +@@ -1926,7 +1926,7 @@ static void print_cpu_stall_info(struct rcu_state *rsp, int cpu)
21798 print_cpu_stall_fast_no_hz(fast_no_hz, cpu);
21799 pr_err("\t%d: (%lu %s) idle=%03x/%llx/%d softirq=%u/%u %s\n",
21800 cpu, ticks_value, ticks_title,
21801 @@ -90209,7 +93853,7 @@ index 962d1d5..c6c62d12d 100644
21802 rdtp->dynticks_nesting, rdtp->dynticks_nmi_nesting,
21803 rdp->softirq_snap, kstat_softirqs_cpu(RCU_SOFTIRQ, cpu),
21804 fast_no_hz);
21805 -@@ -2138,7 +2138,7 @@ static void __call_rcu_nocb_enqueue(struct rcu_data *rdp,
21806 +@@ -2079,7 +2079,7 @@ static void __call_rcu_nocb_enqueue(struct rcu_data *rdp,
21807
21808 /* Enqueue the callback on the nocb list and update counts. */
21809 old_rhpp = xchg(&rdp->nocb_tail, rhtp);
21810 @@ -90218,7 +93862,7 @@ index 962d1d5..c6c62d12d 100644
21811 atomic_long_add(rhcount, &rdp->nocb_q_count);
21812 atomic_long_add(rhcount_lazy, &rdp->nocb_q_count_lazy);
21813
21814 -@@ -2311,12 +2311,12 @@ static int rcu_nocb_kthread(void *arg)
21815 +@@ -2255,12 +2255,12 @@ static int rcu_nocb_kthread(void *arg)
21816 * Extract queued callbacks, update counts, and wait
21817 * for a grace period to elapse.
21818 */
21819 @@ -90234,7 +93878,7 @@ index 962d1d5..c6c62d12d 100644
21820 rcu_nocb_wait_gp(rdp);
21821
21822 /* Each pass through the following loop invokes a callback. */
21823 -@@ -2342,8 +2342,8 @@ static int rcu_nocb_kthread(void *arg)
21824 +@@ -2286,8 +2286,8 @@ static int rcu_nocb_kthread(void *arg)
21825 list = next;
21826 }
21827 trace_rcu_batch_end(rdp->rsp->name, c, !!list, 0, 0, 1);
21828 @@ -90245,7 +93889,7 @@ index 962d1d5..c6c62d12d 100644
21829 rdp->n_nocbs_invoked += c;
21830 }
21831 return 0;
21832 -@@ -2360,7 +2360,7 @@ static void do_nocb_deferred_wakeup(struct rcu_data *rdp)
21833 +@@ -2304,7 +2304,7 @@ static void do_nocb_deferred_wakeup(struct rcu_data *rdp)
21834 {
21835 if (!rcu_nocb_need_deferred_wakeup(rdp))
21836 return;
21837 @@ -90254,7 +93898,7 @@ index 962d1d5..c6c62d12d 100644
21838 wake_up(&rdp->nocb_wq);
21839 trace_rcu_nocb_wake(rdp->rsp->name, rdp->cpu, TPS("DeferredWakeEmpty"));
21840 }
21841 -@@ -2386,7 +2386,7 @@ static void __init rcu_spawn_nocb_kthreads(struct rcu_state *rsp)
21842 +@@ -2330,7 +2330,7 @@ static void __init rcu_spawn_nocb_kthreads(struct rcu_state *rsp)
21843 t = kthread_run(rcu_nocb_kthread, rdp,
21844 "rcuo%c/%d", rsp->abbr, cpu);
21845 BUG_ON(IS_ERR(t));
21846 @@ -90263,34 +93907,34 @@ index 962d1d5..c6c62d12d 100644
21847 }
21848 }
21849
21850 -@@ -2522,11 +2522,11 @@ static void rcu_sysidle_enter(struct rcu_dynticks *rdtp, int irq)
21851 +@@ -2461,11 +2461,11 @@ static void rcu_sysidle_enter(struct rcu_dynticks *rdtp, int irq)
21852
21853 /* Record start of fully idle period. */
21854 j = jiffies;
21855 - ACCESS_ONCE(rdtp->dynticks_idle_jiffies) = j;
21856 + ACCESS_ONCE_RW(rdtp->dynticks_idle_jiffies) = j;
21857 - smp_mb__before_atomic_inc();
21858 + smp_mb__before_atomic();
21859 - atomic_inc(&rdtp->dynticks_idle);
21860 + atomic_inc_unchecked(&rdtp->dynticks_idle);
21861 - smp_mb__after_atomic_inc();
21862 + smp_mb__after_atomic();
21863 - WARN_ON_ONCE(atomic_read(&rdtp->dynticks_idle) & 0x1);
21864 + WARN_ON_ONCE(atomic_read_unchecked(&rdtp->dynticks_idle) & 0x1);
21865 }
21866
21867 /*
21868 -@@ -2591,9 +2591,9 @@ static void rcu_sysidle_exit(struct rcu_dynticks *rdtp, int irq)
21869 +@@ -2530,9 +2530,9 @@ static void rcu_sysidle_exit(struct rcu_dynticks *rdtp, int irq)
21870
21871 /* Record end of idle period. */
21872 - smp_mb__before_atomic_inc();
21873 + smp_mb__before_atomic();
21874 - atomic_inc(&rdtp->dynticks_idle);
21875 + atomic_inc_unchecked(&rdtp->dynticks_idle);
21876 - smp_mb__after_atomic_inc();
21877 + smp_mb__after_atomic();
21878 - WARN_ON_ONCE(!(atomic_read(&rdtp->dynticks_idle) & 0x1));
21879 + WARN_ON_ONCE(!(atomic_read_unchecked(&rdtp->dynticks_idle) & 0x1));
21880
21881 /*
21882 * If we are the timekeeping CPU, we are permitted to be non-idle
21883 -@@ -2634,7 +2634,7 @@ static void rcu_sysidle_check_cpu(struct rcu_data *rdp, bool *isidle,
21884 +@@ -2573,7 +2573,7 @@ static void rcu_sysidle_check_cpu(struct rcu_data *rdp, bool *isidle,
21885 WARN_ON_ONCE(smp_processor_id() != tick_do_timer_cpu);
21886
21887 /* Pick up current idle and NMI-nesting counter and check. */
21888 @@ -90299,7 +93943,7 @@ index 962d1d5..c6c62d12d 100644
21889 if (cur & 0x1) {
21890 *isidle = false; /* We are not idle! */
21891 return;
21892 -@@ -2697,7 +2697,7 @@ static void rcu_sysidle(unsigned long j)
21893 +@@ -2622,7 +2622,7 @@ static void rcu_sysidle(unsigned long j)
21894 case RCU_SYSIDLE_NOT:
21895
21896 /* First time all are idle, so note a short idle period. */
21897 @@ -90308,16 +93952,16 @@ index 962d1d5..c6c62d12d 100644
21898 break;
21899
21900 case RCU_SYSIDLE_SHORT:
21901 -@@ -2734,7 +2734,7 @@ static void rcu_sysidle(unsigned long j)
21902 - static void rcu_sysidle_cancel(void)
21903 +@@ -2660,7 +2660,7 @@ static void rcu_sysidle_cancel(void)
21904 {
21905 smp_mb();
21906 -- ACCESS_ONCE(full_sysidle_state) = RCU_SYSIDLE_NOT;
21907 -+ ACCESS_ONCE_RW(full_sysidle_state) = RCU_SYSIDLE_NOT;
21908 + if (full_sysidle_state > RCU_SYSIDLE_SHORT)
21909 +- ACCESS_ONCE(full_sysidle_state) = RCU_SYSIDLE_NOT;
21910 ++ ACCESS_ONCE_RW(full_sysidle_state) = RCU_SYSIDLE_NOT;
21911 }
21912
21913 /*
21914 -@@ -2782,7 +2782,7 @@ static void rcu_sysidle_cb(struct rcu_head *rhp)
21915 +@@ -2708,7 +2708,7 @@ static void rcu_sysidle_cb(struct rcu_head *rhp)
21916 smp_mb(); /* grace period precedes setting inuse. */
21917
21918 rshp = container_of(rhp, struct rcu_sysidle_head, rh);
21919 @@ -90368,7 +94012,7 @@ index 5cdc62e..cc52e88 100644
21920 }
21921
21922 diff --git a/kernel/rcu/update.c b/kernel/rcu/update.c
21923 -index 4c0a9b0..7e81362 100644
21924 +index bc78835..7691a45 100644
21925 --- a/kernel/rcu/update.c
21926 +++ b/kernel/rcu/update.c
21927 @@ -311,10 +311,10 @@ int rcu_jiffies_till_stall_check(void)
21928 @@ -90385,7 +94029,7 @@ index 4c0a9b0..7e81362 100644
21929 }
21930 return till_stall_check * HZ + RCU_STALL_DELAY_DELTA;
21931 diff --git a/kernel/resource.c b/kernel/resource.c
21932 -index 8957d68..770cbe4 100644
21933 +index 3c2237a..4568d96 100644
21934 --- a/kernel/resource.c
21935 +++ b/kernel/resource.c
21936 @@ -152,8 +152,18 @@ static const struct file_operations proc_iomem_operations = {
21937 @@ -90461,10 +94105,10 @@ index a63f4dc..349bbb0 100644
21938 unsigned long timeout)
21939 {
21940 diff --git a/kernel/sched/core.c b/kernel/sched/core.c
21941 -index 8da7e49..ef10a02 100644
21942 +index bc1638b..a7638fc 100644
21943 --- a/kernel/sched/core.c
21944 +++ b/kernel/sched/core.c
21945 -@@ -1775,7 +1775,7 @@ void set_numabalancing_state(bool enabled)
21946 +@@ -1849,7 +1849,7 @@ void set_numabalancing_state(bool enabled)
21947 int sysctl_numa_balancing(struct ctl_table *table, int write,
21948 void __user *buffer, size_t *lenp, loff_t *ppos)
21949 {
21950 @@ -90473,7 +94117,7 @@ index 8da7e49..ef10a02 100644
21951 int err;
21952 int state = numabalancing_enabled;
21953
21954 -@@ -2238,8 +2238,10 @@ context_switch(struct rq *rq, struct task_struct *prev,
21955 +@@ -2312,8 +2312,10 @@ context_switch(struct rq *rq, struct task_struct *prev,
21956 next->active_mm = oldmm;
21957 atomic_inc(&oldmm->mm_count);
21958 enter_lazy_tlb(oldmm, next);
21959 @@ -90485,26 +94129,26 @@ index 8da7e49..ef10a02 100644
21960
21961 if (!prev->mm) {
21962 prev->active_mm = NULL;
21963 -@@ -3004,6 +3006,8 @@ int can_nice(const struct task_struct *p, const int nice)
21964 +@@ -3081,6 +3083,8 @@ int can_nice(const struct task_struct *p, const int nice)
21965 /* convert nice value [19,-20] to rlimit style value [1,40] */
21966 - int nice_rlim = 20 - nice;
21967 + int nice_rlim = nice_to_rlimit(nice);
21968
21969 + gr_learn_resource(p, RLIMIT_NICE, nice_rlim, 1);
21970 +
21971 return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) ||
21972 capable(CAP_SYS_NICE));
21973 }
21974 -@@ -3037,7 +3041,8 @@ SYSCALL_DEFINE1(nice, int, increment)
21975 - if (nice > MAX_NICE)
21976 - nice = MAX_NICE;
21977 +@@ -3107,7 +3111,8 @@ SYSCALL_DEFINE1(nice, int, increment)
21978 + nice = task_nice(current) + increment;
21979
21980 + nice = clamp_val(nice, MIN_NICE, MAX_NICE);
21981 - if (increment < 0 && !can_nice(current, nice))
21982 + if (increment < 0 && (!can_nice(current, nice) ||
21983 + gr_handle_chroot_nice()))
21984 return -EPERM;
21985
21986 retval = security_task_setnice(current, nice);
21987 -@@ -3310,6 +3315,7 @@ recheck:
21988 +@@ -3380,6 +3385,7 @@ recheck:
21989 if (policy != p->policy && !rlim_rtprio)
21990 return -EPERM;
21991
21992 @@ -90512,7 +94156,7 @@ index 8da7e49..ef10a02 100644
21993 /* can't increase priority */
21994 if (attr->sched_priority > p->rt_priority &&
21995 attr->sched_priority > rlim_rtprio)
21996 -@@ -4708,6 +4714,7 @@ void idle_task_exit(void)
21997 +@@ -4771,6 +4777,7 @@ void idle_task_exit(void)
21998
21999 if (mm != &init_mm) {
22000 switch_mm(mm, &init_mm, current);
22001 @@ -90520,7 +94164,7 @@ index 8da7e49..ef10a02 100644
22002 finish_arch_post_lock_switch();
22003 }
22004 mmdrop(mm);
22005 -@@ -4803,7 +4810,7 @@ static void migrate_tasks(unsigned int dead_cpu)
22006 +@@ -4866,7 +4873,7 @@ static void migrate_tasks(unsigned int dead_cpu)
22007
22008 #if defined(CONFIG_SCHED_DEBUG) && defined(CONFIG_SYSCTL)
22009
22010 @@ -90529,7 +94173,7 @@ index 8da7e49..ef10a02 100644
22011 {
22012 .procname = "sched_domain",
22013 .mode = 0555,
22014 -@@ -4820,17 +4827,17 @@ static struct ctl_table sd_ctl_root[] = {
22015 +@@ -4883,17 +4890,17 @@ static struct ctl_table sd_ctl_root[] = {
22016 {}
22017 };
22018
22019 @@ -90551,7 +94195,7 @@ index 8da7e49..ef10a02 100644
22020
22021 /*
22022 * In the intermediate directories, both the child directory and
22023 -@@ -4838,22 +4845,25 @@ static void sd_free_ctl_entry(struct ctl_table **tablep)
22024 +@@ -4901,22 +4908,25 @@ static void sd_free_ctl_entry(struct ctl_table **tablep)
22025 * will always be set. In the lowest directory the names are
22026 * static strings and all have proc handlers.
22027 */
22028 @@ -90583,7 +94227,7 @@ index 8da7e49..ef10a02 100644
22029 const char *procname, void *data, int maxlen,
22030 umode_t mode, proc_handler *proc_handler,
22031 bool load_idx)
22032 -@@ -4873,7 +4883,7 @@ set_table_entry(struct ctl_table *entry,
22033 +@@ -4936,7 +4946,7 @@ set_table_entry(struct ctl_table *entry,
22034 static struct ctl_table *
22035 sd_alloc_ctl_domain_table(struct sched_domain *sd)
22036 {
22037 @@ -90592,7 +94236,7 @@ index 8da7e49..ef10a02 100644
22038
22039 if (table == NULL)
22040 return NULL;
22041 -@@ -4911,9 +4921,9 @@ sd_alloc_ctl_domain_table(struct sched_domain *sd)
22042 +@@ -4974,9 +4984,9 @@ sd_alloc_ctl_domain_table(struct sched_domain *sd)
22043 return table;
22044 }
22045
22046 @@ -90604,7 +94248,7 @@ index 8da7e49..ef10a02 100644
22047 struct sched_domain *sd;
22048 int domain_num = 0, i;
22049 char buf[32];
22050 -@@ -4940,11 +4950,13 @@ static struct ctl_table_header *sd_sysctl_header;
22051 +@@ -5003,11 +5013,13 @@ static struct ctl_table_header *sd_sysctl_header;
22052 static void register_sched_domain_sysctl(void)
22053 {
22054 int i, cpu_num = num_possible_cpus();
22055 @@ -90619,7 +94263,7 @@ index 8da7e49..ef10a02 100644
22056
22057 if (entry == NULL)
22058 return;
22059 -@@ -4967,8 +4979,12 @@ static void unregister_sched_domain_sysctl(void)
22060 +@@ -5030,8 +5042,12 @@ static void unregister_sched_domain_sysctl(void)
22061 if (sd_sysctl_header)
22062 unregister_sysctl_table(sd_sysctl_header);
22063 sd_sysctl_header = NULL;
22064 @@ -90635,10 +94279,10 @@ index 8da7e49..ef10a02 100644
22065 #else
22066 static void register_sched_domain_sysctl(void)
22067 diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
22068 -index 8cbe2d2..61f20a1 100644
22069 +index fea7d33..84faa94 100644
22070 --- a/kernel/sched/fair.c
22071 +++ b/kernel/sched/fair.c
22072 -@@ -1806,7 +1806,7 @@ void task_numa_fault(int last_cpupid, int mem_node, int pages, int flags)
22073 +@@ -1857,7 +1857,7 @@ void task_numa_fault(int last_cpupid, int mem_node, int pages, int flags)
22074
22075 static void reset_ptenuma_scan(struct task_struct *p)
22076 {
22077 @@ -90647,7 +94291,7 @@ index 8cbe2d2..61f20a1 100644
22078 p->mm->numa_scan_offset = 0;
22079 }
22080
22081 -@@ -7181,7 +7181,7 @@ static void nohz_idle_balance(struct rq *this_rq, enum cpu_idle_type idle) { }
22082 +@@ -7289,7 +7289,7 @@ static void nohz_idle_balance(struct rq *this_rq, enum cpu_idle_type idle) { }
22083 * run_rebalance_domains is triggered when needed from the scheduler tick.
22084 * Also triggered for nohz idle balancing (with nohz_balancing_kick set).
22085 */
22086 @@ -90657,10 +94301,10 @@ index 8cbe2d2..61f20a1 100644
22087 struct rq *this_rq = this_rq();
22088 enum cpu_idle_type idle = this_rq->idle_balance ?
22089 diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
22090 -index 369b4d6..fa4eb3b 100644
22091 +index 31cc02e..734fb85 100644
22092 --- a/kernel/sched/sched.h
22093 +++ b/kernel/sched/sched.h
22094 -@@ -1157,7 +1157,7 @@ struct sched_class {
22095 +@@ -1153,7 +1153,7 @@ struct sched_class {
22096 #ifdef CONFIG_FAIR_GROUP_SCHED
22097 void (*task_move_group) (struct task_struct *p, int on_rq);
22098 #endif
22099 @@ -90669,8 +94313,351 @@ index 369b4d6..fa4eb3b 100644
22100
22101 static inline void put_prev_task(struct rq *rq, struct task_struct *prev)
22102 {
22103 +diff --git a/kernel/seccomp.c b/kernel/seccomp.c
22104 +index 301bbc2..eda2da3 100644
22105 +--- a/kernel/seccomp.c
22106 ++++ b/kernel/seccomp.c
22107 +@@ -39,7 +39,7 @@
22108 + * is only needed for handling filters shared across tasks.
22109 + * @prev: points to a previously installed, or inherited, filter
22110 + * @len: the number of instructions in the program
22111 +- * @insnsi: the BPF program instructions to evaluate
22112 ++ * @insns: the BPF program instructions to evaluate
22113 + *
22114 + * seccomp_filter objects are organized in a tree linked via the @prev
22115 + * pointer. For any task, it appears to be a singly-linked list starting
22116 +@@ -54,32 +54,61 @@
22117 + struct seccomp_filter {
22118 + atomic_t usage;
22119 + struct seccomp_filter *prev;
22120 +- struct sk_filter *prog;
22121 ++ unsigned short len; /* Instruction count */
22122 ++ struct sock_filter insns[];
22123 + };
22124 +
22125 + /* Limit any path through the tree to 256KB worth of instructions. */
22126 + #define MAX_INSNS_PER_PATH ((1 << 18) / sizeof(struct sock_filter))
22127 +
22128 +-/*
22129 ++/**
22130 ++ * get_u32 - returns a u32 offset into data
22131 ++ * @data: a unsigned 64 bit value
22132 ++ * @index: 0 or 1 to return the first or second 32-bits
22133 ++ *
22134 ++ * This inline exists to hide the length of unsigned long. If a 32-bit
22135 ++ * unsigned long is passed in, it will be extended and the top 32-bits will be
22136 ++ * 0. If it is a 64-bit unsigned long, then whatever data is resident will be
22137 ++ * properly returned.
22138 ++ *
22139 + * Endianness is explicitly ignored and left for BPF program authors to manage
22140 + * as per the specific architecture.
22141 + */
22142 +-static void populate_seccomp_data(struct seccomp_data *sd)
22143 ++static inline u32 get_u32(u64 data, int index)
22144 + {
22145 +- struct task_struct *task = current;
22146 +- struct pt_regs *regs = task_pt_regs(task);
22147 +- unsigned long args[6];
22148 ++ return ((u32 *)&data)[index];
22149 ++}
22150 +
22151 +- sd->nr = syscall_get_nr(task, regs);
22152 +- sd->arch = syscall_get_arch();
22153 +- syscall_get_arguments(task, regs, 0, 6, args);
22154 +- sd->args[0] = args[0];
22155 +- sd->args[1] = args[1];
22156 +- sd->args[2] = args[2];
22157 +- sd->args[3] = args[3];
22158 +- sd->args[4] = args[4];
22159 +- sd->args[5] = args[5];
22160 +- sd->instruction_pointer = KSTK_EIP(task);
22161 ++/* Helper for bpf_load below. */
22162 ++#define BPF_DATA(_name) offsetof(struct seccomp_data, _name)
22163 ++/**
22164 ++ * bpf_load: checks and returns a pointer to the requested offset
22165 ++ * @off: offset into struct seccomp_data to load from
22166 ++ *
22167 ++ * Returns the requested 32-bits of data.
22168 ++ * seccomp_check_filter() should assure that @off is 32-bit aligned
22169 ++ * and not out of bounds. Failure to do so is a BUG.
22170 ++ */
22171 ++u32 seccomp_bpf_load(int off)
22172 ++{
22173 ++ struct pt_regs *regs = task_pt_regs(current);
22174 ++ if (off == BPF_DATA(nr))
22175 ++ return syscall_get_nr(current, regs);
22176 ++ if (off == BPF_DATA(arch))
22177 ++ return syscall_get_arch();
22178 ++ if (off >= BPF_DATA(args[0]) && off < BPF_DATA(args[6])) {
22179 ++ unsigned long value;
22180 ++ int arg = (off - BPF_DATA(args[0])) / sizeof(u64);
22181 ++ int index = !!(off % sizeof(u64));
22182 ++ syscall_get_arguments(current, regs, arg, 1, &value);
22183 ++ return get_u32(value, index);
22184 ++ }
22185 ++ if (off == BPF_DATA(instruction_pointer))
22186 ++ return get_u32(KSTK_EIP(current), 0);
22187 ++ if (off == BPF_DATA(instruction_pointer) + sizeof(u32))
22188 ++ return get_u32(KSTK_EIP(current), 1);
22189 ++ /* seccomp_check_filter should make this impossible. */
22190 ++ BUG();
22191 + }
22192 +
22193 + /**
22194 +@@ -103,59 +132,59 @@ static int seccomp_check_filter(struct sock_filter *filter, unsigned int flen)
22195 + u32 k = ftest->k;
22196 +
22197 + switch (code) {
22198 +- case BPF_LD | BPF_W | BPF_ABS:
22199 +- ftest->code = BPF_LDX | BPF_W | BPF_ABS;
22200 ++ case BPF_S_LD_W_ABS:
22201 ++ ftest->code = BPF_S_ANC_SECCOMP_LD_W;
22202 + /* 32-bit aligned and not out of bounds. */
22203 + if (k >= sizeof(struct seccomp_data) || k & 3)
22204 + return -EINVAL;
22205 + continue;
22206 +- case BPF_LD | BPF_W | BPF_LEN:
22207 +- ftest->code = BPF_LD | BPF_IMM;
22208 ++ case BPF_S_LD_W_LEN:
22209 ++ ftest->code = BPF_S_LD_IMM;
22210 + ftest->k = sizeof(struct seccomp_data);
22211 + continue;
22212 +- case BPF_LDX | BPF_W | BPF_LEN:
22213 +- ftest->code = BPF_LDX | BPF_IMM;
22214 ++ case BPF_S_LDX_W_LEN:
22215 ++ ftest->code = BPF_S_LDX_IMM;
22216 + ftest->k = sizeof(struct seccomp_data);
22217 + continue;
22218 + /* Explicitly include allowed calls. */
22219 +- case BPF_RET | BPF_K:
22220 +- case BPF_RET | BPF_A:
22221 +- case BPF_ALU | BPF_ADD | BPF_K:
22222 +- case BPF_ALU | BPF_ADD | BPF_X:
22223 +- case BPF_ALU | BPF_SUB | BPF_K:
22224 +- case BPF_ALU | BPF_SUB | BPF_X:
22225 +- case BPF_ALU | BPF_MUL | BPF_K:
22226 +- case BPF_ALU | BPF_MUL | BPF_X:
22227 +- case BPF_ALU | BPF_DIV | BPF_K:
22228 +- case BPF_ALU | BPF_DIV | BPF_X:
22229 +- case BPF_ALU | BPF_AND | BPF_K:
22230 +- case BPF_ALU | BPF_AND | BPF_X:
22231 +- case BPF_ALU | BPF_OR | BPF_K:
22232 +- case BPF_ALU | BPF_OR | BPF_X:
22233 +- case BPF_ALU | BPF_XOR | BPF_K:
22234 +- case BPF_ALU | BPF_XOR | BPF_X:
22235 +- case BPF_ALU | BPF_LSH | BPF_K:
22236 +- case BPF_ALU | BPF_LSH | BPF_X:
22237 +- case BPF_ALU | BPF_RSH | BPF_K:
22238 +- case BPF_ALU | BPF_RSH | BPF_X:
22239 +- case BPF_ALU | BPF_NEG:
22240 +- case BPF_LD | BPF_IMM:
22241 +- case BPF_LDX | BPF_IMM:
22242 +- case BPF_MISC | BPF_TAX:
22243 +- case BPF_MISC | BPF_TXA:
22244 +- case BPF_LD | BPF_MEM:
22245 +- case BPF_LDX | BPF_MEM:
22246 +- case BPF_ST:
22247 +- case BPF_STX:
22248 +- case BPF_JMP | BPF_JA:
22249 +- case BPF_JMP | BPF_JEQ | BPF_K:
22250 +- case BPF_JMP | BPF_JEQ | BPF_X:
22251 +- case BPF_JMP | BPF_JGE | BPF_K:
22252 +- case BPF_JMP | BPF_JGE | BPF_X:
22253 +- case BPF_JMP | BPF_JGT | BPF_K:
22254 +- case BPF_JMP | BPF_JGT | BPF_X:
22255 +- case BPF_JMP | BPF_JSET | BPF_K:
22256 +- case BPF_JMP | BPF_JSET | BPF_X:
22257 ++ case BPF_S_RET_K:
22258 ++ case BPF_S_RET_A:
22259 ++ case BPF_S_ALU_ADD_K:
22260 ++ case BPF_S_ALU_ADD_X:
22261 ++ case BPF_S_ALU_SUB_K:
22262 ++ case BPF_S_ALU_SUB_X:
22263 ++ case BPF_S_ALU_MUL_K:
22264 ++ case BPF_S_ALU_MUL_X:
22265 ++ case BPF_S_ALU_DIV_X:
22266 ++ case BPF_S_ALU_AND_K:
22267 ++ case BPF_S_ALU_AND_X:
22268 ++ case BPF_S_ALU_OR_K:
22269 ++ case BPF_S_ALU_OR_X:
22270 ++ case BPF_S_ALU_XOR_K:
22271 ++ case BPF_S_ALU_XOR_X:
22272 ++ case BPF_S_ALU_LSH_K:
22273 ++ case BPF_S_ALU_LSH_X:
22274 ++ case BPF_S_ALU_RSH_K:
22275 ++ case BPF_S_ALU_RSH_X:
22276 ++ case BPF_S_ALU_NEG:
22277 ++ case BPF_S_LD_IMM:
22278 ++ case BPF_S_LDX_IMM:
22279 ++ case BPF_S_MISC_TAX:
22280 ++ case BPF_S_MISC_TXA:
22281 ++ case BPF_S_ALU_DIV_K:
22282 ++ case BPF_S_LD_MEM:
22283 ++ case BPF_S_LDX_MEM:
22284 ++ case BPF_S_ST:
22285 ++ case BPF_S_STX:
22286 ++ case BPF_S_JMP_JA:
22287 ++ case BPF_S_JMP_JEQ_K:
22288 ++ case BPF_S_JMP_JEQ_X:
22289 ++ case BPF_S_JMP_JGE_K:
22290 ++ case BPF_S_JMP_JGE_X:
22291 ++ case BPF_S_JMP_JGT_K:
22292 ++ case BPF_S_JMP_JGT_X:
22293 ++ case BPF_S_JMP_JSET_K:
22294 ++ case BPF_S_JMP_JSET_X:
22295 + continue;
22296 + default:
22297 + return -EINVAL;
22298 +@@ -173,22 +202,18 @@ static int seccomp_check_filter(struct sock_filter *filter, unsigned int flen)
22299 + static u32 seccomp_run_filters(int syscall)
22300 + {
22301 + struct seccomp_filter *f;
22302 +- struct seccomp_data sd;
22303 + u32 ret = SECCOMP_RET_ALLOW;
22304 +
22305 + /* Ensure unexpected behavior doesn't result in failing open. */
22306 + if (WARN_ON(current->seccomp.filter == NULL))
22307 + return SECCOMP_RET_KILL;
22308 +
22309 +- populate_seccomp_data(&sd);
22310 +-
22311 + /*
22312 + * All filters in the list are evaluated and the lowest BPF return
22313 + * value always takes priority (ignoring the DATA).
22314 + */
22315 + for (f = current->seccomp.filter; f; f = f->prev) {
22316 +- u32 cur_ret = SK_RUN_FILTER(f->prog, (void *)&sd);
22317 +-
22318 ++ u32 cur_ret = sk_run_filter(NULL, f->insns);
22319 + if ((cur_ret & SECCOMP_RET_ACTION) < (ret & SECCOMP_RET_ACTION))
22320 + ret = cur_ret;
22321 + }
22322 +@@ -206,20 +231,18 @@ static long seccomp_attach_filter(struct sock_fprog *fprog)
22323 + struct seccomp_filter *filter;
22324 + unsigned long fp_size = fprog->len * sizeof(struct sock_filter);
22325 + unsigned long total_insns = fprog->len;
22326 +- struct sock_filter *fp;
22327 +- int new_len;
22328 + long ret;
22329 +
22330 + if (fprog->len == 0 || fprog->len > BPF_MAXINSNS)
22331 + return -EINVAL;
22332 +
22333 + for (filter = current->seccomp.filter; filter; filter = filter->prev)
22334 +- total_insns += filter->prog->len + 4; /* include a 4 instr penalty */
22335 ++ total_insns += filter->len + 4; /* include a 4 instr penalty */
22336 + if (total_insns > MAX_INSNS_PER_PATH)
22337 + return -ENOMEM;
22338 +
22339 + /*
22340 +- * Installing a seccomp filter requires that the task has
22341 ++ * Installing a seccomp filter requires that the task have
22342 + * CAP_SYS_ADMIN in its namespace or be running with no_new_privs.
22343 + * This avoids scenarios where unprivileged tasks can affect the
22344 + * behavior of privileged children.
22345 +@@ -229,51 +252,28 @@ static long seccomp_attach_filter(struct sock_fprog *fprog)
22346 + CAP_SYS_ADMIN) != 0)
22347 + return -EACCES;
22348 +
22349 +- fp = kzalloc(fp_size, GFP_KERNEL|__GFP_NOWARN);
22350 +- if (!fp)
22351 +- return -ENOMEM;
22352 +-
22353 +- /* Copy the instructions from fprog. */
22354 +- ret = -EFAULT;
22355 +- if (copy_from_user(fp, fprog->filter, fp_size))
22356 +- goto free_prog;
22357 +-
22358 +- /* Check and rewrite the fprog via the skb checker */
22359 +- ret = sk_chk_filter(fp, fprog->len);
22360 +- if (ret)
22361 +- goto free_prog;
22362 +-
22363 +- /* Check and rewrite the fprog for seccomp use */
22364 +- ret = seccomp_check_filter(fp, fprog->len);
22365 +- if (ret)
22366 +- goto free_prog;
22367 +-
22368 +- /* Convert 'sock_filter' insns to 'sock_filter_int' insns */
22369 +- ret = sk_convert_filter(fp, fprog->len, NULL, &new_len);
22370 +- if (ret)
22371 +- goto free_prog;
22372 +-
22373 + /* Allocate a new seccomp_filter */
22374 +- ret = -ENOMEM;
22375 +- filter = kzalloc(sizeof(struct seccomp_filter),
22376 ++ filter = kzalloc(sizeof(struct seccomp_filter) + fp_size,
22377 + GFP_KERNEL|__GFP_NOWARN);
22378 + if (!filter)
22379 +- goto free_prog;
22380 +-
22381 +- filter->prog = kzalloc(sk_filter_size(new_len),
22382 +- GFP_KERNEL|__GFP_NOWARN);
22383 +- if (!filter->prog)
22384 +- goto free_filter;
22385 +-
22386 +- ret = sk_convert_filter(fp, fprog->len, filter->prog->insnsi, &new_len);
22387 +- if (ret)
22388 +- goto free_filter_prog;
22389 +- kfree(fp);
22390 +-
22391 ++ return -ENOMEM;
22392 + atomic_set(&filter->usage, 1);
22393 +- filter->prog->len = new_len;
22394 ++ filter->len = fprog->len;
22395 +
22396 +- sk_filter_select_runtime(filter->prog);
22397 ++ /* Copy the instructions from fprog. */
22398 ++ ret = -EFAULT;
22399 ++ if (copy_from_user(filter->insns, fprog->filter, fp_size))
22400 ++ goto fail;
22401 ++
22402 ++ /* Check and rewrite the fprog via the skb checker */
22403 ++ ret = sk_chk_filter(filter->insns, filter->len);
22404 ++ if (ret)
22405 ++ goto fail;
22406 ++
22407 ++ /* Check and rewrite the fprog for seccomp use */
22408 ++ ret = seccomp_check_filter(filter->insns, filter->len);
22409 ++ if (ret)
22410 ++ goto fail;
22411 +
22412 + /*
22413 + * If there is an existing filter, make it the prev and don't drop its
22414 +@@ -282,13 +282,8 @@ static long seccomp_attach_filter(struct sock_fprog *fprog)
22415 + filter->prev = current->seccomp.filter;
22416 + current->seccomp.filter = filter;
22417 + return 0;
22418 +-
22419 +-free_filter_prog:
22420 +- kfree(filter->prog);
22421 +-free_filter:
22422 ++fail:
22423 + kfree(filter);
22424 +-free_prog:
22425 +- kfree(fp);
22426 + return ret;
22427 + }
22428 +
22429 +@@ -298,7 +293,7 @@ free_prog:
22430 + *
22431 + * Returns 0 on success and non-zero otherwise.
22432 + */
22433 +-static long seccomp_attach_user_filter(char __user *user_filter)
22434 ++long seccomp_attach_user_filter(char __user *user_filter)
22435 + {
22436 + struct sock_fprog fprog;
22437 + long ret = -EFAULT;
22438 +@@ -337,7 +332,6 @@ void put_seccomp_filter(struct task_struct *tsk)
22439 + while (orig && atomic_dec_and_test(&orig->usage)) {
22440 + struct seccomp_filter *freeme = orig;
22441 + orig = orig->prev;
22442 +- sk_filter_free(freeme->prog);
22443 + kfree(freeme);
22444 + }
22445 + }
22446 diff --git a/kernel/signal.c b/kernel/signal.c
22447 -index 6ea13c0..31e3b25 100644
22448 +index a4077e9..f0d4e5c 100644
22449 --- a/kernel/signal.c
22450 +++ b/kernel/signal.c
22451 @@ -53,12 +53,12 @@ static struct kmem_cache *sigqueue_cachep;
22452 @@ -90697,7 +94684,7 @@ index 6ea13c0..31e3b25 100644
22453
22454 handler = sig_handler(t, sig);
22455
22456 -@@ -371,6 +371,9 @@ __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimi
22457 +@@ -372,6 +372,9 @@ __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimi
22458 atomic_inc(&user->sigpending);
22459 rcu_read_unlock();
22460
22461 @@ -90707,7 +94694,7 @@ index 6ea13c0..31e3b25 100644
22462 if (override_rlimit ||
22463 atomic_read(&user->sigpending) <=
22464 task_rlimit(t, RLIMIT_SIGPENDING)) {
22465 -@@ -498,7 +501,7 @@ flush_signal_handlers(struct task_struct *t, int force_default)
22466 +@@ -499,7 +502,7 @@ flush_signal_handlers(struct task_struct *t, int force_default)
22467
22468 int unhandled_signal(struct task_struct *tsk, int sig)
22469 {
22470 @@ -90716,7 +94703,7 @@ index 6ea13c0..31e3b25 100644
22471 if (is_global_init(tsk))
22472 return 1;
22473 if (handler != SIG_IGN && handler != SIG_DFL)
22474 -@@ -818,6 +821,13 @@ static int check_kill_permission(int sig, struct siginfo *info,
22475 +@@ -793,6 +796,13 @@ static int check_kill_permission(int sig, struct siginfo *info,
22476 }
22477 }
22478
22479 @@ -90730,7 +94717,7 @@ index 6ea13c0..31e3b25 100644
22480 return security_task_kill(t, info, sig, 0);
22481 }
22482
22483 -@@ -1201,7 +1211,7 @@ __group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p)
22484 +@@ -1176,7 +1186,7 @@ __group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p)
22485 return send_signal(sig, info, p, 1);
22486 }
22487
22488 @@ -90739,7 +94726,7 @@ index 6ea13c0..31e3b25 100644
22489 specific_send_sig_info(int sig, struct siginfo *info, struct task_struct *t)
22490 {
22491 return send_signal(sig, info, t, 0);
22492 -@@ -1238,6 +1248,7 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t)
22493 +@@ -1213,6 +1223,7 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t)
22494 unsigned long int flags;
22495 int ret, blocked, ignored;
22496 struct k_sigaction *action;
22497 @@ -90747,7 +94734,7 @@ index 6ea13c0..31e3b25 100644
22498
22499 spin_lock_irqsave(&t->sighand->siglock, flags);
22500 action = &t->sighand->action[sig-1];
22501 -@@ -1252,9 +1263,18 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t)
22502 +@@ -1227,9 +1238,18 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t)
22503 }
22504 if (action->sa.sa_handler == SIG_DFL)
22505 t->signal->flags &= ~SIGNAL_UNKILLABLE;
22506 @@ -90766,7 +94753,7 @@ index 6ea13c0..31e3b25 100644
22507 return ret;
22508 }
22509
22510 -@@ -1321,8 +1341,11 @@ int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p)
22511 +@@ -1296,8 +1316,11 @@ int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p)
22512 ret = check_kill_permission(sig, info, p);
22513 rcu_read_unlock();
22514
22515 @@ -90779,7 +94766,7 @@ index 6ea13c0..31e3b25 100644
22516
22517 return ret;
22518 }
22519 -@@ -2928,7 +2951,15 @@ do_send_specific(pid_t tgid, pid_t pid, int sig, struct siginfo *info)
22520 +@@ -2903,7 +2926,15 @@ do_send_specific(pid_t tgid, pid_t pid, int sig, struct siginfo *info)
22521 int error = -ESRCH;
22522
22523 rcu_read_lock();
22524 @@ -90796,7 +94783,7 @@ index 6ea13c0..31e3b25 100644
22525 if (p && (tgid <= 0 || task_tgid_vnr(p) == tgid)) {
22526 error = check_kill_permission(sig, info, p);
22527 /*
22528 -@@ -3241,8 +3272,8 @@ COMPAT_SYSCALL_DEFINE2(sigaltstack,
22529 +@@ -3236,8 +3267,8 @@ COMPAT_SYSCALL_DEFINE2(sigaltstack,
22530 }
22531 seg = get_fs();
22532 set_fs(KERNEL_DS);
22533 @@ -90830,7 +94817,7 @@ index eb89e18..a4e6792 100644
22534 mutex_unlock(&smpboot_threads_lock);
22535 put_online_cpus();
22536 diff --git a/kernel/softirq.c b/kernel/softirq.c
22537 -index 92f24f5..db41501 100644
22538 +index 5918d22..e95d1926 100644
22539 --- a/kernel/softirq.c
22540 +++ b/kernel/softirq.c
22541 @@ -53,7 +53,7 @@ irq_cpustat_t irq_stat[NR_CPUS] ____cacheline_aligned;
22542 @@ -90842,7 +94829,7 @@ index 92f24f5..db41501 100644
22543
22544 DEFINE_PER_CPU(struct task_struct *, ksoftirqd);
22545
22546 -@@ -268,7 +268,7 @@ restart:
22547 +@@ -266,7 +266,7 @@ restart:
22548 kstat_incr_softirqs_this_cpu(vec_nr);
22549
22550 trace_softirq_entry(vec_nr);
22551 @@ -90851,7 +94838,7 @@ index 92f24f5..db41501 100644
22552 trace_softirq_exit(vec_nr);
22553 if (unlikely(prev_count != preempt_count())) {
22554 pr_err("huh, entered softirq %u %s %p with preempt_count %08x, exited with %08x?\n",
22555 -@@ -428,7 +428,7 @@ void __raise_softirq_irqoff(unsigned int nr)
22556 +@@ -426,7 +426,7 @@ void __raise_softirq_irqoff(unsigned int nr)
22557 or_softirq_pending(1UL << nr);
22558 }
22559
22560 @@ -90860,7 +94847,7 @@ index 92f24f5..db41501 100644
22561 {
22562 softirq_vec[nr].action = action;
22563 }
22564 -@@ -480,7 +480,7 @@ void __tasklet_hi_schedule_first(struct tasklet_struct *t)
22565 +@@ -478,7 +478,7 @@ void __tasklet_hi_schedule_first(struct tasklet_struct *t)
22566 }
22567 EXPORT_SYMBOL(__tasklet_hi_schedule_first);
22568
22569 @@ -90869,7 +94856,7 @@ index 92f24f5..db41501 100644
22570 {
22571 struct tasklet_struct *list;
22572
22573 -@@ -516,7 +516,7 @@ static void tasklet_action(struct softirq_action *a)
22574 +@@ -514,7 +514,7 @@ static void tasklet_action(struct softirq_action *a)
22575 }
22576 }
22577
22578 @@ -90878,7 +94865,7 @@ index 92f24f5..db41501 100644
22579 {
22580 struct tasklet_struct *list;
22581
22582 -@@ -743,7 +743,7 @@ static struct notifier_block cpu_nfb = {
22583 +@@ -741,7 +741,7 @@ static struct notifier_block cpu_nfb = {
22584 .notifier_call = cpu_callback
22585 };
22586
22587 @@ -90888,7 +94875,7 @@ index 92f24f5..db41501 100644
22588 .thread_should_run = ksoftirqd_should_run,
22589 .thread_fn = run_ksoftirqd,
22590 diff --git a/kernel/sys.c b/kernel/sys.c
22591 -index fba0f29..84400e2 100644
22592 +index 66a751e..a42497e 100644
22593 --- a/kernel/sys.c
22594 +++ b/kernel/sys.c
22595 @@ -148,6 +148,12 @@ static int set_one_prio(struct task_struct *p, int niceval, int error)
22596 @@ -90904,17 +94891,28 @@ index fba0f29..84400e2 100644
22597 no_nice = security_task_setnice(p, niceval);
22598 if (no_nice) {
22599 error = no_nice;
22600 -@@ -351,6 +357,9 @@ SYSCALL_DEFINE2(setregid, gid_t, rgid, gid_t, egid)
22601 +@@ -351,6 +357,20 @@ SYSCALL_DEFINE2(setregid, gid_t, rgid, gid_t, egid)
22602 goto error;
22603 }
22604
22605 + if (gr_check_group_change(new->gid, new->egid, INVALID_GID))
22606 + goto error;
22607 +
22608 ++ if (!gid_eq(new->gid, old->gid)) {
22609 ++ /* make sure we generate a learn log for what will
22610 ++ end up being a role transition after a full-learning
22611 ++ policy is generated
22612 ++ CAP_SETGID is required to perform a transition
22613 ++ we may not log a CAP_SETGID check above, e.g.
22614 ++ in the case where new rgid = old egid
22615 ++ */
22616 ++ gr_learn_cap(current, new, CAP_SETGID);
22617 ++ }
22618 ++
22619 if (rgid != (gid_t) -1 ||
22620 (egid != (gid_t) -1 && !gid_eq(kegid, old->gid)))
22621 new->sgid = new->egid;
22622 -@@ -386,6 +395,10 @@ SYSCALL_DEFINE1(setgid, gid_t, gid)
22623 +@@ -386,6 +406,10 @@ SYSCALL_DEFINE1(setgid, gid_t, gid)
22624 old = current_cred();
22625
22626 retval = -EPERM;
22627 @@ -90925,7 +94923,7 @@ index fba0f29..84400e2 100644
22628 if (ns_capable(old->user_ns, CAP_SETGID))
22629 new->gid = new->egid = new->sgid = new->fsgid = kgid;
22630 else if (gid_eq(kgid, old->gid) || gid_eq(kgid, old->sgid))
22631 -@@ -403,7 +416,7 @@ error:
22632 +@@ -403,7 +427,7 @@ error:
22633 /*
22634 * change the user struct in a credentials set to match the new UID
22635 */
22636 @@ -90934,7 +94932,7 @@ index fba0f29..84400e2 100644
22637 {
22638 struct user_struct *new_user;
22639
22640 -@@ -483,6 +496,9 @@ SYSCALL_DEFINE2(setreuid, uid_t, ruid, uid_t, euid)
22641 +@@ -483,7 +507,18 @@ SYSCALL_DEFINE2(setreuid, uid_t, ruid, uid_t, euid)
22642 goto error;
22643 }
22644
22645 @@ -90942,9 +94940,18 @@ index fba0f29..84400e2 100644
22646 + goto error;
22647 +
22648 if (!uid_eq(new->uid, old->uid)) {
22649 ++ /* make sure we generate a learn log for what will
22650 ++ end up being a role transition after a full-learning
22651 ++ policy is generated
22652 ++ CAP_SETUID is required to perform a transition
22653 ++ we may not log a CAP_SETUID check above, e.g.
22654 ++ in the case where new ruid = old euid
22655 ++ */
22656 ++ gr_learn_cap(current, new, CAP_SETUID);
22657 retval = set_user(new);
22658 if (retval < 0)
22659 -@@ -533,6 +549,12 @@ SYSCALL_DEFINE1(setuid, uid_t, uid)
22660 + goto error;
22661 +@@ -533,6 +568,12 @@ SYSCALL_DEFINE1(setuid, uid_t, uid)
22662 old = current_cred();
22663
22664 retval = -EPERM;
22665 @@ -90957,7 +94964,7 @@ index fba0f29..84400e2 100644
22666 if (ns_capable(old->user_ns, CAP_SETUID)) {
22667 new->suid = new->uid = kuid;
22668 if (!uid_eq(kuid, old->uid)) {
22669 -@@ -602,6 +624,9 @@ SYSCALL_DEFINE3(setresuid, uid_t, ruid, uid_t, euid, uid_t, suid)
22670 +@@ -602,6 +643,9 @@ SYSCALL_DEFINE3(setresuid, uid_t, ruid, uid_t, euid, uid_t, suid)
22671 goto error;
22672 }
22673
22674 @@ -90967,7 +94974,7 @@ index fba0f29..84400e2 100644
22675 if (ruid != (uid_t) -1) {
22676 new->uid = kruid;
22677 if (!uid_eq(kruid, old->uid)) {
22678 -@@ -684,6 +709,9 @@ SYSCALL_DEFINE3(setresgid, gid_t, rgid, gid_t, egid, gid_t, sgid)
22679 +@@ -684,6 +728,9 @@ SYSCALL_DEFINE3(setresgid, gid_t, rgid, gid_t, egid, gid_t, sgid)
22680 goto error;
22681 }
22682
22683 @@ -90977,7 +94984,7 @@ index fba0f29..84400e2 100644
22684 if (rgid != (gid_t) -1)
22685 new->gid = krgid;
22686 if (egid != (gid_t) -1)
22687 -@@ -745,12 +773,16 @@ SYSCALL_DEFINE1(setfsuid, uid_t, uid)
22688 +@@ -745,12 +792,16 @@ SYSCALL_DEFINE1(setfsuid, uid_t, uid)
22689 uid_eq(kuid, old->suid) || uid_eq(kuid, old->fsuid) ||
22690 ns_capable(old->user_ns, CAP_SETUID)) {
22691 if (!uid_eq(kuid, old->fsuid)) {
22692 @@ -90994,7 +95001,7 @@ index fba0f29..84400e2 100644
22693 abort_creds(new);
22694 return old_fsuid;
22695
22696 -@@ -783,12 +815,16 @@ SYSCALL_DEFINE1(setfsgid, gid_t, gid)
22697 +@@ -783,12 +834,16 @@ SYSCALL_DEFINE1(setfsgid, gid_t, gid)
22698 if (gid_eq(kgid, old->gid) || gid_eq(kgid, old->egid) ||
22699 gid_eq(kgid, old->sgid) || gid_eq(kgid, old->fsgid) ||
22700 ns_capable(old->user_ns, CAP_SETGID)) {
22701 @@ -91011,7 +95018,7 @@ index fba0f29..84400e2 100644
22702 abort_creds(new);
22703 return old_fsgid;
22704
22705 -@@ -1167,19 +1203,19 @@ SYSCALL_DEFINE1(olduname, struct oldold_utsname __user *, name)
22706 +@@ -1167,19 +1222,19 @@ SYSCALL_DEFINE1(olduname, struct oldold_utsname __user *, name)
22707 return -EFAULT;
22708
22709 down_read(&uts_sem);
22710 @@ -91036,7 +95043,7 @@ index fba0f29..84400e2 100644
22711 __OLD_UTS_LEN);
22712 error |= __put_user(0, name->machine + __OLD_UTS_LEN);
22713 up_read(&uts_sem);
22714 -@@ -1381,6 +1417,13 @@ int do_prlimit(struct task_struct *tsk, unsigned int resource,
22715 +@@ -1381,6 +1436,13 @@ int do_prlimit(struct task_struct *tsk, unsigned int resource,
22716 */
22717 new_rlim->rlim_cur = 1;
22718 }
22719 @@ -91051,7 +95058,7 @@ index fba0f29..84400e2 100644
22720 if (!retval) {
22721 if (old_rlim)
22722 diff --git a/kernel/sysctl.c b/kernel/sysctl.c
22723 -index 0e0373f..69f5181 100644
22724 +index 75b22e2..65c0ac8 100644
22725 --- a/kernel/sysctl.c
22726 +++ b/kernel/sysctl.c
22727 @@ -94,7 +94,6 @@
22728 @@ -91092,7 +95099,7 @@ index 0e0373f..69f5181 100644
22729 #endif
22730
22731 /* this is needed for the proc_doulongvec_minmax of vm_dirty_bytes */
22732 -@@ -178,10 +178,8 @@ static int proc_taint(struct ctl_table *table, int write,
22733 +@@ -181,10 +181,8 @@ static int proc_taint(struct ctl_table *table, int write,
22734 void __user *buffer, size_t *lenp, loff_t *ppos);
22735 #endif
22736
22737 @@ -91103,7 +95110,7 @@ index 0e0373f..69f5181 100644
22738
22739 static int proc_dointvec_minmax_coredump(struct ctl_table *table, int write,
22740 void __user *buffer, size_t *lenp, loff_t *ppos);
22741 -@@ -212,6 +210,8 @@ static int sysrq_sysctl_handler(ctl_table *table, int write,
22742 +@@ -215,6 +213,8 @@ static int sysrq_sysctl_handler(struct ctl_table *table, int write,
22743
22744 #endif
22745
22746 @@ -91112,7 +95119,7 @@ index 0e0373f..69f5181 100644
22747 static struct ctl_table kern_table[];
22748 static struct ctl_table vm_table[];
22749 static struct ctl_table fs_table[];
22750 -@@ -226,6 +226,20 @@ extern struct ctl_table epoll_table[];
22751 +@@ -229,6 +229,20 @@ extern struct ctl_table epoll_table[];
22752 int sysctl_legacy_va_layout;
22753 #endif
22754
22755 @@ -91133,7 +95140,7 @@ index 0e0373f..69f5181 100644
22756 /* The default sysctl tables: */
22757
22758 static struct ctl_table sysctl_base_table[] = {
22759 -@@ -274,6 +288,22 @@ static int max_extfrag_threshold = 1000;
22760 +@@ -277,6 +291,22 @@ static int max_extfrag_threshold = 1000;
22761 #endif
22762
22763 static struct ctl_table kern_table[] = {
22764 @@ -91156,7 +95163,7 @@ index 0e0373f..69f5181 100644
22765 {
22766 .procname = "sched_child_runs_first",
22767 .data = &sysctl_sched_child_runs_first,
22768 -@@ -629,7 +659,7 @@ static struct ctl_table kern_table[] = {
22769 +@@ -641,7 +671,7 @@ static struct ctl_table kern_table[] = {
22770 .data = &modprobe_path,
22771 .maxlen = KMOD_PATH_LEN,
22772 .mode = 0644,
22773 @@ -91165,7 +95172,7 @@ index 0e0373f..69f5181 100644
22774 },
22775 {
22776 .procname = "modules_disabled",
22777 -@@ -796,16 +826,20 @@ static struct ctl_table kern_table[] = {
22778 +@@ -808,16 +838,20 @@ static struct ctl_table kern_table[] = {
22779 .extra1 = &zero,
22780 .extra2 = &one,
22781 },
22782 @@ -91187,7 +95194,7 @@ index 0e0373f..69f5181 100644
22783 {
22784 .procname = "ngroups_max",
22785 .data = &ngroups_max,
22786 -@@ -1050,10 +1084,17 @@ static struct ctl_table kern_table[] = {
22787 +@@ -1073,10 +1107,17 @@ static struct ctl_table kern_table[] = {
22788 */
22789 {
22790 .procname = "perf_event_paranoid",
22791 @@ -91208,7 +95215,7 @@ index 0e0373f..69f5181 100644
22792 },
22793 {
22794 .procname = "perf_event_mlock_kb",
22795 -@@ -1315,6 +1356,13 @@ static struct ctl_table vm_table[] = {
22796 +@@ -1338,6 +1379,13 @@ static struct ctl_table vm_table[] = {
22797 .proc_handler = proc_dointvec_minmax,
22798 .extra1 = &zero,
22799 },
22800 @@ -91222,8 +95229,8 @@ index 0e0373f..69f5181 100644
22801 #else
22802 {
22803 .procname = "nr_trim_pages",
22804 -@@ -1779,6 +1827,16 @@ int proc_dostring(struct ctl_table *table, int write,
22805 - buffer, lenp, ppos);
22806 +@@ -1827,6 +1875,16 @@ int proc_dostring(struct ctl_table *table, int write,
22807 + (char __user *)buffer, lenp, ppos);
22808 }
22809
22810 +int proc_dostring_modpriv(struct ctl_table *table, int write,
22811 @@ -91239,7 +95246,7 @@ index 0e0373f..69f5181 100644
22812 static size_t proc_skip_spaces(char **buf)
22813 {
22814 size_t ret;
22815 -@@ -1884,6 +1942,8 @@ static int proc_put_long(void __user **buf, size_t *size, unsigned long val,
22816 +@@ -1932,6 +1990,8 @@ static int proc_put_long(void __user **buf, size_t *size, unsigned long val,
22817 len = strlen(tmp);
22818 if (len > *size)
22819 len = *size;
22820 @@ -91248,7 +95255,7 @@ index 0e0373f..69f5181 100644
22821 if (copy_to_user(*buf, tmp, len))
22822 return -EFAULT;
22823 *size -= len;
22824 -@@ -2048,7 +2108,7 @@ int proc_dointvec(struct ctl_table *table, int write,
22825 +@@ -2109,7 +2169,7 @@ int proc_dointvec(struct ctl_table *table, int write,
22826 static int proc_taint(struct ctl_table *table, int write,
22827 void __user *buffer, size_t *lenp, loff_t *ppos)
22828 {
22829 @@ -91257,7 +95264,7 @@ index 0e0373f..69f5181 100644
22830 unsigned long tmptaint = get_taint();
22831 int err;
22832
22833 -@@ -2076,7 +2136,6 @@ static int proc_taint(struct ctl_table *table, int write,
22834 +@@ -2137,7 +2197,6 @@ static int proc_taint(struct ctl_table *table, int write,
22835 return err;
22836 }
22837
22838 @@ -91265,7 +95272,7 @@ index 0e0373f..69f5181 100644
22839 static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write,
22840 void __user *buffer, size_t *lenp, loff_t *ppos)
22841 {
22842 -@@ -2085,7 +2144,6 @@ static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write,
22843 +@@ -2146,7 +2205,6 @@ static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write,
22844
22845 return proc_dointvec_minmax(table, write, buffer, lenp, ppos);
22846 }
22847 @@ -91273,7 +95280,7 @@ index 0e0373f..69f5181 100644
22848
22849 struct do_proc_dointvec_minmax_conv_param {
22850 int *min;
22851 -@@ -2632,6 +2690,12 @@ int proc_dostring(struct ctl_table *table, int write,
22852 +@@ -2706,6 +2764,12 @@ int proc_dostring(struct ctl_table *table, int write,
22853 return -ENOSYS;
22854 }
22855
22856 @@ -91286,7 +95293,7 @@ index 0e0373f..69f5181 100644
22857 int proc_dointvec(struct ctl_table *table, int write,
22858 void __user *buffer, size_t *lenp, loff_t *ppos)
22859 {
22860 -@@ -2688,5 +2752,6 @@ EXPORT_SYMBOL(proc_dointvec_minmax);
22861 +@@ -2762,5 +2826,6 @@ EXPORT_SYMBOL(proc_dointvec_minmax);
22862 EXPORT_SYMBOL(proc_dointvec_userhz_jiffies);
22863 EXPORT_SYMBOL(proc_dointvec_ms_jiffies);
22864 EXPORT_SYMBOL(proc_dostring);
22865 @@ -91350,7 +95357,7 @@ index fe75444..190c528 100644
22866 .clock_get = alarm_clock_get,
22867 .timer_create = alarm_timer_create,
22868 diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
22869 -index f7df8ea..0810193 100644
22870 +index 32d8d6a..11486af 100644
22871 --- a/kernel/time/timekeeping.c
22872 +++ b/kernel/time/timekeeping.c
22873 @@ -15,6 +15,7 @@
22874 @@ -91510,10 +95517,10 @@ index 3bb01a3..0e7760e 100644
22875 struct timer_list timer;
22876 unsigned long expire;
22877 diff --git a/kernel/torture.c b/kernel/torture.c
22878 -index acc9afc..4f9eb49 100644
22879 +index 40bb511..91190b9 100644
22880 --- a/kernel/torture.c
22881 +++ b/kernel/torture.c
22882 -@@ -489,7 +489,7 @@ static int torture_shutdown_notify(struct notifier_block *unused1,
22883 +@@ -484,7 +484,7 @@ static int torture_shutdown_notify(struct notifier_block *unused1,
22884 mutex_lock(&fullstop_mutex);
22885 if (ACCESS_ONCE(fullstop) == FULLSTOP_DONTSTOP) {
22886 VERBOSE_TOROUT_STRING("Unscheduled system shutdown detected");
22887 @@ -91522,10 +95529,14 @@ index acc9afc..4f9eb49 100644
22888 } else {
22889 pr_warn("Concurrent rmmod and shutdown illegal!\n");
22890 }
22891 -@@ -551,11 +551,11 @@ static int torture_stutter(void *arg)
22892 - do {
22893 +@@ -551,14 +551,14 @@ static int torture_stutter(void *arg)
22894 if (!torture_must_stop()) {
22895 - schedule_timeout_interruptible(stutter);
22896 + if (stutter > 1) {
22897 + schedule_timeout_interruptible(stutter - 1);
22898 +- ACCESS_ONCE(stutter_pause_test) = 2;
22899 ++ ACCESS_ONCE_RW(stutter_pause_test) = 2;
22900 + }
22901 + schedule_timeout_interruptible(1);
22902 - ACCESS_ONCE(stutter_pause_test) = 1;
22903 + ACCESS_ONCE_RW(stutter_pause_test) = 1;
22904 }
22905 @@ -91536,7 +95547,7 @@ index acc9afc..4f9eb49 100644
22906 torture_shutdown_absorb("torture_stutter");
22907 } while (!torture_must_stop());
22908 torture_kthread_stopping("torture_stutter");
22909 -@@ -636,7 +636,7 @@ bool torture_cleanup(void)
22910 +@@ -645,7 +645,7 @@ bool torture_cleanup(void)
22911 schedule_timeout_uninterruptible(10);
22912 return true;
22913 }
22914 @@ -91577,10 +95588,10 @@ index c1bd4ad..4b861dc 100644
22915
22916 ret = -EIO;
22917 diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
22918 -index 5aeac53..863ed29 100644
22919 +index ac9d1da..ce98b35 100644
22920 --- a/kernel/trace/ftrace.c
22921 +++ b/kernel/trace/ftrace.c
22922 -@@ -1960,12 +1960,17 @@ ftrace_code_disable(struct module *mod, struct dyn_ftrace *rec)
22923 +@@ -1920,12 +1920,17 @@ ftrace_code_disable(struct module *mod, struct dyn_ftrace *rec)
22924 if (unlikely(ftrace_disabled))
22925 return 0;
22926
22927 @@ -91600,7 +95611,7 @@ index 5aeac53..863ed29 100644
22928 }
22929
22930 /*
22931 -@@ -4195,8 +4200,10 @@ static int ftrace_process_locs(struct module *mod,
22932 +@@ -4126,8 +4131,10 @@ static int ftrace_process_locs(struct module *mod,
22933 if (!count)
22934 return 0;
22935
22936 @@ -91611,36 +95622,8 @@ index 5aeac53..863ed29 100644
22937
22938 start_pg = ftrace_allocate_pages(count);
22939 if (!start_pg)
22940 -@@ -4908,8 +4915,6 @@ ftrace_enable_sysctl(struct ctl_table *table, int write,
22941 - #ifdef CONFIG_FUNCTION_GRAPH_TRACER
22942 -
22943 - static int ftrace_graph_active;
22944 --static struct notifier_block ftrace_suspend_notifier;
22945 --
22946 - int ftrace_graph_entry_stub(struct ftrace_graph_ent *trace)
22947 - {
22948 - return 0;
22949 -@@ -5085,6 +5090,10 @@ static void update_function_graph_func(void)
22950 - ftrace_graph_entry = ftrace_graph_entry_test;
22951 - }
22952 -
22953 -+static struct notifier_block ftrace_suspend_notifier = {
22954 -+ .notifier_call = ftrace_suspend_notifier_call
22955 -+};
22956 -+
22957 - int register_ftrace_graph(trace_func_graph_ret_t retfunc,
22958 - trace_func_graph_ent_t entryfunc)
22959 - {
22960 -@@ -5098,7 +5107,6 @@ int register_ftrace_graph(trace_func_graph_ret_t retfunc,
22961 - goto out;
22962 - }
22963 -
22964 -- ftrace_suspend_notifier.notifier_call = ftrace_suspend_notifier_call;
22965 - register_pm_notifier(&ftrace_suspend_notifier);
22966 -
22967 - ftrace_graph_active++;
22968 diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
22969 -index ff70271..e1e8cf1 100644
22970 +index ff70271..4242e69 100644
22971 --- a/kernel/trace/ring_buffer.c
22972 +++ b/kernel/trace/ring_buffer.c
22973 @@ -352,9 +352,9 @@ struct buffer_data_page {
22974 @@ -91666,7 +95649,31 @@ index ff70271..e1e8cf1 100644
22975 local_t dropped_events;
22976 local_t committing;
22977 local_t commits;
22978 -@@ -991,8 +991,8 @@ static int rb_tail_page_update(struct ring_buffer_per_cpu *cpu_buffer,
22979 +@@ -626,8 +626,22 @@ int ring_buffer_poll_wait(struct ring_buffer *buffer, int cpu,
22980 + work = &cpu_buffer->irq_work;
22981 + }
22982 +
22983 +- work->waiters_pending = true;
22984 + poll_wait(filp, &work->waiters, poll_table);
22985 ++ work->waiters_pending = true;
22986 ++ /*
22987 ++ * There's a tight race between setting the waiters_pending and
22988 ++ * checking if the ring buffer is empty. Once the waiters_pending bit
22989 ++ * is set, the next event will wake the task up, but we can get stuck
22990 ++ * if there's only a single event in.
22991 ++ *
22992 ++ * FIXME: Ideally, we need a memory barrier on the writer side as well,
22993 ++ * but adding a memory barrier to all events will cause too much of a
22994 ++ * performance hit in the fast path. We only need a memory barrier when
22995 ++ * the buffer goes from empty to having content. But as this race is
22996 ++ * extremely small, and it's not a problem if another event comes in, we
22997 ++ * will fix it later.
22998 ++ */
22999 ++ smp_mb();
23000 +
23001 + if ((cpu == RING_BUFFER_ALL_CPUS && !ring_buffer_empty(buffer)) ||
23002 + (cpu != RING_BUFFER_ALL_CPUS && !ring_buffer_empty_cpu(buffer, cpu)))
23003 +@@ -991,8 +1005,8 @@ static int rb_tail_page_update(struct ring_buffer_per_cpu *cpu_buffer,
23004 *
23005 * We add a counter to the write field to denote this.
23006 */
23007 @@ -91677,7 +95684,7 @@ index ff70271..e1e8cf1 100644
23008
23009 /*
23010 * Just make sure we have seen our old_write and synchronize
23011 -@@ -1020,8 +1020,8 @@ static int rb_tail_page_update(struct ring_buffer_per_cpu *cpu_buffer,
23012 +@@ -1020,8 +1034,8 @@ static int rb_tail_page_update(struct ring_buffer_per_cpu *cpu_buffer,
23013 * cmpxchg to only update if an interrupt did not already
23014 * do it for us. If the cmpxchg fails, we don't care.
23015 */
23016 @@ -91688,7 +95695,7 @@ index ff70271..e1e8cf1 100644
23017
23018 /*
23019 * No need to worry about races with clearing out the commit.
23020 -@@ -1388,12 +1388,12 @@ static void rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer);
23021 +@@ -1388,12 +1402,12 @@ static void rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer);
23022
23023 static inline unsigned long rb_page_entries(struct buffer_page *bpage)
23024 {
23025 @@ -91703,7 +95710,7 @@ index ff70271..e1e8cf1 100644
23026 }
23027
23028 static int
23029 -@@ -1488,7 +1488,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned int nr_pages)
23030 +@@ -1488,7 +1502,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned int nr_pages)
23031 * bytes consumed in ring buffer from here.
23032 * Increment overrun to account for the lost events.
23033 */
23034 @@ -91712,7 +95719,7 @@ index ff70271..e1e8cf1 100644
23035 local_sub(BUF_PAGE_SIZE, &cpu_buffer->entries_bytes);
23036 }
23037
23038 -@@ -2066,7 +2066,7 @@ rb_handle_head_page(struct ring_buffer_per_cpu *cpu_buffer,
23039 +@@ -2066,7 +2080,7 @@ rb_handle_head_page(struct ring_buffer_per_cpu *cpu_buffer,
23040 * it is our responsibility to update
23041 * the counters.
23042 */
23043 @@ -91721,7 +95728,7 @@ index ff70271..e1e8cf1 100644
23044 local_sub(BUF_PAGE_SIZE, &cpu_buffer->entries_bytes);
23045
23046 /*
23047 -@@ -2216,7 +2216,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer,
23048 +@@ -2216,7 +2230,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer,
23049 if (tail == BUF_PAGE_SIZE)
23050 tail_page->real_end = 0;
23051
23052 @@ -91730,7 +95737,7 @@ index ff70271..e1e8cf1 100644
23053 return;
23054 }
23055
23056 -@@ -2251,7 +2251,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer,
23057 +@@ -2251,7 +2265,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer,
23058 rb_event_set_padding(event);
23059
23060 /* Set the write back to the previous setting */
23061 @@ -91739,7 +95746,7 @@ index ff70271..e1e8cf1 100644
23062 return;
23063 }
23064
23065 -@@ -2263,7 +2263,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer,
23066 +@@ -2263,7 +2277,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer,
23067
23068 /* Set write to end of buffer */
23069 length = (tail + length) - BUF_PAGE_SIZE;
23070 @@ -91748,7 +95755,7 @@ index ff70271..e1e8cf1 100644
23071 }
23072
23073 /*
23074 -@@ -2289,7 +2289,7 @@ rb_move_tail(struct ring_buffer_per_cpu *cpu_buffer,
23075 +@@ -2289,7 +2303,7 @@ rb_move_tail(struct ring_buffer_per_cpu *cpu_buffer,
23076 * about it.
23077 */
23078 if (unlikely(next_page == commit_page)) {
23079 @@ -91757,7 +95764,7 @@ index ff70271..e1e8cf1 100644
23080 goto out_reset;
23081 }
23082
23083 -@@ -2345,7 +2345,7 @@ rb_move_tail(struct ring_buffer_per_cpu *cpu_buffer,
23084 +@@ -2345,7 +2359,7 @@ rb_move_tail(struct ring_buffer_per_cpu *cpu_buffer,
23085 cpu_buffer->tail_page) &&
23086 (cpu_buffer->commit_page ==
23087 cpu_buffer->reader_page))) {
23088 @@ -91766,7 +95773,7 @@ index ff70271..e1e8cf1 100644
23089 goto out_reset;
23090 }
23091 }
23092 -@@ -2393,7 +2393,7 @@ __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer,
23093 +@@ -2393,7 +2407,7 @@ __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer,
23094 length += RB_LEN_TIME_EXTEND;
23095
23096 tail_page = cpu_buffer->tail_page;
23097 @@ -91775,7 +95782,7 @@ index ff70271..e1e8cf1 100644
23098
23099 /* set write to only the index of the write */
23100 write &= RB_WRITE_MASK;
23101 -@@ -2417,7 +2417,7 @@ __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer,
23102 +@@ -2417,7 +2431,7 @@ __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer,
23103 kmemcheck_annotate_bitfield(event, bitfield);
23104 rb_update_event(cpu_buffer, event, length, add_timestamp, delta);
23105
23106 @@ -91784,7 +95791,7 @@ index ff70271..e1e8cf1 100644
23107
23108 /*
23109 * If this is the first commit on the page, then update
23110 -@@ -2450,7 +2450,7 @@ rb_try_to_discard(struct ring_buffer_per_cpu *cpu_buffer,
23111 +@@ -2450,7 +2464,7 @@ rb_try_to_discard(struct ring_buffer_per_cpu *cpu_buffer,
23112
23113 if (bpage->page == (void *)addr && rb_page_write(bpage) == old_index) {
23114 unsigned long write_mask =
23115 @@ -91793,7 +95800,7 @@ index ff70271..e1e8cf1 100644
23116 unsigned long event_length = rb_event_length(event);
23117 /*
23118 * This is on the tail page. It is possible that
23119 -@@ -2460,7 +2460,7 @@ rb_try_to_discard(struct ring_buffer_per_cpu *cpu_buffer,
23120 +@@ -2460,7 +2474,7 @@ rb_try_to_discard(struct ring_buffer_per_cpu *cpu_buffer,
23121 */
23122 old_index += write_mask;
23123 new_index += write_mask;
23124 @@ -91802,7 +95809,7 @@ index ff70271..e1e8cf1 100644
23125 if (index == old_index) {
23126 /* update counters */
23127 local_sub(event_length, &cpu_buffer->entries_bytes);
23128 -@@ -2852,7 +2852,7 @@ rb_decrement_entry(struct ring_buffer_per_cpu *cpu_buffer,
23129 +@@ -2852,7 +2866,7 @@ rb_decrement_entry(struct ring_buffer_per_cpu *cpu_buffer,
23130
23131 /* Do the likely case first */
23132 if (likely(bpage->page == (void *)addr)) {
23133 @@ -91811,7 +95818,7 @@ index ff70271..e1e8cf1 100644
23134 return;
23135 }
23136
23137 -@@ -2864,7 +2864,7 @@ rb_decrement_entry(struct ring_buffer_per_cpu *cpu_buffer,
23138 +@@ -2864,7 +2878,7 @@ rb_decrement_entry(struct ring_buffer_per_cpu *cpu_buffer,
23139 start = bpage;
23140 do {
23141 if (bpage->page == (void *)addr) {
23142 @@ -91820,7 +95827,7 @@ index ff70271..e1e8cf1 100644
23143 return;
23144 }
23145 rb_inc_page(cpu_buffer, &bpage);
23146 -@@ -3148,7 +3148,7 @@ static inline unsigned long
23147 +@@ -3148,7 +3162,7 @@ static inline unsigned long
23148 rb_num_of_entries(struct ring_buffer_per_cpu *cpu_buffer)
23149 {
23150 return local_read(&cpu_buffer->entries) -
23151 @@ -91829,7 +95836,7 @@ index ff70271..e1e8cf1 100644
23152 }
23153
23154 /**
23155 -@@ -3237,7 +3237,7 @@ unsigned long ring_buffer_overrun_cpu(struct ring_buffer *buffer, int cpu)
23156 +@@ -3237,7 +3251,7 @@ unsigned long ring_buffer_overrun_cpu(struct ring_buffer *buffer, int cpu)
23157 return 0;
23158
23159 cpu_buffer = buffer->buffers[cpu];
23160 @@ -91838,7 +95845,7 @@ index ff70271..e1e8cf1 100644
23161
23162 return ret;
23163 }
23164 -@@ -3260,7 +3260,7 @@ ring_buffer_commit_overrun_cpu(struct ring_buffer *buffer, int cpu)
23165 +@@ -3260,7 +3274,7 @@ ring_buffer_commit_overrun_cpu(struct ring_buffer *buffer, int cpu)
23166 return 0;
23167
23168 cpu_buffer = buffer->buffers[cpu];
23169 @@ -91847,7 +95854,7 @@ index ff70271..e1e8cf1 100644
23170
23171 return ret;
23172 }
23173 -@@ -3345,7 +3345,7 @@ unsigned long ring_buffer_overruns(struct ring_buffer *buffer)
23174 +@@ -3345,7 +3359,7 @@ unsigned long ring_buffer_overruns(struct ring_buffer *buffer)
23175 /* if you care about this being correct, lock the buffer */
23176 for_each_buffer_cpu(buffer, cpu) {
23177 cpu_buffer = buffer->buffers[cpu];
23178 @@ -91856,7 +95863,7 @@ index ff70271..e1e8cf1 100644
23179 }
23180
23181 return overruns;
23182 -@@ -3521,8 +3521,8 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
23183 +@@ -3521,8 +3535,8 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
23184 /*
23185 * Reset the reader page to size zero.
23186 */
23187 @@ -91867,7 +95874,7 @@ index ff70271..e1e8cf1 100644
23188 local_set(&cpu_buffer->reader_page->page->commit, 0);
23189 cpu_buffer->reader_page->real_end = 0;
23190
23191 -@@ -3556,7 +3556,7 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
23192 +@@ -3556,7 +3570,7 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
23193 * want to compare with the last_overrun.
23194 */
23195 smp_mb();
23196 @@ -91876,7 +95883,7 @@ index ff70271..e1e8cf1 100644
23197
23198 /*
23199 * Here's the tricky part.
23200 -@@ -4126,8 +4126,8 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer)
23201 +@@ -4126,8 +4140,8 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer)
23202
23203 cpu_buffer->head_page
23204 = list_entry(cpu_buffer->pages, struct buffer_page, list);
23205 @@ -91887,7 +95894,7 @@ index ff70271..e1e8cf1 100644
23206 local_set(&cpu_buffer->head_page->page->commit, 0);
23207
23208 cpu_buffer->head_page->read = 0;
23209 -@@ -4137,14 +4137,14 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer)
23210 +@@ -4137,14 +4151,14 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer)
23211
23212 INIT_LIST_HEAD(&cpu_buffer->reader_page->list);
23213 INIT_LIST_HEAD(&cpu_buffer->new_pages);
23214 @@ -91906,7 +95913,7 @@ index ff70271..e1e8cf1 100644
23215 local_set(&cpu_buffer->dropped_events, 0);
23216 local_set(&cpu_buffer->entries, 0);
23217 local_set(&cpu_buffer->committing, 0);
23218 -@@ -4549,8 +4549,8 @@ int ring_buffer_read_page(struct ring_buffer *buffer,
23219 +@@ -4549,8 +4563,8 @@ int ring_buffer_read_page(struct ring_buffer *buffer,
23220 rb_init_page(bpage);
23221 bpage = reader->page;
23222 reader->page = *data_page;
23223 @@ -91918,10 +95925,10 @@ index ff70271..e1e8cf1 100644
23224 *data_page = bpage;
23225
23226 diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
23227 -index e1baa92f..7b2e345 100644
23228 +index 291397e..db3836d 100644
23229 --- a/kernel/trace/trace.c
23230 +++ b/kernel/trace/trace.c
23231 -@@ -3461,7 +3461,7 @@ int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set)
23232 +@@ -3510,7 +3510,7 @@ int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set)
23233 return 0;
23234 }
23235
23236 @@ -91931,10 +95938,10 @@ index e1baa92f..7b2e345 100644
23237 /* do nothing if flag is already set */
23238 if (!!(trace_flags & mask) == !!enabled)
23239 diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
23240 -index 99676cd..670b9e8 100644
23241 +index 9258f5a..9b1e41e 100644
23242 --- a/kernel/trace/trace.h
23243 +++ b/kernel/trace/trace.h
23244 -@@ -1264,7 +1264,7 @@ extern const char *__stop___tracepoint_str[];
23245 +@@ -1278,7 +1278,7 @@ extern const char *__stop___tracepoint_str[];
23246 void trace_printk_init_buffers(void);
23247 void trace_printk_start_comm(void);
23248 int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set);
23249 @@ -91964,10 +95971,10 @@ index 57b67b1..66082a9 100644
23250 + return atomic64_inc_return_unchecked(&trace_counter);
23251 }
23252 diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
23253 -index aec1dac..6ca72ee 100644
23254 +index 2de5362..c4c7003 100644
23255 --- a/kernel/trace/trace_events.c
23256 +++ b/kernel/trace/trace_events.c
23257 -@@ -1719,7 +1719,6 @@ __trace_early_add_new_event(struct ftrace_event_call *call,
23258 +@@ -1722,7 +1722,6 @@ __trace_early_add_new_event(struct ftrace_event_call *call,
23259 return 0;
23260 }
23261
23262 @@ -92016,10 +96023,10 @@ index 0abd9b8..6a663a2 100644
23263 }
23264 entry = ring_buffer_event_data(event);
23265 diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c
23266 -index a436de1..f64dde2 100644
23267 +index f3dad80..d291d61 100644
23268 --- a/kernel/trace/trace_output.c
23269 +++ b/kernel/trace/trace_output.c
23270 -@@ -294,7 +294,7 @@ int trace_seq_path(struct trace_seq *s, const struct path *path)
23271 +@@ -322,7 +322,7 @@ int trace_seq_path(struct trace_seq *s, const struct path *path)
23272
23273 p = d_path(path, s->buffer + s->len, PAGE_SIZE - s->len);
23274 if (!IS_ERR(p)) {
23275 @@ -92028,7 +96035,7 @@ index a436de1..f64dde2 100644
23276 if (p) {
23277 s->len = p - s->buffer;
23278 return 1;
23279 -@@ -939,14 +939,16 @@ int register_ftrace_event(struct trace_event *event)
23280 +@@ -980,14 +980,16 @@ int register_ftrace_event(struct trace_event *event)
23281 goto out;
23282 }
23283
23284 @@ -92050,10 +96057,10 @@ index a436de1..f64dde2 100644
23285 key = event->type & (EVENT_HASHSIZE - 1);
23286
23287 diff --git a/kernel/trace/trace_stack.c b/kernel/trace/trace_stack.c
23288 -index 21b320e..40607bc 100644
23289 +index 8a4e5cb..64f270d 100644
23290 --- a/kernel/trace/trace_stack.c
23291 +++ b/kernel/trace/trace_stack.c
23292 -@@ -69,7 +69,7 @@ check_stack(unsigned long ip, unsigned long *stack)
23293 +@@ -91,7 +91,7 @@ check_stack(unsigned long ip, unsigned long *stack)
23294 return;
23295
23296 /* we do not handle interrupt stacks yet */
23297 @@ -92063,7 +96070,7 @@ index 21b320e..40607bc 100644
23298
23299 local_irq_save(flags);
23300 diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c
23301 -index bf71b4b..04dee68 100644
23302 +index fcc0256..aee880f 100644
23303 --- a/kernel/user_namespace.c
23304 +++ b/kernel/user_namespace.c
23305 @@ -82,6 +82,21 @@ int create_user_ns(struct cred *new)
23306 @@ -92088,7 +96095,7 @@ index bf71b4b..04dee68 100644
23307 ns = kmem_cache_zalloc(user_ns_cachep, GFP_KERNEL);
23308 if (!ns)
23309 return -ENOMEM;
23310 -@@ -865,7 +880,7 @@ static int userns_install(struct nsproxy *nsproxy, void *ns)
23311 +@@ -872,7 +887,7 @@ static int userns_install(struct nsproxy *nsproxy, void *ns)
23312 if (atomic_read(&current->mm->mm_users) > 1)
23313 return -EINVAL;
23314
23315 @@ -92098,11 +96105,11 @@ index bf71b4b..04dee68 100644
23316
23317 if (!ns_capable(user_ns, CAP_SYS_ADMIN))
23318 diff --git a/kernel/utsname_sysctl.c b/kernel/utsname_sysctl.c
23319 -index 4f69f9a..7c6f8f8 100644
23320 +index c8eac43..4b5f08f 100644
23321 --- a/kernel/utsname_sysctl.c
23322 +++ b/kernel/utsname_sysctl.c
23323 -@@ -47,7 +47,7 @@ static void put_uts(ctl_table *table, int write, void *which)
23324 - static int proc_do_uts_string(ctl_table *table, int write,
23325 +@@ -47,7 +47,7 @@ static void put_uts(struct ctl_table *table, int write, void *which)
23326 + static int proc_do_uts_string(struct ctl_table *table, int write,
23327 void __user *buffer, size_t *lenp, loff_t *ppos)
23328 {
23329 - struct ctl_table uts_table;
23330 @@ -92111,10 +96118,10 @@ index 4f69f9a..7c6f8f8 100644
23331 memcpy(&uts_table, table, sizeof(uts_table));
23332 uts_table.data = get_uts(table, write);
23333 diff --git a/kernel/watchdog.c b/kernel/watchdog.c
23334 -index 30e4822..dd2b854 100644
23335 +index c3319bd..67efc3c 100644
23336 --- a/kernel/watchdog.c
23337 +++ b/kernel/watchdog.c
23338 -@@ -479,7 +479,7 @@ static int watchdog_nmi_enable(unsigned int cpu) { return 0; }
23339 +@@ -518,7 +518,7 @@ static int watchdog_nmi_enable(unsigned int cpu) { return 0; }
23340 static void watchdog_nmi_disable(unsigned int cpu) { return; }
23341 #endif /* CONFIG_HARDLOCKUP_DETECTOR */
23342
23343 @@ -92124,10 +96131,10 @@ index 30e4822..dd2b854 100644
23344 .thread_should_run = watchdog_should_run,
23345 .thread_fn = watchdog,
23346 diff --git a/kernel/workqueue.c b/kernel/workqueue.c
23347 -index 7ba5897..c8ed1f2 100644
23348 +index 35974ac..43c9e87 100644
23349 --- a/kernel/workqueue.c
23350 +++ b/kernel/workqueue.c
23351 -@@ -4710,7 +4710,7 @@ static void rebind_workers(struct worker_pool *pool)
23352 +@@ -4576,7 +4576,7 @@ static void rebind_workers(struct worker_pool *pool)
23353 WARN_ON_ONCE(!(worker_flags & WORKER_UNBOUND));
23354 worker_flags |= WORKER_REBOUND;
23355 worker_flags &= ~WORKER_UNBOUND;
23356 @@ -92137,10 +96144,10 @@ index 7ba5897..c8ed1f2 100644
23357
23358 spin_unlock_irq(&pool->lock);
23359 diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
23360 -index 819ac51..1c8a65e 100644
23361 +index 7a638aa..20db901 100644
23362 --- a/lib/Kconfig.debug
23363 +++ b/lib/Kconfig.debug
23364 -@@ -853,7 +853,7 @@ config DEBUG_MUTEXES
23365 +@@ -858,7 +858,7 @@ config DEBUG_MUTEXES
23366
23367 config DEBUG_WW_MUTEX_SLOWPATH
23368 bool "Wait/wound mutex debugging: Slowpath testing"
23369 @@ -92149,7 +96156,7 @@ index 819ac51..1c8a65e 100644
23370 select DEBUG_LOCK_ALLOC
23371 select DEBUG_SPINLOCK
23372 select DEBUG_MUTEXES
23373 -@@ -866,7 +866,7 @@ config DEBUG_WW_MUTEX_SLOWPATH
23374 +@@ -871,7 +871,7 @@ config DEBUG_WW_MUTEX_SLOWPATH
23375
23376 config DEBUG_LOCK_ALLOC
23377 bool "Lock debugging: detect incorrect freeing of live locks"
23378 @@ -92158,7 +96165,7 @@ index 819ac51..1c8a65e 100644
23379 select DEBUG_SPINLOCK
23380 select DEBUG_MUTEXES
23381 select LOCKDEP
23382 -@@ -880,7 +880,7 @@ config DEBUG_LOCK_ALLOC
23383 +@@ -885,7 +885,7 @@ config DEBUG_LOCK_ALLOC
23384
23385 config PROVE_LOCKING
23386 bool "Lock debugging: prove locking correctness"
23387 @@ -92167,7 +96174,7 @@ index 819ac51..1c8a65e 100644
23388 select LOCKDEP
23389 select DEBUG_SPINLOCK
23390 select DEBUG_MUTEXES
23391 -@@ -931,7 +931,7 @@ config LOCKDEP
23392 +@@ -936,7 +936,7 @@ config LOCKDEP
23393
23394 config LOCK_STAT
23395 bool "Lock usage statistics"
23396 @@ -92176,7 +96183,7 @@ index 819ac51..1c8a65e 100644
23397 select LOCKDEP
23398 select DEBUG_SPINLOCK
23399 select DEBUG_MUTEXES
23400 -@@ -1403,6 +1403,7 @@ config LATENCYTOP
23401 +@@ -1418,6 +1418,7 @@ config LATENCYTOP
23402 depends on DEBUG_KERNEL
23403 depends on STACKTRACE_SUPPORT
23404 depends on PROC_FS
23405 @@ -92184,7 +96191,7 @@ index 819ac51..1c8a65e 100644
23406 select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND && !ARC
23407 select KALLSYMS
23408 select KALLSYMS_ALL
23409 -@@ -1419,7 +1420,7 @@ config ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS
23410 +@@ -1434,7 +1435,7 @@ config ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS
23411 config DEBUG_STRICT_USER_COPY_CHECKS
23412 bool "Strict user copy size checks"
23413 depends on ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS
23414 @@ -92193,7 +96200,7 @@ index 819ac51..1c8a65e 100644
23415 help
23416 Enabling this option turns a certain set of sanity checks for user
23417 copy operations into compile time failures.
23418 -@@ -1538,7 +1539,7 @@ endmenu # runtime tests
23419 +@@ -1554,7 +1555,7 @@ endmenu # runtime tests
23420
23421 config PROVIDE_OHCI1394_DMA_INIT
23422 bool "Remote debugging over FireWire early on boot"
23423 @@ -92203,11 +96210,19 @@ index 819ac51..1c8a65e 100644
23424 If you want to debug problems which hang or crash the kernel early
23425 on boot and the crashing machine has a FireWire port, you can use
23426 diff --git a/lib/Makefile b/lib/Makefile
23427 -index 0cd7b68..e149e37 100644
23428 +index ba967a1..2cc869a 100644
23429 --- a/lib/Makefile
23430 +++ b/lib/Makefile
23431 -@@ -52,7 +52,7 @@ obj-$(CONFIG_GENERIC_HWEIGHT) += hweight.o
23432 - obj-$(CONFIG_BTREE) += btree.o
23433 +@@ -33,7 +33,6 @@ obj-y += kstrtox.o
23434 + obj-$(CONFIG_TEST_KSTRTOX) += test-kstrtox.o
23435 + obj-$(CONFIG_TEST_MODULE) += test_module.o
23436 + obj-$(CONFIG_TEST_USER_COPY) += test_user_copy.o
23437 +-obj-$(CONFIG_TEST_BPF) += test_bpf.o
23438 +
23439 + ifeq ($(CONFIG_DEBUG_KOBJECT),y)
23440 + CFLAGS_kobject.o += -DDEBUG
23441 +@@ -54,7 +53,7 @@ obj-$(CONFIG_BTREE) += btree.o
23442 + obj-$(CONFIG_INTERVAL_TREE) += interval_tree.o
23443 obj-$(CONFIG_ASSOCIATIVE_ARRAY) += assoc_array.o
23444 obj-$(CONFIG_DEBUG_PREEMPT) += smp_processor_id.o
23445 -obj-$(CONFIG_DEBUG_LIST) += list_debug.o
23446 @@ -92269,10 +96284,10 @@ index 06f7e4f..f3cf2b0 100644
23447 }
23448 EXPORT_SYMBOL(bitmap_parselist_user);
23449 diff --git a/lib/bug.c b/lib/bug.c
23450 -index 1686034..a9c00c8 100644
23451 +index d1d7c78..b354235 100644
23452 --- a/lib/bug.c
23453 +++ b/lib/bug.c
23454 -@@ -134,6 +134,8 @@ enum bug_trap_type report_bug(unsigned long bugaddr, struct pt_regs *regs)
23455 +@@ -137,6 +137,8 @@ enum bug_trap_type report_bug(unsigned long bugaddr, struct pt_regs *regs)
23456 return BUG_TRAP_TYPE_NONE;
23457
23458 bug = find_bug(bugaddr);
23459 @@ -92282,10 +96297,10 @@ index 1686034..a9c00c8 100644
23460 file = NULL;
23461 line = 0;
23462 diff --git a/lib/debugobjects.c b/lib/debugobjects.c
23463 -index e0731c3..ad66444 100644
23464 +index 547f7f9..a6d4ba0 100644
23465 --- a/lib/debugobjects.c
23466 +++ b/lib/debugobjects.c
23467 -@@ -286,7 +286,7 @@ static void debug_object_is_on_stack(void *addr, int onstack)
23468 +@@ -289,7 +289,7 @@ static void debug_object_is_on_stack(void *addr, int onstack)
23469 if (limit > 4)
23470 return;
23471
23472 @@ -92651,10 +96666,10 @@ index 963b703..438bc51 100644
23473 /**
23474 * percpu_ref_init - initialize a percpu refcount
23475 diff --git a/lib/radix-tree.c b/lib/radix-tree.c
23476 -index 9599aa7..9cf6c72 100644
23477 +index 3291a8e..346a91e 100644
23478 --- a/lib/radix-tree.c
23479 +++ b/lib/radix-tree.c
23480 -@@ -66,7 +66,7 @@ struct radix_tree_preload {
23481 +@@ -67,7 +67,7 @@ struct radix_tree_preload {
23482 int nr;
23483 struct radix_tree_node *nodes[RADIX_TREE_PRELOAD_SIZE];
23484 };
23485 @@ -92730,10 +96745,10 @@ index a28df52..3d55877 100644
23486 unsigned long c;
23487
23488 diff --git a/lib/swiotlb.c b/lib/swiotlb.c
23489 -index b604b83..c0547f6 100644
23490 +index 4abda07..b9d3765 100644
23491 --- a/lib/swiotlb.c
23492 +++ b/lib/swiotlb.c
23493 -@@ -674,7 +674,7 @@ EXPORT_SYMBOL(swiotlb_alloc_coherent);
23494 +@@ -682,7 +682,7 @@ EXPORT_SYMBOL(swiotlb_alloc_coherent);
23495
23496 void
23497 swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
23498 @@ -92742,6 +96757,1941 @@ index b604b83..c0547f6 100644
23499 {
23500 phys_addr_t paddr = dma_to_phys(hwdev, dev_addr);
23501
23502 +diff --git a/lib/test_bpf.c b/lib/test_bpf.c
23503 +deleted file mode 100644
23504 +index c579e0f..0000000
23505 +--- a/lib/test_bpf.c
23506 ++++ /dev/null
23507 +@@ -1,1929 +0,0 @@
23508 +-/*
23509 +- * Testsuite for BPF interpreter and BPF JIT compiler
23510 +- *
23511 +- * Copyright (c) 2011-2014 PLUMgrid, http://plumgrid.com
23512 +- *
23513 +- * This program is free software; you can redistribute it and/or
23514 +- * modify it under the terms of version 2 of the GNU General Public
23515 +- * License as published by the Free Software Foundation.
23516 +- *
23517 +- * This program is distributed in the hope that it will be useful, but
23518 +- * WITHOUT ANY WARRANTY; without even the implied warranty of
23519 +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
23520 +- * General Public License for more details.
23521 +- */
23522 +-
23523 +-#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
23524 +-
23525 +-#include <linux/init.h>
23526 +-#include <linux/module.h>
23527 +-#include <linux/filter.h>
23528 +-#include <linux/skbuff.h>
23529 +-#include <linux/netdevice.h>
23530 +-#include <linux/if_vlan.h>
23531 +-
23532 +-/* General test specific settings */
23533 +-#define MAX_SUBTESTS 3
23534 +-#define MAX_TESTRUNS 10000
23535 +-#define MAX_DATA 128
23536 +-#define MAX_INSNS 512
23537 +-#define MAX_K 0xffffFFFF
23538 +-
23539 +-/* Few constants used to init test 'skb' */
23540 +-#define SKB_TYPE 3
23541 +-#define SKB_MARK 0x1234aaaa
23542 +-#define SKB_HASH 0x1234aaab
23543 +-#define SKB_QUEUE_MAP 123
23544 +-#define SKB_VLAN_TCI 0xffff
23545 +-#define SKB_DEV_IFINDEX 577
23546 +-#define SKB_DEV_TYPE 588
23547 +-
23548 +-/* Redefine REGs to make tests less verbose */
23549 +-#define R0 BPF_REG_0
23550 +-#define R1 BPF_REG_1
23551 +-#define R2 BPF_REG_2
23552 +-#define R3 BPF_REG_3
23553 +-#define R4 BPF_REG_4
23554 +-#define R5 BPF_REG_5
23555 +-#define R6 BPF_REG_6
23556 +-#define R7 BPF_REG_7
23557 +-#define R8 BPF_REG_8
23558 +-#define R9 BPF_REG_9
23559 +-#define R10 BPF_REG_10
23560 +-
23561 +-/* Flags that can be passed to test cases */
23562 +-#define FLAG_NO_DATA BIT(0)
23563 +-#define FLAG_EXPECTED_FAIL BIT(1)
23564 +-
23565 +-enum {
23566 +- CLASSIC = BIT(6), /* Old BPF instructions only. */
23567 +- INTERNAL = BIT(7), /* Extended instruction set. */
23568 +-};
23569 +-
23570 +-#define TEST_TYPE_MASK (CLASSIC | INTERNAL)
23571 +-
23572 +-struct bpf_test {
23573 +- const char *descr;
23574 +- union {
23575 +- struct sock_filter insns[MAX_INSNS];
23576 +- struct sock_filter_int insns_int[MAX_INSNS];
23577 +- } u;
23578 +- __u8 aux;
23579 +- __u8 data[MAX_DATA];
23580 +- struct {
23581 +- int data_size;
23582 +- __u32 result;
23583 +- } test[MAX_SUBTESTS];
23584 +-};
23585 +-
23586 +-static struct bpf_test tests[] = {
23587 +- {
23588 +- "TAX",
23589 +- .u.insns = {
23590 +- BPF_STMT(BPF_LD | BPF_IMM, 1),
23591 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
23592 +- BPF_STMT(BPF_LD | BPF_IMM, 2),
23593 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
23594 +- BPF_STMT(BPF_ALU | BPF_NEG, 0), /* A == -3 */
23595 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
23596 +- BPF_STMT(BPF_LD | BPF_LEN, 0),
23597 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
23598 +- BPF_STMT(BPF_MISC | BPF_TAX, 0), /* X == len - 3 */
23599 +- BPF_STMT(BPF_LD | BPF_B | BPF_IND, 1),
23600 +- BPF_STMT(BPF_RET | BPF_A, 0)
23601 +- },
23602 +- CLASSIC,
23603 +- { 10, 20, 30, 40, 50 },
23604 +- { { 2, 10 }, { 3, 20 }, { 4, 30 } },
23605 +- },
23606 +- {
23607 +- "TXA",
23608 +- .u.insns = {
23609 +- BPF_STMT(BPF_LDX | BPF_LEN, 0),
23610 +- BPF_STMT(BPF_MISC | BPF_TXA, 0),
23611 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
23612 +- BPF_STMT(BPF_RET | BPF_A, 0) /* A == len * 2 */
23613 +- },
23614 +- CLASSIC,
23615 +- { 10, 20, 30, 40, 50 },
23616 +- { { 1, 2 }, { 3, 6 }, { 4, 8 } },
23617 +- },
23618 +- {
23619 +- "ADD_SUB_MUL_K",
23620 +- .u.insns = {
23621 +- BPF_STMT(BPF_LD | BPF_IMM, 1),
23622 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 2),
23623 +- BPF_STMT(BPF_LDX | BPF_IMM, 3),
23624 +- BPF_STMT(BPF_ALU | BPF_SUB | BPF_X, 0),
23625 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 0xffffffff),
23626 +- BPF_STMT(BPF_ALU | BPF_MUL | BPF_K, 3),
23627 +- BPF_STMT(BPF_RET | BPF_A, 0)
23628 +- },
23629 +- CLASSIC | FLAG_NO_DATA,
23630 +- { },
23631 +- { { 0, 0xfffffffd } }
23632 +- },
23633 +- {
23634 +- "DIV_KX",
23635 +- .u.insns = {
23636 +- BPF_STMT(BPF_LD | BPF_IMM, 8),
23637 +- BPF_STMT(BPF_ALU | BPF_DIV | BPF_K, 2),
23638 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
23639 +- BPF_STMT(BPF_LD | BPF_IMM, 0xffffffff),
23640 +- BPF_STMT(BPF_ALU | BPF_DIV | BPF_X, 0),
23641 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
23642 +- BPF_STMT(BPF_LD | BPF_IMM, 0xffffffff),
23643 +- BPF_STMT(BPF_ALU | BPF_DIV | BPF_K, 0x70000000),
23644 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
23645 +- BPF_STMT(BPF_RET | BPF_A, 0)
23646 +- },
23647 +- CLASSIC | FLAG_NO_DATA,
23648 +- { },
23649 +- { { 0, 0x40000001 } }
23650 +- },
23651 +- {
23652 +- "AND_OR_LSH_K",
23653 +- .u.insns = {
23654 +- BPF_STMT(BPF_LD | BPF_IMM, 0xff),
23655 +- BPF_STMT(BPF_ALU | BPF_AND | BPF_K, 0xf0),
23656 +- BPF_STMT(BPF_ALU | BPF_LSH | BPF_K, 27),
23657 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
23658 +- BPF_STMT(BPF_LD | BPF_IMM, 0xf),
23659 +- BPF_STMT(BPF_ALU | BPF_OR | BPF_K, 0xf0),
23660 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
23661 +- BPF_STMT(BPF_RET | BPF_A, 0)
23662 +- },
23663 +- CLASSIC | FLAG_NO_DATA,
23664 +- { },
23665 +- { { 0, 0x800000ff }, { 1, 0x800000ff } },
23666 +- },
23667 +- {
23668 +- "LD_IMM_0",
23669 +- .u.insns = {
23670 +- BPF_STMT(BPF_LD | BPF_IMM, 0), /* ld #0 */
23671 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 0, 1, 0),
23672 +- BPF_STMT(BPF_RET | BPF_K, 0),
23673 +- BPF_STMT(BPF_RET | BPF_K, 1),
23674 +- },
23675 +- CLASSIC,
23676 +- { },
23677 +- { { 1, 1 } },
23678 +- },
23679 +- {
23680 +- "LD_IND",
23681 +- .u.insns = {
23682 +- BPF_STMT(BPF_LDX | BPF_LEN, 0),
23683 +- BPF_STMT(BPF_LD | BPF_H | BPF_IND, MAX_K),
23684 +- BPF_STMT(BPF_RET | BPF_K, 1)
23685 +- },
23686 +- CLASSIC,
23687 +- { },
23688 +- { { 1, 0 }, { 10, 0 }, { 60, 0 } },
23689 +- },
23690 +- {
23691 +- "LD_ABS",
23692 +- .u.insns = {
23693 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS, 1000),
23694 +- BPF_STMT(BPF_RET | BPF_K, 1)
23695 +- },
23696 +- CLASSIC,
23697 +- { },
23698 +- { { 1, 0 }, { 10, 0 }, { 60, 0 } },
23699 +- },
23700 +- {
23701 +- "LD_ABS_LL",
23702 +- .u.insns = {
23703 +- BPF_STMT(BPF_LD | BPF_B | BPF_ABS, SKF_LL_OFF),
23704 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
23705 +- BPF_STMT(BPF_LD | BPF_B | BPF_ABS, SKF_LL_OFF + 1),
23706 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
23707 +- BPF_STMT(BPF_RET | BPF_A, 0)
23708 +- },
23709 +- CLASSIC,
23710 +- { 1, 2, 3 },
23711 +- { { 1, 0 }, { 2, 3 } },
23712 +- },
23713 +- {
23714 +- "LD_IND_LL",
23715 +- .u.insns = {
23716 +- BPF_STMT(BPF_LD | BPF_IMM, SKF_LL_OFF - 1),
23717 +- BPF_STMT(BPF_LDX | BPF_LEN, 0),
23718 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
23719 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
23720 +- BPF_STMT(BPF_LD | BPF_B | BPF_IND, 0),
23721 +- BPF_STMT(BPF_RET | BPF_A, 0)
23722 +- },
23723 +- CLASSIC,
23724 +- { 1, 2, 3, 0xff },
23725 +- { { 1, 1 }, { 3, 3 }, { 4, 0xff } },
23726 +- },
23727 +- {
23728 +- "LD_ABS_NET",
23729 +- .u.insns = {
23730 +- BPF_STMT(BPF_LD | BPF_B | BPF_ABS, SKF_NET_OFF),
23731 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
23732 +- BPF_STMT(BPF_LD | BPF_B | BPF_ABS, SKF_NET_OFF + 1),
23733 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
23734 +- BPF_STMT(BPF_RET | BPF_A, 0)
23735 +- },
23736 +- CLASSIC,
23737 +- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3 },
23738 +- { { 15, 0 }, { 16, 3 } },
23739 +- },
23740 +- {
23741 +- "LD_IND_NET",
23742 +- .u.insns = {
23743 +- BPF_STMT(BPF_LD | BPF_IMM, SKF_NET_OFF - 15),
23744 +- BPF_STMT(BPF_LDX | BPF_LEN, 0),
23745 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
23746 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
23747 +- BPF_STMT(BPF_LD | BPF_B | BPF_IND, 0),
23748 +- BPF_STMT(BPF_RET | BPF_A, 0)
23749 +- },
23750 +- CLASSIC,
23751 +- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3 },
23752 +- { { 14, 0 }, { 15, 1 }, { 17, 3 } },
23753 +- },
23754 +- {
23755 +- "LD_PKTTYPE",
23756 +- .u.insns = {
23757 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23758 +- SKF_AD_OFF + SKF_AD_PKTTYPE),
23759 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, SKB_TYPE, 1, 0),
23760 +- BPF_STMT(BPF_RET | BPF_K, 1),
23761 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23762 +- SKF_AD_OFF + SKF_AD_PKTTYPE),
23763 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, SKB_TYPE, 1, 0),
23764 +- BPF_STMT(BPF_RET | BPF_K, 1),
23765 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23766 +- SKF_AD_OFF + SKF_AD_PKTTYPE),
23767 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, SKB_TYPE, 1, 0),
23768 +- BPF_STMT(BPF_RET | BPF_K, 1),
23769 +- BPF_STMT(BPF_RET | BPF_A, 0)
23770 +- },
23771 +- CLASSIC,
23772 +- { },
23773 +- { { 1, 3 }, { 10, 3 } },
23774 +- },
23775 +- {
23776 +- "LD_MARK",
23777 +- .u.insns = {
23778 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23779 +- SKF_AD_OFF + SKF_AD_MARK),
23780 +- BPF_STMT(BPF_RET | BPF_A, 0)
23781 +- },
23782 +- CLASSIC,
23783 +- { },
23784 +- { { 1, SKB_MARK}, { 10, SKB_MARK} },
23785 +- },
23786 +- {
23787 +- "LD_RXHASH",
23788 +- .u.insns = {
23789 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23790 +- SKF_AD_OFF + SKF_AD_RXHASH),
23791 +- BPF_STMT(BPF_RET | BPF_A, 0)
23792 +- },
23793 +- CLASSIC,
23794 +- { },
23795 +- { { 1, SKB_HASH}, { 10, SKB_HASH} },
23796 +- },
23797 +- {
23798 +- "LD_QUEUE",
23799 +- .u.insns = {
23800 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23801 +- SKF_AD_OFF + SKF_AD_QUEUE),
23802 +- BPF_STMT(BPF_RET | BPF_A, 0)
23803 +- },
23804 +- CLASSIC,
23805 +- { },
23806 +- { { 1, SKB_QUEUE_MAP }, { 10, SKB_QUEUE_MAP } },
23807 +- },
23808 +- {
23809 +- "LD_PROTOCOL",
23810 +- .u.insns = {
23811 +- BPF_STMT(BPF_LD | BPF_B | BPF_ABS, 1),
23812 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 20, 1, 0),
23813 +- BPF_STMT(BPF_RET | BPF_K, 0),
23814 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23815 +- SKF_AD_OFF + SKF_AD_PROTOCOL),
23816 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
23817 +- BPF_STMT(BPF_LD | BPF_B | BPF_ABS, 2),
23818 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 30, 1, 0),
23819 +- BPF_STMT(BPF_RET | BPF_K, 0),
23820 +- BPF_STMT(BPF_MISC | BPF_TXA, 0),
23821 +- BPF_STMT(BPF_RET | BPF_A, 0)
23822 +- },
23823 +- CLASSIC,
23824 +- { 10, 20, 30 },
23825 +- { { 10, ETH_P_IP }, { 100, ETH_P_IP } },
23826 +- },
23827 +- {
23828 +- "LD_VLAN_TAG",
23829 +- .u.insns = {
23830 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23831 +- SKF_AD_OFF + SKF_AD_VLAN_TAG),
23832 +- BPF_STMT(BPF_RET | BPF_A, 0)
23833 +- },
23834 +- CLASSIC,
23835 +- { },
23836 +- {
23837 +- { 1, SKB_VLAN_TCI & ~VLAN_TAG_PRESENT },
23838 +- { 10, SKB_VLAN_TCI & ~VLAN_TAG_PRESENT }
23839 +- },
23840 +- },
23841 +- {
23842 +- "LD_VLAN_TAG_PRESENT",
23843 +- .u.insns = {
23844 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23845 +- SKF_AD_OFF + SKF_AD_VLAN_TAG_PRESENT),
23846 +- BPF_STMT(BPF_RET | BPF_A, 0)
23847 +- },
23848 +- CLASSIC,
23849 +- { },
23850 +- {
23851 +- { 1, !!(SKB_VLAN_TCI & VLAN_TAG_PRESENT) },
23852 +- { 10, !!(SKB_VLAN_TCI & VLAN_TAG_PRESENT) }
23853 +- },
23854 +- },
23855 +- {
23856 +- "LD_IFINDEX",
23857 +- .u.insns = {
23858 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23859 +- SKF_AD_OFF + SKF_AD_IFINDEX),
23860 +- BPF_STMT(BPF_RET | BPF_A, 0)
23861 +- },
23862 +- CLASSIC,
23863 +- { },
23864 +- { { 1, SKB_DEV_IFINDEX }, { 10, SKB_DEV_IFINDEX } },
23865 +- },
23866 +- {
23867 +- "LD_HATYPE",
23868 +- .u.insns = {
23869 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23870 +- SKF_AD_OFF + SKF_AD_HATYPE),
23871 +- BPF_STMT(BPF_RET | BPF_A, 0)
23872 +- },
23873 +- CLASSIC,
23874 +- { },
23875 +- { { 1, SKB_DEV_TYPE }, { 10, SKB_DEV_TYPE } },
23876 +- },
23877 +- {
23878 +- "LD_CPU",
23879 +- .u.insns = {
23880 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23881 +- SKF_AD_OFF + SKF_AD_CPU),
23882 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
23883 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23884 +- SKF_AD_OFF + SKF_AD_CPU),
23885 +- BPF_STMT(BPF_ALU | BPF_SUB | BPF_X, 0),
23886 +- BPF_STMT(BPF_RET | BPF_A, 0)
23887 +- },
23888 +- CLASSIC,
23889 +- { },
23890 +- { { 1, 0 }, { 10, 0 } },
23891 +- },
23892 +- {
23893 +- "LD_NLATTR",
23894 +- .u.insns = {
23895 +- BPF_STMT(BPF_LDX | BPF_IMM, 2),
23896 +- BPF_STMT(BPF_MISC | BPF_TXA, 0),
23897 +- BPF_STMT(BPF_LDX | BPF_IMM, 3),
23898 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23899 +- SKF_AD_OFF + SKF_AD_NLATTR),
23900 +- BPF_STMT(BPF_RET | BPF_A, 0)
23901 +- },
23902 +- CLASSIC,
23903 +-#ifdef __BIG_ENDIAN
23904 +- { 0xff, 0xff, 0, 4, 0, 2, 0, 4, 0, 3 },
23905 +-#else
23906 +- { 0xff, 0xff, 4, 0, 2, 0, 4, 0, 3, 0 },
23907 +-#endif
23908 +- { { 4, 0 }, { 20, 6 } },
23909 +- },
23910 +- {
23911 +- "LD_NLATTR_NEST",
23912 +- .u.insns = {
23913 +- BPF_STMT(BPF_LD | BPF_IMM, 2),
23914 +- BPF_STMT(BPF_LDX | BPF_IMM, 3),
23915 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23916 +- SKF_AD_OFF + SKF_AD_NLATTR_NEST),
23917 +- BPF_STMT(BPF_LD | BPF_IMM, 2),
23918 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23919 +- SKF_AD_OFF + SKF_AD_NLATTR_NEST),
23920 +- BPF_STMT(BPF_LD | BPF_IMM, 2),
23921 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23922 +- SKF_AD_OFF + SKF_AD_NLATTR_NEST),
23923 +- BPF_STMT(BPF_LD | BPF_IMM, 2),
23924 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23925 +- SKF_AD_OFF + SKF_AD_NLATTR_NEST),
23926 +- BPF_STMT(BPF_LD | BPF_IMM, 2),
23927 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23928 +- SKF_AD_OFF + SKF_AD_NLATTR_NEST),
23929 +- BPF_STMT(BPF_LD | BPF_IMM, 2),
23930 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23931 +- SKF_AD_OFF + SKF_AD_NLATTR_NEST),
23932 +- BPF_STMT(BPF_LD | BPF_IMM, 2),
23933 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23934 +- SKF_AD_OFF + SKF_AD_NLATTR_NEST),
23935 +- BPF_STMT(BPF_LD | BPF_IMM, 2),
23936 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23937 +- SKF_AD_OFF + SKF_AD_NLATTR_NEST),
23938 +- BPF_STMT(BPF_RET | BPF_A, 0)
23939 +- },
23940 +- CLASSIC,
23941 +-#ifdef __BIG_ENDIAN
23942 +- { 0xff, 0xff, 0, 12, 0, 1, 0, 4, 0, 2, 0, 4, 0, 3 },
23943 +-#else
23944 +- { 0xff, 0xff, 12, 0, 1, 0, 4, 0, 2, 0, 4, 0, 3, 0 },
23945 +-#endif
23946 +- { { 4, 0 }, { 20, 10 } },
23947 +- },
23948 +- {
23949 +- "LD_PAYLOAD_OFF",
23950 +- .u.insns = {
23951 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23952 +- SKF_AD_OFF + SKF_AD_PAY_OFFSET),
23953 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23954 +- SKF_AD_OFF + SKF_AD_PAY_OFFSET),
23955 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23956 +- SKF_AD_OFF + SKF_AD_PAY_OFFSET),
23957 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23958 +- SKF_AD_OFF + SKF_AD_PAY_OFFSET),
23959 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23960 +- SKF_AD_OFF + SKF_AD_PAY_OFFSET),
23961 +- BPF_STMT(BPF_RET | BPF_A, 0)
23962 +- },
23963 +- CLASSIC,
23964 +- /* 00:00:00:00:00:00 > 00:00:00:00:00:00, ethtype IPv4 (0x0800),
23965 +- * length 98: 127.0.0.1 > 127.0.0.1: ICMP echo request,
23966 +- * id 9737, seq 1, length 64
23967 +- */
23968 +- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
23969 +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
23970 +- 0x08, 0x00,
23971 +- 0x45, 0x00, 0x00, 0x54, 0xac, 0x8b, 0x40, 0x00, 0x40,
23972 +- 0x01, 0x90, 0x1b, 0x7f, 0x00, 0x00, 0x01 },
23973 +- { { 30, 0 }, { 100, 42 } },
23974 +- },
23975 +- {
23976 +- "LD_ANC_XOR",
23977 +- .u.insns = {
23978 +- BPF_STMT(BPF_LD | BPF_IMM, 10),
23979 +- BPF_STMT(BPF_LDX | BPF_IMM, 300),
23980 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
23981 +- SKF_AD_OFF + SKF_AD_ALU_XOR_X),
23982 +- BPF_STMT(BPF_RET | BPF_A, 0)
23983 +- },
23984 +- CLASSIC,
23985 +- { },
23986 +- { { 4, 10 ^ 300 }, { 20, 10 ^ 300 } },
23987 +- },
23988 +- {
23989 +- "SPILL_FILL",
23990 +- .u.insns = {
23991 +- BPF_STMT(BPF_LDX | BPF_LEN, 0),
23992 +- BPF_STMT(BPF_LD | BPF_IMM, 2),
23993 +- BPF_STMT(BPF_ALU | BPF_RSH, 1),
23994 +- BPF_STMT(BPF_ALU | BPF_XOR | BPF_X, 0),
23995 +- BPF_STMT(BPF_ST, 1), /* M1 = 1 ^ len */
23996 +- BPF_STMT(BPF_ALU | BPF_XOR | BPF_K, 0x80000000),
23997 +- BPF_STMT(BPF_ST, 2), /* M2 = 1 ^ len ^ 0x80000000 */
23998 +- BPF_STMT(BPF_STX, 15), /* M3 = len */
23999 +- BPF_STMT(BPF_LDX | BPF_MEM, 1),
24000 +- BPF_STMT(BPF_LD | BPF_MEM, 2),
24001 +- BPF_STMT(BPF_ALU | BPF_XOR | BPF_X, 0),
24002 +- BPF_STMT(BPF_LDX | BPF_MEM, 15),
24003 +- BPF_STMT(BPF_ALU | BPF_XOR | BPF_X, 0),
24004 +- BPF_STMT(BPF_RET | BPF_A, 0)
24005 +- },
24006 +- CLASSIC,
24007 +- { },
24008 +- { { 1, 0x80000001 }, { 2, 0x80000002 }, { 60, 0x80000000 ^ 60 } }
24009 +- },
24010 +- {
24011 +- "JEQ",
24012 +- .u.insns = {
24013 +- BPF_STMT(BPF_LDX | BPF_LEN, 0),
24014 +- BPF_STMT(BPF_LD | BPF_B | BPF_ABS, 2),
24015 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_X, 0, 0, 1),
24016 +- BPF_STMT(BPF_RET | BPF_K, 1),
24017 +- BPF_STMT(BPF_RET | BPF_K, MAX_K)
24018 +- },
24019 +- CLASSIC,
24020 +- { 3, 3, 3, 3, 3 },
24021 +- { { 1, 0 }, { 3, 1 }, { 4, MAX_K } },
24022 +- },
24023 +- {
24024 +- "JGT",
24025 +- .u.insns = {
24026 +- BPF_STMT(BPF_LDX | BPF_LEN, 0),
24027 +- BPF_STMT(BPF_LD | BPF_B | BPF_ABS, 2),
24028 +- BPF_JUMP(BPF_JMP | BPF_JGT | BPF_X, 0, 0, 1),
24029 +- BPF_STMT(BPF_RET | BPF_K, 1),
24030 +- BPF_STMT(BPF_RET | BPF_K, MAX_K)
24031 +- },
24032 +- CLASSIC,
24033 +- { 4, 4, 4, 3, 3 },
24034 +- { { 2, 0 }, { 3, 1 }, { 4, MAX_K } },
24035 +- },
24036 +- {
24037 +- "JGE",
24038 +- .u.insns = {
24039 +- BPF_STMT(BPF_LDX | BPF_LEN, 0),
24040 +- BPF_STMT(BPF_LD | BPF_B | BPF_IND, MAX_K),
24041 +- BPF_JUMP(BPF_JMP | BPF_JGE | BPF_K, 1, 1, 0),
24042 +- BPF_STMT(BPF_RET | BPF_K, 10),
24043 +- BPF_JUMP(BPF_JMP | BPF_JGE | BPF_K, 2, 1, 0),
24044 +- BPF_STMT(BPF_RET | BPF_K, 20),
24045 +- BPF_JUMP(BPF_JMP | BPF_JGE | BPF_K, 3, 1, 0),
24046 +- BPF_STMT(BPF_RET | BPF_K, 30),
24047 +- BPF_JUMP(BPF_JMP | BPF_JGE | BPF_K, 4, 1, 0),
24048 +- BPF_STMT(BPF_RET | BPF_K, 40),
24049 +- BPF_STMT(BPF_RET | BPF_K, MAX_K)
24050 +- },
24051 +- CLASSIC,
24052 +- { 1, 2, 3, 4, 5 },
24053 +- { { 1, 20 }, { 3, 40 }, { 5, MAX_K } },
24054 +- },
24055 +- {
24056 +- "JSET",
24057 +- .u.insns = {
24058 +- BPF_JUMP(BPF_JMP | BPF_JA, 0, 0, 0),
24059 +- BPF_JUMP(BPF_JMP | BPF_JA, 1, 1, 1),
24060 +- BPF_JUMP(BPF_JMP | BPF_JA, 0, 0, 0),
24061 +- BPF_JUMP(BPF_JMP | BPF_JA, 0, 0, 0),
24062 +- BPF_STMT(BPF_LDX | BPF_LEN, 0),
24063 +- BPF_STMT(BPF_MISC | BPF_TXA, 0),
24064 +- BPF_STMT(BPF_ALU | BPF_SUB | BPF_K, 4),
24065 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
24066 +- BPF_STMT(BPF_LD | BPF_W | BPF_IND, 0),
24067 +- BPF_JUMP(BPF_JMP | BPF_JSET | BPF_K, 1, 0, 1),
24068 +- BPF_STMT(BPF_RET | BPF_K, 10),
24069 +- BPF_JUMP(BPF_JMP | BPF_JSET | BPF_K, 0x80000000, 0, 1),
24070 +- BPF_STMT(BPF_RET | BPF_K, 20),
24071 +- BPF_JUMP(BPF_JMP | BPF_JSET | BPF_K, 0xffffff, 1, 0),
24072 +- BPF_STMT(BPF_RET | BPF_K, 30),
24073 +- BPF_JUMP(BPF_JMP | BPF_JSET | BPF_K, 0xffffff, 1, 0),
24074 +- BPF_STMT(BPF_RET | BPF_K, 30),
24075 +- BPF_JUMP(BPF_JMP | BPF_JSET | BPF_K, 0xffffff, 1, 0),
24076 +- BPF_STMT(BPF_RET | BPF_K, 30),
24077 +- BPF_JUMP(BPF_JMP | BPF_JSET | BPF_K, 0xffffff, 1, 0),
24078 +- BPF_STMT(BPF_RET | BPF_K, 30),
24079 +- BPF_JUMP(BPF_JMP | BPF_JSET | BPF_K, 0xffffff, 1, 0),
24080 +- BPF_STMT(BPF_RET | BPF_K, 30),
24081 +- BPF_STMT(BPF_RET | BPF_K, MAX_K)
24082 +- },
24083 +- CLASSIC,
24084 +- { 0, 0xAA, 0x55, 1 },
24085 +- { { 4, 10 }, { 5, 20 }, { 6, MAX_K } },
24086 +- },
24087 +- {
24088 +- "tcpdump port 22",
24089 +- .u.insns = {
24090 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 12),
24091 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 0x86dd, 0, 8), /* IPv6 */
24092 +- BPF_STMT(BPF_LD | BPF_B | BPF_ABS, 20),
24093 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 0x84, 2, 0),
24094 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 0x6, 1, 0),
24095 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 0x11, 0, 17),
24096 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 54),
24097 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 22, 14, 0),
24098 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 56),
24099 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 22, 12, 13),
24100 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 0x0800, 0, 12), /* IPv4 */
24101 +- BPF_STMT(BPF_LD | BPF_B | BPF_ABS, 23),
24102 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 0x84, 2, 0),
24103 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 0x6, 1, 0),
24104 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 0x11, 0, 8),
24105 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 20),
24106 +- BPF_JUMP(BPF_JMP | BPF_JSET | BPF_K, 0x1fff, 6, 0),
24107 +- BPF_STMT(BPF_LDX | BPF_B | BPF_MSH, 14),
24108 +- BPF_STMT(BPF_LD | BPF_H | BPF_IND, 14),
24109 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 22, 2, 0),
24110 +- BPF_STMT(BPF_LD | BPF_H | BPF_IND, 16),
24111 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 22, 0, 1),
24112 +- BPF_STMT(BPF_RET | BPF_K, 0xffff),
24113 +- BPF_STMT(BPF_RET | BPF_K, 0),
24114 +- },
24115 +- CLASSIC,
24116 +- /* 3c:07:54:43:e5:76 > 10:bf:48:d6:43:d6, ethertype IPv4(0x0800)
24117 +- * length 114: 10.1.1.149.49700 > 10.1.2.10.22: Flags [P.],
24118 +- * seq 1305692979:1305693027, ack 3650467037, win 65535,
24119 +- * options [nop,nop,TS val 2502645400 ecr 3971138], length 48
24120 +- */
24121 +- { 0x10, 0xbf, 0x48, 0xd6, 0x43, 0xd6,
24122 +- 0x3c, 0x07, 0x54, 0x43, 0xe5, 0x76,
24123 +- 0x08, 0x00,
24124 +- 0x45, 0x10, 0x00, 0x64, 0x75, 0xb5,
24125 +- 0x40, 0x00, 0x40, 0x06, 0xad, 0x2e, /* IP header */
24126 +- 0x0a, 0x01, 0x01, 0x95, /* ip src */
24127 +- 0x0a, 0x01, 0x02, 0x0a, /* ip dst */
24128 +- 0xc2, 0x24,
24129 +- 0x00, 0x16 /* dst port */ },
24130 +- { { 10, 0 }, { 30, 0 }, { 100, 65535 } },
24131 +- },
24132 +- {
24133 +- "tcpdump complex",
24134 +- .u.insns = {
24135 +- /* tcpdump -nei eth0 'tcp port 22 and (((ip[2:2] -
24136 +- * ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0) and
24137 +- * (len > 115 or len < 30000000000)' -d
24138 +- */
24139 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 12),
24140 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 0x86dd, 30, 0),
24141 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 0x800, 0, 29),
24142 +- BPF_STMT(BPF_LD | BPF_B | BPF_ABS, 23),
24143 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 0x6, 0, 27),
24144 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 20),
24145 +- BPF_JUMP(BPF_JMP | BPF_JSET | BPF_K, 0x1fff, 25, 0),
24146 +- BPF_STMT(BPF_LDX | BPF_B | BPF_MSH, 14),
24147 +- BPF_STMT(BPF_LD | BPF_H | BPF_IND, 14),
24148 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 22, 2, 0),
24149 +- BPF_STMT(BPF_LD | BPF_H | BPF_IND, 16),
24150 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 22, 0, 20),
24151 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 16),
24152 +- BPF_STMT(BPF_ST, 1),
24153 +- BPF_STMT(BPF_LD | BPF_B | BPF_ABS, 14),
24154 +- BPF_STMT(BPF_ALU | BPF_AND | BPF_K, 0xf),
24155 +- BPF_STMT(BPF_ALU | BPF_LSH | BPF_K, 2),
24156 +- BPF_STMT(BPF_MISC | BPF_TAX, 0x5), /* libpcap emits K on TAX */
24157 +- BPF_STMT(BPF_LD | BPF_MEM, 1),
24158 +- BPF_STMT(BPF_ALU | BPF_SUB | BPF_X, 0),
24159 +- BPF_STMT(BPF_ST, 5),
24160 +- BPF_STMT(BPF_LDX | BPF_B | BPF_MSH, 14),
24161 +- BPF_STMT(BPF_LD | BPF_B | BPF_IND, 26),
24162 +- BPF_STMT(BPF_ALU | BPF_AND | BPF_K, 0xf0),
24163 +- BPF_STMT(BPF_ALU | BPF_RSH | BPF_K, 2),
24164 +- BPF_STMT(BPF_MISC | BPF_TAX, 0x9), /* libpcap emits K on TAX */
24165 +- BPF_STMT(BPF_LD | BPF_MEM, 5),
24166 +- BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_X, 0, 4, 0),
24167 +- BPF_STMT(BPF_LD | BPF_LEN, 0),
24168 +- BPF_JUMP(BPF_JMP | BPF_JGT | BPF_K, 0x73, 1, 0),
24169 +- BPF_JUMP(BPF_JMP | BPF_JGE | BPF_K, 0xfc23ac00, 1, 0),
24170 +- BPF_STMT(BPF_RET | BPF_K, 0xffff),
24171 +- BPF_STMT(BPF_RET | BPF_K, 0),
24172 +- },
24173 +- CLASSIC,
24174 +- { 0x10, 0xbf, 0x48, 0xd6, 0x43, 0xd6,
24175 +- 0x3c, 0x07, 0x54, 0x43, 0xe5, 0x76,
24176 +- 0x08, 0x00,
24177 +- 0x45, 0x10, 0x00, 0x64, 0x75, 0xb5,
24178 +- 0x40, 0x00, 0x40, 0x06, 0xad, 0x2e, /* IP header */
24179 +- 0x0a, 0x01, 0x01, 0x95, /* ip src */
24180 +- 0x0a, 0x01, 0x02, 0x0a, /* ip dst */
24181 +- 0xc2, 0x24,
24182 +- 0x00, 0x16 /* dst port */ },
24183 +- { { 10, 0 }, { 30, 0 }, { 100, 65535 } },
24184 +- },
24185 +- {
24186 +- "RET_A",
24187 +- .u.insns = {
24188 +- /* check that unitialized X and A contain zeros */
24189 +- BPF_STMT(BPF_MISC | BPF_TXA, 0),
24190 +- BPF_STMT(BPF_RET | BPF_A, 0)
24191 +- },
24192 +- CLASSIC,
24193 +- { },
24194 +- { {1, 0}, {2, 0} },
24195 +- },
24196 +- {
24197 +- "INT: ADD trivial",
24198 +- .u.insns_int = {
24199 +- BPF_ALU64_IMM(BPF_MOV, R1, 1),
24200 +- BPF_ALU64_IMM(BPF_ADD, R1, 2),
24201 +- BPF_ALU64_IMM(BPF_MOV, R2, 3),
24202 +- BPF_ALU64_REG(BPF_SUB, R1, R2),
24203 +- BPF_ALU64_IMM(BPF_ADD, R1, -1),
24204 +- BPF_ALU64_IMM(BPF_MUL, R1, 3),
24205 +- BPF_ALU64_REG(BPF_MOV, R0, R1),
24206 +- BPF_EXIT_INSN(),
24207 +- },
24208 +- INTERNAL,
24209 +- { },
24210 +- { { 0, 0xfffffffd } }
24211 +- },
24212 +- {
24213 +- "INT: MUL_X",
24214 +- .u.insns_int = {
24215 +- BPF_ALU64_IMM(BPF_MOV, R0, -1),
24216 +- BPF_ALU64_IMM(BPF_MOV, R1, -1),
24217 +- BPF_ALU64_IMM(BPF_MOV, R2, 3),
24218 +- BPF_ALU64_REG(BPF_MUL, R1, R2),
24219 +- BPF_JMP_IMM(BPF_JEQ, R1, 0xfffffffd, 1),
24220 +- BPF_EXIT_INSN(),
24221 +- BPF_ALU64_IMM(BPF_MOV, R0, 1),
24222 +- BPF_EXIT_INSN(),
24223 +- },
24224 +- INTERNAL,
24225 +- { },
24226 +- { { 0, 1 } }
24227 +- },
24228 +- {
24229 +- "INT: MUL_X2",
24230 +- .u.insns_int = {
24231 +- BPF_ALU32_IMM(BPF_MOV, R0, -1),
24232 +- BPF_ALU32_IMM(BPF_MOV, R1, -1),
24233 +- BPF_ALU32_IMM(BPF_MOV, R2, 3),
24234 +- BPF_ALU64_REG(BPF_MUL, R1, R2),
24235 +- BPF_ALU64_IMM(BPF_RSH, R1, 8),
24236 +- BPF_JMP_IMM(BPF_JEQ, R1, 0x2ffffff, 1),
24237 +- BPF_EXIT_INSN(),
24238 +- BPF_ALU32_IMM(BPF_MOV, R0, 1),
24239 +- BPF_EXIT_INSN(),
24240 +- },
24241 +- INTERNAL,
24242 +- { },
24243 +- { { 0, 1 } }
24244 +- },
24245 +- {
24246 +- "INT: MUL32_X",
24247 +- .u.insns_int = {
24248 +- BPF_ALU32_IMM(BPF_MOV, R0, -1),
24249 +- BPF_ALU64_IMM(BPF_MOV, R1, -1),
24250 +- BPF_ALU32_IMM(BPF_MOV, R2, 3),
24251 +- BPF_ALU32_REG(BPF_MUL, R1, R2),
24252 +- BPF_ALU64_IMM(BPF_RSH, R1, 8),
24253 +- BPF_JMP_IMM(BPF_JEQ, R1, 0xffffff, 1),
24254 +- BPF_EXIT_INSN(),
24255 +- BPF_ALU32_IMM(BPF_MOV, R0, 1),
24256 +- BPF_EXIT_INSN(),
24257 +- },
24258 +- INTERNAL,
24259 +- { },
24260 +- { { 0, 1 } }
24261 +- },
24262 +- {
24263 +- /* Have to test all register combinations, since
24264 +- * JITing of different registers will produce
24265 +- * different asm code.
24266 +- */
24267 +- "INT: ADD 64-bit",
24268 +- .u.insns_int = {
24269 +- BPF_ALU64_IMM(BPF_MOV, R0, 0),
24270 +- BPF_ALU64_IMM(BPF_MOV, R1, 1),
24271 +- BPF_ALU64_IMM(BPF_MOV, R2, 2),
24272 +- BPF_ALU64_IMM(BPF_MOV, R3, 3),
24273 +- BPF_ALU64_IMM(BPF_MOV, R4, 4),
24274 +- BPF_ALU64_IMM(BPF_MOV, R5, 5),
24275 +- BPF_ALU64_IMM(BPF_MOV, R6, 6),
24276 +- BPF_ALU64_IMM(BPF_MOV, R7, 7),
24277 +- BPF_ALU64_IMM(BPF_MOV, R8, 8),
24278 +- BPF_ALU64_IMM(BPF_MOV, R9, 9),
24279 +- BPF_ALU64_IMM(BPF_ADD, R0, 20),
24280 +- BPF_ALU64_IMM(BPF_ADD, R1, 20),
24281 +- BPF_ALU64_IMM(BPF_ADD, R2, 20),
24282 +- BPF_ALU64_IMM(BPF_ADD, R3, 20),
24283 +- BPF_ALU64_IMM(BPF_ADD, R4, 20),
24284 +- BPF_ALU64_IMM(BPF_ADD, R5, 20),
24285 +- BPF_ALU64_IMM(BPF_ADD, R6, 20),
24286 +- BPF_ALU64_IMM(BPF_ADD, R7, 20),
24287 +- BPF_ALU64_IMM(BPF_ADD, R8, 20),
24288 +- BPF_ALU64_IMM(BPF_ADD, R9, 20),
24289 +- BPF_ALU64_IMM(BPF_SUB, R0, 10),
24290 +- BPF_ALU64_IMM(BPF_SUB, R1, 10),
24291 +- BPF_ALU64_IMM(BPF_SUB, R2, 10),
24292 +- BPF_ALU64_IMM(BPF_SUB, R3, 10),
24293 +- BPF_ALU64_IMM(BPF_SUB, R4, 10),
24294 +- BPF_ALU64_IMM(BPF_SUB, R5, 10),
24295 +- BPF_ALU64_IMM(BPF_SUB, R6, 10),
24296 +- BPF_ALU64_IMM(BPF_SUB, R7, 10),
24297 +- BPF_ALU64_IMM(BPF_SUB, R8, 10),
24298 +- BPF_ALU64_IMM(BPF_SUB, R9, 10),
24299 +- BPF_ALU64_REG(BPF_ADD, R0, R0),
24300 +- BPF_ALU64_REG(BPF_ADD, R0, R1),
24301 +- BPF_ALU64_REG(BPF_ADD, R0, R2),
24302 +- BPF_ALU64_REG(BPF_ADD, R0, R3),
24303 +- BPF_ALU64_REG(BPF_ADD, R0, R4),
24304 +- BPF_ALU64_REG(BPF_ADD, R0, R5),
24305 +- BPF_ALU64_REG(BPF_ADD, R0, R6),
24306 +- BPF_ALU64_REG(BPF_ADD, R0, R7),
24307 +- BPF_ALU64_REG(BPF_ADD, R0, R8),
24308 +- BPF_ALU64_REG(BPF_ADD, R0, R9), /* R0 == 155 */
24309 +- BPF_JMP_IMM(BPF_JEQ, R0, 155, 1),
24310 +- BPF_EXIT_INSN(),
24311 +- BPF_ALU64_REG(BPF_ADD, R1, R0),
24312 +- BPF_ALU64_REG(BPF_ADD, R1, R1),
24313 +- BPF_ALU64_REG(BPF_ADD, R1, R2),
24314 +- BPF_ALU64_REG(BPF_ADD, R1, R3),
24315 +- BPF_ALU64_REG(BPF_ADD, R1, R4),
24316 +- BPF_ALU64_REG(BPF_ADD, R1, R5),
24317 +- BPF_ALU64_REG(BPF_ADD, R1, R6),
24318 +- BPF_ALU64_REG(BPF_ADD, R1, R7),
24319 +- BPF_ALU64_REG(BPF_ADD, R1, R8),
24320 +- BPF_ALU64_REG(BPF_ADD, R1, R9), /* R1 == 456 */
24321 +- BPF_JMP_IMM(BPF_JEQ, R1, 456, 1),
24322 +- BPF_EXIT_INSN(),
24323 +- BPF_ALU64_REG(BPF_ADD, R2, R0),
24324 +- BPF_ALU64_REG(BPF_ADD, R2, R1),
24325 +- BPF_ALU64_REG(BPF_ADD, R2, R2),
24326 +- BPF_ALU64_REG(BPF_ADD, R2, R3),
24327 +- BPF_ALU64_REG(BPF_ADD, R2, R4),
24328 +- BPF_ALU64_REG(BPF_ADD, R2, R5),
24329 +- BPF_ALU64_REG(BPF_ADD, R2, R6),
24330 +- BPF_ALU64_REG(BPF_ADD, R2, R7),
24331 +- BPF_ALU64_REG(BPF_ADD, R2, R8),
24332 +- BPF_ALU64_REG(BPF_ADD, R2, R9), /* R2 == 1358 */
24333 +- BPF_JMP_IMM(BPF_JEQ, R2, 1358, 1),
24334 +- BPF_EXIT_INSN(),
24335 +- BPF_ALU64_REG(BPF_ADD, R3, R0),
24336 +- BPF_ALU64_REG(BPF_ADD, R3, R1),
24337 +- BPF_ALU64_REG(BPF_ADD, R3, R2),
24338 +- BPF_ALU64_REG(BPF_ADD, R3, R3),
24339 +- BPF_ALU64_REG(BPF_ADD, R3, R4),
24340 +- BPF_ALU64_REG(BPF_ADD, R3, R5),
24341 +- BPF_ALU64_REG(BPF_ADD, R3, R6),
24342 +- BPF_ALU64_REG(BPF_ADD, R3, R7),
24343 +- BPF_ALU64_REG(BPF_ADD, R3, R8),
24344 +- BPF_ALU64_REG(BPF_ADD, R3, R9), /* R3 == 4063 */
24345 +- BPF_JMP_IMM(BPF_JEQ, R3, 4063, 1),
24346 +- BPF_EXIT_INSN(),
24347 +- BPF_ALU64_REG(BPF_ADD, R4, R0),
24348 +- BPF_ALU64_REG(BPF_ADD, R4, R1),
24349 +- BPF_ALU64_REG(BPF_ADD, R4, R2),
24350 +- BPF_ALU64_REG(BPF_ADD, R4, R3),
24351 +- BPF_ALU64_REG(BPF_ADD, R4, R4),
24352 +- BPF_ALU64_REG(BPF_ADD, R4, R5),
24353 +- BPF_ALU64_REG(BPF_ADD, R4, R6),
24354 +- BPF_ALU64_REG(BPF_ADD, R4, R7),
24355 +- BPF_ALU64_REG(BPF_ADD, R4, R8),
24356 +- BPF_ALU64_REG(BPF_ADD, R4, R9), /* R4 == 12177 */
24357 +- BPF_JMP_IMM(BPF_JEQ, R4, 12177, 1),
24358 +- BPF_EXIT_INSN(),
24359 +- BPF_ALU64_REG(BPF_ADD, R5, R0),
24360 +- BPF_ALU64_REG(BPF_ADD, R5, R1),
24361 +- BPF_ALU64_REG(BPF_ADD, R5, R2),
24362 +- BPF_ALU64_REG(BPF_ADD, R5, R3),
24363 +- BPF_ALU64_REG(BPF_ADD, R5, R4),
24364 +- BPF_ALU64_REG(BPF_ADD, R5, R5),
24365 +- BPF_ALU64_REG(BPF_ADD, R5, R6),
24366 +- BPF_ALU64_REG(BPF_ADD, R5, R7),
24367 +- BPF_ALU64_REG(BPF_ADD, R5, R8),
24368 +- BPF_ALU64_REG(BPF_ADD, R5, R9), /* R5 == 36518 */
24369 +- BPF_JMP_IMM(BPF_JEQ, R5, 36518, 1),
24370 +- BPF_EXIT_INSN(),
24371 +- BPF_ALU64_REG(BPF_ADD, R6, R0),
24372 +- BPF_ALU64_REG(BPF_ADD, R6, R1),
24373 +- BPF_ALU64_REG(BPF_ADD, R6, R2),
24374 +- BPF_ALU64_REG(BPF_ADD, R6, R3),
24375 +- BPF_ALU64_REG(BPF_ADD, R6, R4),
24376 +- BPF_ALU64_REG(BPF_ADD, R6, R5),
24377 +- BPF_ALU64_REG(BPF_ADD, R6, R6),
24378 +- BPF_ALU64_REG(BPF_ADD, R6, R7),
24379 +- BPF_ALU64_REG(BPF_ADD, R6, R8),
24380 +- BPF_ALU64_REG(BPF_ADD, R6, R9), /* R6 == 109540 */
24381 +- BPF_JMP_IMM(BPF_JEQ, R6, 109540, 1),
24382 +- BPF_EXIT_INSN(),
24383 +- BPF_ALU64_REG(BPF_ADD, R7, R0),
24384 +- BPF_ALU64_REG(BPF_ADD, R7, R1),
24385 +- BPF_ALU64_REG(BPF_ADD, R7, R2),
24386 +- BPF_ALU64_REG(BPF_ADD, R7, R3),
24387 +- BPF_ALU64_REG(BPF_ADD, R7, R4),
24388 +- BPF_ALU64_REG(BPF_ADD, R7, R5),
24389 +- BPF_ALU64_REG(BPF_ADD, R7, R6),
24390 +- BPF_ALU64_REG(BPF_ADD, R7, R7),
24391 +- BPF_ALU64_REG(BPF_ADD, R7, R8),
24392 +- BPF_ALU64_REG(BPF_ADD, R7, R9), /* R7 == 328605 */
24393 +- BPF_JMP_IMM(BPF_JEQ, R7, 328605, 1),
24394 +- BPF_EXIT_INSN(),
24395 +- BPF_ALU64_REG(BPF_ADD, R8, R0),
24396 +- BPF_ALU64_REG(BPF_ADD, R8, R1),
24397 +- BPF_ALU64_REG(BPF_ADD, R8, R2),
24398 +- BPF_ALU64_REG(BPF_ADD, R8, R3),
24399 +- BPF_ALU64_REG(BPF_ADD, R8, R4),
24400 +- BPF_ALU64_REG(BPF_ADD, R8, R5),
24401 +- BPF_ALU64_REG(BPF_ADD, R8, R6),
24402 +- BPF_ALU64_REG(BPF_ADD, R8, R7),
24403 +- BPF_ALU64_REG(BPF_ADD, R8, R8),
24404 +- BPF_ALU64_REG(BPF_ADD, R8, R9), /* R8 == 985799 */
24405 +- BPF_JMP_IMM(BPF_JEQ, R8, 985799, 1),
24406 +- BPF_EXIT_INSN(),
24407 +- BPF_ALU64_REG(BPF_ADD, R9, R0),
24408 +- BPF_ALU64_REG(BPF_ADD, R9, R1),
24409 +- BPF_ALU64_REG(BPF_ADD, R9, R2),
24410 +- BPF_ALU64_REG(BPF_ADD, R9, R3),
24411 +- BPF_ALU64_REG(BPF_ADD, R9, R4),
24412 +- BPF_ALU64_REG(BPF_ADD, R9, R5),
24413 +- BPF_ALU64_REG(BPF_ADD, R9, R6),
24414 +- BPF_ALU64_REG(BPF_ADD, R9, R7),
24415 +- BPF_ALU64_REG(BPF_ADD, R9, R8),
24416 +- BPF_ALU64_REG(BPF_ADD, R9, R9), /* R9 == 2957380 */
24417 +- BPF_ALU64_REG(BPF_MOV, R0, R9),
24418 +- BPF_EXIT_INSN(),
24419 +- },
24420 +- INTERNAL,
24421 +- { },
24422 +- { { 0, 2957380 } }
24423 +- },
24424 +- {
24425 +- "INT: ADD 32-bit",
24426 +- .u.insns_int = {
24427 +- BPF_ALU32_IMM(BPF_MOV, R0, 20),
24428 +- BPF_ALU32_IMM(BPF_MOV, R1, 1),
24429 +- BPF_ALU32_IMM(BPF_MOV, R2, 2),
24430 +- BPF_ALU32_IMM(BPF_MOV, R3, 3),
24431 +- BPF_ALU32_IMM(BPF_MOV, R4, 4),
24432 +- BPF_ALU32_IMM(BPF_MOV, R5, 5),
24433 +- BPF_ALU32_IMM(BPF_MOV, R6, 6),
24434 +- BPF_ALU32_IMM(BPF_MOV, R7, 7),
24435 +- BPF_ALU32_IMM(BPF_MOV, R8, 8),
24436 +- BPF_ALU32_IMM(BPF_MOV, R9, 9),
24437 +- BPF_ALU64_IMM(BPF_ADD, R1, 10),
24438 +- BPF_ALU64_IMM(BPF_ADD, R2, 10),
24439 +- BPF_ALU64_IMM(BPF_ADD, R3, 10),
24440 +- BPF_ALU64_IMM(BPF_ADD, R4, 10),
24441 +- BPF_ALU64_IMM(BPF_ADD, R5, 10),
24442 +- BPF_ALU64_IMM(BPF_ADD, R6, 10),
24443 +- BPF_ALU64_IMM(BPF_ADD, R7, 10),
24444 +- BPF_ALU64_IMM(BPF_ADD, R8, 10),
24445 +- BPF_ALU64_IMM(BPF_ADD, R9, 10),
24446 +- BPF_ALU32_REG(BPF_ADD, R0, R1),
24447 +- BPF_ALU32_REG(BPF_ADD, R0, R2),
24448 +- BPF_ALU32_REG(BPF_ADD, R0, R3),
24449 +- BPF_ALU32_REG(BPF_ADD, R0, R4),
24450 +- BPF_ALU32_REG(BPF_ADD, R0, R5),
24451 +- BPF_ALU32_REG(BPF_ADD, R0, R6),
24452 +- BPF_ALU32_REG(BPF_ADD, R0, R7),
24453 +- BPF_ALU32_REG(BPF_ADD, R0, R8),
24454 +- BPF_ALU32_REG(BPF_ADD, R0, R9), /* R0 == 155 */
24455 +- BPF_JMP_IMM(BPF_JEQ, R0, 155, 1),
24456 +- BPF_EXIT_INSN(),
24457 +- BPF_ALU32_REG(BPF_ADD, R1, R0),
24458 +- BPF_ALU32_REG(BPF_ADD, R1, R1),
24459 +- BPF_ALU32_REG(BPF_ADD, R1, R2),
24460 +- BPF_ALU32_REG(BPF_ADD, R1, R3),
24461 +- BPF_ALU32_REG(BPF_ADD, R1, R4),
24462 +- BPF_ALU32_REG(BPF_ADD, R1, R5),
24463 +- BPF_ALU32_REG(BPF_ADD, R1, R6),
24464 +- BPF_ALU32_REG(BPF_ADD, R1, R7),
24465 +- BPF_ALU32_REG(BPF_ADD, R1, R8),
24466 +- BPF_ALU32_REG(BPF_ADD, R1, R9), /* R1 == 456 */
24467 +- BPF_JMP_IMM(BPF_JEQ, R1, 456, 1),
24468 +- BPF_EXIT_INSN(),
24469 +- BPF_ALU32_REG(BPF_ADD, R2, R0),
24470 +- BPF_ALU32_REG(BPF_ADD, R2, R1),
24471 +- BPF_ALU32_REG(BPF_ADD, R2, R2),
24472 +- BPF_ALU32_REG(BPF_ADD, R2, R3),
24473 +- BPF_ALU32_REG(BPF_ADD, R2, R4),
24474 +- BPF_ALU32_REG(BPF_ADD, R2, R5),
24475 +- BPF_ALU32_REG(BPF_ADD, R2, R6),
24476 +- BPF_ALU32_REG(BPF_ADD, R2, R7),
24477 +- BPF_ALU32_REG(BPF_ADD, R2, R8),
24478 +- BPF_ALU32_REG(BPF_ADD, R2, R9), /* R2 == 1358 */
24479 +- BPF_JMP_IMM(BPF_JEQ, R2, 1358, 1),
24480 +- BPF_EXIT_INSN(),
24481 +- BPF_ALU32_REG(BPF_ADD, R3, R0),
24482 +- BPF_ALU32_REG(BPF_ADD, R3, R1),
24483 +- BPF_ALU32_REG(BPF_ADD, R3, R2),
24484 +- BPF_ALU32_REG(BPF_ADD, R3, R3),
24485 +- BPF_ALU32_REG(BPF_ADD, R3, R4),
24486 +- BPF_ALU32_REG(BPF_ADD, R3, R5),
24487 +- BPF_ALU32_REG(BPF_ADD, R3, R6),
24488 +- BPF_ALU32_REG(BPF_ADD, R3, R7),
24489 +- BPF_ALU32_REG(BPF_ADD, R3, R8),
24490 +- BPF_ALU32_REG(BPF_ADD, R3, R9), /* R3 == 4063 */
24491 +- BPF_JMP_IMM(BPF_JEQ, R3, 4063, 1),
24492 +- BPF_EXIT_INSN(),
24493 +- BPF_ALU32_REG(BPF_ADD, R4, R0),
24494 +- BPF_ALU32_REG(BPF_ADD, R4, R1),
24495 +- BPF_ALU32_REG(BPF_ADD, R4, R2),
24496 +- BPF_ALU32_REG(BPF_ADD, R4, R3),
24497 +- BPF_ALU32_REG(BPF_ADD, R4, R4),
24498 +- BPF_ALU32_REG(BPF_ADD, R4, R5),
24499 +- BPF_ALU32_REG(BPF_ADD, R4, R6),
24500 +- BPF_ALU32_REG(BPF_ADD, R4, R7),
24501 +- BPF_ALU32_REG(BPF_ADD, R4, R8),
24502 +- BPF_ALU32_REG(BPF_ADD, R4, R9), /* R4 == 12177 */
24503 +- BPF_JMP_IMM(BPF_JEQ, R4, 12177, 1),
24504 +- BPF_EXIT_INSN(),
24505 +- BPF_ALU32_REG(BPF_ADD, R5, R0),
24506 +- BPF_ALU32_REG(BPF_ADD, R5, R1),
24507 +- BPF_ALU32_REG(BPF_ADD, R5, R2),
24508 +- BPF_ALU32_REG(BPF_ADD, R5, R3),
24509 +- BPF_ALU32_REG(BPF_ADD, R5, R4),
24510 +- BPF_ALU32_REG(BPF_ADD, R5, R5),
24511 +- BPF_ALU32_REG(BPF_ADD, R5, R6),
24512 +- BPF_ALU32_REG(BPF_ADD, R5, R7),
24513 +- BPF_ALU32_REG(BPF_ADD, R5, R8),
24514 +- BPF_ALU32_REG(BPF_ADD, R5, R9), /* R5 == 36518 */
24515 +- BPF_JMP_IMM(BPF_JEQ, R5, 36518, 1),
24516 +- BPF_EXIT_INSN(),
24517 +- BPF_ALU32_REG(BPF_ADD, R6, R0),
24518 +- BPF_ALU32_REG(BPF_ADD, R6, R1),
24519 +- BPF_ALU32_REG(BPF_ADD, R6, R2),
24520 +- BPF_ALU32_REG(BPF_ADD, R6, R3),
24521 +- BPF_ALU32_REG(BPF_ADD, R6, R4),
24522 +- BPF_ALU32_REG(BPF_ADD, R6, R5),
24523 +- BPF_ALU32_REG(BPF_ADD, R6, R6),
24524 +- BPF_ALU32_REG(BPF_ADD, R6, R7),
24525 +- BPF_ALU32_REG(BPF_ADD, R6, R8),
24526 +- BPF_ALU32_REG(BPF_ADD, R6, R9), /* R6 == 109540 */
24527 +- BPF_JMP_IMM(BPF_JEQ, R6, 109540, 1),
24528 +- BPF_EXIT_INSN(),
24529 +- BPF_ALU32_REG(BPF_ADD, R7, R0),
24530 +- BPF_ALU32_REG(BPF_ADD, R7, R1),
24531 +- BPF_ALU32_REG(BPF_ADD, R7, R2),
24532 +- BPF_ALU32_REG(BPF_ADD, R7, R3),
24533 +- BPF_ALU32_REG(BPF_ADD, R7, R4),
24534 +- BPF_ALU32_REG(BPF_ADD, R7, R5),
24535 +- BPF_ALU32_REG(BPF_ADD, R7, R6),
24536 +- BPF_ALU32_REG(BPF_ADD, R7, R7),
24537 +- BPF_ALU32_REG(BPF_ADD, R7, R8),
24538 +- BPF_ALU32_REG(BPF_ADD, R7, R9), /* R7 == 328605 */
24539 +- BPF_JMP_IMM(BPF_JEQ, R7, 328605, 1),
24540 +- BPF_EXIT_INSN(),
24541 +- BPF_ALU32_REG(BPF_ADD, R8, R0),
24542 +- BPF_ALU32_REG(BPF_ADD, R8, R1),
24543 +- BPF_ALU32_REG(BPF_ADD, R8, R2),
24544 +- BPF_ALU32_REG(BPF_ADD, R8, R3),
24545 +- BPF_ALU32_REG(BPF_ADD, R8, R4),
24546 +- BPF_ALU32_REG(BPF_ADD, R8, R5),
24547 +- BPF_ALU32_REG(BPF_ADD, R8, R6),
24548 +- BPF_ALU32_REG(BPF_ADD, R8, R7),
24549 +- BPF_ALU32_REG(BPF_ADD, R8, R8),
24550 +- BPF_ALU32_REG(BPF_ADD, R8, R9), /* R8 == 985799 */
24551 +- BPF_JMP_IMM(BPF_JEQ, R8, 985799, 1),
24552 +- BPF_EXIT_INSN(),
24553 +- BPF_ALU32_REG(BPF_ADD, R9, R0),
24554 +- BPF_ALU32_REG(BPF_ADD, R9, R1),
24555 +- BPF_ALU32_REG(BPF_ADD, R9, R2),
24556 +- BPF_ALU32_REG(BPF_ADD, R9, R3),
24557 +- BPF_ALU32_REG(BPF_ADD, R9, R4),
24558 +- BPF_ALU32_REG(BPF_ADD, R9, R5),
24559 +- BPF_ALU32_REG(BPF_ADD, R9, R6),
24560 +- BPF_ALU32_REG(BPF_ADD, R9, R7),
24561 +- BPF_ALU32_REG(BPF_ADD, R9, R8),
24562 +- BPF_ALU32_REG(BPF_ADD, R9, R9), /* R9 == 2957380 */
24563 +- BPF_ALU32_REG(BPF_MOV, R0, R9),
24564 +- BPF_EXIT_INSN(),
24565 +- },
24566 +- INTERNAL,
24567 +- { },
24568 +- { { 0, 2957380 } }
24569 +- },
24570 +- { /* Mainly checking JIT here. */
24571 +- "INT: SUB",
24572 +- .u.insns_int = {
24573 +- BPF_ALU64_IMM(BPF_MOV, R0, 0),
24574 +- BPF_ALU64_IMM(BPF_MOV, R1, 1),
24575 +- BPF_ALU64_IMM(BPF_MOV, R2, 2),
24576 +- BPF_ALU64_IMM(BPF_MOV, R3, 3),
24577 +- BPF_ALU64_IMM(BPF_MOV, R4, 4),
24578 +- BPF_ALU64_IMM(BPF_MOV, R5, 5),
24579 +- BPF_ALU64_IMM(BPF_MOV, R6, 6),
24580 +- BPF_ALU64_IMM(BPF_MOV, R7, 7),
24581 +- BPF_ALU64_IMM(BPF_MOV, R8, 8),
24582 +- BPF_ALU64_IMM(BPF_MOV, R9, 9),
24583 +- BPF_ALU64_REG(BPF_SUB, R0, R0),
24584 +- BPF_ALU64_REG(BPF_SUB, R0, R1),
24585 +- BPF_ALU64_REG(BPF_SUB, R0, R2),
24586 +- BPF_ALU64_REG(BPF_SUB, R0, R3),
24587 +- BPF_ALU64_REG(BPF_SUB, R0, R4),
24588 +- BPF_ALU64_REG(BPF_SUB, R0, R5),
24589 +- BPF_ALU64_REG(BPF_SUB, R0, R6),
24590 +- BPF_ALU64_REG(BPF_SUB, R0, R7),
24591 +- BPF_ALU64_REG(BPF_SUB, R0, R8),
24592 +- BPF_ALU64_REG(BPF_SUB, R0, R9),
24593 +- BPF_ALU64_IMM(BPF_SUB, R0, 10),
24594 +- BPF_JMP_IMM(BPF_JEQ, R0, -55, 1),
24595 +- BPF_EXIT_INSN(),
24596 +- BPF_ALU64_REG(BPF_SUB, R1, R0),
24597 +- BPF_ALU64_REG(BPF_SUB, R1, R2),
24598 +- BPF_ALU64_REG(BPF_SUB, R1, R3),
24599 +- BPF_ALU64_REG(BPF_SUB, R1, R4),
24600 +- BPF_ALU64_REG(BPF_SUB, R1, R5),
24601 +- BPF_ALU64_REG(BPF_SUB, R1, R6),
24602 +- BPF_ALU64_REG(BPF_SUB, R1, R7),
24603 +- BPF_ALU64_REG(BPF_SUB, R1, R8),
24604 +- BPF_ALU64_REG(BPF_SUB, R1, R9),
24605 +- BPF_ALU64_IMM(BPF_SUB, R1, 10),
24606 +- BPF_ALU64_REG(BPF_SUB, R2, R0),
24607 +- BPF_ALU64_REG(BPF_SUB, R2, R1),
24608 +- BPF_ALU64_REG(BPF_SUB, R2, R3),
24609 +- BPF_ALU64_REG(BPF_SUB, R2, R4),
24610 +- BPF_ALU64_REG(BPF_SUB, R2, R5),
24611 +- BPF_ALU64_REG(BPF_SUB, R2, R6),
24612 +- BPF_ALU64_REG(BPF_SUB, R2, R7),
24613 +- BPF_ALU64_REG(BPF_SUB, R2, R8),
24614 +- BPF_ALU64_REG(BPF_SUB, R2, R9),
24615 +- BPF_ALU64_IMM(BPF_SUB, R2, 10),
24616 +- BPF_ALU64_REG(BPF_SUB, R3, R0),
24617 +- BPF_ALU64_REG(BPF_SUB, R3, R1),
24618 +- BPF_ALU64_REG(BPF_SUB, R3, R2),
24619 +- BPF_ALU64_REG(BPF_SUB, R3, R4),
24620 +- BPF_ALU64_REG(BPF_SUB, R3, R5),
24621 +- BPF_ALU64_REG(BPF_SUB, R3, R6),
24622 +- BPF_ALU64_REG(BPF_SUB, R3, R7),
24623 +- BPF_ALU64_REG(BPF_SUB, R3, R8),
24624 +- BPF_ALU64_REG(BPF_SUB, R3, R9),
24625 +- BPF_ALU64_IMM(BPF_SUB, R3, 10),
24626 +- BPF_ALU64_REG(BPF_SUB, R4, R0),
24627 +- BPF_ALU64_REG(BPF_SUB, R4, R1),
24628 +- BPF_ALU64_REG(BPF_SUB, R4, R2),
24629 +- BPF_ALU64_REG(BPF_SUB, R4, R3),
24630 +- BPF_ALU64_REG(BPF_SUB, R4, R5),
24631 +- BPF_ALU64_REG(BPF_SUB, R4, R6),
24632 +- BPF_ALU64_REG(BPF_SUB, R4, R7),
24633 +- BPF_ALU64_REG(BPF_SUB, R4, R8),
24634 +- BPF_ALU64_REG(BPF_SUB, R4, R9),
24635 +- BPF_ALU64_IMM(BPF_SUB, R4, 10),
24636 +- BPF_ALU64_REG(BPF_SUB, R5, R0),
24637 +- BPF_ALU64_REG(BPF_SUB, R5, R1),
24638 +- BPF_ALU64_REG(BPF_SUB, R5, R2),
24639 +- BPF_ALU64_REG(BPF_SUB, R5, R3),
24640 +- BPF_ALU64_REG(BPF_SUB, R5, R4),
24641 +- BPF_ALU64_REG(BPF_SUB, R5, R6),
24642 +- BPF_ALU64_REG(BPF_SUB, R5, R7),
24643 +- BPF_ALU64_REG(BPF_SUB, R5, R8),
24644 +- BPF_ALU64_REG(BPF_SUB, R5, R9),
24645 +- BPF_ALU64_IMM(BPF_SUB, R5, 10),
24646 +- BPF_ALU64_REG(BPF_SUB, R6, R0),
24647 +- BPF_ALU64_REG(BPF_SUB, R6, R1),
24648 +- BPF_ALU64_REG(BPF_SUB, R6, R2),
24649 +- BPF_ALU64_REG(BPF_SUB, R6, R3),
24650 +- BPF_ALU64_REG(BPF_SUB, R6, R4),
24651 +- BPF_ALU64_REG(BPF_SUB, R6, R5),
24652 +- BPF_ALU64_REG(BPF_SUB, R6, R7),
24653 +- BPF_ALU64_REG(BPF_SUB, R6, R8),
24654 +- BPF_ALU64_REG(BPF_SUB, R6, R9),
24655 +- BPF_ALU64_IMM(BPF_SUB, R6, 10),
24656 +- BPF_ALU64_REG(BPF_SUB, R7, R0),
24657 +- BPF_ALU64_REG(BPF_SUB, R7, R1),
24658 +- BPF_ALU64_REG(BPF_SUB, R7, R2),
24659 +- BPF_ALU64_REG(BPF_SUB, R7, R3),
24660 +- BPF_ALU64_REG(BPF_SUB, R7, R4),
24661 +- BPF_ALU64_REG(BPF_SUB, R7, R5),
24662 +- BPF_ALU64_REG(BPF_SUB, R7, R6),
24663 +- BPF_ALU64_REG(BPF_SUB, R7, R8),
24664 +- BPF_ALU64_REG(BPF_SUB, R7, R9),
24665 +- BPF_ALU64_IMM(BPF_SUB, R7, 10),
24666 +- BPF_ALU64_REG(BPF_SUB, R8, R0),
24667 +- BPF_ALU64_REG(BPF_SUB, R8, R1),
24668 +- BPF_ALU64_REG(BPF_SUB, R8, R2),
24669 +- BPF_ALU64_REG(BPF_SUB, R8, R3),
24670 +- BPF_ALU64_REG(BPF_SUB, R8, R4),
24671 +- BPF_ALU64_REG(BPF_SUB, R8, R5),
24672 +- BPF_ALU64_REG(BPF_SUB, R8, R6),
24673 +- BPF_ALU64_REG(BPF_SUB, R8, R7),
24674 +- BPF_ALU64_REG(BPF_SUB, R8, R9),
24675 +- BPF_ALU64_IMM(BPF_SUB, R8, 10),
24676 +- BPF_ALU64_REG(BPF_SUB, R9, R0),
24677 +- BPF_ALU64_REG(BPF_SUB, R9, R1),
24678 +- BPF_ALU64_REG(BPF_SUB, R9, R2),
24679 +- BPF_ALU64_REG(BPF_SUB, R9, R3),
24680 +- BPF_ALU64_REG(BPF_SUB, R9, R4),
24681 +- BPF_ALU64_REG(BPF_SUB, R9, R5),
24682 +- BPF_ALU64_REG(BPF_SUB, R9, R6),
24683 +- BPF_ALU64_REG(BPF_SUB, R9, R7),
24684 +- BPF_ALU64_REG(BPF_SUB, R9, R8),
24685 +- BPF_ALU64_IMM(BPF_SUB, R9, 10),
24686 +- BPF_ALU64_IMM(BPF_SUB, R0, 10),
24687 +- BPF_ALU64_IMM(BPF_NEG, R0, 0),
24688 +- BPF_ALU64_REG(BPF_SUB, R0, R1),
24689 +- BPF_ALU64_REG(BPF_SUB, R0, R2),
24690 +- BPF_ALU64_REG(BPF_SUB, R0, R3),
24691 +- BPF_ALU64_REG(BPF_SUB, R0, R4),
24692 +- BPF_ALU64_REG(BPF_SUB, R0, R5),
24693 +- BPF_ALU64_REG(BPF_SUB, R0, R6),
24694 +- BPF_ALU64_REG(BPF_SUB, R0, R7),
24695 +- BPF_ALU64_REG(BPF_SUB, R0, R8),
24696 +- BPF_ALU64_REG(BPF_SUB, R0, R9),
24697 +- BPF_EXIT_INSN(),
24698 +- },
24699 +- INTERNAL,
24700 +- { },
24701 +- { { 0, 11 } }
24702 +- },
24703 +- { /* Mainly checking JIT here. */
24704 +- "INT: XOR",
24705 +- .u.insns_int = {
24706 +- BPF_ALU64_REG(BPF_SUB, R0, R0),
24707 +- BPF_ALU64_REG(BPF_XOR, R1, R1),
24708 +- BPF_JMP_REG(BPF_JEQ, R0, R1, 1),
24709 +- BPF_EXIT_INSN(),
24710 +- BPF_ALU64_IMM(BPF_MOV, R0, 10),
24711 +- BPF_ALU64_IMM(BPF_MOV, R1, -1),
24712 +- BPF_ALU64_REG(BPF_SUB, R1, R1),
24713 +- BPF_ALU64_REG(BPF_XOR, R2, R2),
24714 +- BPF_JMP_REG(BPF_JEQ, R1, R2, 1),
24715 +- BPF_EXIT_INSN(),
24716 +- BPF_ALU64_REG(BPF_SUB, R2, R2),
24717 +- BPF_ALU64_REG(BPF_XOR, R3, R3),
24718 +- BPF_ALU64_IMM(BPF_MOV, R0, 10),
24719 +- BPF_ALU64_IMM(BPF_MOV, R1, -1),
24720 +- BPF_JMP_REG(BPF_JEQ, R2, R3, 1),
24721 +- BPF_EXIT_INSN(),
24722 +- BPF_ALU64_REG(BPF_SUB, R3, R3),
24723 +- BPF_ALU64_REG(BPF_XOR, R4, R4),
24724 +- BPF_ALU64_IMM(BPF_MOV, R2, 1),
24725 +- BPF_ALU64_IMM(BPF_MOV, R5, -1),
24726 +- BPF_JMP_REG(BPF_JEQ, R3, R4, 1),
24727 +- BPF_EXIT_INSN(),
24728 +- BPF_ALU64_REG(BPF_SUB, R4, R4),
24729 +- BPF_ALU64_REG(BPF_XOR, R5, R5),
24730 +- BPF_ALU64_IMM(BPF_MOV, R3, 1),
24731 +- BPF_ALU64_IMM(BPF_MOV, R7, -1),
24732 +- BPF_JMP_REG(BPF_JEQ, R5, R4, 1),
24733 +- BPF_EXIT_INSN(),
24734 +- BPF_ALU64_IMM(BPF_MOV, R5, 1),
24735 +- BPF_ALU64_REG(BPF_SUB, R5, R5),
24736 +- BPF_ALU64_REG(BPF_XOR, R6, R6),
24737 +- BPF_ALU64_IMM(BPF_MOV, R1, 1),
24738 +- BPF_ALU64_IMM(BPF_MOV, R8, -1),
24739 +- BPF_JMP_REG(BPF_JEQ, R5, R6, 1),
24740 +- BPF_EXIT_INSN(),
24741 +- BPF_ALU64_REG(BPF_SUB, R6, R6),
24742 +- BPF_ALU64_REG(BPF_XOR, R7, R7),
24743 +- BPF_JMP_REG(BPF_JEQ, R7, R6, 1),
24744 +- BPF_EXIT_INSN(),
24745 +- BPF_ALU64_REG(BPF_SUB, R7, R7),
24746 +- BPF_ALU64_REG(BPF_XOR, R8, R8),
24747 +- BPF_JMP_REG(BPF_JEQ, R7, R8, 1),
24748 +- BPF_EXIT_INSN(),
24749 +- BPF_ALU64_REG(BPF_SUB, R8, R8),
24750 +- BPF_ALU64_REG(BPF_XOR, R9, R9),
24751 +- BPF_JMP_REG(BPF_JEQ, R9, R8, 1),
24752 +- BPF_EXIT_INSN(),
24753 +- BPF_ALU64_REG(BPF_SUB, R9, R9),
24754 +- BPF_ALU64_REG(BPF_XOR, R0, R0),
24755 +- BPF_JMP_REG(BPF_JEQ, R9, R0, 1),
24756 +- BPF_EXIT_INSN(),
24757 +- BPF_ALU64_REG(BPF_SUB, R1, R1),
24758 +- BPF_ALU64_REG(BPF_XOR, R0, R0),
24759 +- BPF_JMP_REG(BPF_JEQ, R9, R0, 2),
24760 +- BPF_ALU64_IMM(BPF_MOV, R0, 0),
24761 +- BPF_EXIT_INSN(),
24762 +- BPF_ALU64_IMM(BPF_MOV, R0, 1),
24763 +- BPF_EXIT_INSN(),
24764 +- },
24765 +- INTERNAL,
24766 +- { },
24767 +- { { 0, 1 } }
24768 +- },
24769 +- { /* Mainly checking JIT here. */
24770 +- "INT: MUL",
24771 +- .u.insns_int = {
24772 +- BPF_ALU64_IMM(BPF_MOV, R0, 11),
24773 +- BPF_ALU64_IMM(BPF_MOV, R1, 1),
24774 +- BPF_ALU64_IMM(BPF_MOV, R2, 2),
24775 +- BPF_ALU64_IMM(BPF_MOV, R3, 3),
24776 +- BPF_ALU64_IMM(BPF_MOV, R4, 4),
24777 +- BPF_ALU64_IMM(BPF_MOV, R5, 5),
24778 +- BPF_ALU64_IMM(BPF_MOV, R6, 6),
24779 +- BPF_ALU64_IMM(BPF_MOV, R7, 7),
24780 +- BPF_ALU64_IMM(BPF_MOV, R8, 8),
24781 +- BPF_ALU64_IMM(BPF_MOV, R9, 9),
24782 +- BPF_ALU64_REG(BPF_MUL, R0, R0),
24783 +- BPF_ALU64_REG(BPF_MUL, R0, R1),
24784 +- BPF_ALU64_REG(BPF_MUL, R0, R2),
24785 +- BPF_ALU64_REG(BPF_MUL, R0, R3),
24786 +- BPF_ALU64_REG(BPF_MUL, R0, R4),
24787 +- BPF_ALU64_REG(BPF_MUL, R0, R5),
24788 +- BPF_ALU64_REG(BPF_MUL, R0, R6),
24789 +- BPF_ALU64_REG(BPF_MUL, R0, R7),
24790 +- BPF_ALU64_REG(BPF_MUL, R0, R8),
24791 +- BPF_ALU64_REG(BPF_MUL, R0, R9),
24792 +- BPF_ALU64_IMM(BPF_MUL, R0, 10),
24793 +- BPF_JMP_IMM(BPF_JEQ, R0, 439084800, 1),
24794 +- BPF_EXIT_INSN(),
24795 +- BPF_ALU64_REG(BPF_MUL, R1, R0),
24796 +- BPF_ALU64_REG(BPF_MUL, R1, R2),
24797 +- BPF_ALU64_REG(BPF_MUL, R1, R3),
24798 +- BPF_ALU64_REG(BPF_MUL, R1, R4),
24799 +- BPF_ALU64_REG(BPF_MUL, R1, R5),
24800 +- BPF_ALU64_REG(BPF_MUL, R1, R6),
24801 +- BPF_ALU64_REG(BPF_MUL, R1, R7),
24802 +- BPF_ALU64_REG(BPF_MUL, R1, R8),
24803 +- BPF_ALU64_REG(BPF_MUL, R1, R9),
24804 +- BPF_ALU64_IMM(BPF_MUL, R1, 10),
24805 +- BPF_ALU64_REG(BPF_MOV, R2, R1),
24806 +- BPF_ALU64_IMM(BPF_RSH, R2, 32),
24807 +- BPF_JMP_IMM(BPF_JEQ, R2, 0x5a924, 1),
24808 +- BPF_EXIT_INSN(),
24809 +- BPF_ALU64_IMM(BPF_LSH, R1, 32),
24810 +- BPF_ALU64_IMM(BPF_ARSH, R1, 32),
24811 +- BPF_JMP_IMM(BPF_JEQ, R1, 0xebb90000, 1),
24812 +- BPF_EXIT_INSN(),
24813 +- BPF_ALU64_REG(BPF_MUL, R2, R0),
24814 +- BPF_ALU64_REG(BPF_MUL, R2, R1),
24815 +- BPF_ALU64_REG(BPF_MUL, R2, R3),
24816 +- BPF_ALU64_REG(BPF_MUL, R2, R4),
24817 +- BPF_ALU64_REG(BPF_MUL, R2, R5),
24818 +- BPF_ALU64_REG(BPF_MUL, R2, R6),
24819 +- BPF_ALU64_REG(BPF_MUL, R2, R7),
24820 +- BPF_ALU64_REG(BPF_MUL, R2, R8),
24821 +- BPF_ALU64_REG(BPF_MUL, R2, R9),
24822 +- BPF_ALU64_IMM(BPF_MUL, R2, 10),
24823 +- BPF_ALU64_IMM(BPF_RSH, R2, 32),
24824 +- BPF_ALU64_REG(BPF_MOV, R0, R2),
24825 +- BPF_EXIT_INSN(),
24826 +- },
24827 +- INTERNAL,
24828 +- { },
24829 +- { { 0, 0x35d97ef2 } }
24830 +- },
24831 +- {
24832 +- "INT: ALU MIX",
24833 +- .u.insns_int = {
24834 +- BPF_ALU64_IMM(BPF_MOV, R0, 11),
24835 +- BPF_ALU64_IMM(BPF_ADD, R0, -1),
24836 +- BPF_ALU64_IMM(BPF_MOV, R2, 2),
24837 +- BPF_ALU64_IMM(BPF_XOR, R2, 3),
24838 +- BPF_ALU64_REG(BPF_DIV, R0, R2),
24839 +- BPF_JMP_IMM(BPF_JEQ, R0, 10, 1),
24840 +- BPF_EXIT_INSN(),
24841 +- BPF_ALU64_IMM(BPF_MOD, R0, 3),
24842 +- BPF_JMP_IMM(BPF_JEQ, R0, 1, 1),
24843 +- BPF_EXIT_INSN(),
24844 +- BPF_ALU64_IMM(BPF_MOV, R0, -1),
24845 +- BPF_EXIT_INSN(),
24846 +- },
24847 +- INTERNAL,
24848 +- { },
24849 +- { { 0, -1 } }
24850 +- },
24851 +- {
24852 +- "INT: DIV + ABS",
24853 +- .u.insns_int = {
24854 +- BPF_ALU64_REG(BPF_MOV, R6, R1),
24855 +- BPF_LD_ABS(BPF_B, 3),
24856 +- BPF_ALU64_IMM(BPF_MOV, R2, 2),
24857 +- BPF_ALU32_REG(BPF_DIV, R0, R2),
24858 +- BPF_ALU64_REG(BPF_MOV, R8, R0),
24859 +- BPF_LD_ABS(BPF_B, 4),
24860 +- BPF_ALU64_REG(BPF_ADD, R8, R0),
24861 +- BPF_LD_IND(BPF_B, R8, -70),
24862 +- BPF_EXIT_INSN(),
24863 +- },
24864 +- INTERNAL,
24865 +- { 10, 20, 30, 40, 50 },
24866 +- { { 4, 0 }, { 5, 10 } }
24867 +- },
24868 +- {
24869 +- "INT: DIV by zero",
24870 +- .u.insns_int = {
24871 +- BPF_ALU64_REG(BPF_MOV, R6, R1),
24872 +- BPF_ALU64_IMM(BPF_MOV, R7, 0),
24873 +- BPF_LD_ABS(BPF_B, 3),
24874 +- BPF_ALU32_REG(BPF_DIV, R0, R7),
24875 +- BPF_EXIT_INSN(),
24876 +- },
24877 +- INTERNAL,
24878 +- { 10, 20, 30, 40, 50 },
24879 +- { { 3, 0 }, { 4, 0 } }
24880 +- },
24881 +- {
24882 +- "check: missing ret",
24883 +- .u.insns = {
24884 +- BPF_STMT(BPF_LD | BPF_IMM, 1),
24885 +- },
24886 +- CLASSIC | FLAG_NO_DATA | FLAG_EXPECTED_FAIL,
24887 +- { },
24888 +- { }
24889 +- },
24890 +- {
24891 +- "check: div_k_0",
24892 +- .u.insns = {
24893 +- BPF_STMT(BPF_ALU | BPF_DIV | BPF_K, 0),
24894 +- BPF_STMT(BPF_RET | BPF_K, 0)
24895 +- },
24896 +- CLASSIC | FLAG_NO_DATA | FLAG_EXPECTED_FAIL,
24897 +- { },
24898 +- { }
24899 +- },
24900 +- {
24901 +- "check: unknown insn",
24902 +- .u.insns = {
24903 +- /* seccomp insn, rejected in socket filter */
24904 +- BPF_STMT(BPF_LDX | BPF_W | BPF_ABS, 0),
24905 +- BPF_STMT(BPF_RET | BPF_K, 0)
24906 +- },
24907 +- CLASSIC | FLAG_EXPECTED_FAIL,
24908 +- { },
24909 +- { }
24910 +- },
24911 +- {
24912 +- "check: out of range spill/fill",
24913 +- .u.insns = {
24914 +- BPF_STMT(BPF_STX, 16),
24915 +- BPF_STMT(BPF_RET | BPF_K, 0)
24916 +- },
24917 +- CLASSIC | FLAG_NO_DATA | FLAG_EXPECTED_FAIL,
24918 +- { },
24919 +- { }
24920 +- },
24921 +- {
24922 +- "JUMPS + HOLES",
24923 +- .u.insns = {
24924 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24925 +- BPF_JUMP(BPF_JMP | BPF_JGE, 0, 13, 15),
24926 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24927 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24928 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24929 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24930 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24931 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24932 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24933 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24934 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24935 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24936 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24937 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24938 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24939 +- BPF_JUMP(BPF_JMP | BPF_JEQ, 0x90c2894d, 3, 4),
24940 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24941 +- BPF_JUMP(BPF_JMP | BPF_JEQ, 0x90c2894d, 1, 2),
24942 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24943 +- BPF_JUMP(BPF_JMP | BPF_JGE, 0, 14, 15),
24944 +- BPF_JUMP(BPF_JMP | BPF_JGE, 0, 13, 14),
24945 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24946 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24947 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24948 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24949 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24950 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24951 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24952 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24953 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24954 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24955 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24956 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24957 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24958 +- BPF_JUMP(BPF_JMP | BPF_JEQ, 0x2ac28349, 2, 3),
24959 +- BPF_JUMP(BPF_JMP | BPF_JEQ, 0x2ac28349, 1, 2),
24960 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24961 +- BPF_JUMP(BPF_JMP | BPF_JGE, 0, 14, 15),
24962 +- BPF_JUMP(BPF_JMP | BPF_JGE, 0, 13, 14),
24963 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24964 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24965 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24966 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24967 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24968 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24969 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24970 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24971 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24972 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24973 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24974 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24975 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24976 +- BPF_JUMP(BPF_JMP | BPF_JEQ, 0x90d2ff41, 2, 3),
24977 +- BPF_JUMP(BPF_JMP | BPF_JEQ, 0x90d2ff41, 1, 2),
24978 +- BPF_STMT(BPF_LD | BPF_H | BPF_ABS, 0),
24979 +- BPF_STMT(BPF_RET | BPF_A, 0),
24980 +- BPF_STMT(BPF_RET | BPF_A, 0),
24981 +- },
24982 +- CLASSIC,
24983 +- { 0x00, 0x1b, 0x21, 0x3c, 0x9d, 0xf8,
24984 +- 0x90, 0xe2, 0xba, 0x0a, 0x56, 0xb4,
24985 +- 0x08, 0x00,
24986 +- 0x45, 0x00, 0x00, 0x28, 0x00, 0x00,
24987 +- 0x20, 0x00, 0x40, 0x11, 0x00, 0x00, /* IP header */
24988 +- 0xc0, 0xa8, 0x33, 0x01,
24989 +- 0xc0, 0xa8, 0x33, 0x02,
24990 +- 0xbb, 0xb6,
24991 +- 0xa9, 0xfa,
24992 +- 0x00, 0x14, 0x00, 0x00,
24993 +- 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
24994 +- 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
24995 +- 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
24996 +- 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
24997 +- 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
24998 +- 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
24999 +- 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
25000 +- 0xcc, 0xcc, 0xcc, 0xcc },
25001 +- { { 88, 0x001b } }
25002 +- },
25003 +- {
25004 +- "check: RET X",
25005 +- .u.insns = {
25006 +- BPF_STMT(BPF_RET | BPF_X, 0),
25007 +- },
25008 +- CLASSIC | FLAG_NO_DATA | FLAG_EXPECTED_FAIL,
25009 +- { },
25010 +- { },
25011 +- },
25012 +- {
25013 +- "check: LDX + RET X",
25014 +- .u.insns = {
25015 +- BPF_STMT(BPF_LDX | BPF_IMM, 42),
25016 +- BPF_STMT(BPF_RET | BPF_X, 0),
25017 +- },
25018 +- CLASSIC | FLAG_NO_DATA | FLAG_EXPECTED_FAIL,
25019 +- { },
25020 +- { },
25021 +- },
25022 +- { /* Mainly checking JIT here. */
25023 +- "M[]: alt STX + LDX",
25024 +- .u.insns = {
25025 +- BPF_STMT(BPF_LDX | BPF_IMM, 100),
25026 +- BPF_STMT(BPF_STX, 0),
25027 +- BPF_STMT(BPF_LDX | BPF_MEM, 0),
25028 +- BPF_STMT(BPF_MISC | BPF_TXA, 0),
25029 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
25030 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
25031 +- BPF_STMT(BPF_STX, 1),
25032 +- BPF_STMT(BPF_LDX | BPF_MEM, 1),
25033 +- BPF_STMT(BPF_MISC | BPF_TXA, 0),
25034 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
25035 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
25036 +- BPF_STMT(BPF_STX, 2),
25037 +- BPF_STMT(BPF_LDX | BPF_MEM, 2),
25038 +- BPF_STMT(BPF_MISC | BPF_TXA, 0),
25039 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
25040 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
25041 +- BPF_STMT(BPF_STX, 3),
25042 +- BPF_STMT(BPF_LDX | BPF_MEM, 3),
25043 +- BPF_STMT(BPF_MISC | BPF_TXA, 0),
25044 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
25045 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
25046 +- BPF_STMT(BPF_STX, 4),
25047 +- BPF_STMT(BPF_LDX | BPF_MEM, 4),
25048 +- BPF_STMT(BPF_MISC | BPF_TXA, 0),
25049 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
25050 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
25051 +- BPF_STMT(BPF_STX, 5),
25052 +- BPF_STMT(BPF_LDX | BPF_MEM, 5),
25053 +- BPF_STMT(BPF_MISC | BPF_TXA, 0),
25054 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
25055 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
25056 +- BPF_STMT(BPF_STX, 6),
25057 +- BPF_STMT(BPF_LDX | BPF_MEM, 6),
25058 +- BPF_STMT(BPF_MISC | BPF_TXA, 0),
25059 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
25060 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
25061 +- BPF_STMT(BPF_STX, 7),
25062 +- BPF_STMT(BPF_LDX | BPF_MEM, 7),
25063 +- BPF_STMT(BPF_MISC | BPF_TXA, 0),
25064 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
25065 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
25066 +- BPF_STMT(BPF_STX, 8),
25067 +- BPF_STMT(BPF_LDX | BPF_MEM, 8),
25068 +- BPF_STMT(BPF_MISC | BPF_TXA, 0),
25069 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
25070 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
25071 +- BPF_STMT(BPF_STX, 9),
25072 +- BPF_STMT(BPF_LDX | BPF_MEM, 9),
25073 +- BPF_STMT(BPF_MISC | BPF_TXA, 0),
25074 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
25075 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
25076 +- BPF_STMT(BPF_STX, 10),
25077 +- BPF_STMT(BPF_LDX | BPF_MEM, 10),
25078 +- BPF_STMT(BPF_MISC | BPF_TXA, 0),
25079 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
25080 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
25081 +- BPF_STMT(BPF_STX, 11),
25082 +- BPF_STMT(BPF_LDX | BPF_MEM, 11),
25083 +- BPF_STMT(BPF_MISC | BPF_TXA, 0),
25084 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
25085 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
25086 +- BPF_STMT(BPF_STX, 12),
25087 +- BPF_STMT(BPF_LDX | BPF_MEM, 12),
25088 +- BPF_STMT(BPF_MISC | BPF_TXA, 0),
25089 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
25090 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
25091 +- BPF_STMT(BPF_STX, 13),
25092 +- BPF_STMT(BPF_LDX | BPF_MEM, 13),
25093 +- BPF_STMT(BPF_MISC | BPF_TXA, 0),
25094 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
25095 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
25096 +- BPF_STMT(BPF_STX, 14),
25097 +- BPF_STMT(BPF_LDX | BPF_MEM, 14),
25098 +- BPF_STMT(BPF_MISC | BPF_TXA, 0),
25099 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
25100 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
25101 +- BPF_STMT(BPF_STX, 15),
25102 +- BPF_STMT(BPF_LDX | BPF_MEM, 15),
25103 +- BPF_STMT(BPF_MISC | BPF_TXA, 0),
25104 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
25105 +- BPF_STMT(BPF_MISC | BPF_TAX, 0),
25106 +- BPF_STMT(BPF_RET | BPF_A, 0),
25107 +- },
25108 +- CLASSIC | FLAG_NO_DATA,
25109 +- { },
25110 +- { { 0, 116 } },
25111 +- },
25112 +- { /* Mainly checking JIT here. */
25113 +- "M[]: full STX + full LDX",
25114 +- .u.insns = {
25115 +- BPF_STMT(BPF_LDX | BPF_IMM, 0xbadfeedb),
25116 +- BPF_STMT(BPF_STX, 0),
25117 +- BPF_STMT(BPF_LDX | BPF_IMM, 0xecabedae),
25118 +- BPF_STMT(BPF_STX, 1),
25119 +- BPF_STMT(BPF_LDX | BPF_IMM, 0xafccfeaf),
25120 +- BPF_STMT(BPF_STX, 2),
25121 +- BPF_STMT(BPF_LDX | BPF_IMM, 0xbffdcedc),
25122 +- BPF_STMT(BPF_STX, 3),
25123 +- BPF_STMT(BPF_LDX | BPF_IMM, 0xfbbbdccb),
25124 +- BPF_STMT(BPF_STX, 4),
25125 +- BPF_STMT(BPF_LDX | BPF_IMM, 0xfbabcbda),
25126 +- BPF_STMT(BPF_STX, 5),
25127 +- BPF_STMT(BPF_LDX | BPF_IMM, 0xaedecbdb),
25128 +- BPF_STMT(BPF_STX, 6),
25129 +- BPF_STMT(BPF_LDX | BPF_IMM, 0xadebbade),
25130 +- BPF_STMT(BPF_STX, 7),
25131 +- BPF_STMT(BPF_LDX | BPF_IMM, 0xfcfcfaec),
25132 +- BPF_STMT(BPF_STX, 8),
25133 +- BPF_STMT(BPF_LDX | BPF_IMM, 0xbcdddbdc),
25134 +- BPF_STMT(BPF_STX, 9),
25135 +- BPF_STMT(BPF_LDX | BPF_IMM, 0xfeefdfac),
25136 +- BPF_STMT(BPF_STX, 10),
25137 +- BPF_STMT(BPF_LDX | BPF_IMM, 0xcddcdeea),
25138 +- BPF_STMT(BPF_STX, 11),
25139 +- BPF_STMT(BPF_LDX | BPF_IMM, 0xaccfaebb),
25140 +- BPF_STMT(BPF_STX, 12),
25141 +- BPF_STMT(BPF_LDX | BPF_IMM, 0xbdcccdcf),
25142 +- BPF_STMT(BPF_STX, 13),
25143 +- BPF_STMT(BPF_LDX | BPF_IMM, 0xaaedecde),
25144 +- BPF_STMT(BPF_STX, 14),
25145 +- BPF_STMT(BPF_LDX | BPF_IMM, 0xfaeacdad),
25146 +- BPF_STMT(BPF_STX, 15),
25147 +- BPF_STMT(BPF_LDX | BPF_MEM, 0),
25148 +- BPF_STMT(BPF_MISC | BPF_TXA, 0),
25149 +- BPF_STMT(BPF_LDX | BPF_MEM, 1),
25150 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
25151 +- BPF_STMT(BPF_LDX | BPF_MEM, 2),
25152 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
25153 +- BPF_STMT(BPF_LDX | BPF_MEM, 3),
25154 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
25155 +- BPF_STMT(BPF_LDX | BPF_MEM, 4),
25156 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
25157 +- BPF_STMT(BPF_LDX | BPF_MEM, 5),
25158 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
25159 +- BPF_STMT(BPF_LDX | BPF_MEM, 6),
25160 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
25161 +- BPF_STMT(BPF_LDX | BPF_MEM, 7),
25162 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
25163 +- BPF_STMT(BPF_LDX | BPF_MEM, 8),
25164 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
25165 +- BPF_STMT(BPF_LDX | BPF_MEM, 9),
25166 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
25167 +- BPF_STMT(BPF_LDX | BPF_MEM, 10),
25168 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
25169 +- BPF_STMT(BPF_LDX | BPF_MEM, 11),
25170 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
25171 +- BPF_STMT(BPF_LDX | BPF_MEM, 12),
25172 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
25173 +- BPF_STMT(BPF_LDX | BPF_MEM, 13),
25174 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
25175 +- BPF_STMT(BPF_LDX | BPF_MEM, 14),
25176 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
25177 +- BPF_STMT(BPF_LDX | BPF_MEM, 15),
25178 +- BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
25179 +- BPF_STMT(BPF_RET | BPF_A, 0),
25180 +- },
25181 +- CLASSIC | FLAG_NO_DATA,
25182 +- { },
25183 +- { { 0, 0x2a5a5e5 } },
25184 +- },
25185 +- {
25186 +- "check: SKF_AD_MAX",
25187 +- .u.insns = {
25188 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
25189 +- SKF_AD_OFF + SKF_AD_MAX),
25190 +- BPF_STMT(BPF_RET | BPF_A, 0),
25191 +- },
25192 +- CLASSIC | FLAG_NO_DATA | FLAG_EXPECTED_FAIL,
25193 +- { },
25194 +- { },
25195 +- },
25196 +- { /* Passes checker but fails during runtime. */
25197 +- "LD [SKF_AD_OFF-1]",
25198 +- .u.insns = {
25199 +- BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
25200 +- SKF_AD_OFF - 1),
25201 +- BPF_STMT(BPF_RET | BPF_K, 1),
25202 +- },
25203 +- CLASSIC,
25204 +- { },
25205 +- { { 1, 0 } },
25206 +- },
25207 +-};
25208 +-
25209 +-static struct net_device dev;
25210 +-
25211 +-static struct sk_buff *populate_skb(char *buf, int size)
25212 +-{
25213 +- struct sk_buff *skb;
25214 +-
25215 +- if (size >= MAX_DATA)
25216 +- return NULL;
25217 +-
25218 +- skb = alloc_skb(MAX_DATA, GFP_KERNEL);
25219 +- if (!skb)
25220 +- return NULL;
25221 +-
25222 +- memcpy(__skb_put(skb, size), buf, size);
25223 +-
25224 +- /* Initialize a fake skb with test pattern. */
25225 +- skb_reset_mac_header(skb);
25226 +- skb->protocol = htons(ETH_P_IP);
25227 +- skb->pkt_type = SKB_TYPE;
25228 +- skb->mark = SKB_MARK;
25229 +- skb->hash = SKB_HASH;
25230 +- skb->queue_mapping = SKB_QUEUE_MAP;
25231 +- skb->vlan_tci = SKB_VLAN_TCI;
25232 +- skb->dev = &dev;
25233 +- skb->dev->ifindex = SKB_DEV_IFINDEX;
25234 +- skb->dev->type = SKB_DEV_TYPE;
25235 +- skb_set_network_header(skb, min(size, ETH_HLEN));
25236 +-
25237 +- return skb;
25238 +-}
25239 +-
25240 +-static void *generate_test_data(struct bpf_test *test, int sub)
25241 +-{
25242 +- if (test->aux & FLAG_NO_DATA)
25243 +- return NULL;
25244 +-
25245 +- /* Test case expects an skb, so populate one. Various
25246 +- * subtests generate skbs of different sizes based on
25247 +- * the same data.
25248 +- */
25249 +- return populate_skb(test->data, test->test[sub].data_size);
25250 +-}
25251 +-
25252 +-static void release_test_data(const struct bpf_test *test, void *data)
25253 +-{
25254 +- if (test->aux & FLAG_NO_DATA)
25255 +- return;
25256 +-
25257 +- kfree_skb(data);
25258 +-}
25259 +-
25260 +-static int probe_filter_length(struct sock_filter *fp)
25261 +-{
25262 +- int len = 0;
25263 +-
25264 +- for (len = MAX_INSNS - 1; len > 0; --len)
25265 +- if (fp[len].code != 0 || fp[len].k != 0)
25266 +- break;
25267 +-
25268 +- return len + 1;
25269 +-}
25270 +-
25271 +-static struct sk_filter *generate_filter(int which, int *err)
25272 +-{
25273 +- struct sk_filter *fp;
25274 +- struct sock_fprog_kern fprog;
25275 +- unsigned int flen = probe_filter_length(tests[which].u.insns);
25276 +- __u8 test_type = tests[which].aux & TEST_TYPE_MASK;
25277 +-
25278 +- switch (test_type) {
25279 +- case CLASSIC:
25280 +- fprog.filter = tests[which].u.insns;
25281 +- fprog.len = flen;
25282 +-
25283 +- *err = sk_unattached_filter_create(&fp, &fprog);
25284 +- if (tests[which].aux & FLAG_EXPECTED_FAIL) {
25285 +- if (*err == -EINVAL) {
25286 +- pr_cont("PASS\n");
25287 +- /* Verifier rejected filter as expected. */
25288 +- *err = 0;
25289 +- return NULL;
25290 +- } else {
25291 +- pr_cont("UNEXPECTED_PASS\n");
25292 +- /* Verifier didn't reject the test that's
25293 +- * bad enough, just return!
25294 +- */
25295 +- *err = -EINVAL;
25296 +- return NULL;
25297 +- }
25298 +- }
25299 +- /* We don't expect to fail. */
25300 +- if (*err) {
25301 +- pr_cont("FAIL to attach err=%d len=%d\n",
25302 +- *err, fprog.len);
25303 +- return NULL;
25304 +- }
25305 +- break;
25306 +-
25307 +- case INTERNAL:
25308 +- fp = kzalloc(sk_filter_size(flen), GFP_KERNEL);
25309 +- if (fp == NULL) {
25310 +- pr_cont("UNEXPECTED_FAIL no memory left\n");
25311 +- *err = -ENOMEM;
25312 +- return NULL;
25313 +- }
25314 +-
25315 +- fp->len = flen;
25316 +- memcpy(fp->insnsi, tests[which].u.insns_int,
25317 +- fp->len * sizeof(struct sock_filter_int));
25318 +-
25319 +- sk_filter_select_runtime(fp);
25320 +- break;
25321 +- }
25322 +-
25323 +- *err = 0;
25324 +- return fp;
25325 +-}
25326 +-
25327 +-static void release_filter(struct sk_filter *fp, int which)
25328 +-{
25329 +- __u8 test_type = tests[which].aux & TEST_TYPE_MASK;
25330 +-
25331 +- switch (test_type) {
25332 +- case CLASSIC:
25333 +- sk_unattached_filter_destroy(fp);
25334 +- break;
25335 +- case INTERNAL:
25336 +- sk_filter_free(fp);
25337 +- break;
25338 +- }
25339 +-}
25340 +-
25341 +-static int __run_one(const struct sk_filter *fp, const void *data,
25342 +- int runs, u64 *duration)
25343 +-{
25344 +- u64 start, finish;
25345 +- int ret, i;
25346 +-
25347 +- start = ktime_to_us(ktime_get());
25348 +-
25349 +- for (i = 0; i < runs; i++)
25350 +- ret = SK_RUN_FILTER(fp, data);
25351 +-
25352 +- finish = ktime_to_us(ktime_get());
25353 +-
25354 +- *duration = (finish - start) * 1000ULL;
25355 +- do_div(*duration, runs);
25356 +-
25357 +- return ret;
25358 +-}
25359 +-
25360 +-static int run_one(const struct sk_filter *fp, struct bpf_test *test)
25361 +-{
25362 +- int err_cnt = 0, i, runs = MAX_TESTRUNS;
25363 +-
25364 +- for (i = 0; i < MAX_SUBTESTS; i++) {
25365 +- void *data;
25366 +- u64 duration;
25367 +- u32 ret;
25368 +-
25369 +- if (test->test[i].data_size == 0 &&
25370 +- test->test[i].result == 0)
25371 +- break;
25372 +-
25373 +- data = generate_test_data(test, i);
25374 +- ret = __run_one(fp, data, runs, &duration);
25375 +- release_test_data(test, data);
25376 +-
25377 +- if (ret == test->test[i].result) {
25378 +- pr_cont("%lld ", duration);
25379 +- } else {
25380 +- pr_cont("ret %d != %d ", ret,
25381 +- test->test[i].result);
25382 +- err_cnt++;
25383 +- }
25384 +- }
25385 +-
25386 +- return err_cnt;
25387 +-}
25388 +-
25389 +-static __init int test_bpf(void)
25390 +-{
25391 +- int i, err_cnt = 0, pass_cnt = 0;
25392 +-
25393 +- for (i = 0; i < ARRAY_SIZE(tests); i++) {
25394 +- struct sk_filter *fp;
25395 +- int err;
25396 +-
25397 +- pr_info("#%d %s ", i, tests[i].descr);
25398 +-
25399 +- fp = generate_filter(i, &err);
25400 +- if (fp == NULL) {
25401 +- if (err == 0) {
25402 +- pass_cnt++;
25403 +- continue;
25404 +- }
25405 +-
25406 +- return err;
25407 +- }
25408 +- err = run_one(fp, &tests[i]);
25409 +- release_filter(fp, i);
25410 +-
25411 +- if (err) {
25412 +- pr_cont("FAIL (%d times)\n", err);
25413 +- err_cnt++;
25414 +- } else {
25415 +- pr_cont("PASS\n");
25416 +- pass_cnt++;
25417 +- }
25418 +- }
25419 +-
25420 +- pr_info("Summary: %d PASSED, %d FAILED\n", pass_cnt, err_cnt);
25421 +- return err_cnt ? -EINVAL : 0;
25422 +-}
25423 +-
25424 +-static int __init test_bpf_init(void)
25425 +-{
25426 +- return test_bpf();
25427 +-}
25428 +-
25429 +-static void __exit test_bpf_exit(void)
25430 +-{
25431 +-}
25432 +-
25433 +-module_init(test_bpf_init);
25434 +-module_exit(test_bpf_exit);
25435 +-
25436 +-MODULE_LICENSE("GPL");
25437 diff --git a/lib/usercopy.c b/lib/usercopy.c
25438 index 4f5b1dd..7cab418 100644
25439 --- a/lib/usercopy.c
25440 @@ -92757,7 +98707,7 @@ index 4f5b1dd..7cab418 100644
25441 +}
25442 +EXPORT_SYMBOL(copy_to_user_overflow);
25443 diff --git a/lib/vsprintf.c b/lib/vsprintf.c
25444 -index 0648291..42bf42b 100644
25445 +index 6fe2c84..2fe5ec6 100644
25446 --- a/lib/vsprintf.c
25447 +++ b/lib/vsprintf.c
25448 @@ -16,6 +16,9 @@
25449 @@ -92770,6 +98720,15 @@ index 0648291..42bf42b 100644
25450 #include <stdarg.h>
25451 #include <linux/module.h> /* for KSYM_SYMBOL_LEN */
25452 #include <linux/types.h>
25453 +@@ -624,7 +627,7 @@ char *symbol_string(char *buf, char *end, void *ptr,
25454 + #ifdef CONFIG_KALLSYMS
25455 + if (*fmt == 'B')
25456 + sprint_backtrace(sym, value);
25457 +- else if (*fmt != 'f' && *fmt != 's')
25458 ++ else if (*fmt != 'f' && *fmt != 's' && *fmt != 'X')
25459 + sprint_symbol(sym, value);
25460 + else
25461 + sprint_symbol_no_offset(sym, value);
25462 @@ -1183,7 +1186,11 @@ char *address_val(char *buf, char *end, const void *addr,
25463 return number(buf, end, num, spec);
25464 }
25465 @@ -92782,15 +98741,18 @@ index 0648291..42bf42b 100644
25466
25467 /*
25468 * Show a '%p' thing. A kernel extension is that the '%p' is followed
25469 -@@ -1196,6 +1203,7 @@ int kptr_restrict __read_mostly;
25470 +@@ -1194,8 +1201,10 @@ int kptr_restrict __read_mostly;
25471 + *
25472 + * - 'F' For symbolic function descriptor pointers with offset
25473 * - 'f' For simple symbolic function names without offset
25474 ++ * - 'X' For simple symbolic function names without offset approved for use with GRKERNSEC_HIDESYM
25475 * - 'S' For symbolic direct pointers with offset
25476 * - 's' For symbolic direct pointers without offset
25477 + * - 'A' For symbolic direct pointers with offset approved for use with GRKERNSEC_HIDESYM
25478 * - '[FfSs]R' as above with __builtin_extract_return_addr() translation
25479 * - 'B' For backtraced symbolic direct pointers with offset
25480 * - 'R' For decoded struct resource, e.g., [mem 0x0-0x1f 64bit pref]
25481 -@@ -1263,12 +1271,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
25482 +@@ -1263,12 +1272,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
25483
25484 if (!ptr && *fmt != 'K') {
25485 /*
25486 @@ -92805,7 +98767,7 @@ index 0648291..42bf42b 100644
25487 }
25488
25489 switch (*fmt) {
25490 -@@ -1278,6 +1286,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
25491 +@@ -1278,6 +1287,14 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
25492 /* Fallthrough */
25493 case 'S':
25494 case 's':
25495 @@ -92814,11 +98776,13 @@ index 0648291..42bf42b 100644
25496 +#else
25497 + return symbol_string(buf, end, ptr, spec, fmt);
25498 +#endif
25499 ++ case 'X':
25500 ++ ptr = dereference_function_descriptor(ptr);
25501 + case 'A':
25502 case 'B':
25503 return symbol_string(buf, end, ptr, spec, fmt);
25504 case 'R':
25505 -@@ -1333,6 +1347,8 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
25506 +@@ -1333,6 +1350,8 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
25507 va_end(va);
25508 return buf;
25509 }
25510 @@ -92827,7 +98791,7 @@ index 0648291..42bf42b 100644
25511 case 'K':
25512 /*
25513 * %pK cannot be used in IRQ context because its test
25514 -@@ -1390,6 +1406,21 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
25515 +@@ -1390,6 +1409,22 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
25516 ((const struct file *)ptr)->f_path.dentry,
25517 spec, fmt);
25518 }
25519 @@ -92836,10 +98800,11 @@ index 0648291..42bf42b 100644
25520 + /* 'P' = approved pointers to copy to userland,
25521 + as in the /proc/kallsyms case, as we make it display nothing
25522 + for non-root users, and the real contents for root users
25523 ++ 'X' = approved simple symbols
25524 + Also ignore 'K' pointers, since we force their NULLing for non-root users
25525 + above
25526 + */
25527 -+ if ((unsigned long)ptr > TASK_SIZE && *fmt != 'P' && *fmt != 'K' && is_usercopy_object(buf)) {
25528 ++ if ((unsigned long)ptr > TASK_SIZE && *fmt != 'P' && *fmt != 'X' && *fmt != 'K' && is_usercopy_object(buf)) {
25529 + printk(KERN_ALERT "grsec: kernel infoleak detected! Please report this log to spender@××××××××××.net.\n");
25530 + dump_stack();
25531 + ptr = NULL;
25532 @@ -92849,7 +98814,7 @@ index 0648291..42bf42b 100644
25533 spec.flags |= SMALL;
25534 if (spec.field_width == -1) {
25535 spec.field_width = default_width;
25536 -@@ -2089,11 +2120,11 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
25537 +@@ -2089,11 +2124,11 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
25538 typeof(type) value; \
25539 if (sizeof(type) == 8) { \
25540 args = PTR_ALIGN(args, sizeof(u32)); \
25541 @@ -92864,7 +98829,7 @@ index 0648291..42bf42b 100644
25542 } \
25543 args += sizeof(type); \
25544 value; \
25545 -@@ -2156,7 +2187,7 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
25546 +@@ -2156,7 +2191,7 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
25547 case FORMAT_TYPE_STR: {
25548 const char *str_arg = args;
25549 args += strlen(str_arg) + 1;
25550 @@ -92881,10 +98846,10 @@ index 0000000..7cd6065
25551 @@ -0,0 +1 @@
25552 +-grsec
25553 diff --git a/mm/Kconfig b/mm/Kconfig
25554 -index 2f42b9c..6095e14 100644
25555 +index 3e9977a..205074f 100644
25556 --- a/mm/Kconfig
25557 +++ b/mm/Kconfig
25558 -@@ -330,10 +330,11 @@ config KSM
25559 +@@ -333,10 +333,11 @@ config KSM
25560 root has set /sys/kernel/mm/ksm/run to 1 (if CONFIG_SYSFS is set).
25561
25562 config DEFAULT_MMAP_MIN_ADDR
25563 @@ -92899,7 +98864,7 @@ index 2f42b9c..6095e14 100644
25564 This is the portion of low virtual memory which should be protected
25565 from userspace allocation. Keeping a user from writing to low pages
25566 can help reduce the impact of kernel NULL pointer bugs.
25567 -@@ -364,7 +365,7 @@ config MEMORY_FAILURE
25568 +@@ -367,7 +368,7 @@ config MEMORY_FAILURE
25569
25570 config HWPOISON_INJECT
25571 tristate "HWPoison pages injector"
25572 @@ -92909,7 +98874,7 @@ index 2f42b9c..6095e14 100644
25573
25574 config NOMMU_INITIAL_TRIM_EXCESS
25575 diff --git a/mm/backing-dev.c b/mm/backing-dev.c
25576 -index 09d9591..165bb75 100644
25577 +index 1706cbb..f89dbca 100644
25578 --- a/mm/backing-dev.c
25579 +++ b/mm/backing-dev.c
25580 @@ -12,7 +12,7 @@
25581 @@ -92931,10 +98896,10 @@ index 09d9591..165bb75 100644
25582 bdi_destroy(bdi);
25583 return err;
25584 diff --git a/mm/filemap.c b/mm/filemap.c
25585 -index 088358c..bb415bf 100644
25586 +index 900edfa..ff056b1 100644
25587 --- a/mm/filemap.c
25588 +++ b/mm/filemap.c
25589 -@@ -2125,7 +2125,7 @@ int generic_file_mmap(struct file * file, struct vm_area_struct * vma)
25590 +@@ -2074,7 +2074,7 @@ int generic_file_mmap(struct file * file, struct vm_area_struct * vma)
25591 struct address_space *mapping = file->f_mapping;
25592
25593 if (!mapping->a_ops->readpage)
25594 @@ -92943,7 +98908,7 @@ index 088358c..bb415bf 100644
25595 file_accessed(file);
25596 vma->vm_ops = &generic_file_vm_ops;
25597 return 0;
25598 -@@ -2303,6 +2303,7 @@ inline int generic_write_checks(struct file *file, loff_t *pos, size_t *count, i
25599 +@@ -2252,6 +2252,7 @@ inline int generic_write_checks(struct file *file, loff_t *pos, size_t *count, i
25600 *pos = i_size_read(inode);
25601
25602 if (limit != RLIM_INFINITY) {
25603 @@ -92952,10 +98917,10 @@ index 088358c..bb415bf 100644
25604 send_sig(SIGXFSZ, current, 0);
25605 return -EFBIG;
25606 diff --git a/mm/fremap.c b/mm/fremap.c
25607 -index 34feba6..315fe78 100644
25608 +index 72b8fa3..c5b39f1 100644
25609 --- a/mm/fremap.c
25610 +++ b/mm/fremap.c
25611 -@@ -179,6 +179,11 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
25612 +@@ -180,6 +180,11 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
25613 retry:
25614 vma = find_vma(mm, start);
25615
25616 @@ -92967,6 +98932,57 @@ index 34feba6..315fe78 100644
25617 /*
25618 * Make sure the vma is shared, that it supports prefaulting,
25619 * and that the remapped range is valid and fully within
25620 +diff --git a/mm/gup.c b/mm/gup.c
25621 +index cc5a9e7..d496acf 100644
25622 +--- a/mm/gup.c
25623 ++++ b/mm/gup.c
25624 +@@ -265,11 +265,6 @@ static int faultin_page(struct task_struct *tsk, struct vm_area_struct *vma,
25625 + unsigned int fault_flags = 0;
25626 + int ret;
25627 +
25628 +- /* For mlock, just skip the stack guard page. */
25629 +- if ((*flags & FOLL_MLOCK) &&
25630 +- (stack_guard_page_start(vma, address) ||
25631 +- stack_guard_page_end(vma, address + PAGE_SIZE)))
25632 +- return -ENOENT;
25633 + if (*flags & FOLL_WRITE)
25634 + fault_flags |= FAULT_FLAG_WRITE;
25635 + if (nonblocking)
25636 +@@ -424,14 +419,14 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
25637 + if (!(gup_flags & FOLL_FORCE))
25638 + gup_flags |= FOLL_NUMA;
25639 +
25640 +- do {
25641 ++ while (nr_pages) {
25642 + struct page *page;
25643 + unsigned int foll_flags = gup_flags;
25644 + unsigned int page_increm;
25645 +
25646 + /* first iteration or cross vma bound */
25647 + if (!vma || start >= vma->vm_end) {
25648 +- vma = find_extend_vma(mm, start);
25649 ++ vma = find_vma(mm, start);
25650 + if (!vma && in_gate_area(mm, start)) {
25651 + int ret;
25652 + ret = get_gate_page(mm, start & PAGE_MASK,
25653 +@@ -443,7 +438,7 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
25654 + goto next_page;
25655 + }
25656 +
25657 +- if (!vma || check_vma_flags(vma, gup_flags))
25658 ++ if (!vma || start < vma->vm_start || check_vma_flags(vma, gup_flags))
25659 + return i ? : -EFAULT;
25660 + if (is_vm_hugetlb_page(vma)) {
25661 + i = follow_hugetlb_page(mm, vma, pages, vmas,
25662 +@@ -498,7 +493,7 @@ next_page:
25663 + i += page_increm;
25664 + start += page_increm * PAGE_SIZE;
25665 + nr_pages -= page_increm;
25666 +- } while (nr_pages);
25667 ++ }
25668 + return i;
25669 + }
25670 + EXPORT_SYMBOL(__get_user_pages);
25671 diff --git a/mm/highmem.c b/mm/highmem.c
25672 index b32b70c..e512eb0 100644
25673 --- a/mm/highmem.c
25674 @@ -92996,10 +99012,10 @@ index b32b70c..e512eb0 100644
25675 set_page_address(page, (void *)vaddr);
25676
25677 diff --git a/mm/hugetlb.c b/mm/hugetlb.c
25678 -index 002f08e..68f11e8 100644
25679 +index 7a0a73d..d583cca 100644
25680 --- a/mm/hugetlb.c
25681 +++ b/mm/hugetlb.c
25682 -@@ -2107,6 +2107,7 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy,
25683 +@@ -2250,6 +2250,7 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy,
25684 struct hstate *h = &default_hstate;
25685 unsigned long tmp;
25686 int ret;
25687 @@ -93007,8 +99023,8 @@ index 002f08e..68f11e8 100644
25688
25689 if (!hugepages_supported())
25690 return -ENOTSUPP;
25691 -@@ -2116,9 +2117,10 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy,
25692 - if (write && h->order >= MAX_ORDER)
25693 +@@ -2259,9 +2260,10 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy,
25694 + if (write && hstate_is_gigantic(h) && !gigantic_page_supported())
25695 return -EINVAL;
25696
25697 - table->data = &tmp;
25698 @@ -93021,7 +99037,7 @@ index 002f08e..68f11e8 100644
25699 if (ret)
25700 goto out;
25701
25702 -@@ -2163,6 +2165,7 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write,
25703 +@@ -2306,6 +2308,7 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write,
25704 struct hstate *h = &default_hstate;
25705 unsigned long tmp;
25706 int ret;
25707 @@ -93029,8 +99045,8 @@ index 002f08e..68f11e8 100644
25708
25709 if (!hugepages_supported())
25710 return -ENOTSUPP;
25711 -@@ -2172,9 +2175,10 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write,
25712 - if (write && h->order >= MAX_ORDER)
25713 +@@ -2315,9 +2318,10 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write,
25714 + if (write && hstate_is_gigantic(h))
25715 return -EINVAL;
25716
25717 - table->data = &tmp;
25718 @@ -93043,7 +99059,7 @@ index 002f08e..68f11e8 100644
25719 if (ret)
25720 goto out;
25721
25722 -@@ -2655,6 +2659,27 @@ static int unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma,
25723 +@@ -2798,6 +2802,27 @@ static int unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma,
25724 return 1;
25725 }
25726
25727 @@ -93071,7 +99087,7 @@ index 002f08e..68f11e8 100644
25728 /*
25729 * Hugetlb_cow() should be called with page lock of the original hugepage held.
25730 * Called with hugetlb_instantiation_mutex held and pte_page locked so we
25731 -@@ -2772,6 +2797,11 @@ retry_avoidcopy:
25732 +@@ -2915,6 +2940,11 @@ retry_avoidcopy:
25733 make_huge_pte(vma, new_page, 1));
25734 page_remove_rmap(old_page);
25735 hugepage_add_new_anon_rmap(new_page, vma, address);
25736 @@ -93083,7 +99099,7 @@ index 002f08e..68f11e8 100644
25737 /* Make the old page be freed below */
25738 new_page = old_page;
25739 }
25740 -@@ -2931,6 +2961,10 @@ retry:
25741 +@@ -3074,6 +3104,10 @@ retry:
25742 && (vma->vm_flags & VM_SHARED)));
25743 set_huge_pte_at(mm, address, ptep, new_pte);
25744
25745 @@ -93094,7 +99110,7 @@ index 002f08e..68f11e8 100644
25746 if ((flags & FAULT_FLAG_WRITE) && !(vma->vm_flags & VM_SHARED)) {
25747 /* Optimization, do the COW without a second fault */
25748 ret = hugetlb_cow(mm, vma, address, ptep, new_pte, page, ptl);
25749 -@@ -2997,6 +3031,10 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
25750 +@@ -3140,6 +3174,10 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
25751 struct hstate *h = hstate_vma(vma);
25752 struct address_space *mapping;
25753
25754 @@ -93105,7 +99121,7 @@ index 002f08e..68f11e8 100644
25755 address &= huge_page_mask(h);
25756
25757 ptep = huge_pte_offset(mm, address);
25758 -@@ -3010,6 +3048,26 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
25759 +@@ -3153,6 +3191,26 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
25760 VM_FAULT_SET_HINDEX(hstate_index(h));
25761 }
25762
25763 @@ -93133,7 +99149,7 @@ index 002f08e..68f11e8 100644
25764 if (!ptep)
25765 return VM_FAULT_OOM;
25766 diff --git a/mm/internal.h b/mm/internal.h
25767 -index 07b6736..ae8da20 100644
25768 +index 7f22a11f..f3c207f 100644
25769 --- a/mm/internal.h
25770 +++ b/mm/internal.h
25771 @@ -109,6 +109,7 @@ extern pmd_t *mm_find_pmd(struct mm_struct *mm, unsigned long address);
25772 @@ -93144,7 +99160,7 @@ index 07b6736..ae8da20 100644
25773 extern void prep_compound_page(struct page *page, unsigned long order);
25774 #ifdef CONFIG_MEMORY_FAILURE
25775 extern bool is_free_buddy_page(struct page *page);
25776 -@@ -367,7 +368,7 @@ extern u32 hwpoison_filter_enable;
25777 +@@ -351,7 +352,7 @@ extern u32 hwpoison_filter_enable;
25778
25779 extern unsigned long vm_mmap_pgoff(struct file *, unsigned long,
25780 unsigned long, unsigned long,
25781 @@ -93154,10 +99170,10 @@ index 07b6736..ae8da20 100644
25782 extern void set_pageblock_order(void);
25783 unsigned long reclaim_clean_pages_from_list(struct zone *zone,
25784 diff --git a/mm/iov_iter.c b/mm/iov_iter.c
25785 -index 10e46cd..e3052f6 100644
25786 +index 7b5dbd1..af0e329 100644
25787 --- a/mm/iov_iter.c
25788 +++ b/mm/iov_iter.c
25789 -@@ -87,7 +87,7 @@ static size_t __iovec_copy_from_user_inatomic(char *vaddr,
25790 +@@ -173,7 +173,7 @@ static size_t __iovec_copy_from_user_inatomic(char *vaddr,
25791
25792 while (bytes) {
25793 char __user *buf = iov->iov_base + base;
25794 @@ -93166,7 +99182,7 @@ index 10e46cd..e3052f6 100644
25795
25796 base = 0;
25797 left = __copy_from_user_inatomic(vaddr, buf, copy);
25798 -@@ -115,7 +115,7 @@ size_t iov_iter_copy_from_user_atomic(struct page *page,
25799 +@@ -201,7 +201,7 @@ static size_t copy_from_user_atomic_iovec(struct page *page,
25800
25801 kaddr = kmap_atomic(page);
25802 if (likely(i->nr_segs == 1)) {
25803 @@ -93175,16 +99191,7 @@ index 10e46cd..e3052f6 100644
25804 char __user *buf = i->iov->iov_base + i->iov_offset;
25805 left = __copy_from_user_inatomic(kaddr + offset, buf, bytes);
25806 copied = bytes - left;
25807 -@@ -143,7 +143,7 @@ size_t iov_iter_copy_from_user(struct page *page,
25808 -
25809 - kaddr = kmap(page);
25810 - if (likely(i->nr_segs == 1)) {
25811 -- int left;
25812 -+ size_t left;
25813 - char __user *buf = i->iov->iov_base + i->iov_offset;
25814 - left = __copy_from_user(kaddr + offset, buf, bytes);
25815 - copied = bytes - left;
25816 -@@ -173,7 +173,7 @@ void iov_iter_advance(struct iov_iter *i, size_t bytes)
25817 +@@ -231,7 +231,7 @@ static void advance_iovec(struct iov_iter *i, size_t bytes)
25818 * zero-length segments (without overruning the iovec).
25819 */
25820 while (bytes || unlikely(i->count && !iov->iov_len)) {
25821 @@ -93194,7 +99201,7 @@ index 10e46cd..e3052f6 100644
25822 copy = min(bytes, iov->iov_len - base);
25823 BUG_ON(!i->count || i->count < copy);
25824 diff --git a/mm/kmemleak.c b/mm/kmemleak.c
25825 -index 8d2fcdf..6dd9f1a 100644
25826 +index 3cda50c..032ba634 100644
25827 --- a/mm/kmemleak.c
25828 +++ b/mm/kmemleak.c
25829 @@ -364,7 +364,7 @@ static void print_unreferenced(struct seq_file *seq,
25830 @@ -93206,7 +99213,7 @@ index 8d2fcdf..6dd9f1a 100644
25831 }
25832 }
25833
25834 -@@ -1871,7 +1871,7 @@ static int __init kmemleak_late_init(void)
25835 +@@ -1905,7 +1905,7 @@ static int __init kmemleak_late_init(void)
25836 return -ENOMEM;
25837 }
25838
25839 @@ -93318,7 +99325,7 @@ index a402f8f..f5e5daa 100644
25840 if (end == start)
25841 return error;
25842 diff --git a/mm/memory-failure.c b/mm/memory-failure.c
25843 -index eb8fb72..ae36cf3 100644
25844 +index a013bc9..a897a14 100644
25845 --- a/mm/memory-failure.c
25846 +++ b/mm/memory-failure.c
25847 @@ -61,7 +61,7 @@ int sysctl_memory_failure_early_kill __read_mostly = 0;
25848 @@ -93348,7 +99355,7 @@ index eb8fb72..ae36cf3 100644
25849 { reserved, reserved, "reserved kernel", me_kernel },
25850 /*
25851 * free pages are specially detected outside this table:
25852 -@@ -1091,7 +1091,7 @@ int memory_failure(unsigned long pfn, int trapno, int flags)
25853 +@@ -1099,7 +1099,7 @@ int memory_failure(unsigned long pfn, int trapno, int flags)
25854 nr_pages = 1 << compound_order(hpage);
25855 else /* normal page or thp */
25856 nr_pages = 1;
25857 @@ -93357,7 +99364,7 @@ index eb8fb72..ae36cf3 100644
25858
25859 /*
25860 * We need/can do nothing about count=0 pages.
25861 -@@ -1120,7 +1120,7 @@ int memory_failure(unsigned long pfn, int trapno, int flags)
25862 +@@ -1128,7 +1128,7 @@ int memory_failure(unsigned long pfn, int trapno, int flags)
25863 if (PageHWPoison(hpage)) {
25864 if ((hwpoison_filter(p) && TestClearPageHWPoison(p))
25865 || (p != hpage && TestSetPageHWPoison(hpage))) {
25866 @@ -93383,7 +99390,7 @@ index eb8fb72..ae36cf3 100644
25867 unlock_page(hpage);
25868 put_page(hpage);
25869 return 0;
25870 -@@ -1415,7 +1415,7 @@ int unpoison_memory(unsigned long pfn)
25871 +@@ -1423,7 +1423,7 @@ int unpoison_memory(unsigned long pfn)
25872 return 0;
25873 }
25874 if (TestClearPageHWPoison(p))
25875 @@ -93392,7 +99399,7 @@ index eb8fb72..ae36cf3 100644
25876 pr_info("MCE: Software-unpoisoned free page %#lx\n", pfn);
25877 return 0;
25878 }
25879 -@@ -1429,7 +1429,7 @@ int unpoison_memory(unsigned long pfn)
25880 +@@ -1437,7 +1437,7 @@ int unpoison_memory(unsigned long pfn)
25881 */
25882 if (TestClearPageHWPoison(page)) {
25883 pr_info("MCE: Software-unpoisoned page %#lx\n", pfn);
25884 @@ -93401,7 +99408,7 @@ index eb8fb72..ae36cf3 100644
25885 freeit = 1;
25886 if (PageHuge(page))
25887 clear_page_hwpoison_huge_page(page);
25888 -@@ -1554,11 +1554,11 @@ static int soft_offline_huge_page(struct page *page, int flags)
25889 +@@ -1562,11 +1562,11 @@ static int soft_offline_huge_page(struct page *page, int flags)
25890 if (PageHuge(page)) {
25891 set_page_hwpoison_huge_page(hpage);
25892 dequeue_hwpoisoned_huge_page(hpage);
25893 @@ -93415,7 +99422,7 @@ index eb8fb72..ae36cf3 100644
25894 }
25895 }
25896 return ret;
25897 -@@ -1597,7 +1597,7 @@ static int __soft_offline_page(struct page *page, int flags)
25898 +@@ -1605,7 +1605,7 @@ static int __soft_offline_page(struct page *page, int flags)
25899 put_page(page);
25900 pr_info("soft_offline: %#lx: invalidated\n", pfn);
25901 SetPageHWPoison(page);
25902 @@ -93424,7 +99431,7 @@ index eb8fb72..ae36cf3 100644
25903 return 0;
25904 }
25905
25906 -@@ -1648,7 +1648,7 @@ static int __soft_offline_page(struct page *page, int flags)
25907 +@@ -1656,7 +1656,7 @@ static int __soft_offline_page(struct page *page, int flags)
25908 if (!is_free_buddy_page(page))
25909 pr_info("soft offline: %#lx: page leaked\n",
25910 pfn);
25911 @@ -93433,7 +99440,7 @@ index eb8fb72..ae36cf3 100644
25912 }
25913 } else {
25914 pr_info("soft offline: %#lx: isolation failed: %d, page count %d, type %lx\n",
25915 -@@ -1722,11 +1722,11 @@ int soft_offline_page(struct page *page, int flags)
25916 +@@ -1726,11 +1726,11 @@ int soft_offline_page(struct page *page, int flags)
25917 if (PageHuge(page)) {
25918 set_page_hwpoison_huge_page(hpage);
25919 dequeue_hwpoisoned_huge_page(hpage);
25920 @@ -93448,7 +99455,7 @@ index eb8fb72..ae36cf3 100644
25921 }
25922 unset_migratetype_isolate(page, MIGRATE_MOVABLE);
25923 diff --git a/mm/memory.c b/mm/memory.c
25924 -index 4f9e530..779c7ce 100644
25925 +index 8b44f76..66f1954 100644
25926 --- a/mm/memory.c
25927 +++ b/mm/memory.c
25928 @@ -413,6 +413,7 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud,
25929 @@ -93485,63 +99492,7 @@ index 4f9e530..779c7ce 100644
25930 }
25931
25932 /*
25933 -@@ -1652,12 +1658,6 @@ no_page_table:
25934 - return page;
25935 - }
25936 -
25937 --static inline int stack_guard_page(struct vm_area_struct *vma, unsigned long addr)
25938 --{
25939 -- return stack_guard_page_start(vma, addr) ||
25940 -- stack_guard_page_end(vma, addr+PAGE_SIZE);
25941 --}
25942 --
25943 - /**
25944 - * __get_user_pages() - pin user pages in memory
25945 - * @tsk: task_struct of target task
25946 -@@ -1735,10 +1735,10 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
25947 -
25948 - i = 0;
25949 -
25950 -- do {
25951 -+ while (nr_pages) {
25952 - struct vm_area_struct *vma;
25953 -
25954 -- vma = find_extend_vma(mm, start);
25955 -+ vma = find_vma(mm, start);
25956 - if (!vma && in_gate_area(mm, start)) {
25957 - unsigned long pg = start & PAGE_MASK;
25958 - pgd_t *pgd;
25959 -@@ -1787,7 +1787,7 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
25960 - goto next_page;
25961 - }
25962 -
25963 -- if (!vma)
25964 -+ if (!vma || start < vma->vm_start)
25965 - goto efault;
25966 - vm_flags = vma->vm_flags;
25967 - if (vm_flags & (VM_IO | VM_PFNMAP))
25968 -@@ -1848,11 +1848,6 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
25969 - int ret;
25970 - unsigned int fault_flags = 0;
25971 -
25972 -- /* For mlock, just skip the stack guard page. */
25973 -- if (foll_flags & FOLL_MLOCK) {
25974 -- if (stack_guard_page(vma, start))
25975 -- goto next_page;
25976 -- }
25977 - if (foll_flags & FOLL_WRITE)
25978 - fault_flags |= FAULT_FLAG_WRITE;
25979 - if (nonblocking)
25980 -@@ -1932,7 +1927,7 @@ next_page:
25981 - start += page_increm * PAGE_SIZE;
25982 - nr_pages -= page_increm;
25983 - } while (nr_pages && start < vma->vm_end);
25984 -- } while (nr_pages);
25985 -+ }
25986 - return i;
25987 - efault:
25988 - return i ? : -EFAULT;
25989 -@@ -2145,6 +2140,10 @@ static int insert_page(struct vm_area_struct *vma, unsigned long addr,
25990 +@@ -1501,6 +1507,10 @@ static int insert_page(struct vm_area_struct *vma, unsigned long addr,
25991 page_add_file_rmap(page);
25992 set_pte_at(mm, addr, pte, mk_pte(page, prot));
25993
25994 @@ -93552,7 +99503,7 @@ index 4f9e530..779c7ce 100644
25995 retval = 0;
25996 pte_unmap_unlock(pte, ptl);
25997 return retval;
25998 -@@ -2189,9 +2188,21 @@ int vm_insert_page(struct vm_area_struct *vma, unsigned long addr,
25999 +@@ -1545,9 +1555,21 @@ int vm_insert_page(struct vm_area_struct *vma, unsigned long addr,
26000 if (!page_count(page))
26001 return -EINVAL;
26002 if (!(vma->vm_flags & VM_MIXEDMAP)) {
26003 @@ -93574,7 +99525,7 @@ index 4f9e530..779c7ce 100644
26004 }
26005 return insert_page(vma, addr, page, vma->vm_page_prot);
26006 }
26007 -@@ -2274,6 +2285,7 @@ int vm_insert_mixed(struct vm_area_struct *vma, unsigned long addr,
26008 +@@ -1630,6 +1652,7 @@ int vm_insert_mixed(struct vm_area_struct *vma, unsigned long addr,
26009 unsigned long pfn)
26010 {
26011 BUG_ON(!(vma->vm_flags & VM_MIXEDMAP));
26012 @@ -93582,7 +99533,7 @@ index 4f9e530..779c7ce 100644
26013
26014 if (addr < vma->vm_start || addr >= vma->vm_end)
26015 return -EFAULT;
26016 -@@ -2521,7 +2533,9 @@ static int apply_to_pmd_range(struct mm_struct *mm, pud_t *pud,
26017 +@@ -1877,7 +1900,9 @@ static int apply_to_pmd_range(struct mm_struct *mm, pud_t *pud,
26018
26019 BUG_ON(pud_huge(*pud));
26020
26021 @@ -93593,7 +99544,7 @@ index 4f9e530..779c7ce 100644
26022 if (!pmd)
26023 return -ENOMEM;
26024 do {
26025 -@@ -2541,7 +2555,9 @@ static int apply_to_pud_range(struct mm_struct *mm, pgd_t *pgd,
26026 +@@ -1897,7 +1922,9 @@ static int apply_to_pud_range(struct mm_struct *mm, pgd_t *pgd,
26027 unsigned long next;
26028 int err;
26029
26030 @@ -93604,7 +99555,7 @@ index 4f9e530..779c7ce 100644
26031 if (!pud)
26032 return -ENOMEM;
26033 do {
26034 -@@ -2663,6 +2679,186 @@ static int do_page_mkwrite(struct vm_area_struct *vma, struct page *page,
26035 +@@ -2019,6 +2046,186 @@ static int do_page_mkwrite(struct vm_area_struct *vma, struct page *page,
26036 return ret;
26037 }
26038
26039 @@ -93791,7 +99742,7 @@ index 4f9e530..779c7ce 100644
26040 /*
26041 * This routine handles present pages, when users try to write
26042 * to a shared page. It is done by copying the page to a new address
26043 -@@ -2860,6 +3056,12 @@ gotten:
26044 +@@ -2216,6 +2423,12 @@ gotten:
26045 */
26046 page_table = pte_offset_map_lock(mm, pmd, address, &ptl);
26047 if (likely(pte_same(*page_table, orig_pte))) {
26048 @@ -93804,7 +99755,7 @@ index 4f9e530..779c7ce 100644
26049 if (old_page) {
26050 if (!PageAnon(old_page)) {
26051 dec_mm_counter_fast(mm, MM_FILEPAGES);
26052 -@@ -2911,6 +3113,10 @@ gotten:
26053 +@@ -2267,6 +2480,10 @@ gotten:
26054 page_remove_rmap(old_page);
26055 }
26056
26057 @@ -93815,7 +99766,7 @@ index 4f9e530..779c7ce 100644
26058 /* Free the old page.. */
26059 new_page = old_page;
26060 ret |= VM_FAULT_WRITE;
26061 -@@ -3184,6 +3390,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma,
26062 +@@ -2540,6 +2757,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma,
26063 swap_free(entry);
26064 if (vm_swap_full() || (vma->vm_flags & VM_LOCKED) || PageMlocked(page))
26065 try_to_free_swap(page);
26066 @@ -93827,7 +99778,7 @@ index 4f9e530..779c7ce 100644
26067 unlock_page(page);
26068 if (page != swapcache) {
26069 /*
26070 -@@ -3207,6 +3418,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma,
26071 +@@ -2563,6 +2785,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma,
26072
26073 /* No need to invalidate - it was non-present before */
26074 update_mmu_cache(vma, address, page_table);
26075 @@ -93839,7 +99790,7 @@ index 4f9e530..779c7ce 100644
26076 unlock:
26077 pte_unmap_unlock(page_table, ptl);
26078 out:
26079 -@@ -3226,40 +3442,6 @@ out_release:
26080 +@@ -2582,40 +2809,6 @@ out_release:
26081 }
26082
26083 /*
26084 @@ -93880,7 +99831,7 @@ index 4f9e530..779c7ce 100644
26085 * We enter with non-exclusive mmap_sem (to exclude vma changes,
26086 * but allow concurrent faults), and pte mapped but not yet locked.
26087 * We return with mmap_sem still held, but pte unmapped and unlocked.
26088 -@@ -3268,27 +3450,23 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma,
26089 +@@ -2624,27 +2817,23 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma,
26090 unsigned long address, pte_t *page_table, pmd_t *pmd,
26091 unsigned int flags)
26092 {
26093 @@ -93913,7 +99864,7 @@ index 4f9e530..779c7ce 100644
26094 if (unlikely(anon_vma_prepare(vma)))
26095 goto oom;
26096 page = alloc_zeroed_user_highpage_movable(vma, address);
26097 -@@ -3312,6 +3490,11 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma,
26098 +@@ -2668,6 +2857,11 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma,
26099 if (!pte_none(*page_table))
26100 goto release;
26101
26102 @@ -93925,7 +99876,7 @@ index 4f9e530..779c7ce 100644
26103 inc_mm_counter_fast(mm, MM_ANONPAGES);
26104 page_add_new_anon_rmap(page, vma, address);
26105 setpte:
26106 -@@ -3319,6 +3502,12 @@ setpte:
26107 +@@ -2675,6 +2869,12 @@ setpte:
26108
26109 /* No need to invalidate - it was non-present before */
26110 update_mmu_cache(vma, address, page_table);
26111 @@ -93938,17 +99889,7 @@ index 4f9e530..779c7ce 100644
26112 unlock:
26113 pte_unmap_unlock(page_table, ptl);
26114 return 0;
26115 -@@ -3515,7 +3704,8 @@ static int do_read_fault(struct mm_struct *mm, struct vm_area_struct *vma,
26116 - * if page by the offset is not ready to be mapped (cold cache or
26117 - * something).
26118 - */
26119 -- if (vma->vm_ops->map_pages && !(flags & FAULT_FLAG_NONLINEAR)) {
26120 -+ if (vma->vm_ops->map_pages && !(flags & FAULT_FLAG_NONLINEAR) &&
26121 -+ fault_around_pages() > 1) {
26122 - pte = pte_offset_map_lock(mm, pmd, address, &ptl);
26123 - do_fault_around(vma, address, pte, pgoff, flags);
26124 - if (!pte_same(*pte, orig_pte))
26125 -@@ -3535,6 +3725,11 @@ static int do_read_fault(struct mm_struct *mm, struct vm_area_struct *vma,
26126 +@@ -2906,6 +3106,11 @@ static int do_read_fault(struct mm_struct *mm, struct vm_area_struct *vma,
26127 return ret;
26128 }
26129 do_set_pte(vma, address, fault_page, pte, false, false);
26130 @@ -93960,7 +99901,7 @@ index 4f9e530..779c7ce 100644
26131 unlock_page(fault_page);
26132 unlock_out:
26133 pte_unmap_unlock(pte, ptl);
26134 -@@ -3576,7 +3771,18 @@ static int do_cow_fault(struct mm_struct *mm, struct vm_area_struct *vma,
26135 +@@ -2947,7 +3152,18 @@ static int do_cow_fault(struct mm_struct *mm, struct vm_area_struct *vma,
26136 page_cache_release(fault_page);
26137 goto uncharge_out;
26138 }
26139 @@ -93979,7 +99920,7 @@ index 4f9e530..779c7ce 100644
26140 pte_unmap_unlock(pte, ptl);
26141 unlock_page(fault_page);
26142 page_cache_release(fault_page);
26143 -@@ -3624,6 +3830,11 @@ static int do_shared_fault(struct mm_struct *mm, struct vm_area_struct *vma,
26144 +@@ -2995,6 +3211,11 @@ static int do_shared_fault(struct mm_struct *mm, struct vm_area_struct *vma,
26145 return ret;
26146 }
26147 do_set_pte(vma, address, fault_page, pte, true, false);
26148 @@ -93991,7 +99932,7 @@ index 4f9e530..779c7ce 100644
26149 pte_unmap_unlock(pte, ptl);
26150
26151 if (set_page_dirty(fault_page))
26152 -@@ -3854,6 +4065,12 @@ static int handle_pte_fault(struct mm_struct *mm,
26153 +@@ -3225,6 +3446,12 @@ static int handle_pte_fault(struct mm_struct *mm,
26154 if (flags & FAULT_FLAG_WRITE)
26155 flush_tlb_fix_spurious_fault(vma, address);
26156 }
26157 @@ -94004,7 +99945,7 @@ index 4f9e530..779c7ce 100644
26158 unlock:
26159 pte_unmap_unlock(pte, ptl);
26160 return 0;
26161 -@@ -3870,9 +4087,41 @@ static int __handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma,
26162 +@@ -3241,9 +3468,41 @@ static int __handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma,
26163 pmd_t *pmd;
26164 pte_t *pte;
26165
26166 @@ -94046,7 +99987,7 @@ index 4f9e530..779c7ce 100644
26167 pgd = pgd_offset(mm, address);
26168 pud = pud_alloc(mm, pgd, address);
26169 if (!pud)
26170 -@@ -4000,6 +4249,23 @@ int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address)
26171 +@@ -3371,6 +3630,23 @@ int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address)
26172 spin_unlock(&mm->page_table_lock);
26173 return 0;
26174 }
26175 @@ -94070,7 +100011,7 @@ index 4f9e530..779c7ce 100644
26176 #endif /* __PAGETABLE_PUD_FOLDED */
26177
26178 #ifndef __PAGETABLE_PMD_FOLDED
26179 -@@ -4030,6 +4296,30 @@ int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address)
26180 +@@ -3401,6 +3677,30 @@ int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address)
26181 spin_unlock(&mm->page_table_lock);
26182 return 0;
26183 }
26184 @@ -94101,7 +100042,7 @@ index 4f9e530..779c7ce 100644
26185 #endif /* __PAGETABLE_PMD_FOLDED */
26186
26187 #if !defined(__HAVE_ARCH_GATE_AREA)
26188 -@@ -4043,7 +4333,7 @@ static int __init gate_vma_init(void)
26189 +@@ -3414,7 +3714,7 @@ static int __init gate_vma_init(void)
26190 gate_vma.vm_start = FIXADDR_USER_START;
26191 gate_vma.vm_end = FIXADDR_USER_END;
26192 gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC;
26193 @@ -94110,7 +100051,7 @@ index 4f9e530..779c7ce 100644
26194
26195 return 0;
26196 }
26197 -@@ -4177,8 +4467,8 @@ out:
26198 +@@ -3548,8 +3848,8 @@ out:
26199 return ret;
26200 }
26201
26202 @@ -94121,7 +100062,7 @@ index 4f9e530..779c7ce 100644
26203 {
26204 resource_size_t phys_addr;
26205 unsigned long prot = 0;
26206 -@@ -4204,8 +4494,8 @@ EXPORT_SYMBOL_GPL(generic_access_phys);
26207 +@@ -3575,8 +3875,8 @@ EXPORT_SYMBOL_GPL(generic_access_phys);
26208 * Access another process' address space as given in mm. If non-NULL, use the
26209 * given task for page fault accounting.
26210 */
26211 @@ -94132,7 +100073,7 @@ index 4f9e530..779c7ce 100644
26212 {
26213 struct vm_area_struct *vma;
26214 void *old_buf = buf;
26215 -@@ -4213,7 +4503,7 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
26216 +@@ -3584,7 +3884,7 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
26217 down_read(&mm->mmap_sem);
26218 /* ignore errors, just check how much was successfully transferred */
26219 while (len) {
26220 @@ -94141,7 +100082,7 @@ index 4f9e530..779c7ce 100644
26221 void *maddr;
26222 struct page *page = NULL;
26223
26224 -@@ -4272,8 +4562,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
26225 +@@ -3643,8 +3943,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
26226 *
26227 * The caller must hold a reference on @mm.
26228 */
26229 @@ -94152,7 +100093,7 @@ index 4f9e530..779c7ce 100644
26230 {
26231 return __access_remote_vm(NULL, mm, addr, buf, len, write);
26232 }
26233 -@@ -4283,11 +4573,11 @@ int access_remote_vm(struct mm_struct *mm, unsigned long addr,
26234 +@@ -3654,11 +3954,11 @@ int access_remote_vm(struct mm_struct *mm, unsigned long addr,
26235 * Source/target buffer must be kernel space,
26236 * Do not walk the page table directly, use get_user_pages
26237 */
26238 @@ -94168,10 +100109,10 @@ index 4f9e530..779c7ce 100644
26239 mm = get_task_mm(tsk);
26240 if (!mm)
26241 diff --git a/mm/mempolicy.c b/mm/mempolicy.c
26242 -index 6b65d10..e6f415a 100644
26243 +index 8f5330d..b41914b 100644
26244 --- a/mm/mempolicy.c
26245 +++ b/mm/mempolicy.c
26246 -@@ -747,6 +747,10 @@ static int mbind_range(struct mm_struct *mm, unsigned long start,
26247 +@@ -750,6 +750,10 @@ static int mbind_range(struct mm_struct *mm, unsigned long start,
26248 unsigned long vmstart;
26249 unsigned long vmend;
26250
26251 @@ -94182,7 +100123,7 @@ index 6b65d10..e6f415a 100644
26252 vma = find_vma(mm, start);
26253 if (!vma || vma->vm_start > start)
26254 return -EFAULT;
26255 -@@ -790,6 +794,16 @@ static int mbind_range(struct mm_struct *mm, unsigned long start,
26256 +@@ -793,6 +797,16 @@ static int mbind_range(struct mm_struct *mm, unsigned long start,
26257 err = vma_replace_policy(vma, new_pol);
26258 if (err)
26259 goto out;
26260 @@ -94199,7 +100140,7 @@ index 6b65d10..e6f415a 100644
26261 }
26262
26263 out:
26264 -@@ -1222,6 +1236,17 @@ static long do_mbind(unsigned long start, unsigned long len,
26265 +@@ -1225,6 +1239,17 @@ static long do_mbind(unsigned long start, unsigned long len,
26266
26267 if (end < start)
26268 return -EINVAL;
26269 @@ -94217,7 +100158,7 @@ index 6b65d10..e6f415a 100644
26270 if (end == start)
26271 return 0;
26272
26273 -@@ -1447,8 +1472,7 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode,
26274 +@@ -1450,8 +1475,7 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode,
26275 */
26276 tcred = __task_cred(task);
26277 if (!uid_eq(cred->euid, tcred->suid) && !uid_eq(cred->euid, tcred->uid) &&
26278 @@ -94227,7 +100168,7 @@ index 6b65d10..e6f415a 100644
26279 rcu_read_unlock();
26280 err = -EPERM;
26281 goto out_put;
26282 -@@ -1479,6 +1503,15 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode,
26283 +@@ -1482,6 +1506,15 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode,
26284 goto out;
26285 }
26286
26287 @@ -94244,10 +100185,10 @@ index 6b65d10..e6f415a 100644
26288 capable(CAP_SYS_NICE) ? MPOL_MF_MOVE_ALL : MPOL_MF_MOVE);
26289
26290 diff --git a/mm/migrate.c b/mm/migrate.c
26291 -index bed4880..a493f67 100644
26292 +index be6dbf9..febb8ec 100644
26293 --- a/mm/migrate.c
26294 +++ b/mm/migrate.c
26295 -@@ -1485,8 +1485,7 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages,
26296 +@@ -1506,8 +1506,7 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages,
26297 */
26298 tcred = __task_cred(task);
26299 if (!uid_eq(cred->euid, tcred->suid) && !uid_eq(cred->euid, tcred->uid) &&
26300 @@ -94333,18 +100274,18 @@ index b1eb536..091d154 100644
26301 capable(CAP_IPC_LOCK))
26302 ret = do_mlockall(flags);
26303 diff --git a/mm/mmap.c b/mm/mmap.c
26304 -index b1202cf..ee487f8 100644
26305 +index 129b847..fbed804 100644
26306 --- a/mm/mmap.c
26307 +++ b/mm/mmap.c
26308 -@@ -37,6 +37,7 @@
26309 - #include <linux/sched/sysctl.h>
26310 +@@ -40,6 +40,7 @@
26311 #include <linux/notifier.h>
26312 #include <linux/memory.h>
26313 + #include <linux/printk.h>
26314 +#include <linux/random.h>
26315
26316 #include <asm/uaccess.h>
26317 #include <asm/cacheflush.h>
26318 -@@ -53,6 +54,16 @@
26319 +@@ -56,6 +57,16 @@
26320 #define arch_rebalance_pgtables(addr, len) (addr)
26321 #endif
26322
26323 @@ -94361,7 +100302,7 @@ index b1202cf..ee487f8 100644
26324 static void unmap_region(struct mm_struct *mm,
26325 struct vm_area_struct *vma, struct vm_area_struct *prev,
26326 unsigned long start, unsigned long end);
26327 -@@ -72,16 +83,25 @@ static void unmap_region(struct mm_struct *mm,
26328 +@@ -75,16 +86,25 @@ static void unmap_region(struct mm_struct *mm,
26329 * x: (no) no x: (no) yes x: (no) yes x: (yes) yes
26330 *
26331 */
26332 @@ -94390,7 +100331,7 @@ index b1202cf..ee487f8 100644
26333 }
26334 EXPORT_SYMBOL(vm_get_page_prot);
26335
26336 -@@ -91,6 +111,7 @@ unsigned long sysctl_overcommit_kbytes __read_mostly;
26337 +@@ -94,6 +114,7 @@ unsigned long sysctl_overcommit_kbytes __read_mostly;
26338 int sysctl_max_map_count __read_mostly = DEFAULT_MAX_MAP_COUNT;
26339 unsigned long sysctl_user_reserve_kbytes __read_mostly = 1UL << 17; /* 128MB */
26340 unsigned long sysctl_admin_reserve_kbytes __read_mostly = 1UL << 13; /* 8MB */
26341 @@ -94398,7 +100339,7 @@ index b1202cf..ee487f8 100644
26342 /*
26343 * Make sure vm_committed_as in one cacheline and not cacheline shared with
26344 * other variables. It can be updated by several CPUs frequently.
26345 -@@ -247,6 +268,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
26346 +@@ -250,6 +271,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
26347 struct vm_area_struct *next = vma->vm_next;
26348
26349 might_sleep();
26350 @@ -94406,15 +100347,20 @@ index b1202cf..ee487f8 100644
26351 if (vma->vm_ops && vma->vm_ops->close)
26352 vma->vm_ops->close(vma);
26353 if (vma->vm_file)
26354 -@@ -291,6 +313,7 @@ SYSCALL_DEFINE1(brk, unsigned long, brk)
26355 +@@ -294,6 +316,12 @@ SYSCALL_DEFINE1(brk, unsigned long, brk)
26356 * not page aligned -Ram Gupta
26357 */
26358 rlim = rlimit(RLIMIT_DATA);
26359 ++#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
26360 ++ /* force a minimum 16MB brk heap on setuid/setgid binaries */
26361 ++ if (rlim < PAGE_SIZE && (get_dumpable(mm) != SUID_DUMP_USER) && gr_is_global_nonroot(current_uid()))
26362 ++ rlim = 4096 * PAGE_SIZE;
26363 ++#endif
26364 + gr_learn_resource(current, RLIMIT_DATA, (brk - mm->start_brk) + (mm->end_data - mm->start_data), 1);
26365 if (rlim < RLIM_INFINITY && (brk - mm->start_brk) +
26366 (mm->end_data - mm->start_data) > rlim)
26367 goto out;
26368 -@@ -942,6 +965,12 @@ static int
26369 +@@ -944,6 +972,12 @@ static int
26370 can_vma_merge_before(struct vm_area_struct *vma, unsigned long vm_flags,
26371 struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff)
26372 {
26373 @@ -94427,7 +100373,7 @@ index b1202cf..ee487f8 100644
26374 if (is_mergeable_vma(vma, file, vm_flags) &&
26375 is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) {
26376 if (vma->vm_pgoff == vm_pgoff)
26377 -@@ -961,6 +990,12 @@ static int
26378 +@@ -963,6 +997,12 @@ static int
26379 can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags,
26380 struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff)
26381 {
26382 @@ -94440,7 +100386,7 @@ index b1202cf..ee487f8 100644
26383 if (is_mergeable_vma(vma, file, vm_flags) &&
26384 is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) {
26385 pgoff_t vm_pglen;
26386 -@@ -1003,13 +1038,20 @@ can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags,
26387 +@@ -1005,13 +1045,20 @@ can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags,
26388 struct vm_area_struct *vma_merge(struct mm_struct *mm,
26389 struct vm_area_struct *prev, unsigned long addr,
26390 unsigned long end, unsigned long vm_flags,
26391 @@ -94462,7 +100408,7 @@ index b1202cf..ee487f8 100644
26392 /*
26393 * We later require that vma->vm_flags == vm_flags,
26394 * so this tests vma->vm_flags & VM_SPECIAL, too.
26395 -@@ -1025,6 +1067,15 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
26396 +@@ -1027,6 +1074,15 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
26397 if (next && next->vm_end == end) /* cases 6, 7, 8 */
26398 next = next->vm_next;
26399
26400 @@ -94478,7 +100424,7 @@ index b1202cf..ee487f8 100644
26401 /*
26402 * Can it merge with the predecessor?
26403 */
26404 -@@ -1044,9 +1095,24 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
26405 +@@ -1046,9 +1102,24 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
26406 /* cases 1, 6 */
26407 err = vma_adjust(prev, prev->vm_start,
26408 next->vm_end, prev->vm_pgoff, NULL);
26409 @@ -94504,7 +100450,7 @@ index b1202cf..ee487f8 100644
26410 if (err)
26411 return NULL;
26412 khugepaged_enter_vma_merge(prev);
26413 -@@ -1060,12 +1126,27 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
26414 +@@ -1062,12 +1133,27 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
26415 mpol_equal(policy, vma_policy(next)) &&
26416 can_vma_merge_before(next, vm_flags,
26417 anon_vma, file, pgoff+pglen)) {
26418 @@ -94534,7 +100480,7 @@ index b1202cf..ee487f8 100644
26419 if (err)
26420 return NULL;
26421 khugepaged_enter_vma_merge(area);
26422 -@@ -1174,8 +1255,10 @@ none:
26423 +@@ -1176,8 +1262,10 @@ none:
26424 void vm_stat_account(struct mm_struct *mm, unsigned long flags,
26425 struct file *file, long pages)
26426 {
26427 @@ -94547,7 +100493,7 @@ index b1202cf..ee487f8 100644
26428
26429 mm->total_vm += pages;
26430
26431 -@@ -1183,7 +1266,7 @@ void vm_stat_account(struct mm_struct *mm, unsigned long flags,
26432 +@@ -1185,7 +1273,7 @@ void vm_stat_account(struct mm_struct *mm, unsigned long flags,
26433 mm->shared_vm += pages;
26434 if ((flags & (VM_EXEC|VM_WRITE)) == VM_EXEC)
26435 mm->exec_vm += pages;
26436 @@ -94556,7 +100502,7 @@ index b1202cf..ee487f8 100644
26437 mm->stack_vm += pages;
26438 }
26439 #endif /* CONFIG_PROC_FS */
26440 -@@ -1213,6 +1296,7 @@ static inline int mlock_future_check(struct mm_struct *mm,
26441 +@@ -1215,6 +1303,7 @@ static inline int mlock_future_check(struct mm_struct *mm,
26442 locked += mm->locked_vm;
26443 lock_limit = rlimit(RLIMIT_MEMLOCK);
26444 lock_limit >>= PAGE_SHIFT;
26445 @@ -94564,7 +100510,7 @@ index b1202cf..ee487f8 100644
26446 if (locked > lock_limit && !capable(CAP_IPC_LOCK))
26447 return -EAGAIN;
26448 }
26449 -@@ -1239,7 +1323,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
26450 +@@ -1241,7 +1330,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
26451 * (the exception is when the underlying filesystem is noexec
26452 * mounted, in which case we dont add PROT_EXEC.)
26453 */
26454 @@ -94573,7 +100519,7 @@ index b1202cf..ee487f8 100644
26455 if (!(file && (file->f_path.mnt->mnt_flags & MNT_NOEXEC)))
26456 prot |= PROT_EXEC;
26457
26458 -@@ -1265,7 +1349,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
26459 +@@ -1267,7 +1356,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
26460 /* Obtain the address to map to. we verify (or select) it and ensure
26461 * that it represents a valid section of the address space.
26462 */
26463 @@ -94582,7 +100528,7 @@ index b1202cf..ee487f8 100644
26464 if (addr & ~PAGE_MASK)
26465 return addr;
26466
26467 -@@ -1276,6 +1360,43 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
26468 +@@ -1278,6 +1367,43 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
26469 vm_flags = calc_vm_prot_bits(prot) | calc_vm_flag_bits(flags) |
26470 mm->def_flags | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC;
26471
26472 @@ -94626,7 +100572,7 @@ index b1202cf..ee487f8 100644
26473 if (flags & MAP_LOCKED)
26474 if (!can_do_mlock())
26475 return -EPERM;
26476 -@@ -1363,6 +1484,9 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
26477 +@@ -1365,6 +1491,9 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
26478 vm_flags |= VM_NORESERVE;
26479 }
26480
26481 @@ -94636,7 +100582,7 @@ index b1202cf..ee487f8 100644
26482 addr = mmap_region(file, addr, len, vm_flags, pgoff);
26483 if (!IS_ERR_VALUE(addr) &&
26484 ((vm_flags & VM_LOCKED) ||
26485 -@@ -1456,7 +1580,7 @@ int vma_wants_writenotify(struct vm_area_struct *vma)
26486 +@@ -1458,7 +1587,7 @@ int vma_wants_writenotify(struct vm_area_struct *vma)
26487 vm_flags_t vm_flags = vma->vm_flags;
26488
26489 /* If it was private or non-writable, the write bit is already clear */
26490 @@ -94645,7 +100591,7 @@ index b1202cf..ee487f8 100644
26491 return 0;
26492
26493 /* The backer wishes to know when pages are first written to? */
26494 -@@ -1502,7 +1626,22 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
26495 +@@ -1504,7 +1633,22 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
26496 struct rb_node **rb_link, *rb_parent;
26497 unsigned long charged = 0;
26498
26499 @@ -94668,7 +100614,7 @@ index b1202cf..ee487f8 100644
26500 if (!may_expand_vm(mm, len >> PAGE_SHIFT)) {
26501 unsigned long nr_pages;
26502
26503 -@@ -1521,11 +1660,10 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
26504 +@@ -1523,11 +1667,10 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
26505
26506 /* Clear old maps */
26507 error = -ENOMEM;
26508 @@ -94681,7 +100627,7 @@ index b1202cf..ee487f8 100644
26509 }
26510
26511 /*
26512 -@@ -1556,6 +1694,16 @@ munmap_back:
26513 +@@ -1558,6 +1701,16 @@ munmap_back:
26514 goto unacct_error;
26515 }
26516
26517 @@ -94698,7 +100644,7 @@ index b1202cf..ee487f8 100644
26518 vma->vm_mm = mm;
26519 vma->vm_start = addr;
26520 vma->vm_end = addr + len;
26521 -@@ -1575,6 +1723,13 @@ munmap_back:
26522 +@@ -1577,6 +1730,13 @@ munmap_back:
26523 if (error)
26524 goto unmap_and_free_vma;
26525
26526 @@ -94712,7 +100658,7 @@ index b1202cf..ee487f8 100644
26527 /* Can addr have changed??
26528 *
26529 * Answer: Yes, several device drivers can do it in their
26530 -@@ -1608,6 +1763,12 @@ munmap_back:
26531 +@@ -1610,6 +1770,12 @@ munmap_back:
26532 }
26533
26534 vma_link(mm, vma, prev, rb_link, rb_parent);
26535 @@ -94725,7 +100671,7 @@ index b1202cf..ee487f8 100644
26536 /* Once vma denies write, undo our temporary denial count */
26537 if (vm_flags & VM_DENYWRITE)
26538 allow_write_access(file);
26539 -@@ -1616,6 +1777,7 @@ out:
26540 +@@ -1618,6 +1784,7 @@ out:
26541 perf_event_mmap(vma);
26542
26543 vm_stat_account(mm, vm_flags, file, len >> PAGE_SHIFT);
26544 @@ -94733,7 +100679,7 @@ index b1202cf..ee487f8 100644
26545 if (vm_flags & VM_LOCKED) {
26546 if (!((vm_flags & VM_SPECIAL) || is_vm_hugetlb_page(vma) ||
26547 vma == get_gate_vma(current->mm)))
26548 -@@ -1648,6 +1810,12 @@ unmap_and_free_vma:
26549 +@@ -1650,6 +1817,12 @@ unmap_and_free_vma:
26550 unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end);
26551 charged = 0;
26552 free_vma:
26553 @@ -94746,7 +100692,7 @@ index b1202cf..ee487f8 100644
26554 kmem_cache_free(vm_area_cachep, vma);
26555 unacct_error:
26556 if (charged)
26557 -@@ -1655,7 +1823,63 @@ unacct_error:
26558 +@@ -1657,7 +1830,63 @@ unacct_error:
26559 return error;
26560 }
26561
26562 @@ -94811,7 +100757,7 @@ index b1202cf..ee487f8 100644
26563 {
26564 /*
26565 * We implement the search by looking for an rbtree node that
26566 -@@ -1703,11 +1927,29 @@ unsigned long unmapped_area(struct vm_unmapped_area_info *info)
26567 +@@ -1705,11 +1934,29 @@ unsigned long unmapped_area(struct vm_unmapped_area_info *info)
26568 }
26569 }
26570
26571 @@ -94842,7 +100788,7 @@ index b1202cf..ee487f8 100644
26572 if (gap_end >= low_limit && gap_end - gap_start >= length)
26573 goto found;
26574
26575 -@@ -1757,7 +1999,7 @@ found:
26576 +@@ -1759,7 +2006,7 @@ found:
26577 return gap_start;
26578 }
26579
26580 @@ -94851,7 +100797,7 @@ index b1202cf..ee487f8 100644
26581 {
26582 struct mm_struct *mm = current->mm;
26583 struct vm_area_struct *vma;
26584 -@@ -1811,6 +2053,24 @@ check_current:
26585 +@@ -1813,6 +2060,24 @@ check_current:
26586 gap_end = vma->vm_start;
26587 if (gap_end < low_limit)
26588 return -ENOMEM;
26589 @@ -94876,7 +100822,7 @@ index b1202cf..ee487f8 100644
26590 if (gap_start <= high_limit && gap_end - gap_start >= length)
26591 goto found;
26592
26593 -@@ -1874,6 +2134,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
26594 +@@ -1876,6 +2141,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
26595 struct mm_struct *mm = current->mm;
26596 struct vm_area_struct *vma;
26597 struct vm_unmapped_area_info info;
26598 @@ -94884,7 +100830,7 @@ index b1202cf..ee487f8 100644
26599
26600 if (len > TASK_SIZE - mmap_min_addr)
26601 return -ENOMEM;
26602 -@@ -1881,11 +2142,15 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
26603 +@@ -1883,11 +2149,15 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
26604 if (flags & MAP_FIXED)
26605 return addr;
26606
26607 @@ -94901,7 +100847,7 @@ index b1202cf..ee487f8 100644
26608 return addr;
26609 }
26610
26611 -@@ -1894,6 +2159,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
26612 +@@ -1896,6 +2166,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
26613 info.low_limit = mm->mmap_base;
26614 info.high_limit = TASK_SIZE;
26615 info.align_mask = 0;
26616 @@ -94909,7 +100855,7 @@ index b1202cf..ee487f8 100644
26617 return vm_unmapped_area(&info);
26618 }
26619 #endif
26620 -@@ -1912,6 +2178,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
26621 +@@ -1914,6 +2185,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
26622 struct mm_struct *mm = current->mm;
26623 unsigned long addr = addr0;
26624 struct vm_unmapped_area_info info;
26625 @@ -94917,7 +100863,7 @@ index b1202cf..ee487f8 100644
26626
26627 /* requested length too big for entire address space */
26628 if (len > TASK_SIZE - mmap_min_addr)
26629 -@@ -1920,12 +2187,16 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
26630 +@@ -1922,12 +2194,16 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
26631 if (flags & MAP_FIXED)
26632 return addr;
26633
26634 @@ -94935,7 +100881,7 @@ index b1202cf..ee487f8 100644
26635 return addr;
26636 }
26637
26638 -@@ -1934,6 +2205,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
26639 +@@ -1936,6 +2212,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
26640 info.low_limit = max(PAGE_SIZE, mmap_min_addr);
26641 info.high_limit = mm->mmap_base;
26642 info.align_mask = 0;
26643 @@ -94943,7 +100889,7 @@ index b1202cf..ee487f8 100644
26644 addr = vm_unmapped_area(&info);
26645
26646 /*
26647 -@@ -1946,6 +2218,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
26648 +@@ -1948,6 +2225,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
26649 VM_BUG_ON(addr != -ENOMEM);
26650 info.flags = 0;
26651 info.low_limit = TASK_UNMAPPED_BASE;
26652 @@ -94956,7 +100902,7 @@ index b1202cf..ee487f8 100644
26653 info.high_limit = TASK_SIZE;
26654 addr = vm_unmapped_area(&info);
26655 }
26656 -@@ -2046,6 +2324,28 @@ find_vma_prev(struct mm_struct *mm, unsigned long addr,
26657 +@@ -2048,6 +2331,28 @@ find_vma_prev(struct mm_struct *mm, unsigned long addr,
26658 return vma;
26659 }
26660
26661 @@ -94985,7 +100931,7 @@ index b1202cf..ee487f8 100644
26662 /*
26663 * Verify that the stack growth is acceptable and
26664 * update accounting. This is shared with both the
26665 -@@ -2062,6 +2362,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
26666 +@@ -2064,6 +2369,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
26667 return -ENOMEM;
26668
26669 /* Stack limit test */
26670 @@ -94993,7 +100939,7 @@ index b1202cf..ee487f8 100644
26671 if (size > ACCESS_ONCE(rlim[RLIMIT_STACK].rlim_cur))
26672 return -ENOMEM;
26673
26674 -@@ -2072,6 +2373,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
26675 +@@ -2074,6 +2380,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
26676 locked = mm->locked_vm + grow;
26677 limit = ACCESS_ONCE(rlim[RLIMIT_MEMLOCK].rlim_cur);
26678 limit >>= PAGE_SHIFT;
26679 @@ -95001,7 +100947,7 @@ index b1202cf..ee487f8 100644
26680 if (locked > limit && !capable(CAP_IPC_LOCK))
26681 return -ENOMEM;
26682 }
26683 -@@ -2101,37 +2403,48 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
26684 +@@ -2103,37 +2410,48 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
26685 * PA-RISC uses this for its stack; IA64 for its Register Backing Store.
26686 * vma is the last one with address > vma->vm_end. Have to extend vma.
26687 */
26688 @@ -95059,7 +101005,7 @@ index b1202cf..ee487f8 100644
26689 unsigned long size, grow;
26690
26691 size = address - vma->vm_start;
26692 -@@ -2166,6 +2479,8 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address)
26693 +@@ -2168,6 +2486,8 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address)
26694 }
26695 }
26696 }
26697 @@ -95068,7 +101014,7 @@ index b1202cf..ee487f8 100644
26698 vma_unlock_anon_vma(vma);
26699 khugepaged_enter_vma_merge(vma);
26700 validate_mm(vma->vm_mm);
26701 -@@ -2180,6 +2495,8 @@ int expand_downwards(struct vm_area_struct *vma,
26702 +@@ -2182,6 +2502,8 @@ int expand_downwards(struct vm_area_struct *vma,
26703 unsigned long address)
26704 {
26705 int error;
26706 @@ -95077,7 +101023,7 @@ index b1202cf..ee487f8 100644
26707
26708 /*
26709 * We must make sure the anon_vma is allocated
26710 -@@ -2193,6 +2510,15 @@ int expand_downwards(struct vm_area_struct *vma,
26711 +@@ -2195,6 +2517,15 @@ int expand_downwards(struct vm_area_struct *vma,
26712 if (error)
26713 return error;
26714
26715 @@ -95093,7 +101039,7 @@ index b1202cf..ee487f8 100644
26716 vma_lock_anon_vma(vma);
26717
26718 /*
26719 -@@ -2202,9 +2528,17 @@ int expand_downwards(struct vm_area_struct *vma,
26720 +@@ -2204,9 +2535,17 @@ int expand_downwards(struct vm_area_struct *vma,
26721 */
26722
26723 /* Somebody else might have raced and expanded it already */
26724 @@ -95112,7 +101058,7 @@ index b1202cf..ee487f8 100644
26725 size = vma->vm_end - address;
26726 grow = (vma->vm_start - address) >> PAGE_SHIFT;
26727
26728 -@@ -2229,13 +2563,27 @@ int expand_downwards(struct vm_area_struct *vma,
26729 +@@ -2231,13 +2570,27 @@ int expand_downwards(struct vm_area_struct *vma,
26730 vma->vm_pgoff -= grow;
26731 anon_vma_interval_tree_post_update_vma(vma);
26732 vma_gap_update(vma);
26733 @@ -95140,7 +101086,7 @@ index b1202cf..ee487f8 100644
26734 khugepaged_enter_vma_merge(vma);
26735 validate_mm(vma->vm_mm);
26736 return error;
26737 -@@ -2333,6 +2681,13 @@ static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma)
26738 +@@ -2335,6 +2688,13 @@ static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma)
26739 do {
26740 long nrpages = vma_pages(vma);
26741
26742 @@ -95154,7 +101100,7 @@ index b1202cf..ee487f8 100644
26743 if (vma->vm_flags & VM_ACCOUNT)
26744 nr_accounted += nrpages;
26745 vm_stat_account(mm, vma->vm_flags, vma->vm_file, -nrpages);
26746 -@@ -2377,6 +2732,16 @@ detach_vmas_to_be_unmapped(struct mm_struct *mm, struct vm_area_struct *vma,
26747 +@@ -2379,6 +2739,16 @@ detach_vmas_to_be_unmapped(struct mm_struct *mm, struct vm_area_struct *vma,
26748 insertion_point = (prev ? &prev->vm_next : &mm->mmap);
26749 vma->vm_prev = NULL;
26750 do {
26751 @@ -95171,7 +101117,7 @@ index b1202cf..ee487f8 100644
26752 vma_rb_erase(vma, &mm->mm_rb);
26753 mm->map_count--;
26754 tail_vma = vma;
26755 -@@ -2404,14 +2769,33 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
26756 +@@ -2406,14 +2776,33 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
26757 struct vm_area_struct *new;
26758 int err = -ENOMEM;
26759
26760 @@ -95205,7 +101151,7 @@ index b1202cf..ee487f8 100644
26761 /* most fields are the same, copy all, and then fixup */
26762 *new = *vma;
26763
26764 -@@ -2424,6 +2808,22 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
26765 +@@ -2426,6 +2815,22 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
26766 new->vm_pgoff += ((addr - vma->vm_start) >> PAGE_SHIFT);
26767 }
26768
26769 @@ -95228,7 +101174,7 @@ index b1202cf..ee487f8 100644
26770 err = vma_dup_policy(vma, new);
26771 if (err)
26772 goto out_free_vma;
26773 -@@ -2443,6 +2843,38 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
26774 +@@ -2445,6 +2850,38 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
26775 else
26776 err = vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new);
26777
26778 @@ -95267,7 +101213,7 @@ index b1202cf..ee487f8 100644
26779 /* Success. */
26780 if (!err)
26781 return 0;
26782 -@@ -2452,10 +2884,18 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
26783 +@@ -2454,10 +2891,18 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
26784 new->vm_ops->close(new);
26785 if (new->vm_file)
26786 fput(new->vm_file);
26787 @@ -95287,7 +101233,7 @@ index b1202cf..ee487f8 100644
26788 kmem_cache_free(vm_area_cachep, new);
26789 out_err:
26790 return err;
26791 -@@ -2468,6 +2908,15 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
26792 +@@ -2470,6 +2915,15 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
26793 int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
26794 unsigned long addr, int new_below)
26795 {
26796 @@ -95303,7 +101249,7 @@ index b1202cf..ee487f8 100644
26797 if (mm->map_count >= sysctl_max_map_count)
26798 return -ENOMEM;
26799
26800 -@@ -2479,11 +2928,30 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
26801 +@@ -2481,11 +2935,30 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
26802 * work. This now handles partial unmappings.
26803 * Jeremy Fitzhardinge <jeremy@××××.org>
26804 */
26805 @@ -95334,7 +101280,7 @@ index b1202cf..ee487f8 100644
26806 if ((start & ~PAGE_MASK) || start > TASK_SIZE || len > TASK_SIZE-start)
26807 return -EINVAL;
26808
26809 -@@ -2558,6 +3026,8 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
26810 +@@ -2560,6 +3033,8 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
26811 /* Fix up all other VM information */
26812 remove_vma_list(mm, vma);
26813
26814 @@ -95343,7 +101289,7 @@ index b1202cf..ee487f8 100644
26815 return 0;
26816 }
26817
26818 -@@ -2566,6 +3036,13 @@ int vm_munmap(unsigned long start, size_t len)
26819 +@@ -2568,6 +3043,13 @@ int vm_munmap(unsigned long start, size_t len)
26820 int ret;
26821 struct mm_struct *mm = current->mm;
26822
26823 @@ -95357,7 +101303,7 @@ index b1202cf..ee487f8 100644
26824 down_write(&mm->mmap_sem);
26825 ret = do_munmap(mm, start, len);
26826 up_write(&mm->mmap_sem);
26827 -@@ -2579,16 +3056,6 @@ SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len)
26828 +@@ -2581,16 +3063,6 @@ SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len)
26829 return vm_munmap(addr, len);
26830 }
26831
26832 @@ -95374,7 +101320,7 @@ index b1202cf..ee487f8 100644
26833 /*
26834 * this is really a simplified "do_mmap". it only handles
26835 * anonymous maps. eventually we may be able to do some
26836 -@@ -2602,6 +3069,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
26837 +@@ -2604,6 +3076,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
26838 struct rb_node ** rb_link, * rb_parent;
26839 pgoff_t pgoff = addr >> PAGE_SHIFT;
26840 int error;
26841 @@ -95382,7 +101328,7 @@ index b1202cf..ee487f8 100644
26842
26843 len = PAGE_ALIGN(len);
26844 if (!len)
26845 -@@ -2609,10 +3077,24 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
26846 +@@ -2611,10 +3084,24 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
26847
26848 flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags;
26849
26850 @@ -95407,7 +101353,7 @@ index b1202cf..ee487f8 100644
26851 error = mlock_future_check(mm, mm->def_flags, len);
26852 if (error)
26853 return error;
26854 -@@ -2626,21 +3108,20 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
26855 +@@ -2628,21 +3115,20 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
26856 /*
26857 * Clear old maps. this also does some error checking for us
26858 */
26859 @@ -95432,7 +101378,7 @@ index b1202cf..ee487f8 100644
26860 return -ENOMEM;
26861
26862 /* Can we just expand an old private anonymous mapping? */
26863 -@@ -2654,7 +3135,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
26864 +@@ -2656,7 +3142,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
26865 */
26866 vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
26867 if (!vma) {
26868 @@ -95441,7 +101387,7 @@ index b1202cf..ee487f8 100644
26869 return -ENOMEM;
26870 }
26871
26872 -@@ -2668,10 +3149,11 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
26873 +@@ -2670,10 +3156,11 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
26874 vma_link(mm, vma, prev, rb_link, rb_parent);
26875 out:
26876 perf_event_mmap(vma);
26877 @@ -95455,7 +101401,7 @@ index b1202cf..ee487f8 100644
26878 return addr;
26879 }
26880
26881 -@@ -2733,6 +3215,7 @@ void exit_mmap(struct mm_struct *mm)
26882 +@@ -2735,6 +3222,7 @@ void exit_mmap(struct mm_struct *mm)
26883 while (vma) {
26884 if (vma->vm_flags & VM_ACCOUNT)
26885 nr_accounted += vma_pages(vma);
26886 @@ -95463,7 +101409,7 @@ index b1202cf..ee487f8 100644
26887 vma = remove_vma(vma);
26888 }
26889 vm_unacct_memory(nr_accounted);
26890 -@@ -2750,6 +3233,13 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
26891 +@@ -2752,6 +3240,13 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
26892 struct vm_area_struct *prev;
26893 struct rb_node **rb_link, *rb_parent;
26894
26895 @@ -95477,7 +101423,7 @@ index b1202cf..ee487f8 100644
26896 /*
26897 * The vm_pgoff of a purely anonymous vma should be irrelevant
26898 * until its first write fault, when page's anon_vma and index
26899 -@@ -2773,7 +3263,21 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
26900 +@@ -2775,7 +3270,21 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
26901 security_vm_enough_memory_mm(mm, vma_pages(vma)))
26902 return -ENOMEM;
26903
26904 @@ -95499,7 +101445,7 @@ index b1202cf..ee487f8 100644
26905 return 0;
26906 }
26907
26908 -@@ -2792,6 +3296,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
26909 +@@ -2794,6 +3303,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
26910 struct rb_node **rb_link, *rb_parent;
26911 bool faulted_in_anon_vma = true;
26912
26913 @@ -95508,7 +101454,7 @@ index b1202cf..ee487f8 100644
26914 /*
26915 * If anonymous vma has not yet been faulted, update new pgoff
26916 * to match new location, to increase its chance of merging.
26917 -@@ -2856,6 +3362,39 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
26918 +@@ -2858,6 +3369,39 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
26919 return NULL;
26920 }
26921
26922 @@ -95548,7 +101494,7 @@ index b1202cf..ee487f8 100644
26923 /*
26924 * Return true if the calling process may expand its vm space by the passed
26925 * number of pages
26926 -@@ -2867,6 +3406,7 @@ int may_expand_vm(struct mm_struct *mm, unsigned long npages)
26927 +@@ -2869,6 +3413,7 @@ int may_expand_vm(struct mm_struct *mm, unsigned long npages)
26928
26929 lim = rlimit(RLIMIT_AS) >> PAGE_SHIFT;
26930
26931 @@ -95556,7 +101502,7 @@ index b1202cf..ee487f8 100644
26932 if (cur + npages > lim)
26933 return 0;
26934 return 1;
26935 -@@ -2937,6 +3477,22 @@ struct vm_area_struct *_install_special_mapping(struct mm_struct *mm,
26936 +@@ -2951,6 +3496,22 @@ static struct vm_area_struct *__install_special_mapping(
26937 vma->vm_start = addr;
26938 vma->vm_end = addr + len;
26939
26940 @@ -95919,10 +101865,10 @@ index 05f1180..c3cde48 100644
26941 out:
26942 if (ret & ~PAGE_MASK)
26943 diff --git a/mm/nommu.c b/mm/nommu.c
26944 -index 431fd7c..8674512 100644
26945 +index 4a852f6..4371a6b 100644
26946 --- a/mm/nommu.c
26947 +++ b/mm/nommu.c
26948 -@@ -67,7 +67,6 @@ int sysctl_max_map_count = DEFAULT_MAX_MAP_COUNT;
26949 +@@ -70,7 +70,6 @@ int sysctl_max_map_count = DEFAULT_MAX_MAP_COUNT;
26950 int sysctl_nr_trim_pages = CONFIG_NOMMU_INITIAL_TRIM_EXCESS;
26951 unsigned long sysctl_user_reserve_kbytes __read_mostly = 1UL << 17; /* 128MB */
26952 unsigned long sysctl_admin_reserve_kbytes __read_mostly = 1UL << 13; /* 8MB */
26953 @@ -95930,7 +101876,7 @@ index 431fd7c..8674512 100644
26954
26955 atomic_long_t mmap_pages_allocated;
26956
26957 -@@ -854,15 +853,6 @@ struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr)
26958 +@@ -857,15 +856,6 @@ struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr)
26959 EXPORT_SYMBOL(find_vma);
26960
26961 /*
26962 @@ -95946,7 +101892,7 @@ index 431fd7c..8674512 100644
26963 * expand a stack to a given address
26964 * - not supported under NOMMU conditions
26965 */
26966 -@@ -1569,6 +1559,7 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
26967 +@@ -1572,6 +1562,7 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
26968
26969 /* most fields are the same, copy all, and then fixup */
26970 *new = *vma;
26971 @@ -95954,7 +101900,7 @@ index 431fd7c..8674512 100644
26972 *region = *vma->vm_region;
26973 new->vm_region = region;
26974
26975 -@@ -2004,8 +1995,8 @@ int generic_file_remap_pages(struct vm_area_struct *vma, unsigned long addr,
26976 +@@ -2007,8 +1998,8 @@ int generic_file_remap_pages(struct vm_area_struct *vma, unsigned long addr,
26977 }
26978 EXPORT_SYMBOL(generic_file_remap_pages);
26979
26980 @@ -95965,7 +101911,7 @@ index 431fd7c..8674512 100644
26981 {
26982 struct vm_area_struct *vma;
26983
26984 -@@ -2046,8 +2037,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
26985 +@@ -2049,8 +2040,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
26986 *
26987 * The caller must hold a reference on @mm.
26988 */
26989 @@ -95976,7 +101922,7 @@ index 431fd7c..8674512 100644
26990 {
26991 return __access_remote_vm(NULL, mm, addr, buf, len, write);
26992 }
26993 -@@ -2056,7 +2047,7 @@ int access_remote_vm(struct mm_struct *mm, unsigned long addr,
26994 +@@ -2059,7 +2050,7 @@ int access_remote_vm(struct mm_struct *mm, unsigned long addr,
26995 * Access another process' address space.
26996 * - source/target buffer must be kernel space
26997 */
26998 @@ -95986,10 +101932,10 @@ index 431fd7c..8674512 100644
26999 struct mm_struct *mm;
27000
27001 diff --git a/mm/page-writeback.c b/mm/page-writeback.c
27002 -index f972182..e7f7c07 100644
27003 +index e0c9430..3c6bf79 100644
27004 --- a/mm/page-writeback.c
27005 +++ b/mm/page-writeback.c
27006 -@@ -685,7 +685,7 @@ static long long pos_ratio_polynom(unsigned long setpoint,
27007 +@@ -667,7 +667,7 @@ static long long pos_ratio_polynom(unsigned long setpoint,
27008 * card's bdi_dirty may rush to many times higher than bdi_setpoint.
27009 * - the bdi dirty thresh drops quickly due to change of JBOD workload
27010 */
27011 @@ -95999,7 +101945,7 @@ index f972182..e7f7c07 100644
27012 unsigned long bg_thresh,
27013 unsigned long dirty,
27014 diff --git a/mm/page_alloc.c b/mm/page_alloc.c
27015 -index e98306f..3311d5e 100644
27016 +index ef44ad7..1056bc7 100644
27017 --- a/mm/page_alloc.c
27018 +++ b/mm/page_alloc.c
27019 @@ -61,6 +61,7 @@
27020 @@ -96010,7 +101956,7 @@ index e98306f..3311d5e 100644
27021
27022 #include <asm/sections.h>
27023 #include <asm/tlbflush.h>
27024 -@@ -356,7 +357,7 @@ out:
27025 +@@ -357,7 +358,7 @@ out:
27026 * This usage means that zero-order pages may not be compound.
27027 */
27028
27029 @@ -96019,7 +101965,7 @@ index e98306f..3311d5e 100644
27030 {
27031 __free_pages_ok(page, compound_order(page));
27032 }
27033 -@@ -730,6 +731,10 @@ static bool free_pages_prepare(struct page *page, unsigned int order)
27034 +@@ -745,6 +746,10 @@ static bool free_pages_prepare(struct page *page, unsigned int order)
27035 int i;
27036 int bad = 0;
27037
27038 @@ -96030,7 +101976,7 @@ index e98306f..3311d5e 100644
27039 trace_mm_page_free(page, order);
27040 kmemcheck_free_shadow(page, order);
27041
27042 -@@ -746,6 +751,12 @@ static bool free_pages_prepare(struct page *page, unsigned int order)
27043 +@@ -761,6 +766,12 @@ static bool free_pages_prepare(struct page *page, unsigned int order)
27044 debug_check_no_obj_freed(page_address(page),
27045 PAGE_SIZE << order);
27046 }
27047 @@ -96043,7 +101989,7 @@ index e98306f..3311d5e 100644
27048 arch_free_page(page, order);
27049 kernel_map_pages(page, 1 << order, 0);
27050
27051 -@@ -768,6 +779,20 @@ static void __free_pages_ok(struct page *page, unsigned int order)
27052 +@@ -784,6 +795,20 @@ static void __free_pages_ok(struct page *page, unsigned int order)
27053 local_irq_restore(flags);
27054 }
27055
27056 @@ -96064,7 +102010,7 @@ index e98306f..3311d5e 100644
27057 void __init __free_pages_bootmem(struct page *page, unsigned int order)
27058 {
27059 unsigned int nr_pages = 1 << order;
27060 -@@ -783,6 +808,19 @@ void __init __free_pages_bootmem(struct page *page, unsigned int order)
27061 +@@ -799,6 +824,19 @@ void __init __free_pages_bootmem(struct page *page, unsigned int order)
27062 __ClearPageReserved(p);
27063 set_page_count(p, 0);
27064
27065 @@ -96084,7 +102030,7 @@ index e98306f..3311d5e 100644
27066 page_zone(page)->managed_pages += nr_pages;
27067 set_page_refcounted(page);
27068 __free_pages(page, order);
27069 -@@ -911,8 +949,10 @@ static int prep_new_page(struct page *page, int order, gfp_t gfp_flags)
27070 +@@ -927,8 +965,10 @@ static int prep_new_page(struct page *page, unsigned int order, gfp_t gfp_flags)
27071 arch_alloc_page(page, order);
27072 kernel_map_pages(page, 1 << order, 1);
27073
27074 @@ -96095,7 +102041,7 @@ index e98306f..3311d5e 100644
27075
27076 if (order && (gfp_flags & __GFP_COMP))
27077 prep_compound_page(page, order);
27078 -@@ -2415,7 +2455,7 @@ static void reset_alloc_batches(struct zonelist *zonelist,
27079 +@@ -2427,7 +2467,7 @@ static void reset_alloc_batches(struct zonelist *zonelist,
27080 continue;
27081 mod_zone_page_state(zone, NR_ALLOC_BATCH,
27082 high_wmark_pages(zone) - low_wmark_pages(zone) -
27083 @@ -96104,19 +102050,6 @@ index e98306f..3311d5e 100644
27084 }
27085 }
27086
27087 -diff --git a/mm/page_io.c b/mm/page_io.c
27088 -index 7c59ef6..1358905 100644
27089 ---- a/mm/page_io.c
27090 -+++ b/mm/page_io.c
27091 -@@ -260,7 +260,7 @@ int __swap_writepage(struct page *page, struct writeback_control *wbc,
27092 - struct file *swap_file = sis->swap_file;
27093 - struct address_space *mapping = swap_file->f_mapping;
27094 - struct iovec iov = {
27095 -- .iov_base = kmap(page),
27096 -+ .iov_base = (void __force_user *)kmap(page),
27097 - .iov_len = PAGE_SIZE,
27098 - };
27099 -
27100 diff --git a/mm/percpu.c b/mm/percpu.c
27101 index 2ddf9a9..f8fc075 100644
27102 --- a/mm/percpu.c
27103 @@ -96131,7 +102064,7 @@ index 2ddf9a9..f8fc075 100644
27104
27105 static const int *pcpu_unit_map __read_mostly; /* cpu -> unit */
27106 diff --git a/mm/process_vm_access.c b/mm/process_vm_access.c
27107 -index 8505c92..946bfc9 100644
27108 +index 5077afc..846c9ef 100644
27109 --- a/mm/process_vm_access.c
27110 +++ b/mm/process_vm_access.c
27111 @@ -13,6 +13,7 @@
27112 @@ -96142,7 +102075,7 @@ index 8505c92..946bfc9 100644
27113 #include <linux/ptrace.h>
27114 #include <linux/slab.h>
27115 #include <linux/syscalls.h>
27116 -@@ -161,19 +162,19 @@ static ssize_t process_vm_rw_core(pid_t pid, struct iov_iter *iter,
27117 +@@ -157,19 +158,19 @@ static ssize_t process_vm_rw_core(pid_t pid, struct iov_iter *iter,
27118 ssize_t iov_len;
27119 size_t total_len = iov_iter_count(iter);
27120
27121 @@ -96169,7 +102102,7 @@ index 8505c92..946bfc9 100644
27122 }
27123
27124 if (nr_pages == 0)
27125 -@@ -201,6 +202,11 @@ static ssize_t process_vm_rw_core(pid_t pid, struct iov_iter *iter,
27126 +@@ -197,6 +198,11 @@ static ssize_t process_vm_rw_core(pid_t pid, struct iov_iter *iter,
27127 goto free_proc_pages;
27128 }
27129
27130 @@ -96182,7 +102115,7 @@ index 8505c92..946bfc9 100644
27131 if (!mm || IS_ERR(mm)) {
27132 rc = IS_ERR(mm) ? PTR_ERR(mm) : -ESRCH;
27133 diff --git a/mm/rmap.c b/mm/rmap.c
27134 -index 14d1e28..3777962 100644
27135 +index 22a4a76..9551288 100644
27136 --- a/mm/rmap.c
27137 +++ b/mm/rmap.c
27138 @@ -164,6 +164,10 @@ int anon_vma_prepare(struct vm_area_struct *vma)
27139 @@ -96285,7 +102218,7 @@ index 14d1e28..3777962 100644
27140
27141 /*
27142 diff --git a/mm/shmem.c b/mm/shmem.c
27143 -index a731cef..1e82984 100644
27144 +index af68b15..1227320 100644
27145 --- a/mm/shmem.c
27146 +++ b/mm/shmem.c
27147 @@ -33,7 +33,7 @@
27148 @@ -96306,7 +102239,7 @@ index a731cef..1e82984 100644
27149
27150 /*
27151 * shmem_fallocate communicates with shmem_fault or shmem_writepage via
27152 -@@ -2218,6 +2218,11 @@ static const struct xattr_handler *shmem_xattr_handlers[] = {
27153 +@@ -2219,6 +2219,11 @@ static const struct xattr_handler *shmem_xattr_handlers[] = {
27154 static int shmem_xattr_validate(const char *name)
27155 {
27156 struct { const char *prefix; size_t len; } arr[] = {
27157 @@ -96318,7 +102251,7 @@ index a731cef..1e82984 100644
27158 { XATTR_SECURITY_PREFIX, XATTR_SECURITY_PREFIX_LEN },
27159 { XATTR_TRUSTED_PREFIX, XATTR_TRUSTED_PREFIX_LEN }
27160 };
27161 -@@ -2273,6 +2278,15 @@ static int shmem_setxattr(struct dentry *dentry, const char *name,
27162 +@@ -2274,6 +2279,15 @@ static int shmem_setxattr(struct dentry *dentry, const char *name,
27163 if (err)
27164 return err;
27165
27166 @@ -96334,7 +102267,7 @@ index a731cef..1e82984 100644
27167 return simple_xattr_set(&info->xattrs, name, value, size, flags);
27168 }
27169
27170 -@@ -2585,8 +2599,7 @@ int shmem_fill_super(struct super_block *sb, void *data, int silent)
27171 +@@ -2586,8 +2600,7 @@ int shmem_fill_super(struct super_block *sb, void *data, int silent)
27172 int err = -ENOMEM;
27173
27174 /* Round up to L1_CACHE_BYTES to resist false sharing */
27175 @@ -96345,7 +102278,7 @@ index a731cef..1e82984 100644
27176 return -ENOMEM;
27177
27178 diff --git a/mm/slab.c b/mm/slab.c
27179 -index 9432556..e0dc685 100644
27180 +index 3070b92..bcfff83 100644
27181 --- a/mm/slab.c
27182 +++ b/mm/slab.c
27183 @@ -311,10 +311,12 @@ static void kmem_cache_node_init(struct kmem_cache_node *parent)
27184 @@ -96398,7 +102331,7 @@ index 9432556..e0dc685 100644
27185
27186 slab_early_init = 0;
27187
27188 -@@ -3525,6 +3529,21 @@ static inline void __cache_free(struct kmem_cache *cachep, void *objp,
27189 +@@ -3512,6 +3516,21 @@ static inline void __cache_free(struct kmem_cache *cachep, void *objp,
27190 struct array_cache *ac = cpu_cache_get(cachep);
27191
27192 check_irq_off();
27193 @@ -96420,7 +102353,7 @@ index 9432556..e0dc685 100644
27194 kmemleak_free_recursive(objp, cachep->flags);
27195 objp = cache_free_debugcheck(cachep, objp, caller);
27196
27197 -@@ -3748,6 +3767,7 @@ void kfree(const void *objp)
27198 +@@ -3735,6 +3754,7 @@ void kfree(const void *objp)
27199
27200 if (unlikely(ZERO_OR_NULL_PTR(objp)))
27201 return;
27202 @@ -96428,7 +102361,7 @@ index 9432556..e0dc685 100644
27203 local_irq_save(flags);
27204 kfree_debugcheck(objp);
27205 c = virt_to_cache(objp);
27206 -@@ -4189,14 +4209,22 @@ void slabinfo_show_stats(struct seq_file *m, struct kmem_cache *cachep)
27207 +@@ -4176,14 +4196,22 @@ void slabinfo_show_stats(struct seq_file *m, struct kmem_cache *cachep)
27208 }
27209 /* cpu stats */
27210 {
27211 @@ -96455,7 +102388,7 @@ index 9432556..e0dc685 100644
27212 #endif
27213 }
27214
27215 -@@ -4417,13 +4445,69 @@ static const struct file_operations proc_slabstats_operations = {
27216 +@@ -4404,13 +4432,69 @@ static const struct file_operations proc_slabstats_operations = {
27217 static int __init slab_proc_init(void)
27218 {
27219 #ifdef CONFIG_DEBUG_SLAB_LEAK
27220 @@ -96527,7 +102460,7 @@ index 9432556..e0dc685 100644
27221 * ksize - get the actual amount of memory allocated for a given object
27222 * @objp: Pointer to the object
27223 diff --git a/mm/slab.h b/mm/slab.h
27224 -index 6bd4c35..97565a1 100644
27225 +index 961a3fb..6b12514 100644
27226 --- a/mm/slab.h
27227 +++ b/mm/slab.h
27228 @@ -32,6 +32,15 @@ extern struct list_head slab_caches;
27229 @@ -96556,7 +102489,7 @@ index 6bd4c35..97565a1 100644
27230
27231 #if defined(CONFIG_DEBUG_SLAB)
27232 #define SLAB_DEBUG_FLAGS (SLAB_RED_ZONE | SLAB_POISON | SLAB_STORE_USER)
27233 -@@ -245,6 +255,9 @@ static inline struct kmem_cache *cache_from_obj(struct kmem_cache *s, void *x)
27234 +@@ -251,6 +261,9 @@ static inline struct kmem_cache *cache_from_obj(struct kmem_cache *s, void *x)
27235 return s;
27236
27237 page = virt_to_head_page(x);
27238 @@ -96567,7 +102500,7 @@ index 6bd4c35..97565a1 100644
27239 if (slab_equal_or_root(cachep, s))
27240 return cachep;
27241 diff --git a/mm/slab_common.c b/mm/slab_common.c
27242 -index b810fba..ae882bf 100644
27243 +index d31c4ba..1121296 100644
27244 --- a/mm/slab_common.c
27245 +++ b/mm/slab_common.c
27246 @@ -23,11 +23,22 @@
27247 @@ -96601,10 +102534,10 @@ index b810fba..ae882bf 100644
27248 - s->refcount = 1;
27249 + atomic_set(&s->refcount, 1);
27250 list_add(&s->list, &slab_caches);
27251 - memcg_register_cache(s);
27252 out:
27253 -@@ -334,8 +345,7 @@ void kmem_cache_destroy(struct kmem_cache *s)
27254 - get_online_cpus();
27255 + if (err)
27256 +@@ -339,8 +350,7 @@ void kmem_cache_destroy(struct kmem_cache *s)
27257 +
27258 mutex_lock(&slab_mutex);
27259
27260 - s->refcount--;
27261 @@ -96612,8 +102545,8 @@ index b810fba..ae882bf 100644
27262 + if (!atomic_dec_and_test(&s->refcount))
27263 goto out_unlock;
27264
27265 - if (kmem_cache_destroy_memcg_children(s) != 0)
27266 -@@ -358,7 +368,7 @@ void kmem_cache_destroy(struct kmem_cache *s)
27267 + if (memcg_cleanup_cache_params(s) != 0)
27268 +@@ -360,7 +370,7 @@ void kmem_cache_destroy(struct kmem_cache *s)
27269 rcu_barrier();
27270
27271 memcg_free_cache_params(s);
27272 @@ -96622,7 +102555,7 @@ index b810fba..ae882bf 100644
27273 sysfs_slab_remove(s);
27274 #else
27275 slab_kmem_cache_release(s);
27276 -@@ -393,7 +403,7 @@ void __init create_boot_cache(struct kmem_cache *s, const char *name, size_t siz
27277 +@@ -416,7 +426,7 @@ void __init create_boot_cache(struct kmem_cache *s, const char *name, size_t siz
27278 panic("Creation of kmalloc slab %s size=%zu failed. Reason %d\n",
27279 name, size, err);
27280
27281 @@ -96631,7 +102564,7 @@ index b810fba..ae882bf 100644
27282 }
27283
27284 struct kmem_cache *__init create_kmalloc_cache(const char *name, size_t size,
27285 -@@ -406,7 +416,7 @@ struct kmem_cache *__init create_kmalloc_cache(const char *name, size_t size,
27286 +@@ -429,7 +439,7 @@ struct kmem_cache *__init create_kmalloc_cache(const char *name, size_t size,
27287
27288 create_boot_cache(s, name, size, flags);
27289 list_add(&s->list, &slab_caches);
27290 @@ -96640,7 +102573,7 @@ index b810fba..ae882bf 100644
27291 return s;
27292 }
27293
27294 -@@ -418,6 +428,11 @@ struct kmem_cache *kmalloc_dma_caches[KMALLOC_SHIFT_HIGH + 1];
27295 +@@ -441,6 +451,11 @@ struct kmem_cache *kmalloc_dma_caches[KMALLOC_SHIFT_HIGH + 1];
27296 EXPORT_SYMBOL(kmalloc_dma_caches);
27297 #endif
27298
27299 @@ -96652,7 +102585,7 @@ index b810fba..ae882bf 100644
27300 /*
27301 * Conversion table for small slabs sizes / 8 to the index in the
27302 * kmalloc array. This is necessary for slabs < 192 since we have non power
27303 -@@ -482,6 +497,13 @@ struct kmem_cache *kmalloc_slab(size_t size, gfp_t flags)
27304 +@@ -505,6 +520,13 @@ struct kmem_cache *kmalloc_slab(size_t size, gfp_t flags)
27305 return kmalloc_dma_caches[index];
27306
27307 #endif
27308 @@ -96666,7 +102599,7 @@ index b810fba..ae882bf 100644
27309 return kmalloc_caches[index];
27310 }
27311
27312 -@@ -538,7 +560,7 @@ void __init create_kmalloc_caches(unsigned long flags)
27313 +@@ -561,7 +583,7 @@ void __init create_kmalloc_caches(unsigned long flags)
27314 for (i = KMALLOC_SHIFT_LOW; i <= KMALLOC_SHIFT_HIGH; i++) {
27315 if (!kmalloc_caches[i]) {
27316 kmalloc_caches[i] = create_kmalloc_cache(NULL,
27317 @@ -96675,7 +102608,7 @@ index b810fba..ae882bf 100644
27318 }
27319
27320 /*
27321 -@@ -547,10 +569,10 @@ void __init create_kmalloc_caches(unsigned long flags)
27322 +@@ -570,10 +592,10 @@ void __init create_kmalloc_caches(unsigned long flags)
27323 * earlier power of two caches
27324 */
27325 if (KMALLOC_MIN_SIZE <= 32 && !kmalloc_caches[1] && i == 6)
27326 @@ -96688,7 +102621,7 @@ index b810fba..ae882bf 100644
27327 }
27328
27329 /* Kmalloc array is now usable */
27330 -@@ -583,6 +605,23 @@ void __init create_kmalloc_caches(unsigned long flags)
27331 +@@ -606,6 +628,23 @@ void __init create_kmalloc_caches(unsigned long flags)
27332 }
27333 }
27334 #endif
27335 @@ -96712,7 +102645,7 @@ index b810fba..ae882bf 100644
27336 }
27337 #endif /* !CONFIG_SLOB */
27338
27339 -@@ -623,6 +662,9 @@ void print_slabinfo_header(struct seq_file *m)
27340 +@@ -664,6 +703,9 @@ void print_slabinfo_header(struct seq_file *m)
27341 seq_puts(m, " : globalstat <listallocs> <maxobjs> <grown> <reaped> "
27342 "<error> <maxfreeable> <nodeallocs> <remotefrees> <alienoverflow>");
27343 seq_puts(m, " : cpustat <allochit> <allocmiss> <freehit> <freemiss>");
27344 @@ -96723,7 +102656,7 @@ index b810fba..ae882bf 100644
27345 seq_putc(m, '\n');
27346 }
27347 diff --git a/mm/slob.c b/mm/slob.c
27348 -index 730cad4..8cfd442 100644
27349 +index 21980e0..ed9a648 100644
27350 --- a/mm/slob.c
27351 +++ b/mm/slob.c
27352 @@ -157,7 +157,7 @@ static void set_slob(slob_t *s, slobidx_t size, slob_t *next)
27353 @@ -97094,7 +103027,7 @@ index 730cad4..8cfd442 100644
27354 EXPORT_SYMBOL(kmem_cache_free);
27355
27356 diff --git a/mm/slub.c b/mm/slub.c
27357 -index 2b1ce69..4a2193f 100644
27358 +index 7300480..cb92846 100644
27359 --- a/mm/slub.c
27360 +++ b/mm/slub.c
27361 @@ -207,7 +207,7 @@ struct track {
27362 @@ -97110,12 +103043,12 @@ index 2b1ce69..4a2193f 100644
27363 if (!t->addr)
27364 return;
27365
27366 -- printk(KERN_ERR "INFO: %s in %pS age=%lu cpu=%u pid=%d\n",
27367 -+ printk(KERN_ERR "INFO: %s in %pA age=%lu cpu=%u pid=%d\n",
27368 - s, (void *)t->addr, jiffies - t->when, t->cpu, t->pid);
27369 +- pr_err("INFO: %s in %pS age=%lu cpu=%u pid=%d\n",
27370 ++ pr_err("INFO: %s in %pA age=%lu cpu=%u pid=%d\n",
27371 + s, (void *)t->addr, jiffies - t->when, t->cpu, t->pid);
27372 #ifdef CONFIG_STACKTRACE
27373 {
27374 -@@ -2666,6 +2666,14 @@ static __always_inline void slab_free(struct kmem_cache *s,
27375 +@@ -2673,6 +2673,14 @@ static __always_inline void slab_free(struct kmem_cache *s,
27376
27377 slab_free_hook(s, x);
27378
27379 @@ -97130,7 +103063,7 @@ index 2b1ce69..4a2193f 100644
27380 redo:
27381 /*
27382 * Determine the currently cpus per cpu slab.
27383 -@@ -2733,7 +2741,7 @@ static int slub_min_objects;
27384 +@@ -2740,7 +2748,7 @@ static int slub_min_objects;
27385 * Merge control. If this is set then no merging of slab caches will occur.
27386 * (Could be removed. This was introduced to pacify the merge skeptics.)
27387 */
27388 @@ -97139,7 +103072,7 @@ index 2b1ce69..4a2193f 100644
27389
27390 /*
27391 * Calculate the order of allocation given an slab object size.
27392 -@@ -3014,6 +3022,9 @@ static int calculate_sizes(struct kmem_cache *s, int forced_order)
27393 +@@ -3019,6 +3027,9 @@ static int calculate_sizes(struct kmem_cache *s, int forced_order)
27394 s->inuse = size;
27395
27396 if (((flags & (SLAB_DESTROY_BY_RCU | SLAB_POISON)) ||
27397 @@ -97149,7 +103082,7 @@ index 2b1ce69..4a2193f 100644
27398 s->ctor)) {
27399 /*
27400 * Relocate free pointer after the object if it is not
27401 -@@ -3343,6 +3354,59 @@ void *__kmalloc_node(size_t size, gfp_t flags, int node)
27402 +@@ -3347,6 +3358,59 @@ void *__kmalloc_node(size_t size, gfp_t flags, int node)
27403 EXPORT_SYMBOL(__kmalloc_node);
27404 #endif
27405
27406 @@ -97209,7 +103142,7 @@ index 2b1ce69..4a2193f 100644
27407 size_t ksize(const void *object)
27408 {
27409 struct page *page;
27410 -@@ -3371,6 +3435,7 @@ void kfree(const void *x)
27411 +@@ -3375,6 +3439,7 @@ void kfree(const void *x)
27412 if (unlikely(ZERO_OR_NULL_PTR(x)))
27413 return;
27414
27415 @@ -97217,7 +103150,7 @@ index 2b1ce69..4a2193f 100644
27416 page = virt_to_head_page(x);
27417 if (unlikely(!PageSlab(page))) {
27418 BUG_ON(!PageCompound(page));
27419 -@@ -3679,7 +3744,7 @@ static int slab_unmergeable(struct kmem_cache *s)
27420 +@@ -3680,7 +3745,7 @@ static int slab_unmergeable(struct kmem_cache *s)
27421 /*
27422 * We may have set a slab to be unmergeable during bootstrap.
27423 */
27424 @@ -97226,7 +103159,7 @@ index 2b1ce69..4a2193f 100644
27425 return 1;
27426
27427 return 0;
27428 -@@ -3736,7 +3801,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align,
27429 +@@ -3737,7 +3802,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align,
27430 int i;
27431 struct kmem_cache *c;
27432
27433 @@ -97235,7 +103168,7 @@ index 2b1ce69..4a2193f 100644
27434
27435 /*
27436 * Adjust the object sizes so that we clear
27437 -@@ -3755,7 +3820,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align,
27438 +@@ -3756,7 +3821,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align,
27439 }
27440
27441 if (sysfs_slab_alias(s, name)) {
27442 @@ -97244,7 +103177,7 @@ index 2b1ce69..4a2193f 100644
27443 s = NULL;
27444 }
27445 }
27446 -@@ -3872,7 +3937,7 @@ void *__kmalloc_node_track_caller(size_t size, gfp_t gfpflags,
27447 +@@ -3873,7 +3938,7 @@ void *__kmalloc_node_track_caller(size_t size, gfp_t gfpflags,
27448 }
27449 #endif
27450
27451 @@ -97265,7 +103198,7 @@ index 2b1ce69..4a2193f 100644
27452 else
27453 len += sprintf(buf + len, "<not-available>");
27454
27455 -@@ -4261,12 +4330,12 @@ static void resiliency_test(void)
27456 +@@ -4258,12 +4327,12 @@ static void resiliency_test(void)
27457 validate_slab_cache(kmalloc_caches[9]);
27458 }
27459 #else
27460 @@ -97280,7 +103213,7 @@ index 2b1ce69..4a2193f 100644
27461 enum slab_stat_type {
27462 SL_ALL, /* All slabs */
27463 SL_PARTIAL, /* Only partially allocated slabs */
27464 -@@ -4506,13 +4575,17 @@ static ssize_t ctor_show(struct kmem_cache *s, char *buf)
27465 +@@ -4503,13 +4572,17 @@ static ssize_t ctor_show(struct kmem_cache *s, char *buf)
27466 {
27467 if (!s->ctor)
27468 return 0;
27469 @@ -97299,7 +103232,7 @@ index 2b1ce69..4a2193f 100644
27470 }
27471 SLAB_ATTR_RO(aliases);
27472
27473 -@@ -4600,6 +4673,14 @@ static ssize_t cache_dma_show(struct kmem_cache *s, char *buf)
27474 +@@ -4597,6 +4670,14 @@ static ssize_t cache_dma_show(struct kmem_cache *s, char *buf)
27475 SLAB_ATTR_RO(cache_dma);
27476 #endif
27477
27478 @@ -97314,7 +103247,7 @@ index 2b1ce69..4a2193f 100644
27479 static ssize_t destroy_by_rcu_show(struct kmem_cache *s, char *buf)
27480 {
27481 return sprintf(buf, "%d\n", !!(s->flags & SLAB_DESTROY_BY_RCU));
27482 -@@ -4934,6 +5015,9 @@ static struct attribute *slab_attrs[] = {
27483 +@@ -4931,6 +5012,9 @@ static struct attribute *slab_attrs[] = {
27484 #ifdef CONFIG_ZONE_DMA
27485 &cache_dma_attr.attr,
27486 #endif
27487 @@ -97324,7 +103257,7 @@ index 2b1ce69..4a2193f 100644
27488 #ifdef CONFIG_NUMA
27489 &remote_node_defrag_ratio_attr.attr,
27490 #endif
27491 -@@ -5184,6 +5268,7 @@ static char *create_unique_id(struct kmem_cache *s)
27492 +@@ -5181,6 +5265,7 @@ static char *create_unique_id(struct kmem_cache *s)
27493 return name;
27494 }
27495
27496 @@ -97332,7 +103265,7 @@ index 2b1ce69..4a2193f 100644
27497 static int sysfs_slab_add(struct kmem_cache *s)
27498 {
27499 int err;
27500 -@@ -5257,6 +5342,7 @@ void sysfs_slab_remove(struct kmem_cache *s)
27501 +@@ -5254,6 +5339,7 @@ void sysfs_slab_remove(struct kmem_cache *s)
27502 kobject_del(&s->kobj);
27503 kobject_put(&s->kobj);
27504 }
27505 @@ -97340,7 +103273,7 @@ index 2b1ce69..4a2193f 100644
27506
27507 /*
27508 * Need to buffer aliases during bootup until sysfs becomes
27509 -@@ -5270,6 +5356,7 @@ struct saved_alias {
27510 +@@ -5267,6 +5353,7 @@ struct saved_alias {
27511
27512 static struct saved_alias *alias_list;
27513
27514 @@ -97348,7 +103281,7 @@ index 2b1ce69..4a2193f 100644
27515 static int sysfs_slab_alias(struct kmem_cache *s, const char *name)
27516 {
27517 struct saved_alias *al;
27518 -@@ -5292,6 +5379,7 @@ static int sysfs_slab_alias(struct kmem_cache *s, const char *name)
27519 +@@ -5289,6 +5376,7 @@ static int sysfs_slab_alias(struct kmem_cache *s, const char *name)
27520 alias_list = al;
27521 return 0;
27522 }
27523 @@ -97392,7 +103325,7 @@ index d1b48b6..6e8590e 100644
27524 }
27525 }
27526 diff --git a/mm/swap.c b/mm/swap.c
27527 -index 9ce43ba..43bdc4c 100644
27528 +index 9e8e347..3c22e0f 100644
27529 --- a/mm/swap.c
27530 +++ b/mm/swap.c
27531 @@ -31,6 +31,7 @@
27532 @@ -97413,10 +103346,10 @@ index 9ce43ba..43bdc4c 100644
27533 }
27534
27535 diff --git a/mm/swapfile.c b/mm/swapfile.c
27536 -index 4a7f7e6..22cddf5 100644
27537 +index 4c524f7..f7601f17 100644
27538 --- a/mm/swapfile.c
27539 +++ b/mm/swapfile.c
27540 -@@ -66,7 +66,7 @@ static DEFINE_MUTEX(swapon_mutex);
27541 +@@ -84,7 +84,7 @@ static DEFINE_MUTEX(swapon_mutex);
27542
27543 static DECLARE_WAIT_QUEUE_HEAD(proc_poll_wait);
27544 /* Activity counter to indicate that a swapon or swapoff has occurred */
27545 @@ -97425,7 +103358,7 @@ index 4a7f7e6..22cddf5 100644
27546
27547 static inline unsigned char swap_count(unsigned char ent)
27548 {
27549 -@@ -1959,7 +1959,7 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile)
27550 +@@ -1945,7 +1945,7 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile)
27551 spin_unlock(&swap_lock);
27552
27553 err = 0;
27554 @@ -97434,7 +103367,7 @@ index 4a7f7e6..22cddf5 100644
27555 wake_up_interruptible(&proc_poll_wait);
27556
27557 out_dput:
27558 -@@ -1976,8 +1976,8 @@ static unsigned swaps_poll(struct file *file, poll_table *wait)
27559 +@@ -1962,8 +1962,8 @@ static unsigned swaps_poll(struct file *file, poll_table *wait)
27560
27561 poll_wait(file, &proc_poll_wait, wait);
27562
27563 @@ -97445,7 +103378,7 @@ index 4a7f7e6..22cddf5 100644
27564 return POLLIN | POLLRDNORM | POLLERR | POLLPRI;
27565 }
27566
27567 -@@ -2075,7 +2075,7 @@ static int swaps_open(struct inode *inode, struct file *file)
27568 +@@ -2061,7 +2061,7 @@ static int swaps_open(struct inode *inode, struct file *file)
27569 return ret;
27570
27571 seq = file->private_data;
27572 @@ -97454,7 +103387,7 @@ index 4a7f7e6..22cddf5 100644
27573 return 0;
27574 }
27575
27576 -@@ -2534,7 +2534,7 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
27577 +@@ -2521,7 +2521,7 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
27578 (frontswap_map) ? "FS" : "");
27579
27580 mutex_unlock(&swapon_mutex);
27581 @@ -97491,7 +103424,7 @@ index d5ea733..e8953f9 100644
27582
27583 if (len > buflen)
27584 diff --git a/mm/vmalloc.c b/mm/vmalloc.c
27585 -index bf233b2..1dfa1bc 100644
27586 +index f64632b..e8c52e7 100644
27587 --- a/mm/vmalloc.c
27588 +++ b/mm/vmalloc.c
27589 @@ -40,6 +40,21 @@ struct vfree_deferred {
27590 @@ -97541,7 +103474,7 @@ index bf233b2..1dfa1bc 100644
27591 + void *lowmem_stack = ACCESS_ONCE(x->lowmem_stack);
27592 + llnode = llist_next(llnode);
27593 + __vunmap(stack, 0);
27594 -+ free_memcg_kmem_pages((unsigned long)lowmem_stack, THREAD_SIZE_ORDER);
27595 ++ free_kmem_pages((unsigned long)lowmem_stack, THREAD_SIZE_ORDER);
27596 + }
27597 +}
27598 +#endif
27599 @@ -97673,7 +103606,7 @@ index bf233b2..1dfa1bc 100644
27600 }
27601
27602 /* Import existing vmlist entries. */
27603 -@@ -1317,6 +1396,16 @@ static struct vm_struct *__get_vm_area_node(unsigned long size,
27604 +@@ -1318,6 +1397,16 @@ static struct vm_struct *__get_vm_area_node(unsigned long size,
27605 struct vm_struct *area;
27606
27607 BUG_ON(in_interrupt());
27608 @@ -97690,7 +103623,7 @@ index bf233b2..1dfa1bc 100644
27609 if (flags & VM_IOREMAP)
27610 align = 1ul << clamp(fls(size), PAGE_SHIFT, IOREMAP_MAX_ORDER);
27611
27612 -@@ -1522,6 +1611,23 @@ void vunmap(const void *addr)
27613 +@@ -1523,6 +1612,23 @@ void vunmap(const void *addr)
27614 }
27615 EXPORT_SYMBOL(vunmap);
27616
27617 @@ -97706,7 +103639,7 @@ index bf233b2..1dfa1bc 100644
27618 + schedule_work(&p->wq);
27619 + } else {
27620 + __vunmap(task->stack, 0);
27621 -+ free_memcg_kmem_pages((unsigned long)task->lowmem_stack, THREAD_SIZE_ORDER);
27622 ++ free_kmem_pages((unsigned long)task->lowmem_stack, THREAD_SIZE_ORDER);
27623 + }
27624 +}
27625 +#endif
27626 @@ -97714,7 +103647,7 @@ index bf233b2..1dfa1bc 100644
27627 /**
27628 * vmap - map an array of pages into virtually contiguous space
27629 * @pages: array of page pointers
27630 -@@ -1542,6 +1648,11 @@ void *vmap(struct page **pages, unsigned int count,
27631 +@@ -1543,6 +1649,11 @@ void *vmap(struct page **pages, unsigned int count,
27632 if (count > totalram_pages)
27633 return NULL;
27634
27635 @@ -97726,7 +103659,7 @@ index bf233b2..1dfa1bc 100644
27636 area = get_vm_area_caller((count << PAGE_SHIFT), flags,
27637 __builtin_return_address(0));
27638 if (!area)
27639 -@@ -1642,6 +1753,13 @@ void *__vmalloc_node_range(unsigned long size, unsigned long align,
27640 +@@ -1643,6 +1754,13 @@ void *__vmalloc_node_range(unsigned long size, unsigned long align,
27641 if (!size || (size >> PAGE_SHIFT) > totalram_pages)
27642 goto fail;
27643
27644 @@ -97740,7 +103673,7 @@ index bf233b2..1dfa1bc 100644
27645 area = __get_vm_area_node(size, align, VM_ALLOC | VM_UNINITIALIZED,
27646 start, end, node, gfp_mask, caller);
27647 if (!area)
27648 -@@ -1818,10 +1936,9 @@ EXPORT_SYMBOL(vzalloc_node);
27649 +@@ -1819,10 +1937,9 @@ EXPORT_SYMBOL(vzalloc_node);
27650 * For tight control over page level allocator and protection flags
27651 * use __vmalloc() instead.
27652 */
27653 @@ -97752,7 +103685,7 @@ index bf233b2..1dfa1bc 100644
27654 NUMA_NO_NODE, __builtin_return_address(0));
27655 }
27656
27657 -@@ -2128,6 +2245,8 @@ int remap_vmalloc_range_partial(struct vm_area_struct *vma, unsigned long uaddr,
27658 +@@ -2129,6 +2246,8 @@ int remap_vmalloc_range_partial(struct vm_area_struct *vma, unsigned long uaddr,
27659 {
27660 struct vm_struct *area;
27661
27662 @@ -97761,7 +103694,7 @@ index bf233b2..1dfa1bc 100644
27663 size = PAGE_ALIGN(size);
27664
27665 if (!PAGE_ALIGNED(uaddr) || !PAGE_ALIGNED(kaddr))
27666 -@@ -2610,7 +2729,11 @@ static int s_show(struct seq_file *m, void *p)
27667 +@@ -2611,7 +2730,11 @@ static int s_show(struct seq_file *m, void *p)
27668 v->addr, v->addr + v->size, v->size);
27669
27670 if (v->caller)
27671 @@ -97774,7 +103707,7 @@ index bf233b2..1dfa1bc 100644
27672 if (v->nr_pages)
27673 seq_printf(m, " pages=%d", v->nr_pages);
27674 diff --git a/mm/vmstat.c b/mm/vmstat.c
27675 -index 302dd07..3841f1c 100644
27676 +index b37bd49..4d7b3da 100644
27677 --- a/mm/vmstat.c
27678 +++ b/mm/vmstat.c
27679 @@ -20,6 +20,7 @@
27680 @@ -97794,7 +103727,7 @@ index 302dd07..3841f1c 100644
27681 EXPORT_SYMBOL(vm_stat);
27682
27683 #ifdef CONFIG_SMP
27684 -@@ -423,7 +424,7 @@ static inline void fold_diff(int *diff)
27685 +@@ -425,7 +426,7 @@ static inline void fold_diff(int *diff)
27686
27687 for (i = 0; i < NR_VM_ZONE_STAT_ITEMS; i++)
27688 if (diff[i])
27689 @@ -97803,7 +103736,7 @@ index 302dd07..3841f1c 100644
27690 }
27691
27692 /*
27693 -@@ -455,7 +456,7 @@ static void refresh_cpu_vm_stats(void)
27694 +@@ -457,7 +458,7 @@ static void refresh_cpu_vm_stats(void)
27695 v = this_cpu_xchg(p->vm_stat_diff[i], 0);
27696 if (v) {
27697
27698 @@ -97812,7 +103745,7 @@ index 302dd07..3841f1c 100644
27699 global_diff[i] += v;
27700 #ifdef CONFIG_NUMA
27701 /* 3 seconds idle till flush */
27702 -@@ -517,7 +518,7 @@ void cpu_vm_stats_fold(int cpu)
27703 +@@ -519,7 +520,7 @@ void cpu_vm_stats_fold(int cpu)
27704
27705 v = p->vm_stat_diff[i];
27706 p->vm_stat_diff[i] = 0;
27707 @@ -97821,7 +103754,7 @@ index 302dd07..3841f1c 100644
27708 global_diff[i] += v;
27709 }
27710 }
27711 -@@ -537,8 +538,8 @@ void drain_zonestat(struct zone *zone, struct per_cpu_pageset *pset)
27712 +@@ -539,8 +540,8 @@ void drain_zonestat(struct zone *zone, struct per_cpu_pageset *pset)
27713 if (pset->vm_stat_diff[i]) {
27714 int v = pset->vm_stat_diff[i];
27715 pset->vm_stat_diff[i] = 0;
27716 @@ -97832,7 +103765,7 @@ index 302dd07..3841f1c 100644
27717 }
27718 }
27719 #endif
27720 -@@ -1156,10 +1157,22 @@ static void *vmstat_start(struct seq_file *m, loff_t *pos)
27721 +@@ -1162,10 +1163,22 @@ static void *vmstat_start(struct seq_file *m, loff_t *pos)
27722 stat_items_size += sizeof(struct vm_event_state);
27723 #endif
27724
27725 @@ -97856,7 +103789,7 @@ index 302dd07..3841f1c 100644
27726 for (i = 0; i < NR_VM_ZONE_STAT_ITEMS; i++)
27727 v[i] = global_page_state(i);
27728 v += NR_VM_ZONE_STAT_ITEMS;
27729 -@@ -1308,10 +1321,16 @@ static int __init setup_vmstat(void)
27730 +@@ -1314,10 +1327,16 @@ static int __init setup_vmstat(void)
27731 cpu_notifier_register_done();
27732 #endif
27733 #ifdef CONFIG_PROC_FS
27734 @@ -97966,6 +103899,32 @@ index 80d08f6..de63fd1 100644
27735 set_fs(oldfs);
27736
27737 if (ret <= 0 && ret != -ERESTARTSYS && ret != -EAGAIN)
27738 +diff --git a/net/Kconfig b/net/Kconfig
27739 +index d92afe4..ab63892 100644
27740 +--- a/net/Kconfig
27741 ++++ b/net/Kconfig
27742 +@@ -89,12 +89,8 @@ config NETWORK_SECMARK
27743 + to nfmark, but designated for security purposes.
27744 + If you are unsure how to answer this question, answer N.
27745 +
27746 +-config NET_PTP_CLASSIFY
27747 +- def_bool n
27748 +-
27749 + config NETWORK_PHY_TIMESTAMPING
27750 + bool "Timestamping in PHY devices"
27751 +- select NET_PTP_CLASSIFY
27752 + help
27753 + This allows timestamping of network packets by PHYs with
27754 + hardware timestamping capabilities. This option adds some
27755 +@@ -269,7 +265,7 @@ config BQL
27756 + config BPF_JIT
27757 + bool "enable BPF Just In Time compiler"
27758 + depends on HAVE_BPF_JIT
27759 +- depends on MODULES
27760 ++ depends on MODULES && X86
27761 + ---help---
27762 + Berkeley Packet Filter filtering capabilities are normally handled
27763 + by an interpreter. This option allows kernel to generate a native
27764 diff --git a/net/appletalk/atalk_proc.c b/net/appletalk/atalk_proc.c
27765 index af46bc4..f9adfcd 100644
27766 --- a/net/appletalk/atalk_proc.c
27767 @@ -98205,7 +104164,7 @@ index 022d18a..919daff 100644
27768 frag_header.no = 0;
27769 frag_header.total_size = htons(skb->len);
27770 diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c
27771 -index 744a59b..8fd037c 100644
27772 +index cbd677f..b783347 100644
27773 --- a/net/batman-adv/soft-interface.c
27774 +++ b/net/batman-adv/soft-interface.c
27775 @@ -296,7 +296,7 @@ send:
27776 @@ -98217,7 +104176,7 @@ index 744a59b..8fd037c 100644
27777 bcast_packet->seqno = htonl(seqno);
27778
27779 batadv_add_bcast_packet_to_list(bat_priv, skb, brd_delay);
27780 -@@ -729,7 +729,7 @@ static int batadv_softif_init_late(struct net_device *dev)
27781 +@@ -761,7 +761,7 @@ static int batadv_softif_init_late(struct net_device *dev)
27782 atomic_set(&bat_priv->batman_queue_left, BATADV_BATMAN_QUEUE_LEN);
27783
27784 atomic_set(&bat_priv->mesh_state, BATADV_MESH_INACTIVE);
27785 @@ -98226,7 +104185,7 @@ index 744a59b..8fd037c 100644
27786 atomic_set(&bat_priv->tt.vn, 0);
27787 atomic_set(&bat_priv->tt.local_changes, 0);
27788 atomic_set(&bat_priv->tt.ogm_append_cnt, 0);
27789 -@@ -743,7 +743,7 @@ static int batadv_softif_init_late(struct net_device *dev)
27790 +@@ -775,7 +775,7 @@ static int batadv_softif_init_late(struct net_device *dev)
27791
27792 /* randomize initial seqno to avoid collision */
27793 get_random_bytes(&random_seqno, sizeof(random_seqno));
27794 @@ -98236,7 +104195,7 @@ index 744a59b..8fd037c 100644
27795 bat_priv->primary_if = NULL;
27796 bat_priv->num_ifaces = 0;
27797 diff --git a/net/batman-adv/types.h b/net/batman-adv/types.h
27798 -index 34891a5..3cfece0 100644
27799 +index 8854c05..ee5d5497 100644
27800 --- a/net/batman-adv/types.h
27801 +++ b/net/batman-adv/types.h
27802 @@ -67,7 +67,7 @@ enum batadv_dhcp_recipient {
27803 @@ -98248,7 +104207,7 @@ index 34891a5..3cfece0 100644
27804 };
27805
27806 /**
27807 -@@ -766,7 +766,7 @@ struct batadv_priv {
27808 +@@ -768,7 +768,7 @@ struct batadv_priv {
27809 atomic_t bonding;
27810 atomic_t fragmentation;
27811 atomic_t packet_size_max;
27812 @@ -98257,7 +104216,7 @@ index 34891a5..3cfece0 100644
27813 #ifdef CONFIG_BATMAN_ADV_BLA
27814 atomic_t bridge_loop_avoidance;
27815 #endif
27816 -@@ -785,7 +785,7 @@ struct batadv_priv {
27817 +@@ -787,7 +787,7 @@ struct batadv_priv {
27818 #endif
27819 uint32_t isolation_mark;
27820 uint32_t isolation_mark_mask;
27821 @@ -98267,10 +104226,10 @@ index 34891a5..3cfece0 100644
27822 atomic_t batman_queue_left;
27823 char num_ifaces;
27824 diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c
27825 -index b9a418e..2af862a 100644
27826 +index 80d25c1..aa99a98 100644
27827 --- a/net/bluetooth/hci_sock.c
27828 +++ b/net/bluetooth/hci_sock.c
27829 -@@ -1053,7 +1053,7 @@ static int hci_sock_setsockopt(struct socket *sock, int level, int optname,
27830 +@@ -1044,7 +1044,7 @@ static int hci_sock_setsockopt(struct socket *sock, int level, int optname,
27831 uf.event_mask[1] = *((u32 *) f->event_mask + 1);
27832 }
27833
27834 @@ -98280,10 +104239,10 @@ index b9a418e..2af862a 100644
27835 err = -EFAULT;
27836 break;
27837 diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
27838 -index 1c97b7a..9171d69 100644
27839 +index 323f23c..5e27529 100644
27840 --- a/net/bluetooth/l2cap_core.c
27841 +++ b/net/bluetooth/l2cap_core.c
27842 -@@ -3542,8 +3542,10 @@ static int l2cap_parse_conf_rsp(struct l2cap_chan *chan, void *rsp, int len,
27843 +@@ -3548,8 +3548,10 @@ static int l2cap_parse_conf_rsp(struct l2cap_chan *chan, void *rsp, int len,
27844 break;
27845
27846 case L2CAP_CONF_RFC:
27847 @@ -98370,7 +104329,7 @@ index c603a5e..7f08991 100644
27848 err = -EFAULT;
27849 break;
27850 diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c
27851 -index 403ec09..a21a003 100644
27852 +index 8e385a0..a5bdd8e 100644
27853 --- a/net/bluetooth/rfcomm/tty.c
27854 +++ b/net/bluetooth/rfcomm/tty.c
27855 @@ -752,7 +752,7 @@ static int rfcomm_tty_open(struct tty_struct *tty, struct file *filp)
27856 @@ -98466,10 +104425,10 @@ index 0f45522..dab651f 100644
27857 list_del(&p->list);
27858 goto out;
27859 diff --git a/net/can/af_can.c b/net/can/af_can.c
27860 -index a27f8aa..67174a3 100644
27861 +index ce82337..5d17b4d 100644
27862 --- a/net/can/af_can.c
27863 +++ b/net/can/af_can.c
27864 -@@ -863,7 +863,7 @@ static const struct net_proto_family can_family_ops = {
27865 +@@ -884,7 +884,7 @@ static const struct net_proto_family can_family_ops = {
27866 };
27867
27868 /* notifier block for netdevice event */
27869 @@ -98523,10 +104482,10 @@ index 050a211..bb9fe33 100644
27870
27871 if (__rtnl_register(PF_CAN, RTM_GETROUTE, NULL, cgw_dump_jobs, NULL)) {
27872 diff --git a/net/can/proc.c b/net/can/proc.c
27873 -index b543470..d2ddae2 100644
27874 +index 1a19b98..df2b4ec 100644
27875 --- a/net/can/proc.c
27876 +++ b/net/can/proc.c
27877 -@@ -468,7 +468,7 @@ static void can_remove_proc_readentry(const char *name)
27878 +@@ -514,7 +514,7 @@ static void can_remove_proc_readentry(const char *name)
27879 void can_init_proc(void)
27880 {
27881 /* create /proc/net/can directory */
27882 @@ -98679,176 +104638,2265 @@ index bc8aeef..f9c070c 100644
27883 struct group_filter __user *kgf;
27884 u32 interface, fmode, numsrc;
27885
27886 -@@ -651,7 +651,7 @@ int compat_mc_getsockopt(struct sock *sock, int level, int optname,
27887 - char __user *optval, int __user *optlen,
27888 - int (*getsockopt)(struct sock *, int, int, char __user *, int __user *))
27889 +@@ -651,7 +651,7 @@ int compat_mc_getsockopt(struct sock *sock, int level, int optname,
27890 + char __user *optval, int __user *optlen,
27891 + int (*getsockopt)(struct sock *, int, int, char __user *, int __user *))
27892 + {
27893 +- struct compat_group_filter __user *gf32 = (void *)optval;
27894 ++ struct compat_group_filter __user *gf32 = (void __user *)optval;
27895 + struct group_filter __user *kgf;
27896 + int __user *koptlen;
27897 + u32 interface, fmode, numsrc;
27898 +@@ -804,7 +804,7 @@ COMPAT_SYSCALL_DEFINE2(socketcall, int, call, u32 __user *, args)
27899 +
27900 + if (call < SYS_SOCKET || call > SYS_SENDMMSG)
27901 + return -EINVAL;
27902 +- if (copy_from_user(a, args, nas[call]))
27903 ++ if (nas[call] > sizeof a || copy_from_user(a, args, nas[call]))
27904 + return -EFAULT;
27905 + a0 = a[0];
27906 + a1 = a[1];
27907 +diff --git a/net/core/Makefile b/net/core/Makefile
27908 +index 71093d9..a8a035b 100644
27909 +--- a/net/core/Makefile
27910 ++++ b/net/core/Makefile
27911 +@@ -21,6 +21,5 @@ obj-$(CONFIG_FIB_RULES) += fib_rules.o
27912 + obj-$(CONFIG_TRACEPOINTS) += net-traces.o
27913 + obj-$(CONFIG_NET_DROP_MONITOR) += drop_monitor.o
27914 + obj-$(CONFIG_NETWORK_PHY_TIMESTAMPING) += timestamping.o
27915 +-obj-$(CONFIG_NET_PTP_CLASSIFY) += ptp_classifier.o
27916 + obj-$(CONFIG_CGROUP_NET_PRIO) += netprio_cgroup.o
27917 + obj-$(CONFIG_CGROUP_NET_CLASSID) += netclassid_cgroup.o
27918 +diff --git a/net/core/datagram.c b/net/core/datagram.c
27919 +index 488dd1a..7179f0f 100644
27920 +--- a/net/core/datagram.c
27921 ++++ b/net/core/datagram.c
27922 +@@ -301,7 +301,7 @@ int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags)
27923 + }
27924 +
27925 + kfree_skb(skb);
27926 +- atomic_inc(&sk->sk_drops);
27927 ++ atomic_inc_unchecked(&sk->sk_drops);
27928 + sk_mem_reclaim_partial(sk);
27929 +
27930 + return err;
27931 +diff --git a/net/core/dev.c b/net/core/dev.c
27932 +index 367a586..ef2fe17 100644
27933 +--- a/net/core/dev.c
27934 ++++ b/net/core/dev.c
27935 +@@ -1672,14 +1672,14 @@ int __dev_forward_skb(struct net_device *dev, struct sk_buff *skb)
27936 + {
27937 + if (skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY) {
27938 + if (skb_copy_ubufs(skb, GFP_ATOMIC)) {
27939 +- atomic_long_inc(&dev->rx_dropped);
27940 ++ atomic_long_inc_unchecked(&dev->rx_dropped);
27941 + kfree_skb(skb);
27942 + return NET_RX_DROP;
27943 + }
27944 + }
27945 +
27946 + if (unlikely(!is_skb_forwardable(dev, skb))) {
27947 +- atomic_long_inc(&dev->rx_dropped);
27948 ++ atomic_long_inc_unchecked(&dev->rx_dropped);
27949 + kfree_skb(skb);
27950 + return NET_RX_DROP;
27951 + }
27952 +@@ -2476,7 +2476,7 @@ static int illegal_highdma(struct net_device *dev, struct sk_buff *skb)
27953 +
27954 + struct dev_gso_cb {
27955 + void (*destructor)(struct sk_buff *skb);
27956 +-};
27957 ++} __no_const;
27958 +
27959 + #define DEV_GSO_CB(skb) ((struct dev_gso_cb *)(skb)->cb)
27960 +
27961 +@@ -2932,7 +2932,7 @@ recursion_alert:
27962 + rc = -ENETDOWN;
27963 + rcu_read_unlock_bh();
27964 +
27965 +- atomic_long_inc(&dev->tx_dropped);
27966 ++ atomic_long_inc_unchecked(&dev->tx_dropped);
27967 + kfree_skb(skb);
27968 + return rc;
27969 + out:
27970 +@@ -3276,7 +3276,7 @@ enqueue:
27971 +
27972 + local_irq_restore(flags);
27973 +
27974 +- atomic_long_inc(&skb->dev->rx_dropped);
27975 ++ atomic_long_inc_unchecked(&skb->dev->rx_dropped);
27976 + kfree_skb(skb);
27977 + return NET_RX_DROP;
27978 + }
27979 +@@ -3353,7 +3353,7 @@ int netif_rx_ni(struct sk_buff *skb)
27980 + }
27981 + EXPORT_SYMBOL(netif_rx_ni);
27982 +
27983 +-static void net_tx_action(struct softirq_action *h)
27984 ++static __latent_entropy void net_tx_action(void)
27985 + {
27986 + struct softnet_data *sd = &__get_cpu_var(softnet_data);
27987 +
27988 +@@ -3686,7 +3686,7 @@ ncls:
27989 + ret = pt_prev->func(skb, skb->dev, pt_prev, orig_dev);
27990 + } else {
27991 + drop:
27992 +- atomic_long_inc(&skb->dev->rx_dropped);
27993 ++ atomic_long_inc_unchecked(&skb->dev->rx_dropped);
27994 + kfree_skb(skb);
27995 + /* Jamal, now you will not able to escape explaining
27996 + * me how you were going to use this. :-)
27997 +@@ -4406,7 +4406,7 @@ void netif_napi_del(struct napi_struct *napi)
27998 + }
27999 + EXPORT_SYMBOL(netif_napi_del);
28000 +
28001 +-static void net_rx_action(struct softirq_action *h)
28002 ++static __latent_entropy void net_rx_action(void)
28003 + {
28004 + struct softnet_data *sd = &__get_cpu_var(softnet_data);
28005 + unsigned long time_limit = jiffies + 2;
28006 +@@ -6403,8 +6403,8 @@ struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev,
28007 + } else {
28008 + netdev_stats_to_stats64(storage, &dev->stats);
28009 + }
28010 +- storage->rx_dropped += atomic_long_read(&dev->rx_dropped);
28011 +- storage->tx_dropped += atomic_long_read(&dev->tx_dropped);
28012 ++ storage->rx_dropped += atomic_long_read_unchecked(&dev->rx_dropped);
28013 ++ storage->tx_dropped += atomic_long_read_unchecked(&dev->tx_dropped);
28014 + return storage;
28015 + }
28016 + EXPORT_SYMBOL(dev_get_stats);
28017 +diff --git a/net/core/dev_ioctl.c b/net/core/dev_ioctl.c
28018 +index cf999e0..c59a975 100644
28019 +--- a/net/core/dev_ioctl.c
28020 ++++ b/net/core/dev_ioctl.c
28021 +@@ -366,9 +366,13 @@ void dev_load(struct net *net, const char *name)
28022 + if (no_module && capable(CAP_NET_ADMIN))
28023 + no_module = request_module("netdev-%s", name);
28024 + if (no_module && capable(CAP_SYS_MODULE)) {
28025 ++#ifdef CONFIG_GRKERNSEC_MODHARDEN
28026 ++ ___request_module(true, "grsec_modharden_netdev", "%s", name);
28027 ++#else
28028 + if (!request_module("%s", name))
28029 + pr_warn("Loading kernel module for a network device with CAP_SYS_MODULE (deprecated). Use CAP_NET_ADMIN and alias netdev-%s instead.\n",
28030 + name);
28031 ++#endif
28032 + }
28033 + }
28034 + EXPORT_SYMBOL(dev_load);
28035 +diff --git a/net/core/filter.c b/net/core/filter.c
28036 +index 1dbf646..0f95703 100644
28037 +--- a/net/core/filter.c
28038 ++++ b/net/core/filter.c
28039 +@@ -1,16 +1,11 @@
28040 + /*
28041 + * Linux Socket Filter - Kernel level socket filtering
28042 + *
28043 +- * Based on the design of the Berkeley Packet Filter. The new
28044 +- * internal format has been designed by PLUMgrid:
28045 ++ * Author:
28046 ++ * Jay Schulist <jschlst@×××××.org>
28047 + *
28048 +- * Copyright (c) 2011 - 2014 PLUMgrid, http://plumgrid.com
28049 +- *
28050 +- * Authors:
28051 +- *
28052 +- * Jay Schulist <jschlst@×××××.org>
28053 +- * Alexei Starovoitov <ast@××××××××.com>
28054 +- * Daniel Borkmann <dborkman@××××××.com>
28055 ++ * Based on the design of:
28056 ++ * - The Berkeley Packet Filter
28057 + *
28058 + * This program is free software; you can redistribute it and/or
28059 + * modify it under the terms of the GNU General Public License
28060 +@@ -45,27 +40,6 @@
28061 + #include <linux/seccomp.h>
28062 + #include <linux/if_vlan.h>
28063 +
28064 +-/* Registers */
28065 +-#define BPF_R0 regs[BPF_REG_0]
28066 +-#define BPF_R1 regs[BPF_REG_1]
28067 +-#define BPF_R2 regs[BPF_REG_2]
28068 +-#define BPF_R3 regs[BPF_REG_3]
28069 +-#define BPF_R4 regs[BPF_REG_4]
28070 +-#define BPF_R5 regs[BPF_REG_5]
28071 +-#define BPF_R6 regs[BPF_REG_6]
28072 +-#define BPF_R7 regs[BPF_REG_7]
28073 +-#define BPF_R8 regs[BPF_REG_8]
28074 +-#define BPF_R9 regs[BPF_REG_9]
28075 +-#define BPF_R10 regs[BPF_REG_10]
28076 +-
28077 +-/* Named registers */
28078 +-#define DST regs[insn->dst_reg]
28079 +-#define SRC regs[insn->src_reg]
28080 +-#define FP regs[BPF_REG_FP]
28081 +-#define ARG1 regs[BPF_REG_ARG1]
28082 +-#define CTX regs[BPF_REG_CTX]
28083 +-#define IMM insn->imm
28084 +-
28085 + /* No hurry in this branch
28086 + *
28087 + * Exported for the bpf jit load helper.
28088 +@@ -78,9 +52,9 @@ void *bpf_internal_load_pointer_neg_helper(const struct sk_buff *skb, int k, uns
28089 + ptr = skb_network_header(skb) + k - SKF_NET_OFF;
28090 + else if (k >= SKF_LL_OFF)
28091 + ptr = skb_mac_header(skb) + k - SKF_LL_OFF;
28092 ++
28093 + if (ptr >= skb->head && ptr + size <= skb_tail_pointer(skb))
28094 + return ptr;
28095 +-
28096 + return NULL;
28097 + }
28098 +
28099 +@@ -89,7 +63,6 @@ static inline void *load_pointer(const struct sk_buff *skb, int k,
28100 + {
28101 + if (k >= 0)
28102 + return skb_header_pointer(skb, k, size, buffer);
28103 +-
28104 + return bpf_internal_load_pointer_neg_helper(skb, k, size);
28105 + }
28106 +
28107 +@@ -135,960 +108,309 @@ int sk_filter(struct sock *sk, struct sk_buff *skb)
28108 + }
28109 + EXPORT_SYMBOL(sk_filter);
28110 +
28111 +-/* Base function for offset calculation. Needs to go into .text section,
28112 +- * therefore keeping it non-static as well; will also be used by JITs
28113 +- * anyway later on, so do not let the compiler omit it.
28114 +- */
28115 +-noinline u64 __bpf_call_base(u64 r1, u64 r2, u64 r3, u64 r4, u64 r5)
28116 +-{
28117 +- return 0;
28118 +-}
28119 +-
28120 + /**
28121 +- * __sk_run_filter - run a filter on a given context
28122 +- * @ctx: buffer to run the filter on
28123 +- * @insn: filter to apply
28124 ++ * sk_run_filter - run a filter on a socket
28125 ++ * @skb: buffer to run the filter on
28126 ++ * @fentry: filter to apply
28127 + *
28128 +- * Decode and apply filter instructions to the skb->data. Return length to
28129 +- * keep, 0 for none. @ctx is the data we are operating on, @insn is the
28130 +- * array of filter instructions.
28131 ++ * Decode and apply filter instructions to the skb->data.
28132 ++ * Return length to keep, 0 for none. @skb is the data we are
28133 ++ * filtering, @filter is the array of filter instructions.
28134 ++ * Because all jumps are guaranteed to be before last instruction,
28135 ++ * and last instruction guaranteed to be a RET, we dont need to check
28136 ++ * flen. (We used to pass to this function the length of filter)
28137 + */
28138 +-static unsigned int __sk_run_filter(void *ctx, const struct sock_filter_int *insn)
28139 ++unsigned int sk_run_filter(const struct sk_buff *skb,
28140 ++ const struct sock_filter *fentry)
28141 + {
28142 +- u64 stack[MAX_BPF_STACK / sizeof(u64)];
28143 +- u64 regs[MAX_BPF_REG], tmp;
28144 +- static const void *jumptable[256] = {
28145 +- [0 ... 255] = &&default_label,
28146 +- /* Now overwrite non-defaults ... */
28147 +- /* 32 bit ALU operations */
28148 +- [BPF_ALU | BPF_ADD | BPF_X] = &&ALU_ADD_X,
28149 +- [BPF_ALU | BPF_ADD | BPF_K] = &&ALU_ADD_K,
28150 +- [BPF_ALU | BPF_SUB | BPF_X] = &&ALU_SUB_X,
28151 +- [BPF_ALU | BPF_SUB | BPF_K] = &&ALU_SUB_K,
28152 +- [BPF_ALU | BPF_AND | BPF_X] = &&ALU_AND_X,
28153 +- [BPF_ALU | BPF_AND | BPF_K] = &&ALU_AND_K,
28154 +- [BPF_ALU | BPF_OR | BPF_X] = &&ALU_OR_X,
28155 +- [BPF_ALU | BPF_OR | BPF_K] = &&ALU_OR_K,
28156 +- [BPF_ALU | BPF_LSH | BPF_X] = &&ALU_LSH_X,
28157 +- [BPF_ALU | BPF_LSH | BPF_K] = &&ALU_LSH_K,
28158 +- [BPF_ALU | BPF_RSH | BPF_X] = &&ALU_RSH_X,
28159 +- [BPF_ALU | BPF_RSH | BPF_K] = &&ALU_RSH_K,
28160 +- [BPF_ALU | BPF_XOR | BPF_X] = &&ALU_XOR_X,
28161 +- [BPF_ALU | BPF_XOR | BPF_K] = &&ALU_XOR_K,
28162 +- [BPF_ALU | BPF_MUL | BPF_X] = &&ALU_MUL_X,
28163 +- [BPF_ALU | BPF_MUL | BPF_K] = &&ALU_MUL_K,
28164 +- [BPF_ALU | BPF_MOV | BPF_X] = &&ALU_MOV_X,
28165 +- [BPF_ALU | BPF_MOV | BPF_K] = &&ALU_MOV_K,
28166 +- [BPF_ALU | BPF_DIV | BPF_X] = &&ALU_DIV_X,
28167 +- [BPF_ALU | BPF_DIV | BPF_K] = &&ALU_DIV_K,
28168 +- [BPF_ALU | BPF_MOD | BPF_X] = &&ALU_MOD_X,
28169 +- [BPF_ALU | BPF_MOD | BPF_K] = &&ALU_MOD_K,
28170 +- [BPF_ALU | BPF_NEG] = &&ALU_NEG,
28171 +- [BPF_ALU | BPF_END | BPF_TO_BE] = &&ALU_END_TO_BE,
28172 +- [BPF_ALU | BPF_END | BPF_TO_LE] = &&ALU_END_TO_LE,
28173 +- /* 64 bit ALU operations */
28174 +- [BPF_ALU64 | BPF_ADD | BPF_X] = &&ALU64_ADD_X,
28175 +- [BPF_ALU64 | BPF_ADD | BPF_K] = &&ALU64_ADD_K,
28176 +- [BPF_ALU64 | BPF_SUB | BPF_X] = &&ALU64_SUB_X,
28177 +- [BPF_ALU64 | BPF_SUB | BPF_K] = &&ALU64_SUB_K,
28178 +- [BPF_ALU64 | BPF_AND | BPF_X] = &&ALU64_AND_X,
28179 +- [BPF_ALU64 | BPF_AND | BPF_K] = &&ALU64_AND_K,
28180 +- [BPF_ALU64 | BPF_OR | BPF_X] = &&ALU64_OR_X,
28181 +- [BPF_ALU64 | BPF_OR | BPF_K] = &&ALU64_OR_K,
28182 +- [BPF_ALU64 | BPF_LSH | BPF_X] = &&ALU64_LSH_X,
28183 +- [BPF_ALU64 | BPF_LSH | BPF_K] = &&ALU64_LSH_K,
28184 +- [BPF_ALU64 | BPF_RSH | BPF_X] = &&ALU64_RSH_X,
28185 +- [BPF_ALU64 | BPF_RSH | BPF_K] = &&ALU64_RSH_K,
28186 +- [BPF_ALU64 | BPF_XOR | BPF_X] = &&ALU64_XOR_X,
28187 +- [BPF_ALU64 | BPF_XOR | BPF_K] = &&ALU64_XOR_K,
28188 +- [BPF_ALU64 | BPF_MUL | BPF_X] = &&ALU64_MUL_X,
28189 +- [BPF_ALU64 | BPF_MUL | BPF_K] = &&ALU64_MUL_K,
28190 +- [BPF_ALU64 | BPF_MOV | BPF_X] = &&ALU64_MOV_X,
28191 +- [BPF_ALU64 | BPF_MOV | BPF_K] = &&ALU64_MOV_K,
28192 +- [BPF_ALU64 | BPF_ARSH | BPF_X] = &&ALU64_ARSH_X,
28193 +- [BPF_ALU64 | BPF_ARSH | BPF_K] = &&ALU64_ARSH_K,
28194 +- [BPF_ALU64 | BPF_DIV | BPF_X] = &&ALU64_DIV_X,
28195 +- [BPF_ALU64 | BPF_DIV | BPF_K] = &&ALU64_DIV_K,
28196 +- [BPF_ALU64 | BPF_MOD | BPF_X] = &&ALU64_MOD_X,
28197 +- [BPF_ALU64 | BPF_MOD | BPF_K] = &&ALU64_MOD_K,
28198 +- [BPF_ALU64 | BPF_NEG] = &&ALU64_NEG,
28199 +- /* Call instruction */
28200 +- [BPF_JMP | BPF_CALL] = &&JMP_CALL,
28201 +- /* Jumps */
28202 +- [BPF_JMP | BPF_JA] = &&JMP_JA,
28203 +- [BPF_JMP | BPF_JEQ | BPF_X] = &&JMP_JEQ_X,
28204 +- [BPF_JMP | BPF_JEQ | BPF_K] = &&JMP_JEQ_K,
28205 +- [BPF_JMP | BPF_JNE | BPF_X] = &&JMP_JNE_X,
28206 +- [BPF_JMP | BPF_JNE | BPF_K] = &&JMP_JNE_K,
28207 +- [BPF_JMP | BPF_JGT | BPF_X] = &&JMP_JGT_X,
28208 +- [BPF_JMP | BPF_JGT | BPF_K] = &&JMP_JGT_K,
28209 +- [BPF_JMP | BPF_JGE | BPF_X] = &&JMP_JGE_X,
28210 +- [BPF_JMP | BPF_JGE | BPF_K] = &&JMP_JGE_K,
28211 +- [BPF_JMP | BPF_JSGT | BPF_X] = &&JMP_JSGT_X,
28212 +- [BPF_JMP | BPF_JSGT | BPF_K] = &&JMP_JSGT_K,
28213 +- [BPF_JMP | BPF_JSGE | BPF_X] = &&JMP_JSGE_X,
28214 +- [BPF_JMP | BPF_JSGE | BPF_K] = &&JMP_JSGE_K,
28215 +- [BPF_JMP | BPF_JSET | BPF_X] = &&JMP_JSET_X,
28216 +- [BPF_JMP | BPF_JSET | BPF_K] = &&JMP_JSET_K,
28217 +- /* Program return */
28218 +- [BPF_JMP | BPF_EXIT] = &&JMP_EXIT,
28219 +- /* Store instructions */
28220 +- [BPF_STX | BPF_MEM | BPF_B] = &&STX_MEM_B,
28221 +- [BPF_STX | BPF_MEM | BPF_H] = &&STX_MEM_H,
28222 +- [BPF_STX | BPF_MEM | BPF_W] = &&STX_MEM_W,
28223 +- [BPF_STX | BPF_MEM | BPF_DW] = &&STX_MEM_DW,
28224 +- [BPF_STX | BPF_XADD | BPF_W] = &&STX_XADD_W,
28225 +- [BPF_STX | BPF_XADD | BPF_DW] = &&STX_XADD_DW,
28226 +- [BPF_ST | BPF_MEM | BPF_B] = &&ST_MEM_B,
28227 +- [BPF_ST | BPF_MEM | BPF_H] = &&ST_MEM_H,
28228 +- [BPF_ST | BPF_MEM | BPF_W] = &&ST_MEM_W,
28229 +- [BPF_ST | BPF_MEM | BPF_DW] = &&ST_MEM_DW,
28230 +- /* Load instructions */
28231 +- [BPF_LDX | BPF_MEM | BPF_B] = &&LDX_MEM_B,
28232 +- [BPF_LDX | BPF_MEM | BPF_H] = &&LDX_MEM_H,
28233 +- [BPF_LDX | BPF_MEM | BPF_W] = &&LDX_MEM_W,
28234 +- [BPF_LDX | BPF_MEM | BPF_DW] = &&LDX_MEM_DW,
28235 +- [BPF_LD | BPF_ABS | BPF_W] = &&LD_ABS_W,
28236 +- [BPF_LD | BPF_ABS | BPF_H] = &&LD_ABS_H,
28237 +- [BPF_LD | BPF_ABS | BPF_B] = &&LD_ABS_B,
28238 +- [BPF_LD | BPF_IND | BPF_W] = &&LD_IND_W,
28239 +- [BPF_LD | BPF_IND | BPF_H] = &&LD_IND_H,
28240 +- [BPF_LD | BPF_IND | BPF_B] = &&LD_IND_B,
28241 +- };
28242 + void *ptr;
28243 +- int off;
28244 +-
28245 +-#define CONT ({ insn++; goto select_insn; })
28246 +-#define CONT_JMP ({ insn++; goto select_insn; })
28247 +-
28248 +- FP = (u64) (unsigned long) &stack[ARRAY_SIZE(stack)];
28249 +- ARG1 = (u64) (unsigned long) ctx;
28250 +-
28251 +- /* Registers used in classic BPF programs need to be reset first. */
28252 +- regs[BPF_REG_A] = 0;
28253 +- regs[BPF_REG_X] = 0;
28254 +-
28255 +-select_insn:
28256 +- goto *jumptable[insn->code];
28257 +-
28258 +- /* ALU */
28259 +-#define ALU(OPCODE, OP) \
28260 +- ALU64_##OPCODE##_X: \
28261 +- DST = DST OP SRC; \
28262 +- CONT; \
28263 +- ALU_##OPCODE##_X: \
28264 +- DST = (u32) DST OP (u32) SRC; \
28265 +- CONT; \
28266 +- ALU64_##OPCODE##_K: \
28267 +- DST = DST OP IMM; \
28268 +- CONT; \
28269 +- ALU_##OPCODE##_K: \
28270 +- DST = (u32) DST OP (u32) IMM; \
28271 +- CONT;
28272 +-
28273 +- ALU(ADD, +)
28274 +- ALU(SUB, -)
28275 +- ALU(AND, &)
28276 +- ALU(OR, |)
28277 +- ALU(LSH, <<)
28278 +- ALU(RSH, >>)
28279 +- ALU(XOR, ^)
28280 +- ALU(MUL, *)
28281 +-#undef ALU
28282 +- ALU_NEG:
28283 +- DST = (u32) -DST;
28284 +- CONT;
28285 +- ALU64_NEG:
28286 +- DST = -DST;
28287 +- CONT;
28288 +- ALU_MOV_X:
28289 +- DST = (u32) SRC;
28290 +- CONT;
28291 +- ALU_MOV_K:
28292 +- DST = (u32) IMM;
28293 +- CONT;
28294 +- ALU64_MOV_X:
28295 +- DST = SRC;
28296 +- CONT;
28297 +- ALU64_MOV_K:
28298 +- DST = IMM;
28299 +- CONT;
28300 +- ALU64_ARSH_X:
28301 +- (*(s64 *) &DST) >>= SRC;
28302 +- CONT;
28303 +- ALU64_ARSH_K:
28304 +- (*(s64 *) &DST) >>= IMM;
28305 +- CONT;
28306 +- ALU64_MOD_X:
28307 +- if (unlikely(SRC == 0))
28308 +- return 0;
28309 +- tmp = DST;
28310 +- DST = do_div(tmp, SRC);
28311 +- CONT;
28312 +- ALU_MOD_X:
28313 +- if (unlikely(SRC == 0))
28314 +- return 0;
28315 +- tmp = (u32) DST;
28316 +- DST = do_div(tmp, (u32) SRC);
28317 +- CONT;
28318 +- ALU64_MOD_K:
28319 +- tmp = DST;
28320 +- DST = do_div(tmp, IMM);
28321 +- CONT;
28322 +- ALU_MOD_K:
28323 +- tmp = (u32) DST;
28324 +- DST = do_div(tmp, (u32) IMM);
28325 +- CONT;
28326 +- ALU64_DIV_X:
28327 +- if (unlikely(SRC == 0))
28328 +- return 0;
28329 +- do_div(DST, SRC);
28330 +- CONT;
28331 +- ALU_DIV_X:
28332 +- if (unlikely(SRC == 0))
28333 +- return 0;
28334 +- tmp = (u32) DST;
28335 +- do_div(tmp, (u32) SRC);
28336 +- DST = (u32) tmp;
28337 +- CONT;
28338 +- ALU64_DIV_K:
28339 +- do_div(DST, IMM);
28340 +- CONT;
28341 +- ALU_DIV_K:
28342 +- tmp = (u32) DST;
28343 +- do_div(tmp, (u32) IMM);
28344 +- DST = (u32) tmp;
28345 +- CONT;
28346 +- ALU_END_TO_BE:
28347 +- switch (IMM) {
28348 +- case 16:
28349 +- DST = (__force u16) cpu_to_be16(DST);
28350 +- break;
28351 +- case 32:
28352 +- DST = (__force u32) cpu_to_be32(DST);
28353 +- break;
28354 +- case 64:
28355 +- DST = (__force u64) cpu_to_be64(DST);
28356 +- break;
28357 +- }
28358 +- CONT;
28359 +- ALU_END_TO_LE:
28360 +- switch (IMM) {
28361 +- case 16:
28362 +- DST = (__force u16) cpu_to_le16(DST);
28363 +- break;
28364 +- case 32:
28365 +- DST = (__force u32) cpu_to_le32(DST);
28366 +- break;
28367 +- case 64:
28368 +- DST = (__force u64) cpu_to_le64(DST);
28369 +- break;
28370 +- }
28371 +- CONT;
28372 +-
28373 +- /* CALL */
28374 +- JMP_CALL:
28375 +- /* Function call scratches BPF_R1-BPF_R5 registers,
28376 +- * preserves BPF_R6-BPF_R9, and stores return value
28377 +- * into BPF_R0.
28378 +- */
28379 +- BPF_R0 = (__bpf_call_base + insn->imm)(BPF_R1, BPF_R2, BPF_R3,
28380 +- BPF_R4, BPF_R5);
28381 +- CONT;
28382 +-
28383 +- /* JMP */
28384 +- JMP_JA:
28385 +- insn += insn->off;
28386 +- CONT;
28387 +- JMP_JEQ_X:
28388 +- if (DST == SRC) {
28389 +- insn += insn->off;
28390 +- CONT_JMP;
28391 +- }
28392 +- CONT;
28393 +- JMP_JEQ_K:
28394 +- if (DST == IMM) {
28395 +- insn += insn->off;
28396 +- CONT_JMP;
28397 +- }
28398 +- CONT;
28399 +- JMP_JNE_X:
28400 +- if (DST != SRC) {
28401 +- insn += insn->off;
28402 +- CONT_JMP;
28403 +- }
28404 +- CONT;
28405 +- JMP_JNE_K:
28406 +- if (DST != IMM) {
28407 +- insn += insn->off;
28408 +- CONT_JMP;
28409 +- }
28410 +- CONT;
28411 +- JMP_JGT_X:
28412 +- if (DST > SRC) {
28413 +- insn += insn->off;
28414 +- CONT_JMP;
28415 +- }
28416 +- CONT;
28417 +- JMP_JGT_K:
28418 +- if (DST > IMM) {
28419 +- insn += insn->off;
28420 +- CONT_JMP;
28421 +- }
28422 +- CONT;
28423 +- JMP_JGE_X:
28424 +- if (DST >= SRC) {
28425 +- insn += insn->off;
28426 +- CONT_JMP;
28427 +- }
28428 +- CONT;
28429 +- JMP_JGE_K:
28430 +- if (DST >= IMM) {
28431 +- insn += insn->off;
28432 +- CONT_JMP;
28433 +- }
28434 +- CONT;
28435 +- JMP_JSGT_X:
28436 +- if (((s64) DST) > ((s64) SRC)) {
28437 +- insn += insn->off;
28438 +- CONT_JMP;
28439 +- }
28440 +- CONT;
28441 +- JMP_JSGT_K:
28442 +- if (((s64) DST) > ((s64) IMM)) {
28443 +- insn += insn->off;
28444 +- CONT_JMP;
28445 +- }
28446 +- CONT;
28447 +- JMP_JSGE_X:
28448 +- if (((s64) DST) >= ((s64) SRC)) {
28449 +- insn += insn->off;
28450 +- CONT_JMP;
28451 +- }
28452 +- CONT;
28453 +- JMP_JSGE_K:
28454 +- if (((s64) DST) >= ((s64) IMM)) {
28455 +- insn += insn->off;
28456 +- CONT_JMP;
28457 +- }
28458 +- CONT;
28459 +- JMP_JSET_X:
28460 +- if (DST & SRC) {
28461 +- insn += insn->off;
28462 +- CONT_JMP;
28463 +- }
28464 +- CONT;
28465 +- JMP_JSET_K:
28466 +- if (DST & IMM) {
28467 +- insn += insn->off;
28468 +- CONT_JMP;
28469 +- }
28470 +- CONT;
28471 +- JMP_EXIT:
28472 +- return BPF_R0;
28473 +-
28474 +- /* STX and ST and LDX*/
28475 +-#define LDST(SIZEOP, SIZE) \
28476 +- STX_MEM_##SIZEOP: \
28477 +- *(SIZE *)(unsigned long) (DST + insn->off) = SRC; \
28478 +- CONT; \
28479 +- ST_MEM_##SIZEOP: \
28480 +- *(SIZE *)(unsigned long) (DST + insn->off) = IMM; \
28481 +- CONT; \
28482 +- LDX_MEM_##SIZEOP: \
28483 +- DST = *(SIZE *)(unsigned long) (SRC + insn->off); \
28484 +- CONT;
28485 +-
28486 +- LDST(B, u8)
28487 +- LDST(H, u16)
28488 +- LDST(W, u32)
28489 +- LDST(DW, u64)
28490 +-#undef LDST
28491 +- STX_XADD_W: /* lock xadd *(u32 *)(dst_reg + off16) += src_reg */
28492 +- atomic_add((u32) SRC, (atomic_t *)(unsigned long)
28493 +- (DST + insn->off));
28494 +- CONT;
28495 +- STX_XADD_DW: /* lock xadd *(u64 *)(dst_reg + off16) += src_reg */
28496 +- atomic64_add((u64) SRC, (atomic64_t *)(unsigned long)
28497 +- (DST + insn->off));
28498 +- CONT;
28499 +- LD_ABS_W: /* BPF_R0 = ntohl(*(u32 *) (skb->data + imm32)) */
28500 +- off = IMM;
28501 +-load_word:
28502 +- /* BPF_LD + BPD_ABS and BPF_LD + BPF_IND insns are
28503 +- * only appearing in the programs where ctx ==
28504 +- * skb. All programs keep 'ctx' in regs[BPF_REG_CTX]
28505 +- * == BPF_R6, sk_convert_filter() saves it in BPF_R6,
28506 +- * internal BPF verifier will check that BPF_R6 ==
28507 +- * ctx.
28508 +- *
28509 +- * BPF_ABS and BPF_IND are wrappers of function calls,
28510 +- * so they scratch BPF_R1-BPF_R5 registers, preserve
28511 +- * BPF_R6-BPF_R9, and store return value into BPF_R0.
28512 +- *
28513 +- * Implicit input:
28514 +- * ctx == skb == BPF_R6 == CTX
28515 +- *
28516 +- * Explicit input:
28517 +- * SRC == any register
28518 +- * IMM == 32-bit immediate
28519 +- *
28520 +- * Output:
28521 +- * BPF_R0 - 8/16/32-bit skb data converted to cpu endianness
28522 +- */
28523 +-
28524 +- ptr = load_pointer((struct sk_buff *) (unsigned long) CTX, off, 4, &tmp);
28525 +- if (likely(ptr != NULL)) {
28526 +- BPF_R0 = get_unaligned_be32(ptr);
28527 +- CONT;
28528 +- }
28529 +-
28530 +- return 0;
28531 +- LD_ABS_H: /* BPF_R0 = ntohs(*(u16 *) (skb->data + imm32)) */
28532 +- off = IMM;
28533 +-load_half:
28534 +- ptr = load_pointer((struct sk_buff *) (unsigned long) CTX, off, 2, &tmp);
28535 +- if (likely(ptr != NULL)) {
28536 +- BPF_R0 = get_unaligned_be16(ptr);
28537 +- CONT;
28538 +- }
28539 +-
28540 +- return 0;
28541 +- LD_ABS_B: /* BPF_R0 = *(u8 *) (skb->data + imm32) */
28542 +- off = IMM;
28543 +-load_byte:
28544 +- ptr = load_pointer((struct sk_buff *) (unsigned long) CTX, off, 1, &tmp);
28545 +- if (likely(ptr != NULL)) {
28546 +- BPF_R0 = *(u8 *)ptr;
28547 +- CONT;
28548 +- }
28549 +-
28550 +- return 0;
28551 +- LD_IND_W: /* BPF_R0 = ntohl(*(u32 *) (skb->data + src_reg + imm32)) */
28552 +- off = IMM + SRC;
28553 +- goto load_word;
28554 +- LD_IND_H: /* BPF_R0 = ntohs(*(u16 *) (skb->data + src_reg + imm32)) */
28555 +- off = IMM + SRC;
28556 +- goto load_half;
28557 +- LD_IND_B: /* BPF_R0 = *(u8 *) (skb->data + src_reg + imm32) */
28558 +- off = IMM + SRC;
28559 +- goto load_byte;
28560 +-
28561 +- default_label:
28562 +- /* If we ever reach this, we have a bug somewhere. */
28563 +- WARN_RATELIMIT(1, "unknown opcode %02x\n", insn->code);
28564 +- return 0;
28565 +-}
28566 +-
28567 +-/* Helper to find the offset of pkt_type in sk_buff structure. We want
28568 +- * to make sure its still a 3bit field starting at a byte boundary;
28569 +- * taken from arch/x86/net/bpf_jit_comp.c.
28570 +- */
28571 +-#ifdef __BIG_ENDIAN_BITFIELD
28572 +-#define PKT_TYPE_MAX (7 << 5)
28573 ++ u32 A = 0; /* Accumulator */
28574 ++ u32 X = 0; /* Index Register */
28575 ++ u32 mem[BPF_MEMWORDS] = {}; /* Scratch Memory Store */
28576 ++ u32 tmp;
28577 ++ int k;
28578 ++
28579 ++ /*
28580 ++ * Process array of filter instructions.
28581 ++ */
28582 ++ for (;; fentry++) {
28583 ++#if defined(CONFIG_X86_32)
28584 ++#define K (fentry->k)
28585 + #else
28586 +-#define PKT_TYPE_MAX 7
28587 ++ const u32 K = fentry->k;
28588 + #endif
28589 +-static unsigned int pkt_type_offset(void)
28590 +-{
28591 +- struct sk_buff skb_probe = { .pkt_type = ~0, };
28592 +- u8 *ct = (u8 *) &skb_probe;
28593 +- unsigned int off;
28594 +
28595 +- for (off = 0; off < sizeof(struct sk_buff); off++) {
28596 +- if (ct[off] == PKT_TYPE_MAX)
28597 +- return off;
28598 +- }
28599 +-
28600 +- pr_err_once("Please fix %s, as pkt_type couldn't be found!\n", __func__);
28601 +- return -1;
28602 +-}
28603 +-
28604 +-static u64 __skb_get_pay_offset(u64 ctx, u64 a, u64 x, u64 r4, u64 r5)
28605 +-{
28606 +- return __skb_get_poff((struct sk_buff *)(unsigned long) ctx);
28607 +-}
28608 +-
28609 +-static u64 __skb_get_nlattr(u64 ctx, u64 a, u64 x, u64 r4, u64 r5)
28610 +-{
28611 +- struct sk_buff *skb = (struct sk_buff *)(unsigned long) ctx;
28612 +- struct nlattr *nla;
28613 +-
28614 +- if (skb_is_nonlinear(skb))
28615 +- return 0;
28616 +-
28617 +- if (skb->len < sizeof(struct nlattr))
28618 +- return 0;
28619 +-
28620 +- if (a > skb->len - sizeof(struct nlattr))
28621 +- return 0;
28622 +-
28623 +- nla = nla_find((struct nlattr *) &skb->data[a], skb->len - a, x);
28624 +- if (nla)
28625 +- return (void *) nla - (void *) skb->data;
28626 +-
28627 +- return 0;
28628 +-}
28629 +-
28630 +-static u64 __skb_get_nlattr_nest(u64 ctx, u64 a, u64 x, u64 r4, u64 r5)
28631 +-{
28632 +- struct sk_buff *skb = (struct sk_buff *)(unsigned long) ctx;
28633 +- struct nlattr *nla;
28634 +-
28635 +- if (skb_is_nonlinear(skb))
28636 +- return 0;
28637 +-
28638 +- if (skb->len < sizeof(struct nlattr))
28639 +- return 0;
28640 +-
28641 +- if (a > skb->len - sizeof(struct nlattr))
28642 +- return 0;
28643 +-
28644 +- nla = (struct nlattr *) &skb->data[a];
28645 +- if (nla->nla_len > skb->len - a)
28646 +- return 0;
28647 +-
28648 +- nla = nla_find_nested(nla, x);
28649 +- if (nla)
28650 +- return (void *) nla - (void *) skb->data;
28651 +-
28652 +- return 0;
28653 +-}
28654 +-
28655 +-static u64 __get_raw_cpu_id(u64 ctx, u64 a, u64 x, u64 r4, u64 r5)
28656 +-{
28657 +- return raw_smp_processor_id();
28658 +-}
28659 +-
28660 +-/* note that this only generates 32-bit random numbers */
28661 +-static u64 __get_random_u32(u64 ctx, u64 a, u64 x, u64 r4, u64 r5)
28662 +-{
28663 +- return prandom_u32();
28664 +-}
28665 +-
28666 +-static bool convert_bpf_extensions(struct sock_filter *fp,
28667 +- struct sock_filter_int **insnp)
28668 +-{
28669 +- struct sock_filter_int *insn = *insnp;
28670 +-
28671 +- switch (fp->k) {
28672 +- case SKF_AD_OFF + SKF_AD_PROTOCOL:
28673 +- BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, protocol) != 2);
28674 +-
28675 +- /* A = *(u16 *) (CTX + offsetof(protocol)) */
28676 +- *insn++ = BPF_LDX_MEM(BPF_H, BPF_REG_A, BPF_REG_CTX,
28677 +- offsetof(struct sk_buff, protocol));
28678 +- /* A = ntohs(A) [emitting a nop or swap16] */
28679 +- *insn = BPF_ENDIAN(BPF_FROM_BE, BPF_REG_A, 16);
28680 +- break;
28681 +-
28682 +- case SKF_AD_OFF + SKF_AD_PKTTYPE:
28683 +- *insn = BPF_LDX_MEM(BPF_B, BPF_REG_A, BPF_REG_CTX,
28684 +- pkt_type_offset());
28685 +- if (insn->off < 0)
28686 +- return false;
28687 +- insn++;
28688 +- *insn = BPF_ALU32_IMM(BPF_AND, BPF_REG_A, PKT_TYPE_MAX);
28689 +-#ifdef __BIG_ENDIAN_BITFIELD
28690 +- insn++;
28691 +- *insn = BPF_ALU32_IMM(BPF_RSH, BPF_REG_A, 5);
28692 +-#endif
28693 +- break;
28694 +-
28695 +- case SKF_AD_OFF + SKF_AD_IFINDEX:
28696 +- case SKF_AD_OFF + SKF_AD_HATYPE:
28697 +- BUILD_BUG_ON(FIELD_SIZEOF(struct net_device, ifindex) != 4);
28698 +- BUILD_BUG_ON(FIELD_SIZEOF(struct net_device, type) != 2);
28699 +- BUILD_BUG_ON(bytes_to_bpf_size(FIELD_SIZEOF(struct sk_buff, dev)) < 0);
28700 +-
28701 +- *insn++ = BPF_LDX_MEM(bytes_to_bpf_size(FIELD_SIZEOF(struct sk_buff, dev)),
28702 +- BPF_REG_TMP, BPF_REG_CTX,
28703 +- offsetof(struct sk_buff, dev));
28704 +- /* if (tmp != 0) goto pc + 1 */
28705 +- *insn++ = BPF_JMP_IMM(BPF_JNE, BPF_REG_TMP, 0, 1);
28706 +- *insn++ = BPF_EXIT_INSN();
28707 +- if (fp->k == SKF_AD_OFF + SKF_AD_IFINDEX)
28708 +- *insn = BPF_LDX_MEM(BPF_W, BPF_REG_A, BPF_REG_TMP,
28709 +- offsetof(struct net_device, ifindex));
28710 +- else
28711 +- *insn = BPF_LDX_MEM(BPF_H, BPF_REG_A, BPF_REG_TMP,
28712 +- offsetof(struct net_device, type));
28713 +- break;
28714 +-
28715 +- case SKF_AD_OFF + SKF_AD_MARK:
28716 +- BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, mark) != 4);
28717 +-
28718 +- *insn = BPF_LDX_MEM(BPF_W, BPF_REG_A, BPF_REG_CTX,
28719 +- offsetof(struct sk_buff, mark));
28720 +- break;
28721 +-
28722 +- case SKF_AD_OFF + SKF_AD_RXHASH:
28723 +- BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, hash) != 4);
28724 +-
28725 +- *insn = BPF_LDX_MEM(BPF_W, BPF_REG_A, BPF_REG_CTX,
28726 +- offsetof(struct sk_buff, hash));
28727 +- break;
28728 +-
28729 +- case SKF_AD_OFF + SKF_AD_QUEUE:
28730 +- BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, queue_mapping) != 2);
28731 +-
28732 +- *insn = BPF_LDX_MEM(BPF_H, BPF_REG_A, BPF_REG_CTX,
28733 +- offsetof(struct sk_buff, queue_mapping));
28734 +- break;
28735 +-
28736 +- case SKF_AD_OFF + SKF_AD_VLAN_TAG:
28737 +- case SKF_AD_OFF + SKF_AD_VLAN_TAG_PRESENT:
28738 +- BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, vlan_tci) != 2);
28739 +- BUILD_BUG_ON(VLAN_TAG_PRESENT != 0x1000);
28740 +-
28741 +- /* A = *(u16 *) (CTX + offsetof(vlan_tci)) */
28742 +- *insn++ = BPF_LDX_MEM(BPF_H, BPF_REG_A, BPF_REG_CTX,
28743 +- offsetof(struct sk_buff, vlan_tci));
28744 +- if (fp->k == SKF_AD_OFF + SKF_AD_VLAN_TAG) {
28745 +- *insn = BPF_ALU32_IMM(BPF_AND, BPF_REG_A,
28746 +- ~VLAN_TAG_PRESENT);
28747 +- } else {
28748 +- /* A >>= 12 */
28749 +- *insn++ = BPF_ALU32_IMM(BPF_RSH, BPF_REG_A, 12);
28750 +- /* A &= 1 */
28751 +- *insn = BPF_ALU32_IMM(BPF_AND, BPF_REG_A, 1);
28752 +- }
28753 +- break;
28754 +-
28755 +- case SKF_AD_OFF + SKF_AD_PAY_OFFSET:
28756 +- case SKF_AD_OFF + SKF_AD_NLATTR:
28757 +- case SKF_AD_OFF + SKF_AD_NLATTR_NEST:
28758 +- case SKF_AD_OFF + SKF_AD_CPU:
28759 +- case SKF_AD_OFF + SKF_AD_RANDOM:
28760 +- /* arg1 = CTX */
28761 +- *insn++ = BPF_MOV64_REG(BPF_REG_ARG1, BPF_REG_CTX);
28762 +- /* arg2 = A */
28763 +- *insn++ = BPF_MOV64_REG(BPF_REG_ARG2, BPF_REG_A);
28764 +- /* arg3 = X */
28765 +- *insn++ = BPF_MOV64_REG(BPF_REG_ARG3, BPF_REG_X);
28766 +- /* Emit call(arg1=CTX, arg2=A, arg3=X) */
28767 +- switch (fp->k) {
28768 +- case SKF_AD_OFF + SKF_AD_PAY_OFFSET:
28769 +- *insn = BPF_EMIT_CALL(__skb_get_pay_offset);
28770 +- break;
28771 +- case SKF_AD_OFF + SKF_AD_NLATTR:
28772 +- *insn = BPF_EMIT_CALL(__skb_get_nlattr);
28773 +- break;
28774 +- case SKF_AD_OFF + SKF_AD_NLATTR_NEST:
28775 +- *insn = BPF_EMIT_CALL(__skb_get_nlattr_nest);
28776 +- break;
28777 +- case SKF_AD_OFF + SKF_AD_CPU:
28778 +- *insn = BPF_EMIT_CALL(__get_raw_cpu_id);
28779 +- break;
28780 +- case SKF_AD_OFF + SKF_AD_RANDOM:
28781 +- *insn = BPF_EMIT_CALL(__get_random_u32);
28782 +- break;
28783 +- }
28784 +- break;
28785 +-
28786 +- case SKF_AD_OFF + SKF_AD_ALU_XOR_X:
28787 +- /* A ^= X */
28788 +- *insn = BPF_ALU32_REG(BPF_XOR, BPF_REG_A, BPF_REG_X);
28789 +- break;
28790 +-
28791 +- default:
28792 +- /* This is just a dummy call to avoid letting the compiler
28793 +- * evict __bpf_call_base() as an optimization. Placed here
28794 +- * where no-one bothers.
28795 +- */
28796 +- BUG_ON(__bpf_call_base(0, 0, 0, 0, 0) != 0);
28797 +- return false;
28798 +- }
28799 +-
28800 +- *insnp = insn;
28801 +- return true;
28802 +-}
28803 +-
28804 +-/**
28805 +- * sk_convert_filter - convert filter program
28806 +- * @prog: the user passed filter program
28807 +- * @len: the length of the user passed filter program
28808 +- * @new_prog: buffer where converted program will be stored
28809 +- * @new_len: pointer to store length of converted program
28810 +- *
28811 +- * Remap 'sock_filter' style BPF instruction set to 'sock_filter_ext' style.
28812 +- * Conversion workflow:
28813 +- *
28814 +- * 1) First pass for calculating the new program length:
28815 +- * sk_convert_filter(old_prog, old_len, NULL, &new_len)
28816 +- *
28817 +- * 2) 2nd pass to remap in two passes: 1st pass finds new
28818 +- * jump offsets, 2nd pass remapping:
28819 +- * new_prog = kmalloc(sizeof(struct sock_filter_int) * new_len);
28820 +- * sk_convert_filter(old_prog, old_len, new_prog, &new_len);
28821 +- *
28822 +- * User BPF's register A is mapped to our BPF register 6, user BPF
28823 +- * register X is mapped to BPF register 7; frame pointer is always
28824 +- * register 10; Context 'void *ctx' is stored in register 1, that is,
28825 +- * for socket filters: ctx == 'struct sk_buff *', for seccomp:
28826 +- * ctx == 'struct seccomp_data *'.
28827 +- */
28828 +-int sk_convert_filter(struct sock_filter *prog, int len,
28829 +- struct sock_filter_int *new_prog, int *new_len)
28830 +-{
28831 +- int new_flen = 0, pass = 0, target, i;
28832 +- struct sock_filter_int *new_insn;
28833 +- struct sock_filter *fp;
28834 +- int *addrs = NULL;
28835 +- u8 bpf_src;
28836 +-
28837 +- BUILD_BUG_ON(BPF_MEMWORDS * sizeof(u32) > MAX_BPF_STACK);
28838 +- BUILD_BUG_ON(BPF_REG_FP + 1 != MAX_BPF_REG);
28839 +-
28840 +- if (len <= 0 || len > BPF_MAXINSNS)
28841 +- return -EINVAL;
28842 +-
28843 +- if (new_prog) {
28844 +- addrs = kcalloc(len, sizeof(*addrs), GFP_KERNEL);
28845 +- if (!addrs)
28846 +- return -ENOMEM;
28847 +- }
28848 +-
28849 +-do_pass:
28850 +- new_insn = new_prog;
28851 +- fp = prog;
28852 +-
28853 +- if (new_insn)
28854 +- *new_insn = BPF_MOV64_REG(BPF_REG_CTX, BPF_REG_ARG1);
28855 +- new_insn++;
28856 +-
28857 +- for (i = 0; i < len; fp++, i++) {
28858 +- struct sock_filter_int tmp_insns[6] = { };
28859 +- struct sock_filter_int *insn = tmp_insns;
28860 +-
28861 +- if (addrs)
28862 +- addrs[i] = new_insn - new_prog;
28863 +-
28864 +- switch (fp->code) {
28865 +- /* All arithmetic insns and skb loads map as-is. */
28866 +- case BPF_ALU | BPF_ADD | BPF_X:
28867 +- case BPF_ALU | BPF_ADD | BPF_K:
28868 +- case BPF_ALU | BPF_SUB | BPF_X:
28869 +- case BPF_ALU | BPF_SUB | BPF_K:
28870 +- case BPF_ALU | BPF_AND | BPF_X:
28871 +- case BPF_ALU | BPF_AND | BPF_K:
28872 +- case BPF_ALU | BPF_OR | BPF_X:
28873 +- case BPF_ALU | BPF_OR | BPF_K:
28874 +- case BPF_ALU | BPF_LSH | BPF_X:
28875 +- case BPF_ALU | BPF_LSH | BPF_K:
28876 +- case BPF_ALU | BPF_RSH | BPF_X:
28877 +- case BPF_ALU | BPF_RSH | BPF_K:
28878 +- case BPF_ALU | BPF_XOR | BPF_X:
28879 +- case BPF_ALU | BPF_XOR | BPF_K:
28880 +- case BPF_ALU | BPF_MUL | BPF_X:
28881 +- case BPF_ALU | BPF_MUL | BPF_K:
28882 +- case BPF_ALU | BPF_DIV | BPF_X:
28883 +- case BPF_ALU | BPF_DIV | BPF_K:
28884 +- case BPF_ALU | BPF_MOD | BPF_X:
28885 +- case BPF_ALU | BPF_MOD | BPF_K:
28886 +- case BPF_ALU | BPF_NEG:
28887 +- case BPF_LD | BPF_ABS | BPF_W:
28888 +- case BPF_LD | BPF_ABS | BPF_H:
28889 +- case BPF_LD | BPF_ABS | BPF_B:
28890 +- case BPF_LD | BPF_IND | BPF_W:
28891 +- case BPF_LD | BPF_IND | BPF_H:
28892 +- case BPF_LD | BPF_IND | BPF_B:
28893 +- /* Check for overloaded BPF extension and
28894 +- * directly convert it if found, otherwise
28895 +- * just move on with mapping.
28896 +- */
28897 +- if (BPF_CLASS(fp->code) == BPF_LD &&
28898 +- BPF_MODE(fp->code) == BPF_ABS &&
28899 +- convert_bpf_extensions(fp, &insn))
28900 +- break;
28901 +-
28902 +- *insn = BPF_RAW_INSN(fp->code, BPF_REG_A, BPF_REG_X, 0, fp->k);
28903 +- break;
28904 +-
28905 +- /* Jump transformation cannot use BPF block macros
28906 +- * everywhere as offset calculation and target updates
28907 +- * require a bit more work than the rest, i.e. jump
28908 +- * opcodes map as-is, but offsets need adjustment.
28909 +- */
28910 +-
28911 +-#define BPF_EMIT_JMP \
28912 +- do { \
28913 +- if (target >= len || target < 0) \
28914 +- goto err; \
28915 +- insn->off = addrs ? addrs[target] - addrs[i] - 1 : 0; \
28916 +- /* Adjust pc relative offset for 2nd or 3rd insn. */ \
28917 +- insn->off -= insn - tmp_insns; \
28918 +- } while (0)
28919 +-
28920 +- case BPF_JMP | BPF_JA:
28921 +- target = i + fp->k + 1;
28922 +- insn->code = fp->code;
28923 +- BPF_EMIT_JMP;
28924 +- break;
28925 +-
28926 +- case BPF_JMP | BPF_JEQ | BPF_K:
28927 +- case BPF_JMP | BPF_JEQ | BPF_X:
28928 +- case BPF_JMP | BPF_JSET | BPF_K:
28929 +- case BPF_JMP | BPF_JSET | BPF_X:
28930 +- case BPF_JMP | BPF_JGT | BPF_K:
28931 +- case BPF_JMP | BPF_JGT | BPF_X:
28932 +- case BPF_JMP | BPF_JGE | BPF_K:
28933 +- case BPF_JMP | BPF_JGE | BPF_X:
28934 +- if (BPF_SRC(fp->code) == BPF_K && (int) fp->k < 0) {
28935 +- /* BPF immediates are signed, zero extend
28936 +- * immediate into tmp register and use it
28937 +- * in compare insn.
28938 +- */
28939 +- *insn++ = BPF_MOV32_IMM(BPF_REG_TMP, fp->k);
28940 +-
28941 +- insn->dst_reg = BPF_REG_A;
28942 +- insn->src_reg = BPF_REG_TMP;
28943 +- bpf_src = BPF_X;
28944 +- } else {
28945 +- insn->dst_reg = BPF_REG_A;
28946 +- insn->src_reg = BPF_REG_X;
28947 +- insn->imm = fp->k;
28948 +- bpf_src = BPF_SRC(fp->code);
28949 ++ switch (fentry->code) {
28950 ++ case BPF_S_ALU_ADD_X:
28951 ++ A += X;
28952 ++ continue;
28953 ++ case BPF_S_ALU_ADD_K:
28954 ++ A += K;
28955 ++ continue;
28956 ++ case BPF_S_ALU_SUB_X:
28957 ++ A -= X;
28958 ++ continue;
28959 ++ case BPF_S_ALU_SUB_K:
28960 ++ A -= K;
28961 ++ continue;
28962 ++ case BPF_S_ALU_MUL_X:
28963 ++ A *= X;
28964 ++ continue;
28965 ++ case BPF_S_ALU_MUL_K:
28966 ++ A *= K;
28967 ++ continue;
28968 ++ case BPF_S_ALU_DIV_X:
28969 ++ if (X == 0)
28970 ++ return 0;
28971 ++ A /= X;
28972 ++ continue;
28973 ++ case BPF_S_ALU_DIV_K:
28974 ++ A /= K;
28975 ++ continue;
28976 ++ case BPF_S_ALU_MOD_X:
28977 ++ if (X == 0)
28978 ++ return 0;
28979 ++ A %= X;
28980 ++ continue;
28981 ++ case BPF_S_ALU_MOD_K:
28982 ++ A %= K;
28983 ++ continue;
28984 ++ case BPF_S_ALU_AND_X:
28985 ++ A &= X;
28986 ++ continue;
28987 ++ case BPF_S_ALU_AND_K:
28988 ++ A &= K;
28989 ++ continue;
28990 ++ case BPF_S_ALU_OR_X:
28991 ++ A |= X;
28992 ++ continue;
28993 ++ case BPF_S_ALU_OR_K:
28994 ++ A |= K;
28995 ++ continue;
28996 ++ case BPF_S_ANC_ALU_XOR_X:
28997 ++ case BPF_S_ALU_XOR_X:
28998 ++ A ^= X;
28999 ++ continue;
29000 ++ case BPF_S_ALU_XOR_K:
29001 ++ A ^= K;
29002 ++ continue;
29003 ++ case BPF_S_ALU_LSH_X:
29004 ++ A <<= X;
29005 ++ continue;
29006 ++ case BPF_S_ALU_LSH_K:
29007 ++ A <<= K;
29008 ++ continue;
29009 ++ case BPF_S_ALU_RSH_X:
29010 ++ A >>= X;
29011 ++ continue;
29012 ++ case BPF_S_ALU_RSH_K:
29013 ++ A >>= K;
29014 ++ continue;
29015 ++ case BPF_S_ALU_NEG:
29016 ++ A = -A;
29017 ++ continue;
29018 ++ case BPF_S_JMP_JA:
29019 ++ fentry += K;
29020 ++ continue;
29021 ++ case BPF_S_JMP_JGT_K:
29022 ++ fentry += (A > K) ? fentry->jt : fentry->jf;
29023 ++ continue;
29024 ++ case BPF_S_JMP_JGE_K:
29025 ++ fentry += (A >= K) ? fentry->jt : fentry->jf;
29026 ++ continue;
29027 ++ case BPF_S_JMP_JEQ_K:
29028 ++ fentry += (A == K) ? fentry->jt : fentry->jf;
29029 ++ continue;
29030 ++ case BPF_S_JMP_JSET_K:
29031 ++ fentry += (A & K) ? fentry->jt : fentry->jf;
29032 ++ continue;
29033 ++ case BPF_S_JMP_JGT_X:
29034 ++ fentry += (A > X) ? fentry->jt : fentry->jf;
29035 ++ continue;
29036 ++ case BPF_S_JMP_JGE_X:
29037 ++ fentry += (A >= X) ? fentry->jt : fentry->jf;
29038 ++ continue;
29039 ++ case BPF_S_JMP_JEQ_X:
29040 ++ fentry += (A == X) ? fentry->jt : fentry->jf;
29041 ++ continue;
29042 ++ case BPF_S_JMP_JSET_X:
29043 ++ fentry += (A & X) ? fentry->jt : fentry->jf;
29044 ++ continue;
29045 ++ case BPF_S_LD_W_ABS:
29046 ++ k = K;
29047 ++load_w:
29048 ++ ptr = load_pointer(skb, k, 4, &tmp);
29049 ++ if (ptr != NULL) {
29050 ++ A = get_unaligned_be32(ptr);
29051 ++ continue;
29052 + }
29053 +-
29054 +- /* Common case where 'jump_false' is next insn. */
29055 +- if (fp->jf == 0) {
29056 +- insn->code = BPF_JMP | BPF_OP(fp->code) | bpf_src;
29057 +- target = i + fp->jt + 1;
29058 +- BPF_EMIT_JMP;
29059 +- break;
29060 ++ return 0;
29061 ++ case BPF_S_LD_H_ABS:
29062 ++ k = K;
29063 ++load_h:
29064 ++ ptr = load_pointer(skb, k, 2, &tmp);
29065 ++ if (ptr != NULL) {
29066 ++ A = get_unaligned_be16(ptr);
29067 ++ continue;
29068 + }
29069 +-
29070 +- /* Convert JEQ into JNE when 'jump_true' is next insn. */
29071 +- if (fp->jt == 0 && BPF_OP(fp->code) == BPF_JEQ) {
29072 +- insn->code = BPF_JMP | BPF_JNE | bpf_src;
29073 +- target = i + fp->jf + 1;
29074 +- BPF_EMIT_JMP;
29075 +- break;
29076 ++ return 0;
29077 ++ case BPF_S_LD_B_ABS:
29078 ++ k = K;
29079 ++load_b:
29080 ++ ptr = load_pointer(skb, k, 1, &tmp);
29081 ++ if (ptr != NULL) {
29082 ++ A = *(u8 *)ptr;
29083 ++ continue;
29084 + }
29085 +-
29086 +- /* Other jumps are mapped into two insns: Jxx and JA. */
29087 +- target = i + fp->jt + 1;
29088 +- insn->code = BPF_JMP | BPF_OP(fp->code) | bpf_src;
29089 +- BPF_EMIT_JMP;
29090 +- insn++;
29091 +-
29092 +- insn->code = BPF_JMP | BPF_JA;
29093 +- target = i + fp->jf + 1;
29094 +- BPF_EMIT_JMP;
29095 +- break;
29096 +-
29097 +- /* ldxb 4 * ([14] & 0xf) is remaped into 6 insns. */
29098 +- case BPF_LDX | BPF_MSH | BPF_B:
29099 +- /* tmp = A */
29100 +- *insn++ = BPF_MOV64_REG(BPF_REG_TMP, BPF_REG_A);
29101 +- /* A = BPF_R0 = *(u8 *) (skb->data + K) */
29102 +- *insn++ = BPF_LD_ABS(BPF_B, fp->k);
29103 +- /* A &= 0xf */
29104 +- *insn++ = BPF_ALU32_IMM(BPF_AND, BPF_REG_A, 0xf);
29105 +- /* A <<= 2 */
29106 +- *insn++ = BPF_ALU32_IMM(BPF_LSH, BPF_REG_A, 2);
29107 +- /* X = A */
29108 +- *insn++ = BPF_MOV64_REG(BPF_REG_X, BPF_REG_A);
29109 +- /* A = tmp */
29110 +- *insn = BPF_MOV64_REG(BPF_REG_A, BPF_REG_TMP);
29111 +- break;
29112 +-
29113 +- /* RET_K, RET_A are remaped into 2 insns. */
29114 +- case BPF_RET | BPF_A:
29115 +- case BPF_RET | BPF_K:
29116 +- *insn++ = BPF_MOV32_RAW(BPF_RVAL(fp->code) == BPF_K ?
29117 +- BPF_K : BPF_X, BPF_REG_0,
29118 +- BPF_REG_A, fp->k);
29119 +- *insn = BPF_EXIT_INSN();
29120 +- break;
29121 +-
29122 +- /* Store to stack. */
29123 +- case BPF_ST:
29124 +- case BPF_STX:
29125 +- *insn = BPF_STX_MEM(BPF_W, BPF_REG_FP, BPF_CLASS(fp->code) ==
29126 +- BPF_ST ? BPF_REG_A : BPF_REG_X,
29127 +- -(BPF_MEMWORDS - fp->k) * 4);
29128 +- break;
29129 +-
29130 +- /* Load from stack. */
29131 +- case BPF_LD | BPF_MEM:
29132 +- case BPF_LDX | BPF_MEM:
29133 +- *insn = BPF_LDX_MEM(BPF_W, BPF_CLASS(fp->code) == BPF_LD ?
29134 +- BPF_REG_A : BPF_REG_X, BPF_REG_FP,
29135 +- -(BPF_MEMWORDS - fp->k) * 4);
29136 +- break;
29137 +-
29138 +- /* A = K or X = K */
29139 +- case BPF_LD | BPF_IMM:
29140 +- case BPF_LDX | BPF_IMM:
29141 +- *insn = BPF_MOV32_IMM(BPF_CLASS(fp->code) == BPF_LD ?
29142 +- BPF_REG_A : BPF_REG_X, fp->k);
29143 +- break;
29144 +-
29145 +- /* X = A */
29146 +- case BPF_MISC | BPF_TAX:
29147 +- *insn = BPF_MOV64_REG(BPF_REG_X, BPF_REG_A);
29148 +- break;
29149 +-
29150 +- /* A = X */
29151 +- case BPF_MISC | BPF_TXA:
29152 +- *insn = BPF_MOV64_REG(BPF_REG_A, BPF_REG_X);
29153 +- break;
29154 +-
29155 +- /* A = skb->len or X = skb->len */
29156 +- case BPF_LD | BPF_W | BPF_LEN:
29157 +- case BPF_LDX | BPF_W | BPF_LEN:
29158 +- *insn = BPF_LDX_MEM(BPF_W, BPF_CLASS(fp->code) == BPF_LD ?
29159 +- BPF_REG_A : BPF_REG_X, BPF_REG_CTX,
29160 +- offsetof(struct sk_buff, len));
29161 +- break;
29162 +-
29163 +- /* Access seccomp_data fields. */
29164 +- case BPF_LDX | BPF_ABS | BPF_W:
29165 +- /* A = *(u32 *) (ctx + K) */
29166 +- *insn = BPF_LDX_MEM(BPF_W, BPF_REG_A, BPF_REG_CTX, fp->k);
29167 +- break;
29168 +-
29169 +- /* Unkown instruction. */
29170 ++ return 0;
29171 ++ case BPF_S_LD_W_LEN:
29172 ++ A = skb->len;
29173 ++ continue;
29174 ++ case BPF_S_LDX_W_LEN:
29175 ++ X = skb->len;
29176 ++ continue;
29177 ++ case BPF_S_LD_W_IND:
29178 ++ k = X + K;
29179 ++ goto load_w;
29180 ++ case BPF_S_LD_H_IND:
29181 ++ k = X + K;
29182 ++ goto load_h;
29183 ++ case BPF_S_LD_B_IND:
29184 ++ k = X + K;
29185 ++ goto load_b;
29186 ++ case BPF_S_LDX_B_MSH:
29187 ++ ptr = load_pointer(skb, K, 1, &tmp);
29188 ++ if (ptr != NULL) {
29189 ++ X = (*(u8 *)ptr & 0xf) << 2;
29190 ++ continue;
29191 ++ }
29192 ++ return 0;
29193 ++ case BPF_S_LD_IMM:
29194 ++ A = K;
29195 ++ continue;
29196 ++ case BPF_S_LDX_IMM:
29197 ++ X = K;
29198 ++ continue;
29199 ++ case BPF_S_LD_MEM:
29200 ++ A = mem[K&15];
29201 ++ continue;
29202 ++ case BPF_S_LDX_MEM:
29203 ++ X = mem[K&15];
29204 ++ continue;
29205 ++ case BPF_S_MISC_TAX:
29206 ++ X = A;
29207 ++ continue;
29208 ++ case BPF_S_MISC_TXA:
29209 ++ A = X;
29210 ++ continue;
29211 ++ case BPF_S_RET_K:
29212 ++ return K;
29213 ++ case BPF_S_RET_A:
29214 ++ return A;
29215 ++ case BPF_S_ST:
29216 ++ mem[K&15] = A;
29217 ++ continue;
29218 ++ case BPF_S_STX:
29219 ++ mem[K&15] = X;
29220 ++ continue;
29221 ++ case BPF_S_ANC_PROTOCOL:
29222 ++ A = ntohs(skb->protocol);
29223 ++ continue;
29224 ++ case BPF_S_ANC_PKTTYPE:
29225 ++ A = skb->pkt_type;
29226 ++ continue;
29227 ++ case BPF_S_ANC_IFINDEX:
29228 ++ if (!skb->dev)
29229 ++ return 0;
29230 ++ A = skb->dev->ifindex;
29231 ++ continue;
29232 ++ case BPF_S_ANC_MARK:
29233 ++ A = skb->mark;
29234 ++ continue;
29235 ++ case BPF_S_ANC_QUEUE:
29236 ++ A = skb->queue_mapping;
29237 ++ continue;
29238 ++ case BPF_S_ANC_HATYPE:
29239 ++ if (!skb->dev)
29240 ++ return 0;
29241 ++ A = skb->dev->type;
29242 ++ continue;
29243 ++ case BPF_S_ANC_RXHASH:
29244 ++ A = skb->hash;
29245 ++ continue;
29246 ++ case BPF_S_ANC_CPU:
29247 ++ A = raw_smp_processor_id();
29248 ++ continue;
29249 ++ case BPF_S_ANC_VLAN_TAG:
29250 ++ A = vlan_tx_tag_get(skb);
29251 ++ continue;
29252 ++ case BPF_S_ANC_VLAN_TAG_PRESENT:
29253 ++ A = !!vlan_tx_tag_present(skb);
29254 ++ continue;
29255 ++ case BPF_S_ANC_PAY_OFFSET:
29256 ++ A = __skb_get_poff(skb);
29257 ++ continue;
29258 ++ case BPF_S_ANC_NLATTR: {
29259 ++ struct nlattr *nla;
29260 ++
29261 ++ if (skb_is_nonlinear(skb))
29262 ++ return 0;
29263 ++ if (skb->len < sizeof(struct nlattr))
29264 ++ return 0;
29265 ++ if (A > skb->len - sizeof(struct nlattr))
29266 ++ return 0;
29267 ++
29268 ++ nla = nla_find((struct nlattr *)&skb->data[A],
29269 ++ skb->len - A, X);
29270 ++ if (nla)
29271 ++ A = (void *)nla - (void *)skb->data;
29272 ++ else
29273 ++ A = 0;
29274 ++ continue;
29275 ++ }
29276 ++ case BPF_S_ANC_NLATTR_NEST: {
29277 ++ struct nlattr *nla;
29278 ++
29279 ++ if (skb_is_nonlinear(skb))
29280 ++ return 0;
29281 ++ if (skb->len < sizeof(struct nlattr))
29282 ++ return 0;
29283 ++ if (A > skb->len - sizeof(struct nlattr))
29284 ++ return 0;
29285 ++
29286 ++ nla = (struct nlattr *)&skb->data[A];
29287 ++ if (nla->nla_len > skb->len - A)
29288 ++ return 0;
29289 ++
29290 ++ nla = nla_find_nested(nla, X);
29291 ++ if (nla)
29292 ++ A = (void *)nla - (void *)skb->data;
29293 ++ else
29294 ++ A = 0;
29295 ++ continue;
29296 ++ }
29297 ++#ifdef CONFIG_SECCOMP_FILTER
29298 ++ case BPF_S_ANC_SECCOMP_LD_W:
29299 ++ A = seccomp_bpf_load(fentry->k);
29300 ++ continue;
29301 ++#endif
29302 + default:
29303 +- goto err;
29304 ++ WARN(1, KERN_ALERT "Unknown sock filter code:%u jt:%u tf:%u k:%u\n",
29305 ++ fentry->code, fentry->jt,
29306 ++ fentry->jf, fentry->k);
29307 ++ BUG();
29308 ++ return 0;
29309 + }
29310 +-
29311 +- insn++;
29312 +- if (new_prog)
29313 +- memcpy(new_insn, tmp_insns,
29314 +- sizeof(*insn) * (insn - tmp_insns));
29315 +- new_insn += insn - tmp_insns;
29316 +- }
29317 +-
29318 +- if (!new_prog) {
29319 +- /* Only calculating new length. */
29320 +- *new_len = new_insn - new_prog;
29321 +- return 0;
29322 +- }
29323 +-
29324 +- pass++;
29325 +- if (new_flen != new_insn - new_prog) {
29326 +- new_flen = new_insn - new_prog;
29327 +- if (pass > 2)
29328 +- goto err;
29329 +- goto do_pass;
29330 + }
29331 +
29332 +- kfree(addrs);
29333 +- BUG_ON(*new_len != new_flen);
29334 + return 0;
29335 +-err:
29336 +- kfree(addrs);
29337 +- return -EINVAL;
29338 + }
29339 ++EXPORT_SYMBOL(sk_run_filter);
29340 +
29341 +-/* Security:
29342 +- *
29343 ++/*
29344 ++ * Security :
29345 + * A BPF program is able to use 16 cells of memory to store intermediate
29346 +- * values (check u32 mem[BPF_MEMWORDS] in sk_run_filter()).
29347 +- *
29348 ++ * values (check u32 mem[BPF_MEMWORDS] in sk_run_filter())
29349 + * As we dont want to clear mem[] array for each packet going through
29350 + * sk_run_filter(), we check that filter loaded by user never try to read
29351 + * a cell if not previously written, and we check all branches to be sure
29352 +@@ -1096,46 +418,44 @@ err:
29353 + */
29354 + static int check_load_and_stores(struct sock_filter *filter, int flen)
29355 + {
29356 +- u16 *masks, memvalid = 0; /* One bit per cell, 16 cells */
29357 ++ u16 *masks, memvalid = 0; /* one bit per cell, 16 cells */
29358 + int pc, ret = 0;
29359 +
29360 +- BUILD_BUG_ON(BPF_MEMWORDS > 16);
29361 +-
29362 +- masks = kmalloc_array(flen, sizeof(*masks), GFP_KERNEL);
29363 ++ BUILD_BUG_ON(BPF_MEMWORDS != 16);
29364 ++ masks = kmalloc(flen * sizeof(*masks), GFP_KERNEL);
29365 + if (!masks)
29366 + return -ENOMEM;
29367 +-
29368 + memset(masks, 0xff, flen * sizeof(*masks));
29369 +
29370 + for (pc = 0; pc < flen; pc++) {
29371 + memvalid &= masks[pc];
29372 +
29373 + switch (filter[pc].code) {
29374 +- case BPF_ST:
29375 +- case BPF_STX:
29376 ++ case BPF_S_ST:
29377 ++ case BPF_S_STX:
29378 + memvalid |= (1 << filter[pc].k);
29379 + break;
29380 +- case BPF_LD | BPF_MEM:
29381 +- case BPF_LDX | BPF_MEM:
29382 ++ case BPF_S_LD_MEM:
29383 ++ case BPF_S_LDX_MEM:
29384 + if (!(memvalid & (1 << filter[pc].k))) {
29385 + ret = -EINVAL;
29386 + goto error;
29387 + }
29388 + break;
29389 +- case BPF_JMP | BPF_JA:
29390 +- /* A jump must set masks on target */
29391 ++ case BPF_S_JMP_JA:
29392 ++ /* a jump must set masks on target */
29393 + masks[pc + 1 + filter[pc].k] &= memvalid;
29394 + memvalid = ~0;
29395 + break;
29396 +- case BPF_JMP | BPF_JEQ | BPF_K:
29397 +- case BPF_JMP | BPF_JEQ | BPF_X:
29398 +- case BPF_JMP | BPF_JGE | BPF_K:
29399 +- case BPF_JMP | BPF_JGE | BPF_X:
29400 +- case BPF_JMP | BPF_JGT | BPF_K:
29401 +- case BPF_JMP | BPF_JGT | BPF_X:
29402 +- case BPF_JMP | BPF_JSET | BPF_K:
29403 +- case BPF_JMP | BPF_JSET | BPF_X:
29404 +- /* A jump must set masks on targets */
29405 ++ case BPF_S_JMP_JEQ_K:
29406 ++ case BPF_S_JMP_JEQ_X:
29407 ++ case BPF_S_JMP_JGE_K:
29408 ++ case BPF_S_JMP_JGE_X:
29409 ++ case BPF_S_JMP_JGT_K:
29410 ++ case BPF_S_JMP_JGT_X:
29411 ++ case BPF_S_JMP_JSET_X:
29412 ++ case BPF_S_JMP_JSET_K:
29413 ++ /* a jump must set masks on targets */
29414 + masks[pc + 1 + filter[pc].jt] &= memvalid;
29415 + masks[pc + 1 + filter[pc].jf] &= memvalid;
29416 + memvalid = ~0;
29417 +@@ -1147,72 +467,6 @@ error:
29418 + return ret;
29419 + }
29420 +
29421 +-static bool chk_code_allowed(u16 code_to_probe)
29422 +-{
29423 +- static const bool codes[] = {
29424 +- /* 32 bit ALU operations */
29425 +- [BPF_ALU | BPF_ADD | BPF_K] = true,
29426 +- [BPF_ALU | BPF_ADD | BPF_X] = true,
29427 +- [BPF_ALU | BPF_SUB | BPF_K] = true,
29428 +- [BPF_ALU | BPF_SUB | BPF_X] = true,
29429 +- [BPF_ALU | BPF_MUL | BPF_K] = true,
29430 +- [BPF_ALU | BPF_MUL | BPF_X] = true,
29431 +- [BPF_ALU | BPF_DIV | BPF_K] = true,
29432 +- [BPF_ALU | BPF_DIV | BPF_X] = true,
29433 +- [BPF_ALU | BPF_MOD | BPF_K] = true,
29434 +- [BPF_ALU | BPF_MOD | BPF_X] = true,
29435 +- [BPF_ALU | BPF_AND | BPF_K] = true,
29436 +- [BPF_ALU | BPF_AND | BPF_X] = true,
29437 +- [BPF_ALU | BPF_OR | BPF_K] = true,
29438 +- [BPF_ALU | BPF_OR | BPF_X] = true,
29439 +- [BPF_ALU | BPF_XOR | BPF_K] = true,
29440 +- [BPF_ALU | BPF_XOR | BPF_X] = true,
29441 +- [BPF_ALU | BPF_LSH | BPF_K] = true,
29442 +- [BPF_ALU | BPF_LSH | BPF_X] = true,
29443 +- [BPF_ALU | BPF_RSH | BPF_K] = true,
29444 +- [BPF_ALU | BPF_RSH | BPF_X] = true,
29445 +- [BPF_ALU | BPF_NEG] = true,
29446 +- /* Load instructions */
29447 +- [BPF_LD | BPF_W | BPF_ABS] = true,
29448 +- [BPF_LD | BPF_H | BPF_ABS] = true,
29449 +- [BPF_LD | BPF_B | BPF_ABS] = true,
29450 +- [BPF_LD | BPF_W | BPF_LEN] = true,
29451 +- [BPF_LD | BPF_W | BPF_IND] = true,
29452 +- [BPF_LD | BPF_H | BPF_IND] = true,
29453 +- [BPF_LD | BPF_B | BPF_IND] = true,
29454 +- [BPF_LD | BPF_IMM] = true,
29455 +- [BPF_LD | BPF_MEM] = true,
29456 +- [BPF_LDX | BPF_W | BPF_LEN] = true,
29457 +- [BPF_LDX | BPF_B | BPF_MSH] = true,
29458 +- [BPF_LDX | BPF_IMM] = true,
29459 +- [BPF_LDX | BPF_MEM] = true,
29460 +- /* Store instructions */
29461 +- [BPF_ST] = true,
29462 +- [BPF_STX] = true,
29463 +- /* Misc instructions */
29464 +- [BPF_MISC | BPF_TAX] = true,
29465 +- [BPF_MISC | BPF_TXA] = true,
29466 +- /* Return instructions */
29467 +- [BPF_RET | BPF_K] = true,
29468 +- [BPF_RET | BPF_A] = true,
29469 +- /* Jump instructions */
29470 +- [BPF_JMP | BPF_JA] = true,
29471 +- [BPF_JMP | BPF_JEQ | BPF_K] = true,
29472 +- [BPF_JMP | BPF_JEQ | BPF_X] = true,
29473 +- [BPF_JMP | BPF_JGE | BPF_K] = true,
29474 +- [BPF_JMP | BPF_JGE | BPF_X] = true,
29475 +- [BPF_JMP | BPF_JGT | BPF_K] = true,
29476 +- [BPF_JMP | BPF_JGT | BPF_X] = true,
29477 +- [BPF_JMP | BPF_JSET | BPF_K] = true,
29478 +- [BPF_JMP | BPF_JSET | BPF_X] = true,
29479 +- };
29480 +-
29481 +- if (code_to_probe >= ARRAY_SIZE(codes))
29482 +- return false;
29483 +-
29484 +- return codes[code_to_probe];
29485 +-}
29486 +-
29487 + /**
29488 + * sk_chk_filter - verify socket filter code
29489 + * @filter: filter to verify
29490 +@@ -1229,303 +483,187 @@ static bool chk_code_allowed(u16 code_to_probe)
29491 + */
29492 + int sk_chk_filter(struct sock_filter *filter, unsigned int flen)
29493 {
29494 -- struct compat_group_filter __user *gf32 = (void *)optval;
29495 -+ struct compat_group_filter __user *gf32 = (void __user *)optval;
29496 - struct group_filter __user *kgf;
29497 - int __user *koptlen;
29498 - u32 interface, fmode, numsrc;
29499 -@@ -804,7 +804,7 @@ COMPAT_SYSCALL_DEFINE2(socketcall, int, call, u32 __user *, args)
29500 +- bool anc_found;
29501 ++ /*
29502 ++ * Valid instructions are initialized to non-0.
29503 ++ * Invalid instructions are initialized to 0.
29504 ++ */
29505 ++ static const u8 codes[] = {
29506 ++ [BPF_ALU|BPF_ADD|BPF_K] = BPF_S_ALU_ADD_K,
29507 ++ [BPF_ALU|BPF_ADD|BPF_X] = BPF_S_ALU_ADD_X,
29508 ++ [BPF_ALU|BPF_SUB|BPF_K] = BPF_S_ALU_SUB_K,
29509 ++ [BPF_ALU|BPF_SUB|BPF_X] = BPF_S_ALU_SUB_X,
29510 ++ [BPF_ALU|BPF_MUL|BPF_K] = BPF_S_ALU_MUL_K,
29511 ++ [BPF_ALU|BPF_MUL|BPF_X] = BPF_S_ALU_MUL_X,
29512 ++ [BPF_ALU|BPF_DIV|BPF_X] = BPF_S_ALU_DIV_X,
29513 ++ [BPF_ALU|BPF_MOD|BPF_K] = BPF_S_ALU_MOD_K,
29514 ++ [BPF_ALU|BPF_MOD|BPF_X] = BPF_S_ALU_MOD_X,
29515 ++ [BPF_ALU|BPF_AND|BPF_K] = BPF_S_ALU_AND_K,
29516 ++ [BPF_ALU|BPF_AND|BPF_X] = BPF_S_ALU_AND_X,
29517 ++ [BPF_ALU|BPF_OR|BPF_K] = BPF_S_ALU_OR_K,
29518 ++ [BPF_ALU|BPF_OR|BPF_X] = BPF_S_ALU_OR_X,
29519 ++ [BPF_ALU|BPF_XOR|BPF_K] = BPF_S_ALU_XOR_K,
29520 ++ [BPF_ALU|BPF_XOR|BPF_X] = BPF_S_ALU_XOR_X,
29521 ++ [BPF_ALU|BPF_LSH|BPF_K] = BPF_S_ALU_LSH_K,
29522 ++ [BPF_ALU|BPF_LSH|BPF_X] = BPF_S_ALU_LSH_X,
29523 ++ [BPF_ALU|BPF_RSH|BPF_K] = BPF_S_ALU_RSH_K,
29524 ++ [BPF_ALU|BPF_RSH|BPF_X] = BPF_S_ALU_RSH_X,
29525 ++ [BPF_ALU|BPF_NEG] = BPF_S_ALU_NEG,
29526 ++ [BPF_LD|BPF_W|BPF_ABS] = BPF_S_LD_W_ABS,
29527 ++ [BPF_LD|BPF_H|BPF_ABS] = BPF_S_LD_H_ABS,
29528 ++ [BPF_LD|BPF_B|BPF_ABS] = BPF_S_LD_B_ABS,
29529 ++ [BPF_LD|BPF_W|BPF_LEN] = BPF_S_LD_W_LEN,
29530 ++ [BPF_LD|BPF_W|BPF_IND] = BPF_S_LD_W_IND,
29531 ++ [BPF_LD|BPF_H|BPF_IND] = BPF_S_LD_H_IND,
29532 ++ [BPF_LD|BPF_B|BPF_IND] = BPF_S_LD_B_IND,
29533 ++ [BPF_LD|BPF_IMM] = BPF_S_LD_IMM,
29534 ++ [BPF_LDX|BPF_W|BPF_LEN] = BPF_S_LDX_W_LEN,
29535 ++ [BPF_LDX|BPF_B|BPF_MSH] = BPF_S_LDX_B_MSH,
29536 ++ [BPF_LDX|BPF_IMM] = BPF_S_LDX_IMM,
29537 ++ [BPF_MISC|BPF_TAX] = BPF_S_MISC_TAX,
29538 ++ [BPF_MISC|BPF_TXA] = BPF_S_MISC_TXA,
29539 ++ [BPF_RET|BPF_K] = BPF_S_RET_K,
29540 ++ [BPF_RET|BPF_A] = BPF_S_RET_A,
29541 ++ [BPF_ALU|BPF_DIV|BPF_K] = BPF_S_ALU_DIV_K,
29542 ++ [BPF_LD|BPF_MEM] = BPF_S_LD_MEM,
29543 ++ [BPF_LDX|BPF_MEM] = BPF_S_LDX_MEM,
29544 ++ [BPF_ST] = BPF_S_ST,
29545 ++ [BPF_STX] = BPF_S_STX,
29546 ++ [BPF_JMP|BPF_JA] = BPF_S_JMP_JA,
29547 ++ [BPF_JMP|BPF_JEQ|BPF_K] = BPF_S_JMP_JEQ_K,
29548 ++ [BPF_JMP|BPF_JEQ|BPF_X] = BPF_S_JMP_JEQ_X,
29549 ++ [BPF_JMP|BPF_JGE|BPF_K] = BPF_S_JMP_JGE_K,
29550 ++ [BPF_JMP|BPF_JGE|BPF_X] = BPF_S_JMP_JGE_X,
29551 ++ [BPF_JMP|BPF_JGT|BPF_K] = BPF_S_JMP_JGT_K,
29552 ++ [BPF_JMP|BPF_JGT|BPF_X] = BPF_S_JMP_JGT_X,
29553 ++ [BPF_JMP|BPF_JSET|BPF_K] = BPF_S_JMP_JSET_K,
29554 ++ [BPF_JMP|BPF_JSET|BPF_X] = BPF_S_JMP_JSET_X,
29555 ++ };
29556 + int pc;
29557 ++ bool anc_found;
29558
29559 - if (call < SYS_SOCKET || call > SYS_SENDMMSG)
29560 + if (flen == 0 || flen > BPF_MAXINSNS)
29561 return -EINVAL;
29562 -- if (copy_from_user(a, args, nas[call]))
29563 -+ if (nas[call] > sizeof a || copy_from_user(a, args, nas[call]))
29564 - return -EFAULT;
29565 - a0 = a[0];
29566 - a1 = a[1];
29567 -diff --git a/net/core/datagram.c b/net/core/datagram.c
29568 -index a16ed7b..eb44d17 100644
29569 ---- a/net/core/datagram.c
29570 -+++ b/net/core/datagram.c
29571 -@@ -301,7 +301,7 @@ int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags)
29572 - }
29573
29574 - kfree_skb(skb);
29575 -- atomic_inc(&sk->sk_drops);
29576 -+ atomic_inc_unchecked(&sk->sk_drops);
29577 - sk_mem_reclaim_partial(sk);
29578 +- /* Check the filter code now */
29579 ++ /* check the filter code now */
29580 + for (pc = 0; pc < flen; pc++) {
29581 + struct sock_filter *ftest = &filter[pc];
29582 ++ u16 code = ftest->code;
29583
29584 - return err;
29585 -diff --git a/net/core/dev.c b/net/core/dev.c
29586 -index a7621f3..ca7dac3 100644
29587 ---- a/net/core/dev.c
29588 -+++ b/net/core/dev.c
29589 -@@ -1690,14 +1690,14 @@ int dev_forward_skb(struct net_device *dev, struct sk_buff *skb)
29590 - {
29591 - if (skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY) {
29592 - if (skb_copy_ubufs(skb, GFP_ATOMIC)) {
29593 -- atomic_long_inc(&dev->rx_dropped);
29594 -+ atomic_long_inc_unchecked(&dev->rx_dropped);
29595 - kfree_skb(skb);
29596 - return NET_RX_DROP;
29597 +- /* May we actually operate on this code? */
29598 +- if (!chk_code_allowed(ftest->code))
29599 ++ if (code >= ARRAY_SIZE(codes))
29600 ++ return -EINVAL;
29601 ++ code = codes[code];
29602 ++ if (!code)
29603 + return -EINVAL;
29604 +-
29605 + /* Some instructions need special checks */
29606 +- switch (ftest->code) {
29607 +- case BPF_ALU | BPF_DIV | BPF_K:
29608 +- case BPF_ALU | BPF_MOD | BPF_K:
29609 +- /* Check for division by zero */
29610 ++ switch (code) {
29611 ++ case BPF_S_ALU_DIV_K:
29612 ++ case BPF_S_ALU_MOD_K:
29613 ++ /* check for division by zero */
29614 + if (ftest->k == 0)
29615 + return -EINVAL;
29616 + break;
29617 +- case BPF_LD | BPF_MEM:
29618 +- case BPF_LDX | BPF_MEM:
29619 +- case BPF_ST:
29620 +- case BPF_STX:
29621 +- /* Check for invalid memory addresses */
29622 ++ case BPF_S_LD_MEM:
29623 ++ case BPF_S_LDX_MEM:
29624 ++ case BPF_S_ST:
29625 ++ case BPF_S_STX:
29626 ++ /* check for invalid memory addresses */
29627 + if (ftest->k >= BPF_MEMWORDS)
29628 + return -EINVAL;
29629 + break;
29630 +- case BPF_JMP | BPF_JA:
29631 +- /* Note, the large ftest->k might cause loops.
29632 ++ case BPF_S_JMP_JA:
29633 ++ /*
29634 ++ * Note, the large ftest->k might cause loops.
29635 + * Compare this with conditional jumps below,
29636 + * where offsets are limited. --ANK (981016)
29637 + */
29638 +- if (ftest->k >= (unsigned int)(flen - pc - 1))
29639 ++ if (ftest->k >= (unsigned int)(flen-pc-1))
29640 + return -EINVAL;
29641 + break;
29642 +- case BPF_JMP | BPF_JEQ | BPF_K:
29643 +- case BPF_JMP | BPF_JEQ | BPF_X:
29644 +- case BPF_JMP | BPF_JGE | BPF_K:
29645 +- case BPF_JMP | BPF_JGE | BPF_X:
29646 +- case BPF_JMP | BPF_JGT | BPF_K:
29647 +- case BPF_JMP | BPF_JGT | BPF_X:
29648 +- case BPF_JMP | BPF_JSET | BPF_K:
29649 +- case BPF_JMP | BPF_JSET | BPF_X:
29650 +- /* Both conditionals must be safe */
29651 ++ case BPF_S_JMP_JEQ_K:
29652 ++ case BPF_S_JMP_JEQ_X:
29653 ++ case BPF_S_JMP_JGE_K:
29654 ++ case BPF_S_JMP_JGE_X:
29655 ++ case BPF_S_JMP_JGT_K:
29656 ++ case BPF_S_JMP_JGT_X:
29657 ++ case BPF_S_JMP_JSET_X:
29658 ++ case BPF_S_JMP_JSET_K:
29659 ++ /* for conditionals both must be safe */
29660 + if (pc + ftest->jt + 1 >= flen ||
29661 + pc + ftest->jf + 1 >= flen)
29662 + return -EINVAL;
29663 + break;
29664 +- case BPF_LD | BPF_W | BPF_ABS:
29665 +- case BPF_LD | BPF_H | BPF_ABS:
29666 +- case BPF_LD | BPF_B | BPF_ABS:
29667 ++ case BPF_S_LD_W_ABS:
29668 ++ case BPF_S_LD_H_ABS:
29669 ++ case BPF_S_LD_B_ABS:
29670 + anc_found = false;
29671 +- if (bpf_anc_helper(ftest) & BPF_ANC)
29672 +- anc_found = true;
29673 +- /* Ancillary operation unknown or unsupported */
29674 ++#define ANCILLARY(CODE) case SKF_AD_OFF + SKF_AD_##CODE: \
29675 ++ code = BPF_S_ANC_##CODE; \
29676 ++ anc_found = true; \
29677 ++ break
29678 ++ switch (ftest->k) {
29679 ++ ANCILLARY(PROTOCOL);
29680 ++ ANCILLARY(PKTTYPE);
29681 ++ ANCILLARY(IFINDEX);
29682 ++ ANCILLARY(NLATTR);
29683 ++ ANCILLARY(NLATTR_NEST);
29684 ++ ANCILLARY(MARK);
29685 ++ ANCILLARY(QUEUE);
29686 ++ ANCILLARY(HATYPE);
29687 ++ ANCILLARY(RXHASH);
29688 ++ ANCILLARY(CPU);
29689 ++ ANCILLARY(ALU_XOR_X);
29690 ++ ANCILLARY(VLAN_TAG);
29691 ++ ANCILLARY(VLAN_TAG_PRESENT);
29692 ++ ANCILLARY(PAY_OFFSET);
29693 ++ }
29694 ++
29695 ++ /* ancillary operation unknown or unsupported */
29696 + if (anc_found == false && ftest->k >= SKF_AD_OFF)
29697 + return -EINVAL;
29698 }
29699 ++ ftest->code = code;
29700 }
29701
29702 - if (unlikely(!is_skb_forwardable(dev, skb))) {
29703 -- atomic_long_inc(&dev->rx_dropped);
29704 -+ atomic_long_inc_unchecked(&dev->rx_dropped);
29705 - kfree_skb(skb);
29706 - return NET_RX_DROP;
29707 +- /* Last instruction must be a RET code */
29708 ++ /* last instruction must be a RET code */
29709 + switch (filter[flen - 1].code) {
29710 +- case BPF_RET | BPF_K:
29711 +- case BPF_RET | BPF_A:
29712 ++ case BPF_S_RET_K:
29713 ++ case BPF_S_RET_A:
29714 + return check_load_and_stores(filter, flen);
29715 }
29716 -@@ -2470,7 +2470,7 @@ static int illegal_highdma(struct net_device *dev, struct sk_buff *skb)
29717 +-
29718 + return -EINVAL;
29719 + }
29720 + EXPORT_SYMBOL(sk_chk_filter);
29721
29722 - struct dev_gso_cb {
29723 - void (*destructor)(struct sk_buff *skb);
29724 --};
29725 -+} __no_const;
29726 +-static int sk_store_orig_filter(struct sk_filter *fp,
29727 +- const struct sock_fprog *fprog)
29728 +-{
29729 +- unsigned int fsize = sk_filter_proglen(fprog);
29730 +- struct sock_fprog_kern *fkprog;
29731 +-
29732 +- fp->orig_prog = kmalloc(sizeof(*fkprog), GFP_KERNEL);
29733 +- if (!fp->orig_prog)
29734 +- return -ENOMEM;
29735 +-
29736 +- fkprog = fp->orig_prog;
29737 +- fkprog->len = fprog->len;
29738 +- fkprog->filter = kmemdup(fp->insns, fsize, GFP_KERNEL);
29739 +- if (!fkprog->filter) {
29740 +- kfree(fp->orig_prog);
29741 +- return -ENOMEM;
29742 +- }
29743 +-
29744 +- return 0;
29745 +-}
29746 +-
29747 +-static void sk_release_orig_filter(struct sk_filter *fp)
29748 +-{
29749 +- struct sock_fprog_kern *fprog = fp->orig_prog;
29750 +-
29751 +- if (fprog) {
29752 +- kfree(fprog->filter);
29753 +- kfree(fprog);
29754 +- }
29755 +-}
29756 +-
29757 + /**
29758 + * sk_filter_release_rcu - Release a socket filter by rcu_head
29759 + * @rcu: rcu_head that contains the sk_filter to free
29760 + */
29761 +-static void sk_filter_release_rcu(struct rcu_head *rcu)
29762 ++void sk_filter_release_rcu(struct rcu_head *rcu)
29763 + {
29764 + struct sk_filter *fp = container_of(rcu, struct sk_filter, rcu);
29765
29766 - #define DEV_GSO_CB(skb) ((struct dev_gso_cb *)(skb)->cb)
29767 +- sk_release_orig_filter(fp);
29768 +- sk_filter_free(fp);
29769 +-}
29770 +-
29771 +-/**
29772 +- * sk_filter_release - release a socket filter
29773 +- * @fp: filter to remove
29774 +- *
29775 +- * Remove a filter from a socket and release its resources.
29776 +- */
29777 +-static void sk_filter_release(struct sk_filter *fp)
29778 +-{
29779 +- if (atomic_dec_and_test(&fp->refcnt))
29780 +- call_rcu(&fp->rcu, sk_filter_release_rcu);
29781 +-}
29782 +-
29783 +-void sk_filter_uncharge(struct sock *sk, struct sk_filter *fp)
29784 +-{
29785 +- atomic_sub(sk_filter_size(fp->len), &sk->sk_omem_alloc);
29786 +- sk_filter_release(fp);
29787 +-}
29788 +-
29789 +-void sk_filter_charge(struct sock *sk, struct sk_filter *fp)
29790 +-{
29791 +- atomic_inc(&fp->refcnt);
29792 +- atomic_add(sk_filter_size(fp->len), &sk->sk_omem_alloc);
29793 +-}
29794 +-
29795 +-static struct sk_filter *__sk_migrate_realloc(struct sk_filter *fp,
29796 +- struct sock *sk,
29797 +- unsigned int len)
29798 +-{
29799 +- struct sk_filter *fp_new;
29800 +-
29801 +- if (sk == NULL)
29802 +- return krealloc(fp, len, GFP_KERNEL);
29803 +-
29804 +- fp_new = sock_kmalloc(sk, len, GFP_KERNEL);
29805 +- if (fp_new) {
29806 +- *fp_new = *fp;
29807 +- /* As we're keeping orig_prog in fp_new along,
29808 +- * we need to make sure we're not evicting it
29809 +- * from the old fp.
29810 +- */
29811 +- fp->orig_prog = NULL;
29812 +- sk_filter_uncharge(sk, fp);
29813 +- }
29814 +-
29815 +- return fp_new;
29816 +-}
29817 +-
29818 +-static struct sk_filter *__sk_migrate_filter(struct sk_filter *fp,
29819 +- struct sock *sk)
29820 +-{
29821 +- struct sock_filter *old_prog;
29822 +- struct sk_filter *old_fp;
29823 +- int err, new_len, old_len = fp->len;
29824 +-
29825 +- /* We are free to overwrite insns et al right here as it
29826 +- * won't be used at this point in time anymore internally
29827 +- * after the migration to the internal BPF instruction
29828 +- * representation.
29829 +- */
29830 +- BUILD_BUG_ON(sizeof(struct sock_filter) !=
29831 +- sizeof(struct sock_filter_int));
29832 +-
29833 +- /* Conversion cannot happen on overlapping memory areas,
29834 +- * so we need to keep the user BPF around until the 2nd
29835 +- * pass. At this time, the user BPF is stored in fp->insns.
29836 +- */
29837 +- old_prog = kmemdup(fp->insns, old_len * sizeof(struct sock_filter),
29838 +- GFP_KERNEL);
29839 +- if (!old_prog) {
29840 +- err = -ENOMEM;
29841 +- goto out_err;
29842 +- }
29843 +-
29844 +- /* 1st pass: calculate the new program length. */
29845 +- err = sk_convert_filter(old_prog, old_len, NULL, &new_len);
29846 +- if (err)
29847 +- goto out_err_free;
29848 +-
29849 +- /* Expand fp for appending the new filter representation. */
29850 +- old_fp = fp;
29851 +- fp = __sk_migrate_realloc(old_fp, sk, sk_filter_size(new_len));
29852 +- if (!fp) {
29853 +- /* The old_fp is still around in case we couldn't
29854 +- * allocate new memory, so uncharge on that one.
29855 +- */
29856 +- fp = old_fp;
29857 +- err = -ENOMEM;
29858 +- goto out_err_free;
29859 +- }
29860 +-
29861 +- fp->len = new_len;
29862 +-
29863 +- /* 2nd pass: remap sock_filter insns into sock_filter_int insns. */
29864 +- err = sk_convert_filter(old_prog, old_len, fp->insnsi, &new_len);
29865 +- if (err)
29866 +- /* 2nd sk_convert_filter() can fail only if it fails
29867 +- * to allocate memory, remapping must succeed. Note,
29868 +- * that at this time old_fp has already been released
29869 +- * by __sk_migrate_realloc().
29870 +- */
29871 +- goto out_err_free;
29872 +-
29873 +- sk_filter_select_runtime(fp);
29874 +-
29875 +- kfree(old_prog);
29876 +- return fp;
29877 +-
29878 +-out_err_free:
29879 +- kfree(old_prog);
29880 +-out_err:
29881 +- /* Rollback filter setup. */
29882 +- if (sk != NULL)
29883 +- sk_filter_uncharge(sk, fp);
29884 +- else
29885 +- kfree(fp);
29886 +- return ERR_PTR(err);
29887 +-}
29888 +-
29889 +-void __weak bpf_int_jit_compile(struct sk_filter *prog)
29890 +-{
29891 +-}
29892 +-
29893 +-/**
29894 +- * sk_filter_select_runtime - select execution runtime for BPF program
29895 +- * @fp: sk_filter populated with internal BPF program
29896 +- *
29897 +- * try to JIT internal BPF program, if JIT is not available select interpreter
29898 +- * BPF program will be executed via SK_RUN_FILTER() macro
29899 +- */
29900 +-void sk_filter_select_runtime(struct sk_filter *fp)
29901 +-{
29902 +- fp->bpf_func = (void *) __sk_run_filter;
29903 +-
29904 +- /* Probe if internal BPF can be JITed */
29905 +- bpf_int_jit_compile(fp);
29906 +-}
29907 +-EXPORT_SYMBOL_GPL(sk_filter_select_runtime);
29908 +-
29909 +-/* free internal BPF program */
29910 +-void sk_filter_free(struct sk_filter *fp)
29911 +-{
29912 + bpf_jit_free(fp);
29913 + }
29914 +-EXPORT_SYMBOL_GPL(sk_filter_free);
29915 ++EXPORT_SYMBOL(sk_filter_release_rcu);
29916
29917 -@@ -2900,7 +2900,7 @@ recursion_alert:
29918 - rc = -ENETDOWN;
29919 - rcu_read_unlock_bh();
29920 +-static struct sk_filter *__sk_prepare_filter(struct sk_filter *fp,
29921 +- struct sock *sk)
29922 ++static int __sk_prepare_filter(struct sk_filter *fp)
29923 + {
29924 + int err;
29925
29926 -- atomic_long_inc(&dev->tx_dropped);
29927 -+ atomic_long_inc_unchecked(&dev->tx_dropped);
29928 - kfree_skb(skb);
29929 - return rc;
29930 - out:
29931 -@@ -3244,7 +3244,7 @@ enqueue:
29932 +- fp->bpf_func = NULL;
29933 +- fp->jited = 0;
29934 ++ fp->bpf_func = sk_run_filter;
29935
29936 - local_irq_restore(flags);
29937 + err = sk_chk_filter(fp->insns, fp->len);
29938 +- if (err) {
29939 +- if (sk != NULL)
29940 +- sk_filter_uncharge(sk, fp);
29941 +- else
29942 +- kfree(fp);
29943 +- return ERR_PTR(err);
29944 +- }
29945 ++ if (err)
29946 ++ return err;
29947
29948 -- atomic_long_inc(&skb->dev->rx_dropped);
29949 -+ atomic_long_inc_unchecked(&skb->dev->rx_dropped);
29950 - kfree_skb(skb);
29951 - return NET_RX_DROP;
29952 - }
29953 -@@ -3321,7 +3321,7 @@ int netif_rx_ni(struct sk_buff *skb)
29954 +- /* Probe if we can JIT compile the filter and if so, do
29955 +- * the compilation of the filter.
29956 +- */
29957 + bpf_jit_compile(fp);
29958 +-
29959 +- /* JIT compiler couldn't process this filter, so do the
29960 +- * internal BPF translation for the optimized interpreter.
29961 +- */
29962 +- if (!fp->jited)
29963 +- fp = __sk_migrate_filter(fp, sk);
29964 +-
29965 +- return fp;
29966 ++ return 0;
29967 }
29968 - EXPORT_SYMBOL(netif_rx_ni);
29969
29970 --static void net_tx_action(struct softirq_action *h)
29971 -+static __latent_entropy void net_tx_action(void)
29972 + /**
29973 + * sk_unattached_filter_create - create an unattached filter
29974 ++ * @fprog: the filter program
29975 + * @pfp: the unattached filter that is created
29976 +- * @fprog: the filter program
29977 + *
29978 + * Create a filter independent of any socket. We first run some
29979 + * sanity checks on it to make sure it does not explode on us later.
29980 +@@ -1533,10 +671,11 @@ static struct sk_filter *__sk_prepare_filter(struct sk_filter *fp,
29981 + * a negative errno code is returned. On success the return is zero.
29982 + */
29983 + int sk_unattached_filter_create(struct sk_filter **pfp,
29984 +- struct sock_fprog_kern *fprog)
29985 ++ struct sock_fprog *fprog)
29986 {
29987 - struct softnet_data *sd = &__get_cpu_var(softnet_data);
29988 +- unsigned int fsize = sk_filter_proglen(fprog);
29989 + struct sk_filter *fp;
29990 ++ unsigned int fsize = sizeof(struct sock_filter) * fprog->len;
29991 ++ int err;
29992
29993 -@@ -3654,7 +3654,7 @@ ncls:
29994 - ret = pt_prev->func(skb, skb->dev, pt_prev, orig_dev);
29995 - } else {
29996 - drop:
29997 -- atomic_long_inc(&skb->dev->rx_dropped);
29998 -+ atomic_long_inc_unchecked(&skb->dev->rx_dropped);
29999 - kfree_skb(skb);
30000 - /* Jamal, now you will not able to escape explaining
30001 - * me how you were going to use this. :-)
30002 -@@ -4375,7 +4375,7 @@ void netif_napi_del(struct napi_struct *napi)
30003 + /* Make sure new filter is there and in the right amounts. */
30004 + if (fprog->filter == NULL)
30005 +@@ -1545,26 +684,20 @@ int sk_unattached_filter_create(struct sk_filter **pfp,
30006 + fp = kmalloc(sk_filter_size(fprog->len), GFP_KERNEL);
30007 + if (!fp)
30008 + return -ENOMEM;
30009 +-
30010 +- memcpy(fp->insns, fprog->filter, fsize);
30011 ++ memcpy(fp->insns, (void __force_kernel *)fprog->filter, fsize);
30012 +
30013 + atomic_set(&fp->refcnt, 1);
30014 + fp->len = fprog->len;
30015 +- /* Since unattached filters are not copied back to user
30016 +- * space through sk_get_filter(), we do not need to hold
30017 +- * a copy here, and can spare us the work.
30018 +- */
30019 +- fp->orig_prog = NULL;
30020 +
30021 +- /* __sk_prepare_filter() already takes care of uncharging
30022 +- * memory in case something goes wrong.
30023 +- */
30024 +- fp = __sk_prepare_filter(fp, NULL);
30025 +- if (IS_ERR(fp))
30026 +- return PTR_ERR(fp);
30027 ++ err = __sk_prepare_filter(fp);
30028 ++ if (err)
30029 ++ goto free_mem;
30030 +
30031 + *pfp = fp;
30032 + return 0;
30033 ++free_mem:
30034 ++ kfree(fp);
30035 ++ return err;
30036 }
30037 - EXPORT_SYMBOL(netif_napi_del);
30038 + EXPORT_SYMBOL_GPL(sk_unattached_filter_create);
30039
30040 --static void net_rx_action(struct softirq_action *h)
30041 -+static __latent_entropy void net_rx_action(void)
30042 +@@ -1587,7 +720,7 @@ EXPORT_SYMBOL_GPL(sk_unattached_filter_destroy);
30043 + int sk_attach_filter(struct sock_fprog *fprog, struct sock *sk)
30044 {
30045 - struct softnet_data *sd = &__get_cpu_var(softnet_data);
30046 - unsigned long time_limit = jiffies + 2;
30047 -@@ -6375,8 +6375,8 @@ struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev,
30048 - } else {
30049 - netdev_stats_to_stats64(storage, &dev->stats);
30050 + struct sk_filter *fp, *old_fp;
30051 +- unsigned int fsize = sk_filter_proglen(fprog);
30052 ++ unsigned int fsize = sizeof(struct sock_filter) * fprog->len;
30053 + unsigned int sk_fsize = sk_filter_size(fprog->len);
30054 + int err;
30055 +
30056 +@@ -1601,7 +734,6 @@ int sk_attach_filter(struct sock_fprog *fprog, struct sock *sk)
30057 + fp = sock_kmalloc(sk, sk_fsize, GFP_KERNEL);
30058 + if (!fp)
30059 + return -ENOMEM;
30060 +-
30061 + if (copy_from_user(fp->insns, fprog->filter, fsize)) {
30062 + sock_kfree_s(sk, fp, sk_fsize);
30063 + return -EFAULT;
30064 +@@ -1610,26 +742,18 @@ int sk_attach_filter(struct sock_fprog *fprog, struct sock *sk)
30065 + atomic_set(&fp->refcnt, 1);
30066 + fp->len = fprog->len;
30067 +
30068 +- err = sk_store_orig_filter(fp, fprog);
30069 ++ err = __sk_prepare_filter(fp);
30070 + if (err) {
30071 + sk_filter_uncharge(sk, fp);
30072 +- return -ENOMEM;
30073 ++ return err;
30074 }
30075 -- storage->rx_dropped += atomic_long_read(&dev->rx_dropped);
30076 -- storage->tx_dropped += atomic_long_read(&dev->tx_dropped);
30077 -+ storage->rx_dropped += atomic_long_read_unchecked(&dev->rx_dropped);
30078 -+ storage->tx_dropped += atomic_long_read_unchecked(&dev->tx_dropped);
30079 - return storage;
30080 +
30081 +- /* __sk_prepare_filter() already takes care of uncharging
30082 +- * memory in case something goes wrong.
30083 +- */
30084 +- fp = __sk_prepare_filter(fp, sk);
30085 +- if (IS_ERR(fp))
30086 +- return PTR_ERR(fp);
30087 +-
30088 + old_fp = rcu_dereference_protected(sk->sk_filter,
30089 + sock_owned_by_user(sk));
30090 + rcu_assign_pointer(sk->sk_filter, fp);
30091 +
30092 + if (old_fp)
30093 + sk_filter_uncharge(sk, old_fp);
30094 +-
30095 + return 0;
30096 }
30097 - EXPORT_SYMBOL(dev_get_stats);
30098 -diff --git a/net/core/dev_ioctl.c b/net/core/dev_ioctl.c
30099 -index cf999e0..c59a975 100644
30100 ---- a/net/core/dev_ioctl.c
30101 -+++ b/net/core/dev_ioctl.c
30102 -@@ -366,9 +366,13 @@ void dev_load(struct net *net, const char *name)
30103 - if (no_module && capable(CAP_NET_ADMIN))
30104 - no_module = request_module("netdev-%s", name);
30105 - if (no_module && capable(CAP_SYS_MODULE)) {
30106 -+#ifdef CONFIG_GRKERNSEC_MODHARDEN
30107 -+ ___request_module(true, "grsec_modharden_netdev", "%s", name);
30108 -+#else
30109 - if (!request_module("%s", name))
30110 - pr_warn("Loading kernel module for a network device with CAP_SYS_MODULE (deprecated). Use CAP_NET_ADMIN and alias netdev-%s instead.\n",
30111 - name);
30112 -+#endif
30113 + EXPORT_SYMBOL_GPL(sk_attach_filter);
30114 +@@ -1649,46 +773,116 @@ int sk_detach_filter(struct sock *sk)
30115 + sk_filter_uncharge(sk, filter);
30116 + ret = 0;
30117 }
30118 +-
30119 + return ret;
30120 }
30121 - EXPORT_SYMBOL(dev_load);
30122 -diff --git a/net/core/filter.c b/net/core/filter.c
30123 -index 5310d5e..01f885e 100644
30124 ---- a/net/core/filter.c
30125 -+++ b/net/core/filter.c
30126 -@@ -1121,7 +1121,11 @@ do_pass:
30127 - break;
30128 -
30129 - default:
30130 -- goto err;
30131 -+ WARN(1, KERN_ALERT "Unknown sock filter code:%u jt:%u tf:%u k:%u\n",
30132 -+ fp->code, fp->jt, fp->jf, fp->k);
30133 -+ kfree(addrs);
30134 -+ BUG();
30135 -+ return -EINVAL;
30136 - }
30137 -
30138 - insn++;
30139 -@@ -1170,7 +1174,7 @@ static int check_load_and_stores(struct sock_filter *filter, int flen)
30140 - u16 *masks, memvalid = 0; /* one bit per cell, 16 cells */
30141 - int pc, ret = 0;
30142 -
30143 -- BUILD_BUG_ON(BPF_MEMWORDS > 16);
30144 -+ BUILD_BUG_ON(BPF_MEMWORDS != 16);
30145 - masks = kmalloc(flen * sizeof(*masks), GFP_KERNEL);
30146 - if (!masks)
30147 - return -ENOMEM;
30148 -@@ -1605,7 +1609,7 @@ int sk_unattached_filter_create(struct sk_filter **pfp,
30149 - if (!fp)
30150 - return -ENOMEM;
30151 + EXPORT_SYMBOL_GPL(sk_detach_filter);
30152 +
30153 +-int sk_get_filter(struct sock *sk, struct sock_filter __user *ubuf,
30154 +- unsigned int len)
30155 ++void sk_decode_filter(struct sock_filter *filt, struct sock_filter *to)
30156 ++{
30157 ++ static const u16 decodes[] = {
30158 ++ [BPF_S_ALU_ADD_K] = BPF_ALU|BPF_ADD|BPF_K,
30159 ++ [BPF_S_ALU_ADD_X] = BPF_ALU|BPF_ADD|BPF_X,
30160 ++ [BPF_S_ALU_SUB_K] = BPF_ALU|BPF_SUB|BPF_K,
30161 ++ [BPF_S_ALU_SUB_X] = BPF_ALU|BPF_SUB|BPF_X,
30162 ++ [BPF_S_ALU_MUL_K] = BPF_ALU|BPF_MUL|BPF_K,
30163 ++ [BPF_S_ALU_MUL_X] = BPF_ALU|BPF_MUL|BPF_X,
30164 ++ [BPF_S_ALU_DIV_X] = BPF_ALU|BPF_DIV|BPF_X,
30165 ++ [BPF_S_ALU_MOD_K] = BPF_ALU|BPF_MOD|BPF_K,
30166 ++ [BPF_S_ALU_MOD_X] = BPF_ALU|BPF_MOD|BPF_X,
30167 ++ [BPF_S_ALU_AND_K] = BPF_ALU|BPF_AND|BPF_K,
30168 ++ [BPF_S_ALU_AND_X] = BPF_ALU|BPF_AND|BPF_X,
30169 ++ [BPF_S_ALU_OR_K] = BPF_ALU|BPF_OR|BPF_K,
30170 ++ [BPF_S_ALU_OR_X] = BPF_ALU|BPF_OR|BPF_X,
30171 ++ [BPF_S_ALU_XOR_K] = BPF_ALU|BPF_XOR|BPF_K,
30172 ++ [BPF_S_ALU_XOR_X] = BPF_ALU|BPF_XOR|BPF_X,
30173 ++ [BPF_S_ALU_LSH_K] = BPF_ALU|BPF_LSH|BPF_K,
30174 ++ [BPF_S_ALU_LSH_X] = BPF_ALU|BPF_LSH|BPF_X,
30175 ++ [BPF_S_ALU_RSH_K] = BPF_ALU|BPF_RSH|BPF_K,
30176 ++ [BPF_S_ALU_RSH_X] = BPF_ALU|BPF_RSH|BPF_X,
30177 ++ [BPF_S_ALU_NEG] = BPF_ALU|BPF_NEG,
30178 ++ [BPF_S_LD_W_ABS] = BPF_LD|BPF_W|BPF_ABS,
30179 ++ [BPF_S_LD_H_ABS] = BPF_LD|BPF_H|BPF_ABS,
30180 ++ [BPF_S_LD_B_ABS] = BPF_LD|BPF_B|BPF_ABS,
30181 ++ [BPF_S_ANC_PROTOCOL] = BPF_LD|BPF_B|BPF_ABS,
30182 ++ [BPF_S_ANC_PKTTYPE] = BPF_LD|BPF_B|BPF_ABS,
30183 ++ [BPF_S_ANC_IFINDEX] = BPF_LD|BPF_B|BPF_ABS,
30184 ++ [BPF_S_ANC_NLATTR] = BPF_LD|BPF_B|BPF_ABS,
30185 ++ [BPF_S_ANC_NLATTR_NEST] = BPF_LD|BPF_B|BPF_ABS,
30186 ++ [BPF_S_ANC_MARK] = BPF_LD|BPF_B|BPF_ABS,
30187 ++ [BPF_S_ANC_QUEUE] = BPF_LD|BPF_B|BPF_ABS,
30188 ++ [BPF_S_ANC_HATYPE] = BPF_LD|BPF_B|BPF_ABS,
30189 ++ [BPF_S_ANC_RXHASH] = BPF_LD|BPF_B|BPF_ABS,
30190 ++ [BPF_S_ANC_CPU] = BPF_LD|BPF_B|BPF_ABS,
30191 ++ [BPF_S_ANC_ALU_XOR_X] = BPF_LD|BPF_B|BPF_ABS,
30192 ++ [BPF_S_ANC_SECCOMP_LD_W] = BPF_LD|BPF_B|BPF_ABS,
30193 ++ [BPF_S_ANC_VLAN_TAG] = BPF_LD|BPF_B|BPF_ABS,
30194 ++ [BPF_S_ANC_VLAN_TAG_PRESENT] = BPF_LD|BPF_B|BPF_ABS,
30195 ++ [BPF_S_ANC_PAY_OFFSET] = BPF_LD|BPF_B|BPF_ABS,
30196 ++ [BPF_S_LD_W_LEN] = BPF_LD|BPF_W|BPF_LEN,
30197 ++ [BPF_S_LD_W_IND] = BPF_LD|BPF_W|BPF_IND,
30198 ++ [BPF_S_LD_H_IND] = BPF_LD|BPF_H|BPF_IND,
30199 ++ [BPF_S_LD_B_IND] = BPF_LD|BPF_B|BPF_IND,
30200 ++ [BPF_S_LD_IMM] = BPF_LD|BPF_IMM,
30201 ++ [BPF_S_LDX_W_LEN] = BPF_LDX|BPF_W|BPF_LEN,
30202 ++ [BPF_S_LDX_B_MSH] = BPF_LDX|BPF_B|BPF_MSH,
30203 ++ [BPF_S_LDX_IMM] = BPF_LDX|BPF_IMM,
30204 ++ [BPF_S_MISC_TAX] = BPF_MISC|BPF_TAX,
30205 ++ [BPF_S_MISC_TXA] = BPF_MISC|BPF_TXA,
30206 ++ [BPF_S_RET_K] = BPF_RET|BPF_K,
30207 ++ [BPF_S_RET_A] = BPF_RET|BPF_A,
30208 ++ [BPF_S_ALU_DIV_K] = BPF_ALU|BPF_DIV|BPF_K,
30209 ++ [BPF_S_LD_MEM] = BPF_LD|BPF_MEM,
30210 ++ [BPF_S_LDX_MEM] = BPF_LDX|BPF_MEM,
30211 ++ [BPF_S_ST] = BPF_ST,
30212 ++ [BPF_S_STX] = BPF_STX,
30213 ++ [BPF_S_JMP_JA] = BPF_JMP|BPF_JA,
30214 ++ [BPF_S_JMP_JEQ_K] = BPF_JMP|BPF_JEQ|BPF_K,
30215 ++ [BPF_S_JMP_JEQ_X] = BPF_JMP|BPF_JEQ|BPF_X,
30216 ++ [BPF_S_JMP_JGE_K] = BPF_JMP|BPF_JGE|BPF_K,
30217 ++ [BPF_S_JMP_JGE_X] = BPF_JMP|BPF_JGE|BPF_X,
30218 ++ [BPF_S_JMP_JGT_K] = BPF_JMP|BPF_JGT|BPF_K,
30219 ++ [BPF_S_JMP_JGT_X] = BPF_JMP|BPF_JGT|BPF_X,
30220 ++ [BPF_S_JMP_JSET_K] = BPF_JMP|BPF_JSET|BPF_K,
30221 ++ [BPF_S_JMP_JSET_X] = BPF_JMP|BPF_JSET|BPF_X,
30222 ++ };
30223 ++ u16 code;
30224 ++
30225 ++ code = filt->code;
30226 ++
30227 ++ to->code = decodes[code];
30228 ++ to->jt = filt->jt;
30229 ++ to->jf = filt->jf;
30230 ++ to->k = filt->k;
30231 ++}
30232 ++
30233 ++int sk_get_filter(struct sock *sk, struct sock_filter __user *ubuf, unsigned int len)
30234 + {
30235 +- struct sock_fprog_kern *fprog;
30236 + struct sk_filter *filter;
30237 +- int ret = 0;
30238 ++ int i, ret;
30239 +
30240 + lock_sock(sk);
30241 + filter = rcu_dereference_protected(sk->sk_filter,
30242 +- sock_owned_by_user(sk));
30243 ++ sock_owned_by_user(sk));
30244 ++ ret = 0;
30245 + if (!filter)
30246 + goto out;
30247 +-
30248 +- /* We're copying the filter that has been originally attached,
30249 +- * so no conversion/decode needed anymore.
30250 +- */
30251 +- fprog = filter->orig_prog;
30252 +-
30253 +- ret = fprog->len;
30254 ++ ret = filter->len;
30255 + if (!len)
30256 +- /* User space only enquires number of filter blocks. */
30257 + goto out;
30258 +-
30259 + ret = -EINVAL;
30260 +- if (len < fprog->len)
30261 ++ if (len < filter->len)
30262 + goto out;
30263
30264 -- memcpy(fp->insns, fprog->filter, fsize);
30265 -+ memcpy(fp->insns, (void __force_kernel *)fprog->filter, fsize);
30266 + ret = -EFAULT;
30267 +- if (copy_to_user(ubuf, fprog->filter, sk_filter_proglen(fprog)))
30268 +- goto out;
30269 ++ for (i = 0; i < filter->len; i++) {
30270 ++ struct sock_filter fb;
30271
30272 - atomic_set(&fp->refcnt, 1);
30273 - fp->len = fprog->len;
30274 +- /* Instead of bytes, the API requests to return the number
30275 +- * of filter blocks.
30276 +- */
30277 +- ret = fprog->len;
30278 ++ sk_decode_filter(&filter->insns[i], &fb);
30279 ++ if (copy_to_user(&ubuf[i], &fb, sizeof(fb)))
30280 ++ goto out;
30281 ++ }
30282 ++
30283 ++ ret = filter->len;
30284 + out:
30285 + release_sock(sk);
30286 + return ret;
30287 diff --git a/net/core/flow.c b/net/core/flow.c
30288 index a0348fd..6951c76 100644
30289 --- a/net/core/flow.c
30290 @@ -98881,7 +106929,7 @@ index a0348fd..6951c76 100644
30291 fle->object = flo;
30292 else
30293 diff --git a/net/core/iovec.c b/net/core/iovec.c
30294 -index 26dc006..89e838e 100644
30295 +index e1ec45a..e5c6f16 100644
30296 --- a/net/core/iovec.c
30297 +++ b/net/core/iovec.c
30298 @@ -42,7 +42,7 @@ int verify_iovec(struct msghdr *m, struct iovec *iov, struct sockaddr_storage *a
30299 @@ -98903,7 +106951,7 @@ index 26dc006..89e838e 100644
30300
30301 m->msg_iov = iov;
30302 diff --git a/net/core/neighbour.c b/net/core/neighbour.c
30303 -index 32d872e..487e769 100644
30304 +index ef31fef..8be66d9 100644
30305 --- a/net/core/neighbour.c
30306 +++ b/net/core/neighbour.c
30307 @@ -2825,7 +2825,7 @@ static int proc_unres_qlen(struct ctl_table *ctl, int write,
30308 @@ -98924,23 +106972,6 @@ index 32d872e..487e769 100644
30309 int ret;
30310
30311 tmp.extra1 = &zero;
30312 -@@ -3059,11 +3059,12 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
30313 - memset(&t->neigh_vars[NEIGH_VAR_GC_INTERVAL], 0,
30314 - sizeof(t->neigh_vars[NEIGH_VAR_GC_INTERVAL]));
30315 - } else {
30316 -+ struct neigh_table *ntable = container_of(p, struct neigh_table, parms);
30317 - dev_name_source = "default";
30318 -- t->neigh_vars[NEIGH_VAR_GC_INTERVAL].data = (int *)(p + 1);
30319 -- t->neigh_vars[NEIGH_VAR_GC_THRESH1].data = (int *)(p + 1) + 1;
30320 -- t->neigh_vars[NEIGH_VAR_GC_THRESH2].data = (int *)(p + 1) + 2;
30321 -- t->neigh_vars[NEIGH_VAR_GC_THRESH3].data = (int *)(p + 1) + 3;
30322 -+ t->neigh_vars[NEIGH_VAR_GC_INTERVAL].data = &ntable->gc_interval;
30323 -+ t->neigh_vars[NEIGH_VAR_GC_THRESH1].data = &ntable->gc_thresh1;
30324 -+ t->neigh_vars[NEIGH_VAR_GC_THRESH2].data = &ntable->gc_thresh2;
30325 -+ t->neigh_vars[NEIGH_VAR_GC_THRESH3].data = &ntable->gc_thresh3;
30326 - }
30327 -
30328 - if (handler) {
30329 diff --git a/net/core/net-procfs.c b/net/core/net-procfs.c
30330 index 2bf8329..2eb1423 100644
30331 --- a/net/core/net-procfs.c
30332 @@ -99006,7 +107037,7 @@ index 1cac29e..fb482f3 100644
30333 static DEVICE_ATTR_RO(carrier_changes);
30334
30335 diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
30336 -index 7c8ffd9..0cb3687 100644
30337 +index 85b6269..fc77ea0 100644
30338 --- a/net/core/net_namespace.c
30339 +++ b/net/core/net_namespace.c
30340 @@ -443,7 +443,7 @@ static int __register_pernet_operations(struct list_head *list,
30341 @@ -99068,7 +107099,7 @@ index e33937f..b2b4981 100644
30342 iph->ttl = 64;
30343 iph->protocol = IPPROTO_UDP;
30344 diff --git a/net/core/pktgen.c b/net/core/pktgen.c
30345 -index 0304f98..ddfead6 100644
30346 +index fc17a9d..d4a3d88 100644
30347 --- a/net/core/pktgen.c
30348 +++ b/net/core/pktgen.c
30349 @@ -3725,7 +3725,7 @@ static int __net_init pg_net_init(struct net *net)
30350 @@ -99080,8 +107111,155 @@ index 0304f98..ddfead6 100644
30351 if (!pn->proc_dir) {
30352 pr_warn("cannot create /proc/net/%s\n", PG_PROC_DIR);
30353 return -ENODEV;
30354 +diff --git a/net/core/ptp_classifier.c b/net/core/ptp_classifier.c
30355 +deleted file mode 100644
30356 +index d3027a7..0000000
30357 +--- a/net/core/ptp_classifier.c
30358 ++++ /dev/null
30359 +@@ -1,141 +0,0 @@
30360 +-/* PTP classifier
30361 +- *
30362 +- * This program is free software; you can redistribute it and/or
30363 +- * modify it under the terms of version 2 of the GNU General Public
30364 +- * License as published by the Free Software Foundation.
30365 +- *
30366 +- * This program is distributed in the hope that it will be useful, but
30367 +- * WITHOUT ANY WARRANTY; without even the implied warranty of
30368 +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
30369 +- * General Public License for more details.
30370 +- */
30371 +-
30372 +-/* The below program is the bpf_asm (tools/net/) representation of
30373 +- * the opcode array in the ptp_filter structure.
30374 +- *
30375 +- * For convenience, this can easily be altered and reviewed with
30376 +- * bpf_asm and bpf_dbg, e.g. `./bpf_asm -c prog` where prog is a
30377 +- * simple file containing the below program:
30378 +- *
30379 +- * ldh [12] ; load ethertype
30380 +- *
30381 +- * ; PTP over UDP over IPv4 over Ethernet
30382 +- * test_ipv4:
30383 +- * jneq #0x800, test_ipv6 ; ETH_P_IP ?
30384 +- * ldb [23] ; load proto
30385 +- * jneq #17, drop_ipv4 ; IPPROTO_UDP ?
30386 +- * ldh [20] ; load frag offset field
30387 +- * jset #0x1fff, drop_ipv4 ; don't allow fragments
30388 +- * ldxb 4*([14]&0xf) ; load IP header len
30389 +- * ldh [x + 16] ; load UDP dst port
30390 +- * jneq #319, drop_ipv4 ; is port PTP_EV_PORT ?
30391 +- * ldh [x + 22] ; load payload
30392 +- * and #0xf ; mask PTP_CLASS_VMASK
30393 +- * or #0x10 ; PTP_CLASS_IPV4
30394 +- * ret a ; return PTP class
30395 +- * drop_ipv4: ret #0x0 ; PTP_CLASS_NONE
30396 +- *
30397 +- * ; PTP over UDP over IPv6 over Ethernet
30398 +- * test_ipv6:
30399 +- * jneq #0x86dd, test_8021q ; ETH_P_IPV6 ?
30400 +- * ldb [20] ; load proto
30401 +- * jneq #17, drop_ipv6 ; IPPROTO_UDP ?
30402 +- * ldh [56] ; load UDP dst port
30403 +- * jneq #319, drop_ipv6 ; is port PTP_EV_PORT ?
30404 +- * ldh [62] ; load payload
30405 +- * and #0xf ; mask PTP_CLASS_VMASK
30406 +- * or #0x20 ; PTP_CLASS_IPV6
30407 +- * ret a ; return PTP class
30408 +- * drop_ipv6: ret #0x0 ; PTP_CLASS_NONE
30409 +- *
30410 +- * ; PTP over 802.1Q over Ethernet
30411 +- * test_8021q:
30412 +- * jneq #0x8100, test_ieee1588 ; ETH_P_8021Q ?
30413 +- * ldh [16] ; load inner type
30414 +- * jneq #0x88f7, drop_ieee1588 ; ETH_P_1588 ?
30415 +- * ldb [18] ; load payload
30416 +- * and #0x8 ; as we don't have ports here, test
30417 +- * jneq #0x0, drop_ieee1588 ; for PTP_GEN_BIT and drop these
30418 +- * ldh [18] ; reload payload
30419 +- * and #0xf ; mask PTP_CLASS_VMASK
30420 +- * or #0x40 ; PTP_CLASS_V2_VLAN
30421 +- * ret a ; return PTP class
30422 +- *
30423 +- * ; PTP over Ethernet
30424 +- * test_ieee1588:
30425 +- * jneq #0x88f7, drop_ieee1588 ; ETH_P_1588 ?
30426 +- * ldb [14] ; load payload
30427 +- * and #0x8 ; as we don't have ports here, test
30428 +- * jneq #0x0, drop_ieee1588 ; for PTP_GEN_BIT and drop these
30429 +- * ldh [14] ; reload payload
30430 +- * and #0xf ; mask PTP_CLASS_VMASK
30431 +- * or #0x30 ; PTP_CLASS_L2
30432 +- * ret a ; return PTP class
30433 +- * drop_ieee1588: ret #0x0 ; PTP_CLASS_NONE
30434 +- */
30435 +-
30436 +-#include <linux/skbuff.h>
30437 +-#include <linux/filter.h>
30438 +-#include <linux/ptp_classify.h>
30439 +-
30440 +-static struct sk_filter *ptp_insns __read_mostly;
30441 +-
30442 +-unsigned int ptp_classify_raw(const struct sk_buff *skb)
30443 +-{
30444 +- return SK_RUN_FILTER(ptp_insns, skb);
30445 +-}
30446 +-EXPORT_SYMBOL_GPL(ptp_classify_raw);
30447 +-
30448 +-void __init ptp_classifier_init(void)
30449 +-{
30450 +- static struct sock_filter ptp_filter[] __initdata = {
30451 +- { 0x28, 0, 0, 0x0000000c },
30452 +- { 0x15, 0, 12, 0x00000800 },
30453 +- { 0x30, 0, 0, 0x00000017 },
30454 +- { 0x15, 0, 9, 0x00000011 },
30455 +- { 0x28, 0, 0, 0x00000014 },
30456 +- { 0x45, 7, 0, 0x00001fff },
30457 +- { 0xb1, 0, 0, 0x0000000e },
30458 +- { 0x48, 0, 0, 0x00000010 },
30459 +- { 0x15, 0, 4, 0x0000013f },
30460 +- { 0x48, 0, 0, 0x00000016 },
30461 +- { 0x54, 0, 0, 0x0000000f },
30462 +- { 0x44, 0, 0, 0x00000010 },
30463 +- { 0x16, 0, 0, 0x00000000 },
30464 +- { 0x06, 0, 0, 0x00000000 },
30465 +- { 0x15, 0, 9, 0x000086dd },
30466 +- { 0x30, 0, 0, 0x00000014 },
30467 +- { 0x15, 0, 6, 0x00000011 },
30468 +- { 0x28, 0, 0, 0x00000038 },
30469 +- { 0x15, 0, 4, 0x0000013f },
30470 +- { 0x28, 0, 0, 0x0000003e },
30471 +- { 0x54, 0, 0, 0x0000000f },
30472 +- { 0x44, 0, 0, 0x00000020 },
30473 +- { 0x16, 0, 0, 0x00000000 },
30474 +- { 0x06, 0, 0, 0x00000000 },
30475 +- { 0x15, 0, 9, 0x00008100 },
30476 +- { 0x28, 0, 0, 0x00000010 },
30477 +- { 0x15, 0, 15, 0x000088f7 },
30478 +- { 0x30, 0, 0, 0x00000012 },
30479 +- { 0x54, 0, 0, 0x00000008 },
30480 +- { 0x15, 0, 12, 0x00000000 },
30481 +- { 0x28, 0, 0, 0x00000012 },
30482 +- { 0x54, 0, 0, 0x0000000f },
30483 +- { 0x44, 0, 0, 0x00000040 },
30484 +- { 0x16, 0, 0, 0x00000000 },
30485 +- { 0x15, 0, 7, 0x000088f7 },
30486 +- { 0x30, 0, 0, 0x0000000e },
30487 +- { 0x54, 0, 0, 0x00000008 },
30488 +- { 0x15, 0, 4, 0x00000000 },
30489 +- { 0x28, 0, 0, 0x0000000e },
30490 +- { 0x54, 0, 0, 0x0000000f },
30491 +- { 0x44, 0, 0, 0x00000030 },
30492 +- { 0x16, 0, 0, 0x00000000 },
30493 +- { 0x06, 0, 0, 0x00000000 },
30494 +- };
30495 +- struct sock_fprog_kern ptp_prog = {
30496 +- .len = ARRAY_SIZE(ptp_filter), .filter = ptp_filter,
30497 +- };
30498 +-
30499 +- BUG_ON(sk_unattached_filter_create(&ptp_insns, &ptp_prog));
30500 +-}
30501 diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
30502 -index 1999ed8..1e6e58a 100644
30503 +index 1063996..0729c19 100644
30504 --- a/net/core/rtnetlink.c
30505 +++ b/net/core/rtnetlink.c
30506 @@ -58,7 +58,7 @@ struct rtnl_link {
30507 @@ -99169,10 +107347,10 @@ index b442e7e..6f5b5a2 100644
30508 {
30509 struct socket *sock;
30510 diff --git a/net/core/skbuff.c b/net/core/skbuff.c
30511 -index 6ab5f77..6fd2a81 100644
30512 +index 58ff88e..af9b458 100644
30513 --- a/net/core/skbuff.c
30514 +++ b/net/core/skbuff.c
30515 -@@ -2003,7 +2003,7 @@ EXPORT_SYMBOL(__skb_checksum);
30516 +@@ -2010,7 +2010,7 @@ EXPORT_SYMBOL(__skb_checksum);
30517 __wsum skb_checksum(const struct sk_buff *skb, int offset,
30518 int len, __wsum csum)
30519 {
30520 @@ -99181,7 +107359,7 @@ index 6ab5f77..6fd2a81 100644
30521 .update = csum_partial_ext,
30522 .combine = csum_block_add_ext,
30523 };
30524 -@@ -3221,13 +3221,15 @@ void __init skb_init(void)
30525 +@@ -3233,13 +3233,15 @@ void __init skb_init(void)
30526 skbuff_head_cache = kmem_cache_create("skbuff_head_cache",
30527 sizeof(struct sk_buff),
30528 0,
30529 @@ -99200,7 +107378,7 @@ index 6ab5f77..6fd2a81 100644
30530 }
30531
30532 diff --git a/net/core/sock.c b/net/core/sock.c
30533 -index 664ee42..aaf9e6e 100644
30534 +index 026e01f..f54f908 100644
30535 --- a/net/core/sock.c
30536 +++ b/net/core/sock.c
30537 @@ -442,7 +442,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
30538 @@ -99315,7 +107493,7 @@ index 664ee42..aaf9e6e 100644
30539 msg->msg_flags |= MSG_ERRQUEUE;
30540 err = copied;
30541 diff --git a/net/core/sock_diag.c b/net/core/sock_diag.c
30542 -index a4216a4..1c07687 100644
30543 +index a4216a4..773e3d7 100644
30544 --- a/net/core/sock_diag.c
30545 +++ b/net/core/sock_diag.c
30546 @@ -9,26 +9,33 @@
30547 @@ -99353,7 +107531,52 @@ index a4216a4..1c07687 100644
30548 }
30549 EXPORT_SYMBOL_GPL(sock_diag_save_cookie);
30550
30551 -@@ -110,8 +117,11 @@ int sock_diag_register(const struct sock_diag_handler *hndl)
30552 +@@ -52,10 +59,9 @@ EXPORT_SYMBOL_GPL(sock_diag_put_meminfo);
30553 + int sock_diag_put_filterinfo(bool may_report_filterinfo, struct sock *sk,
30554 + struct sk_buff *skb, int attrtype)
30555 + {
30556 +- struct sock_fprog_kern *fprog;
30557 +- struct sk_filter *filter;
30558 + struct nlattr *attr;
30559 +- unsigned int flen;
30560 ++ struct sk_filter *filter;
30561 ++ unsigned int len;
30562 + int err = 0;
30563 +
30564 + if (!may_report_filterinfo) {
30565 +@@ -64,20 +70,24 @@ int sock_diag_put_filterinfo(bool may_report_filterinfo, struct sock *sk,
30566 + }
30567 +
30568 + rcu_read_lock();
30569 ++
30570 + filter = rcu_dereference(sk->sk_filter);
30571 +- if (!filter)
30572 +- goto out;
30573 ++ len = filter ? filter->len * sizeof(struct sock_filter) : 0;
30574 +
30575 +- fprog = filter->orig_prog;
30576 +- flen = sk_filter_proglen(fprog);
30577 +-
30578 +- attr = nla_reserve(skb, attrtype, flen);
30579 ++ attr = nla_reserve(skb, attrtype, len);
30580 + if (attr == NULL) {
30581 + err = -EMSGSIZE;
30582 + goto out;
30583 + }
30584 +
30585 +- memcpy(nla_data(attr), fprog->filter, flen);
30586 ++ if (filter) {
30587 ++ struct sock_filter *fb = (struct sock_filter *)nla_data(attr);
30588 ++ int i;
30589 ++
30590 ++ for (i = 0; i < filter->len; i++, fb++)
30591 ++ sk_decode_filter(&filter->insns[i], fb);
30592 ++ }
30593 ++
30594 + out:
30595 + rcu_read_unlock();
30596 + return err;
30597 +@@ -110,8 +120,11 @@ int sock_diag_register(const struct sock_diag_handler *hndl)
30598 mutex_lock(&sock_diag_table_mutex);
30599 if (sock_diag_handlers[hndl->family])
30600 err = -EBUSY;
30601 @@ -99366,7 +107589,7 @@ index a4216a4..1c07687 100644
30602 mutex_unlock(&sock_diag_table_mutex);
30603
30604 return err;
30605 -@@ -127,7 +137,9 @@ void sock_diag_unregister(const struct sock_diag_handler *hnld)
30606 +@@ -127,7 +140,9 @@ void sock_diag_unregister(const struct sock_diag_handler *hnld)
30607
30608 mutex_lock(&sock_diag_table_mutex);
30609 BUG_ON(sock_diag_handlers[family] != hnld);
30610 @@ -99445,8 +107668,70 @@ index cf9cd13..8b56af3 100644
30611 .init = sysctl_core_net_init,
30612 .exit = sysctl_core_net_exit,
30613 };
30614 +diff --git a/net/core/timestamping.c b/net/core/timestamping.c
30615 +index 6521dfd..661b5a4 100644
30616 +--- a/net/core/timestamping.c
30617 ++++ b/net/core/timestamping.c
30618 +@@ -23,11 +23,16 @@
30619 + #include <linux/skbuff.h>
30620 + #include <linux/export.h>
30621 +
30622 ++static struct sock_filter ptp_filter[] = {
30623 ++ PTP_FILTER
30624 ++};
30625 ++
30626 + static unsigned int classify(const struct sk_buff *skb)
30627 + {
30628 +- if (likely(skb->dev && skb->dev->phydev &&
30629 ++ if (likely(skb->dev &&
30630 ++ skb->dev->phydev &&
30631 + skb->dev->phydev->drv))
30632 +- return ptp_classify_raw(skb);
30633 ++ return sk_run_filter(skb, ptp_filter);
30634 + else
30635 + return PTP_CLASS_NONE;
30636 + }
30637 +@@ -55,13 +60,11 @@ void skb_clone_tx_timestamp(struct sk_buff *skb)
30638 + if (likely(phydev->drv->txtstamp)) {
30639 + if (!atomic_inc_not_zero(&sk->sk_refcnt))
30640 + return;
30641 +-
30642 + clone = skb_clone(skb, GFP_ATOMIC);
30643 + if (!clone) {
30644 + sock_put(sk);
30645 + return;
30646 + }
30647 +-
30648 + clone->sk = sk;
30649 + phydev->drv->txtstamp(phydev, clone, type);
30650 + }
30651 +@@ -86,15 +89,12 @@ void skb_complete_tx_timestamp(struct sk_buff *skb,
30652 + }
30653 +
30654 + *skb_hwtstamps(skb) = *hwtstamps;
30655 +-
30656 + serr = SKB_EXT_ERR(skb);
30657 + memset(serr, 0, sizeof(*serr));
30658 + serr->ee.ee_errno = ENOMSG;
30659 + serr->ee.ee_origin = SO_EE_ORIGIN_TIMESTAMPING;
30660 + skb->sk = NULL;
30661 +-
30662 + err = sock_queue_err_skb(sk, skb);
30663 +-
30664 + sock_put(sk);
30665 + if (err)
30666 + kfree_skb(skb);
30667 +@@ -132,3 +132,8 @@ bool skb_defer_rx_timestamp(struct sk_buff *skb)
30668 + return false;
30669 + }
30670 + EXPORT_SYMBOL_GPL(skb_defer_rx_timestamp);
30671 ++
30672 ++void __init skb_timestamping_init(void)
30673 ++{
30674 ++ BUG_ON(sk_chk_filter(ptp_filter, ARRAY_SIZE(ptp_filter)));
30675 ++}
30676 diff --git a/net/decnet/af_decnet.c b/net/decnet/af_decnet.c
30677 -index 4c04848..f575934 100644
30678 +index ae011b4..d2d18bf 100644
30679 --- a/net/decnet/af_decnet.c
30680 +++ b/net/decnet/af_decnet.c
30681 @@ -465,6 +465,7 @@ static struct proto dn_proto = {
30682 @@ -99493,16 +107778,18 @@ index 5325b54..a0d4d69 100644
30683
30684 *lenp = len;
30685 diff --git a/net/ieee802154/reassembly.c b/net/ieee802154/reassembly.c
30686 -index ef2d543..5b9b73f 100644
30687 +index 6f1428c..9586b83 100644
30688 --- a/net/ieee802154/reassembly.c
30689 +++ b/net/ieee802154/reassembly.c
30690 -@@ -434,12 +434,11 @@ static struct ctl_table lowpan_frags_ctl_table[] = {
30691 +@@ -438,14 +438,13 @@ static struct ctl_table lowpan_frags_ctl_table[] = {
30692
30693 static int __net_init lowpan_frags_ns_sysctl_register(struct net *net)
30694 {
30695 - struct ctl_table *table;
30696 + ctl_table_no_const *table = NULL;
30697 struct ctl_table_header *hdr;
30698 + struct netns_ieee802154_lowpan *ieee802154_lowpan =
30699 + net_ieee802154_lowpan(net);
30700
30701 - table = lowpan_frags_ns_ctl_table;
30702 if (!net_eq(net, &init_net)) {
30703 @@ -99511,7 +107798,7 @@ index ef2d543..5b9b73f 100644
30704 GFP_KERNEL);
30705 if (table == NULL)
30706 goto err_alloc;
30707 -@@ -452,9 +451,9 @@ static int __net_init lowpan_frags_ns_sysctl_register(struct net *net)
30708 +@@ -458,9 +457,9 @@ static int __net_init lowpan_frags_ns_sysctl_register(struct net *net)
30709 /* Don't export sysctls to unprivileged users */
30710 if (net->user_ns != &init_user_ns)
30711 table[0].procname = NULL;
30712 @@ -99524,7 +107811,7 @@ index ef2d543..5b9b73f 100644
30713 if (hdr == NULL)
30714 goto err_reg;
30715
30716 -@@ -462,8 +461,7 @@ static int __net_init lowpan_frags_ns_sysctl_register(struct net *net)
30717 +@@ -468,8 +467,7 @@ static int __net_init lowpan_frags_ns_sysctl_register(struct net *net)
30718 return 0;
30719
30720 err_reg:
30721 @@ -99534,39 +107821,11 @@ index ef2d543..5b9b73f 100644
30722 err_alloc:
30723 return -ENOMEM;
30724 }
30725 -diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
30726 -index 6af8ab6..3831cb8 100644
30727 ---- a/net/ipv4/af_inet.c
30728 -+++ b/net/ipv4/af_inet.c
30729 -@@ -1739,13 +1739,9 @@ static int __init inet_init(void)
30730 -
30731 - BUILD_BUG_ON(sizeof(struct inet_skb_parm) > FIELD_SIZEOF(struct sk_buff, cb));
30732 -
30733 -- sysctl_local_reserved_ports = kzalloc(65536 / 8, GFP_KERNEL);
30734 -- if (!sysctl_local_reserved_ports)
30735 -- goto out;
30736 --
30737 - rc = proto_register(&tcp_prot, 1);
30738 - if (rc)
30739 -- goto out_free_reserved_ports;
30740 -+ goto out;
30741 -
30742 - rc = proto_register(&udp_prot, 1);
30743 - if (rc)
30744 -@@ -1855,8 +1851,6 @@ out_unregister_udp_proto:
30745 - proto_unregister(&udp_prot);
30746 - out_unregister_tcp_proto:
30747 - proto_unregister(&tcp_prot);
30748 --out_free_reserved_ports:
30749 -- kfree(sysctl_local_reserved_ports);
30750 - goto out;
30751 - }
30752 -
30753 diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
30754 -index bdbf68b..deb4759 100644
30755 +index e944937..368fe78 100644
30756 --- a/net/ipv4/devinet.c
30757 +++ b/net/ipv4/devinet.c
30758 -@@ -1543,7 +1543,7 @@ static int inet_dump_ifaddr(struct sk_buff *skb, struct netlink_callback *cb)
30759 +@@ -1540,7 +1540,7 @@ static int inet_dump_ifaddr(struct sk_buff *skb, struct netlink_callback *cb)
30760 idx = 0;
30761 head = &net->dev_index_head[h];
30762 rcu_read_lock();
30763 @@ -99575,7 +107834,7 @@ index bdbf68b..deb4759 100644
30764 net->dev_base_seq;
30765 hlist_for_each_entry_rcu(dev, head, index_hlist) {
30766 if (idx < s_idx)
30767 -@@ -1861,7 +1861,7 @@ static int inet_netconf_dump_devconf(struct sk_buff *skb,
30768 +@@ -1858,7 +1858,7 @@ static int inet_netconf_dump_devconf(struct sk_buff *skb,
30769 idx = 0;
30770 head = &net->dev_index_head[h];
30771 rcu_read_lock();
30772 @@ -99584,7 +107843,7 @@ index bdbf68b..deb4759 100644
30773 net->dev_base_seq;
30774 hlist_for_each_entry_rcu(dev, head, index_hlist) {
30775 if (idx < s_idx)
30776 -@@ -2096,7 +2096,7 @@ static int ipv4_doint_and_flush(struct ctl_table *ctl, int write,
30777 +@@ -2093,7 +2093,7 @@ static int ipv4_doint_and_flush(struct ctl_table *ctl, int write,
30778 #define DEVINET_SYSCTL_FLUSHING_ENTRY(attr, name) \
30779 DEVINET_SYSCTL_COMPLEX_ENTRY(attr, name, ipv4_doint_and_flush)
30780
30781 @@ -99593,7 +107852,7 @@ index bdbf68b..deb4759 100644
30782 struct ctl_table_header *sysctl_header;
30783 struct ctl_table devinet_vars[__IPV4_DEVCONF_MAX];
30784 } devinet_sysctl = {
30785 -@@ -2218,7 +2218,7 @@ static __net_init int devinet_init_net(struct net *net)
30786 +@@ -2215,7 +2215,7 @@ static __net_init int devinet_init_net(struct net *net)
30787 int err;
30788 struct ipv4_devconf *all, *dflt;
30789 #ifdef CONFIG_SYSCTL
30790 @@ -99602,7 +107861,7 @@ index bdbf68b..deb4759 100644
30791 struct ctl_table_header *forw_hdr;
30792 #endif
30793
30794 -@@ -2236,7 +2236,7 @@ static __net_init int devinet_init_net(struct net *net)
30795 +@@ -2233,7 +2233,7 @@ static __net_init int devinet_init_net(struct net *net)
30796 goto err_alloc_dflt;
30797
30798 #ifdef CONFIG_SYSCTL
30799 @@ -99611,7 +107870,7 @@ index bdbf68b..deb4759 100644
30800 if (tbl == NULL)
30801 goto err_alloc_ctl;
30802
30803 -@@ -2256,7 +2256,10 @@ static __net_init int devinet_init_net(struct net *net)
30804 +@@ -2253,7 +2253,10 @@ static __net_init int devinet_init_net(struct net *net)
30805 goto err_reg_dflt;
30806
30807 err = -ENOMEM;
30808 @@ -99623,7 +107882,7 @@ index bdbf68b..deb4759 100644
30809 if (forw_hdr == NULL)
30810 goto err_reg_ctl;
30811 net->ipv4.forw_hdr = forw_hdr;
30812 -@@ -2272,8 +2275,7 @@ err_reg_ctl:
30813 +@@ -2269,8 +2272,7 @@ err_reg_ctl:
30814 err_reg_dflt:
30815 __devinet_sysctl_unregister(all);
30816 err_reg_all:
30817 @@ -99674,21 +107933,8 @@ index b10cd43a..22327f9 100644
30818
30819 return nh->nh_saddr;
30820 }
30821 -diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
30822 -index a56b8e6..5be2a30 100644
30823 ---- a/net/ipv4/inet_connection_sock.c
30824 -+++ b/net/ipv4/inet_connection_sock.c
30825 -@@ -29,7 +29,7 @@ const char inet_csk_timer_bug_msg[] = "inet_csk BUG: unknown timer value\n";
30826 - EXPORT_SYMBOL(inet_csk_timer_bug_msg);
30827 - #endif
30828 -
30829 --unsigned long *sysctl_local_reserved_ports;
30830 -+unsigned long sysctl_local_reserved_ports[65536 / 8 / sizeof(unsigned long)];
30831 - EXPORT_SYMBOL(sysctl_local_reserved_ports);
30832 -
30833 - void inet_get_local_port_range(struct net *net, int *low, int *high)
30834 diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c
30835 -index 8b9cf27..0d8d592 100644
30836 +index 43116e8..e3e6159 100644
30837 --- a/net/ipv4/inet_hashtables.c
30838 +++ b/net/ipv4/inet_hashtables.c
30839 @@ -18,6 +18,7 @@
30840 @@ -99718,7 +107964,7 @@ index 8b9cf27..0d8d592 100644
30841 inet_twsk_deschedule(tw, death_row);
30842 while (twrefcnt) {
30843 diff --git a/net/ipv4/inetpeer.c b/net/ipv4/inetpeer.c
30844 -index bf2cb4a..d83ba8a 100644
30845 +index bd5f592..e80e605 100644
30846 --- a/net/ipv4/inetpeer.c
30847 +++ b/net/ipv4/inetpeer.c
30848 @@ -482,7 +482,7 @@ relookup:
30849 @@ -99782,7 +108028,7 @@ index ed32313..3762abe 100644
30850 return -ENOMEM;
30851 }
30852 diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
30853 -index 94213c8..8bdb342 100644
30854 +index 9b84254..c776611 100644
30855 --- a/net/ipv4/ip_gre.c
30856 +++ b/net/ipv4/ip_gre.c
30857 @@ -115,7 +115,7 @@ static bool log_ecn_error = true;
30858 @@ -99794,7 +108040,7 @@ index 94213c8..8bdb342 100644
30859 static int ipgre_tunnel_init(struct net_device *dev);
30860
30861 static int ipgre_net_id __read_mostly;
30862 -@@ -732,7 +732,7 @@ static const struct nla_policy ipgre_policy[IFLA_GRE_MAX + 1] = {
30863 +@@ -733,7 +733,7 @@ static const struct nla_policy ipgre_policy[IFLA_GRE_MAX + 1] = {
30864 [IFLA_GRE_PMTUDISC] = { .type = NLA_U8 },
30865 };
30866
30867 @@ -99803,7 +108049,7 @@ index 94213c8..8bdb342 100644
30868 .kind = "gre",
30869 .maxtype = IFLA_GRE_MAX,
30870 .policy = ipgre_policy,
30871 -@@ -746,7 +746,7 @@ static struct rtnl_link_ops ipgre_link_ops __read_mostly = {
30872 +@@ -747,7 +747,7 @@ static struct rtnl_link_ops ipgre_link_ops __read_mostly = {
30873 .fill_info = ipgre_fill_info,
30874 };
30875
30876 @@ -99836,7 +108082,7 @@ index 64741b9..6f334a2 100644
30877 msg.msg_flags = flags;
30878
30879 diff --git a/net/ipv4/ip_vti.c b/net/ipv4/ip_vti.c
30880 -index 13ef00f..8ffca25 100644
30881 +index b8960f3..0f025db 100644
30882 --- a/net/ipv4/ip_vti.c
30883 +++ b/net/ipv4/ip_vti.c
30884 @@ -45,7 +45,7 @@
30885 @@ -99848,7 +108094,7 @@ index 13ef00f..8ffca25 100644
30886
30887 static int vti_net_id __read_mostly;
30888 static int vti_tunnel_init(struct net_device *dev);
30889 -@@ -513,7 +513,7 @@ static const struct nla_policy vti_policy[IFLA_VTI_MAX + 1] = {
30890 +@@ -519,7 +519,7 @@ static const struct nla_policy vti_policy[IFLA_VTI_MAX + 1] = {
30891 [IFLA_VTI_REMOTE] = { .len = FIELD_SIZEOF(struct iphdr, daddr) },
30892 };
30893
30894 @@ -100022,7 +108268,7 @@ index 2510c02..cfb34fa 100644
30895 pr_err("Unable to proc dir entry\n");
30896 return -ENOMEM;
30897 diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c
30898 -index 044a0dd..e0c1971 100644
30899 +index 044a0dd..3399751 100644
30900 --- a/net/ipv4/ping.c
30901 +++ b/net/ipv4/ping.c
30902 @@ -59,7 +59,7 @@ struct ping_table {
30903 @@ -100061,28 +108307,7 @@ index 044a0dd..e0c1971 100644
30904 info, (u8 *)icmph);
30905 #endif
30906 }
30907 -@@ -844,6 +844,8 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
30908 - {
30909 - struct inet_sock *isk = inet_sk(sk);
30910 - int family = sk->sk_family;
30911 -+ struct sockaddr_in *sin;
30912 -+ struct sockaddr_in6 *sin6;
30913 - struct sk_buff *skb;
30914 - int copied, err;
30915 -
30916 -@@ -853,12 +855,19 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
30917 - if (flags & MSG_OOB)
30918 - goto out;
30919 -
30920 -+ if (addr_len) {
30921 -+ if (family == AF_INET)
30922 -+ *addr_len = sizeof(*sin);
30923 -+ else if (family == AF_INET6 && addr_len)
30924 -+ *addr_len = sizeof(*sin6);
30925 -+ }
30926 -+
30927 - if (flags & MSG_ERRQUEUE) {
30928 - if (family == AF_INET) {
30929 +@@ -858,7 +858,7 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
30930 return ip_recv_error(sk, msg, len, addr_len);
30931 #if IS_ENABLED(CONFIG_IPV6)
30932 } else if (family == AF_INET6) {
30933 @@ -100091,19 +108316,7 @@ index 044a0dd..e0c1971 100644
30934 addr_len);
30935 #endif
30936 }
30937 -@@ -890,7 +899,6 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
30938 - sin->sin_port = 0 /* skb->h.uh->source */;
30939 - sin->sin_addr.s_addr = ip_hdr(skb)->saddr;
30940 - memset(sin->sin_zero, 0, sizeof(sin->sin_zero));
30941 -- *addr_len = sizeof(*sin);
30942 - }
30943 -
30944 - if (isk->cmsg_flags)
30945 -@@ -912,14 +920,13 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
30946 - sin6->sin6_scope_id =
30947 - ipv6_iface_scope_id(&sin6->sin6_addr,
30948 - IP6CB(skb)->iif);
30949 -- *addr_len = sizeof(*sin6);
30950 +@@ -916,10 +916,10 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
30951 }
30952
30953 if (inet6_sk(sk)->rxopt.all)
30954 @@ -100116,7 +108329,7 @@ index 044a0dd..e0c1971 100644
30955 else if (skb->protocol == htons(ETH_P_IP) && isk->cmsg_flags)
30956 ip_cmsg_recv(msg, skb);
30957 #endif
30958 -@@ -1111,7 +1118,7 @@ static void ping_v4_format_sock(struct sock *sp, struct seq_file *f,
30959 +@@ -1111,7 +1111,7 @@ static void ping_v4_format_sock(struct sock *sp, struct seq_file *f,
30960 from_kuid_munged(seq_user_ns(f), sock_i_uid(sp)),
30961 0, sock_i_ino(sp),
30962 atomic_read(&sp->sk_refcnt), sp,
30963 @@ -100126,7 +108339,7 @@ index 044a0dd..e0c1971 100644
30964
30965 static int ping_v4_seq_show(struct seq_file *seq, void *v)
30966 diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c
30967 -index 2c65160..b54c00e 100644
30968 +index 2c65160..213ecdf 100644
30969 --- a/net/ipv4/raw.c
30970 +++ b/net/ipv4/raw.c
30971 @@ -311,7 +311,7 @@ static int raw_rcv_skb(struct sock *sk, struct sk_buff *skb)
30972 @@ -100138,25 +108351,7 @@ index 2c65160..b54c00e 100644
30973 kfree_skb(skb);
30974 return NET_RX_DROP;
30975 }
30976 -@@ -696,6 +696,9 @@ static int raw_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
30977 - if (flags & MSG_OOB)
30978 - goto out;
30979 -
30980 -+ if (addr_len)
30981 -+ *addr_len = sizeof(*sin);
30982 -+
30983 - if (flags & MSG_ERRQUEUE) {
30984 - err = ip_recv_error(sk, msg, len, addr_len);
30985 - goto out;
30986 -@@ -723,7 +726,6 @@ static int raw_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
30987 - sin->sin_addr.s_addr = ip_hdr(skb)->saddr;
30988 - sin->sin_port = 0;
30989 - memset(&sin->sin_zero, 0, sizeof(sin->sin_zero));
30990 -- *addr_len = sizeof(*sin);
30991 - }
30992 - if (inet->cmsg_flags)
30993 - ip_cmsg_recv(msg, skb);
30994 -@@ -748,16 +750,20 @@ static int raw_init(struct sock *sk)
30995 +@@ -748,16 +748,20 @@ static int raw_init(struct sock *sk)
30996
30997 static int raw_seticmpfilter(struct sock *sk, char __user *optval, int optlen)
30998 {
30999 @@ -100178,7 +108373,7 @@ index 2c65160..b54c00e 100644
31000
31001 if (get_user(len, optlen))
31002 goto out;
31003 -@@ -767,8 +773,8 @@ static int raw_geticmpfilter(struct sock *sk, char __user *optval, int __user *o
31004 +@@ -767,8 +771,8 @@ static int raw_geticmpfilter(struct sock *sk, char __user *optval, int __user *o
31005 if (len > sizeof(struct icmp_filter))
31006 len = sizeof(struct icmp_filter);
31007 ret = -EFAULT;
31008 @@ -100189,7 +108384,7 @@ index 2c65160..b54c00e 100644
31009 goto out;
31010 ret = 0;
31011 out: return ret;
31012 -@@ -997,7 +1003,7 @@ static void raw_sock_seq_show(struct seq_file *seq, struct sock *sp, int i)
31013 +@@ -997,7 +1001,7 @@ static void raw_sock_seq_show(struct seq_file *seq, struct sock *sp, int i)
31014 0, 0L, 0,
31015 from_kuid_munged(seq_user_ns(seq), sock_i_uid(sp)),
31016 0, sock_i_ino(sp),
31017 @@ -100199,7 +108394,7 @@ index 2c65160..b54c00e 100644
31018
31019 static int raw_seq_show(struct seq_file *seq, void *v)
31020 diff --git a/net/ipv4/route.c b/net/ipv4/route.c
31021 -index fd618d4..aae0ac9 100644
31022 +index 1901998..a9a850a 100644
31023 --- a/net/ipv4/route.c
31024 +++ b/net/ipv4/route.c
31025 @@ -228,7 +228,7 @@ static const struct seq_operations rt_cache_seq_ops = {
31026 @@ -100229,7 +108424,7 @@ index fd618d4..aae0ac9 100644
31027 }
31028
31029 static const struct file_operations rt_acct_proc_fops = {
31030 -@@ -459,7 +459,7 @@ static struct neighbour *ipv4_neigh_lookup(const struct dst_entry *dst,
31031 +@@ -459,11 +459,11 @@ static struct neighbour *ipv4_neigh_lookup(const struct dst_entry *dst,
31032
31033 #define IP_IDENTS_SZ 2048u
31034 struct ip_ident_bucket {
31035 @@ -100238,6 +108433,11 @@ index fd618d4..aae0ac9 100644
31036 u32 stamp32;
31037 };
31038
31039 +-static struct ip_ident_bucket *ip_idents __read_mostly;
31040 ++static struct ip_ident_bucket ip_idents[IP_IDENTS_SZ] __read_mostly;
31041 +
31042 + /* In order to protect privacy, we add a perturbation to identifiers
31043 + * if one generator is seldom used. This makes hard for an attacker
31044 @@ -479,7 +479,7 @@ u32 ip_idents_reserve(u32 hash, int segs)
31045 if (old != now && cmpxchg(&bucket->stamp32, old, now) == old)
31046 delta = prandom_u32_max(now - old);
31047 @@ -100247,7 +108447,7 @@ index fd618d4..aae0ac9 100644
31048 }
31049 EXPORT_SYMBOL(ip_idents_reserve);
31050
31051 -@@ -2618,34 +2618,34 @@ static struct ctl_table ipv4_route_flush_table[] = {
31052 +@@ -2625,34 +2625,34 @@ static struct ctl_table ipv4_route_flush_table[] = {
31053 .maxlen = sizeof(int),
31054 .mode = 0200,
31055 .proc_handler = ipv4_sysctl_rtcache_flush,
31056 @@ -100290,7 +108490,7 @@ index fd618d4..aae0ac9 100644
31057 err_dup:
31058 return -ENOMEM;
31059 }
31060 -@@ -2668,8 +2668,8 @@ static __net_initdata struct pernet_operations sysctl_route_ops = {
31061 +@@ -2675,8 +2675,8 @@ static __net_initdata struct pernet_operations sysctl_route_ops = {
31062
31063 static __net_init int rt_genid_init(struct net *net)
31064 {
31065 @@ -100301,8 +108501,21 @@ index fd618d4..aae0ac9 100644
31066 get_random_bytes(&net->ipv4.dev_addr_genid,
31067 sizeof(net->ipv4.dev_addr_genid));
31068 return 0;
31069 +@@ -2719,11 +2719,7 @@ int __init ip_rt_init(void)
31070 + {
31071 + int rc = 0;
31072 +
31073 +- ip_idents = kmalloc(IP_IDENTS_SZ * sizeof(*ip_idents), GFP_KERNEL);
31074 +- if (!ip_idents)
31075 +- panic("IP: failed to allocate ip_idents\n");
31076 +-
31077 +- prandom_bytes(ip_idents, IP_IDENTS_SZ * sizeof(*ip_idents));
31078 ++ prandom_bytes(ip_idents, sizeof(ip_idents));
31079 +
31080 + #ifdef CONFIG_IP_ROUTE_CLASSID
31081 + ip_rt_acct = __alloc_percpu(256 * sizeof(struct ip_rt_acct), __alignof__(struct ip_rt_acct));
31082 diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c
31083 -index 5cde8f2..5f5684e 100644
31084 +index 79a007c..5023029 100644
31085 --- a/net/ipv4/sysctl_net_ipv4.c
31086 +++ b/net/ipv4/sysctl_net_ipv4.c
31087 @@ -60,7 +60,7 @@ static int ipv4_local_port_range(struct ctl_table *table, int write,
31088 @@ -100359,16 +108572,7 @@ index 5cde8f2..5f5684e 100644
31089 struct tcp_fastopen_context *ctxt;
31090 int ret;
31091 u32 user_key[4]; /* 16 bytes, matching TCP_FASTOPEN_KEY_LENGTH */
31092 -@@ -438,7 +438,7 @@ static struct ctl_table ipv4_table[] = {
31093 - },
31094 - {
31095 - .procname = "ip_local_reserved_ports",
31096 -- .data = NULL, /* initialized in sysctl_ipv4_init */
31097 -+ .data = sysctl_local_reserved_ports,
31098 - .maxlen = 65536,
31099 - .mode = 0644,
31100 - .proc_handler = proc_do_large_bitmap,
31101 -@@ -843,13 +843,12 @@ static struct ctl_table ipv4_net_table[] = {
31102 +@@ -857,13 +857,12 @@ static struct ctl_table ipv4_net_table[] = {
31103
31104 static __net_init int ipv4_sysctl_init_net(struct net *net)
31105 {
31106 @@ -100384,7 +108588,7 @@ index 5cde8f2..5f5684e 100644
31107 if (table == NULL)
31108 goto err_alloc;
31109
31110 -@@ -858,15 +857,17 @@ static __net_init int ipv4_sysctl_init_net(struct net *net)
31111 +@@ -872,7 +871,10 @@ static __net_init int ipv4_sysctl_init_net(struct net *net)
31112 table[i].data += (void *)net - (void *)&init_net;
31113 }
31114
31115 @@ -100396,34 +108600,8 @@ index 5cde8f2..5f5684e 100644
31116 if (net->ipv4.ipv4_hdr == NULL)
31117 goto err_reg;
31118
31119 - return 0;
31120 -
31121 - err_reg:
31122 -- if (!net_eq(net, &init_net))
31123 -- kfree(table);
31124 -+ kfree(table);
31125 - err_alloc:
31126 - return -ENOMEM;
31127 - }
31128 -@@ -888,16 +889,6 @@ static __net_initdata struct pernet_operations ipv4_sysctl_ops = {
31129 - static __init int sysctl_ipv4_init(void)
31130 - {
31131 - struct ctl_table_header *hdr;
31132 -- struct ctl_table *i;
31133 --
31134 -- for (i = ipv4_table; i->procname; i++) {
31135 -- if (strcmp(i->procname, "ip_local_reserved_ports") == 0) {
31136 -- i->data = sysctl_local_reserved_ports;
31137 -- break;
31138 -- }
31139 -- }
31140 -- if (!i->procname)
31141 -- return -EINVAL;
31142 -
31143 - hdr = register_net_sysctl(&init_net, "net/ipv4", ipv4_table);
31144 - if (hdr == NULL)
31145 diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
31146 -index 09b85cd..df9c266 100644
31147 +index 40639c2..dfc86b2 100644
31148 --- a/net/ipv4/tcp_input.c
31149 +++ b/net/ipv4/tcp_input.c
31150 @@ -754,7 +754,7 @@ static void tcp_update_pacing_rate(struct sock *sk)
31151 @@ -100444,7 +108622,7 @@ index 09b85cd..df9c266 100644
31152 struct sk_buff *head, struct sk_buff *tail,
31153 u32 start, u32 end)
31154 {
31155 -@@ -5558,6 +5558,7 @@ discard:
31156 +@@ -5536,6 +5536,7 @@ discard:
31157 tcp_paws_reject(&tp->rx_opt, 0))
31158 goto discard_and_undo;
31159
31160 @@ -100452,7 +108630,7 @@ index 09b85cd..df9c266 100644
31161 if (th->syn) {
31162 /* We see SYN without ACK. It is attempt of
31163 * simultaneous connect with crossed SYNs.
31164 -@@ -5608,6 +5609,7 @@ discard:
31165 +@@ -5586,6 +5587,7 @@ discard:
31166 goto discard;
31167 #endif
31168 }
31169 @@ -100460,7 +108638,7 @@ index 09b85cd..df9c266 100644
31170 /* "fifth, if neither of the SYN or RST bits is set then
31171 * drop the segment and return."
31172 */
31173 -@@ -5654,7 +5656,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
31174 +@@ -5632,7 +5634,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
31175 goto discard;
31176
31177 if (th->syn) {
31178 @@ -100470,7 +108648,7 @@ index 09b85cd..df9c266 100644
31179 if (icsk->icsk_af_ops->conn_request(sk, skb) < 0)
31180 return 1;
31181 diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
31182 -index 438f3b9..bc9e1ad 100644
31183 +index 77cccda..10122c4 100644
31184 --- a/net/ipv4/tcp_ipv4.c
31185 +++ b/net/ipv4/tcp_ipv4.c
31186 @@ -91,6 +91,10 @@ int sysctl_tcp_low_latency __read_mostly;
31187 @@ -100484,7 +108662,7 @@ index 438f3b9..bc9e1ad 100644
31188 #ifdef CONFIG_TCP_MD5SIG
31189 static int tcp_v4_md5_hash_hdr(char *md5_hash, const struct tcp_md5sig_key *key,
31190 __be32 daddr, __be32 saddr, const struct tcphdr *th);
31191 -@@ -1829,6 +1833,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
31192 +@@ -1591,6 +1595,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
31193 return 0;
31194
31195 reset:
31196 @@ -100494,7 +108672,7 @@ index 438f3b9..bc9e1ad 100644
31197 tcp_v4_send_reset(rsk, skb);
31198 discard:
31199 kfree_skb(skb);
31200 -@@ -1974,12 +1981,19 @@ int tcp_v4_rcv(struct sk_buff *skb)
31201 +@@ -1737,12 +1744,19 @@ int tcp_v4_rcv(struct sk_buff *skb)
31202 TCP_SKB_CB(skb)->sacked = 0;
31203
31204 sk = __inet_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest);
31205 @@ -100517,7 +108695,7 @@ index 438f3b9..bc9e1ad 100644
31206
31207 if (unlikely(iph->ttl < inet_sk(sk)->min_ttl)) {
31208 NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP);
31209 -@@ -2033,6 +2047,10 @@ csum_error:
31210 +@@ -1796,6 +1810,10 @@ csum_error:
31211 bad_packet:
31212 TCP_INC_STATS_BH(net, TCP_MIB_INERRS);
31213 } else {
31214 @@ -100529,7 +108707,7 @@ index 438f3b9..bc9e1ad 100644
31215 }
31216
31217 diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
31218 -index 05c1b15..3e9344b 100644
31219 +index e68e0d4..0334263 100644
31220 --- a/net/ipv4/tcp_minisocks.c
31221 +++ b/net/ipv4/tcp_minisocks.c
31222 @@ -27,6 +27,10 @@
31223 @@ -100543,7 +108721,7 @@ index 05c1b15..3e9344b 100644
31224 int sysctl_tcp_syncookies __read_mostly = 1;
31225 EXPORT_SYMBOL(sysctl_tcp_syncookies);
31226
31227 -@@ -709,7 +713,10 @@ embryonic_reset:
31228 +@@ -740,7 +744,10 @@ embryonic_reset:
31229 * avoid becoming vulnerable to outside attack aiming at
31230 * resetting legit local connections.
31231 */
31232 @@ -100598,7 +108776,7 @@ index 286227a..c495a76 100644
31233 syn_set ? 0 : icsk->icsk_user_timeout, syn_set)) {
31234 /* Has it gone just too far? */
31235 diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
31236 -index 54a5fe9..78fea00 100644
31237 +index 7d5a866..4874211 100644
31238 --- a/net/ipv4/udp.c
31239 +++ b/net/ipv4/udp.c
31240 @@ -87,6 +87,7 @@
31241 @@ -100630,7 +108808,7 @@ index 54a5fe9..78fea00 100644
31242 /*
31243 * This routine is called by the ICMP module when it gets some
31244 * sort of error condition. If err < 0 then the socket should
31245 -@@ -914,9 +922,18 @@ int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
31246 +@@ -952,9 +960,18 @@ int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
31247 dport = usin->sin_port;
31248 if (dport == 0)
31249 return -EINVAL;
31250 @@ -100649,7 +108827,7 @@ index 54a5fe9..78fea00 100644
31251 daddr = inet->inet_daddr;
31252 dport = inet->inet_dport;
31253 /* Open fast path for connected socket.
31254 -@@ -1164,7 +1181,7 @@ static unsigned int first_packet_length(struct sock *sk)
31255 +@@ -1202,7 +1219,7 @@ static unsigned int first_packet_length(struct sock *sk)
31256 IS_UDPLITE(sk));
31257 UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS,
31258 IS_UDPLITE(sk));
31259 @@ -100658,20 +108836,7 @@ index 54a5fe9..78fea00 100644
31260 __skb_unlink(skb, rcvq);
31261 __skb_queue_tail(&list_kill, skb);
31262 }
31263 -@@ -1235,6 +1252,12 @@ int udp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
31264 - int is_udplite = IS_UDPLITE(sk);
31265 - bool slow;
31266 -
31267 -+ /*
31268 -+ * Check any passed addresses
31269 -+ */
31270 -+ if (addr_len)
31271 -+ *addr_len = sizeof(*sin);
31272 -+
31273 - if (flags & MSG_ERRQUEUE)
31274 - return ip_recv_error(sk, msg, len, addr_len);
31275 -
31276 -@@ -1244,6 +1267,10 @@ try_again:
31277 +@@ -1282,6 +1299,10 @@ try_again:
31278 if (!skb)
31279 goto out;
31280
31281 @@ -100682,7 +108847,7 @@ index 54a5fe9..78fea00 100644
31282 ulen = skb->len - sizeof(struct udphdr);
31283 copied = len;
31284 if (copied > ulen)
31285 -@@ -1277,7 +1304,7 @@ try_again:
31286 +@@ -1315,7 +1336,7 @@ try_again:
31287 if (unlikely(err)) {
31288 trace_kfree_skb(skb, udp_recvmsg);
31289 if (!peeked) {
31290 @@ -100691,15 +108856,7 @@ index 54a5fe9..78fea00 100644
31291 UDP_INC_STATS_USER(sock_net(sk),
31292 UDP_MIB_INERRORS, is_udplite);
31293 }
31294 -@@ -1296,7 +1323,6 @@ try_again:
31295 - sin->sin_port = udp_hdr(skb)->source;
31296 - sin->sin_addr.s_addr = ip_hdr(skb)->saddr;
31297 - memset(sin->sin_zero, 0, sizeof(sin->sin_zero));
31298 -- *addr_len = sizeof(*sin);
31299 - }
31300 - if (inet->cmsg_flags)
31301 - ip_cmsg_recv(msg, skb);
31302 -@@ -1567,7 +1593,7 @@ csum_error:
31303 +@@ -1612,7 +1633,7 @@ csum_error:
31304 UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite);
31305 drop:
31306 UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite);
31307 @@ -100708,7 +108865,7 @@ index 54a5fe9..78fea00 100644
31308 kfree_skb(skb);
31309 return -1;
31310 }
31311 -@@ -1586,7 +1612,7 @@ static void flush_stack(struct sock **stack, unsigned int count,
31312 +@@ -1631,7 +1652,7 @@ static void flush_stack(struct sock **stack, unsigned int count,
31313 skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC);
31314
31315 if (!skb1) {
31316 @@ -100717,7 +108874,7 @@ index 54a5fe9..78fea00 100644
31317 UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS,
31318 IS_UDPLITE(sk));
31319 UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS,
31320 -@@ -1787,6 +1813,9 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
31321 +@@ -1817,6 +1838,9 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
31322 goto csum_error;
31323
31324 UDP_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE);
31325 @@ -100727,7 +108884,7 @@ index 54a5fe9..78fea00 100644
31326 icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0);
31327
31328 /*
31329 -@@ -2355,7 +2384,7 @@ static void udp4_format_sock(struct sock *sp, struct seq_file *f,
31330 +@@ -2403,7 +2427,7 @@ static void udp4_format_sock(struct sock *sp, struct seq_file *f,
31331 from_kuid_munged(seq_user_ns(f), sock_i_uid(sp)),
31332 0, sock_i_ino(sp),
31333 atomic_read(&sp->sk_refcnt), sp,
31334 @@ -100790,10 +108947,10 @@ index 6156f68..d6ab46d 100644
31335 return -ENOMEM;
31336 }
31337 diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
31338 -index 6c7fa08..8a31430 100644
31339 +index 5667b30..9b1b876 100644
31340 --- a/net/ipv6/addrconf.c
31341 +++ b/net/ipv6/addrconf.c
31342 -@@ -598,7 +598,7 @@ static int inet6_netconf_dump_devconf(struct sk_buff *skb,
31343 +@@ -593,7 +593,7 @@ static int inet6_netconf_dump_devconf(struct sk_buff *skb,
31344 idx = 0;
31345 head = &net->dev_index_head[h];
31346 rcu_read_lock();
31347 @@ -100802,7 +108959,7 @@ index 6c7fa08..8a31430 100644
31348 net->dev_base_seq;
31349 hlist_for_each_entry_rcu(dev, head, index_hlist) {
31350 if (idx < s_idx)
31351 -@@ -2395,7 +2395,7 @@ int addrconf_set_dstaddr(struct net *net, void __user *arg)
31352 +@@ -2390,7 +2390,7 @@ int addrconf_set_dstaddr(struct net *net, void __user *arg)
31353 p.iph.ihl = 5;
31354 p.iph.protocol = IPPROTO_IPV6;
31355 p.iph.ttl = 64;
31356 @@ -100811,7 +108968,7 @@ index 6c7fa08..8a31430 100644
31357
31358 if (ops->ndo_do_ioctl) {
31359 mm_segment_t oldfs = get_fs();
31360 -@@ -3528,16 +3528,23 @@ static const struct file_operations if6_fops = {
31361 +@@ -3516,16 +3516,23 @@ static const struct file_operations if6_fops = {
31362 .release = seq_release_net,
31363 };
31364
31365 @@ -100836,7 +108993,7 @@ index 6c7fa08..8a31430 100644
31366 }
31367
31368 static struct pernet_operations if6_proc_net_ops = {
31369 -@@ -4146,7 +4153,7 @@ static int inet6_dump_addr(struct sk_buff *skb, struct netlink_callback *cb,
31370 +@@ -4141,7 +4148,7 @@ static int inet6_dump_addr(struct sk_buff *skb, struct netlink_callback *cb,
31371 s_ip_idx = ip_idx = cb->args[2];
31372
31373 rcu_read_lock();
31374 @@ -100845,7 +109002,7 @@ index 6c7fa08..8a31430 100644
31375 for (h = s_h; h < NETDEV_HASHENTRIES; h++, s_idx = 0) {
31376 idx = 0;
31377 head = &net->dev_index_head[h];
31378 -@@ -4758,7 +4765,7 @@ static void __ipv6_ifa_notify(int event, struct inet6_ifaddr *ifp)
31379 +@@ -4753,7 +4760,7 @@ static void __ipv6_ifa_notify(int event, struct inet6_ifaddr *ifp)
31380 dst_free(&ifp->rt->dst);
31381 break;
31382 }
31383 @@ -100854,7 +109011,7 @@ index 6c7fa08..8a31430 100644
31384 rt_genid_bump_ipv6(net);
31385 }
31386
31387 -@@ -4779,7 +4786,7 @@ int addrconf_sysctl_forward(struct ctl_table *ctl, int write,
31388 +@@ -4774,7 +4781,7 @@ int addrconf_sysctl_forward(struct ctl_table *ctl, int write,
31389 int *valp = ctl->data;
31390 int val = *valp;
31391 loff_t pos = *ppos;
31392 @@ -100863,7 +109020,7 @@ index 6c7fa08..8a31430 100644
31393 int ret;
31394
31395 /*
31396 -@@ -4864,7 +4871,7 @@ int addrconf_sysctl_disable(struct ctl_table *ctl, int write,
31397 +@@ -4859,7 +4866,7 @@ int addrconf_sysctl_disable(struct ctl_table *ctl, int write,
31398 int *valp = ctl->data;
31399 int val = *valp;
31400 loff_t pos = *ppos;
31401 @@ -100873,10 +109030,10 @@ index 6c7fa08..8a31430 100644
31402
31403 /*
31404 diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
31405 -index d935889..2f64330 100644
31406 +index 7cb4392..dc96d28 100644
31407 --- a/net/ipv6/af_inet6.c
31408 +++ b/net/ipv6/af_inet6.c
31409 -@@ -776,7 +776,7 @@ static int __net_init inet6_net_init(struct net *net)
31410 +@@ -765,7 +765,7 @@ static int __net_init inet6_net_init(struct net *net)
31411 net->ipv6.sysctl.bindv6only = 0;
31412 net->ipv6.sysctl.icmpv6_time = 1*HZ;
31413 net->ipv6.sysctl.flowlabel_consistency = 1;
31414 @@ -100897,10 +109054,10 @@ index c3bf2d2..1f00573 100644
31415 + atomic_read_unchecked(&sp->sk_drops));
31416 }
31417 diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c
31418 -index 7b32652..0bc348b 100644
31419 +index f6c84a6..9f2084e 100644
31420 --- a/net/ipv6/icmp.c
31421 +++ b/net/ipv6/icmp.c
31422 -@@ -1005,7 +1005,7 @@ static struct ctl_table ipv6_icmp_table_template[] = {
31423 +@@ -990,7 +990,7 @@ static struct ctl_table ipv6_icmp_table_template[] = {
31424
31425 struct ctl_table * __net_init ipv6_icmp_sysctl_init(struct net *net)
31426 {
31427 @@ -100910,19 +109067,21 @@ index 7b32652..0bc348b 100644
31428 table = kmemdup(ipv6_icmp_table_template,
31429 sizeof(ipv6_icmp_table_template),
31430 diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c
31431 -index 9d92146..d986c6a 100644
31432 +index 3873181..220ad3f 100644
31433 --- a/net/ipv6/ip6_gre.c
31434 +++ b/net/ipv6/ip6_gre.c
31435 -@@ -71,7 +71,7 @@ struct ip6gre_net {
31436 +@@ -71,8 +71,8 @@ struct ip6gre_net {
31437 struct net_device *fb_tunnel_dev;
31438 };
31439
31440 -static struct rtnl_link_ops ip6gre_link_ops __read_mostly;
31441 +-static struct rtnl_link_ops ip6gre_tap_ops __read_mostly;
31442 +static struct rtnl_link_ops ip6gre_link_ops;
31443 ++static struct rtnl_link_ops ip6gre_tap_ops;
31444 static int ip6gre_tunnel_init(struct net_device *dev);
31445 static void ip6gre_tunnel_setup(struct net_device *dev);
31446 static void ip6gre_tunnel_link(struct ip6gre_net *ign, struct ip6_tnl *t);
31447 -@@ -1291,7 +1291,7 @@ static void ip6gre_fb_tunnel_init(struct net_device *dev)
31448 +@@ -1280,7 +1280,7 @@ static void ip6gre_fb_tunnel_init(struct net_device *dev)
31449 }
31450
31451
31452 @@ -100931,7 +109090,7 @@ index 9d92146..d986c6a 100644
31453 .handler = ip6gre_rcv,
31454 .err_handler = ip6gre_err,
31455 .flags = INET6_PROTO_NOPOLICY|INET6_PROTO_FINAL,
31456 -@@ -1636,7 +1636,7 @@ static const struct nla_policy ip6gre_policy[IFLA_GRE_MAX + 1] = {
31457 +@@ -1638,7 +1638,7 @@ static const struct nla_policy ip6gre_policy[IFLA_GRE_MAX + 1] = {
31458 [IFLA_GRE_FLAGS] = { .type = NLA_U32 },
31459 };
31460
31461 @@ -100940,7 +109099,7 @@ index 9d92146..d986c6a 100644
31462 .kind = "ip6gre",
31463 .maxtype = IFLA_GRE_MAX,
31464 .policy = ip6gre_policy,
31465 -@@ -1650,7 +1650,7 @@ static struct rtnl_link_ops ip6gre_link_ops __read_mostly = {
31466 +@@ -1652,7 +1652,7 @@ static struct rtnl_link_ops ip6gre_link_ops __read_mostly = {
31467 .fill_info = ip6gre_fill_info,
31468 };
31469
31470 @@ -100972,7 +109131,7 @@ index afa0824..04ba530 100644
31471 .maxtype = IFLA_IPTUN_MAX,
31472 .policy = ip6_tnl_policy,
31473 diff --git a/net/ipv6/ip6_vti.c b/net/ipv6/ip6_vti.c
31474 -index 6cc9f93..6e5bb7c 100644
31475 +index 9aaa6bb..5c13e57 100644
31476 --- a/net/ipv6/ip6_vti.c
31477 +++ b/net/ipv6/ip6_vti.c
31478 @@ -62,7 +62,7 @@ static u32 HASH(const struct in6_addr *addr1, const struct in6_addr *addr2)
31479 @@ -100984,7 +109143,7 @@ index 6cc9f93..6e5bb7c 100644
31480
31481 static int vti6_net_id __read_mostly;
31482 struct vti6_net {
31483 -@@ -980,7 +980,7 @@ static const struct nla_policy vti6_policy[IFLA_VTI_MAX + 1] = {
31484 +@@ -977,7 +977,7 @@ static const struct nla_policy vti6_policy[IFLA_VTI_MAX + 1] = {
31485 [IFLA_VTI_OKEY] = { .type = NLA_U32 },
31486 };
31487
31488 @@ -101056,7 +109215,7 @@ index e080fbb..412b3cf 100644
31489
31490 case IP6T_SO_GET_ENTRIES:
31491 diff --git a/net/ipv6/netfilter/nf_conntrack_reasm.c b/net/ipv6/netfilter/nf_conntrack_reasm.c
31492 -index 767ab8d..c5ec70a 100644
31493 +index 0d5279f..89d9f6f 100644
31494 --- a/net/ipv6/netfilter/nf_conntrack_reasm.c
31495 +++ b/net/ipv6/netfilter/nf_conntrack_reasm.c
31496 @@ -90,12 +90,11 @@ static struct ctl_table nf_ct_frag6_sysctl_table[] = {
31497 @@ -101097,23 +109256,11 @@ index 767ab8d..c5ec70a 100644
31498 err_alloc:
31499 return -ENOMEM;
31500 }
31501 -diff --git a/net/ipv6/output_core.c b/net/ipv6/output_core.c
31502 -index 6179ac1..ffa0293 100644
31503 ---- a/net/ipv6/output_core.c
31504 -+++ b/net/ipv6/output_core.c
31505 -@@ -8,7 +8,6 @@
31506 - #include <net/addrconf.h>
31507 - #include <net/secure_seq.h>
31508 -
31509 --
31510 - int ip6_find_1stfragopt(struct sk_buff *skb, u8 **nexthdr)
31511 - {
31512 - u16 offset = sizeof(struct ipv6hdr);
31513 diff --git a/net/ipv6/ping.c b/net/ipv6/ping.c
31514 -index bda7429..469b26b 100644
31515 +index 5b7a1ed..d9da205 100644
31516 --- a/net/ipv6/ping.c
31517 +++ b/net/ipv6/ping.c
31518 -@@ -246,6 +246,24 @@ static struct pernet_operations ping_v6_net_ops = {
31519 +@@ -240,6 +240,24 @@ static struct pernet_operations ping_v6_net_ops = {
31520 };
31521 #endif
31522
31523 @@ -101138,7 +109285,7 @@ index bda7429..469b26b 100644
31524 int __init pingv6_init(void)
31525 {
31526 #ifdef CONFIG_PROC_FS
31527 -@@ -253,13 +271,7 @@ int __init pingv6_init(void)
31528 +@@ -247,13 +265,7 @@ int __init pingv6_init(void)
31529 if (ret)
31530 return ret;
31531 #endif
31532 @@ -101153,7 +109300,7 @@ index bda7429..469b26b 100644
31533 return inet6_register_protosw(&pingv6_protosw);
31534 }
31535
31536 -@@ -268,14 +280,9 @@ int __init pingv6_init(void)
31537 +@@ -262,14 +274,9 @@ int __init pingv6_init(void)
31538 */
31539 void pingv6_exit(void)
31540 {
31541 @@ -101170,7 +109317,7 @@ index bda7429..469b26b 100644
31542 inet6_unregister_protosw(&pingv6_protosw);
31543 }
31544 diff --git a/net/ipv6/proc.c b/net/ipv6/proc.c
31545 -index 091d066..139d410 100644
31546 +index 3317440..201764e 100644
31547 --- a/net/ipv6/proc.c
31548 +++ b/net/ipv6/proc.c
31549 @@ -309,7 +309,7 @@ static int __net_init ipv6_proc_init_net(struct net *net)
31550 @@ -101183,7 +109330,7 @@ index 091d066..139d410 100644
31551 goto proc_dev_snmp6_fail;
31552 return 0;
31553 diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
31554 -index 1f29996..46fe0c7 100644
31555 +index b2dc60b..a6b6c10 100644
31556 --- a/net/ipv6/raw.c
31557 +++ b/net/ipv6/raw.c
31558 @@ -388,7 +388,7 @@ static inline int rawv6_rcv_skb(struct sock *sk, struct sk_buff *skb)
31559 @@ -101213,25 +109360,7 @@ index 1f29996..46fe0c7 100644
31560 kfree_skb(skb);
31561 return NET_RX_DROP;
31562 }
31563 -@@ -469,6 +469,9 @@ static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk,
31564 - if (flags & MSG_OOB)
31565 - return -EOPNOTSUPP;
31566 -
31567 -+ if (addr_len)
31568 -+ *addr_len=sizeof(*sin6);
31569 -+
31570 - if (flags & MSG_ERRQUEUE)
31571 - return ipv6_recv_error(sk, msg, len, addr_len);
31572 -
31573 -@@ -507,7 +510,6 @@ static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk,
31574 - sin6->sin6_flowinfo = 0;
31575 - sin6->sin6_scope_id = ipv6_iface_scope_id(&sin6->sin6_addr,
31576 - IP6CB(skb)->iif);
31577 -- *addr_len = sizeof(*sin6);
31578 - }
31579 -
31580 - sock_recv_ts_and_drops(msg, sk, skb);
31581 -@@ -610,7 +612,7 @@ out:
31582 +@@ -610,7 +610,7 @@ out:
31583 return err;
31584 }
31585
31586 @@ -101240,7 +109369,7 @@ index 1f29996..46fe0c7 100644
31587 struct flowi6 *fl6, struct dst_entry **dstp,
31588 unsigned int flags)
31589 {
31590 -@@ -922,12 +924,15 @@ do_confirm:
31591 +@@ -916,12 +916,15 @@ do_confirm:
31592 static int rawv6_seticmpfilter(struct sock *sk, int level, int optname,
31593 char __user *optval, int optlen)
31594 {
31595 @@ -101257,7 +109386,7 @@ index 1f29996..46fe0c7 100644
31596 return 0;
31597 default:
31598 return -ENOPROTOOPT;
31599 -@@ -940,6 +945,7 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname,
31600 +@@ -934,6 +937,7 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname,
31601 char __user *optval, int __user *optlen)
31602 {
31603 int len;
31604 @@ -101265,7 +109394,7 @@ index 1f29996..46fe0c7 100644
31605
31606 switch (optname) {
31607 case ICMPV6_FILTER:
31608 -@@ -951,7 +957,8 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname,
31609 +@@ -945,7 +949,8 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname,
31610 len = sizeof(struct icmp6_filter);
31611 if (put_user(len, optlen))
31612 return -EFAULT;
31613 @@ -101318,7 +109447,7 @@ index cc85a9b..526a133 100644
31614 return -ENOMEM;
31615 }
31616 diff --git a/net/ipv6/route.c b/net/ipv6/route.c
31617 -index 6ebdb7b6..f225ab1 100644
31618 +index f23fbd2..7868241 100644
31619 --- a/net/ipv6/route.c
31620 +++ b/net/ipv6/route.c
31621 @@ -2971,7 +2971,7 @@ struct ctl_table ipv6_route_table_template[] = {
31622 @@ -101353,10 +109482,10 @@ index 4f40817..54dcbef 100644
31623 .maxtype = IFLA_IPTUN_MAX,
31624 .policy = ipip6_policy,
31625 diff --git a/net/ipv6/sysctl_net_ipv6.c b/net/ipv6/sysctl_net_ipv6.c
31626 -index 7f405a1..eabef92 100644
31627 +index 058f3ec..dec973d 100644
31628 --- a/net/ipv6/sysctl_net_ipv6.c
31629 +++ b/net/ipv6/sysctl_net_ipv6.c
31630 -@@ -54,7 +54,7 @@ static struct ctl_table ipv6_rotable[] = {
31631 +@@ -61,7 +61,7 @@ static struct ctl_table ipv6_rotable[] = {
31632
31633 static int __net_init ipv6_sysctl_net_init(struct net *net)
31634 {
31635 @@ -101366,7 +109495,7 @@ index 7f405a1..eabef92 100644
31636 struct ctl_table *ipv6_icmp_table;
31637 int err;
31638 diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
31639 -index e289830..79a5718 100644
31640 +index 229239ad..ee2802f 100644
31641 --- a/net/ipv6/tcp_ipv6.c
31642 +++ b/net/ipv6/tcp_ipv6.c
31643 @@ -102,6 +102,10 @@ static void inet6_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb)
31644 @@ -101380,7 +109509,7 @@ index e289830..79a5718 100644
31645 static void tcp_v6_hash(struct sock *sk)
31646 {
31647 if (sk->sk_state != TCP_CLOSE) {
31648 -@@ -1416,6 +1420,9 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)
31649 +@@ -1424,6 +1428,9 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)
31650 return 0;
31651
31652 reset:
31653 @@ -101390,7 +109519,7 @@ index e289830..79a5718 100644
31654 tcp_v6_send_reset(sk, skb);
31655 discard:
31656 if (opt_skb)
31657 -@@ -1500,12 +1507,20 @@ static int tcp_v6_rcv(struct sk_buff *skb)
31658 +@@ -1508,12 +1515,20 @@ static int tcp_v6_rcv(struct sk_buff *skb)
31659 TCP_SKB_CB(skb)->sacked = 0;
31660
31661 sk = __inet6_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest);
31662 @@ -101413,7 +109542,7 @@ index e289830..79a5718 100644
31663
31664 if (hdr->hop_limit < inet6_sk(sk)->min_hopcount) {
31665 NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP);
31666 -@@ -1557,6 +1572,10 @@ csum_error:
31667 +@@ -1565,6 +1580,10 @@ csum_error:
31668 bad_packet:
31669 TCP_INC_STATS_BH(net, TCP_MIB_INERRS);
31670 } else {
31671 @@ -101425,7 +109554,7 @@ index e289830..79a5718 100644
31672 }
31673
31674 diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
31675 -index 20b63d2..13be908 100644
31676 +index 7092ff7..3fd0eb4 100644
31677 --- a/net/ipv6/udp.c
31678 +++ b/net/ipv6/udp.c
31679 @@ -76,6 +76,10 @@ static unsigned int udp6_ehashfn(struct net *net,
31680 @@ -101439,17 +109568,7 @@ index 20b63d2..13be908 100644
31681 int ipv6_rcv_saddr_equal(const struct sock *sk, const struct sock *sk2)
31682 {
31683 const struct in6_addr *sk2_rcv_saddr6 = inet6_rcv_saddr(sk2);
31684 -@@ -392,6 +396,9 @@ int udpv6_recvmsg(struct kiocb *iocb, struct sock *sk,
31685 - int is_udp4;
31686 - bool slow;
31687 -
31688 -+ if (addr_len)
31689 -+ *addr_len = sizeof(struct sockaddr_in6);
31690 -+
31691 - if (flags & MSG_ERRQUEUE)
31692 - return ipv6_recv_error(sk, msg, len, addr_len);
31693 -
31694 -@@ -435,7 +442,7 @@ try_again:
31695 +@@ -435,7 +439,7 @@ try_again:
31696 if (unlikely(err)) {
31697 trace_kfree_skb(skb, udpv6_recvmsg);
31698 if (!peeked) {
31699 @@ -101458,16 +109577,7 @@ index 20b63d2..13be908 100644
31700 if (is_udp4)
31701 UDP_INC_STATS_USER(sock_net(sk),
31702 UDP_MIB_INERRORS,
31703 -@@ -475,7 +482,7 @@ try_again:
31704 - ipv6_iface_scope_id(&sin6->sin6_addr,
31705 - IP6CB(skb)->iif);
31706 - }
31707 -- *addr_len = sizeof(*sin6);
31708 -+
31709 - }
31710 -
31711 - if (np->rxopt.all)
31712 -@@ -690,7 +697,7 @@ csum_error:
31713 +@@ -698,7 +702,7 @@ csum_error:
31714 UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite);
31715 drop:
31716 UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite);
31717 @@ -101476,7 +109586,7 @@ index 20b63d2..13be908 100644
31718 kfree_skb(skb);
31719 return -1;
31720 }
31721 -@@ -747,7 +754,7 @@ static void flush_stack(struct sock **stack, unsigned int count,
31722 +@@ -754,7 +758,7 @@ static void flush_stack(struct sock **stack, unsigned int count,
31723 if (likely(skb1 == NULL))
31724 skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC);
31725 if (!skb1) {
31726 @@ -101485,7 +109595,7 @@ index 20b63d2..13be908 100644
31727 UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS,
31728 IS_UDPLITE(sk));
31729 UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS,
31730 -@@ -886,6 +893,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
31731 +@@ -920,6 +924,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
31732 goto csum_error;
31733
31734 UDP6_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE);
31735 @@ -101650,12 +109760,12 @@ index b9ac598..f88cc56 100644
31736 return;
31737
31738 diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c
31739 -index 8c9d730..66c6305 100644
31740 +index 7a95fa4..57be196 100644
31741 --- a/net/iucv/af_iucv.c
31742 +++ b/net/iucv/af_iucv.c
31743 -@@ -773,10 +773,10 @@ static int iucv_sock_autobind(struct sock *sk)
31744 -
31745 - write_lock_bh(&iucv_sk_list.lock);
31746 +@@ -686,10 +686,10 @@ static void __iucv_auto_name(struct iucv_sock *iucv)
31747 + {
31748 + char name[12];
31749
31750 - sprintf(name, "%08x", atomic_inc_return(&iucv_sk_list.autobind_name));
31751 + sprintf(name, "%08x", atomic_inc_return_unchecked(&iucv_sk_list.autobind_name));
31752 @@ -101664,8 +109774,8 @@ index 8c9d730..66c6305 100644
31753 - atomic_inc_return(&iucv_sk_list.autobind_name));
31754 + atomic_inc_return_unchecked(&iucv_sk_list.autobind_name));
31755 }
31756 -
31757 - write_unlock_bh(&iucv_sk_list.lock);
31758 + memcpy(iucv->src_name, name, 8);
31759 + }
31760 diff --git a/net/iucv/iucv.c b/net/iucv/iucv.c
31761 index da78793..bdd78cf 100644
31762 --- a/net/iucv/iucv.c
31763 @@ -101680,10 +109790,10 @@ index da78793..bdd78cf 100644
31764 };
31765
31766 diff --git a/net/key/af_key.c b/net/key/af_key.c
31767 -index f3c8307..7127791 100644
31768 +index ba2a2f9..b658bc3 100644
31769 --- a/net/key/af_key.c
31770 +++ b/net/key/af_key.c
31771 -@@ -3070,10 +3070,10 @@ static int pfkey_send_policy_notify(struct xfrm_policy *xp, int dir, const struc
31772 +@@ -3052,10 +3052,10 @@ static int pfkey_send_policy_notify(struct xfrm_policy *xp, int dir, const struc
31773 static u32 get_acqseq(void)
31774 {
31775 u32 res;
31776 @@ -101772,28 +109882,6 @@ index 76125c5..e474828 100644
31777 kfree_skb(skb);
31778 }
31779
31780 -diff --git a/net/l2tp/l2tp_ip.c b/net/l2tp/l2tp_ip.c
31781 -index 3397fe6..861fd1a 100644
31782 ---- a/net/l2tp/l2tp_ip.c
31783 -+++ b/net/l2tp/l2tp_ip.c
31784 -@@ -518,6 +518,9 @@ static int l2tp_ip_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *m
31785 - if (flags & MSG_OOB)
31786 - goto out;
31787 -
31788 -+ if (addr_len)
31789 -+ *addr_len = sizeof(*sin);
31790 -+
31791 - skb = skb_recv_datagram(sk, flags, noblock, &err);
31792 - if (!skb)
31793 - goto out;
31794 -@@ -540,7 +543,6 @@ static int l2tp_ip_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *m
31795 - sin->sin_addr.s_addr = ip_hdr(skb)->saddr;
31796 - sin->sin_port = 0;
31797 - memset(&sin->sin_zero, 0, sizeof(sin->sin_zero));
31798 -- *addr_len = sizeof(*sin);
31799 - }
31800 - if (inet->cmsg_flags)
31801 - ip_cmsg_recv(msg, skb);
31802 diff --git a/net/llc/llc_proc.c b/net/llc/llc_proc.c
31803 index 1a3c7e0..80f8b0c 100644
31804 --- a/net/llc/llc_proc.c
31805 @@ -101808,10 +109896,10 @@ index 1a3c7e0..80f8b0c 100644
31806 goto out;
31807
31808 diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
31809 -index aaa59d7..21a2c4a 100644
31810 +index 592f4b1..efa7aa9 100644
31811 --- a/net/mac80211/cfg.c
31812 +++ b/net/mac80211/cfg.c
31813 -@@ -839,7 +839,7 @@ static int ieee80211_set_monitor_channel(struct wiphy *wiphy,
31814 +@@ -864,7 +864,7 @@ static int ieee80211_set_monitor_channel(struct wiphy *wiphy,
31815 ret = ieee80211_vif_use_channel(sdata, chandef,
31816 IEEE80211_CHANCTX_EXCLUSIVE);
31817 }
31818 @@ -101820,7 +109908,7 @@ index aaa59d7..21a2c4a 100644
31819 local->_oper_chandef = *chandef;
31820 ieee80211_hw_config(local, 0);
31821 }
31822 -@@ -3440,7 +3440,7 @@ static void ieee80211_mgmt_frame_register(struct wiphy *wiphy,
31823 +@@ -3574,7 +3574,7 @@ static void ieee80211_mgmt_frame_register(struct wiphy *wiphy,
31824 else
31825 local->probe_req_reg--;
31826
31827 @@ -101829,7 +109917,7 @@ index aaa59d7..21a2c4a 100644
31828 break;
31829
31830 ieee80211_queue_work(&local->hw, &local->reconfig_filter);
31831 -@@ -3903,8 +3903,8 @@ static int ieee80211_cfg_get_channel(struct wiphy *wiphy,
31832 +@@ -3723,8 +3723,8 @@ static int ieee80211_cfg_get_channel(struct wiphy *wiphy,
31833 if (chanctx_conf) {
31834 *chandef = chanctx_conf->def;
31835 ret = 0;
31836 @@ -101841,7 +109929,7 @@ index aaa59d7..21a2c4a 100644
31837 if (local->use_chanctx)
31838 *chandef = local->monitor_chandef;
31839 diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
31840 -index f169b6e..a5dc4eb 100644
31841 +index ac9836e..32613c1 100644
31842 --- a/net/mac80211/ieee80211_i.h
31843 +++ b/net/mac80211/ieee80211_i.h
31844 @@ -28,6 +28,7 @@
31845 @@ -101852,7 +109940,7 @@ index f169b6e..a5dc4eb 100644
31846 #include "key.h"
31847 #include "sta_info.h"
31848 #include "debug.h"
31849 -@@ -999,7 +1000,7 @@ struct ieee80211_local {
31850 +@@ -1011,7 +1012,7 @@ struct ieee80211_local {
31851 /* also used to protect ampdu_ac_queue and amdpu_ac_stop_refcnt */
31852 spinlock_t queue_stop_reason_lock;
31853
31854 @@ -101862,10 +109950,10 @@ index f169b6e..a5dc4eb 100644
31855 /* number of interfaces with corresponding FIF_ flags */
31856 int fif_fcsfail, fif_plcpfail, fif_control, fif_other_bss, fif_pspoll,
31857 diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
31858 -index 34799e0..b411290 100644
31859 +index 388b863..6575b55 100644
31860 --- a/net/mac80211/iface.c
31861 +++ b/net/mac80211/iface.c
31862 -@@ -524,7 +524,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
31863 +@@ -531,7 +531,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
31864 break;
31865 }
31866
31867 @@ -101874,7 +109962,7 @@ index 34799e0..b411290 100644
31868 res = drv_start(local);
31869 if (res)
31870 goto err_del_bss;
31871 -@@ -571,7 +571,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
31872 +@@ -578,7 +578,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
31873 res = drv_add_interface(local, sdata);
31874 if (res)
31875 goto err_stop;
31876 @@ -101883,7 +109971,7 @@ index 34799e0..b411290 100644
31877 res = ieee80211_add_virtual_monitor(local);
31878 if (res)
31879 goto err_stop;
31880 -@@ -680,7 +680,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
31881 +@@ -687,7 +687,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
31882 atomic_inc(&local->iff_promiscs);
31883
31884 if (coming_up)
31885 @@ -101892,7 +109980,7 @@ index 34799e0..b411290 100644
31886
31887 if (hw_reconf_flags)
31888 ieee80211_hw_config(local, hw_reconf_flags);
31889 -@@ -718,7 +718,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
31890 +@@ -725,7 +725,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
31891 err_del_interface:
31892 drv_remove_interface(local, sdata);
31893 err_stop:
31894 @@ -101901,7 +109989,7 @@ index 34799e0..b411290 100644
31895 drv_stop(local);
31896 err_del_bss:
31897 sdata->bss = NULL;
31898 -@@ -871,7 +871,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
31899 +@@ -888,7 +888,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
31900 }
31901
31902 if (going_down)
31903 @@ -101910,7 +109998,7 @@ index 34799e0..b411290 100644
31904
31905 switch (sdata->vif.type) {
31906 case NL80211_IFTYPE_AP_VLAN:
31907 -@@ -930,7 +930,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
31908 +@@ -949,7 +949,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
31909 }
31910 spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags);
31911
31912 @@ -101919,7 +110007,7 @@ index 34799e0..b411290 100644
31913 ieee80211_clear_tx_pending(local);
31914
31915 /*
31916 -@@ -970,7 +970,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
31917 +@@ -989,7 +989,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
31918
31919 ieee80211_recalc_ps(local, -1);
31920
31921 @@ -101928,7 +110016,7 @@ index 34799e0..b411290 100644
31922 ieee80211_stop_device(local);
31923
31924 /* no reconfiguring after stop! */
31925 -@@ -981,7 +981,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
31926 +@@ -1000,7 +1000,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
31927 ieee80211_configure_filter(local);
31928 ieee80211_hw_config(local, hw_reconf_flags);
31929
31930 @@ -101938,7 +110026,7 @@ index 34799e0..b411290 100644
31931 }
31932
31933 diff --git a/net/mac80211/main.c b/net/mac80211/main.c
31934 -index 4c1bf61..00b449b 100644
31935 +index d17c26d..43d6bfb 100644
31936 --- a/net/mac80211/main.c
31937 +++ b/net/mac80211/main.c
31938 @@ -174,7 +174,7 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed)
31939 @@ -102008,10 +110096,10 @@ index 6ff1346..936ca9a 100644
31940
31941 return p;
31942 diff --git a/net/mac80211/util.c b/net/mac80211/util.c
31943 -index 3c36583..12887fe 100644
31944 +index a6cda52..f3b6776 100644
31945 --- a/net/mac80211/util.c
31946 +++ b/net/mac80211/util.c
31947 -@@ -1509,7 +1509,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
31948 +@@ -1548,7 +1548,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
31949 }
31950 #endif
31951 /* everything else happens only if HW was up & running */
31952 @@ -102020,7 +110108,7 @@ index 3c36583..12887fe 100644
31953 goto wake_up;
31954
31955 /*
31956 -@@ -1734,7 +1734,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
31957 +@@ -1772,7 +1772,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
31958 local->in_reconfig = false;
31959 barrier();
31960
31961 @@ -102063,10 +110151,10 @@ index bffdad7..f9317d1 100644
31962 obj-$(CONFIG_NETFILTER_XT_MATCH_HELPER) += xt_helper.o
31963 obj-$(CONFIG_NETFILTER_XT_MATCH_HL) += xt_hl.o
31964 diff --git a/net/netfilter/ipset/ip_set_core.c b/net/netfilter/ipset/ip_set_core.c
31965 -index 1172083..986f1c1 100644
31966 +index ec8114f..6b2bfba 100644
31967 --- a/net/netfilter/ipset/ip_set_core.c
31968 +++ b/net/netfilter/ipset/ip_set_core.c
31969 -@@ -1924,7 +1924,7 @@ done:
31970 +@@ -1921,7 +1921,7 @@ done:
31971 return ret;
31972 }
31973
31974 @@ -102076,7 +110164,7 @@ index 1172083..986f1c1 100644
31975 .get_optmin = SO_IP_SET,
31976 .get_optmax = SO_IP_SET + 1,
31977 diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c
31978 -index a8eb0a8..86f2de4 100644
31979 +index 610e19c..08d0c3f 100644
31980 --- a/net/netfilter/ipvs/ip_vs_conn.c
31981 +++ b/net/netfilter/ipvs/ip_vs_conn.c
31982 @@ -556,7 +556,7 @@ ip_vs_bind_dest(struct ip_vs_conn *cp, struct ip_vs_dest *dest)
31983 @@ -102088,7 +110176,7 @@ index a8eb0a8..86f2de4 100644
31984 if (cp->protocol != IPPROTO_UDP)
31985 conn_flags &= ~IP_VS_CONN_F_ONE_PACKET;
31986 flags = cp->flags;
31987 -@@ -900,7 +900,7 @@ ip_vs_conn_new(const struct ip_vs_conn_param *p,
31988 +@@ -899,7 +899,7 @@ ip_vs_conn_new(const struct ip_vs_conn_param *p,
31989
31990 cp->control = NULL;
31991 atomic_set(&cp->n_control, 0);
31992 @@ -102097,7 +110185,7 @@ index a8eb0a8..86f2de4 100644
31993
31994 cp->packet_xmit = NULL;
31995 cp->app = NULL;
31996 -@@ -1188,7 +1188,7 @@ static inline int todrop_entry(struct ip_vs_conn *cp)
31997 +@@ -1187,7 +1187,7 @@ static inline int todrop_entry(struct ip_vs_conn *cp)
31998
31999 /* Don't drop the entry if its number of incoming packets is not
32000 located in [0, 8] */
32001 @@ -102107,7 +110195,7 @@ index a8eb0a8..86f2de4 100644
32002
32003 if (!todrop_rate[i]) return 0;
32004 diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c
32005 -index 3d2d2c8..c87e4d3 100644
32006 +index e683675..67cb16b 100644
32007 --- a/net/netfilter/ipvs/ip_vs_core.c
32008 +++ b/net/netfilter/ipvs/ip_vs_core.c
32009 @@ -567,7 +567,7 @@ int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb,
32010 @@ -102129,7 +110217,7 @@ index 3d2d2c8..c87e4d3 100644
32011 if (ipvs->sync_state & IP_VS_STATE_MASTER)
32012 ip_vs_sync_conn(net, cp, pkts);
32013 diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c
32014 -index c42e83d..a6a3f8b 100644
32015 +index 581a658..910e112 100644
32016 --- a/net/netfilter/ipvs/ip_vs_ctl.c
32017 +++ b/net/netfilter/ipvs/ip_vs_ctl.c
32018 @@ -794,7 +794,7 @@ __ip_vs_update_dest(struct ip_vs_service *svc, struct ip_vs_dest *dest,
32019 @@ -102253,7 +110341,7 @@ index db80126..ef7110e 100644
32020 cp->old_state = cp->state;
32021 /*
32022 diff --git a/net/netfilter/ipvs/ip_vs_xmit.c b/net/netfilter/ipvs/ip_vs_xmit.c
32023 -index 7f0e1cf..e9a86e6 100644
32024 +index 73ba1cc..1adfc7a 100644
32025 --- a/net/netfilter/ipvs/ip_vs_xmit.c
32026 +++ b/net/netfilter/ipvs/ip_vs_xmit.c
32027 @@ -1102,7 +1102,7 @@ ip_vs_icmp_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
32028 @@ -102288,7 +110376,7 @@ index a4b5e2a..13b1de3 100644
32029 table = kmemdup(acct_sysctl_table, sizeof(acct_sysctl_table),
32030 GFP_KERNEL);
32031 diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
32032 -index 75421f2..0e69621 100644
32033 +index 1f4f954..e364ad7 100644
32034 --- a/net/netfilter/nf_conntrack_core.c
32035 +++ b/net/netfilter/nf_conntrack_core.c
32036 @@ -1789,6 +1789,10 @@ void nf_conntrack_init_end(void)
32037 @@ -102457,10 +110545,10 @@ index d292c8d..9f1e166 100644
32038
32039 if (data_len) {
32040 diff --git a/net/netfilter/nft_compat.c b/net/netfilter/nft_compat.c
32041 -index 8a779be..1551d4c 100644
32042 +index 1840989..6895744 100644
32043 --- a/net/netfilter/nft_compat.c
32044 +++ b/net/netfilter/nft_compat.c
32045 -@@ -216,7 +216,7 @@ target_dump_info(struct sk_buff *skb, const struct xt_target *t, const void *in)
32046 +@@ -225,7 +225,7 @@ target_dump_info(struct sk_buff *skb, const struct xt_target *t, const void *in)
32047 /* We want to reuse existing compat_to_user */
32048 old_fs = get_fs();
32049 set_fs(KERNEL_DS);
32050 @@ -102469,7 +110557,7 @@ index 8a779be..1551d4c 100644
32051 set_fs(old_fs);
32052 ret = nla_put(skb, NFTA_TARGET_INFO, XT_ALIGN(t->targetsize), out);
32053 kfree(out);
32054 -@@ -403,7 +403,7 @@ match_dump_info(struct sk_buff *skb, const struct xt_match *m, const void *in)
32055 +@@ -421,7 +421,7 @@ match_dump_info(struct sk_buff *skb, const struct xt_match *m, const void *in)
32056 /* We want to reuse existing compat_to_user */
32057 old_fs = get_fs();
32058 set_fs(KERNEL_DS);
32059 @@ -102478,6 +110566,24 @@ index 8a779be..1551d4c 100644
32060 set_fs(old_fs);
32061 ret = nla_put(skb, NFTA_MATCH_INFO, XT_ALIGN(m->matchsize), out);
32062 kfree(out);
32063 +diff --git a/net/netfilter/xt_bpf.c b/net/netfilter/xt_bpf.c
32064 +index bbffdbda..12d4da8 100644
32065 +--- a/net/netfilter/xt_bpf.c
32066 ++++ b/net/netfilter/xt_bpf.c
32067 +@@ -23,11 +23,10 @@ MODULE_ALIAS("ip6t_bpf");
32068 + static int bpf_mt_check(const struct xt_mtchk_param *par)
32069 + {
32070 + struct xt_bpf_info *info = par->matchinfo;
32071 +- struct sock_fprog_kern program;
32072 ++ struct sock_fprog program;
32073 +
32074 + program.len = info->bpf_program_num_elem;
32075 +- program.filter = info->bpf_program;
32076 +-
32077 ++ program.filter = (struct sock_filter __user *) info->bpf_program;
32078 + if (sk_unattached_filter_create(&info->filter, &program)) {
32079 + pr_info("bpf: check failed: parse error\n");
32080 + return -EINVAL;
32081 diff --git a/net/netfilter/xt_gradm.c b/net/netfilter/xt_gradm.c
32082 new file mode 100644
32083 index 0000000..c566332
32084 @@ -102554,10 +110660,10 @@ index a3910fc..2d2ba14 100644
32085 remove_proc_entry("ipt_hashlimit", net->proc_net);
32086 return -ENOMEM;
32087 diff --git a/net/netfilter/xt_recent.c b/net/netfilter/xt_recent.c
32088 -index 1e657cf..1eb1c34 100644
32089 +index a9faae8..1ea30e0 100644
32090 --- a/net/netfilter/xt_recent.c
32091 +++ b/net/netfilter/xt_recent.c
32092 -@@ -618,7 +618,7 @@ static int __net_init recent_proc_net_init(struct net *net)
32093 +@@ -615,7 +615,7 @@ static int __net_init recent_proc_net_init(struct net *net)
32094 {
32095 struct recent_net *recent_net = recent_pernet(net);
32096
32097 @@ -102601,7 +110707,7 @@ index 11de55e..f25e448 100644
32098 return 0;
32099 }
32100 diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
32101 -index 6c0fe97..1d852df 100644
32102 +index e6fac7e..cdcd25e 100644
32103 --- a/net/netlink/af_netlink.c
32104 +++ b/net/netlink/af_netlink.c
32105 @@ -257,7 +257,7 @@ static void netlink_overrun(struct sock *sk)
32106 @@ -102613,7 +110719,7 @@ index 6c0fe97..1d852df 100644
32107 }
32108
32109 static void netlink_rcv_wake(struct sock *sk)
32110 -@@ -3028,7 +3028,7 @@ static int netlink_seq_show(struct seq_file *seq, void *v)
32111 +@@ -3058,7 +3058,7 @@ static int netlink_seq_show(struct seq_file *seq, void *v)
32112 sk_wmem_alloc_get(s),
32113 nlk->cb_running,
32114 atomic_read(&s->sk_refcnt),
32115 @@ -102622,18 +110728,6 @@ index 6c0fe97..1d852df 100644
32116 sock_i_ino(s)
32117 );
32118
32119 -diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c
32120 -index ede50d1..d2468e6 100644
32121 ---- a/net/netrom/af_netrom.c
32122 -+++ b/net/netrom/af_netrom.c
32123 -@@ -850,7 +850,6 @@ static int nr_getname(struct socket *sock, struct sockaddr *uaddr,
32124 - *uaddr_len = sizeof(struct full_sockaddr_ax25);
32125 - } else {
32126 - sax->fsa_ax25.sax25_family = AF_NETROM;
32127 -- sax->fsa_ax25.sax25_ndigis = 0;
32128 - sax->fsa_ax25.sax25_call = nr->source_addr;
32129 - *uaddr_len = sizeof(struct sockaddr_ax25);
32130 - }
32131 diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
32132 index b85c67c..09705b7 100644
32133 --- a/net/packet/af_packet.c
32134 @@ -102848,7 +110942,7 @@ index 31b74f5..dc1fbfa 100644
32135 ic->i_ack_next = 0;
32136 #endif
32137 diff --git a/net/rds/ib_recv.c b/net/rds/ib_recv.c
32138 -index b7ebe23..b6352f6 100644
32139 +index d67de45..73dbf51 100644
32140 --- a/net/rds/ib_recv.c
32141 +++ b/net/rds/ib_recv.c
32142 @@ -596,7 +596,7 @@ static u64 rds_ib_get_ack(struct rds_ib_connection *ic)
32143 @@ -102858,11 +110952,11 @@ index b7ebe23..b6352f6 100644
32144 - atomic64_set(&ic->i_ack_next, seq);
32145 + atomic64_set_unchecked(&ic->i_ack_next, seq);
32146 if (ack_required) {
32147 - smp_mb__before_clear_bit();
32148 + smp_mb__before_atomic();
32149 set_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
32150 @@ -608,7 +608,7 @@ static u64 rds_ib_get_ack(struct rds_ib_connection *ic)
32151 clear_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
32152 - smp_mb__after_clear_bit();
32153 + smp_mb__after_atomic();
32154
32155 - return atomic64_read(&ic->i_ack_next);
32156 + return atomic64_read_unchecked(&ic->i_ack_next);
32157 @@ -102896,7 +110990,7 @@ index a91e1db..cf3053f 100644
32158 ic->i_ack_next = 0;
32159 #endif
32160 diff --git a/net/rds/iw_recv.c b/net/rds/iw_recv.c
32161 -index 4503335..db566b4 100644
32162 +index aa8bf67..b70133c 100644
32163 --- a/net/rds/iw_recv.c
32164 +++ b/net/rds/iw_recv.c
32165 @@ -427,7 +427,7 @@ static u64 rds_iw_get_ack(struct rds_iw_connection *ic)
32166 @@ -102906,11 +111000,11 @@ index 4503335..db566b4 100644
32167 - atomic64_set(&ic->i_ack_next, seq);
32168 + atomic64_set_unchecked(&ic->i_ack_next, seq);
32169 if (ack_required) {
32170 - smp_mb__before_clear_bit();
32171 + smp_mb__before_atomic();
32172 set_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
32173 @@ -439,7 +439,7 @@ static u64 rds_iw_get_ack(struct rds_iw_connection *ic)
32174 clear_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
32175 - smp_mb__after_clear_bit();
32176 + smp_mb__after_atomic();
32177
32178 - return atomic64_read(&ic->i_ack_next);
32179 + return atomic64_read_unchecked(&ic->i_ack_next);
32180 @@ -102944,7 +111038,7 @@ index edac9ef..16bcb98 100644
32181 set_fs(oldfs);
32182 }
32183 diff --git a/net/rds/tcp_send.c b/net/rds/tcp_send.c
32184 -index 81cf5a4..b5826ff 100644
32185 +index 53b17ca..45463e7 100644
32186 --- a/net/rds/tcp_send.c
32187 +++ b/net/rds/tcp_send.c
32188 @@ -43,7 +43,7 @@ static void rds_tcp_cork(struct socket *sock, int val)
32189 @@ -103221,6 +111315,28 @@ index f226709..0e735a8 100644
32190 _proto("Tx RESPONSE %%%u", ntohl(hdr->serial));
32191
32192 ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 3, len);
32193 +diff --git a/net/sched/cls_bpf.c b/net/sched/cls_bpf.c
32194 +index 13f64df..1618696 100644
32195 +--- a/net/sched/cls_bpf.c
32196 ++++ b/net/sched/cls_bpf.c
32197 +@@ -160,7 +160,7 @@ static int cls_bpf_modify_existing(struct net *net, struct tcf_proto *tp,
32198 + {
32199 + struct sock_filter *bpf_ops, *bpf_old;
32200 + struct tcf_exts exts;
32201 +- struct sock_fprog_kern tmp;
32202 ++ struct sock_fprog tmp;
32203 + struct sk_filter *fp, *fp_old;
32204 + u16 bpf_size, bpf_len;
32205 + u32 classid;
32206 +@@ -191,7 +191,7 @@ static int cls_bpf_modify_existing(struct net *net, struct tcf_proto *tp,
32207 + memcpy(bpf_ops, nla_data(tb[TCA_BPF_OPS]), bpf_size);
32208 +
32209 + tmp.len = bpf_len;
32210 +- tmp.filter = bpf_ops;
32211 ++ tmp.filter = (struct sock_filter __user *) bpf_ops;
32212 +
32213 + ret = sk_unattached_filter_create(&fp, &tmp);
32214 + if (ret)
32215 diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
32216 index e1543b0..7ce8bd0 100644
32217 --- a/net/sched/sch_generic.c
32218 @@ -103244,10 +111360,10 @@ index e1543b0..7ce8bd0 100644
32219 }
32220 }
32221 diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c
32222 -index 2b1738e..a9d0fc9 100644
32223 +index 1999592..6684af6 100644
32224 --- a/net/sctp/ipv6.c
32225 +++ b/net/sctp/ipv6.c
32226 -@@ -966,7 +966,7 @@ static const struct inet6_protocol sctpv6_protocol = {
32227 +@@ -964,7 +964,7 @@ static const struct inet6_protocol sctpv6_protocol = {
32228 .flags = INET6_PROTO_NOPOLICY | INET6_PROTO_FINAL,
32229 };
32230
32231 @@ -103256,7 +111372,7 @@ index 2b1738e..a9d0fc9 100644
32232 .sa_family = AF_INET6,
32233 .sctp_xmit = sctp_v6_xmit,
32234 .setsockopt = ipv6_setsockopt,
32235 -@@ -998,7 +998,7 @@ static struct sctp_af sctp_af_inet6 = {
32236 +@@ -996,7 +996,7 @@ static struct sctp_af sctp_af_inet6 = {
32237 #endif
32238 };
32239
32240 @@ -103265,7 +111381,7 @@ index 2b1738e..a9d0fc9 100644
32241 .event_msgname = sctp_inet6_event_msgname,
32242 .skb_msgname = sctp_inet6_skb_msgname,
32243 .af_supported = sctp_inet6_af_supported,
32244 -@@ -1023,7 +1023,7 @@ void sctp_v6_pf_init(void)
32245 +@@ -1021,7 +1021,7 @@ void sctp_v6_pf_init(void)
32246
32247 void sctp_v6_pf_exit(void)
32248 {
32249 @@ -103275,7 +111391,7 @@ index 2b1738e..a9d0fc9 100644
32250
32251 /* Initialize IPv6 support and register with socket layer. */
32252 diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c
32253 -index 44cbb54..4c5dce6 100644
32254 +index 6789d785..0798d76 100644
32255 --- a/net/sctp/protocol.c
32256 +++ b/net/sctp/protocol.c
32257 @@ -836,8 +836,10 @@ int sctp_register_af(struct sctp_af *af)
32258 @@ -103299,7 +111415,7 @@ index 44cbb54..4c5dce6 100644
32259 .event_msgname = sctp_inet_event_msgname,
32260 .skb_msgname = sctp_inet_skb_msgname,
32261 .af_supported = sctp_inet_af_supported,
32262 -@@ -1039,7 +1041,7 @@ static const struct net_protocol sctp_protocol = {
32263 +@@ -1037,7 +1039,7 @@ static const struct net_protocol sctp_protocol = {
32264 };
32265
32266 /* IPv4 address related functions. */
32267 @@ -103308,7 +111424,7 @@ index 44cbb54..4c5dce6 100644
32268 .sa_family = AF_INET,
32269 .sctp_xmit = sctp_v4_xmit,
32270 .setsockopt = ip_setsockopt,
32271 -@@ -1124,7 +1126,7 @@ static void sctp_v4_pf_init(void)
32272 +@@ -1123,7 +1125,7 @@ static void sctp_v4_pf_init(void)
32273
32274 static void sctp_v4_pf_exit(void)
32275 {
32276 @@ -103331,10 +111447,10 @@ index fef2acd..c705c4f 100644
32277 sctp_generate_t1_cookie_event,
32278 sctp_generate_t1_init_event,
32279 diff --git a/net/sctp/socket.c b/net/sctp/socket.c
32280 -index fee06b9..eabc613 100644
32281 +index 4298996..fa5f636 100644
32282 --- a/net/sctp/socket.c
32283 +++ b/net/sctp/socket.c
32284 -@@ -2175,11 +2175,13 @@ static int sctp_setsockopt_events(struct sock *sk, char __user *optval,
32285 +@@ -2176,11 +2176,13 @@ static int sctp_setsockopt_events(struct sock *sk, char __user *optval,
32286 {
32287 struct sctp_association *asoc;
32288 struct sctp_ulpevent *event;
32289 @@ -103349,7 +111465,7 @@ index fee06b9..eabc613 100644
32290
32291 /*
32292 * At the time when a user app subscribes to SCTP_SENDER_DRY_EVENT,
32293 -@@ -4259,13 +4261,16 @@ static int sctp_getsockopt_disable_fragments(struct sock *sk, int len,
32294 +@@ -4260,13 +4262,16 @@ static int sctp_getsockopt_disable_fragments(struct sock *sk, int len,
32295 static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval,
32296 int __user *optlen)
32297 {
32298 @@ -103367,7 +111483,7 @@ index fee06b9..eabc613 100644
32299 return -EFAULT;
32300 return 0;
32301 }
32302 -@@ -4283,6 +4288,8 @@ static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval,
32303 +@@ -4284,6 +4289,8 @@ static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval,
32304 */
32305 static int sctp_getsockopt_autoclose(struct sock *sk, int len, char __user *optval, int __user *optlen)
32306 {
32307 @@ -103376,7 +111492,7 @@ index fee06b9..eabc613 100644
32308 /* Applicable to UDP-style socket only */
32309 if (sctp_style(sk, TCP))
32310 return -EOPNOTSUPP;
32311 -@@ -4291,7 +4298,8 @@ static int sctp_getsockopt_autoclose(struct sock *sk, int len, char __user *optv
32312 +@@ -4292,7 +4299,8 @@ static int sctp_getsockopt_autoclose(struct sock *sk, int len, char __user *optv
32313 len = sizeof(int);
32314 if (put_user(len, optlen))
32315 return -EFAULT;
32316 @@ -103386,7 +111502,7 @@ index fee06b9..eabc613 100644
32317 return -EFAULT;
32318 return 0;
32319 }
32320 -@@ -4666,12 +4674,15 @@ static int sctp_getsockopt_delayed_ack(struct sock *sk, int len,
32321 +@@ -4667,12 +4675,15 @@ static int sctp_getsockopt_delayed_ack(struct sock *sk, int len,
32322 */
32323 static int sctp_getsockopt_initmsg(struct sock *sk, int len, char __user *optval, int __user *optlen)
32324 {
32325 @@ -103403,7 +111519,7 @@ index fee06b9..eabc613 100644
32326 return -EFAULT;
32327 return 0;
32328 }
32329 -@@ -4712,6 +4723,8 @@ static int sctp_getsockopt_peer_addrs(struct sock *sk, int len,
32330 +@@ -4713,6 +4724,8 @@ static int sctp_getsockopt_peer_addrs(struct sock *sk, int len,
32331 addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len;
32332 if (space_left < addrlen)
32333 return -ENOMEM;
32334 @@ -103413,10 +111529,10 @@ index fee06b9..eabc613 100644
32335 return -EFAULT;
32336 to += addrlen;
32337 diff --git a/net/sctp/sysctl.c b/net/sctp/sysctl.c
32338 -index dfa532f..1dcfb44 100644
32339 +index 12c7e01..a755b3e 100644
32340 --- a/net/sctp/sysctl.c
32341 +++ b/net/sctp/sysctl.c
32342 -@@ -307,7 +307,7 @@ static int proc_sctp_do_hmac_alg(struct ctl_table *ctl, int write,
32343 +@@ -321,7 +321,7 @@ static int proc_sctp_do_hmac_alg(struct ctl_table *ctl, int write,
32344 loff_t *ppos)
32345 {
32346 struct net *net = current->nsproxy->net_ns;
32347 @@ -103425,7 +111541,7 @@ index dfa532f..1dcfb44 100644
32348 bool changed = false;
32349 char *none = "none";
32350 char tmp[8];
32351 -@@ -355,7 +355,7 @@ static int proc_sctp_do_rto_min(struct ctl_table *ctl, int write,
32352 +@@ -369,7 +369,7 @@ static int proc_sctp_do_rto_min(struct ctl_table *ctl, int write,
32353 struct net *net = current->nsproxy->net_ns;
32354 unsigned int min = *(unsigned int *) ctl->extra1;
32355 unsigned int max = *(unsigned int *) ctl->extra2;
32356 @@ -103434,7 +111550,7 @@ index dfa532f..1dcfb44 100644
32357 int ret, new_value;
32358
32359 memset(&tbl, 0, sizeof(struct ctl_table));
32360 -@@ -384,7 +384,7 @@ static int proc_sctp_do_rto_max(struct ctl_table *ctl, int write,
32361 +@@ -398,7 +398,7 @@ static int proc_sctp_do_rto_max(struct ctl_table *ctl, int write,
32362 struct net *net = current->nsproxy->net_ns;
32363 unsigned int min = *(unsigned int *) ctl->extra1;
32364 unsigned int max = *(unsigned int *) ctl->extra2;
32365 @@ -103443,7 +111559,7 @@ index dfa532f..1dcfb44 100644
32366 int ret, new_value;
32367
32368 memset(&tbl, 0, sizeof(struct ctl_table));
32369 -@@ -411,7 +411,7 @@ static int proc_sctp_do_auth(struct ctl_table *ctl, int write,
32370 +@@ -435,7 +435,7 @@ static int proc_sctp_do_auth(struct ctl_table *ctl, int write,
32371 loff_t *ppos)
32372 {
32373 struct net *net = current->nsproxy->net_ns;
32374 @@ -103452,32 +111568,28 @@ index dfa532f..1dcfb44 100644
32375 int new_value, ret;
32376
32377 memset(&tbl, 0, sizeof(struct ctl_table));
32378 -@@ -438,7 +438,7 @@ static int proc_sctp_do_auth(struct ctl_table *ctl, int write,
32379 +@@ -462,7 +462,7 @@ static int proc_sctp_do_auth(struct ctl_table *ctl, int write,
32380
32381 int sctp_sysctl_net_register(struct net *net)
32382 {
32383 -- struct ctl_table *table = sctp_net_table;
32384 -+ ctl_table_no_const *table = NULL;
32385 -
32386 - if (!net_eq(net, &init_net)) {
32387 - int i;
32388 -@@ -451,7 +451,10 @@ int sctp_sysctl_net_register(struct net *net)
32389 - table[i].data += (char *)(&net->sctp) - (char *)&init_net.sctp;
32390 - }
32391 -
32392 -- net->sctp.sysctl_header = register_net_sysctl(net, "net/sctp", table);
32393 -+ if (!net_eq(net, &init_net))
32394 -+ net->sctp.sysctl_header = register_net_sysctl(net, "net/sctp", table);
32395 -+ else
32396 -+ net->sctp.sysctl_header = register_net_sysctl(net, "net/sctp", sctp_net_table);
32397 - return 0;
32398 - }
32399 +- struct ctl_table *table;
32400 ++ ctl_table_no_const *table;
32401 + int i;
32402
32403 + table = kmemdup(sctp_net_table, sizeof(sctp_net_table), GFP_KERNEL);
32404 diff --git a/net/socket.c b/net/socket.c
32405 -index abf56b2..b8998bc 100644
32406 +index abf56b2..4cac767 100644
32407 --- a/net/socket.c
32408 +++ b/net/socket.c
32409 -@@ -89,6 +89,7 @@
32410 +@@ -72,7 +72,6 @@
32411 + #include <linux/if_bridge.h>
32412 + #include <linux/if_frad.h>
32413 + #include <linux/if_vlan.h>
32414 +-#include <linux/ptp_classify.h>
32415 + #include <linux/init.h>
32416 + #include <linux/poll.h>
32417 + #include <linux/cache.h>
32418 +@@ -89,6 +88,7 @@
32419 #include <linux/magic.h>
32420 #include <linux/slab.h>
32421 #include <linux/xattr.h>
32422 @@ -103485,7 +111597,7 @@ index abf56b2..b8998bc 100644
32423
32424 #include <asm/uaccess.h>
32425 #include <asm/unistd.h>
32426 -@@ -112,6 +113,8 @@ unsigned int sysctl_net_busy_read __read_mostly;
32427 +@@ -112,6 +112,8 @@ unsigned int sysctl_net_busy_read __read_mostly;
32428 unsigned int sysctl_net_busy_poll __read_mostly;
32429 #endif
32430
32431 @@ -103494,7 +111606,7 @@ index abf56b2..b8998bc 100644
32432 static int sock_no_open(struct inode *irrelevant, struct file *dontcare);
32433 static ssize_t sock_aio_read(struct kiocb *iocb, const struct iovec *iov,
32434 unsigned long nr_segs, loff_t pos);
32435 -@@ -163,7 +166,7 @@ static const struct file_operations socket_file_ops = {
32436 +@@ -163,7 +165,7 @@ static const struct file_operations socket_file_ops = {
32437 */
32438
32439 static DEFINE_SPINLOCK(net_family_lock);
32440 @@ -103503,7 +111615,7 @@ index abf56b2..b8998bc 100644
32441
32442 /*
32443 * Statistics counters of the socket lists
32444 -@@ -329,7 +332,7 @@ static struct dentry *sockfs_mount(struct file_system_type *fs_type,
32445 +@@ -329,7 +331,7 @@ static struct dentry *sockfs_mount(struct file_system_type *fs_type,
32446 &sockfs_dentry_operations, SOCKFS_MAGIC);
32447 }
32448
32449 @@ -103512,7 +111624,7 @@ index abf56b2..b8998bc 100644
32450
32451 static struct file_system_type sock_fs_type = {
32452 .name = "sockfs",
32453 -@@ -1257,6 +1260,8 @@ int __sock_create(struct net *net, int family, int type, int protocol,
32454 +@@ -1257,6 +1259,8 @@ int __sock_create(struct net *net, int family, int type, int protocol,
32455 return -EAFNOSUPPORT;
32456 if (type < 0 || type >= SOCK_MAX)
32457 return -EINVAL;
32458 @@ -103521,7 +111633,7 @@ index abf56b2..b8998bc 100644
32459
32460 /* Compatibility.
32461
32462 -@@ -1277,6 +1282,20 @@ int __sock_create(struct net *net, int family, int type, int protocol,
32463 +@@ -1277,6 +1281,20 @@ int __sock_create(struct net *net, int family, int type, int protocol,
32464 if (err)
32465 return err;
32466
32467 @@ -103542,7 +111654,7 @@ index abf56b2..b8998bc 100644
32468 /*
32469 * Allocate the socket and allow the family to set things up. if
32470 * the protocol is 0, the family is instructed to select an appropriate
32471 -@@ -1528,6 +1547,14 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen)
32472 +@@ -1528,6 +1546,14 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen)
32473 if (sock) {
32474 err = move_addr_to_kernel(umyaddr, addrlen, &address);
32475 if (err >= 0) {
32476 @@ -103557,7 +111669,7 @@ index abf56b2..b8998bc 100644
32477 err = security_socket_bind(sock,
32478 (struct sockaddr *)&address,
32479 addrlen);
32480 -@@ -1536,6 +1563,7 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen)
32481 +@@ -1536,6 +1562,7 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen)
32482 (struct sockaddr *)
32483 &address, addrlen);
32484 }
32485 @@ -103565,7 +111677,7 @@ index abf56b2..b8998bc 100644
32486 fput_light(sock->file, fput_needed);
32487 }
32488 return err;
32489 -@@ -1559,10 +1587,20 @@ SYSCALL_DEFINE2(listen, int, fd, int, backlog)
32490 +@@ -1559,10 +1586,20 @@ SYSCALL_DEFINE2(listen, int, fd, int, backlog)
32491 if ((unsigned int)backlog > somaxconn)
32492 backlog = somaxconn;
32493
32494 @@ -103586,7 +111698,7 @@ index abf56b2..b8998bc 100644
32495 fput_light(sock->file, fput_needed);
32496 }
32497 return err;
32498 -@@ -1606,6 +1644,18 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr,
32499 +@@ -1606,6 +1643,18 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr,
32500 newsock->type = sock->type;
32501 newsock->ops = sock->ops;
32502
32503 @@ -103605,7 +111717,7 @@ index abf56b2..b8998bc 100644
32504 /*
32505 * We don't need try_module_get here, as the listening socket (sock)
32506 * has the protocol module (sock->ops->owner) held.
32507 -@@ -1651,6 +1701,8 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr,
32508 +@@ -1651,6 +1700,8 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr,
32509 fd_install(newfd, newfile);
32510 err = newfd;
32511
32512 @@ -103614,7 +111726,7 @@ index abf56b2..b8998bc 100644
32513 out_put:
32514 fput_light(sock->file, fput_needed);
32515 out:
32516 -@@ -1683,6 +1735,7 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr,
32517 +@@ -1683,6 +1734,7 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr,
32518 int, addrlen)
32519 {
32520 struct socket *sock;
32521 @@ -103622,7 +111734,7 @@ index abf56b2..b8998bc 100644
32522 struct sockaddr_storage address;
32523 int err, fput_needed;
32524
32525 -@@ -1693,6 +1746,17 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr,
32526 +@@ -1693,6 +1745,17 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr,
32527 if (err < 0)
32528 goto out_put;
32529
32530 @@ -103640,7 +111752,7 @@ index abf56b2..b8998bc 100644
32531 err =
32532 security_socket_connect(sock, (struct sockaddr *)&address, addrlen);
32533 if (err)
32534 -@@ -1774,6 +1838,8 @@ SYSCALL_DEFINE3(getpeername, int, fd, struct sockaddr __user *, usockaddr,
32535 +@@ -1774,6 +1837,8 @@ SYSCALL_DEFINE3(getpeername, int, fd, struct sockaddr __user *, usockaddr,
32536 * the protocol.
32537 */
32538
32539 @@ -103649,7 +111761,7 @@ index abf56b2..b8998bc 100644
32540 SYSCALL_DEFINE6(sendto, int, fd, void __user *, buff, size_t, len,
32541 unsigned int, flags, struct sockaddr __user *, addr,
32542 int, addr_len)
32543 -@@ -1840,7 +1906,7 @@ SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size,
32544 +@@ -1840,7 +1905,7 @@ SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size,
32545 struct socket *sock;
32546 struct iovec iov;
32547 struct msghdr msg;
32548 @@ -103658,7 +111770,7 @@ index abf56b2..b8998bc 100644
32549 int err, err2;
32550 int fput_needed;
32551
32552 -@@ -2066,7 +2132,7 @@ static int ___sys_sendmsg(struct socket *sock, struct msghdr __user *msg,
32553 +@@ -2066,7 +2131,7 @@ static int ___sys_sendmsg(struct socket *sock, struct msghdr __user *msg,
32554 * checking falls down on this.
32555 */
32556 if (copy_from_user(ctl_buf,
32557 @@ -103667,7 +111779,7 @@ index abf56b2..b8998bc 100644
32558 ctl_len))
32559 goto out_freectl;
32560 msg_sys->msg_control = ctl_buf;
32561 -@@ -2217,7 +2283,7 @@ static int ___sys_recvmsg(struct socket *sock, struct msghdr __user *msg,
32562 +@@ -2217,7 +2282,7 @@ static int ___sys_recvmsg(struct socket *sock, struct msghdr __user *msg,
32563 int err, total_len, len;
32564
32565 /* kernel mode address */
32566 @@ -103676,7 +111788,7 @@ index abf56b2..b8998bc 100644
32567
32568 /* user mode address pointers */
32569 struct sockaddr __user *uaddr;
32570 -@@ -2246,7 +2312,7 @@ static int ___sys_recvmsg(struct socket *sock, struct msghdr __user *msg,
32571 +@@ -2246,7 +2311,7 @@ static int ___sys_recvmsg(struct socket *sock, struct msghdr __user *msg,
32572 /* Save the user-mode address (verify_iovec will change the
32573 * kernel msghdr to use the kernel address space)
32574 */
32575 @@ -103685,7 +111797,18 @@ index abf56b2..b8998bc 100644
32576 uaddr_len = COMPAT_NAMELEN(msg);
32577 if (MSG_CMSG_COMPAT & flags)
32578 err = verify_compat_iovec(msg_sys, iov, &addr, VERIFY_WRITE);
32579 -@@ -2887,7 +2953,7 @@ static int ethtool_ioctl(struct net *net, struct compat_ifreq __user *ifr32)
32580 +@@ -2686,7 +2751,9 @@ static int __init sock_init(void)
32581 + goto out;
32582 + #endif
32583 +
32584 +- ptp_classifier_init();
32585 ++#ifdef CONFIG_NETWORK_PHY_TIMESTAMPING
32586 ++ skb_timestamping_init();
32587 ++#endif
32588 +
32589 + out:
32590 + return err;
32591 +@@ -2887,7 +2954,7 @@ static int ethtool_ioctl(struct net *net, struct compat_ifreq __user *ifr32)
32592 ifr = compat_alloc_user_space(buf_size);
32593 rxnfc = (void __user *)ifr + ALIGN(sizeof(struct ifreq), 8);
32594
32595 @@ -103694,7 +111817,7 @@ index abf56b2..b8998bc 100644
32596 return -EFAULT;
32597
32598 if (put_user(convert_in ? rxnfc : compat_ptr(data),
32599 -@@ -2998,7 +3064,7 @@ static int bond_ioctl(struct net *net, unsigned int cmd,
32600 +@@ -2998,7 +3065,7 @@ static int bond_ioctl(struct net *net, unsigned int cmd,
32601 old_fs = get_fs();
32602 set_fs(KERNEL_DS);
32603 err = dev_ioctl(net, cmd,
32604 @@ -103703,7 +111826,7 @@ index abf56b2..b8998bc 100644
32605 set_fs(old_fs);
32606
32607 return err;
32608 -@@ -3091,7 +3157,7 @@ static int compat_sioc_ifmap(struct net *net, unsigned int cmd,
32609 +@@ -3091,7 +3158,7 @@ static int compat_sioc_ifmap(struct net *net, unsigned int cmd,
32610
32611 old_fs = get_fs();
32612 set_fs(KERNEL_DS);
32613 @@ -103712,7 +111835,7 @@ index abf56b2..b8998bc 100644
32614 set_fs(old_fs);
32615
32616 if (cmd == SIOCGIFMAP && !err) {
32617 -@@ -3175,7 +3241,7 @@ static int routing_ioctl(struct net *net, struct socket *sock,
32618 +@@ -3175,7 +3242,7 @@ static int routing_ioctl(struct net *net, struct socket *sock,
32619 ret |= get_user(rtdev, &(ur4->rt_dev));
32620 if (rtdev) {
32621 ret |= copy_from_user(devname, compat_ptr(rtdev), 15);
32622 @@ -103721,7 +111844,7 @@ index abf56b2..b8998bc 100644
32623 devname[15] = 0;
32624 } else
32625 r4.rt_dev = NULL;
32626 -@@ -3402,8 +3468,8 @@ int kernel_getsockopt(struct socket *sock, int level, int optname,
32627 +@@ -3402,8 +3469,8 @@ int kernel_getsockopt(struct socket *sock, int level, int optname,
32628 int __user *uoptlen;
32629 int err;
32630
32631 @@ -103732,7 +111855,7 @@ index abf56b2..b8998bc 100644
32632
32633 set_fs(KERNEL_DS);
32634 if (level == SOL_SOCKET)
32635 -@@ -3423,7 +3489,7 @@ int kernel_setsockopt(struct socket *sock, int level, int optname,
32636 +@@ -3423,7 +3490,7 @@ int kernel_setsockopt(struct socket *sock, int level, int optname,
32637 char __user *uoptval;
32638 int err;
32639
32640 @@ -103742,7 +111865,7 @@ index abf56b2..b8998bc 100644
32641 set_fs(KERNEL_DS);
32642 if (level == SOL_SOCKET)
32643 diff --git a/net/sunrpc/auth_gss/svcauth_gss.c b/net/sunrpc/auth_gss/svcauth_gss.c
32644 -index 0f73f45..a96aa52 100644
32645 +index 4ce5ecce..7bef300 100644
32646 --- a/net/sunrpc/auth_gss/svcauth_gss.c
32647 +++ b/net/sunrpc/auth_gss/svcauth_gss.c
32648 @@ -1140,7 +1140,7 @@ static int gss_proxy_save_rsc(struct cache_detail *cd,
32649 @@ -103764,7 +111887,7 @@ index 0f73f45..a96aa52 100644
32650 /* make a copy for the caller */
32651 *handle = ctxh;
32652 diff --git a/net/sunrpc/cache.c b/net/sunrpc/cache.c
32653 -index ae333c1..18521f0 100644
32654 +index 0663621..c4928d4 100644
32655 --- a/net/sunrpc/cache.c
32656 +++ b/net/sunrpc/cache.c
32657 @@ -1609,7 +1609,7 @@ static int create_cache_proc_entries(struct cache_detail *cd, struct net *net)
32658 @@ -103792,7 +111915,7 @@ index 2e6ab10..3170800 100644
32659 task->tk_action = call_reserve;
32660 }
32661 diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c
32662 -index 25578af..a29298d 100644
32663 +index c0365c1..b7f02b3 100644
32664 --- a/net/sunrpc/sched.c
32665 +++ b/net/sunrpc/sched.c
32666 @@ -261,9 +261,9 @@ static int rpc_wait_bit_killable(void *word)
32667 @@ -103969,19 +112092,28 @@ index c1b6270..05089c1 100644
32668 .proc_handler = read_reset_stat,
32669 },
32670 diff --git a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
32671 -index 8d904e4..b2fc727 100644
32672 +index 8f92a61..eb13b74 100644
32673 --- a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
32674 +++ b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
32675 -@@ -504,7 +504,7 @@ next_sge:
32676 - svc_rdma_put_context(ctxt, 0);
32677 - goto out;
32678 - }
32679 -- atomic_inc(&rdma_stat_read);
32680 -+ atomic_inc_unchecked(&rdma_stat_read);
32681 -
32682 - if (read_wr.num_sge < chl_map->ch[ch_no].count) {
32683 - chl_map->ch[ch_no].count -= read_wr.num_sge;
32684 -@@ -607,7 +607,7 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp)
32685 +@@ -219,7 +219,7 @@ static int rdma_read_chunk_lcl(struct svcxprt_rdma *xprt,
32686 + *page_no = pg_no;
32687 + *page_offset = pg_off;
32688 + ret = read;
32689 +- atomic_inc(&rdma_stat_read);
32690 ++ atomic_inc_unchecked(&rdma_stat_read);
32691 + return ret;
32692 + err:
32693 + svc_rdma_unmap_dma(ctxt);
32694 +@@ -355,7 +355,7 @@ static int rdma_read_chunk_frmr(struct svcxprt_rdma *xprt,
32695 + *page_no = pg_no;
32696 + *page_offset = pg_off;
32697 + ret = read;
32698 +- atomic_inc(&rdma_stat_read);
32699 ++ atomic_inc_unchecked(&rdma_stat_read);
32700 + return ret;
32701 + err:
32702 + svc_rdma_unmap_dma(ctxt);
32703 +@@ -512,7 +512,7 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp)
32704 dto_q);
32705 list_del_init(&ctxt->dto_q);
32706 } else {
32707 @@ -103990,7 +112122,7 @@ index 8d904e4..b2fc727 100644
32708 clear_bit(XPT_DATA, &xprt->xpt_flags);
32709 ctxt = NULL;
32710 }
32711 -@@ -627,7 +627,7 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp)
32712 +@@ -531,7 +531,7 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp)
32713 dprintk("svcrdma: processing ctxt=%p on xprt=%p, rqstp=%p, status=%d\n",
32714 ctxt, rdma_xprt, rqstp, ctxt->wc_status);
32715 BUG_ON(ctxt->wc_status != IB_WC_SUCCESS);
32716 @@ -104000,10 +112132,10 @@ index 8d904e4..b2fc727 100644
32717 /* Build up the XDR from the receive buffers. */
32718 rdma_build_arg_xdr(rqstp, ctxt, ctxt->byte_len);
32719 diff --git a/net/sunrpc/xprtrdma/svc_rdma_sendto.c b/net/sunrpc/xprtrdma/svc_rdma_sendto.c
32720 -index 7e024a5..17f13d3 100644
32721 +index 49fd21a..4bc455b 100644
32722 --- a/net/sunrpc/xprtrdma/svc_rdma_sendto.c
32723 +++ b/net/sunrpc/xprtrdma/svc_rdma_sendto.c
32724 -@@ -363,7 +363,7 @@ static int send_write(struct svcxprt_rdma *xprt, struct svc_rqst *rqstp,
32725 +@@ -206,7 +206,7 @@ static int send_write(struct svcxprt_rdma *xprt, struct svc_rqst *rqstp,
32726 write_wr.wr.rdma.remote_addr = to;
32727
32728 /* Post It */
32729 @@ -104013,10 +112145,10 @@ index 7e024a5..17f13d3 100644
32730 goto err;
32731 return 0;
32732 diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c
32733 -index 25688fa..dc72003 100644
32734 +index e7323fb..5e892b3 100644
32735 --- a/net/sunrpc/xprtrdma/svc_rdma_transport.c
32736 +++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c
32737 -@@ -292,7 +292,7 @@ static void rq_cq_reap(struct svcxprt_rdma *xprt)
32738 +@@ -294,7 +294,7 @@ static void rq_cq_reap(struct svcxprt_rdma *xprt)
32739 return;
32740
32741 ib_req_notify_cq(xprt->sc_rq_cq, IB_CQ_NEXT_COMP);
32742 @@ -104025,7 +112157,7 @@ index 25688fa..dc72003 100644
32743
32744 while ((ret = ib_poll_cq(xprt->sc_rq_cq, 1, &wc)) > 0) {
32745 ctxt = (struct svc_rdma_op_ctxt *)(unsigned long)wc.wr_id;
32746 -@@ -314,7 +314,7 @@ static void rq_cq_reap(struct svcxprt_rdma *xprt)
32747 +@@ -316,7 +316,7 @@ static void rq_cq_reap(struct svcxprt_rdma *xprt)
32748 }
32749
32750 if (ctxt)
32751 @@ -104034,16 +112166,16 @@ index 25688fa..dc72003 100644
32752
32753 set_bit(XPT_DATA, &xprt->sc_xprt.xpt_flags);
32754 /*
32755 -@@ -386,7 +386,7 @@ static void sq_cq_reap(struct svcxprt_rdma *xprt)
32756 +@@ -391,7 +391,7 @@ static void sq_cq_reap(struct svcxprt_rdma *xprt)
32757 return;
32758
32759 ib_req_notify_cq(xprt->sc_sq_cq, IB_CQ_NEXT_COMP);
32760 - atomic_inc(&rdma_stat_sq_poll);
32761 + atomic_inc_unchecked(&rdma_stat_sq_poll);
32762 - while ((ret = ib_poll_cq(cq, 1, &wc)) > 0) {
32763 - if (wc.status != IB_WC_SUCCESS)
32764 - /* Close the transport */
32765 -@@ -404,7 +404,7 @@ static void sq_cq_reap(struct svcxprt_rdma *xprt)
32766 + while ((ret = ib_poll_cq(cq, ARRAY_SIZE(wc_a), wc_a)) > 0) {
32767 + int i;
32768 +
32769 +@@ -419,7 +419,7 @@ static void sq_cq_reap(struct svcxprt_rdma *xprt)
32770 }
32771
32772 if (ctxt)
32773 @@ -104052,7 +112184,7 @@ index 25688fa..dc72003 100644
32774 }
32775
32776 static void sq_comp_handler(struct ib_cq *cq, void *cq_context)
32777 -@@ -1261,7 +1261,7 @@ int svc_rdma_send(struct svcxprt_rdma *xprt, struct ib_send_wr *wr)
32778 +@@ -1278,7 +1278,7 @@ int svc_rdma_send(struct svcxprt_rdma *xprt, struct ib_send_wr *wr)
32779 spin_lock_bh(&xprt->sc_lock);
32780 if (xprt->sc_sq_depth < atomic_read(&xprt->sc_sq_count) + wr_count) {
32781 spin_unlock_bh(&xprt->sc_lock);
32782 @@ -104088,7 +112220,7 @@ index 6424372..afd36e9 100644
32783 sub->evt.event = htohl(event, sub->swap);
32784 sub->evt.found_lower = htohl(found_lower, sub->swap);
32785 diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
32786 -index bb7e8ba..9f444c6 100644
32787 +index e968843..bc95776 100644
32788 --- a/net/unix/af_unix.c
32789 +++ b/net/unix/af_unix.c
32790 @@ -791,6 +791,12 @@ static struct sock *unix_find_other(struct net *net,
32791 @@ -104137,7 +112269,7 @@ index bb7e8ba..9f444c6 100644
32792 done_path_create(&path, dentry);
32793 return err;
32794 }
32795 -@@ -2344,9 +2363,13 @@ static int unix_seq_show(struct seq_file *seq, void *v)
32796 +@@ -2350,9 +2369,13 @@ static int unix_seq_show(struct seq_file *seq, void *v)
32797 seq_puts(seq, "Num RefCount Protocol Flags Type St "
32798 "Inode Path\n");
32799 else {
32800 @@ -104152,7 +112284,7 @@ index bb7e8ba..9f444c6 100644
32801
32802 seq_printf(seq, "%pK: %08X %08X %08X %04X %02X %5lu",
32803 s,
32804 -@@ -2373,8 +2396,10 @@ static int unix_seq_show(struct seq_file *seq, void *v)
32805 +@@ -2379,8 +2402,10 @@ static int unix_seq_show(struct seq_file *seq, void *v)
32806 }
32807 for ( ; i < len; i++)
32808 seq_putc(seq, u->addr->name->sun_path[i]);
32809 @@ -104320,7 +112452,7 @@ index 0917f04..f4e3d8c 100644
32810
32811 if (!proc_create("x25/route", S_IRUGO, init_net.proc_net,
32812 diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
32813 -index ed60843..311e7c7 100644
32814 +index 0525d78..cccf7fd 100644
32815 --- a/net/xfrm/xfrm_policy.c
32816 +++ b/net/xfrm/xfrm_policy.c
32817 @@ -325,7 +325,7 @@ static void xfrm_policy_kill(struct xfrm_policy *policy)
32818 @@ -104341,7 +112473,7 @@ index ed60843..311e7c7 100644
32819
32820 /* After previous checking, family can either be AF_INET or AF_INET6 */
32821 if (policy->family == AF_INET)
32822 -@@ -1759,7 +1759,7 @@ xfrm_resolve_and_create_bundle(struct xfrm_policy **pols, int num_pols,
32823 +@@ -1749,7 +1749,7 @@ xfrm_resolve_and_create_bundle(struct xfrm_policy **pols, int num_pols,
32824
32825 xdst->num_pols = num_pols;
32826 memcpy(xdst->pols, pols, sizeof(struct xfrm_policy *) * num_pols);
32827 @@ -104350,7 +112482,7 @@ index ed60843..311e7c7 100644
32828
32829 return xdst;
32830 }
32831 -@@ -2548,10 +2548,11 @@ void xfrm_garbage_collect(struct net *net)
32832 +@@ -2538,10 +2538,11 @@ void xfrm_garbage_collect(struct net *net)
32833 }
32834 EXPORT_SYMBOL(xfrm_garbage_collect);
32835
32836 @@ -104363,7 +112495,7 @@ index ed60843..311e7c7 100644
32837
32838 static void xfrm_init_pmtu(struct dst_entry *dst)
32839 {
32840 -@@ -2601,7 +2602,7 @@ static int xfrm_bundle_ok(struct xfrm_dst *first)
32841 +@@ -2591,7 +2592,7 @@ static int xfrm_bundle_ok(struct xfrm_dst *first)
32842 if (xdst->xfrm_genid != dst->xfrm->genid)
32843 return 0;
32844 if (xdst->num_pols > 0 &&
32845 @@ -104372,7 +112504,7 @@ index ed60843..311e7c7 100644
32846 return 0;
32847
32848 mtu = dst_mtu(dst->child);
32849 -@@ -2689,8 +2690,6 @@ int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo)
32850 +@@ -2679,8 +2680,6 @@ int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo)
32851 dst_ops->link_failure = xfrm_link_failure;
32852 if (likely(dst_ops->neigh_lookup == NULL))
32853 dst_ops->neigh_lookup = xfrm_neigh_lookup;
32854 @@ -104381,7 +112513,7 @@ index ed60843..311e7c7 100644
32855 rcu_assign_pointer(xfrm_policy_afinfo[afinfo->family], afinfo);
32856 }
32857 spin_unlock(&xfrm_policy_afinfo_lock);
32858 -@@ -2744,7 +2743,6 @@ int xfrm_policy_unregister_afinfo(struct xfrm_policy_afinfo *afinfo)
32859 +@@ -2734,7 +2733,6 @@ int xfrm_policy_unregister_afinfo(struct xfrm_policy_afinfo *afinfo)
32860 dst_ops->check = NULL;
32861 dst_ops->negative_advice = NULL;
32862 dst_ops->link_failure = NULL;
32863 @@ -104389,7 +112521,7 @@ index ed60843..311e7c7 100644
32864 }
32865 return err;
32866 }
32867 -@@ -3139,7 +3137,7 @@ static int xfrm_policy_migrate(struct xfrm_policy *pol,
32868 +@@ -3119,7 +3117,7 @@ static int xfrm_policy_migrate(struct xfrm_policy *pol,
32869 sizeof(pol->xfrm_vec[i].saddr));
32870 pol->xfrm_vec[i].encap_family = mp->new_family;
32871 /* flush bundles */
32872 @@ -104399,7 +112531,7 @@ index ed60843..311e7c7 100644
32873 }
32874
32875 diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
32876 -index 8e9c781..3972135 100644
32877 +index 0ab5413..73dd2cf 100644
32878 --- a/net/xfrm/xfrm_state.c
32879 +++ b/net/xfrm/xfrm_state.c
32880 @@ -173,12 +173,14 @@ int xfrm_register_type(const struct xfrm_type *type, unsigned short family)
32881 @@ -104493,7 +112625,7 @@ index 8e9c781..3972135 100644
32882 module_put(mode->afinfo->owner);
32883 err = 0;
32884 }
32885 -@@ -1519,10 +1526,10 @@ EXPORT_SYMBOL(xfrm_find_acq_byseq);
32886 +@@ -1512,10 +1519,10 @@ EXPORT_SYMBOL(xfrm_find_acq_byseq);
32887 u32 xfrm_get_acqseq(void)
32888 {
32889 u32 res;
32890 @@ -104519,21 +112651,11 @@ index 05a6e3d..6716ec9 100644
32891
32892 __xfrm_sysctl_init(net);
32893
32894 -diff --git a/scripts/Makefile b/scripts/Makefile
32895 -index 1d07860..f16fc22 100644
32896 ---- a/scripts/Makefile
32897 -+++ b/scripts/Makefile
32898 -@@ -40,3 +40,5 @@ subdir-$(CONFIG_DTC) += dtc
32899 -
32900 - # Let clean descend into subdirs
32901 - subdir- += basic kconfig package selinux
32902 -+
32903 -+clean-files := randstruct.seed
32904 diff --git a/scripts/Makefile.build b/scripts/Makefile.build
32905 -index 003bc26..d5f02b0 100644
32906 +index bf3e677..c7d426e 100644
32907 --- a/scripts/Makefile.build
32908 +++ b/scripts/Makefile.build
32909 -@@ -121,7 +121,7 @@ endif
32910 +@@ -60,7 +60,7 @@ endif
32911 endif
32912
32913 # Do not include host rules unless needed
32914 @@ -104557,7 +112679,7 @@ index 686cb0d..9d653bf 100644
32915 __clean-files := $(filter-out $(no-clean-files), $(__clean-files))
32916
32917 diff --git a/scripts/Makefile.host b/scripts/Makefile.host
32918 -index 1ac414f..38575f7 100644
32919 +index 6689364..e56dc6a 100644
32920 --- a/scripts/Makefile.host
32921 +++ b/scripts/Makefile.host
32922 @@ -31,6 +31,8 @@
32923 @@ -104610,7 +112732,7 @@ index 1ac414f..38575f7 100644
32924 # Link a shared library, based on position independent .o files
32925 # *.o -> .so shared library (host-cshlib)
32926 quiet_cmd_host-cshlib = HOSTLLD -shared $@
32927 -@@ -165,6 +180,15 @@ quiet_cmd_host-cshlib = HOSTLLD -shared $@
32928 +@@ -165,5 +180,14 @@ quiet_cmd_host-cshlib = HOSTLLD -shared $@
32929 $(host-cshlib): $(obj)/%: $(host-cshobjs) FORCE
32930 $(call if_changed,host-cshlib)
32931
32932 @@ -104624,11 +112746,10 @@ index 1ac414f..38575f7 100644
32933 + $(call if_changed,host-cxxshlib)
32934 +
32935 targets += $(host-csingle) $(host-cmulti) $(host-cobjs)\
32936 -- $(host-cxxmulti) $(host-cxxobjs) $(host-cshlib) $(host-cshobjs)
32937 +- $(host-cxxmulti) $(host-cxxobjs) $(host-cshlib) $(host-cshobjs)
32938 + $(host-cxxmulti) $(host-cxxobjs) $(host-cshlib) $(host-cshobjs) $(host-cxxshlib) $(host-cxxshobjs)
32939 -
32940 diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c
32941 -index 078fe1d..fbdb363 100644
32942 +index b304068..462d24e 100644
32943 --- a/scripts/basic/fixdep.c
32944 +++ b/scripts/basic/fixdep.c
32945 @@ -161,7 +161,7 @@ static unsigned int strhash(const char *str, unsigned int sz)
32946 @@ -104749,7 +112870,7 @@ index 86a4fe7..99e91f9 100644
32947 kallsymso=""
32948 kallsyms_vmlinux=""
32949 diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
32950 -index 1924990..3de7363 100644
32951 +index e614ef6..d9d2b01 100644
32952 --- a/scripts/mod/file2alias.c
32953 +++ b/scripts/mod/file2alias.c
32954 @@ -142,7 +142,7 @@ static void device_id_check(const char *modname, const char *device_id,
32955 @@ -104806,7 +112927,7 @@ index 1924990..3de7363 100644
32956
32957 buf_printf(&mod->dev_table_buf,
32958 "MODULE_ALIAS(\"pnp:d%s*\");\n", id);
32959 -@@ -941,7 +941,7 @@ static void dmi_ascii_filter(char *d, const char *s)
32960 +@@ -939,7 +939,7 @@ static void dmi_ascii_filter(char *d, const char *s)
32961 static int do_dmi_entry(const char *filename, void *symval,
32962 char *alias)
32963 {
32964 @@ -104816,7 +112937,7 @@ index 1924990..3de7363 100644
32965 sprintf(alias, "dmi*");
32966
32967 diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
32968 -index 0663556..d9494f0 100644
32969 +index 9d9c5b9..a3af177 100644
32970 --- a/scripts/mod/modpost.c
32971 +++ b/scripts/mod/modpost.c
32972 @@ -949,6 +949,7 @@ enum mismatch {
32973 @@ -104870,7 +112991,7 @@ index 0663556..d9494f0 100644
32974 }
32975 @@ -1687,7 +1702,7 @@ static void section_rel(const char *modname, struct elf_info *elf,
32976 static void check_sec_ref(struct module *mod, const char *modname,
32977 - struct elf_info *elf)
32978 + struct elf_info *elf)
32979 {
32980 - int i;
32981 + unsigned int i;
32982 @@ -104919,7 +113040,7 @@ index 168b43d..77914bf 100644
32983 struct module {
32984 struct module *next;
32985 diff --git a/scripts/mod/sumversion.c b/scripts/mod/sumversion.c
32986 -index deb2994..af4f63e 100644
32987 +index 944418d..15291e4 100644
32988 --- a/scripts/mod/sumversion.c
32989 +++ b/scripts/mod/sumversion.c
32990 @@ -470,7 +470,7 @@ static void write_version(const char *filename, const char *sum,
32991 @@ -104947,19 +113068,19 @@ index 0865b3e..7235dd4 100644
32992 __ksymtab_gpl : { *(SORT(___ksymtab_gpl+*)) }
32993 __ksymtab_unused : { *(SORT(___ksymtab_unused+*)) }
32994 diff --git a/scripts/package/builddeb b/scripts/package/builddeb
32995 -index 152d4d2..791684c 100644
32996 +index 35d5a58..9e04789 100644
32997 --- a/scripts/package/builddeb
32998 +++ b/scripts/package/builddeb
32999 -@@ -291,6 +291,7 @@ fi
33000 - (cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl > "$objtree/debian/hdrsrcfiles")
33001 - (cd $srctree; find arch/$SRCARCH/include include scripts -type f >> "$objtree/debian/hdrsrcfiles")
33002 - (cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f >> "$objtree/debian/hdrobjfiles")
33003 +@@ -295,6 +295,7 @@ fi
33004 + (cd $srctree; find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform) >> "$objtree/debian/hdrsrcfiles"
33005 + (cd $srctree; find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f) >> "$objtree/debian/hdrsrcfiles"
33006 + (cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f) >> "$objtree/debian/hdrobjfiles"
33007 +(cd $objtree; find tools/gcc -name \*.so >> "$objtree/debian/hdrobjfiles")
33008 destdir=$kernel_headers_dir/usr/src/linux-headers-$version
33009 mkdir -p "$destdir"
33010 - (cd $srctree; tar -c -f - -T "$objtree/debian/hdrsrcfiles") | (cd $destdir; tar -xf -)
33011 + (cd $srctree; tar -c -f - -T -) < "$objtree/debian/hdrsrcfiles" | (cd $destdir; tar -xf -)
33012 diff --git a/scripts/pnmtologo.c b/scripts/pnmtologo.c
33013 -index 68bb4ef..2f419e1 100644
33014 +index 4718d78..9220d58 100644
33015 --- a/scripts/pnmtologo.c
33016 +++ b/scripts/pnmtologo.c
33017 @@ -244,14 +244,14 @@ static void write_header(void)
33018 @@ -106154,10 +114275,10 @@ index 3478965..ec7bb9e 100644
33019 if (iov != iovstack)
33020 kfree(iov);
33021 diff --git a/security/keys/internal.h b/security/keys/internal.h
33022 -index 80b2aac..bb7ee65 100644
33023 +index 5f20da0..444ccf1 100644
33024 --- a/security/keys/internal.h
33025 +++ b/security/keys/internal.h
33026 -@@ -253,7 +253,7 @@ extern long keyctl_instantiate_key_iov(key_serial_t,
33027 +@@ -244,7 +244,7 @@ extern long keyctl_instantiate_key_iov(key_serial_t,
33028 extern long keyctl_invalidate_key(key_serial_t);
33029
33030 extern long keyctl_instantiate_key_common(key_serial_t,
33031 @@ -106167,7 +114288,7 @@ index 80b2aac..bb7ee65 100644
33032 #ifdef CONFIG_PERSISTENT_KEYRINGS
33033 extern long keyctl_get_persistent(uid_t, key_serial_t);
33034 diff --git a/security/keys/key.c b/security/keys/key.c
33035 -index 6e21c11..9ed67ca 100644
33036 +index 2048a11..101df4c 100644
33037 --- a/security/keys/key.c
33038 +++ b/security/keys/key.c
33039 @@ -285,7 +285,7 @@ struct key *key_alloc(struct key_type *type, const char *desc,
33040 @@ -106224,7 +114345,7 @@ index 6e21c11..9ed67ca 100644
33041 /* record the root user tracking */
33042 rb_link_node(&root_key_user.node,
33043 diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c
33044 -index cee72ce..e46074a 100644
33045 +index cd5bd0c..acd0d5c 100644
33046 --- a/security/keys/keyctl.c
33047 +++ b/security/keys/keyctl.c
33048 @@ -987,7 +987,7 @@ static int keyctl_change_reqkey_auth(struct key *key)
33049 @@ -106284,7 +114405,7 @@ index f728728..6457a0c 100644
33050
33051 /*
33052 diff --git a/security/security.c b/security/security.c
33053 -index 8b774f3..a396233 100644
33054 +index 31614e9..8b86b12 100644
33055 --- a/security/security.c
33056 +++ b/security/security.c
33057 @@ -33,8 +33,8 @@
33058 @@ -106311,7 +114432,7 @@ index 8b774f3..a396233 100644
33059 static int __init choose_lsm(char *str)
33060 {
33061 diff --git a/security/selinux/avc.c b/security/selinux/avc.c
33062 -index fc3e662..7844c60 100644
33063 +index a18f1fa..c9b9fc4 100644
33064 --- a/security/selinux/avc.c
33065 +++ b/security/selinux/avc.c
33066 @@ -59,7 +59,7 @@ struct avc_node {
33067 @@ -106342,7 +114463,7 @@ index fc3e662..7844c60 100644
33068 lock = &avc_cache.slots_lock[hvalue];
33069
33070 diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
33071 -index 2c7341d..1da068e 100644
33072 +index 83d06db..d4d6861 100644
33073 --- a/security/selinux/hooks.c
33074 +++ b/security/selinux/hooks.c
33075 @@ -95,8 +95,6 @@
33076 @@ -106354,7 +114475,7 @@ index 2c7341d..1da068e 100644
33077 /* SECMARK reference count */
33078 static atomic_t selinux_secmark_refcount = ATOMIC_INIT(0);
33079
33080 -@@ -5758,7 +5756,7 @@ static int selinux_key_getsecurity(struct key *key, char **_buffer)
33081 +@@ -5761,7 +5759,7 @@ static int selinux_key_getsecurity(struct key *key, char **_buffer)
33082
33083 #endif
33084
33085 @@ -106363,7 +114484,7 @@ index 2c7341d..1da068e 100644
33086 .name = "selinux",
33087
33088 .ptrace_access_check = selinux_ptrace_access_check,
33089 -@@ -6111,6 +6109,9 @@ static void selinux_nf_ip_exit(void)
33090 +@@ -6114,6 +6112,9 @@ static void selinux_nf_ip_exit(void)
33091 #ifdef CONFIG_SECURITY_SELINUX_DISABLE
33092 static int selinux_disabled;
33093
33094 @@ -106373,7 +114494,7 @@ index 2c7341d..1da068e 100644
33095 int selinux_disable(void)
33096 {
33097 if (ss_initialized) {
33098 -@@ -6128,7 +6129,9 @@ int selinux_disable(void)
33099 +@@ -6131,7 +6132,9 @@ int selinux_disable(void)
33100 selinux_disabled = 1;
33101 selinux_enabled = 0;
33102
33103 @@ -106398,10 +114519,10 @@ index 1450f85..a91e0bc 100644
33104 }
33105 rtnl_unlock();
33106 diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
33107 -index 14f52be..7352368 100644
33108 +index f2c3080..813c85e 100644
33109 --- a/security/smack/smack_lsm.c
33110 +++ b/security/smack/smack_lsm.c
33111 -@@ -3726,7 +3726,7 @@ static int smack_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen)
33112 +@@ -3849,7 +3849,7 @@ static int smack_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen)
33113 return 0;
33114 }
33115
33116 @@ -106637,7 +114758,7 @@ index 13c88fbc..f8c115e 100644
33117 { .procname = "kernel", },
33118 { .procname = "yama", },
33119 diff --git a/sound/aoa/codecs/onyx.c b/sound/aoa/codecs/onyx.c
33120 -index f01bffb..bdda392 100644
33121 +index 401107b..b9c47c6 100644
33122 --- a/sound/aoa/codecs/onyx.c
33123 +++ b/sound/aoa/codecs/onyx.c
33124 @@ -54,7 +54,7 @@ struct onyx {
33125 @@ -106842,7 +114963,7 @@ index 91a786a..4c07ed4 100644
33126 dev->driver_data = NULL;
33127 ops->num_init_devices--;
33128 diff --git a/sound/core/seq/seq_midi.c b/sound/core/seq/seq_midi.c
33129 -index 3e05c55..0f02efc 100644
33130 +index a1fd77a..69cd659 100644
33131 --- a/sound/core/seq/seq_midi.c
33132 +++ b/sound/core/seq/seq_midi.c
33133 @@ -462,8 +462,8 @@ snd_seq_midisynth_unregister_port(struct snd_seq_device *dev)
33134 @@ -106994,39 +115115,48 @@ index 78ccfa4..7a0857b 100644
33135 struct snd_rawmidi_substream *midi_input[PORTMAN_NUM_INPUT_PORTS];
33136 };
33137 diff --git a/sound/firewire/amdtp.c b/sound/firewire/amdtp.c
33138 -index 9048777..2d8b1fc 100644
33139 +index f96bf4c..f3bd1e0 100644
33140 --- a/sound/firewire/amdtp.c
33141 +++ b/sound/firewire/amdtp.c
33142 -@@ -488,7 +488,7 @@ static void queue_out_packet(struct amdtp_out_stream *s, unsigned int cycle)
33143 - ptr = s->pcm_buffer_pointer + data_blocks;
33144 - if (ptr >= pcm->runtime->buffer_size)
33145 - ptr -= pcm->runtime->buffer_size;
33146 -- ACCESS_ONCE(s->pcm_buffer_pointer) = ptr;
33147 -+ ACCESS_ONCE_RW(s->pcm_buffer_pointer) = ptr;
33148 -
33149 - s->pcm_period_pointer += data_blocks;
33150 - if (s->pcm_period_pointer >= pcm->runtime->period_size) {
33151 -@@ -655,7 +655,7 @@ EXPORT_SYMBOL(amdtp_out_stream_pcm_pointer);
33152 +@@ -512,7 +512,7 @@ static void update_pcm_pointers(struct amdtp_stream *s,
33153 + ptr = s->pcm_buffer_pointer + frames;
33154 + if (ptr >= pcm->runtime->buffer_size)
33155 + ptr -= pcm->runtime->buffer_size;
33156 +- ACCESS_ONCE(s->pcm_buffer_pointer) = ptr;
33157 ++ ACCESS_ONCE_RW(s->pcm_buffer_pointer) = ptr;
33158 +
33159 + s->pcm_period_pointer += frames;
33160 + if (s->pcm_period_pointer >= pcm->runtime->period_size) {
33161 +@@ -952,7 +952,7 @@ EXPORT_SYMBOL(amdtp_stream_pcm_pointer);
33162 */
33163 - void amdtp_out_stream_update(struct amdtp_out_stream *s)
33164 + void amdtp_stream_update(struct amdtp_stream *s)
33165 {
33166 - ACCESS_ONCE(s->source_node_id_field) =
33167 + ACCESS_ONCE_RW(s->source_node_id_field) =
33168 (fw_parent_device(s->unit)->card->node_id & 0x3f) << 24;
33169 }
33170 - EXPORT_SYMBOL(amdtp_out_stream_update);
33171 + EXPORT_SYMBOL(amdtp_stream_update);
33172 diff --git a/sound/firewire/amdtp.h b/sound/firewire/amdtp.h
33173 -index 2746ecd..c35dedd 100644
33174 +index d8ee7b0..79dfa2a 100644
33175 --- a/sound/firewire/amdtp.h
33176 +++ b/sound/firewire/amdtp.h
33177 -@@ -135,7 +135,7 @@ static inline bool amdtp_out_streaming_error(struct amdtp_out_stream *s)
33178 - static inline void amdtp_out_stream_pcm_trigger(struct amdtp_out_stream *s,
33179 - struct snd_pcm_substream *pcm)
33180 +@@ -211,7 +211,7 @@ static inline bool amdtp_stream_pcm_running(struct amdtp_stream *s)
33181 + static inline void amdtp_stream_pcm_trigger(struct amdtp_stream *s,
33182 + struct snd_pcm_substream *pcm)
33183 {
33184 - ACCESS_ONCE(s->pcm) = pcm;
33185 + ACCESS_ONCE_RW(s->pcm) = pcm;
33186 }
33187
33188 + /**
33189 +@@ -229,7 +229,7 @@ static inline void amdtp_stream_midi_trigger(struct amdtp_stream *s,
33190 + struct snd_rawmidi_substream *midi)
33191 + {
33192 + if (port < s->midi_ports)
33193 +- ACCESS_ONCE(s->midi[port]) = midi;
33194 ++ ACCESS_ONCE_RW(s->midi[port]) = midi;
33195 + }
33196 +
33197 static inline bool cip_sfc_is_base_44100(enum cip_sfc sfc)
33198 diff --git a/sound/firewire/isight.c b/sound/firewire/isight.c
33199 index 7ac9443..0ec6274 100644
33200 @@ -107134,7 +115264,7 @@ index 048439a..3be9f6f 100644
33201 userbuf+useroffs + p,
33202 locallen))
33203 diff --git a/sound/oss/swarm_cs4297a.c b/sound/oss/swarm_cs4297a.c
33204 -index f851fd0..92576fb 100644
33205 +index a33e8ce..2262303 100644
33206 --- a/sound/oss/swarm_cs4297a.c
33207 +++ b/sound/oss/swarm_cs4297a.c
33208 @@ -2623,7 +2623,6 @@ static int __init cs4297a_init(void)
33209 @@ -107143,9 +115273,9 @@ index f851fd0..92576fb 100644
33210 u32 pwr, id;
33211 - mm_segment_t fs;
33212 int rval;
33213 - #ifndef CONFIG_BCM_CS4297A_CSWARM
33214 u64 cfg;
33215 -@@ -2713,22 +2712,23 @@ static int __init cs4297a_init(void)
33216 + int mdio_val;
33217 +@@ -2709,22 +2708,23 @@ static int __init cs4297a_init(void)
33218 if (!rval) {
33219 char *sb1250_duart_present;
33220
33221 @@ -107273,42 +115403,11 @@ index 81c916a..516f0bf 100644
33222 chip->card = card;
33223 chip->pci = pci;
33224 chip->irq = -1;
33225 -diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c
33226 -index 5428a1f..474f651 100644
33227 ---- a/sound/soc/fsl/fsl_ssi.c
33228 -+++ b/sound/soc/fsl/fsl_ssi.c
33229 -@@ -1255,7 +1255,6 @@ static int fsl_ssi_probe(struct platform_device *pdev)
33230 - {
33231 - struct fsl_ssi_private *ssi_private;
33232 - int ret = 0;
33233 -- struct device_attribute *dev_attr = NULL;
33234 - struct device_node *np = pdev->dev.of_node;
33235 - const struct of_device_id *of_id;
33236 - enum fsl_ssi_type hw_type;
33237 -@@ -1481,7 +1480,7 @@ static int fsl_ssi_probe(struct platform_device *pdev)
33238 - &ssi_private->cpu_dai_drv, 1);
33239 - if (ret) {
33240 - dev_err(&pdev->dev, "failed to register DAI: %d\n", ret);
33241 -- goto error_dev;
33242 -+ goto error_clk;
33243 - }
33244 -
33245 - ret = fsl_ssi_debugfs_create(ssi_private, &pdev->dev);
33246 -@@ -1562,9 +1561,6 @@ error_pcm:
33247 - error_dbgfs:
33248 - snd_soc_unregister_component(&pdev->dev);
33249 -
33250 --error_dev:
33251 -- device_remove_file(&pdev->dev, dev_attr);
33252 --
33253 - error_clk:
33254 - if (ssi_private->ssi_on_imx) {
33255 - if (!IS_ERR(ssi_private->baudclk))
33256 diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
33257 -index 051c006..70598e8 100644
33258 +index b87d7d8..0ccaac3 100644
33259 --- a/sound/soc/soc-core.c
33260 +++ b/sound/soc/soc-core.c
33261 -@@ -2255,8 +2255,10 @@ int snd_soc_set_ac97_ops_of_reset(struct snd_ac97_bus_ops *ops,
33262 +@@ -2279,8 +2279,10 @@ int snd_soc_set_ac97_ops_of_reset(struct snd_ac97_bus_ops *ops,
33263 if (ret)
33264 return ret;
33265
33266 @@ -115112,10 +123211,10 @@ index 0000000..4378111
33267 +}
33268 diff --git a/tools/gcc/size_overflow_plugin/size_overflow_hash.data b/tools/gcc/size_overflow_plugin/size_overflow_hash.data
33269 new file mode 100644
33270 -index 0000000..386792a
33271 +index 0000000..b565921
33272 --- /dev/null
33273 +++ b/tools/gcc/size_overflow_plugin/size_overflow_hash.data
33274 -@@ -0,0 +1,5808 @@
33275 +@@ -0,0 +1,5510 @@
33276 +intel_fake_agp_alloc_by_type_1 intel_fake_agp_alloc_by_type 1 1 NULL
33277 +storvsc_connect_to_vsp_22 storvsc_connect_to_vsp 2 22 NULL
33278 +compat_sock_setsockopt_23 compat_sock_setsockopt 5 23 NULL
33279 @@ -115130,12 +123229,11 @@ index 0000000..386792a
33280 +init_q_132 init_q 4 132 NULL
33281 +memstick_alloc_host_142 memstick_alloc_host 1 142 NULL
33282 +hva_to_gfn_memslot_149 hva_to_gfn_memslot 0-1 149 NULL
33283 -+ping_v6_sendmsg_152 ping_v6_sendmsg 4 152 NULL
33284 +tracing_trace_options_write_153 tracing_trace_options_write 3 153 NULL nohasharray
33285 +ext4_ext_get_actual_len_153 ext4_ext_get_actual_len 0 153 &tracing_trace_options_write_153
33286 -+pci_request_selected_regions_169 pci_request_selected_regions 0 169 NULL
33287 +xfs_buf_item_get_format_189 xfs_buf_item_get_format 2 189 NULL
33288 +iscsi_session_setup_196 iscsi_session_setup 4-5 196 NULL
33289 ++obd_proc_jobid_var_seq_write_199 obd_proc_jobid_var_seq_write 3 199 NULL
33290 +ll_xattr_cache_seq_write_250 ll_xattr_cache_seq_write 3 250 NULL
33291 +br_port_info_size_268 br_port_info_size 0 268 NULL
33292 +read_file_war_stats_292 read_file_war_stats 3 292 NULL
33293 @@ -115154,10 +123252,9 @@ index 0000000..386792a
33294 +zlib_deflate_workspacesize_537 zlib_deflate_workspacesize 0-1-2 537 NULL
33295 +iwl_dbgfs_wowlan_sram_read_540 iwl_dbgfs_wowlan_sram_read 3 540 NULL
33296 +sco_sock_setsockopt_552 sco_sock_setsockopt 5 552 NULL
33297 -+lpfc_nlp_state_name_556 lpfc_nlp_state_name 2 556 NULL
33298 +snd_aw2_saa7146_get_hw_ptr_playback_558 snd_aw2_saa7146_get_hw_ptr_playback 0 558 NULL
33299 -+start_isoc_chain_565 start_isoc_chain 2 565 NULL nohasharray
33300 -+dev_hard_header_565 dev_hard_header 0 565 &start_isoc_chain_565
33301 ++dev_hard_header_565 dev_hard_header 0 565 NULL nohasharray
33302 ++start_isoc_chain_565 start_isoc_chain 2 565 &dev_hard_header_565
33303 +smk_write_load_self2_591 smk_write_load_self2 3 591 NULL
33304 +btrfs_stack_file_extent_offset_607 btrfs_stack_file_extent_offset 0 607 NULL
33305 +ni_gpct_device_construct_610 ni_gpct_device_construct 5 610 NULL
33306 @@ -115174,7 +123271,6 @@ index 0000000..386792a
33307 +dvb_video_write_754 dvb_video_write 3 754 NULL
33308 +cfs_trace_allocate_string_buffer_781 cfs_trace_allocate_string_buffer 2 781 NULL
33309 +ath6kl_disconnect_timeout_write_794 ath6kl_disconnect_timeout_write 3 794 NULL
33310 -+snd_pcm_drain_811 snd_pcm_drain 0 811 NULL
33311 +if_writecmd_815 if_writecmd 2 815 NULL
33312 +aac_change_queue_depth_825 aac_change_queue_depth 2 825 NULL
33313 +error_state_read_859 error_state_read 6 859 NULL
33314 @@ -115183,10 +123279,7 @@ index 0000000..386792a
33315 +snd_pcm_action_single_905 snd_pcm_action_single 0 905 NULL
33316 +carl9170_cmd_buf_950 carl9170_cmd_buf 3 950 NULL
33317 +__nodes_weight_956 __nodes_weight 0 956 NULL
33318 -+bnx2x_fill_fw_str_968 bnx2x_fill_fw_str 3 968 NULL
33319 -+mnt_want_write_975 mnt_want_write 0 975 NULL
33320 +usnic_ib_qp_grp_dump_hdr_989 usnic_ib_qp_grp_dump_hdr 2 989 NULL
33321 -+memcmp_990 memcmp 0 990 NULL
33322 +smk_write_cipso2_1021 smk_write_cipso2 3 1021 NULL
33323 +gigaset_initdriver_1060 gigaset_initdriver 2 1060 NULL
33324 +mce_request_packet_1073 mce_request_packet 3 1073 NULL
33325 @@ -115203,7 +123296,6 @@ index 0000000..386792a
33326 +dgrp_dpa_read_1204 dgrp_dpa_read 3 1204 NULL
33327 +i2cdev_read_1206 i2cdev_read 3 1206 NULL
33328 +lov_ost_pool_init_1215 lov_ost_pool_init 2 1215 NULL
33329 -+fsync_buffers_list_1219 fsync_buffers_list 0 1219 NULL
33330 +kernfs_file_direct_read_1238 kernfs_file_direct_read 3 1238 NULL
33331 +acpi_battery_write_alarm_1240 acpi_battery_write_alarm 3 1240 NULL
33332 +drm_primary_helper_create_plane_1262 drm_primary_helper_create_plane 3 1262 NULL
33333 @@ -115220,6 +123312,7 @@ index 0000000..386792a
33334 +ipx_sendmsg_1362 ipx_sendmsg 4 1362 NULL
33335 +fw_stats_raw_read_1369 fw_stats_raw_read 3 1369 NULL
33336 +ocfs2_prepare_inode_for_write_1372 ocfs2_prepare_inode_for_write 3 1372 NULL
33337 ++xpcs_reg_addr_read_1381 xpcs_reg_addr_read 3 1381 NULL
33338 +sctp_setsockopt_initmsg_1383 sctp_setsockopt_initmsg 3 1383 NULL
33339 +do_msgsnd_1387 do_msgsnd 4 1387 NULL
33340 +SYSC_io_getevents_1392 SYSC_io_getevents 3 1392 NULL
33341 @@ -115235,7 +123328,6 @@ index 0000000..386792a
33342 +alloc_perm_bits_1532 alloc_perm_bits 2 1532 NULL
33343 +ath6kl_init_get_fwcaps_1557 ath6kl_init_get_fwcaps 3 1557 NULL
33344 +ieee80211_if_read_dot11MeshHWMPnetDiameterTraversalTime_1589 ieee80211_if_read_dot11MeshHWMPnetDiameterTraversalTime 3 1589 NULL
33345 -+ipath_ht_handle_hwerrors_1592 ipath_ht_handle_hwerrors 3 1592 NULL
33346 +packet_buffer_init_1607 packet_buffer_init 2 1607 NULL
33347 +btmrvl_hscmd_read_1614 btmrvl_hscmd_read 3 1614 NULL
33348 +v9fs_fid_xattr_get_1618 v9fs_fid_xattr_get 0 1618 NULL
33349 @@ -115247,13 +123339,12 @@ index 0000000..386792a
33350 +pdu_write_u_1710 pdu_write_u 3 1710 NULL
33351 +coda_psdev_write_1711 coda_psdev_write 3 1711 NULL
33352 +btrfs_dir_data_len_1714 btrfs_dir_data_len 0 1714 NULL
33353 -+internal_create_group_1733 internal_create_group 0 1733 NULL
33354 +dev_irnet_read_1741 dev_irnet_read 3 1741 NULL
33355 +usb_ep_align_maybe_1743 usb_ep_align_maybe 0-3 1743 NULL
33356 +tx_frag_called_read_1748 tx_frag_called_read 3 1748 NULL
33357 +cosa_write_1774 cosa_write 3 1774 NULL
33358 +fcoe_ctlr_device_add_1793 fcoe_ctlr_device_add 3 1793 NULL
33359 -+__nodelist_scnprintf_1815 __nodelist_scnprintf 2-0 1815 NULL
33360 ++__nodelist_scnprintf_1815 __nodelist_scnprintf 2 1815 NULL
33361 +sb_issue_zeroout_1884 sb_issue_zeroout 3 1884 NULL
33362 +rx_defrag_called_read_1897 rx_defrag_called_read 3 1897 NULL
33363 +nfs_parse_server_name_1899 nfs_parse_server_name 2 1899 NULL
33364 @@ -115264,7 +123355,6 @@ index 0000000..386792a
33365 +ext3_fiemap_1936 ext3_fiemap 4 1936 NULL
33366 +cyttsp_probe_1940 cyttsp_probe 4 1940 NULL
33367 +ieee80211_if_fmt_dot11MeshConfirmTimeout_1945 ieee80211_if_fmt_dot11MeshConfirmTimeout 3 1945 NULL
33368 -+__assign_irq_vector_1961 __assign_irq_vector 0 1961 NULL
33369 +ivtv_v4l2_read_1964 ivtv_v4l2_read 3 1964 NULL
33370 +sel_read_avc_hash_stats_1984 sel_read_avc_hash_stats 3 1984 NULL
33371 +gpio_power_write_1991 gpio_power_write 3 1991 NULL
33372 @@ -115278,6 +123368,7 @@ index 0000000..386792a
33373 +__generic_copy_from_user_intel_2073 __generic_copy_from_user_intel 0-3 2073 NULL
33374 +diva_set_driver_dbg_mask_2077 diva_set_driver_dbg_mask 0 2077 NULL
33375 +iwl_dbgfs_current_sleep_command_read_2081 iwl_dbgfs_current_sleep_command_read 3 2081 NULL
33376 ++xgmac_reg_value_read_2095 xgmac_reg_value_read 3 2095 NULL
33377 +idetape_chrdev_read_2097 idetape_chrdev_read 3 2097 NULL
33378 +__set_print_fmt_2106 __set_print_fmt 0 2106 NULL
33379 +iwl_dbgfs_log_event_read_2107 iwl_dbgfs_log_event_read 3 2107 NULL
33380 @@ -115302,19 +123393,18 @@ index 0000000..386792a
33381 +sr_read_cmd_2299 sr_read_cmd 5 2299 NULL
33382 +kvm_clear_guest_page_2308 kvm_clear_guest_page 4 2308 NULL
33383 +intel_sdvo_set_value_2311 intel_sdvo_set_value 4 2311 NULL
33384 -+picolcd_fb_write_2318 picolcd_fb_write 3 2318 NULL nohasharray
33385 -+hfsplus_find_init_2318 hfsplus_find_init 0 2318 &picolcd_fb_write_2318
33386 ++hfsplus_find_init_2318 hfsplus_find_init 0 2318 NULL nohasharray
33387 ++picolcd_fb_write_2318 picolcd_fb_write 3 2318 &hfsplus_find_init_2318
33388 +dice_hwdep_read_2326 dice_hwdep_read 3 2326 NULL
33389 +__erst_read_to_erange_2341 __erst_read_to_erange 0 2341 NULL
33390 +zr364xx_read_2354 zr364xx_read 3 2354 NULL
33391 +viafb_iga2_odev_proc_write_2363 viafb_iga2_odev_proc_write 3 2363 NULL
33392 -+xfs_buf_map_from_irec_2368 xfs_buf_map_from_irec 5 2368 NULL nohasharray
33393 -+rose_recvmsg_2368 rose_recvmsg 4 2368 &xfs_buf_map_from_irec_2368
33394 ++rose_recvmsg_2368 rose_recvmsg 4 2368 NULL nohasharray
33395 ++xfs_buf_map_from_irec_2368 xfs_buf_map_from_irec 5 2368 &rose_recvmsg_2368
33396 +il_dbgfs_sensitivity_read_2370 il_dbgfs_sensitivity_read 3 2370 NULL
33397 +rxpipe_rx_prep_beacon_drop_read_2403 rxpipe_rx_prep_beacon_drop_read 3 2403 NULL
33398 +isdn_v110_open_2418 isdn_v110_open 3 2418 NULL
33399 +raid1_size_2419 raid1_size 0-2 2419 NULL
33400 -+arch_msi_check_device_2449 arch_msi_check_device 0 2449 NULL
33401 +b43legacy_debugfs_read_2473 b43legacy_debugfs_read 3 2473 NULL
33402 +wiphy_new_2482 wiphy_new 2 2482 NULL
33403 +bio_alloc_bioset_2484 bio_alloc_bioset 2 2484 NULL
33404 @@ -115330,6 +123420,7 @@ index 0000000..386792a
33405 +slot_bytes_2609 slot_bytes 0 2609 NULL
33406 +smk_write_logging_2618 smk_write_logging 3 2618 NULL
33407 +switch_status_2629 switch_status 5 2629 NULL
33408 ++_proc_do_string_2632 _proc_do_string 2 2632 NULL
33409 +tcp_xmit_size_goal_2661 tcp_xmit_size_goal 2 2661 NULL
33410 +osc_build_ppga_2670 osc_build_ppga 2 2670 NULL
33411 +ffs_ep0_read_2672 ffs_ep0_read 3 2672 NULL
33412 @@ -115341,11 +123432,10 @@ index 0000000..386792a
33413 +fsl_edma_alloc_desc_2769 fsl_edma_alloc_desc 2 2769 NULL
33414 +mon_bin_ioctl_2771 mon_bin_ioctl 3 2771 NULL
33415 +set_msr_hyperv_pw_2785 set_msr_hyperv_pw 3 2785 NULL
33416 -+device_add_attrs_2789 device_add_attrs 0 2789 NULL
33417 +iwl_dbgfs_clear_ucode_statistics_write_2804 iwl_dbgfs_clear_ucode_statistics_write 3 2804 NULL
33418 +sel_read_enforce_2828 sel_read_enforce 3 2828 NULL
33419 -+vb2_dc_get_userptr_2829 vb2_dc_get_userptr 2-3 2829 NULL nohasharray
33420 -+snd_pcm_reset_2829 snd_pcm_reset 0 2829 &vb2_dc_get_userptr_2829
33421 ++vb2_dc_get_userptr_2829 vb2_dc_get_userptr 2-3 2829 NULL
33422 ++sock_create_2838 sock_create 0 2838 NULL
33423 +wait_for_avail_2847 wait_for_avail 0 2847 NULL
33424 +sfq_alloc_2861 sfq_alloc 1 2861 NULL
33425 +irnet_ctrl_read_2863 irnet_ctrl_read 4 2863 NULL
33426 @@ -115375,11 +123465,12 @@ index 0000000..386792a
33427 +il3945_ucode_rx_stats_read_3048 il3945_ucode_rx_stats_read 3 3048 NULL
33428 +qp_alloc_ppn_set_3068 qp_alloc_ppn_set 2-4 3068 NULL
33429 +__blk_end_bidi_request_3070 __blk_end_bidi_request 3-4 3070 NULL
33430 -+dac960_user_command_proc_write_3071 dac960_user_command_proc_write 3 3071 NULL
33431 ++dac960_user_command_proc_write_3071 dac960_user_command_proc_write 3 3071 NULL nohasharray
33432 ++hfsplus_asc2uni_3071 hfsplus_asc2uni 0 3071 &dac960_user_command_proc_write_3071
33433 +read_file_antenna_diversity_3077 read_file_antenna_diversity 3 3077 NULL
33434 +ttusb2_msg_3100 ttusb2_msg 4 3100 NULL
33435 +rb_alloc_3102 rb_alloc 1 3102 NULL
33436 -+simple_write_to_buffer_3122 simple_write_to_buffer 5-2 3122 NULL
33437 ++simple_write_to_buffer_3122 simple_write_to_buffer 2-5 3122 NULL
33438 +print_time_3132 print_time 0 3132 NULL
33439 +fill_write_buffer_3142 fill_write_buffer 3 3142 NULL
33440 +CIFSSMBSetPosixACL_3154 CIFSSMBSetPosixACL 5 3154 NULL
33441 @@ -115393,19 +123484,14 @@ index 0000000..386792a
33442 +codec_reg_write_file_3204 codec_reg_write_file 3 3204 NULL
33443 +SyS_sendto_3219 SyS_sendto 6 3219 NULL
33444 +btrfs_prealloc_file_range_3227 btrfs_prealloc_file_range 3 3227 NULL
33445 -+kimage_crash_alloc_3233 kimage_crash_alloc 3 3233 NULL
33446 +do_read_log_to_user_3236 do_read_log_to_user 4 3236 NULL
33447 +ext3_xattr_find_entry_3237 ext3_xattr_find_entry 0 3237 NULL
33448 +key_key_read_3241 key_key_read 3 3241 NULL
33449 +__ilog2_u64_3284 __ilog2_u64 0 3284 NULL
33450 +ieee80211_if_write_beacon_loss_3296 ieee80211_if_write_beacon_loss 3 3296 NULL
33451 -+cgroup_name_3300 cgroup_name 3 3300 NULL
33452 -+__set_extent_bit_3305 __set_extent_bit 0 3305 NULL
33453 -+__iovec_copy_from_user_inatomic_3314 __iovec_copy_from_user_inatomic 4-3-0 3314 NULL
33454 ++__iovec_copy_from_user_inatomic_3314 __iovec_copy_from_user_inatomic 0-4-3 3314 NULL
33455 +_iwl_dbgfs_d3_sram_write_3315 _iwl_dbgfs_d3_sram_write 3 3315 NULL
33456 +dbDiscardAG_3322 dbDiscardAG 3 3322 NULL
33457 -+read_from_oldmem_3337 read_from_oldmem 2 3337 NULL
33458 -+sysfs_create_group_3339 sysfs_create_group 0 3339 NULL
33459 +tty_port_register_device_attr_3341 tty_port_register_device_attr 3 3341 NULL
33460 +il_dbgfs_interrupt_read_3351 il_dbgfs_interrupt_read 3 3351 NULL
33461 +gsm_control_rls_3353 gsm_control_rls 3 3353 NULL
33462 @@ -115439,10 +123525,10 @@ index 0000000..386792a
33463 +_iwl_dbgfs_tx_flush_write_3675 _iwl_dbgfs_tx_flush_write 3 3675 NULL
33464 +snd_m3_assp_read_3703 snd_m3_assp_read 0 3703 NULL
33465 +ci_ll_write_3740 ci_ll_write 4 3740 NULL
33466 ++msm_otg_mode_write_3788 msm_otg_mode_write 3 3788 NULL
33467 +sctp_setsockopt_auth_key_3793 sctp_setsockopt_auth_key 3 3793 NULL
33468 +ncp_file_write_3813 ncp_file_write 3 3813 NULL
33469 +llc_ui_recvmsg_3826 llc_ui_recvmsg 4 3826 NULL
33470 -+hfsplus_direct_IO_3835 hfsplus_direct_IO 4 3835 NULL
33471 +create_one_cdev_3852 create_one_cdev 2 3852 NULL
33472 +smk_read_onlycap_3855 smk_read_onlycap 3 3855 NULL
33473 +get_fd_set_3866 get_fd_set 1 3866 NULL
33474 @@ -115454,9 +123540,8 @@ index 0000000..386792a
33475 +vcs_write_3910 vcs_write 3 3910 NULL
33476 +SyS_move_pages_3920 SyS_move_pages 2 3920 NULL
33477 +brcmf_debugfs_fws_stats_read_3947 brcmf_debugfs_fws_stats_read 3 3947 NULL
33478 -+mite_bytes_written_to_memory_lb_3987 mite_bytes_written_to_memory_lb 0 3987 NULL
33479 ++copy_from_user_atomic_iovec_3990 copy_from_user_atomic_iovec 0-4 3990 NULL
33480 +do_add_counters_3992 do_add_counters 3 3992 NULL
33481 -+obd_alloc_memmd_4002 obd_alloc_memmd 0 4002 NULL
33482 +userspace_status_4004 userspace_status 4 4004 NULL
33483 +mei_write_4005 mei_write 3 4005 NULL nohasharray
33484 +xfs_check_block_4005 xfs_check_block 4 4005 &mei_write_4005
33485 @@ -115484,10 +123569,10 @@ index 0000000..386792a
33486 +nouveau_fifo_create__4327 nouveau_fifo_create_ 5-6 4327 NULL
33487 +snd_rawmidi_kernel_read_4328 snd_rawmidi_kernel_read 3 4328 NULL
33488 +ima_eventdigest_init_common_4338 ima_eventdigest_init_common 2 4338 NULL
33489 -+__copy_from_user_inatomic_4365 __copy_from_user_inatomic 3-0 4365 NULL
33490 ++__copy_from_user_inatomic_4365 __copy_from_user_inatomic 0-3 4365 NULL
33491 +irda_sendmsg_4388 irda_sendmsg 4 4388 NULL
33492 -+cxacru_cm_get_array_4412 cxacru_cm_get_array 4 4412 NULL nohasharray
33493 -+access_process_vm_4412 access_process_vm 0 4412 &cxacru_cm_get_array_4412
33494 ++access_process_vm_4412 access_process_vm 0 4412 NULL nohasharray
33495 ++cxacru_cm_get_array_4412 cxacru_cm_get_array 4 4412 &access_process_vm_4412
33496 +libfc_vport_create_4415 libfc_vport_create 2 4415 NULL
33497 +rtw_android_get_rssi_4421 rtw_android_get_rssi 0 4421 NULL
33498 +do_pages_stat_4437 do_pages_stat 2 4437 NULL
33499 @@ -115519,7 +123604,6 @@ index 0000000..386792a
33500 +ncp__vol2io_4804 ncp__vol2io 5 4804 NULL
33501 +C_SYSC_setsockopt_4806 C_SYSC_setsockopt 5 4806 NULL
33502 +repair_io_failure_4815 repair_io_failure 4-3 4815 NULL
33503 -+comedi_buf_write_free_4847 comedi_buf_write_free 2 4847 NULL
33504 +gigaset_if_receive_4861 gigaset_if_receive 3 4861 NULL
33505 +key_tx_spec_read_4862 key_tx_spec_read 3 4862 NULL
33506 +ocfs2_defrag_extent_4873 ocfs2_defrag_extent 2 4873 NULL
33507 @@ -115532,17 +123616,15 @@ index 0000000..386792a
33508 +ieee80211_if_fmt_dot11MeshHWMPconfirmationInterval_4976 ieee80211_if_fmt_dot11MeshHWMPconfirmationInterval 3 4976 NULL
33509 +compat_SyS_ipc_5000 compat_SyS_ipc 3 5000 NULL
33510 +do_mincore_5018 do_mincore 0-2-1 5018 NULL
33511 -+btrfs_punch_hole_5041 btrfs_punch_hole 2 5041 NULL
33512 +cfg80211_rx_mgmt_5056 cfg80211_rx_mgmt 5 5056 NULL
33513 +ocfs2_check_range_for_holes_5066 ocfs2_check_range_for_holes 2-3 5066 NULL
33514 +snd_mixart_BA1_read_5082 snd_mixart_BA1_read 5 5082 NULL
33515 +snd_emu10k1_ptr20_read_5087 snd_emu10k1_ptr20_read 0 5087 NULL
33516 -+kfifo_copy_from_user_5091 kfifo_copy_from_user 3-4-0 5091 NULL nohasharray
33517 ++kfifo_copy_from_user_5091 kfifo_copy_from_user 4-3-0 5091 NULL nohasharray
33518 +get_random_bytes_5091 get_random_bytes 2 5091 &kfifo_copy_from_user_5091 nohasharray
33519 +blk_rq_sectors_5091 blk_rq_sectors 0 5091 &get_random_bytes_5091
33520 +sound_write_5102 sound_write 3 5102 NULL
33521 +i40e_dbg_netdev_ops_write_5117 i40e_dbg_netdev_ops_write 3 5117 NULL
33522 -+qib_7220_handle_hwerrors_5142 qib_7220_handle_hwerrors 3 5142 NULL
33523 +__uwb_addr_print_5161 __uwb_addr_print 2 5161 NULL
33524 +iwl_dbgfs_status_read_5171 iwl_dbgfs_status_read 3 5171 NULL
33525 +acpi_pcc_get_sqty_5176 acpi_pcc_get_sqty 0 5176 NULL
33526 @@ -115550,6 +123632,7 @@ index 0000000..386792a
33527 +ppp_cp_parse_cr_5214 ppp_cp_parse_cr 4 5214 NULL
33528 +dwc2_hcd_urb_alloc_5217 dwc2_hcd_urb_alloc 2 5217 NULL
33529 +ath6kl_debug_roam_tbl_event_5224 ath6kl_debug_roam_tbl_event 3 5224 NULL
33530 ++xgmac_reg_addr_read_5278 xgmac_reg_addr_read 3 5278 NULL
33531 +r592_write_fifo_pio_5315 r592_write_fifo_pio 3 5315 NULL
33532 +sbc_get_write_same_sectors_5317 sbc_get_write_same_sectors 0 5317 NULL
33533 +pwr_elp_enter_read_5324 pwr_elp_enter_read 3 5324 NULL
33534 @@ -115561,11 +123644,10 @@ index 0000000..386792a
33535 +ll_xattr_cache_refill_5468 ll_xattr_cache_refill 0 5468 NULL
33536 +kernfs_fop_write_5471 kernfs_fop_write 3 5471 NULL
33537 +xfs_efi_init_5476 xfs_efi_init 2 5476 NULL
33538 -+pci_enable_msix_exact_5482 pci_enable_msix_exact 3-0 5482 NULL
33539 +cifs_security_flags_proc_write_5484 cifs_security_flags_proc_write 3 5484 NULL
33540 +tty_write_5494 tty_write 3 5494 NULL
33541 -+tomoyo_update_domain_5498 tomoyo_update_domain 2 5498 NULL nohasharray
33542 -+ieee80211_if_fmt_last_beacon_5498 ieee80211_if_fmt_last_beacon 3 5498 &tomoyo_update_domain_5498
33543 ++ieee80211_if_fmt_last_beacon_5498 ieee80211_if_fmt_last_beacon 3 5498 NULL nohasharray
33544 ++tomoyo_update_domain_5498 tomoyo_update_domain 2 5498 &ieee80211_if_fmt_last_beacon_5498
33545 +__max_nr_grant_frames_5505 __max_nr_grant_frames 0 5505 NULL
33546 +ieee80211_if_fmt_auto_open_plinks_5534 ieee80211_if_fmt_auto_open_plinks 3 5534 NULL
33547 +get_entry_msg_len_5552 get_entry_msg_len 0 5552 NULL
33548 @@ -115573,14 +123655,12 @@ index 0000000..386792a
33549 +inw_5558 inw 0 5558 NULL
33550 +bioset_create_5580 bioset_create 1 5580 NULL
33551 +oz_ep_alloc_5587 oz_ep_alloc 1 5587 NULL
33552 -+__remove_suid_5618 __remove_suid 0 5618 NULL
33553 +SYSC_fsetxattr_5639 SYSC_fsetxattr 4 5639 NULL
33554 +ext4_xattr_get_5661 ext4_xattr_get 0 5661 NULL
33555 +posix_clock_register_5662 posix_clock_register 2 5662 NULL
33556 +get_arg_5694 get_arg 3 5694 NULL
33557 +subbuf_read_actor_5708 subbuf_read_actor 3 5708 NULL
33558 +vmw_kms_readback_5727 vmw_kms_readback 6 5727 NULL
33559 -+rts51x_transfer_data_partial_5735 rts51x_transfer_data_partial 6 5735 NULL
33560 +sctp_setsockopt_autoclose_5775 sctp_setsockopt_autoclose 3 5775 NULL
33561 +__vxge_hw_blockpool_malloc_5786 __vxge_hw_blockpool_malloc 2 5786 NULL
33562 +nvme_trans_bdev_char_page_5797 nvme_trans_bdev_char_page 3 5797 NULL
33563 @@ -115602,13 +123682,11 @@ index 0000000..386792a
33564 +ll_statahead_one_5962 ll_statahead_one 3 5962 NULL
33565 +__apu_get_register_5967 __apu_get_register 0 5967 NULL
33566 +ieee80211_if_fmt_rc_rateidx_mask_5ghz_5971 ieee80211_if_fmt_rc_rateidx_mask_5ghz 3 5971 NULL
33567 -+SyS_semop_5980 SyS_semop 3 5980 NULL
33568 ++btrfs_item_offset_6019 btrfs_item_offset 0 6019 NULL
33569 +alloc_msg_6072 alloc_msg 1 6072 NULL
33570 +sctp_setsockopt_connectx_6073 sctp_setsockopt_connectx 3 6073 NULL
33571 -+rts51x_ms_rw_multi_sector_6076 rts51x_ms_rw_multi_sector 3-4 6076 NULL
33572 -+__mnt_want_write_6091 __mnt_want_write 0 6091 NULL
33573 -+ipmi_addr_length_6110 ipmi_addr_length 0 6110 NULL nohasharray
33574 -+force_static_address_read_6110 force_static_address_read 3 6110 &ipmi_addr_length_6110
33575 ++force_static_address_read_6110 force_static_address_read 3 6110 NULL nohasharray
33576 ++ipmi_addr_length_6110 ipmi_addr_length 0 6110 &force_static_address_read_6110
33577 +dfs_global_file_write_6112 dfs_global_file_write 3 6112 NULL
33578 +nouveau_parent_create__6131 nouveau_parent_create_ 7 6131 NULL
33579 +ieee80211_if_fmt_beacon_timeout_6153 ieee80211_if_fmt_beacon_timeout 3 6153 NULL
33580 @@ -115616,6 +123694,7 @@ index 0000000..386792a
33581 +maybe_insert_hole_6167 maybe_insert_hole 3 6167 NULL
33582 +wl1251_cmd_template_set_6172 wl1251_cmd_template_set 4 6172 NULL
33583 +SyS_setgroups_6182 SyS_setgroups 1 6182 NULL
33584 ++snd_efw_command_get_phys_meters_6190 snd_efw_command_get_phys_meters 3 6190 NULL
33585 +mxt_show_instance_6207 mxt_show_instance 2-0 6207 NULL
33586 +v4l2_ctrl_new_std_menu_6221 v4l2_ctrl_new_std_menu 4 6221 NULL
33587 +mqueue_read_file_6228 mqueue_read_file 3 6228 NULL
33588 @@ -115628,13 +123707,14 @@ index 0000000..386792a
33589 +posix_acl_fix_xattr_to_user_6283 posix_acl_fix_xattr_to_user 2 6283 NULL
33590 +serial_port_in_6291 serial_port_in 0 6291 NULL
33591 +qlcnic_sriov_alloc_bc_msg_6309 qlcnic_sriov_alloc_bc_msg 2 6309 NULL
33592 ++hfsplus_direct_IO_6313 hfsplus_direct_IO 4 6313 NULL
33593 +hfa384x_inw_6329 hfa384x_inw 0 6329 NULL nohasharray
33594 +SyS_mincore_6329 SyS_mincore 1-2 6329 &hfa384x_inw_6329
33595 +fuse_get_req_for_background_6337 fuse_get_req_for_background 2 6337 NULL
33596 +ucs2_strnlen_6342 ucs2_strnlen 0 6342 NULL
33597 +regcache_sync_block_raw_6350 regcache_sync_block_raw 5-4 6350 NULL
33598 +mei_dbgfs_read_devstate_6352 mei_dbgfs_read_devstate 3 6352 NULL
33599 -+_proc_do_string_6376 _proc_do_string 2 6376 NULL
33600 ++arch_gnttab_valloc_6372 arch_gnttab_valloc 2 6372 NULL
33601 +osd_req_read_sg_kern_6378 osd_req_read_sg_kern 5 6378 NULL
33602 +posix_acl_fix_xattr_userns_6420 posix_acl_fix_xattr_userns 4 6420 NULL
33603 +add_transaction_credits_6422 add_transaction_credits 2-3 6422 NULL
33604 @@ -115650,18 +123730,16 @@ index 0000000..386792a
33605 +dm_stats_create_6551 dm_stats_create 4-2-3 6551 NULL
33606 +fb_alloc_cmap_6554 fb_alloc_cmap 2 6554 NULL
33607 +SyS_semtimedop_6563 SyS_semtimedop 3 6563 NULL
33608 -+snd_pcm_hw_refine_old_user_6586 snd_pcm_hw_refine_old_user 0 6586 NULL
33609 +ecryptfs_filldir_6622 ecryptfs_filldir 3 6622 NULL
33610 +process_rcvd_data_6679 process_rcvd_data 3 6679 NULL
33611 -+pvscsi_allocate_rings_6689 pvscsi_allocate_rings 0 6689 NULL
33612 +btrfs_lookup_csums_range_6696 btrfs_lookup_csums_range 2-3 6696 NULL
33613 +ps_pspoll_max_apturn_read_6699 ps_pspoll_max_apturn_read 3 6699 NULL
33614 +bnad_debugfs_write_regrd_6706 bnad_debugfs_write_regrd 3 6706 NULL
33615 +mpeg_read_6708 mpeg_read 3 6708 NULL
33616 +ibmpex_query_sensor_count_6709 ibmpex_query_sensor_count 0 6709 NULL
33617 ++check_clk_sync_6717 check_clk_sync 2 6717 NULL
33618 +video_proc_write_6724 video_proc_write 3 6724 NULL
33619 +posix_acl_xattr_count_6725 posix_acl_xattr_count 0-1 6725 NULL
33620 -+kobject_add_varg_6781 kobject_add_varg 0 6781 NULL
33621 +iwl_dbgfs_channels_read_6784 iwl_dbgfs_channels_read 3 6784 NULL
33622 +ieee80211_if_read_6785 ieee80211_if_read 3 6785 NULL
33623 +zone_spanned_pages_in_node_6787 zone_spanned_pages_in_node 0-3-4 6787 NULL
33624 @@ -115690,7 +123768,6 @@ index 0000000..386792a
33625 +rsa_extract_mpi_6973 rsa_extract_mpi 5 6973 &i40e_dbg_dump_write_6973
33626 +request_key_async_6990 request_key_async 4 6990 NULL
33627 +tpl_write_6998 tpl_write 3 6998 NULL
33628 -+r871x_set_wpa_ie_7000 r871x_set_wpa_ie 3 7000 NULL
33629 +cipso_v4_gentag_enum_7006 cipso_v4_gentag_enum 0 7006 NULL
33630 +tracing_cpumask_read_7010 tracing_cpumask_read 3 7010 NULL
33631 +ld_usb_write_7022 ld_usb_write 3 7022 NULL
33632 @@ -115701,16 +123778,13 @@ index 0000000..386792a
33633 +nouveau_device_create__7063 nouveau_device_create_ 7 7063 NULL
33634 +hci_sock_recvmsg_7072 hci_sock_recvmsg 4 7072 NULL
33635 +event_enable_read_7074 event_enable_read 3 7074 NULL
33636 -+tipc_send_packet_7091 tipc_send_packet 4 7091 NULL nohasharray
33637 -+beacon_interval_read_7091 beacon_interval_read 3 7091 &tipc_send_packet_7091
33638 ++beacon_interval_read_7091 beacon_interval_read 3 7091 NULL nohasharray
33639 ++tipc_send_packet_7091 tipc_send_packet 4 7091 &beacon_interval_read_7091
33640 +pipeline_enc_rx_stat_fifo_int_read_7107 pipeline_enc_rx_stat_fifo_int_read 3 7107 NULL
33641 +osc_resend_count_seq_write_7120 osc_resend_count_seq_write 3 7120 NULL
33642 -+qib_format_hwerrors_7133 qib_format_hwerrors 5 7133 NULL
33643 +kvm_mmu_notifier_test_young_7139 kvm_mmu_notifier_test_young 3 7139 NULL
33644 -+qlcnic_enable_msix_7144 qlcnic_enable_msix 2 7144 NULL
33645 +__alloc_objio_seg_7203 __alloc_objio_seg 1 7203 NULL
33646 +rx_rate_rx_frames_per_rates_read_7282 rx_rate_rx_frames_per_rates_read 3 7282 NULL
33647 -+security_inode_need_killpriv_7322 security_inode_need_killpriv 0 7322 NULL
33648 +pci_vpd_info_field_size_7324 pci_vpd_info_field_size 0 7324 NULL
33649 +mgmt_control_7349 mgmt_control 3 7349 NULL
33650 +at_est2timeout_7365 at_est2timeout 0-1 7365 NULL
33651 @@ -115727,45 +123801,41 @@ index 0000000..386792a
33652 +ip_options_get_alloc_7448 ip_options_get_alloc 1 7448 NULL
33653 +SYSC_setgroups_7454 SYSC_setgroups 1 7454 NULL
33654 +rt2x00debug_read_queue_stats_7455 rt2x00debug_read_queue_stats 3 7455 NULL
33655 -+l2tp_ip6_sendmsg_7461 l2tp_ip6_sendmsg 4 7461 NULL
33656 +garp_request_join_7471 garp_request_join 4 7471 NULL
33657 +snd_pcm_lib_read1_7491 snd_pcm_lib_read1 0-3 7491 NULL
33658 +ahash_instance_headroom_7509 ahash_instance_headroom 0 7509 NULL nohasharray
33659 +sdhci_alloc_host_7509 sdhci_alloc_host 2 7509 &ahash_instance_headroom_7509
33660 +array_zalloc_7519 array_zalloc 1-2 7519 NULL
33661 -+sk_convert_filter_7541 sk_convert_filter 2 7541 NULL
33662 +ath10k_read_htt_stats_mask_7557 ath10k_read_htt_stats_mask 3 7557 NULL
33663 +smk_read_mapped_7562 smk_read_mapped 3 7562 NULL
33664 +netvsc_get_slots_7565 netvsc_get_slots 0 7565 NULL
33665 +cfs_cpt_num_estimate_7571 cfs_cpt_num_estimate 0 7571 NULL
33666 -+groups_alloc_7614 groups_alloc 1 7614 NULL nohasharray
33667 -+create_dir_7614 create_dir 0 7614 &groups_alloc_7614
33668 ++groups_alloc_7614 groups_alloc 1 7614 NULL
33669 +_rtw_zmalloc_7636 _rtw_zmalloc 1 7636 NULL
33670 +fault_inject_write_7662 fault_inject_write 3 7662 NULL
33671 +acpi_ex_allocate_name_string_7685 acpi_ex_allocate_name_string 2-1 7685 NULL
33672 +acpi_ns_get_pathname_length_7699 acpi_ns_get_pathname_length 0 7699 NULL
33673 +dev_write_7708 dev_write 3 7708 NULL
33674 -+pci_raw_set_power_state_7729 pci_raw_set_power_state 0 7729 NULL
33675 +vxge_device_register_7752 vxge_device_register 4 7752 NULL
33676 +ubi_io_read_vid_hdr_7766 ubi_io_read_vid_hdr 0 7766 NULL
33677 +iwl_dbgfs_bt_cmd_read_7770 iwl_dbgfs_bt_cmd_read 3 7770 NULL
33678 +alloc_candev_7776 alloc_candev 1-2 7776 NULL
33679 +dfs_global_file_read_7787 dfs_global_file_read 3 7787 NULL
33680 +bnx2_nvram_write_7790 bnx2_nvram_write 4-2 7790 NULL
33681 -+lustre_packed_msg_size_7792 lustre_packed_msg_size 0 7792 NULL nohasharray
33682 -+diva_os_copy_from_user_7792 diva_os_copy_from_user 4 7792 &lustre_packed_msg_size_7792
33683 ++diva_os_copy_from_user_7792 diva_os_copy_from_user 4 7792 NULL nohasharray
33684 ++lustre_packed_msg_size_7792 lustre_packed_msg_size 0 7792 &diva_os_copy_from_user_7792
33685 ++seq_buf_alloc_7828 seq_buf_alloc 1 7828 NULL
33686 +cfs_trace_dump_debug_buffer_usrstr_7861 cfs_trace_dump_debug_buffer_usrstr 2 7861 NULL
33687 +tipc_alloc_entry_7875 tipc_alloc_entry 2 7875 NULL
33688 +dvb_dmxdev_read_sec_7892 dvb_dmxdev_read_sec 4 7892 NULL
33689 +xfs_trans_get_efi_7898 xfs_trans_get_efi 2 7898 NULL
33690 +libfc_host_alloc_7917 libfc_host_alloc 2 7917 NULL
33691 +f_hidg_write_7932 f_hidg_write 3 7932 NULL
33692 -+integrity_digsig_verify_7956 integrity_digsig_verify 3-0 7956 NULL
33693 ++integrity_digsig_verify_7956 integrity_digsig_verify 3 7956 NULL
33694 +smk_write_load_self_7958 smk_write_load_self 3 7958 NULL
33695 +tt3650_ci_msg_locked_8013 tt3650_ci_msg_locked 4 8013 NULL
33696 +vcs_read_8017 vcs_read 3 8017 NULL
33697 +vhost_add_used_and_signal_n_8038 vhost_add_used_and_signal_n 4 8038 NULL
33698 -+ms_read_multiple_pages_8052 ms_read_multiple_pages 5-4 8052 NULL
33699 +dgrp_mon_read_8065 dgrp_mon_read 3 8065 NULL
33700 +spi_write_then_read_8073 spi_write_then_read 5-3 8073 NULL
33701 +qla4xxx_post_ping_evt_work_8074 qla4xxx_post_ping_evt_work 4 8074 NULL
33702 @@ -115784,7 +123854,6 @@ index 0000000..386792a
33703 +init_cdev_8274 init_cdev 1 8274 NULL
33704 +rproc_recovery_write_8281 rproc_recovery_write 3 8281 NULL
33705 +qib_decode_7220_err_8315 qib_decode_7220_err 3 8315 NULL
33706 -+snd_pcm_update_state_8320 snd_pcm_update_state 0 8320 NULL
33707 +ipwireless_send_packet_8328 ipwireless_send_packet 4 8328 NULL
33708 +rtw_cfg80211_rx_action_8329 rtw_cfg80211_rx_action 3 8329 NULL
33709 +tracing_entries_read_8345 tracing_entries_read 3 8345 NULL
33710 @@ -115805,8 +123874,7 @@ index 0000000..386792a
33711 +opticon_process_data_packet_8524 opticon_process_data_packet 3 8524 NULL
33712 +user_on_off_8552 user_on_off 2 8552 NULL
33713 +profile_remove_8556 profile_remove 3 8556 NULL
33714 -+cache_slow_downcall_8570 cache_slow_downcall 2 8570 NULL nohasharray
33715 -+pci_msi_check_device_8570 pci_msi_check_device 0 8570 &cache_slow_downcall_8570
33716 ++cache_slow_downcall_8570 cache_slow_downcall 2 8570 NULL
33717 +isr_dma0_done_read_8574 isr_dma0_done_read 3 8574 NULL
33718 +tower_write_8580 tower_write 3 8580 NULL
33719 +cfs_cpt_number_8618 cfs_cpt_number 0 8618 NULL
33720 @@ -115820,23 +123888,20 @@ index 0000000..386792a
33721 +rproc_trace_read_8686 rproc_trace_read 3 8686 NULL
33722 +skb_frag_size_8695 skb_frag_size 0 8695 NULL
33723 +arcfb_write_8702 arcfb_write 3 8702 NULL
33724 -+i_size_read_8703 i_size_read 0 8703 NULL nohasharray
33725 -+init_header_8703 init_header 0 8703 &i_size_read_8703
33726 ++i_size_read_8703 i_size_read 0 8703 NULL
33727 +ctrl_out_8712 ctrl_out 3-5 8712 NULL
33728 +tracing_max_lat_write_8728 tracing_max_lat_write 3 8728 NULL
33729 +jffs2_acl_count_8729 jffs2_acl_count 0-1 8729 NULL
33730 -+__create_irqs_8733 __create_irqs 2 8733 NULL
33731 +tx_tx_exch_expiry_read_8749 tx_tx_exch_expiry_read 3 8749 NULL
33732 +compound_order_8750 compound_order 0 8750 NULL
33733 +yurex_write_8761 yurex_write 3 8761 NULL
33734 +joydev_compat_ioctl_8765 joydev_compat_ioctl 2 8765 NULL
33735 +kstrtoint_from_user_8778 kstrtoint_from_user 2 8778 NULL
33736 +paging32_prefetch_gpte_8783 paging32_prefetch_gpte 4 8783 NULL
33737 -+ext4_try_to_write_inline_data_8785 ext4_try_to_write_inline_data 3-4 8785 NULL
33738 ++ext4_try_to_write_inline_data_8785 ext4_try_to_write_inline_data 4-3 8785 NULL
33739 +__bitmap_weight_8796 __bitmap_weight 0 8796 NULL
33740 +metronomefb_write_8823 metronomefb_write 3 8823 NULL
33741 +SyS_llistxattr_8824 SyS_llistxattr 3 8824 NULL
33742 -+extent_read_full_page_8826 extent_read_full_page 0 8826 NULL
33743 +ll_xattr_cache_get_8829 ll_xattr_cache_get 0 8829 NULL
33744 +get_queue_depth_8833 get_queue_depth 0 8833 NULL
33745 +dvb_ringbuffer_pkt_next_8834 dvb_ringbuffer_pkt_next 0-2 8834 NULL
33746 @@ -115844,12 +123909,12 @@ index 0000000..386792a
33747 +iwl_rx_packet_len_8854 iwl_rx_packet_len 0 8854 NULL
33748 +debug_debug1_read_8856 debug_debug1_read 3 8856 NULL
33749 +wa_nep_queue_8858 wa_nep_queue 2 8858 NULL
33750 ++xgmac_reg_value_write_8860 xgmac_reg_value_write 3 8860 NULL
33751 +radeon_drm_ioctl_8875 radeon_drm_ioctl 2 8875 NULL
33752 +compressed_bio_size_8887 compressed_bio_size 0-2 8887 NULL
33753 -+ab3100_get_set_reg_8890 ab3100_get_set_reg 3 8890 NULL nohasharray
33754 -+tracing_max_lat_read_8890 tracing_max_lat_read 3 8890 &ab3100_get_set_reg_8890
33755 ++tracing_max_lat_read_8890 tracing_max_lat_read 3 8890 NULL nohasharray
33756 ++ab3100_get_set_reg_8890 ab3100_get_set_reg 3 8890 &tracing_max_lat_read_8890
33757 +sdio_max_byte_size_8907 sdio_max_byte_size 0 8907 NULL
33758 -+sysfs_merge_group_8917 sysfs_merge_group 0 8917 NULL
33759 +write_file_ani_8918 write_file_ani 3 8918 NULL
33760 +layout_commit_8926 layout_commit 3 8926 NULL
33761 +cp2112_hid_get_8933 cp2112_hid_get 4 8933 NULL
33762 @@ -115867,16 +123932,16 @@ index 0000000..386792a
33763 +il_dbgfs_clear_ucode_stats_write_9016 il_dbgfs_clear_ucode_stats_write 3 9016 NULL
33764 +snd_emu10k1_ptr_read_9026 snd_emu10k1_ptr_read 0-2 9026 NULL
33765 +nla_put_9042 nla_put 3 9042 NULL
33766 -+sta_tx_latency_stat_header_9050 sta_tx_latency_stat_header 0-3-4 9050 NULL
33767 ++sta_tx_latency_stat_header_9050 sta_tx_latency_stat_header 4-3-0 9050 NULL
33768 +snd_emu10k1_synth_copy_from_user_9061 snd_emu10k1_synth_copy_from_user 3-5 9061 NULL
33769 +snd_gus_dram_peek_9062 snd_gus_dram_peek 4 9062 NULL
33770 +fib_info_hash_alloc_9075 fib_info_hash_alloc 1 9075 NULL
33771 +create_queues_9088 create_queues 2-3 9088 NULL
33772 ++nvkm_output_create__9091 nvkm_output_create_ 6 9091 NULL
33773 +ftdi_prepare_write_buffer_9093 ftdi_prepare_write_buffer 3 9093 NULL
33774 +adxl34x_spi_read_block_9108 adxl34x_spi_read_block 3 9108 NULL
33775 -+caif_stream_sendmsg_9110 caif_stream_sendmsg 4 9110 NULL nohasharray
33776 -+gfn_to_rmap_9110 gfn_to_rmap 2-3 9110 &caif_stream_sendmsg_9110
33777 -+udf_direct_IO_9111 udf_direct_IO 4 9111 NULL
33778 ++gfn_to_rmap_9110 gfn_to_rmap 3-2 9110 NULL nohasharray
33779 ++caif_stream_sendmsg_9110 caif_stream_sendmsg 4 9110 &gfn_to_rmap_9110
33780 +pmcraid_change_queue_depth_9116 pmcraid_change_queue_depth 2 9116 NULL
33781 +vb2_dma_sg_alloc_9157 vb2_dma_sg_alloc 2 9157 NULL
33782 +dbg_command_buf_9165 dbg_command_buf 2 9165 NULL
33783 @@ -115893,6 +123958,7 @@ index 0000000..386792a
33784 +flakey_status_9274 flakey_status 5 9274 NULL
33785 +iwl_dbgfs_stations_read_9309 iwl_dbgfs_stations_read 3 9309 NULL
33786 +ceph_sync_setxattr_9310 ceph_sync_setxattr 4 9310 NULL
33787 ++__blockdev_direct_IO_9321 __blockdev_direct_IO 0-6 9321 NULL
33788 +ieee80211_if_fmt_txpower_9334 ieee80211_if_fmt_txpower 3 9334 NULL
33789 +nvme_trans_fmt_get_parm_header_9340 nvme_trans_fmt_get_parm_header 2 9340 NULL
33790 +ocfs2_orphan_for_truncate_9342 ocfs2_orphan_for_truncate 4 9342 NULL
33791 @@ -115905,12 +123971,11 @@ index 0000000..386792a
33792 +bm_realloc_pages_9431 bm_realloc_pages 2 9431 NULL
33793 +ffs_ep0_write_9438 ffs_ep0_write 3 9438 NULL
33794 +ieee80211_if_fmt_fwded_unicast_9454 ieee80211_if_fmt_fwded_unicast 3 9454 NULL
33795 -+get_registers_9470 get_registers 4 9470 NULL nohasharray
33796 -+agp_generic_alloc_user_9470 agp_generic_alloc_user 1 9470 &get_registers_9470
33797 ++agp_generic_alloc_user_9470 agp_generic_alloc_user 1 9470 NULL nohasharray
33798 ++get_registers_9470 get_registers 4 9470 &agp_generic_alloc_user_9470
33799 +crypt_status_9492 crypt_status 5 9492 NULL
33800 +lbs_threshold_write_9502 lbs_threshold_write 5 9502 NULL
33801 +lp_write_9511 lp_write 3 9511 NULL
33802 -+mext_calc_swap_extents_9517 mext_calc_swap_extents 4 9517 NULL
33803 +scsi_tgt_kspace_exec_9522 scsi_tgt_kspace_exec 8 9522 NULL
33804 +ll_max_read_ahead_whole_mb_seq_write_9528 ll_max_read_ahead_whole_mb_seq_write 3 9528 NULL
33805 +read_file_dma_9530 read_file_dma 3 9530 NULL
33806 @@ -115946,19 +124011,19 @@ index 0000000..386792a
33807 +regmap_multi_reg_write_bypassed_9751 regmap_multi_reg_write_bypassed 3 9751 NULL nohasharray
33808 +sta_last_ack_signal_read_9751 sta_last_ack_signal_read 3 9751 &regmap_multi_reg_write_bypassed_9751
33809 +btrfs_super_root_9763 btrfs_super_root 0 9763 NULL
33810 ++copy_page_from_iter_bvec_9767 copy_page_from_iter_bvec 0-3 9767 NULL
33811 +__blk_queue_init_tags_9778 __blk_queue_init_tags 2 9778 NULL
33812 +kvm_age_hva_9795 kvm_age_hva 2 9795 NULL
33813 ++bio_alloc_map_data_9798 bio_alloc_map_data 1 9798 NULL
33814 +udpv6_recvmsg_9813 udpv6_recvmsg 4 9813 NULL nohasharray
33815 +ieee80211_if_read_state_9813 ieee80211_if_read_state 3 9813 &udpv6_recvmsg_9813
33816 +pmcraid_alloc_sglist_9864 pmcraid_alloc_sglist 1 9864 NULL
33817 -+btrfs_free_reserved_extent_9867 btrfs_free_reserved_extent 2 9867 NULL
33818 +wil_read_file_ioblob_9878 wil_read_file_ioblob 3 9878 NULL
33819 -+snd_midi_event_new_9893 snd_midi_event_new 1 9893 NULL nohasharray
33820 -+bm_register_write_9893 bm_register_write 3 9893 &snd_midi_event_new_9893
33821 ++bm_register_write_9893 bm_register_write 3 9893 NULL nohasharray
33822 ++snd_midi_event_new_9893 snd_midi_event_new 1 9893 &bm_register_write_9893
33823 +snd_gf1_pcm_playback_copy_9895 snd_gf1_pcm_playback_copy 3-5 9895 NULL
33824 +nonpaging_page_fault_9908 nonpaging_page_fault 2 9908 NULL
33825 +iwl_dbgfs_prph_reg_read_9928 iwl_dbgfs_prph_reg_read 3 9928 NULL
33826 -+root_nfs_parse_options_9937 root_nfs_parse_options 3 9937 NULL
33827 +pstore_ftrace_knob_read_9947 pstore_ftrace_knob_read 3 9947 NULL
33828 +read_file_misc_9948 read_file_misc 3 9948 NULL
33829 +csum_partial_copy_fromiovecend_9957 csum_partial_copy_fromiovecend 3-4 9957 NULL
33830 @@ -115990,10 +124055,8 @@ index 0000000..386792a
33831 +ufx_alloc_urb_list_10349 ufx_alloc_urb_list 3 10349 NULL
33832 +dbAllocAny_10354 dbAllocAny 0 10354 NULL
33833 +ath6kl_listen_int_read_10355 ath6kl_listen_int_read 3 10355 NULL
33834 -+ms_write_multiple_pages_10362 ms_write_multiple_pages 6-5 10362 NULL
33835 +sta_ht_capa_read_10366 sta_ht_capa_read 3 10366 NULL
33836 +ecryptfs_decode_and_decrypt_filename_10379 ecryptfs_decode_and_decrypt_filename 5 10379 NULL
33837 -+led_classdev_register_10384 led_classdev_register 0 10384 NULL
33838 +do_compat_pselect_10398 do_compat_pselect 1 10398 NULL
33839 +fwtty_rx_10434 fwtty_rx 3 10434 NULL
33840 +event_phy_transmit_error_read_10471 event_phy_transmit_error_read 3 10471 NULL
33841 @@ -116005,7 +124068,6 @@ index 0000000..386792a
33842 +osd_req_write_sg_kern_10514 osd_req_write_sg_kern 5 10514 NULL
33843 +rds_message_alloc_10517 rds_message_alloc 1 10517 NULL
33844 +qlcnic_pci_sriov_enable_10519 qlcnic_pci_sriov_enable 2 10519 NULL
33845 -+snd_pcm_hw_params_user_10520 snd_pcm_hw_params_user 0 10520 NULL
33846 +kstrtouint_from_user_10536 kstrtouint_from_user 2 10536 NULL nohasharray
33847 +snd_pcm_lib_read_10536 snd_pcm_lib_read 0-3 10536 &kstrtouint_from_user_10536
33848 +ext4_write_begin_10576 ext4_write_begin 3-4 10576 NULL
33849 @@ -116034,6 +124096,7 @@ index 0000000..386792a
33850 +__qp_memcpy_to_queue_10779 __qp_memcpy_to_queue 2-4 10779 NULL
33851 +diva_set_trace_filter_10820 diva_set_trace_filter 0-1 10820 NULL
33852 +lbs_sleepparams_read_10840 lbs_sleepparams_read 3 10840 NULL
33853 ++ext4_direct_IO_10843 ext4_direct_IO 4 10843 NULL
33854 +ida_get_new_above_10853 ida_get_new_above 0 10853 NULL
33855 +fuse_conn_max_background_read_10855 fuse_conn_max_background_read 3 10855 NULL
33856 +snd_pcm_oss_write1_10872 snd_pcm_oss_write1 3 10872 NULL
33857 @@ -116041,8 +124104,7 @@ index 0000000..386792a
33858 +get_scq_10897 get_scq 2 10897 NULL
33859 +tifm_alloc_adapter_10903 tifm_alloc_adapter 1 10903 NULL
33860 +lprocfs_wr_atomic_10912 lprocfs_wr_atomic 3 10912 NULL
33861 -+__copy_from_user_10918 __copy_from_user 0-3 10918 NULL
33862 -+kobject_add_10919 kobject_add 0 10919 NULL
33863 ++__copy_from_user_10918 __copy_from_user 3-0 10918 NULL
33864 +ar9003_dump_modal_eeprom_10959 ar9003_dump_modal_eeprom 3-2-0 10959 NULL
33865 +ci_port_test_write_10962 ci_port_test_write 3 10962 NULL
33866 +bm_entry_read_10976 bm_entry_read 3 10976 NULL
33867 @@ -116050,19 +124112,15 @@ index 0000000..386792a
33868 +xfrm_hash_alloc_10997 xfrm_hash_alloc 1 10997 NULL
33869 +rx_filter_accum_arp_pend_requests_read_11003 rx_filter_accum_arp_pend_requests_read 3 11003 NULL
33870 +SetLineNumber_11023 SetLineNumber 0 11023 NULL
33871 -+pci_msi_vec_count_11046 pci_msi_vec_count 0 11046 NULL
33872 ++nouveau_gpio_create__11048 nouveau_gpio_create_ 4 11048 NULL
33873 +tda10048_writeregbulk_11050 tda10048_writeregbulk 4 11050 NULL
33874 -+qlcnic_83xx_calculate_msix_vector_11063 qlcnic_83xx_calculate_msix_vector 0 11063 NULL nohasharray
33875 -+insert_inline_extent_backref_11063 insert_inline_extent_backref 8 11063 &qlcnic_83xx_calculate_msix_vector_11063
33876 ++insert_inline_extent_backref_11063 insert_inline_extent_backref 8 11063 NULL
33877 +tcp_send_mss_11079 tcp_send_mss 0 11079 NULL
33878 -+snd_pcm_delay_11081 snd_pcm_delay 0 11081 NULL
33879 +count_argc_11083 count_argc 0 11083 NULL
33880 +kvm_write_guest_cached_11106 kvm_write_guest_cached 4 11106 NULL
33881 +tw_change_queue_depth_11116 tw_change_queue_depth 2 11116 NULL
33882 +page_offset_11120 page_offset 0 11120 NULL
33883 -+cea_db_payload_len_11124 cea_db_payload_len 0 11124 NULL nohasharray
33884 -+tracing_buffers_read_11124 tracing_buffers_read 3 11124 &cea_db_payload_len_11124
33885 -+alloc_alien_cache_11127 alloc_alien_cache 2 11127 NULL
33886 ++tracing_buffers_read_11124 tracing_buffers_read 3 11124 NULL
33887 +snd_gf1_pcm_playback_silence_11172 snd_gf1_pcm_playback_silence 3-4 11172 NULL
33888 +il_dbgfs_rx_queue_read_11221 il_dbgfs_rx_queue_read 3 11221 NULL
33889 +comedi_alloc_spriv_11234 comedi_alloc_spriv 2 11234 NULL
33890 @@ -116083,8 +124141,8 @@ index 0000000..386792a
33891 +nl80211_send_mgmt_11353 nl80211_send_mgmt 7 11353 &sel_write_create_11353
33892 +of_get_available_child_count_11361 of_get_available_child_count 0 11361 NULL
33893 +qib_get_base_info_11369 qib_get_base_info 3 11369 NULL
33894 -+tcf_register_action_11381 tcf_register_action 2 11381 NULL nohasharray
33895 -+nft_value_dump_11381 nft_value_dump 3 11381 &tcf_register_action_11381
33896 ++nft_value_dump_11381 nft_value_dump 3 11381 NULL nohasharray
33897 ++tcf_register_action_11381 tcf_register_action 2 11381 &nft_value_dump_11381
33898 +isku_sysfs_read_keys_capslock_11392 isku_sysfs_read_keys_capslock 6 11392 NULL
33899 +dev_irnet_write_11398 dev_irnet_write 3 11398 NULL
33900 +lprocfs_wr_evict_client_11402 lprocfs_wr_evict_client 3 11402 NULL
33901 @@ -116095,13 +124153,9 @@ index 0000000..386792a
33902 +adis16480_show_firmware_revision_11417 adis16480_show_firmware_revision 3 11417 NULL
33903 +trace_options_read_11419 trace_options_read 3 11419 NULL
33904 +i40e_dbg_command_write_11421 i40e_dbg_command_write 3 11421 NULL
33905 -+xd_read_multiple_pages_11422 xd_read_multiple_pages 5-4 11422 NULL
33906 +bttv_read_11432 bttv_read 3 11432 NULL
33907 +create_zero_mask_11453 create_zero_mask 0-1 11453 NULL
33908 -+do_blockdev_direct_IO_11455 do_blockdev_direct_IO 0-6 11455 NULL
33909 -+sca3000_read_first_n_hw_rb_11479 sca3000_read_first_n_hw_rb 2 11479 NULL nohasharray
33910 -+pci_set_power_state_11479 pci_set_power_state 0 11479 &sca3000_read_first_n_hw_rb_11479
33911 -+xfs_file_buffered_aio_write_11492 xfs_file_buffered_aio_write 4 11492 NULL
33912 ++sca3000_read_first_n_hw_rb_11479 sca3000_read_first_n_hw_rb 2 11479 NULL
33913 +sd_do_mode_sense_11507 sd_do_mode_sense 5 11507 NULL
33914 +kmem_zalloc_11510 kmem_zalloc 1 11510 NULL
33915 +ll_direct_IO_26_seg_11518 ll_direct_IO_26_seg 0 11518 NULL
33916 @@ -116116,7 +124170,7 @@ index 0000000..386792a
33917 +SYSC_mq_timedsend_11607 SYSC_mq_timedsend 3 11607 NULL
33918 +C_SYSC_migrate_pages_11618 C_SYSC_migrate_pages 2 11618 NULL
33919 +sisusb_send_bridge_packet_11649 sisusb_send_bridge_packet 2 11649 NULL
33920 -+nla_total_size_11658 nla_total_size 1-0 11658 NULL
33921 ++nla_total_size_11658 nla_total_size 0-1 11658 NULL
33922 +slab_ksize_11664 slab_ksize 0 11664 NULL
33923 +ide_queue_pc_tail_11673 ide_queue_pc_tail 5 11673 NULL
33924 +compat_SyS_msgsnd_11675 compat_SyS_msgsnd 3 11675 NULL
33925 @@ -116137,7 +124191,6 @@ index 0000000..386792a
33926 +sctp_setsockopt_maxseg_11829 sctp_setsockopt_maxseg 3 11829 NULL
33927 +rts51x_read_status_11830 rts51x_read_status 4 11830 NULL
33928 +unix_stream_connect_11844 unix_stream_connect 3 11844 NULL
33929 -+pci_enable_msix_range_11852 pci_enable_msix_range 0-4 11852 NULL
33930 +ecryptfs_copy_filename_11868 ecryptfs_copy_filename 4 11868 NULL
33931 +ieee80211_rx_bss_info_11887 ieee80211_rx_bss_info 3 11887 NULL
33932 +mdc_rename_11899 mdc_rename 4-6 11899 NULL
33933 @@ -116175,7 +124228,6 @@ index 0000000..386792a
33934 +ib_uverbs_unmarshall_recv_12251 ib_uverbs_unmarshall_recv 5 12251 NULL
33935 +shash_compat_setkey_12267 shash_compat_setkey 3 12267 NULL
33936 +add_sctp_bind_addr_12269 add_sctp_bind_addr 3 12269 NULL
33937 -+SYSC_vm86_12279 SYSC_vm86 2 12279 NULL
33938 +note_last_dentry_12285 note_last_dentry 3 12285 NULL
33939 +roundup_to_multiple_of_64_12288 roundup_to_multiple_of_64 0-1 12288 NULL nohasharray
33940 +il_dbgfs_nvm_read_12288 il_dbgfs_nvm_read 3 12288 &roundup_to_multiple_of_64_12288
33941 @@ -116185,8 +124237,8 @@ index 0000000..386792a
33942 +mptctl_ioctl_12355 mptctl_ioctl 2 12355 NULL
33943 +__nf_ct_ext_add_length_12364 __nf_ct_ext_add_length 3 12364 NULL
33944 +xfs_iext_inline_to_direct_12384 xfs_iext_inline_to_direct 2 12384 NULL
33945 -+write_file_dump_12391 write_file_dump 3 12391 NULL nohasharray
33946 -+populate_dir_12391 populate_dir 0 12391 &write_file_dump_12391
33947 ++btrfs_file_extent_ram_bytes_12391 btrfs_file_extent_ram_bytes 0 12391 NULL nohasharray
33948 ++write_file_dump_12391 write_file_dump 3 12391 &btrfs_file_extent_ram_bytes_12391
33949 +hbucket_elem_add_12416 hbucket_elem_add 3 12416 NULL
33950 +ieee80211_if_read_num_mcast_sta_12419 ieee80211_if_read_num_mcast_sta 3 12419 NULL
33951 +cfs_array_alloc_12441 cfs_array_alloc 2 12441 NULL
33952 @@ -116194,7 +124246,6 @@ index 0000000..386792a
33953 +x25_sendmsg_12487 x25_sendmsg 4 12487 NULL
33954 +fnic_trace_ctrl_read_12497 fnic_trace_ctrl_read 3 12497 NULL
33955 +qib_alloc_fast_reg_mr_12526 qib_alloc_fast_reg_mr 2 12526 NULL
33956 -+write_inode_now_12565 write_inode_now 0 12565 NULL
33957 +hvc_alloc_12579 hvc_alloc 4 12579 NULL
33958 +pcpu_extend_area_map_12589 pcpu_extend_area_map 2 12589 NULL
33959 +_iwl_dbgfs_prph_reg_write_12597 _iwl_dbgfs_prph_reg_write 3 12597 NULL
33960 @@ -116207,8 +124258,8 @@ index 0000000..386792a
33961 +nr_recvmsg_12649 nr_recvmsg 4 12649 NULL
33962 +rtw_android_get_link_speed_12655 rtw_android_get_link_speed 0 12655 NULL
33963 +ocfs2_read_block_12659 ocfs2_read_block 0 12659 NULL
33964 -+sel_read_class_12669 sel_read_class 3 12669 NULL nohasharray
33965 -+sparse_mem_maps_populate_node_12669 sparse_mem_maps_populate_node 4 12669 &sel_read_class_12669
33966 ++sparse_mem_maps_populate_node_12669 sparse_mem_maps_populate_node 4 12669 NULL nohasharray
33967 ++sel_read_class_12669 sel_read_class 3 12669 &sparse_mem_maps_populate_node_12669
33968 +ext4_writepage_trans_blocks_12674 ext4_writepage_trans_blocks 0 12674 NULL
33969 +iwl_dbgfs_calib_disabled_write_12707 iwl_dbgfs_calib_disabled_write 3 12707 NULL
33970 +ieee80211_if_read_num_buffered_multicast_12716 ieee80211_if_read_num_buffered_multicast 3 12716 NULL
33971 @@ -116233,14 +124284,11 @@ index 0000000..386792a
33972 +raid56_parity_recover_12987 raid56_parity_recover 5 12987 NULL
33973 +TransmitTcb_12989 TransmitTcb 4 12989 NULL
33974 +sk_peek_offset_12991 sk_peek_offset 0 12991 NULL
33975 -+__btrfs_direct_write_13007 __btrfs_direct_write 4-0 13007 NULL
33976 +bset_prev_bytes_13020 bset_prev_bytes 0 13020 NULL
33977 +subsystem_filter_write_13022 subsystem_filter_write 3 13022 NULL
33978 -+generic_segment_checks_13041 generic_segment_checks 0 13041 NULL
33979 +ocfs2_write_begin_13045 ocfs2_write_begin 3-4 13045 NULL
33980 +__dn_setsockopt_13060 __dn_setsockopt 5 13060 NULL nohasharray
33981 +ptlrpc_lprocfs_threads_min_seq_write_13060 ptlrpc_lprocfs_threads_min_seq_write 3 13060 &__dn_setsockopt_13060
33982 -+biovec_create_pool_13079 biovec_create_pool 2 13079 NULL
33983 +xattr_getsecurity_13090 xattr_getsecurity 0 13090 NULL
33984 +ttm_dma_pool_alloc_new_pages_13105 ttm_dma_pool_alloc_new_pages 3 13105 NULL
33985 +snd_rme96_playback_copy_13111 snd_rme96_playback_copy 5 13111 NULL
33986 @@ -116262,8 +124310,9 @@ index 0000000..386792a
33987 +bio_integrity_trim_13259 bio_integrity_trim 3-2 13259 NULL
33988 +simple_attr_write_13260 simple_attr_write 3 13260 NULL
33989 +pmcraid_notify_aen_13274 pmcraid_notify_aen 3 13274 NULL
33990 -+il4965_stats_flag_13281 il4965_stats_flag 0-3 13281 NULL
33991 ++il4965_stats_flag_13281 il4965_stats_flag 3-0 13281 NULL
33992 +lpfc_idiag_mbxacc_get_setup_13282 lpfc_idiag_mbxacc_get_setup 0 13282 NULL
33993 ++nvkm_i2c_pad_create__13292 nvkm_i2c_pad_create_ 5 13292 NULL
33994 +sd_major_13294 sd_major 0-1 13294 NULL
33995 +read_file_phy_err_13318 read_file_phy_err 3 13318 NULL
33996 +kvm_read_nested_guest_page_13337 kvm_read_nested_guest_page 5 13337 NULL
33997 @@ -116277,16 +124326,14 @@ index 0000000..386792a
33998 +sctp_setsockopt_peer_primary_addr_13440 sctp_setsockopt_peer_primary_addr 3 13440 NULL
33999 +ath6kl_cfg80211_connect_event_13443 ath6kl_cfg80211_connect_event 7-8-9 13443 NULL
34000 +sb_init_dio_done_wq_13482 sb_init_dio_done_wq 0 13482 NULL
34001 -+data_read_13494 data_read 3 13494 NULL
34002 ++data_read_13494 data_read 3 13494 NULL nohasharray
34003 ++ext_prop_data_store_13494 ext_prop_data_store 3 13494 &data_read_13494
34004 +core_status_13515 core_status 4 13515 NULL
34005 +smk_write_mapped_13519 smk_write_mapped 3 13519 NULL
34006 +bm_init_13529 bm_init 2 13529 NULL
34007 -+request_any_context_irq_13530 request_any_context_irq 0 13530 NULL
34008 +llcp_sock_recvmsg_13556 llcp_sock_recvmsg 4 13556 NULL
34009 -+SyS_vm86_13557 SyS_vm86 2 13557 NULL
34010 +ieee80211_if_read_ap_power_level_13558 ieee80211_if_read_ap_power_level 3 13558 NULL
34011 +hash_net4_expire_13559 hash_net4_expire 4 13559 NULL
34012 -+ubifs_get_idx_gc_leb_13566 ubifs_get_idx_gc_leb 0 13566 NULL
34013 +read_file_antenna_13574 read_file_antenna 3 13574 NULL
34014 +cache_write_13589 cache_write 3 13589 NULL
34015 +Rd_Indx_13602 Rd_Indx 3-2 13602 NULL
34016 @@ -116295,9 +124342,9 @@ index 0000000..386792a
34017 +packet_snd_13634 packet_snd 3 13634 NULL
34018 +blk_msg_write_13655 blk_msg_write 3 13655 NULL
34019 +cache_downcall_13666 cache_downcall 3 13666 NULL
34020 -+ext3_xattr_list_entries_13682 ext3_xattr_list_entries 0 13682 NULL
34021 +fw_iso_buffer_alloc_13704 fw_iso_buffer_alloc 2 13704 NULL
34022 +audit_unpack_string_13748 audit_unpack_string 3 13748 NULL
34023 ++udf_direct_IO_13765 udf_direct_IO 4 13765 NULL
34024 +ieee802154_alloc_device_13767 ieee802154_alloc_device 1 13767 NULL
34025 +fb_sys_read_13778 fb_sys_read 3 13778 NULL
34026 +ath6kl_mgmt_powersave_ap_13791 ath6kl_mgmt_powersave_ap 6 13791 NULL
34027 @@ -116316,8 +124363,7 @@ index 0000000..386792a
34028 +ocfs2_xa_value_truncate_13940 ocfs2_xa_value_truncate 2 13940 &ieee80211_if_read_dot11MeshForwarding_13940
34029 +iwl_dbgfs_protection_mode_read_13943 iwl_dbgfs_protection_mode_read 3 13943 NULL
34030 +ieee80211_if_read_min_discovery_timeout_13946 ieee80211_if_read_min_discovery_timeout 3 13946 NULL
34031 -+lpfc_idiag_queacc_read_13950 lpfc_idiag_queacc_read 3 13950 NULL nohasharray
34032 -+pagecache_write_end_13950 pagecache_write_end 0 13950 &lpfc_idiag_queacc_read_13950
34033 ++lpfc_idiag_queacc_read_13950 lpfc_idiag_queacc_read 3 13950 NULL
34034 +osc_grant_shrink_interval_seq_write_13952 osc_grant_shrink_interval_seq_write 3 13952 NULL
34035 +snd_pcm_plug_slave_size_13967 snd_pcm_plug_slave_size 0-2 13967 NULL
34036 +qcam_read_13977 qcam_read 3 13977 NULL
34037 @@ -116329,7 +124375,6 @@ index 0000000..386792a
34038 +iscsi_create_flashnode_conn_14022 iscsi_create_flashnode_conn 4 14022 NULL
34039 +pci_add_ext_cap_save_buffer_14032 pci_add_ext_cap_save_buffer 3 14032 NULL
34040 +dvb_usercopy_14036 dvb_usercopy 2 14036 NULL
34041 -+read_def_modal_eeprom_14041 read_def_modal_eeprom 3 14041 NULL
34042 +ieee80211_if_fmt_aid_14055 ieee80211_if_fmt_aid 3 14055 NULL
34043 +ovs_nla_alloc_flow_actions_14056 ovs_nla_alloc_flow_actions 1 14056 NULL
34044 +sta_agg_status_read_14058 sta_agg_status_read 3 14058 NULL
34045 @@ -116353,7 +124398,6 @@ index 0000000..386792a
34046 +rr_status_14293 rr_status 5 14293 NULL
34047 +read_default_ldt_14302 read_default_ldt 2 14302 NULL
34048 +oo_objects_14319 oo_objects 0 14319 NULL
34049 -+ll_get_user_pages_14328 ll_get_user_pages 3-2-0 14328 NULL
34050 +p9_client_zc_rpc_14345 p9_client_zc_rpc 7 14345 NULL
34051 +alloc_tx_struct_14349 alloc_tx_struct 1 14349 NULL
34052 +hash_ipportnet4_expire_14354 hash_ipportnet4_expire 4 14354 NULL
34053 @@ -116362,17 +124406,14 @@ index 0000000..386792a
34054 +ath6kl_regdump_read_14393 ath6kl_regdump_read 3 14393 NULL
34055 +smk_write_onlycap_14400 smk_write_onlycap 3 14400 NULL
34056 +mtd_concat_create_14416 mtd_concat_create 2 14416 NULL
34057 -+get_kcore_size_14425 get_kcore_size 0 14425 NULL
34058 +_iwl_dbgfs_sram_write_14439 _iwl_dbgfs_sram_write 3 14439 NULL
34059 +block_size_14443 block_size 0 14443 NULL
34060 +lmv_user_md_size_14456 lmv_user_md_size 0-1 14456 NULL
34061 +snd_emu10k1_proc_spdif_status_14457 snd_emu10k1_proc_spdif_status 4-5 14457 NULL
34062 +ath10k_write_htt_stats_mask_14458 ath10k_write_htt_stats_mask 3 14458 NULL
34063 +lustre_msg_size_v2_14470 lustre_msg_size_v2 0 14470 NULL
34064 -+dma_transfer_size_14473 dma_transfer_size 0 14473 NULL
34065 +udplite_getfrag_14479 udplite_getfrag 3-4 14479 NULL
34066 +ieee80211_if_read_dot11MeshGateAnnouncementProtocol_14486 ieee80211_if_read_dot11MeshGateAnnouncementProtocol 3 14486 NULL
34067 -+split_state_14491 split_state 0 14491 NULL
34068 +ocfs2_debug_read_14507 ocfs2_debug_read 3 14507 NULL
34069 +dataflash_read_user_otp_14536 dataflash_read_user_otp 3-2 14536 NULL nohasharray
34070 +ep0_write_14536 ep0_write 3 14536 &dataflash_read_user_otp_14536
34071 @@ -116405,11 +124446,9 @@ index 0000000..386792a
34072 +__kfifo_in_14797 __kfifo_in 3-0 14797 NULL
34073 +hpet_readl_14801 hpet_readl 0 14801 NULL nohasharray
34074 +snd_als300_gcr_read_14801 snd_als300_gcr_read 0 14801 &hpet_readl_14801
34075 -+do_tune_cpucache_14828 do_tune_cpucache 2 14828 NULL
34076 +mrp_attr_create_14853 mrp_attr_create 3 14853 NULL
34077 +lcd_write_14857 lcd_write 3 14857 NULL
34078 +get_user_cpu_mask_14861 get_user_cpu_mask 2 14861 NULL
34079 -+gmux_index_read8_14890 gmux_index_read8 0 14890 NULL
34080 +acpi_os_allocate_14892 acpi_os_allocate 1 14892 NULL
34081 +SYSC_readv_14901 SYSC_readv 3 14901 NULL
34082 +__arch_hweight64_14923 __arch_hweight64 0 14923 NULL nohasharray
34083 @@ -116426,10 +124465,9 @@ index 0000000..386792a
34084 +cld_pipe_downcall_15058 cld_pipe_downcall 3 15058 NULL
34085 +ieee80211_if_read_uapsd_max_sp_len_15067 ieee80211_if_read_uapsd_max_sp_len 3 15067 NULL
34086 +nfs4_write_cached_acl_15070 nfs4_write_cached_acl 4 15070 NULL
34087 -+ntfs_copy_from_user_15072 ntfs_copy_from_user 0-5-3 15072 NULL
34088 ++ntfs_copy_from_user_15072 ntfs_copy_from_user 3-5-0 15072 NULL
34089 +pppoe_recvmsg_15073 pppoe_recvmsg 4 15073 NULL
34090 +smscore_load_firmware_family2_15086 smscore_load_firmware_family2 3 15086 NULL
34091 -+btrfs_readpage_15094 btrfs_readpage 0 15094 NULL
34092 +compat_SyS_pwritev_15118 compat_SyS_pwritev 3 15118 NULL
34093 +hex_dump_to_buffer_15121 hex_dump_to_buffer 6 15121 NULL
34094 +start_port_15124 start_port 0 15124 NULL
34095 @@ -116447,23 +124485,20 @@ index 0000000..386792a
34096 +ioread16_15342 ioread16 0 15342 NULL
34097 +ept_prefetch_gpte_15348 ept_prefetch_gpte 4 15348 NULL
34098 +acpi_ut_create_string_object_15360 acpi_ut_create_string_object 1 15360 NULL
34099 -+ext4_direct_IO_15369 ext4_direct_IO 4 15369 NULL
34100 +graph_depth_read_15371 graph_depth_read 3 15371 NULL
34101 +fq_codel_zalloc_15378 fq_codel_zalloc 1 15378 NULL
34102 +alloc_fddidev_15382 alloc_fddidev 1 15382 NULL
34103 +pipeline_csum_to_rx_xfer_swi_read_15403 pipeline_csum_to_rx_xfer_swi_read 3 15403 NULL
34104 +get_modalias_15406 get_modalias 2 15406 NULL
34105 -+blockdev_direct_IO_15408 blockdev_direct_IO 5 15408 NULL
34106 +__videobuf_copy_to_user_15423 __videobuf_copy_to_user 4-0 15423 NULL
34107 -+rtw_cfg80211_rx_action_p2p_15432 rtw_cfg80211_rx_action_p2p 3 15432 NULL
34108 -+tcp_mtu_to_mss_15438 tcp_mtu_to_mss 2-0 15438 NULL
34109 ++tcp_mtu_to_mss_15438 tcp_mtu_to_mss 0-2 15438 NULL
34110 +hpsa_change_queue_depth_15449 hpsa_change_queue_depth 2 15449 NULL
34111 ++__clone_and_map_data_bio_15498 __clone_and_map_data_bio 3 15498 NULL
34112 +insert_old_idx_znode_15500 insert_old_idx_znode 0 15500 NULL
34113 +zd_chip_is_zd1211b_15518 zd_chip_is_zd1211b 0 15518 NULL
34114 +ifx_spi_write_15531 ifx_spi_write 3 15531 NULL
34115 +p9_check_zc_errors_15534 p9_check_zc_errors 4 15534 NULL
34116 +xfrm_state_mtu_15548 xfrm_state_mtu 0-2 15548 NULL
34117 -+snd_pcm_channel_info_15572 snd_pcm_channel_info 0 15572 NULL
34118 +persistent_status_15574 persistent_status 4 15574 NULL
34119 +bnx2fc_process_unsol_compl_15576 bnx2fc_process_unsol_compl 2 15576 NULL
34120 +vme_user_write_15587 vme_user_write 3 15587 NULL
34121 @@ -116474,11 +124509,10 @@ index 0000000..386792a
34122 +sk_memory_allocated_add_15642 sk_memory_allocated_add 2 15642 &pipeline_hs_tx_stat_fifo_int_read_15642
34123 +joydev_handle_JSIOCSBTNMAP_15643 joydev_handle_JSIOCSBTNMAP 3 15643 NULL
34124 +fs_path_add_15648 fs_path_add 3 15648 NULL
34125 -+__do_readpage_15652 __do_readpage 0 15652 NULL
34126 +xsd_read_15653 xsd_read 3 15653 NULL
34127 +unix_bind_15668 unix_bind 3 15668 NULL
34128 -+dm_read_15674 dm_read 3 15674 NULL nohasharray
34129 -+SyS_connect_15674 SyS_connect 3 15674 &dm_read_15674
34130 ++SyS_connect_15674 SyS_connect 3 15674 NULL nohasharray
34131 ++dm_read_15674 dm_read 3 15674 &SyS_connect_15674
34132 +uinput_str_to_user_15695 uinput_str_to_user 3 15695 NULL
34133 +__sk_migrate_realloc_15709 __sk_migrate_realloc 3 15709 NULL
34134 +tracing_snapshot_write_15719 tracing_snapshot_write 3 15719 NULL
34135 @@ -116497,6 +124531,7 @@ index 0000000..386792a
34136 +lpfc_idiag_drbacc_read_15948 lpfc_idiag_drbacc_read 3 15948 NULL
34137 +snd_pcm_lib_read_transfer_15952 snd_pcm_lib_read_transfer 5-2-4 15952 NULL
34138 +memblock_virt_alloc_try_nid_15954 memblock_virt_alloc_try_nid 1 15954 NULL
34139 ++smk_read_ptrace_15974 smk_read_ptrace 3 15974 NULL
34140 +viafb_vt1636_proc_write_16018 viafb_vt1636_proc_write 3 16018 NULL
34141 +dccp_recvmsg_16056 dccp_recvmsg 4 16056 NULL
34142 +read_file_spectral_period_16057 read_file_spectral_period 3 16057 NULL
34143 @@ -116508,7 +124543,7 @@ index 0000000..386792a
34144 +fsm_init_16134 fsm_init 2 16134 NULL
34145 +ext4_xattr_block_get_16148 ext4_xattr_block_get 0 16148 NULL
34146 +optimal_reclaimed_pages_16172 optimal_reclaimed_pages 0 16172 NULL
34147 -+mapping_level_16188 mapping_level 2-0 16188 NULL
34148 ++mapping_level_16188 mapping_level 0-2 16188 NULL
34149 +i40e_allocate_virt_mem_d_16191 i40e_allocate_virt_mem_d 3 16191 NULL
34150 +ath10k_htt_rx_ring_size_16201 ath10k_htt_rx_ring_size 0 16201 NULL
34151 +cipso_v4_map_cat_rng_hton_16203 cipso_v4_map_cat_rng_hton 0 16203 NULL
34152 @@ -116523,8 +124558,8 @@ index 0000000..386792a
34153 +SyS_fgetxattr_16254 SyS_fgetxattr 4 16254 NULL
34154 +reiserfs_acl_count_16265 reiserfs_acl_count 0-1 16265 NULL
34155 +ocfs2_xattr_bucket_value_truncate_16279 ocfs2_xattr_bucket_value_truncate 4 16279 NULL
34156 -+nand_bch_init_16280 nand_bch_init 3-2 16280 NULL nohasharray
34157 -+drbd_setsockopt_16280 drbd_setsockopt 5 16280 &nand_bch_init_16280
34158 ++drbd_setsockopt_16280 drbd_setsockopt 5 16280 NULL nohasharray
34159 ++nand_bch_init_16280 nand_bch_init 3-2 16280 &drbd_setsockopt_16280
34160 +account_16283 account 0-4-2 16283 NULL nohasharray
34161 +mirror_status_16283 mirror_status 5 16283 &account_16283
34162 +jumpshot_read_data_16287 jumpshot_read_data 4 16287 NULL
34163 @@ -116533,14 +124568,13 @@ index 0000000..386792a
34164 +rbd_segment_offset_16293 rbd_segment_offset 0-2 16293 NULL
34165 +rsc_mgr_init_16299 rsc_mgr_init 3 16299 NULL
34166 +kvm_handle_hva_range_16312 kvm_handle_hva_range 3-2 16312 NULL
34167 -+sysfs_create_groups_16360 sysfs_create_groups 0 16360 NULL
34168 +total_ps_buffered_read_16365 total_ps_buffered_read 3 16365 NULL
34169 +iscsi_tcp_conn_setup_16376 iscsi_tcp_conn_setup 2 16376 NULL
34170 -+i8042_create_kbd_port_16379 i8042_create_kbd_port 0 16379 NULL
34171 +ieee80211_if_read_tsf_16420 ieee80211_if_read_tsf 3 16420 NULL
34172 +rxrpc_server_keyring_16431 rxrpc_server_keyring 3 16431 NULL
34173 +__bio_add_page_16435 __bio_add_page 0-4 16435 NULL
34174 +cmdline_store_16442 cmdline_store 4 16442 NULL
34175 ++copy_from_user_bvec_16447 copy_from_user_bvec 0-4 16447 NULL
34176 +btrfs_truncate_inode_items_16452 btrfs_truncate_inode_items 4 16452 NULL
34177 +netlink_change_ngroups_16457 netlink_change_ngroups 2 16457 NULL
34178 +req_capsule_get_size_16467 req_capsule_get_size 0 16467 NULL
34179 @@ -116551,7 +124585,6 @@ index 0000000..386792a
34180 +lpfc_debugfs_read_16566 lpfc_debugfs_read 3 16566 NULL
34181 +agp_allocate_memory_wrap_16576 agp_allocate_memory_wrap 1 16576 NULL
34182 +lustre_msg_hdr_size_v2_16589 lustre_msg_hdr_size_v2 0 16589 NULL
34183 -+gmux_index_read32_16604 gmux_index_read32 0 16604 NULL
34184 +compat_SyS_migrate_pages_16618 compat_SyS_migrate_pages 2 16618 NULL
34185 +rtw_set_wpa_ie_16633 rtw_set_wpa_ie 3 16633 NULL
34186 +btrfs_get_token_32_16651 btrfs_get_token_32 0 16651 NULL
34187 @@ -116586,6 +124619,7 @@ index 0000000..386792a
34188 +entry_length_17093 entry_length 0 17093 NULL
34189 +write_mem_17114 write_mem 3 17114 NULL
34190 +pvr2_hdw_state_report_17121 pvr2_hdw_state_report 3 17121 NULL
34191 ++do_blockdev_direct_IO_17143 do_blockdev_direct_IO 0-6 17143 NULL
34192 +nouveau_instobj_create__17144 nouveau_instobj_create_ 4 17144 NULL
34193 +jumpshot_write_data_17151 jumpshot_write_data 4 17151 NULL
34194 +sep_read_17161 sep_read 3 17161 NULL
34195 @@ -116594,8 +124628,8 @@ index 0000000..386792a
34196 +UniStrnlen_17169 UniStrnlen 0 17169 NULL
34197 +access_remote_vm_17189 access_remote_vm 0 17189 NULL nohasharray
34198 +iwl_dbgfs_txfifo_flush_write_17189 iwl_dbgfs_txfifo_flush_write 3 17189 &access_remote_vm_17189
34199 -+iscsit_find_cmd_from_itt_or_dump_17194 iscsit_find_cmd_from_itt_or_dump 3 17194 NULL nohasharray
34200 -+driver_state_read_17194 driver_state_read 3 17194 &iscsit_find_cmd_from_itt_or_dump_17194
34201 ++driver_state_read_17194 driver_state_read 3 17194 NULL nohasharray
34202 ++iscsit_find_cmd_from_itt_or_dump_17194 iscsit_find_cmd_from_itt_or_dump 3 17194 &driver_state_read_17194
34203 +sync_request_17208 sync_request 2 17208 NULL
34204 +dn_recvmsg_17213 dn_recvmsg 4 17213 NULL
34205 +lprocfs_read_frac_helper_17261 lprocfs_read_frac_helper 0 17261 NULL
34206 @@ -116619,11 +124653,12 @@ index 0000000..386792a
34207 +__ref_totlen_17461 __ref_totlen 0 17461 NULL
34208 +probe_kernel_write_17481 probe_kernel_write 3 17481 NULL
34209 +TSS_rawhmac_17486 TSS_rawhmac 3 17486 NULL
34210 ++copy_page_from_iter_17512 copy_page_from_iter 3-0 17512 NULL
34211 ++reiserfs_direct_IO_17513 reiserfs_direct_IO 4 17513 NULL
34212 +lbs_highrssi_write_17515 lbs_highrssi_write 3 17515 NULL
34213 +qp_free_res_17541 qp_free_res 5 17541 NULL
34214 +__copy_to_user_17551 __copy_to_user 0-3 17551 NULL
34215 +copy_from_user_17559 copy_from_user 3-0 17559 NULL
34216 -+snd_pcm_action_lock_irq_17569 snd_pcm_action_lock_irq 0 17569 NULL
34217 +hash_netport4_expire_17573 hash_netport4_expire 4 17573 NULL
34218 +acpi_ut_create_package_object_17594 acpi_ut_create_package_object 1 17594 NULL
34219 +neigh_hash_alloc_17595 neigh_hash_alloc 1 17595 NULL
34220 @@ -116635,7 +124670,6 @@ index 0000000..386792a
34221 +packet_setsockopt_17662 packet_setsockopt 5 17662 NULL nohasharray
34222 +ubi_io_read_data_17662 ubi_io_read_data 0 17662 &packet_setsockopt_17662
34223 +pwr_enable_ps_read_17686 pwr_enable_ps_read 3 17686 NULL
34224 -+filemap_fdatawait_17688 filemap_fdatawait 0 17688 NULL
34225 +venus_rename_17707 venus_rename 4-5 17707 NULL
34226 +exofs_read_lookup_dev_table_17733 exofs_read_lookup_dev_table 3 17733 NULL
34227 +sctpprobe_read_17741 sctpprobe_read 3 17741 NULL
34228 @@ -116666,7 +124700,6 @@ index 0000000..386792a
34229 +smk_write_cipso_17989 smk_write_cipso 3 17989 NULL
34230 +gnttab_max_grant_frames_17993 gnttab_max_grant_frames 0 17993 NULL
34231 +pvr2_v4l2_read_18006 pvr2_v4l2_read 3 18006 NULL
34232 -+cpufreq_add_dev_symlink_18028 cpufreq_add_dev_symlink 0 18028 NULL
34233 +o2hb_highest_node_18034 o2hb_highest_node 0 18034 NULL
34234 +cryptd_alloc_instance_18048 cryptd_alloc_instance 2-3 18048 NULL
34235 +__btrfs_drop_extents_18049 __btrfs_drop_extents 5 18049 NULL
34236 @@ -116677,14 +124710,12 @@ index 0000000..386792a
34237 +SYSC_pselect6_18076 SYSC_pselect6 1 18076 NULL
34238 +SYSC_semtimedop_18091 SYSC_semtimedop 3 18091 NULL
34239 +mpi_alloc_18094 mpi_alloc 1 18094 NULL
34240 -+hfs_direct_IO_18104 hfs_direct_IO 4 18104 NULL
34241 +dfs_file_read_18116 dfs_file_read 3 18116 NULL
34242 +svc_getnl_18120 svc_getnl 0 18120 NULL
34243 +paging32_gpte_to_gfn_lvl_18131 paging32_gpte_to_gfn_lvl 0-2-1 18131 NULL
34244 +selinux_inode_setsecurity_18148 selinux_inode_setsecurity 4 18148 NULL
34245 +is_idx_node_in_use_18165 is_idx_node_in_use 0 18165 NULL
34246 +pccard_store_cis_18176 pccard_store_cis 6 18176 NULL
34247 -+snd_pcm_hw_refine_user_18204 snd_pcm_hw_refine_user 0 18204 NULL
34248 +orinoco_add_extscan_result_18207 orinoco_add_extscan_result 3 18207 NULL
34249 +gsm_control_message_18209 gsm_control_message 4 18209 NULL
34250 +do_ipv6_setsockopt_18215 do_ipv6_setsockopt 5 18215 NULL
34251 @@ -116701,7 +124732,6 @@ index 0000000..386792a
34252 +mmc_send_bus_test_18285 mmc_send_bus_test 4 18285 NULL
34253 +um_idi_write_18293 um_idi_write 3 18293 NULL
34254 +nouveau_disp_create__18305 nouveau_disp_create_ 4-7 18305 NULL
34255 -+vga_r_18310 vga_r 0 18310 NULL
34256 +class_add_profile_18315 class_add_profile 1-3-5 18315 NULL
34257 +csio_mem_read_18319 csio_mem_read 3 18319 NULL
34258 +alloc_and_copy_string_18321 alloc_and_copy_string 2 18321 NULL
34259 @@ -116716,14 +124746,12 @@ index 0000000..386792a
34260 +__ceph_getxattr_18386 __ceph_getxattr 0 18386 NULL
34261 +ci_role_write_18388 ci_role_write 3 18388 NULL
34262 +adis16136_show_serial_18402 adis16136_show_serial 3 18402 NULL
34263 -+rtl8169_rx_fill_18416 rtl8169_rx_fill 0 18416 NULL
34264 +memblock_virt_alloc_node_nopanic_18431 memblock_virt_alloc_node_nopanic 1 18431 NULL
34265 +iscsi_create_flashnode_sess_18433 iscsi_create_flashnode_sess 4 18433 NULL
34266 +snd_hda_get_connections_18437 snd_hda_get_connections 0 18437 NULL
34267 +fuse_perform_write_18457 fuse_perform_write 4 18457 NULL
34268 +regset_tls_set_18459 regset_tls_set 4 18459 NULL
34269 -+pci_vpd_lrdt_size_18479 pci_vpd_lrdt_size 0 18479 NULL nohasharray
34270 -+mite_bytes_in_transit_18479 mite_bytes_in_transit 0 18479 &pci_vpd_lrdt_size_18479
34271 ++pci_vpd_lrdt_size_18479 pci_vpd_lrdt_size 0 18479 NULL
34272 +udpv6_setsockopt_18487 udpv6_setsockopt 5 18487 NULL
34273 +btrfs_fiemap_18501 btrfs_fiemap 3 18501 NULL
34274 +__copy_user_zeroing_intel_18510 __copy_user_zeroing_intel 0-3 18510 NULL
34275 @@ -116735,8 +124763,7 @@ index 0000000..386792a
34276 +sas_change_queue_depth_18555 sas_change_queue_depth 2 18555 NULL
34277 +smk_write_rules_list_18565 smk_write_rules_list 3 18565 NULL
34278 +debug_output_18575 debug_output 3 18575 NULL
34279 -+filemap_fdatawait_range_18600 filemap_fdatawait_range 0 18600 NULL nohasharray
34280 -+slabinfo_write_18600 slabinfo_write 3 18600 &filemap_fdatawait_range_18600
34281 ++filemap_fdatawait_range_18600 filemap_fdatawait_range 0 18600 NULL
34282 +iowarrior_write_18604 iowarrior_write 3 18604 NULL
34283 +from_buffer_18625 from_buffer 3 18625 NULL
34284 +snd_pcm_oss_write3_18657 snd_pcm_oss_write3 0-3 18657 NULL
34285 @@ -116761,20 +124788,17 @@ index 0000000..386792a
34286 +sctp_setsockopt_events_18862 sctp_setsockopt_events 3 18862 NULL
34287 +ieee80211_if_read_element_ttl_18869 ieee80211_if_read_element_ttl 3 18869 NULL
34288 +xlog_find_verify_log_record_18870 xlog_find_verify_log_record 2 18870 NULL
34289 ++devm_mdiobus_alloc_size_18902 devm_mdiobus_alloc_size 2 18902 NULL
34290 +ceph_setxattr_18913 ceph_setxattr 4 18913 NULL
34291 +ieee80211_rx_mgmt_disassoc_18927 ieee80211_rx_mgmt_disassoc 3 18927 NULL
34292 -+snapshot_write_next_18937 snapshot_write_next 0 18937 NULL
34293 +__nla_reserve_18974 __nla_reserve 3 18974 NULL
34294 -+__blockdev_direct_IO_18977 __blockdev_direct_IO 0-6 18977 NULL
34295 +find_dirtiest_idx_leb_19001 find_dirtiest_idx_leb 0 19001 NULL
34296 +layout_in_gaps_19006 layout_in_gaps 2 19006 NULL
34297 +huge_page_size_19008 huge_page_size 0 19008 NULL
34298 +hash_netport6_expire_19013 hash_netport6_expire 4 19013 NULL
34299 -+sysfs_create_dir_ns_19033 sysfs_create_dir_ns 0 19033 NULL
34300 +revalidate_19043 revalidate 2 19043 NULL
34301 +afs_vnode_store_data_19048 afs_vnode_store_data 2-3-4-5 19048 NULL
34302 -+osc_pinger_recov_seq_write_19056 osc_pinger_recov_seq_write 3 19056 NULL nohasharray
34303 -+do_vm86_irq_handling_19056 do_vm86_irq_handling 2 19056 &osc_pinger_recov_seq_write_19056
34304 ++osc_pinger_recov_seq_write_19056 osc_pinger_recov_seq_write 3 19056 NULL
34305 +create_gpadl_header_19064 create_gpadl_header 2 19064 NULL
34306 +ceph_create_snap_context_19082 ceph_create_snap_context 1 19082 NULL
34307 +sta_last_seq_ctrl_read_19106 sta_last_seq_ctrl_read 3 19106 NULL
34308 @@ -116784,12 +124808,12 @@ index 0000000..386792a
34309 +alloc_irdadev_19140 alloc_irdadev 1 19140 NULL
34310 +sleep_auth_read_19159 sleep_auth_read 3 19159 NULL
34311 +smk_write_access2_19170 smk_write_access2 3 19170 NULL
34312 ++read_extent_buffer_to_user_19189 read_extent_buffer_to_user 4-3 19189 NULL
34313 +iwl_dbgfs_reply_tx_error_read_19205 iwl_dbgfs_reply_tx_error_read 3 19205 NULL
34314 -+__copy_to_user_inatomic_19214 __copy_to_user_inatomic 3-0 19214 NULL
34315 ++__copy_to_user_inatomic_19214 __copy_to_user_inatomic 0-3 19214 NULL
34316 +dev_counters_read_19216 dev_counters_read 3 19216 NULL
34317 +wbcir_tx_19219 wbcir_tx 3 19219 NULL
34318 +snd_mask_max_19224 snd_mask_max 0 19224 NULL
34319 -+snd_pcm_capture_rewind_19229 snd_pcm_capture_rewind 0-2 19229 NULL
34320 +bio_alloc_mddev_19238 bio_alloc_mddev 2 19238 NULL
34321 +ucma_query_19260 ucma_query 4 19260 NULL
34322 +il_dbgfs_rxon_filter_flags_read_19281 il_dbgfs_rxon_filter_flags_read 3 19281 NULL
34323 @@ -116799,8 +124823,8 @@ index 0000000..386792a
34324 +ocfs2_prepare_inode_for_refcount_19303 ocfs2_prepare_inode_for_refcount 3-4 19303 NULL
34325 +event_tx_stuck_read_19305 event_tx_stuck_read 3 19305 NULL
34326 +debug_read_19322 debug_read 3 19322 NULL
34327 -+cfg80211_inform_bss_19332 cfg80211_inform_bss 8 19332 NULL nohasharray
34328 -+lbs_host_sleep_write_19332 lbs_host_sleep_write 3 19332 &cfg80211_inform_bss_19332
34329 ++lbs_host_sleep_write_19332 lbs_host_sleep_write 3 19332 NULL nohasharray
34330 ++cfg80211_inform_bss_19332 cfg80211_inform_bss 8 19332 &lbs_host_sleep_write_19332
34331 +closure_sub_19359 closure_sub 2 19359 NULL
34332 +firmware_data_write_19360 firmware_data_write 6-5 19360 NULL
34333 +read_zero_19366 read_zero 3 19366 NULL
34334 @@ -116817,19 +124841,16 @@ index 0000000..386792a
34335 +kstrtoll_from_user_19500 kstrtoll_from_user 2 19500 NULL
34336 +ext4_add_new_descs_19509 ext4_add_new_descs 3 19509 NULL
34337 +batadv_tvlv_container_register_19520 batadv_tvlv_container_register 5 19520 NULL
34338 -+cfc_write_array_to_buffer_19529 cfc_write_array_to_buffer 3 19529 NULL
34339 +nfc_llcp_build_tlv_19536 nfc_llcp_build_tlv 3 19536 NULL
34340 +gfn_to_index_19558 gfn_to_index 0-1-3-2 19558 NULL
34341 +ocfs2_control_message_19564 ocfs2_control_message 3 19564 NULL
34342 +nfsd_read_19568 nfsd_read 5 19568 NULL
34343 +ieee80211_key_alloc_19575 ieee80211_key_alloc 3 19575 NULL
34344 -+mnt_want_write_file_19579 mnt_want_write_file 0 19579 NULL
34345 +bm_status_read_19583 bm_status_read 3 19583 NULL
34346 +load_xattr_datum_19594 load_xattr_datum 0 19594 NULL
34347 +__mei_cl_recv_19636 __mei_cl_recv 3 19636 NULL
34348 +LoadBitmap_19658 LoadBitmap 2 19658 NULL
34349 +memblock_virt_alloc_low_nopanic_19714 memblock_virt_alloc_low_nopanic 1 19714 NULL
34350 -+ocfs2_control_get_this_node_19721 ocfs2_control_get_this_node 0 19721 NULL
34351 +read_reg_19723 read_reg 0 19723 NULL
34352 +wm8350_block_write_19727 wm8350_block_write 2-3 19727 NULL
34353 +memcpy_toiovecend_19736 memcpy_toiovecend 4-3 19736 NULL
34354 @@ -116852,26 +124873,23 @@ index 0000000..386792a
34355 +iwl_dbgfs_rx_queue_read_19943 iwl_dbgfs_rx_queue_read 3 19943 NULL
34356 +cfg80211_rx_assoc_resp_19944 cfg80211_rx_assoc_resp 4 19944 NULL
34357 +ll_xattr_cache_list_19954 ll_xattr_cache_list 0 19954 NULL
34358 -+get_jack_mode_name_19976 get_jack_mode_name 4 19976 NULL
34359 +attach_hdlc_protocol_19986 attach_hdlc_protocol 3 19986 NULL
34360 -+rtw_set_wps_probe_resp_19989 rtw_set_wps_probe_resp 3 19989 NULL nohasharray
34361 -+i40e_reserve_msix_vectors_19989 i40e_reserve_msix_vectors 2 19989 &rtw_set_wps_probe_resp_19989
34362 ++rtw_set_wps_probe_resp_19989 rtw_set_wps_probe_resp 3 19989 NULL
34363 +diva_um_idi_read_20003 diva_um_idi_read 0 20003 NULL
34364 -+lov_stripe_md_size_20009 lov_stripe_md_size 0-1 20009 NULL nohasharray
34365 -+event_trigger_write_20009 event_trigger_write 3 20009 &lov_stripe_md_size_20009
34366 ++event_trigger_write_20009 event_trigger_write 3 20009 NULL nohasharray
34367 ++lov_stripe_md_size_20009 lov_stripe_md_size 0-1 20009 &event_trigger_write_20009
34368 +tree_mod_log_eb_move_20011 tree_mod_log_eb_move 5 20011 NULL
34369 +SYSC_fgetxattr_20027 SYSC_fgetxattr 4 20027 NULL
34370 +split_scan_timeout_read_20029 split_scan_timeout_read 3 20029 NULL
34371 -+iwl_mvm_power_mac_dbgfs_read_20067 iwl_mvm_power_mac_dbgfs_read 0-4 20067 NULL
34372 -+target_message_20072 target_message 2 20072 NULL
34373 ++iwl_mvm_power_mac_dbgfs_read_20067 iwl_mvm_power_mac_dbgfs_read 4-0 20067 NULL
34374 +rawv6_sendmsg_20080 rawv6_sendmsg 4 20080 NULL
34375 +fuse_conn_limit_read_20084 fuse_conn_limit_read 3 20084 NULL
34376 +aat2870_reg_write_file_20086 aat2870_reg_write_file 3 20086 NULL
34377 +team_options_register_20091 team_options_register 3 20091 NULL
34378 +qla2x00_adjust_sdev_qdepth_up_20097 qla2x00_adjust_sdev_qdepth_up 2 20097 NULL
34379 -+root_nfs_copy_20111 root_nfs_copy 3 20111 NULL
34380 +hptiop_adjust_disk_queue_depth_20122 hptiop_adjust_disk_queue_depth 2 20122 NULL
34381 +self_check_vid_hdr_20131 self_check_vid_hdr 0 20131 NULL
34382 ++ext4_ext_direct_IO_20165 ext4_ext_direct_IO 4 20165 NULL
34383 +tomoyo_commit_ok_20167 tomoyo_commit_ok 2 20167 NULL
34384 +read_flush_pipefs_20171 read_flush_pipefs 3 20171 NULL
34385 +wep_addr_key_count_read_20174 wep_addr_key_count_read 3 20174 NULL
34386 @@ -116887,11 +124905,10 @@ index 0000000..386792a
34387 +snd_cs4281_BA1_read_20323 snd_cs4281_BA1_read 5 20323 NULL
34388 +gfs2_glock_nq_m_20347 gfs2_glock_nq_m 1 20347 NULL
34389 +handle_arr_calc_size_20355 handle_arr_calc_size 0-1 20355 NULL
34390 -+snd_pcm_stop_20376 snd_pcm_stop 0 20376 NULL
34391 +smk_set_cipso_20379 smk_set_cipso 3 20379 NULL
34392 +snd_nm256_readl_20394 snd_nm256_readl 0 20394 NULL
34393 -+SyS_get_mempolicy_20399 SyS_get_mempolicy 3 20399 NULL nohasharray
34394 -+__kfifo_from_user_20399 __kfifo_from_user 3 20399 &SyS_get_mempolicy_20399
34395 ++__kfifo_from_user_20399 __kfifo_from_user 3 20399 NULL nohasharray
34396 ++SyS_get_mempolicy_20399 SyS_get_mempolicy 3 20399 &__kfifo_from_user_20399
34397 +compat_ipv6_setsockopt_20468 compat_ipv6_setsockopt 5 20468 NULL
34398 +read_buf_20469 read_buf 2 20469 NULL
34399 +bio_trim_20472 bio_trim 2 20472 NULL
34400 @@ -116907,29 +124924,29 @@ index 0000000..386792a
34401 +set_secure_conn_20596 set_secure_conn 4 20596 NULL
34402 +sync_timeline_create_20601 sync_timeline_create 2 20601 NULL
34403 +lirc_write_20604 lirc_write 3 20604 NULL
34404 -+qib_qsfp_write_20614 qib_qsfp_write 0-2-4 20614 NULL
34405 ++qib_qsfp_write_20614 qib_qsfp_write 0-4-2 20614 NULL
34406 +snd_pcm_oss_prepare_20641 snd_pcm_oss_prepare 0 20641 NULL
34407 +get_extent_skip_holes_20642 get_extent_skip_holes 2 20642 NULL
34408 -+kfifo_copy_to_user_20646 kfifo_copy_to_user 3-4 20646 NULL
34409 -+cpulist_scnprintf_20648 cpulist_scnprintf 2-0 20648 NULL
34410 ++kfifo_copy_to_user_20646 kfifo_copy_to_user 4-3 20646 NULL
34411 ++cpulist_scnprintf_20648 cpulist_scnprintf 2 20648 NULL
34412 +oz_add_farewell_20652 oz_add_farewell 5 20652 NULL
34413 +oz_cdev_read_20659 oz_cdev_read 3 20659 NULL
34414 -+snd_hdsp_playback_copy_20676 snd_hdsp_playback_copy 5 20676 NULL nohasharray
34415 -+btrfs_qgroup_reserve_20676 btrfs_qgroup_reserve 0 20676 &snd_hdsp_playback_copy_20676
34416 ++snd_hdsp_playback_copy_20676 snd_hdsp_playback_copy 5 20676 NULL
34417 +dvb_dmxdev_buffer_read_20682 dvb_dmxdev_buffer_read 0-4 20682 NULL
34418 +cpumask_size_20683 cpumask_size 0 20683 NULL
34419 +btrfs_node_blockptr_20685 btrfs_node_blockptr 0 20685 NULL
34420 ++xpcs_reg_addr_write_20694 xpcs_reg_addr_write 3 20694 NULL
34421 +read_file_tgt_int_stats_20697 read_file_tgt_int_stats 3 20697 NULL
34422 +__maestro_read_20700 __maestro_read 0 20700 NULL
34423 +cipso_v4_gentag_rng_20703 cipso_v4_gentag_rng 0 20703 NULL
34424 +pcpu_page_first_chunk_20712 pcpu_page_first_chunk 1 20712 NULL
34425 ++hfs_direct_IO_20714 hfs_direct_IO 4 20714 NULL
34426 +ocfs2_read_xattr_bucket_20722 ocfs2_read_xattr_bucket 0 20722 NULL
34427 +security_context_to_sid_force_20724 security_context_to_sid_force 2 20724 NULL
34428 +fb_prepare_logo_20743 fb_prepare_logo 0 20743 NULL
34429 +vol_cdev_direct_write_20751 vol_cdev_direct_write 3 20751 NULL
34430 +ocfs2_align_bytes_to_clusters_20754 ocfs2_align_bytes_to_clusters 2 20754 NULL
34431 -+brcmf_p2p_escan_20763 brcmf_p2p_escan 2 20763 NULL nohasharray
34432 -+mnt_clone_write_20763 mnt_clone_write 0 20763 &brcmf_p2p_escan_20763
34433 ++brcmf_p2p_escan_20763 brcmf_p2p_escan 2 20763 NULL
34434 +ubi_io_read_20767 ubi_io_read 0 20767 NULL
34435 +fb_alloc_cmap_gfp_20792 fb_alloc_cmap_gfp 2 20792 NULL
34436 +iwl_dbgfs_rxon_flags_read_20795 iwl_dbgfs_rxon_flags_read 3 20795 NULL
34437 @@ -116940,7 +124957,6 @@ index 0000000..386792a
34438 +uvc_alloc_entity_20836 uvc_alloc_entity 4-3 20836 NULL
34439 +p9_tag_alloc_20845 p9_tag_alloc 3 20845 NULL
34440 +nvme_trans_supported_vpd_pages_20847 nvme_trans_supported_vpd_pages 4 20847 NULL
34441 -+get_name_20855 get_name 4 20855 NULL
34442 +iwl_dbgfs_pm_params_read_20866 iwl_dbgfs_pm_params_read 3 20866 NULL
34443 +snd_pcm_capture_avail_20867 snd_pcm_capture_avail 0 20867 NULL
34444 +srq_free_res_20868 srq_free_res 5 20868 NULL
34445 @@ -116958,15 +124974,12 @@ index 0000000..386792a
34446 +snd_rme9652_playback_copy_20970 snd_rme9652_playback_copy 5 20970 NULL
34447 +alg_setsockopt_20985 alg_setsockopt 5 20985 NULL
34448 +qib_verbs_send_20999 qib_verbs_send 5-3 20999 NULL
34449 -+btrfs_dirty_pages_21019 btrfs_dirty_pages 0 21019 NULL
34450 +btrfs_inode_ref_name_len_21024 btrfs_inode_ref_name_len 0 21024 NULL
34451 +rx_defrag_tkip_called_read_21031 rx_defrag_tkip_called_read 3 21031 NULL
34452 +srp_change_queue_depth_21038 srp_change_queue_depth 2 21038 NULL
34453 +fsl_edma_prep_dma_cyclic_21042 fsl_edma_prep_dma_cyclic 4-3 21042 NULL
34454 +lbs_threshold_read_21046 lbs_threshold_read 5 21046 NULL
34455 -+reiserfs_direct_IO_21051 reiserfs_direct_IO 4 21051 NULL
34456 +proc_fault_inject_write_21058 proc_fault_inject_write 3 21058 NULL
34457 -+qdisc_get_default_21072 qdisc_get_default 2 21072 NULL
34458 +event_calibration_read_21083 event_calibration_read 3 21083 NULL
34459 +bl_add_page_to_bio_21094 bl_add_page_to_bio 2 21094 NULL nohasharray
34460 +multipath_status_21094 multipath_status 5 21094 &bl_add_page_to_bio_21094
34461 @@ -116976,10 +124989,9 @@ index 0000000..386792a
34462 +i2400m_rx_trace_21127 i2400m_rx_trace 3 21127 NULL
34463 +mei_dbgfs_read_active_21172 mei_dbgfs_read_active 3 21172 NULL
34464 +cx18_v4l2_read_21196 cx18_v4l2_read 3 21196 NULL
34465 -+__generic_file_aio_write_21201 __generic_file_aio_write 0 21201 NULL
34466 +ipc_rcu_alloc_21208 ipc_rcu_alloc 1 21208 NULL
34467 +scsi_execute_req_flags_21215 scsi_execute_req_flags 5 21215 NULL
34468 -+get_numpages_21227 get_numpages 0-2-1 21227 NULL
34469 ++get_numpages_21227 get_numpages 0-1-2 21227 NULL
34470 +input_ff_create_21240 input_ff_create 2 21240 NULL
34471 +cfg80211_notify_new_peer_candidate_21242 cfg80211_notify_new_peer_candidate 4 21242 NULL
34472 +fru_length_21257 fru_length 0 21257 NULL
34473 @@ -116991,23 +125003,20 @@ index 0000000..386792a
34474 +ftrace_profile_read_21327 ftrace_profile_read 3 21327 NULL
34475 +read_file_bool_bmps_21344 read_file_bool_bmps 3 21344 NULL
34476 +gfs2_ea_get_copy_21353 gfs2_ea_get_copy 0 21353 NULL
34477 ++allocate_cmdlines_buffer_21355 allocate_cmdlines_buffer 1 21355 NULL
34478 +alloc_orinocodev_21371 alloc_orinocodev 1 21371 NULL
34479 +SYSC_rt_sigpending_21379 SYSC_rt_sigpending 2 21379 NULL
34480 +video_ioctl2_21380 video_ioctl2 2 21380 NULL
34481 +insert_ptr_21386 insert_ptr 6 21386 NULL
34482 +diva_get_driver_dbg_mask_21399 diva_get_driver_dbg_mask 0 21399 NULL
34483 -+__clone_and_map_simple_bio_21404 __clone_and_map_simple_bio 4 21404 NULL
34484 +snd_m3_inw_21406 snd_m3_inw 0 21406 NULL
34485 +usnic_ib_dump_vf_hdr_21423 usnic_ib_dump_vf_hdr 3 21423 NULL
34486 -+snapshot_read_next_21426 snapshot_read_next 0 21426 NULL
34487 +tcp_bound_to_half_wnd_21429 tcp_bound_to_half_wnd 0-2 21429 NULL
34488 -+tracing_saved_cmdlines_read_21434 tracing_saved_cmdlines_read 3 21434 NULL
34489 +aggr_size_tx_agg_vs_rate_read_21438 aggr_size_tx_agg_vs_rate_read 3 21438 NULL
34490 +__ertm_hdr_size_21450 __ertm_hdr_size 0 21450 NULL
34491 +mei_nfc_send_21477 mei_nfc_send 3 21477 NULL
34492 +read_file_xmit_21487 read_file_xmit 3 21487 NULL
34493 +mmc_alloc_sg_21504 mmc_alloc_sg 1 21504 NULL
34494 -+btrfs_file_aio_write_21520 btrfs_file_aio_write 4 21520 NULL
34495 +il_dbgfs_stations_read_21532 il_dbgfs_stations_read 3 21532 NULL
34496 +cipso_v4_map_cat_enum_hton_21540 cipso_v4_map_cat_enum_hton 0 21540 NULL
34497 +rxrpc_send_data_21553 rxrpc_send_data 5 21553 NULL
34498 @@ -117022,7 +125031,6 @@ index 0000000..386792a
34499 +regmap_register_patch_21681 regmap_register_patch 3 21681 NULL
34500 +rtllib_alloc_txb_21687 rtllib_alloc_txb 1 21687 NULL
34501 +evdev_ioctl_handler_21705 evdev_ioctl_handler 2 21705 NULL
34502 -+update_time_21719 update_time 0 21719 NULL
34503 +unix_skb_len_21722 unix_skb_len 0 21722 NULL
34504 +lprocfs_wr_import_21728 lprocfs_wr_import 3 21728 NULL
34505 +mthca_alloc_init_21754 mthca_alloc_init 2 21754 NULL
34506 @@ -117034,9 +125042,9 @@ index 0000000..386792a
34507 +oom_adj_read_21847 oom_adj_read 3 21847 NULL
34508 +lpfc_idiag_extacc_avail_get_21865 lpfc_idiag_extacc_avail_get 0-3 21865 NULL
34509 +brcms_debugfs_hardware_read_21867 brcms_debugfs_hardware_read 3 21867 NULL
34510 -+msix_capability_init_21870 msix_capability_init 0 21870 NULL
34511 +sisusbcon_bmove_21873 sisusbcon_bmove 6-5-7 21873 NULL
34512 +ldlm_lock_create_21888 ldlm_lock_create 7 21888 NULL
34513 ++__btrfs_direct_write_21894 __btrfs_direct_write 3 21894 NULL
34514 +dbAllocCtl_21911 dbAllocCtl 0 21911 NULL
34515 +qsfp_1_read_21915 qsfp_1_read 3 21915 NULL
34516 +twl_i2c_write_u16_21953 twl_i2c_write_u16 3 21953 NULL
34517 @@ -117052,12 +125060,10 @@ index 0000000..386792a
34518 +btrfs_reloc_clone_csums_22077 btrfs_reloc_clone_csums 2-3 22077 NULL
34519 +mem_rw_22085 mem_rw 3 22085 NULL
34520 +kstrtos32_from_user_22087 kstrtos32_from_user 2 22087 NULL
34521 -+snd_pcm_xrun_22088 snd_pcm_xrun 0 22088 NULL
34522 +rt2x00debug_read_crypto_stats_22109 rt2x00debug_read_crypto_stats 3 22109 NULL
34523 +snd_hda_codec_read_22130 snd_hda_codec_read 0 22130 NULL
34524 +SyS_sched_setaffinity_22148 SyS_sched_setaffinity 2 22148 NULL
34525 +do_tcp_sendpages_22155 do_tcp_sendpages 4 22155 NULL
34526 -+pci_request_region_22164 pci_request_region 0 22164 NULL
34527 +__kfifo_alloc_22173 __kfifo_alloc 3 22173 NULL
34528 +rfcomm_sock_recvmsg_22227 rfcomm_sock_recvmsg 4 22227 NULL
34529 +mem_write_22232 mem_write 3 22232 NULL
34530 @@ -117067,11 +125073,10 @@ index 0000000..386792a
34531 +ping_common_sendmsg_22261 ping_common_sendmsg 5 22261 NULL
34532 +add_res_tree_22263 add_res_tree 7 22263 NULL
34533 +queue_max_sectors_22280 queue_max_sectors 0 22280 NULL
34534 -+pci_vpd_srdt_size_22300 pci_vpd_srdt_size 0 22300 NULL nohasharray
34535 -+__tun_chr_ioctl_22300 __tun_chr_ioctl 4 22300 &pci_vpd_srdt_size_22300
34536 ++__tun_chr_ioctl_22300 __tun_chr_ioctl 4 22300 NULL nohasharray
34537 ++pci_vpd_srdt_size_22300 pci_vpd_srdt_size 0 22300 &__tun_chr_ioctl_22300
34538 +mesh_table_alloc_22305 mesh_table_alloc 1 22305 NULL
34539 +lov_setstripe_22307 lov_setstripe 2 22307 NULL
34540 -+udpv6_sendmsg_22316 udpv6_sendmsg 4 22316 NULL
34541 +atomic_read_22342 atomic_read 0 22342 NULL
34542 +ll_lazystatfs_seq_write_22353 ll_lazystatfs_seq_write 3 22353 NULL
34543 +snd_pcm_alsa_frames_22363 snd_pcm_alsa_frames 2 22363 NULL
34544 @@ -117086,42 +125091,37 @@ index 0000000..386792a
34545 +qib_user_sdma_alloc_header_22490 qib_user_sdma_alloc_header 2 22490 NULL
34546 +cache_write_procfs_22491 cache_write_procfs 3 22491 NULL
34547 +trim_no_bitmap_22524 trim_no_bitmap 4-3 22524 NULL
34548 -+ntb_setup_bwd_msix_22549 ntb_setup_bwd_msix 2-0 22549 NULL
34549 +ocfs2_read_extent_block_22550 ocfs2_read_extent_block 0 22550 NULL
34550 +agp_alloc_page_array_22554 agp_alloc_page_array 1 22554 NULL
34551 +dbFindCtl_22587 dbFindCtl 0 22587 NULL
34552 -+snapshot_read_22601 snapshot_read 3 22601 NULL
34553 +sctp_setsockopt_connectx_old_22631 sctp_setsockopt_connectx_old 3 22631 NULL
34554 +ide_core_cp_entry_22636 ide_core_cp_entry 3 22636 NULL
34555 +wl1271_rx_filter_get_fields_size_22638 wl1271_rx_filter_get_fields_size 0 22638 NULL
34556 +pwr_wake_on_timer_exp_read_22640 pwr_wake_on_timer_exp_read 3 22640 NULL
34557 +iwl_dbgfs_calib_disabled_read_22649 iwl_dbgfs_calib_disabled_read 3 22649 NULL
34558 -+ext4_ext_direct_IO_22679 ext4_ext_direct_IO 4 22679 NULL
34559 -+fill_gap_22681 fill_gap 0 22681 NULL nohasharray
34560 -+l2tp_ip_recvmsg_22681 l2tp_ip_recvmsg 4 22681 &fill_gap_22681
34561 ++l2tp_ip_recvmsg_22681 l2tp_ip_recvmsg 4 22681 NULL nohasharray
34562 ++fill_gap_22681 fill_gap 0 22681 &l2tp_ip_recvmsg_22681
34563 +bch_dump_read_22685 bch_dump_read 3 22685 NULL
34564 +reg_umr_22686 reg_umr 5 22686 NULL
34565 +SYSC_vmsplice_22697 SYSC_vmsplice 3 22697 NULL
34566 ++nr_cpusets_22705 nr_cpusets 0 22705 NULL
34567 +alloc_libipw_22708 alloc_libipw 1 22708 NULL
34568 +cx18_copy_buf_to_user_22735 cx18_copy_buf_to_user 4-0 22735 NULL
34569 +ceph_decode_32_22738 ceph_decode_32 0 22738 NULL nohasharray
34570 +__mei_cl_send_22738 __mei_cl_send 3 22738 &ceph_decode_32_22738
34571 -+__writeback_single_inode_22739 __writeback_single_inode 0 22739 NULL
34572 +iio_debugfs_write_reg_22742 iio_debugfs_write_reg 3 22742 NULL
34573 +qlcnic_sriov_init_22762 qlcnic_sriov_init 2 22762 NULL
34574 +print_frame_22769 print_frame 0 22769 NULL
34575 +ftrace_arch_read_dyn_info_22773 ftrace_arch_read_dyn_info 0 22773 NULL
34576 -+__break_lease_22777 __break_lease 0 22777 NULL
34577 +vnic_dev_get_res_count_22791 vnic_dev_get_res_count 0 22791 NULL
34578 -+pla_ocp_write_22802 pla_ocp_write 4 22802 NULL
34579 +__generic_copy_to_user_intel_22806 __generic_copy_to_user_intel 0-3 22806 NULL
34580 +create_attr_set_22861 create_attr_set 1 22861 NULL
34581 +hash_ip6_expire_22867 hash_ip6_expire 4 22867 NULL
34582 +vmw_execbuf_process_22885 vmw_execbuf_process 5 22885 NULL
34583 +usblp_new_writeurb_22894 usblp_new_writeurb 2 22894 NULL
34584 +mdc800_device_read_22896 mdc800_device_read 3 22896 NULL
34585 -+ion_handle_test_kernel_22900 ion_handle_test_kernel 4-3 22900 NULL nohasharray
34586 -+policy_emit_config_values_22900 policy_emit_config_values 3 22900 &ion_handle_test_kernel_22900
34587 ++policy_emit_config_values_22900 policy_emit_config_values 3 22900 NULL nohasharray
34588 ++ion_handle_test_kernel_22900 ion_handle_test_kernel 4-3 22900 &policy_emit_config_values_22900
34589 +__set_xattr_22923 __set_xattr 0 22923 NULL
34590 +xstateregs_set_22932 xstateregs_set 4 22932 NULL
34591 +pcpu_mem_zalloc_22948 pcpu_mem_zalloc 1 22948 NULL
34592 @@ -117136,17 +125136,14 @@ index 0000000..386792a
34593 +cifs_local_to_utf16_bytes_23025 cifs_local_to_utf16_bytes 0 23025 NULL
34594 +st_status_23032 st_status 5 23032 NULL
34595 +nv50_disp_chan_create__23056 nv50_disp_chan_create_ 5 23056 NULL
34596 -+comedi_buf_write_n_available_23057 comedi_buf_write_n_available 0 23057 NULL
34597 -+security_inode_killpriv_23060 security_inode_killpriv 0 23060 NULL
34598 -+reiserfs_add_entry_23062 reiserfs_add_entry 4 23062 NULL nohasharray
34599 -+unix_seqpacket_recvmsg_23062 unix_seqpacket_recvmsg 4 23062 &reiserfs_add_entry_23062
34600 ++unix_seqpacket_recvmsg_23062 unix_seqpacket_recvmsg 4 23062 NULL nohasharray
34601 ++reiserfs_add_entry_23062 reiserfs_add_entry 4 23062 &unix_seqpacket_recvmsg_23062
34602 +mei_cl_send_23068 mei_cl_send 3 23068 NULL
34603 +raw_sendmsg_23078 raw_sendmsg 4 23078 NULL
34604 +get_user_hdr_len_23079 get_user_hdr_len 0 23079 NULL
34605 +isr_tx_procs_read_23084 isr_tx_procs_read 3 23084 NULL
34606 +rt2x00debug_write_eeprom_23091 rt2x00debug_write_eeprom 3 23091 NULL
34607 +ntfs_ucstonls_23097 ntfs_ucstonls 3-5 23097 NULL
34608 -+pipe_iov_copy_from_user_23102 pipe_iov_copy_from_user 3 23102 NULL
34609 +dgram_recvmsg_23104 dgram_recvmsg 4 23104 NULL
34610 +mwl8k_cmd_set_beacon_23110 mwl8k_cmd_set_beacon 4 23110 NULL
34611 +bset_tree_bytes_23111 bset_tree_bytes 0 23111 NULL nohasharray
34612 @@ -117167,21 +125164,19 @@ index 0000000..386792a
34613 +nv50_ram_create__23241 nv50_ram_create_ 4 23241 NULL
34614 +sctp_recvmsg_23265 sctp_recvmsg 4 23265 NULL
34615 +uwb_dev_addr_print_23282 uwb_dev_addr_print 2 23282 NULL
34616 ++ec_i2c_count_message_23285 ec_i2c_count_message 0-2 23285 NULL
34617 +diva_get_trace_filter_23286 diva_get_trace_filter 0 23286 NULL
34618 +i2cdev_write_23310 i2cdev_write 3 23310 NULL
34619 +__aa_kvmalloc_23320 __aa_kvmalloc 1 23320 NULL
34620 +page_readlink_23346 page_readlink 3 23346 NULL
34621 +kmem_zalloc_large_23351 kmem_zalloc_large 1 23351 NULL
34622 -+get_dst_timing_23358 get_dst_timing 0 23358 NULL nohasharray
34623 -+write_inode_23358 write_inode 0 23358 &get_dst_timing_23358
34624 ++get_dst_timing_23358 get_dst_timing 0 23358 NULL
34625 +fd_setup_write_same_buf_23369 fd_setup_write_same_buf 3 23369 NULL
34626 +iscsi_change_queue_depth_23416 iscsi_change_queue_depth 2 23416 NULL
34627 -+vga_mm_r_23419 vga_mm_r 0 23419 NULL
34628 +ocfs2_zero_tail_23447 ocfs2_zero_tail 3 23447 NULL
34629 +hidraw_send_report_23449 hidraw_send_report 3 23449 NULL
34630 +__ata_change_queue_depth_23484 __ata_change_queue_depth 3 23484 NULL
34631 -+linear_conf_23485 linear_conf 2 23485 NULL nohasharray
34632 -+sync_mapping_buffers_23485 sync_mapping_buffers 0 23485 &linear_conf_23485
34633 ++linear_conf_23485 linear_conf 2 23485 NULL
34634 +event_filter_read_23494 event_filter_read 3 23494 NULL
34635 +lustre_acl_xattr_merge2ext_23502 lustre_acl_xattr_merge2ext 2 23502 NULL
34636 +devm_iio_device_alloc_23511 devm_iio_device_alloc 2 23511 NULL
34637 @@ -117201,9 +125196,10 @@ index 0000000..386792a
34638 +SyS_connect_23669 SyS_connect 3 23669 NULL
34639 +cx18_read_23699 cx18_read 3 23699 NULL
34640 +at_get_23708 at_get 0 23708 NULL
34641 ++get_conn_info_23723 get_conn_info 4 23723 NULL
34642 +rx_rx_dropped_frame_read_23748 rx_rx_dropped_frame_read 3 23748 NULL
34643 +__kfifo_max_r_23768 __kfifo_max_r 0-2-1 23768 NULL
34644 -+__build_packet_message_23778 __build_packet_message 4-10 23778 NULL
34645 ++__build_packet_message_23778 __build_packet_message 10-4 23778 NULL
34646 +security_inode_getxattr_23781 security_inode_getxattr 0 23781 NULL
34647 +cfg80211_inform_bss_width_frame_23782 cfg80211_inform_bss_width_frame 5 23782 NULL
34648 +mpt_free_res_23793 mpt_free_res 5 23793 NULL
34649 @@ -117211,16 +125207,14 @@ index 0000000..386792a
34650 +rx_path_reset_read_23801 rx_path_reset_read 3 23801 NULL
34651 +__earlyonly_bootmem_alloc_23824 __earlyonly_bootmem_alloc 2 23824 NULL
34652 +lustre_msg_buflen_23827 lustre_msg_buflen 0 23827 NULL
34653 -+ceph_copy_page_vector_to_user_23829 ceph_copy_page_vector_to_user 0-3-4 23829 NULL
34654 +pgdat_end_pfn_23842 pgdat_end_pfn 0 23842 NULL
34655 +iwl_dbgfs_nvm_read_23845 iwl_dbgfs_nvm_read 3 23845 NULL
34656 +p54_init_common_23850 p54_init_common 1 23850 NULL
34657 +bin_to_hex_dup_23853 bin_to_hex_dup 2 23853 NULL
34658 +ocfs2_xattr_get_clusters_23857 ocfs2_xattr_get_clusters 0 23857 NULL
34659 +ieee80211_if_read_dot11MeshMaxPeerLinks_23878 ieee80211_if_read_dot11MeshMaxPeerLinks 3 23878 NULL
34660 -+nouveau_clock_create__23881 nouveau_clock_create_ 5 23881 NULL nohasharray
34661 -+writeback_single_inode_23881 writeback_single_inode 0 23881 &nouveau_clock_create__23881
34662 +tipc_snprintf_23893 tipc_snprintf 2-0 23893 NULL
34663 ++iov_iter_get_pages_alloc_23903 iov_iter_get_pages_alloc 3-0 23903 NULL
34664 +add_new_gdb_meta_bg_23911 add_new_gdb_meta_bg 3 23911 NULL nohasharray
34665 +ieee80211_if_read_hw_queues_23911 ieee80211_if_read_hw_queues 3 23911 &add_new_gdb_meta_bg_23911
34666 +f2fs_getxattr_23917 f2fs_getxattr 0 23917 NULL
34667 @@ -117250,12 +125244,10 @@ index 0000000..386792a
34668 +trim_bitmaps_24158 trim_bitmaps 3 24158 NULL
34669 +adu_read_24177 adu_read 3 24177 NULL
34670 +safe_prepare_write_buffer_24187 safe_prepare_write_buffer 3 24187 NULL
34671 -+irq_remapping_setup_msi_irqs_24194 irq_remapping_setup_msi_irqs 2 24194 NULL
34672 +ieee80211_if_read_dot11MeshHWMPpreqMinInterval_24208 ieee80211_if_read_dot11MeshHWMPpreqMinInterval 3 24208 NULL
34673 -+efx_vf_size_24213 efx_vf_size 0 24213 NULL
34674 -+tcpprobe_sprint_24222 tcpprobe_sprint 0-2 24222 NULL
34675 -+mei_amthif_read_24224 mei_amthif_read 4 24224 NULL nohasharray
34676 -+pcpu_embed_first_chunk_24224 pcpu_embed_first_chunk 3-2-1 24224 &mei_amthif_read_24224
34677 ++tcpprobe_sprint_24222 tcpprobe_sprint 2-0 24222 NULL
34678 ++pcpu_embed_first_chunk_24224 pcpu_embed_first_chunk 3-2-1 24224 NULL nohasharray
34679 ++mei_amthif_read_24224 mei_amthif_read 4 24224 &pcpu_embed_first_chunk_24224
34680 +pci_num_vf_24235 pci_num_vf 0 24235 NULL
34681 +sel_read_bool_24236 sel_read_bool 3 24236 NULL
34682 +em28xx_alloc_urbs_24260 em28xx_alloc_urbs 4-6 24260 NULL
34683 @@ -117263,23 +125255,18 @@ index 0000000..386792a
34684 +thin_status_24278 thin_status 5 24278 NULL
34685 +msg_size_24288 msg_size 0 24288 NULL
34686 +btmrvl_pscmd_read_24308 btmrvl_pscmd_read 3 24308 NULL
34687 -+reserve_metadata_bytes_24313 reserve_metadata_bytes 0 24313 NULL
34688 +ath6kl_add_bss_if_needed_24317 ath6kl_add_bss_if_needed 6 24317 NULL
34689 +si476x_radio_read_acf_blob_24336 si476x_radio_read_acf_blob 3 24336 NULL
34690 +C_SYSC_pwritev_24345 C_SYSC_pwritev 3 24345 NULL
34691 -+prepare_pages_24349 prepare_pages 0 24349 NULL
34692 +kzalloc_node_24352 kzalloc_node 1 24352 NULL
34693 +qla2x00_handle_queue_full_24365 qla2x00_handle_queue_full 2 24365 NULL
34694 +cfi_read_pri_24366 cfi_read_pri 3 24366 NULL
34695 +btrfs_item_size_nr_24367 btrfs_item_size_nr 0 24367 NULL
34696 -+igetword_24373 igetword 0 24373 NULL nohasharray
34697 -+break_deleg_24373 break_deleg 0 24373 &igetword_24373
34698 -+max_io_len_24384 max_io_len 0-1 24384 NULL
34699 ++igetword_24373 igetword 0 24373 NULL
34700 +mpt_alloc_res_24387 mpt_alloc_res 5 24387 NULL
34701 +osc_cur_grant_bytes_seq_write_24396 osc_cur_grant_bytes_seq_write 3 24396 NULL
34702 +getxattr_24398 getxattr 4 24398 NULL nohasharray
34703 +pvr2_v4l2_ioctl_24398 pvr2_v4l2_ioctl 2 24398 &getxattr_24398
34704 -+populate_msi_sysfs_24399 populate_msi_sysfs 0 24399 NULL
34705 +blk_update_bidi_request_24415 blk_update_bidi_request 3-4 24415 NULL
34706 +nvme_trans_log_supp_pages_24418 nvme_trans_log_supp_pages 3 24418 NULL
34707 +b43_debugfs_read_24425 b43_debugfs_read 3 24425 NULL
34708 @@ -117287,8 +125274,8 @@ index 0000000..386792a
34709 +ieee80211_rx_mgmt_beacon_24430 ieee80211_rx_mgmt_beacon 3 24430 NULL
34710 +copy_and_ioctl_24434 copy_and_ioctl 4 24434 NULL
34711 +ixgbe_alloc_q_vector_24439 ixgbe_alloc_q_vector 4-6 24439 NULL
34712 -+rtw_set_wps_assoc_resp_24440 rtw_set_wps_assoc_resp 3 24440 NULL nohasharray
34713 -+smk_user_access_24440 smk_user_access 3 24440 &rtw_set_wps_assoc_resp_24440
34714 ++smk_user_access_24440 smk_user_access 3 24440 NULL nohasharray
34715 ++rtw_set_wps_assoc_resp_24440 rtw_set_wps_assoc_resp 3 24440 &smk_user_access_24440
34716 +evdev_do_ioctl_24459 evdev_do_ioctl 2 24459 NULL
34717 +lbs_highsnr_write_24460 lbs_highsnr_write 3 24460 NULL
34718 +skb_copy_and_csum_datagram_iovec_24466 skb_copy_and_csum_datagram_iovec 2 24466 NULL
34719 @@ -117306,7 +125293,6 @@ index 0000000..386792a
34720 +SyS_poll_24620 SyS_poll 2 24620 NULL
34721 +context_alloc_24645 context_alloc 3 24645 NULL
34722 +blk_rq_err_bytes_24650 blk_rq_err_bytes 0 24650 NULL
34723 -+btrfs_check_data_free_space_24692 btrfs_check_data_free_space 0 24692 NULL
34724 +datafab_write_data_24696 datafab_write_data 4 24696 NULL
34725 +intelfbhw_get_p1p2_24703 intelfbhw_get_p1p2 2 24703 NULL
34726 +simple_attr_read_24738 simple_attr_read 3 24738 NULL
34727 @@ -117324,12 +125310,12 @@ index 0000000..386792a
34728 +pnp_alloc_24869 pnp_alloc 1 24869 NULL nohasharray
34729 +l2cap_create_basic_pdu_24869 l2cap_create_basic_pdu 3 24869 &pnp_alloc_24869
34730 +queues_read_24877 queues_read 3 24877 NULL
34731 ++iov_iter_npages_bvec_24905 iov_iter_npages_bvec 0-2 24905 NULL
34732 +codec_list_read_file_24910 codec_list_read_file 3 24910 NULL
34733 -+v4l2_ctrl_new_24927 v4l2_ctrl_new 7 24927 NULL nohasharray
34734 -+__btrfs_free_extent_24927 __btrfs_free_extent 7 24927 &v4l2_ctrl_new_24927
34735 ++xpcs_reg_value_write_24922 xpcs_reg_value_write 3 24922 NULL
34736 ++v4l2_ctrl_new_24927 v4l2_ctrl_new 7 24927 NULL
34737 +ocfs2_fiemap_24949 ocfs2_fiemap 3-4 24949 NULL
34738 +packet_sendmsg_24954 packet_sendmsg 4 24954 NULL
34739 -+security_inode_rename_24971 security_inode_rename 0 24971 NULL
34740 +twl_i2c_write_u8_24976 twl_i2c_write_u8 3 24976 NULL
34741 +llc_ui_sendmsg_24987 llc_ui_sendmsg 4 24987 NULL
34742 +key_conf_hw_key_idx_read_25003 key_conf_hw_key_idx_read 3 25003 NULL
34743 @@ -117343,9 +125329,9 @@ index 0000000..386792a
34744 +ima_appraise_measurement_25093 ima_appraise_measurement 6 25093 NULL
34745 +snd_rawmidi_kernel_write_25106 snd_rawmidi_kernel_write 3 25106 NULL
34746 +ipath_init_qp_table_25167 ipath_init_qp_table 2 25167 NULL
34747 -+_iwl_dbgfs_reduced_txp_write_25169 _iwl_dbgfs_reduced_txp_write 3 25169 NULL nohasharray
34748 -+kvm_mmu_notifier_change_pte_25169 kvm_mmu_notifier_change_pte 3 25169 &_iwl_dbgfs_reduced_txp_write_25169
34749 ++kvm_mmu_notifier_change_pte_25169 kvm_mmu_notifier_change_pte 3 25169 NULL
34750 +sctp_getsockopt_local_addrs_25178 sctp_getsockopt_local_addrs 2 25178 NULL
34751 ++security_socket_post_create_25221 security_socket_post_create 0 25221 NULL
34752 +mon_stat_read_25238 mon_stat_read 3 25238 NULL
34753 +stripe_status_25259 stripe_status 5 25259 NULL
34754 +snd_pcm_start_25273 snd_pcm_start 0 25273 NULL
34755 @@ -117354,27 +125340,27 @@ index 0000000..386792a
34756 +l2tp_session_create_25286 l2tp_session_create 1 25286 NULL
34757 +ath9k_debugfs_read_buf_25316 ath9k_debugfs_read_buf 3 25316 NULL
34758 +rng_buffer_size_25348 rng_buffer_size 0 25348 NULL
34759 -+SYSC_kexec_load_25361 SYSC_kexec_load 2 25361 NULL
34760 +unix_mkname_25368 unix_mkname 0-2 25368 NULL
34761 +sel_read_mls_25369 sel_read_mls 3 25369 NULL
34762 +vsp1_entity_init_25407 vsp1_entity_init 3 25407 NULL
34763 ++mcp795_rtcc_read_25415 mcp795_rtcc_read 4 25415 NULL
34764 +dai_list_read_file_25421 dai_list_read_file 3 25421 NULL
34765 -+ipath_decode_err_25468 ipath_decode_err 3 25468 NULL
34766 +crypto_hash_digestsize_25469 crypto_hash_digestsize 0 25469 NULL
34767 +ivtv_buf_copy_from_user_25502 ivtv_buf_copy_from_user 4-0 25502 NULL
34768 +snd_pcm_plugin_build_25505 snd_pcm_plugin_build 5 25505 NULL
34769 ++mxt_obj_size_25510 mxt_obj_size 0 25510 NULL
34770 +sb_permission_25523 sb_permission 0 25523 NULL
34771 +ext3_get_inode_loc_25542 ext3_get_inode_loc 0 25542 NULL
34772 +ieee80211_if_read_path_refresh_time_25545 ieee80211_if_read_path_refresh_time 3 25545 NULL
34773 +wimax_addr_scnprint_25548 wimax_addr_scnprint 2 25548 NULL
34774 -+ht_print_chan_25556 ht_print_chan 0-3-4 25556 NULL
34775 ++ht_print_chan_25556 ht_print_chan 3-4-0 25556 NULL
34776 +skb_tailroom_25567 skb_tailroom 0 25567 NULL
34777 +ping_recvmsg_25597 ping_recvmsg 4 25597 NULL
34778 +copy_user_generic_25611 copy_user_generic 0 25611 NULL
34779 +proc_coredump_filter_write_25625 proc_coredump_filter_write 3 25625 NULL
34780 +befs_utf2nls_25628 befs_utf2nls 3 25628 NULL nohasharray
34781 +__get_user_pages_25628 __get_user_pages 0 25628 &befs_utf2nls_25628
34782 -+__direct_map_25647 __direct_map 5-6 25647 NULL
34783 ++__direct_map_25647 __direct_map 6-5 25647 NULL
34784 +aircable_prepare_write_buffer_25669 aircable_prepare_write_buffer 3 25669 NULL
34785 +lpfc_idiag_cmd_get_25672 lpfc_idiag_cmd_get 2 25672 NULL
34786 +sta_inactive_ms_read_25690 sta_inactive_ms_read 3 25690 NULL
34787 @@ -117383,6 +125369,7 @@ index 0000000..386792a
34788 +ibmasm_new_command_25714 ibmasm_new_command 2 25714 NULL
34789 +__alloc_bootmem_low_node_25726 __alloc_bootmem_low_node 2 25726 NULL nohasharray
34790 +sel_write_context_25726 sel_write_context 3 25726 &__alloc_bootmem_low_node_25726
34791 ++xgbe_common_read_25743 xgbe_common_read 2 25743 NULL
34792 +cxgbi_device_portmap_create_25747 cxgbi_device_portmap_create 3 25747 NULL
34793 +event_rx_pool_read_25792 event_rx_pool_read 3 25792 NULL
34794 +sg_read_25799 sg_read 3 25799 NULL
34795 @@ -117412,7 +125399,6 @@ index 0000000..386792a
34796 +keyctl_update_key_26061 keyctl_update_key 3 26061 NULL
34797 +pri_wm_latency_write_26063 pri_wm_latency_write 3 26063 NULL
34798 +rx_rx_wa_density_dropped_frame_read_26095 rx_rx_wa_density_dropped_frame_read 3 26095 NULL
34799 -+i8042_pnp_id_to_string_26108 i8042_pnp_id_to_string 3 26108 NULL
34800 +read_sb_page_26119 read_sb_page 5 26119 NULL
34801 +ath9k_hw_name_26146 ath9k_hw_name 3 26146 NULL
34802 +copy_oldmem_page_26164 copy_oldmem_page 3 26164 NULL
34803 @@ -117425,7 +125411,6 @@ index 0000000..386792a
34804 +mwifiex_regrdwr_write_26225 mwifiex_regrdwr_write 3 26225 NULL
34805 +_scsih_change_queue_depth_26230 _scsih_change_queue_depth 2 26230 NULL
34806 +rxrpc_recvmsg_26233 rxrpc_recvmsg 4 26233 NULL
34807 -+simple_setattr_26234 simple_setattr 0 26234 NULL
34808 +genwqe_ffdc_buff_size_26263 genwqe_ffdc_buff_size 0 26263 NULL
34809 +crypto_ctxsize_26278 crypto_ctxsize 0 26278 NULL
34810 +wacom_set_device_mode_26280 wacom_set_device_mode 3 26280 NULL
34811 @@ -117438,13 +125423,11 @@ index 0000000..386792a
34812 +invalidate_inode_pages2_range_26403 invalidate_inode_pages2_range 0 26403 NULL
34813 +ntty_write_26404 ntty_write 3 26404 NULL
34814 +firmware_store_26408 firmware_store 4 26408 NULL
34815 -+pagemap_read_26441 pagemap_read 3 26441 NULL
34816 -+enc_pools_add_pages_26461 enc_pools_add_pages 1 26461 NULL nohasharray
34817 -+tower_read_26461 tower_read 3 26461 &enc_pools_add_pages_26461
34818 ++tower_read_26461 tower_read 3 26461 NULL nohasharray
34819 ++enc_pools_add_pages_26461 enc_pools_add_pages 1 26461 &tower_read_26461
34820 +ib_alloc_device_26483 ib_alloc_device 1 26483 NULL
34821 +ulong_write_file_26485 ulong_write_file 3 26485 NULL
34822 +dvb_ca_en50221_io_ioctl_26490 dvb_ca_en50221_io_ioctl 2 26490 NULL
34823 -+read_vmcore_26501 read_vmcore 3 26501 NULL
34824 +uhid_char_write_26502 uhid_char_write 3 26502 NULL
34825 +vfio_pci_set_msi_trigger_26507 vfio_pci_set_msi_trigger 4-3 26507 NULL
34826 +iwl_dbgfs_rf_reset_read_26512 iwl_dbgfs_rf_reset_read 3 26512 NULL
34827 @@ -117453,14 +125436,12 @@ index 0000000..386792a
34828 +__vhost_add_used_n_26554 __vhost_add_used_n 3 26554 NULL
34829 +dio_new_bio_26562 dio_new_bio 0 26562 NULL
34830 +rts51x_read_mem_26577 rts51x_read_mem 4 26577 NULL
34831 -+kernfs_name_locked_26617 kernfs_name_locked 3 26617 NULL
34832 +pwr_fix_tsf_ps_read_26627 pwr_fix_tsf_ps_read 3 26627 NULL
34833 -+irq_alloc_generic_chip_26650 irq_alloc_generic_chip 2 26650 NULL nohasharray
34834 -+inb_p_26650 inb_p 0 26650 &irq_alloc_generic_chip_26650
34835 ++amdtp_stream_get_max_payload_26645 amdtp_stream_get_max_payload 0 26645 NULL
34836 ++irq_alloc_generic_chip_26650 irq_alloc_generic_chip 2 26650 NULL
34837 +nouveau_volt_create__26654 nouveau_volt_create_ 4 26654 NULL
34838 +cipso_v4_map_cat_rbm_hton_26680 cipso_v4_map_cat_rbm_hton 0 26680 NULL
34839 +flowinfo_read_26683 flowinfo_read 3 26683 NULL
34840 -+sysfs_add_file_26716 sysfs_add_file 0 26716 NULL
34841 +nouveau_namedb_create__26732 nouveau_namedb_create_ 7 26732 NULL
34842 +pipeline_tcp_rx_stat_fifo_int_read_26745 pipeline_tcp_rx_stat_fifo_int_read 3 26745 NULL
34843 +snd_hda_get_raw_connections_26762 snd_hda_get_raw_connections 0 26762 NULL
34844 @@ -117483,28 +125464,28 @@ index 0000000..386792a
34845 +sctp_setsockopt_adaptation_layer_26935 sctp_setsockopt_adaptation_layer 3 26935 NULL nohasharray
34846 +pwr_ps_enter_read_26935 pwr_ps_enter_read 3 26935 &sctp_setsockopt_adaptation_layer_26935
34847 +hecubafb_write_26942 hecubafb_write 3 26942 NULL
34848 -+extract_entropy_user_26952 extract_entropy_user 3 26952 NULL nohasharray
34849 -+do_trimming_26952 do_trimming 3 26952 &extract_entropy_user_26952
34850 ++do_trimming_26952 do_trimming 3 26952 NULL nohasharray
34851 ++extract_entropy_user_26952 extract_entropy_user 3 26952 &do_trimming_26952
34852 +do_direct_IO_26979 do_direct_IO 0 26979 NULL
34853 ++sc16is7xx_port_read_27051 sc16is7xx_port_read 0 27051 NULL
34854 +__videobuf_alloc_vb_27062 __videobuf_alloc_vb 1 27062 NULL
34855 -+ext4_convert_unwritten_extents_27064 ext4_convert_unwritten_extents 4-3-0 27064 NULL
34856 ++ext4_convert_unwritten_extents_27064 ext4_convert_unwritten_extents 4-3 27064 NULL
34857 +snd_pcm_lib_period_bytes_27071 snd_pcm_lib_period_bytes 0 27071 NULL
34858 +paravirt_read_msr_27077 paravirt_read_msr 0 27077 NULL
34859 +alloc_fdmem_27083 alloc_fdmem 1 27083 NULL
34860 +btmrvl_hscmd_write_27089 btmrvl_hscmd_write 3 27089 NULL nohasharray
34861 +ath9k_hw_4k_dump_eeprom_27089 ath9k_hw_4k_dump_eeprom 5-4 27089 &btmrvl_hscmd_write_27089
34862 +__devcgroup_inode_permission_27108 __devcgroup_inode_permission 0 27108 NULL
34863 -+get_kernel_page_27133 get_kernel_page 0 27133 NULL
34864 +drbd_get_capacity_27141 drbd_get_capacity 0 27141 NULL
34865 +pms_capture_27142 pms_capture 4 27142 NULL
34866 +btmrvl_hscfgcmd_write_27143 btmrvl_hscfgcmd_write 3 27143 NULL
34867 +snd_compr_calc_avail_27165 snd_compr_calc_avail 0 27165 NULL
34868 +ieee80211_if_read_rc_rateidx_mask_5ghz_27183 ieee80211_if_read_rc_rateidx_mask_5ghz 3 27183 NULL
34869 -+write_kmem_27225 write_kmem 3 27225 NULL
34870 +dbAllocAG_27228 dbAllocAG 0 27228 NULL
34871 +rxrpc_request_key_27235 rxrpc_request_key 3 27235 NULL
34872 +ll_track_gid_seq_write_27267 ll_track_gid_seq_write 3 27267 NULL
34873 +comedi_alloc_devpriv_27272 comedi_alloc_devpriv 2 27272 NULL
34874 ++get_rx_fifo_content_27283 get_rx_fifo_content 0 27283 NULL
34875 +copy_from_buf_27308 copy_from_buf 4-2 27308 NULL
34876 +virtqueue_add_inbuf_27312 virtqueue_add_inbuf 3 27312 NULL
34877 +snd_pcm_oss_write2_27332 snd_pcm_oss_write2 3-0 27332 NULL
34878 @@ -117528,10 +125509,9 @@ index 0000000..386792a
34879 +sco_sock_recvmsg_27572 sco_sock_recvmsg 4 27572 NULL
34880 +libipw_alloc_txb_27579 libipw_alloc_txb 1 27579 NULL
34881 +C_SYSC_mbind_27636 C_SYSC_mbind 5 27636 NULL
34882 -+ocfs2_xattr_ibody_get_27642 ocfs2_xattr_ibody_get 0 27642 NULL nohasharray
34883 -+read_flush_procfs_27642 read_flush_procfs 3 27642 &ocfs2_xattr_ibody_get_27642 nohasharray
34884 ++read_flush_procfs_27642 read_flush_procfs 3 27642 NULL nohasharray
34885 +nl80211_send_connect_result_27642 nl80211_send_connect_result 5-7 27642 &read_flush_procfs_27642 nohasharray
34886 -+ocfs2_direct_IO_27642 ocfs2_direct_IO 4 27642 &nl80211_send_connect_result_27642
34887 ++ocfs2_xattr_ibody_get_27642 ocfs2_xattr_ibody_get 0 27642 &nl80211_send_connect_result_27642
34888 +add_new_gdb_27643 add_new_gdb 3 27643 NULL
34889 +btrfs_fallocate_27647 btrfs_fallocate 3-4 27647 NULL
34890 +qnx6_readpages_27657 qnx6_readpages 4 27657 NULL
34891 @@ -117548,27 +125528,21 @@ index 0000000..386792a
34892 +SyS_readv_27804 SyS_readv 3 27804 NULL
34893 +mpihelp_mul_27805 mpihelp_mul 5-3 27805 NULL
34894 +hpt374_read_freq_27828 hpt374_read_freq 0 27828 NULL
34895 -+init_header_complete_27833 init_header_complete 0 27833 NULL
34896 +read_profile_27859 read_profile 3 27859 NULL
34897 +sky2_pci_read16_27863 sky2_pci_read16 0 27863 NULL
34898 +ieee80211_if_read_dot11MeshHWMProotInterval_27873 ieee80211_if_read_dot11MeshHWMProotInterval 3 27873 NULL
34899 +unix_seqpacket_sendmsg_27893 unix_seqpacket_sendmsg 4 27893 NULL
34900 +i915_error_object_create_sized_27919 i915_error_object_create_sized 4 27919 NULL
34901 -+check_mapped_name_27943 check_mapped_name 3 27943 NULL
34902 +tracing_clock_write_27961 tracing_clock_write 3 27961 NULL nohasharray
34903 +bio_next_split_27961 bio_next_split 2 27961 &tracing_clock_write_27961
34904 -+security_path_chown_27966 security_path_chown 0 27966 NULL
34905 +tipc_media_addr_printf_27971 tipc_media_addr_printf 2 27971 NULL
34906 -+mic_rx_pkts_read_27972 mic_rx_pkts_read 3 27972 NULL nohasharray
34907 -+device_register_27972 device_register 0 27972 &mic_rx_pkts_read_27972
34908 ++mic_rx_pkts_read_27972 mic_rx_pkts_read 3 27972 NULL
34909 +compat_SyS_set_mempolicy_27975 compat_SyS_set_mempolicy 3 27975 NULL
34910 -+pci_enable_device_flags_27977 pci_enable_device_flags 0 27977 NULL
34911 +edt_ft5x06_debugfs_raw_data_read_28002 edt_ft5x06_debugfs_raw_data_read 3 28002 NULL
34912 +seq_get_buf_28006 seq_get_buf 0 28006 NULL
34913 +snd_rawmidi_write_28008 snd_rawmidi_write 3 28008 NULL
34914 +powercap_register_zone_28028 powercap_register_zone 6 28028 NULL
34915 +sctp_setsockopt_maxburst_28041 sctp_setsockopt_maxburst 3 28041 NULL
34916 -+rts51x_xd_rw_28046 rts51x_xd_rw 3-4 28046 NULL
34917 +cx231xx_init_vbi_isoc_28053 cx231xx_init_vbi_isoc 3-2-4 28053 NULL
34918 +pool_status_28055 pool_status 5 28055 NULL
34919 +init_rs_non_canonical_28059 init_rs_non_canonical 1 28059 NULL
34920 @@ -117577,18 +125551,18 @@ index 0000000..386792a
34921 +mmc_test_alloc_mem_28102 mmc_test_alloc_mem 3-2 28102 NULL
34922 +rx_defrag_need_defrag_read_28117 rx_defrag_need_defrag_read 3 28117 NULL
34923 +vgacon_adjust_height_28124 vgacon_adjust_height 2 28124 NULL
34924 ++m25p80_read_reg_28132 m25p80_read_reg 4 28132 NULL
34925 +video_read_28148 video_read 3 28148 NULL
34926 +snd_midi_channel_alloc_set_28153 snd_midi_channel_alloc_set 1 28153 NULL
34927 +stats_dot11FCSErrorCount_read_28154 stats_dot11FCSErrorCount_read 3 28154 NULL
34928 -+vread_28173 vread 0-3 28173 NULL
34929 +macvtap_get_user_28185 macvtap_get_user 4 28185 NULL
34930 +counter_free_res_28187 counter_free_res 5 28187 NULL
34931 +read_disk_sb_28188 read_disk_sb 2 28188 NULL
34932 ++nvkm_output_dp_create__28192 nvkm_output_dp_create_ 6 28192 NULL
34933 +nouveau_mxm_create__28200 nouveau_mxm_create_ 4 28200 NULL
34934 +__qp_memcpy_from_queue_28220 __qp_memcpy_from_queue 3-4 28220 NULL
34935 +line6_alloc_sysex_buffer_28225 line6_alloc_sysex_buffer 4 28225 NULL
34936 +amd_nb_num_28228 amd_nb_num 0 28228 NULL
34937 -+fuse_direct_IO_28275 fuse_direct_IO 4 28275 NULL
34938 +usemap_size_28281 usemap_size 0 28281 NULL
34939 +inline_xattr_size_28285 inline_xattr_size 0 28285 NULL
34940 +dma_map_sg_attrs_28289 dma_map_sg_attrs 0 28289 NULL
34941 @@ -117596,11 +125570,9 @@ index 0000000..386792a
34942 +kstrtos16_from_user_28300 kstrtos16_from_user 2 28300 NULL
34943 +nouveau_compat_ioctl_28305 nouveau_compat_ioctl 2 28305 NULL
34944 +snd_pcm_oss_read_28317 snd_pcm_oss_read 3 28317 NULL
34945 -+security_inode_link_28327 security_inode_link 0 28327 NULL
34946 -+generic_write_checks_28329 generic_write_checks 0 28329 NULL
34947 ++xpcs_mmd_read_28331 xpcs_mmd_read 3 28331 NULL
34948 +bm_entry_write_28338 bm_entry_write 3 28338 NULL
34949 +tcp_copy_to_iovec_28344 tcp_copy_to_iovec 3 28344 NULL
34950 -+snapshot_write_28351 snapshot_write 3 28351 NULL
34951 +xfs_iomap_write_unwritten_28365 xfs_iomap_write_unwritten 3-2 28365 NULL
34952 +batadv_handle_tt_response_28370 batadv_handle_tt_response 4 28370 NULL
34953 +dlmfs_file_read_28385 dlmfs_file_read 3 28385 NULL
34954 @@ -117613,24 +125585,22 @@ index 0000000..386792a
34955 +key_mic_failures_read_28457 key_mic_failures_read 3 28457 NULL
34956 +alloc_irq_cpu_rmap_28459 alloc_irq_cpu_rmap 1 28459 NULL
34957 +ps_poll_upsd_utilization_read_28519 ps_poll_upsd_utilization_read 3 28519 NULL
34958 -+i2400m_tx_stats_read_28527 i2400m_tx_stats_read 3 28527 NULL
34959 ++sh_irda_init_iobuf_28527 sh_irda_init_iobuf 2 28527 NULL nohasharray
34960 ++i2400m_tx_stats_read_28527 i2400m_tx_stats_read 3 28527 &sh_irda_init_iobuf_28527
34961 +early_init_dt_alloc_memory_arch_28528 early_init_dt_alloc_memory_arch 1 28528 NULL
34962 +sel_read_policycap_28544 sel_read_policycap 3 28544 NULL
34963 +mptctl_getiocinfo_28545 mptctl_getiocinfo 2 28545 NULL nohasharray
34964 -+aio_read_events_28545 aio_read_events 3 28545 &mptctl_getiocinfo_28545 nohasharray
34965 -+run_delalloc_range_28545 run_delalloc_range 3-4 28545 &aio_read_events_28545
34966 -+sysfs_create_bin_file_28551 sysfs_create_bin_file 0 28551 NULL
34967 ++run_delalloc_range_28545 run_delalloc_range 3-4 28545 &mptctl_getiocinfo_28545 nohasharray
34968 ++aio_read_events_28545 aio_read_events 3 28545 &run_delalloc_range_28545
34969 +b43legacy_debugfs_write_28556 b43legacy_debugfs_write 3 28556 NULL
34970 +asymmetric_verify_28567 asymmetric_verify 3 28567 NULL
34971 +oxygen_read32_28582 oxygen_read32 0 28582 NULL
34972 -+task_cgroup_path_28599 task_cgroup_path 3 28599 NULL
34973 +extract_entropy_28604 extract_entropy 5-3 28604 NULL
34974 ++xgbe_common_write_28609 xgbe_common_write 2 28609 NULL
34975 +kfifo_unused_28612 kfifo_unused 0 28612 NULL
34976 +snd_nm256_capture_copy_28622 snd_nm256_capture_copy 3-5 28622 NULL
34977 +setup_usemap_28636 setup_usemap 3-4 28636 NULL
34978 -+qib_handle_6120_hwerrors_28642 qib_handle_6120_hwerrors 3 28642 NULL
34979 +p9_fcall_alloc_28652 p9_fcall_alloc 1 28652 NULL
34980 -+read_nic_io_byte_28654 read_nic_io_byte 0 28654 NULL
34981 +blk_queue_resize_tags_28670 blk_queue_resize_tags 2 28670 NULL
34982 +SyS_setgroups16_28686 SyS_setgroups16 1 28686 NULL
34983 +kvm_mmu_get_page_28692 kvm_mmu_get_page 2 28692 NULL
34984 @@ -117646,7 +125616,6 @@ index 0000000..386792a
34985 +kernel_tree_alloc_28833 kernel_tree_alloc 1 28833 NULL
34986 +vp_request_msix_vectors_28849 vp_request_msix_vectors 2 28849 NULL
34987 +ipv6_renew_options_28867 ipv6_renew_options 5 28867 NULL
34988 -+max_io_len_target_boundary_28879 max_io_len_target_boundary 0-1 28879 NULL
34989 +packet_sendmsg_spkt_28885 packet_sendmsg_spkt 4 28885 NULL
34990 +da9055_group_write_28904 da9055_group_write 2-3 28904 NULL
34991 +ps_upsd_timeouts_read_28924 ps_upsd_timeouts_read 3 28924 NULL
34992 @@ -117688,6 +125657,7 @@ index 0000000..386792a
34993 +__fuse_get_req_29315 __fuse_get_req 2 29315 NULL
34994 +lprocfs_write_helper_29323 lprocfs_write_helper 2 29323 NULL
34995 +kvm_handle_hva_29326 kvm_handle_hva 2 29326 NULL
34996 ++obd_proc_jobid_name_seq_write_29332 obd_proc_jobid_name_seq_write 3 29332 NULL
34997 +tun_put_user_29337 tun_put_user 5 29337 NULL
34998 +__alloc_ei_netdev_29338 __alloc_ei_netdev 1 29338 NULL
34999 +l2cap_sock_setsockopt_old_29346 l2cap_sock_setsockopt_old 4 29346 NULL
35000 @@ -117701,17 +125671,14 @@ index 0000000..386792a
35001 +simple_strtoul_29480 simple_strtoul 0 29480 NULL
35002 +btmrvl_pscmd_write_29504 btmrvl_pscmd_write 3 29504 NULL
35003 +btrfs_file_extent_disk_bytenr_29505 btrfs_file_extent_disk_bytenr 0 29505 NULL
35004 -+i2c_add_adapter_29507 i2c_add_adapter 0 29507 NULL
35005 +usnic_vnic_spec_dump_29508 usnic_vnic_spec_dump 2 29508 NULL
35006 +write_file_regidx_29517 write_file_regidx 3 29517 NULL
35007 +atk_debugfs_ggrp_read_29522 atk_debugfs_ggrp_read 3 29522 NULL
35008 -+pci_enable_msix_29524 pci_enable_msix 0 29524 NULL
35009 +ftrace_write_29551 ftrace_write 3 29551 NULL
35010 +idetape_queue_rw_tail_29562 idetape_queue_rw_tail 3 29562 NULL
35011 +leaf_dealloc_29566 leaf_dealloc 3 29566 NULL
35012 +kvm_read_guest_virt_system_29569 kvm_read_guest_virt_system 4-2 29569 NULL
35013 +lbs_lowsnr_read_29571 lbs_lowsnr_read 3 29571 NULL
35014 -+security_path_chmod_29578 security_path_chmod 0 29578 NULL
35015 +iwl_dbgfs_missed_beacon_write_29586 iwl_dbgfs_missed_beacon_write 3 29586 NULL
35016 +pvr2_hdw_report_unlocked_29589 pvr2_hdw_report_unlocked 4-0 29589 NULL
35017 +dio_set_defer_completion_29599 dio_set_defer_completion 0 29599 NULL
35018 @@ -117728,65 +125695,51 @@ index 0000000..386792a
35019 +read_cis_cache_29735 read_cis_cache 4 29735 NULL
35020 +xfs_new_eof_29737 xfs_new_eof 2 29737 NULL
35021 +std_nic_write_29752 std_nic_write 3 29752 NULL
35022 -+tg3_irq_count_29786 tg3_irq_count 0 29786 NULL
35023 ++static_key_count_29771 static_key_count 0 29771 NULL
35024 +dbAlloc_29794 dbAlloc 0 29794 NULL
35025 +tcp_sendpage_29829 tcp_sendpage 4 29829 NULL
35026 +__probe_kernel_write_29842 __probe_kernel_write 3 29842 NULL
35027 +kvm_read_hva_atomic_29848 kvm_read_hva_atomic 3 29848 NULL
35028 -+count_partial_29850 count_partial 0 29850 NULL
35029 +write_file_bool_bmps_29870 write_file_bool_bmps 3 29870 NULL
35030 +ipv6_setsockopt_29871 ipv6_setsockopt 5 29871 NULL
35031 -+scsi_end_request_29876 scsi_end_request 3 29876 NULL
35032 +crypto_aead_alignmask_29885 crypto_aead_alignmask 0 29885 NULL
35033 +rtw_cfg80211_indicate_sta_assoc_29897 rtw_cfg80211_indicate_sta_assoc 3 29897 NULL
35034 +lov_ost_pool_extend_29914 lov_ost_pool_extend 2 29914 NULL
35035 +write_file_queue_29922 write_file_queue 3 29922 NULL
35036 +__btrfs_getxattr_29947 __btrfs_getxattr 0 29947 NULL nohasharray
35037 +ipv6_recv_error_29947 ipv6_recv_error 3 29947 &__btrfs_getxattr_29947
35038 -+arch_setup_dmar_msi_29992 arch_setup_dmar_msi 0 29992 NULL
35039 +dev_mem_write_30028 dev_mem_write 3 30028 NULL
35040 +alloc_netdev_mqs_30030 alloc_netdev_mqs 1 30030 NULL
35041 -+sysfs_add_file_mode_ns_30038 sysfs_add_file_mode_ns 0 30038 NULL
35042 +scsi_vpd_inquiry_30040 scsi_vpd_inquiry 0-4 30040 NULL
35043 +drp_wmove_30043 drp_wmove 4 30043 NULL
35044 -+__pci_request_selected_regions_30058 __pci_request_selected_regions 0 30058 NULL
35045 +cxgbi_ddp_reserve_30091 cxgbi_ddp_reserve 4 30091 NULL
35046 +snd_midi_channel_init_set_30092 snd_midi_channel_init_set 1 30092 NULL
35047 +rx_filter_data_filter_read_30098 rx_filter_data_filter_read 3 30098 NULL
35048 -+defragment_dma_buffer_30113 defragment_dma_buffer 0 30113 NULL
35049 +spi_async_locked_30117 spi_async_locked 0 30117 NULL
35050 +u_memcpya_30139 u_memcpya 3-2 30139 NULL
35051 +dbg_port_buf_30145 dbg_port_buf 2 30145 NULL
35052 -+elfcorehdr_read_30159 elfcorehdr_read 2 30159 NULL
35053 +alloc_switch_ctx_30165 alloc_switch_ctx 2 30165 NULL
35054 +expand_inode_data_30169 expand_inode_data 3-2 30169 NULL
35055 +mempool_create_page_pool_30189 mempool_create_page_pool 1 30189 NULL
35056 +drm_property_create_bitmask_30195 drm_property_create_bitmask 5 30195 NULL
35057 +__genwqe_readq_30197 __genwqe_readq 0 30197 NULL
35058 -+snd_pcm_playback_forward_30201 snd_pcm_playback_forward 0-2 30201 NULL
35059 +usblp_ioctl_30203 usblp_ioctl 2 30203 NULL
35060 -+read_4k_modal_eeprom_30212 read_4k_modal_eeprom 3 30212 NULL
35061 -+SyS_semop_30227 SyS_semop 3 30227 NULL
35062 +bitmap_file_set_bit_30228 bitmap_file_set_bit 2 30228 NULL
35063 +rawv6_recvmsg_30265 rawv6_recvmsg 4 30265 NULL
35064 -+isr_pci_pm_read_30271 isr_pci_pm_read 3 30271 NULL nohasharray
35065 -+try_break_deleg_30271 try_break_deleg 0 30271 &isr_pci_pm_read_30271
35066 ++isr_pci_pm_read_30271 isr_pci_pm_read 3 30271 NULL
35067 +compat_readv_30273 compat_readv 3 30273 NULL
35068 +skcipher_sendmsg_30290 skcipher_sendmsg 4 30290 NULL
35069 +pipeline_sec_frag_swi_read_30294 pipeline_sec_frag_swi_read 3 30294 NULL
35070 +tcp_sendmsg_30296 tcp_sendmsg 4 30296 NULL
35071 +osc_contention_seconds_seq_write_30305 osc_contention_seconds_seq_write 3 30305 NULL
35072 +ext4_acl_from_disk_30320 ext4_acl_from_disk 2 30320 NULL
35073 -+i8254_read_30330 i8254_read 0 30330 NULL
35074 +resource_from_user_30341 resource_from_user 3 30341 NULL
35075 +o2nm_this_node_30342 o2nm_this_node 0 30342 NULL
35076 +kstrtou32_from_user_30361 kstrtou32_from_user 2 30361 NULL
35077 -+pagecache_write_begin_30364 pagecache_write_begin 0 30364 NULL
35078 +pvscsi_change_queue_depth_30365 pvscsi_change_queue_depth 2 30365 NULL
35079 +C_SYSC_readv_30369 C_SYSC_readv 3 30369 NULL
35080 +blkdev_issue_zeroout_30392 blkdev_issue_zeroout 3 30392 NULL
35081 +c4iw_init_resource_30393 c4iw_init_resource 2-3 30393 NULL
35082 -+get_kernel_pages_30397 get_kernel_pages 0 30397 NULL
35083 +vb2_fop_write_30420 vb2_fop_write 3 30420 NULL
35084 +tx_tx_template_prepared_read_30424 tx_tx_template_prepared_read 3 30424 NULL
35085 +lstcon_session_info_30425 lstcon_session_info 6 30425 NULL
35086 @@ -117794,15 +125747,12 @@ index 0000000..386792a
35087 +tx_tx_template_programmed_read_30461 tx_tx_template_programmed_read 3 30461 NULL
35088 +urandom_read_30462 urandom_read 3 30462 NULL
35089 +zoran_ioctl_30465 zoran_ioctl 2 30465 NULL
35090 -+i2c_ctrl_read_30467 i2c_ctrl_read 0 30467 NULL
35091 +adu_write_30487 adu_write 3 30487 NULL
35092 +dtim_interval_write_30489 dtim_interval_write 3 30489 NULL
35093 +batadv_send_tt_request_30493 batadv_send_tt_request 5 30493 NULL
35094 -+__send_duplicate_bios_30498 __send_duplicate_bios 4 30498 NULL
35095 +memblock_virt_alloc_node_30515 memblock_virt_alloc_node 1 30515 NULL
35096 +dwc3_testmode_write_30516 dwc3_testmode_write 3 30516 NULL
35097 +debug_debug2_read_30526 debug_debug2_read 3 30526 NULL
35098 -+ixgbevf_acquire_msix_vectors_30559 ixgbevf_acquire_msix_vectors 2 30559 NULL
35099 +disk_expand_part_tbl_30561 disk_expand_part_tbl 2 30561 NULL
35100 +set_le_30581 set_le 4 30581 NULL
35101 +blk_init_tags_30592 blk_init_tags 1 30592 NULL
35102 @@ -117813,13 +125763,14 @@ index 0000000..386792a
35103 +mlx5_ib_alloc_fast_reg_page_list_30638 mlx5_ib_alloc_fast_reg_page_list 2 30638 NULL
35104 +SyS_listxattr_30647 SyS_listxattr 3 30647 NULL
35105 +jffs2_flash_read_30667 jffs2_flash_read 0 30667 NULL
35106 -+ni_ai_fifo_read_30681 ni_ai_fifo_read 3 30681 NULL
35107 +sst_hsw_get_dsp_position_30691 sst_hsw_get_dsp_position 0 30691 NULL
35108 ++get_pages_alloc_iovec_30699 get_pages_alloc_iovec 3-0 30699 NULL
35109 +dccp_setsockopt_ccid_30701 dccp_setsockopt_ccid 4 30701 NULL
35110 +lbs_wrbbp_write_30712 lbs_wrbbp_write 3 30712 NULL
35111 +lbs_debugfs_read_30721 lbs_debugfs_read 3 30721 NULL
35112 +snd_nm256_playback_silence_30727 snd_nm256_playback_silence 3-4 30727 NULL
35113 +snapshot_status_30744 snapshot_status 5 30744 NULL
35114 ++fuse_direct_IO_30753 fuse_direct_IO 4 30753 NULL
35115 +fuse_conn_limit_write_30777 fuse_conn_limit_write 3 30777 NULL
35116 +__bio_alloc_30787 __bio_alloc 3 30787 NULL
35117 +smk_read_doi_30813 smk_read_doi 3 30813 NULL
35118 @@ -117838,20 +125789,17 @@ index 0000000..386792a
35119 +lbs_host_sleep_read_31013 lbs_host_sleep_read 3 31013 NULL
35120 +ima_eventsig_init_31022 ima_eventsig_init 5 31022 NULL
35121 +template_fmt_size_31033 template_fmt_size 0 31033 NULL
35122 -+do_setup_msi_irqs_31043 do_setup_msi_irqs 2 31043 NULL
35123 +stride_pg_count_31053 stride_pg_count 0-3-2-1-4-5 31053 NULL
35124 +lbs_failcount_read_31063 lbs_failcount_read 3 31063 NULL
35125 +sctp_setsockopt_context_31091 sctp_setsockopt_context 3 31091 NULL
35126 +proc_gid_map_write_31093 proc_gid_map_write 3 31093 NULL
35127 +depth_read_31112 depth_read 3 31112 NULL
35128 +hash_ipportnet6_expire_31118 hash_ipportnet6_expire 4 31118 NULL
35129 -+kimage_normal_alloc_31140 kimage_normal_alloc 3 31140 NULL
35130 +size_inside_page_31141 size_inside_page 0 31141 NULL
35131 +w9966_v4l_read_31148 w9966_v4l_read 3 31148 NULL
35132 +ch_do_scsi_31171 ch_do_scsi 4 31171 NULL
35133 +r592_read_fifo_pio_31198 r592_read_fifo_pio 3 31198 NULL
35134 +mtdchar_readoob_31200 mtdchar_readoob 4 31200 NULL
35135 -+__btrfs_free_reserved_extent_31207 __btrfs_free_reserved_extent 2 31207 NULL
35136 +cpumask_weight_31215 cpumask_weight 0 31215 NULL
35137 +__read_reg_31216 __read_reg 0 31216 NULL
35138 +atm_get_addr_31221 atm_get_addr 3 31221 NULL
35139 @@ -117863,7 +125811,6 @@ index 0000000..386792a
35140 +uvc_simplify_fraction_31303 uvc_simplify_fraction 3 31303 NULL
35141 +sisusbcon_scroll_31315 sisusbcon_scroll 5-2-3 31315 NULL
35142 +command_file_write_31318 command_file_write 3 31318 NULL
35143 -+hwerr_crcbits_31334 hwerr_crcbits 4 31334 NULL
35144 +_regmap_raw_multi_reg_write_31336 _regmap_raw_multi_reg_write 3 31336 NULL
35145 +em28xx_init_usb_xfer_31337 em28xx_init_usb_xfer 4-6 31337 NULL
35146 +outlen_write_31358 outlen_write 3 31358 NULL
35147 @@ -117890,8 +125837,8 @@ index 0000000..386792a
35148 +osst_write_31581 osst_write 3 31581 NULL
35149 +snd_compr_get_avail_31584 snd_compr_get_avail 0 31584 NULL
35150 +iwl_dbgfs_ucode_tx_stats_read_31611 iwl_dbgfs_ucode_tx_stats_read 3 31611 NULL
35151 -+arvo_sysfs_read_31617 arvo_sysfs_read 6 31617 NULL nohasharray
35152 -+memblock_virt_alloc_nopanic_31617 memblock_virt_alloc_nopanic 1 31617 &arvo_sysfs_read_31617
35153 ++memblock_virt_alloc_nopanic_31617 memblock_virt_alloc_nopanic 1 31617 NULL nohasharray
35154 ++arvo_sysfs_read_31617 arvo_sysfs_read 6 31617 &memblock_virt_alloc_nopanic_31617
35155 +usnic_ib_dump_vf_31623 usnic_ib_dump_vf 3 31623 NULL
35156 +videobuf_read_one_31637 videobuf_read_one 3 31637 NULL
35157 +pod_alloc_sysex_buffer_31651 pod_alloc_sysex_buffer 3 31651 NULL
35158 @@ -117901,16 +125848,16 @@ index 0000000..386792a
35159 +forced_ps_read_31685 forced_ps_read 3 31685 NULL
35160 +fst_recover_rx_error_31687 fst_recover_rx_error 3 31687 NULL
35161 +rs_pretty_print_rate_31727 rs_pretty_print_rate 0 31727 NULL
35162 -+lu_buf_check_and_grow_31735 lu_buf_check_and_grow 2 31735 NULL nohasharray
35163 -+utf16s_to_utf8s_31735 utf16s_to_utf8s 0 31735 &lu_buf_check_and_grow_31735
35164 ++utf16s_to_utf8s_31735 utf16s_to_utf8s 0 31735 NULL nohasharray
35165 ++lu_buf_check_and_grow_31735 lu_buf_check_and_grow 2 31735 &utf16s_to_utf8s_31735
35166 +shmem_pwrite_slow_31741 shmem_pwrite_slow 3-2 31741 NULL
35167 +input_abs_get_max_31742 input_abs_get_max 0 31742 NULL nohasharray
35168 +NCR_700_change_queue_depth_31742 NCR_700_change_queue_depth 2 31742 &input_abs_get_max_31742
35169 +bcm_char_read_31750 bcm_char_read 3 31750 NULL
35170 +snd_seq_device_new_31753 snd_seq_device_new 4 31753 NULL
35171 +SyS_lsetxattr_31766 SyS_lsetxattr 4 31766 NULL
35172 -+osync_buffers_list_31789 osync_buffers_list 0 31789 NULL
35173 +usblp_cache_device_id_string_31790 usblp_cache_device_id_string 0 31790 NULL
35174 ++get_count_order_31800 get_count_order 0 31800 NULL
35175 +ecryptfs_send_message_locked_31801 ecryptfs_send_message_locked 2 31801 NULL
35176 +isr_rx_procs_read_31804 isr_rx_procs_read 3 31804 NULL
35177 +data_write_31805 data_write 3 31805 NULL
35178 @@ -117928,8 +125875,7 @@ index 0000000..386792a
35179 +kmem_alloc_31920 kmem_alloc 1 31920 NULL
35180 +era_status_31934 era_status 5 31934 NULL
35181 +SYSC_sethostname_31940 SYSC_sethostname 2 31940 NULL
35182 -+read_mem_31942 read_mem 3 31942 NULL nohasharray
35183 -+iov_iter_copy_from_user_31942 iov_iter_copy_from_user 4-0 31942 &read_mem_31942
35184 ++read_mem_31942 read_mem 3 31942 NULL
35185 +ext4_zero_range_31944 ext4_zero_range 3-2 31944 NULL
35186 +vb2_write_31948 vb2_write 3 31948 NULL
35187 +pvr2_ctrl_get_valname_31951 pvr2_ctrl_get_valname 4 31951 NULL
35188 @@ -117940,10 +125886,9 @@ index 0000000..386792a
35189 +vx_read_status_31982 vx_read_status 0 31982 &iblock_execute_rw_31982
35190 +find_next_zero_bit_31990 find_next_zero_bit 0 31990 NULL
35191 +lustre_acl_xattr_merge2posix_31992 lustre_acl_xattr_merge2posix 2 31992 NULL
35192 -+sysfs_create_file_31996 sysfs_create_file 0 31996 NULL
35193 +calc_hmac_32010 calc_hmac 3 32010 NULL
35194 -+aead_len_32021 aead_len 0 32021 NULL nohasharray
35195 -+aer_init_32021 aer_init 0 32021 &aead_len_32021
35196 ++aead_len_32021 aead_len 0 32021 NULL
35197 ++sci_dma_rx_push_32029 sci_dma_rx_push 2 32029 NULL
35198 +stk_read_32038 stk_read 3 32038 NULL
35199 +SYSC_llistxattr_32061 SYSC_llistxattr 3 32061 NULL
35200 +proc_scsi_devinfo_write_32064 proc_scsi_devinfo_write 3 32064 NULL
35201 @@ -117951,8 +125896,8 @@ index 0000000..386792a
35202 +bio_alloc_32095 bio_alloc 2 32095 NULL
35203 +ath6kl_fwlog_read_32101 ath6kl_fwlog_read 3 32101 NULL
35204 +disk_status_32120 disk_status 4 32120 NULL
35205 -+kobject_add_internal_32133 kobject_add_internal 0 32133 NULL
35206 +venus_link_32165 venus_link 5 32165 NULL
35207 ++ocfs2_direct_IO_32168 ocfs2_direct_IO 4 32168 NULL
35208 +do_writepages_32173 do_writepages 0 32173 NULL
35209 +del_ptr_32197 del_ptr 4 32197 NULL
35210 +wusb_ccm_mac_32199 wusb_ccm_mac 7 32199 NULL
35211 @@ -117972,7 +125917,6 @@ index 0000000..386792a
35212 +ll_setxattr_common_32398 ll_setxattr_common 4 32398 NULL
35213 +xfs_iext_add_indirect_multi_32400 xfs_iext_add_indirect_multi 3 32400 NULL
35214 +vmci_qp_alloc_32405 vmci_qp_alloc 5-3 32405 NULL
35215 -+snd_pcm_sync_ptr_32461 snd_pcm_sync_ptr 0 32461 NULL
35216 +cache_status_32462 cache_status 5 32462 NULL
35217 +fill_readbuf_32464 fill_readbuf 3 32464 NULL
35218 +ide_driver_proc_write_32493 ide_driver_proc_write 3 32493 NULL
35219 @@ -117990,9 +125934,9 @@ index 0000000..386792a
35220 +pipeline_tcp_tx_stat_fifo_int_read_32589 pipeline_tcp_tx_stat_fifo_int_read 3 32589 NULL
35221 +read_file_beacon_32595 read_file_beacon 3 32595 NULL
35222 +ieee80211_if_read_dropped_frames_congestion_32603 ieee80211_if_read_dropped_frames_congestion 3 32603 NULL
35223 -+__pci_request_region_32618 __pci_request_region 0 32618 NULL
35224 +irda_recvmsg_dgram_32631 irda_recvmsg_dgram 4 32631 NULL
35225 +cfg80211_roamed_32632 cfg80211_roamed 5-7 32632 NULL
35226 ++xpcs_reg_value_read_32644 xpcs_reg_value_read 3 32644 NULL
35227 +kvmalloc_32646 kvmalloc 1 32646 NULL
35228 +ib_sg_dma_len_32649 ib_sg_dma_len 0 32649 NULL
35229 +generic_readlink_32654 generic_readlink 3 32654 NULL
35230 @@ -118000,6 +125944,7 @@ index 0000000..386792a
35231 +compat_SyS_preadv_32679 compat_SyS_preadv 3 32679 NULL
35232 +jfs_readpages_32702 jfs_readpages 4 32702 NULL
35233 +rt2x00debug_read_queue_dump_32712 rt2x00debug_read_queue_dump 3 32712 NULL
35234 ++_xfs_buf_get_pages_32715 _xfs_buf_get_pages 2 32715 NULL
35235 +megasas_change_queue_depth_32747 megasas_change_queue_depth 2 32747 NULL
35236 +stats_read_ul_32751 stats_read_ul 3 32751 NULL
35237 +vmci_transport_dgram_dequeue_32775 vmci_transport_dgram_dequeue 4 32775 NULL
35238 @@ -118007,8 +125952,8 @@ index 0000000..386792a
35239 +rproc_name_read_32805 rproc_name_read 3 32805 NULL
35240 +sta_tx_latency_stat_read_32862 sta_tx_latency_stat_read 3 32862 NULL
35241 +new_tape_buffer_32866 new_tape_buffer 2 32866 NULL
35242 -+ath6kl_usb_submit_ctrl_in_32880 ath6kl_usb_submit_ctrl_in 6 32880 NULL nohasharray
35243 -+cifs_writedata_alloc_32880 cifs_writedata_alloc 1 32880 &ath6kl_usb_submit_ctrl_in_32880
35244 ++cifs_writedata_alloc_32880 cifs_writedata_alloc 1 32880 NULL nohasharray
35245 ++ath6kl_usb_submit_ctrl_in_32880 ath6kl_usb_submit_ctrl_in 6 32880 &cifs_writedata_alloc_32880
35246 +vp702x_usb_inout_cmd_32884 vp702x_usb_inout_cmd 4-6 32884 NULL
35247 +tipc_link_iovec_xmit_fast_32913 tipc_link_iovec_xmit_fast 3 32913 NULL nohasharray
35248 +il_dbgfs_tx_stats_read_32913 il_dbgfs_tx_stats_read 3 32913 &tipc_link_iovec_xmit_fast_32913
35249 @@ -118018,7 +125963,6 @@ index 0000000..386792a
35250 +SyS_syslog_33007 SyS_syslog 3 33007 NULL
35251 +br_multicast_set_hash_max_33012 br_multicast_set_hash_max 2 33012 NULL
35252 +write_file_bt_ant_diversity_33019 write_file_bt_ant_diversity 3 33019 NULL
35253 -+snd_pcm_prepare_33036 snd_pcm_prepare 0 33036 NULL
35254 +mic_virtio_copy_to_user_33048 mic_virtio_copy_to_user 3 33048 NULL
35255 +SYSC_lgetxattr_33049 SYSC_lgetxattr 4 33049 NULL
35256 +pipeline_dec_packet_in_fifo_full_read_33052 pipeline_dec_packet_in_fifo_full_read 3 33052 NULL
35257 @@ -118028,14 +125972,13 @@ index 0000000..386792a
35258 +sel_read_checkreqprot_33068 sel_read_checkreqprot 3 33068 NULL
35259 +alloc_tio_33077 alloc_tio 3 33077 NULL
35260 +acl_permission_check_33083 acl_permission_check 0 33083 NULL
35261 ++f2fs_llseek_33098 f2fs_llseek 2 33098 NULL
35262 +fb_sys_write_33130 fb_sys_write 3 33130 NULL
35263 -+notify_change_33143 notify_change 0 33143 NULL
35264 +SyS_poll_33152 SyS_poll 2 33152 NULL
35265 +_pci_add_cap_save_buffer_33153 _pci_add_cap_save_buffer 4 33153 NULL
35266 +debug_debug6_read_33168 debug_debug6_read 3 33168 NULL
35267 +dataflash_read_fact_otp_33204 dataflash_read_fact_otp 3-2 33204 NULL
35268 +pp_read_33210 pp_read 3 33210 NULL
35269 -+xfs_file_aio_write_33234 xfs_file_aio_write 4 33234 NULL
35270 +snd_pcm_plug_client_size_33267 snd_pcm_plug_client_size 0-2 33267 NULL
35271 +cachefiles_cook_key_33274 cachefiles_cook_key 2 33274 NULL
35272 +sync_pt_create_33282 sync_pt_create 2 33282 NULL
35273 @@ -118046,7 +125989,6 @@ index 0000000..386792a
35274 +lov_stripesize_seq_write_33353 lov_stripesize_seq_write 3 33353 NULL
35275 +create_xattr_datum_33356 create_xattr_datum 5 33356 NULL nohasharray
35276 +irq_pkt_threshold_read_33356 irq_pkt_threshold_read 3 33356 &create_xattr_datum_33356
35277 -+pvscsi_allocate_sg_33357 pvscsi_allocate_sg 0 33357 NULL
35278 +read_file_regidx_33370 read_file_regidx 3 33370 NULL
35279 +ieee80211_if_read_dropped_frames_no_route_33383 ieee80211_if_read_dropped_frames_no_route 3 33383 NULL
35280 +scsi_varlen_cdb_length_33385 scsi_varlen_cdb_length 0 33385 NULL
35281 @@ -118073,30 +126015,27 @@ index 0000000..386792a
35282 +scsi_execute_33596 scsi_execute 5 33596 NULL
35283 +comedi_buf_write_n_allocated_33604 comedi_buf_write_n_allocated 0 33604 NULL
35284 +xt_compat_target_offset_33608 xt_compat_target_offset 0 33608 NULL
35285 -+usb_gstrings_attach_33615 usb_gstrings_attach 3 33615 NULL nohasharray
35286 -+il_dbgfs_qos_read_33615 il_dbgfs_qos_read 3 33615 &usb_gstrings_attach_33615
35287 ++il_dbgfs_qos_read_33615 il_dbgfs_qos_read 3 33615 NULL nohasharray
35288 ++usb_gstrings_attach_33615 usb_gstrings_attach 3 33615 &il_dbgfs_qos_read_33615
35289 +stride_page_count_33641 stride_page_count 2 33641 NULL
35290 +irq_blk_threshold_read_33666 irq_blk_threshold_read 3 33666 NULL
35291 +inw_p_33668 inw_p 0 33668 NULL
35292 +arp_hdr_len_33671 arp_hdr_len 0 33671 NULL
35293 +i2c_hid_alloc_buffers_33673 i2c_hid_alloc_buffers 2 33673 NULL
35294 -+submit_one_bio_33683 submit_one_bio 0 33683 NULL
35295 +nv50_disp_dmac_create__33696 nv50_disp_dmac_create_ 6 33696 NULL
35296 +netlink_sendmsg_33708 netlink_sendmsg 4 33708 NULL
35297 +tipc_link_stats_33716 tipc_link_stats 3 33716 NULL
35298 +pvr2_stream_buffer_count_33719 pvr2_stream_buffer_count 2 33719 NULL
35299 +write_file_spectral_count_33723 write_file_spectral_count 3 33723 NULL
35300 +read_file_node_recv_33729 read_file_node_recv 3 33729 NULL
35301 -+rtw_cbuf_alloc23a_33740 rtw_cbuf_alloc23a 1 33740 NULL
35302 +vifs_state_read_33762 vifs_state_read 3 33762 NULL
35303 +hashtab_create_33769 hashtab_create 3 33769 NULL
35304 -+i8042_create_aux_port_33777 i8042_create_aux_port 0 33777 NULL
35305 ++__btrfs_free_reserved_extent_33782 __btrfs_free_reserved_extent 2 33782 NULL
35306 +if_sdio_read_rx_len_33800 if_sdio_read_rx_len 0 33800 NULL
35307 +filter_write_33819 filter_write 3 33819 NULL
35308 +sep_create_msgarea_context_33829 sep_create_msgarea_context 4 33829 NULL
35309 +scrub_setup_recheck_block_33831 scrub_setup_recheck_block 5-4 33831 NULL
35310 +ext4_journal_extend_33835 ext4_journal_extend 2 33835 NULL
35311 -+snd_pcm_action_nonatomic_33844 snd_pcm_action_nonatomic 0 33844 NULL
35312 +oz_cdev_write_33852 oz_cdev_write 3 33852 NULL
35313 +get_user_pages_33908 get_user_pages 0 33908 NULL
35314 +sg_nents_33909 sg_nents 0 33909 NULL
35315 @@ -118105,8 +126044,8 @@ index 0000000..386792a
35316 +sel_read_avc_cache_threshold_33942 sel_read_avc_cache_threshold 3 33942 NULL
35317 +lpfc_idiag_ctlacc_read_33943 lpfc_idiag_ctlacc_read 3 33943 NULL
35318 +read_file_tgt_rx_stats_33944 read_file_tgt_rx_stats 3 33944 NULL
35319 ++rs_sta_dbgfs_drv_tx_stats_read_33946 rs_sta_dbgfs_drv_tx_stats_read 3 33946 NULL
35320 +__proc_dump_kernel_33954 __proc_dump_kernel 5 33954 NULL
35321 -+btrfs_delalloc_reserve_metadata_33963 btrfs_delalloc_reserve_metadata 0 33963 NULL
35322 +vga_switcheroo_debugfs_write_33984 vga_switcheroo_debugfs_write 3 33984 NULL
35323 +lbs_lowrssi_write_34025 lbs_lowrssi_write 3 34025 NULL
35324 +ppp_write_34034 ppp_write 3 34034 NULL
35325 @@ -118124,7 +126063,7 @@ index 0000000..386792a
35326 +rsi_debug_zone_write_34206 rsi_debug_zone_write 3 34206 NULL
35327 +ext4_da_write_begin_34215 ext4_da_write_begin 3-4 34215 NULL
35328 +bl_pipe_downcall_34264 bl_pipe_downcall 3 34264 NULL
35329 -+device_private_init_34279 device_private_init 0 34279 NULL
35330 ++xgmac_reg_addr_write_34284 xgmac_reg_addr_write 3 34284 NULL
35331 +ext4_get_groups_count_34324 ext4_get_groups_count 0 34324 NULL
35332 +pcpu_need_to_extend_34326 pcpu_need_to_extend 0 34326 NULL nohasharray
35333 +iov_iter_single_seg_count_34326 iov_iter_single_seg_count 0 34326 &pcpu_need_to_extend_34326
35334 @@ -118133,15 +126072,15 @@ index 0000000..386792a
35335 +rngapi_reset_34366 rngapi_reset 3 34366 NULL
35336 +_iwl_dbgfs_low_latency_write_34378 _iwl_dbgfs_low_latency_write 3 34378 NULL nohasharray
35337 +ea_read_34378 ea_read 0 34378 &_iwl_dbgfs_low_latency_write_34378
35338 -+fuse_send_read_34379 fuse_send_read 4 34379 NULL
35339 ++fuse_send_read_34379 fuse_send_read 4-0 34379 NULL
35340 +av7110_vbi_write_34384 av7110_vbi_write 3 34384 NULL
35341 +usbvision_v4l2_read_34386 usbvision_v4l2_read 3 34386 NULL
35342 +read_rbu_image_type_34387 read_rbu_image_type 6 34387 NULL
35343 -+iwl_calib_set_34400 iwl_calib_set 3 34400 NULL nohasharray
35344 -+ivtv_read_pos_34400 ivtv_read_pos 3 34400 &iwl_calib_set_34400
35345 ++ivtv_read_pos_34400 ivtv_read_pos 3 34400 NULL nohasharray
35346 ++iwl_calib_set_34400 iwl_calib_set 3 34400 &ivtv_read_pos_34400
35347 +wd_exp_mode_write_34407 wd_exp_mode_write 3 34407 NULL
35348 +nl80211_send_disassoc_34424 nl80211_send_disassoc 4 34424 NULL
35349 -+__extent_read_full_page_34437 __extent_read_full_page 0 34437 NULL
35350 ++security_socket_create_34439 security_socket_create 0 34439 NULL
35351 +usbtest_alloc_urb_34446 usbtest_alloc_urb 3-5 34446 NULL
35352 +mwifiex_regrdwr_read_34472 mwifiex_regrdwr_read 3 34472 NULL
35353 +skcipher_sndbuf_34476 skcipher_sndbuf 0 34476 NULL
35354 @@ -118156,6 +126095,7 @@ index 0000000..386792a
35355 +dbBackSplit_34561 dbBackSplit 0 34561 NULL
35356 +alloc_ieee80211_rsl_34564 alloc_ieee80211_rsl 1 34564 NULL nohasharray
35357 +self_check_peb_ec_hdr_34564 self_check_peb_ec_hdr 0 34564 &alloc_ieee80211_rsl_34564
35358 ++ext4_ind_direct_IO_34574 ext4_ind_direct_IO 4 34574 NULL
35359 +lov_stripecount_seq_write_34582 lov_stripecount_seq_write 3 34582 NULL
35360 +init_send_hfcd_34586 init_send_hfcd 1 34586 NULL
35361 +inet6_ifla6_size_34591 inet6_ifla6_size 0 34591 NULL
35362 @@ -118168,6 +126108,7 @@ index 0000000..386792a
35363 +cnic_alloc_dma_34641 cnic_alloc_dma 3 34641 NULL
35364 +kvm_set_spte_hva_34671 kvm_set_spte_hva 2 34671 NULL
35365 +sleep_auth_write_34676 sleep_auth_write 3 34676 NULL
35366 ++f2fs_direct_IO_34685 f2fs_direct_IO 4 34685 NULL
35367 +isr_fiqs_read_34687 isr_fiqs_read 3 34687 NULL
35368 +batadv_tvlv_realloc_packet_buff_34688 batadv_tvlv_realloc_packet_buff 3-4 34688 NULL
35369 +port_print_34704 port_print 3 34704 NULL
35370 @@ -118176,8 +126117,8 @@ index 0000000..386792a
35371 +reg_w_ixbuf_34736 reg_w_ixbuf 4 34736 NULL
35372 +lsm_alloc_plain_34755 lsm_alloc_plain 1 34755 NULL
35373 +bootmode_store_34762 bootmode_store 4 34762 NULL
35374 -+device_add_34766 device_add 0 34766 NULL
35375 +qib_cdev_init_34778 qib_cdev_init 1 34778 NULL
35376 ++ext3_direct_IO_34798 ext3_direct_IO 4 34798 NULL
35377 +SYSC_keyctl_34800 SYSC_keyctl 4 34800 NULL
35378 +can_nocow_extent_34801 can_nocow_extent 2 34801 NULL
35379 +drbd_get_max_capacity_34804 drbd_get_max_capacity 0 34804 NULL
35380 @@ -118194,21 +126135,20 @@ index 0000000..386792a
35381 +si476x_radio_read_rsq_primary_blob_34916 si476x_radio_read_rsq_primary_blob 3 34916 NULL
35382 +__inode_permission_34925 __inode_permission 0 34925 NULL nohasharray
35383 +btrfs_super_chunk_root_34925 btrfs_super_chunk_root 0 34925 &__inode_permission_34925
35384 -+ceph_aio_write_34930 ceph_aio_write 4 34930 NULL
35385 -+sec_flags2str_34933 sec_flags2str 3 34933 NULL
35386 +snd_info_entry_read_34938 snd_info_entry_read 3 34938 NULL
35387 -+do_add_page_to_bio_34974 do_add_page_to_bio 2-10 34974 NULL
35388 ++do_add_page_to_bio_34974 do_add_page_to_bio 10-2 34974 NULL
35389 +schedule_erase_34996 schedule_erase 0 34996 NULL
35390 +rx_rx_hdr_overflow_read_35002 rx_rx_hdr_overflow_read 3 35002 NULL
35391 +l2cap_skbuff_fromiovec_35003 l2cap_skbuff_fromiovec 4-3 35003 NULL
35392 -+rtw_cfg80211_rx_p2p_action_public_35010 rtw_cfg80211_rx_p2p_action_public 3 35010 NULL
35393 +sisusb_copy_memory_35016 sisusb_copy_memory 4 35016 NULL
35394 +coda_psdev_read_35029 coda_psdev_read 3 35029 NULL
35395 ++hwdep_read_locked_35037 hwdep_read_locked 3 35037 NULL
35396 +pwr_connection_out_of_sync_read_35061 pwr_connection_out_of_sync_read 3 35061 NULL
35397 +__kfifo_uint_must_check_helper_35097 __kfifo_uint_must_check_helper 0-1 35097 NULL
35398 +capi_write_35104 capi_write 3 35104 NULL nohasharray
35399 +tx_tx_done_template_read_35104 tx_tx_done_template_read 3 35104 &capi_write_35104
35400 +ide_settings_proc_write_35110 ide_settings_proc_write 3 35110 NULL
35401 ++addrs_per_inode_35151 addrs_per_inode 0 35151 NULL
35402 +message_stats_print_35158 message_stats_print 6 35158 NULL
35403 +iscsi_conn_setup_35159 iscsi_conn_setup 2 35159 NULL
35404 +ieee80211_if_read_bssid_35161 ieee80211_if_read_bssid 3 35161 NULL
35405 @@ -118224,7 +126164,7 @@ index 0000000..386792a
35406 +irda_recvmsg_stream_35280 irda_recvmsg_stream 4 35280 NULL
35407 +i2o_block_end_request_35282 i2o_block_end_request 3 35282 NULL
35408 +isr_rx_rdys_read_35283 isr_rx_rdys_read 3 35283 NULL
35409 -+__btrfs_buffered_write_35311 __btrfs_buffered_write 3-0 35311 NULL nohasharray
35410 ++__btrfs_buffered_write_35311 __btrfs_buffered_write 3 35311 NULL nohasharray
35411 +brcmf_sdio_forensic_read_35311 brcmf_sdio_forensic_read 3 35311 &__btrfs_buffered_write_35311
35412 +tracing_read_pipe_35312 tracing_read_pipe 3 35312 NULL
35413 +sta_tx_latency_stat_write_35323 sta_tx_latency_stat_write 3 35323 NULL
35414 @@ -118232,7 +126172,6 @@ index 0000000..386792a
35415 +nouveau_devinit_create__35348 nouveau_devinit_create_ 4 35348 NULL
35416 +ieee80211_rx_mgmt_deauth_35351 ieee80211_rx_mgmt_deauth 3 35351 NULL
35417 +compat_filldir64_35354 compat_filldir64 3 35354 NULL
35418 -+read_kmem_35372 read_kmem 3 35372 NULL
35419 +SyS_getxattr_35408 SyS_getxattr 4 35408 NULL
35420 +rawv6_send_hdrinc_35425 rawv6_send_hdrinc 3 35425 NULL
35421 +iwl_dbgfs_drv_rx_stats_read_35430 iwl_dbgfs_drv_rx_stats_read 3 35430 NULL
35422 @@ -118254,7 +126193,6 @@ index 0000000..386792a
35423 +spk_msg_set_35586 spk_msg_set 3 35586 NULL
35424 +kernel_readv_35617 kernel_readv 3 35617 NULL
35425 +reiserfs_readpages_35629 reiserfs_readpages 4 35629 NULL
35426 -+pci_request_regions_35635 pci_request_regions 0 35635 NULL
35427 +ptlrpcd_steal_rqset_35637 ptlrpcd_steal_rqset 0 35637 NULL
35428 +spi_register_board_info_35651 spi_register_board_info 2 35651 NULL
35429 +rdmaltWithLock_35669 rdmaltWithLock 0 35669 NULL
35430 @@ -118267,7 +126205,6 @@ index 0000000..386792a
35431 +tx_tx_cmplt_read_35854 tx_tx_cmplt_read 3 35854 NULL
35432 +vx_query_hbuffer_size_35859 vx_query_hbuffer_size 0 35859 NULL
35433 +mthca_buf_alloc_35861 mthca_buf_alloc 2 35861 NULL
35434 -+fls64_35862 fls64 0 35862 NULL
35435 +kvm_dirty_bitmap_bytes_35886 kvm_dirty_bitmap_bytes 0 35886 NULL
35436 +ieee80211_if_fmt_dot11MeshRetryTimeout_35890 ieee80211_if_fmt_dot11MeshRetryTimeout 3 35890 NULL
35437 +uwb_rc_cmd_done_35892 uwb_rc_cmd_done 4 35892 NULL
35438 @@ -118276,20 +126213,17 @@ index 0000000..386792a
35439 +sctp_tsnmap_mark_35929 sctp_tsnmap_mark 2 35929 NULL
35440 +rx_defrag_init_called_read_35935 rx_defrag_init_called_read 3 35935 NULL
35441 +put_cmsg_compat_35937 put_cmsg_compat 4 35937 NULL
35442 -+ext_rts51x_sd_execute_write_data_35971 ext_rts51x_sd_execute_write_data 9 35971 NULL
35443 +generic_ocp_read_35974 generic_ocp_read 3 35974 NULL nohasharray
35444 +ceph_buffer_new_35974 ceph_buffer_new 1 35974 &generic_ocp_read_35974
35445 +acl_alloc_35979 acl_alloc 1 35979 NULL
35446 -+device_add_class_symlinks_35985 device_add_class_symlinks 0 35985 NULL
35447 -+kuc_alloc_35998 kuc_alloc 1 35998 NULL nohasharray
35448 -+write_file_antenna_35998 write_file_antenna 3 35998 &kuc_alloc_35998
35449 -+scsi_transfer_length_36011 scsi_transfer_length 0 36011 NULL
35450 ++write_file_antenna_35998 write_file_antenna 3 35998 NULL nohasharray
35451 ++kuc_alloc_35998 kuc_alloc 1 35998 &write_file_antenna_35998
35452 ++lov_mds_md_max_stripe_count_36008 lov_mds_md_max_stripe_count 0-1 36008 NULL
35453 +il3945_ucode_tx_stats_read_36016 il3945_ucode_tx_stats_read 3 36016 NULL
35454 +ubi_eba_write_leb_36029 ubi_eba_write_leb 0 36029 NULL
35455 +__videobuf_alloc_36031 __videobuf_alloc 1 36031 NULL
35456 +account_shadowed_36048 account_shadowed 2 36048 NULL
35457 +gpio_power_read_36059 gpio_power_read 3 36059 NULL
35458 -+snd_pcm_playback_hw_avail_36061 snd_pcm_playback_hw_avail 0 36061 NULL
35459 +write_emulate_36065 write_emulate 2-4 36065 NULL
35460 +stack_max_size_write_36068 stack_max_size_write 3 36068 NULL
35461 +radeon_vm_num_pdes_36070 radeon_vm_num_pdes 0 36070 NULL
35462 @@ -118303,18 +126237,15 @@ index 0000000..386792a
35463 +twl_set_36154 twl_set 2 36154 NULL
35464 +b1_alloc_card_36155 b1_alloc_card 1 36155 NULL
35465 +snd_korg1212_copy_from_36169 snd_korg1212_copy_from 6 36169 NULL
35466 -+SyS_kexec_load_36176 SyS_kexec_load 2 36176 NULL
35467 +ramoops_init_przs_36199 ramoops_init_przs 4 36199 NULL
35468 +SYSC_sched_getaffinity_36208 SYSC_sched_getaffinity 2 36208 NULL
35469 +SYSC_process_vm_readv_36216 SYSC_process_vm_readv 3-5 36216 NULL
35470 +atomic_stats_read_36228 atomic_stats_read 3 36228 NULL
35471 -+rtw_cfg80211_set_wpa_ie_36236 rtw_cfg80211_set_wpa_ie 3 36236 NULL
35472 +viafb_iga1_odev_proc_write_36241 viafb_iga1_odev_proc_write 3 36241 NULL
35473 +SYSC_getxattr_36242 SYSC_getxattr 4 36242 NULL
35474 +vmsplice_to_user_36245 vmsplice_to_user 3 36245 NULL nohasharray
35475 +rproc_recovery_read_36245 rproc_recovery_read 3 36245 &vmsplice_to_user_36245
35476 -+cfs_hash_buckets_realloc_36276 cfs_hash_buckets_realloc 4 36276 NULL nohasharray
35477 -+usb_buffer_alloc_36276 usb_buffer_alloc 2 36276 &cfs_hash_buckets_realloc_36276
35478 ++cfs_hash_buckets_realloc_36276 cfs_hash_buckets_realloc 4 36276 NULL
35479 +codec_reg_read_file_36280 codec_reg_read_file 3 36280 NULL
35480 +crypto_shash_digestsize_36284 crypto_shash_digestsize 0 36284 NULL
35481 +lpfc_debugfs_dif_err_read_36303 lpfc_debugfs_dif_err_read 3 36303 NULL
35482 @@ -118335,10 +126266,8 @@ index 0000000..386792a
35483 +sctp_tsnmap_init_36446 sctp_tsnmap_init 2 36446 NULL
35484 +alloc_etherdev_mqs_36450 alloc_etherdev_mqs 1 36450 NULL
35485 +SyS_process_vm_writev_36476 SyS_process_vm_writev 3-5 36476 NULL
35486 -+lock_and_cleanup_extent_if_need_36480 lock_and_cleanup_extent_if_need 0 36480 NULL
35487 +b43_nphy_load_samples_36481 b43_nphy_load_samples 3 36481 NULL
35488 -+tx_tx_checksum_result_read_36490 tx_tx_checksum_result_read 3 36490 NULL nohasharray
35489 -+ip6_append_data_36490 ip6_append_data 4 36490 &tx_tx_checksum_result_read_36490
35490 ++tx_tx_checksum_result_read_36490 tx_tx_checksum_result_read 3 36490 NULL
35491 +__hwahc_op_set_ptk_36510 __hwahc_op_set_ptk 5 36510 NULL
35492 +mcam_v4l_read_36513 mcam_v4l_read 3 36513 NULL
35493 +_iwl_dbgfs_fw_nmi_write_36515 _iwl_dbgfs_fw_nmi_write 3 36515 NULL
35494 @@ -118362,13 +126291,13 @@ index 0000000..386792a
35495 +snd_rawmidi_kernel_read1_36740 snd_rawmidi_kernel_read1 4-0 36740 NULL
35496 +cxgbi_device_register_36746 cxgbi_device_register 1-2 36746 NULL
35497 +ps_poll_upsd_timeouts_read_36755 ps_poll_upsd_timeouts_read 3 36755 NULL
35498 ++ptp_filter_init_36780 ptp_filter_init 2 36780 NULL
35499 +i40e_init_lan_hmc_36796 i40e_init_lan_hmc 5-4-3-2 36796 NULL
35500 +proc_fault_inject_read_36802 proc_fault_inject_read 3 36802 NULL
35501 +hiddev_ioctl_36816 hiddev_ioctl 2 36816 NULL
35502 +int_hardware_entry_36833 int_hardware_entry 3 36833 NULL
35503 +fc_change_queue_depth_36841 fc_change_queue_depth 2 36841 NULL
35504 +keyctl_describe_key_36853 keyctl_describe_key 3 36853 NULL
35505 -+cm_write_36858 cm_write 3 36858 NULL
35506 +tipc_link_iovec_long_xmit_36871 tipc_link_iovec_long_xmit 3 36871 NULL nohasharray
35507 +tx_tx_data_programmed_read_36871 tx_tx_data_programmed_read 3 36871 &tipc_link_iovec_long_xmit_36871
35508 +svc_setsockopt_36876 svc_setsockopt 5 36876 NULL
35509 @@ -118376,11 +126305,11 @@ index 0000000..386792a
35510 +__btrfs_map_block_36883 __btrfs_map_block 3 36883 NULL
35511 +ib_ucm_alloc_data_36885 ib_ucm_alloc_data 3 36885 NULL
35512 +selinux_inode_notifysecctx_36896 selinux_inode_notifysecctx 3 36896 NULL
35513 -+OS_kmalloc_36909 OS_kmalloc 1 36909 NULL
35514 +il4965_rs_sta_dbgfs_scale_table_write_36979 il4965_rs_sta_dbgfs_scale_table_write 3 36979 NULL
35515 +drbd_new_dev_size_36998 drbd_new_dev_size 0-3 36998 NULL
35516 +auok190xfb_write_37001 auok190xfb_write 3 37001 NULL
35517 +setxattr_37006 setxattr 4 37006 NULL
35518 ++ec_i2c_xfer_37029 ec_i2c_xfer 3 37029 NULL
35519 +command_file_read_37038 command_file_read 3 37038 NULL
35520 +figure_loop_size_37051 figure_loop_size 2-3 37051 NULL
35521 +qp_broker_create_37053 qp_broker_create 6-5 37053 NULL nohasharray
35522 @@ -118390,36 +126319,33 @@ index 0000000..386792a
35523 +parse_command_37079 parse_command 2 37079 NULL
35524 +pipeline_cs_rx_packet_in_read_37089 pipeline_cs_rx_packet_in_read 3 37089 NULL
35525 +tun_get_user_37094 tun_get_user 5 37094 NULL
35526 -+has_wrprotected_page_37123 has_wrprotected_page 2-3 37123 NULL
35527 ++has_wrprotected_page_37123 has_wrprotected_page 3-2 37123 NULL
35528 +snd_hda_get_conn_list_37132 snd_hda_get_conn_list 0 37132 NULL
35529 +mtt_free_res_37144 mtt_free_res 5 37144 NULL
35530 +msg_word_37164 msg_word 0 37164 NULL
35531 -+f2fs_direct_IO_37167 f2fs_direct_IO 4 37167 NULL
35532 +vcc_recvmsg_37198 vcc_recvmsg 4 37198 NULL
35533 +forced_ps_write_37209 forced_ps_write 3 37209 NULL
35534 -+crypto_shash_descsize_37212 crypto_shash_descsize 0 37212 NULL nohasharray
35535 -+ext4_ind_direct_IO_37212 ext4_ind_direct_IO 4-0 37212 &crypto_shash_descsize_37212
35536 ++crypto_shash_descsize_37212 crypto_shash_descsize 0 37212 NULL
35537 +regmap_access_read_file_37223 regmap_access_read_file 3 37223 NULL
35538 +__do_replace_37227 __do_replace 5 37227 NULL
35539 +iwl_dbgfs_d3_sram_read_37237 iwl_dbgfs_d3_sram_read 3 37237 NULL
35540 -+rx_filter_dup_filter_read_37238 rx_filter_dup_filter_read 3 37238 NULL
35541 ++__btrfs_inc_extent_ref_37238 __btrfs_inc_extent_ref 7 37238 NULL nohasharray
35542 ++rx_filter_dup_filter_read_37238 rx_filter_dup_filter_read 3 37238 &__btrfs_inc_extent_ref_37238
35543 +prot_queue_del_37258 prot_queue_del 0 37258 NULL
35544 +exofs_max_io_pages_37263 exofs_max_io_pages 0-2 37263 NULL
35545 +_iwl_dbgfs_fw_restart_write_37270 _iwl_dbgfs_fw_restart_write 3 37270 NULL
35546 -+request_threaded_irq_37303 request_threaded_irq 0 37303 NULL
35547 +ieee80211_if_read_power_mode_37305 ieee80211_if_read_power_mode 3 37305 NULL
35548 -+ext3_direct_IO_37308 ext3_direct_IO 4 37308 NULL
35549 +jffs2_write_dirent_37311 jffs2_write_dirent 5 37311 NULL
35550 +tipc_send_37315 tipc_send 3 37315 NULL
35551 -+l2cap_create_connless_pdu_37327 l2cap_create_connless_pdu 3 37327 NULL nohasharray
35552 -+bnx2x_vf_fill_fw_str_37327 bnx2x_vf_fill_fw_str 3 37327 &l2cap_create_connless_pdu_37327
35553 ++l2cap_create_connless_pdu_37327 l2cap_create_connless_pdu 3 37327 NULL
35554 +scsi_mode_select_37330 scsi_mode_select 6 37330 NULL
35555 +rxrpc_server_sendmsg_37331 rxrpc_server_sendmsg 4 37331 NULL
35556 +security_inode_getsecurity_37354 security_inode_getsecurity 0 37354 NULL
35557 +hci_sock_sendmsg_37420 hci_sock_sendmsg 4 37420 NULL
35558 -+acpi_os_allocate_zeroed_37422 acpi_os_allocate_zeroed 1 37422 NULL
35559 ++acpi_os_allocate_zeroed_37422 acpi_os_allocate_zeroed 1 37422 NULL nohasharray
35560 ++find_next_bit_37422 find_next_bit 0 37422 &acpi_os_allocate_zeroed_37422
35561 +tty_insert_flip_string_fixed_flag_37428 tty_insert_flip_string_fixed_flag 4-0 37428 NULL
35562 -+iwl_print_last_event_logs_37433 iwl_print_last_event_logs 0-7-9 37433 NULL
35563 ++iwl_print_last_event_logs_37433 iwl_print_last_event_logs 7-9-0 37433 NULL
35564 +fru_alloc_37442 fru_alloc 1 37442 NULL
35565 +tcp_established_options_37450 tcp_established_options 0 37450 NULL
35566 +brcmf_sdio_dump_console_37455 brcmf_sdio_dump_console 4 37455 NULL
35567 @@ -118433,19 +126359,18 @@ index 0000000..386792a
35568 +hdr_size_37536 hdr_size 0 37536 NULL
35569 +extent_map_end_37550 extent_map_end 0 37550 NULL
35570 +sep_create_dcb_dmatables_context_37551 sep_create_dcb_dmatables_context 6 37551 NULL
35571 -+fat_cont_expand_37552 fat_cont_expand 0 37552 NULL
35572 +xhci_alloc_streams_37586 xhci_alloc_streams 5 37586 NULL
35573 +qla2x00_debounce_register_37597 qla2x00_debounce_register 0 37597 NULL
35574 +kvm_read_guest_page_mmu_37611 kvm_read_guest_page_mmu 6 37611 NULL
35575 +SYSC_mbind_37622 SYSC_mbind 5 37622 NULL
35576 +SyS_mbind_37638 SyS_mbind 5 37638 NULL
35577 -+may_delete_37656 may_delete 0 37656 NULL
35578 +bio_copy_user_iov_37660 bio_copy_user_iov 4 37660 NULL
35579 -+vmw_framebuffer_dmabuf_dirty_37661 vmw_framebuffer_dmabuf_dirty 6 37661 NULL nohasharray
35580 -+rfcomm_sock_sendmsg_37661 rfcomm_sock_sendmsg 4 37661 &vmw_framebuffer_dmabuf_dirty_37661
35581 ++rfcomm_sock_sendmsg_37661 rfcomm_sock_sendmsg 4 37661 NULL nohasharray
35582 ++vmw_framebuffer_dmabuf_dirty_37661 vmw_framebuffer_dmabuf_dirty 6 37661 &rfcomm_sock_sendmsg_37661
35583 +SYSC_get_mempolicy_37664 SYSC_get_mempolicy 3 37664 NULL
35584 +__wa_seg_calculate_isoc_frame_count_37672 __wa_seg_calculate_isoc_frame_count 0 37672 NULL
35585 +ieee80211_if_read_rc_rateidx_mcs_mask_2ghz_37675 ieee80211_if_read_rc_rateidx_mcs_mask_2ghz 3 37675 NULL
35586 ++tracing_saved_cmdlines_size_write_37684 tracing_saved_cmdlines_size_write 3 37684 NULL
35587 +regmap_map_read_file_37685 regmap_map_read_file 3 37685 NULL
35588 +nametbl_header_37698 nametbl_header 2-0 37698 NULL
35589 +__le32_to_cpup_37702 __le32_to_cpup 0 37702 NULL
35590 @@ -118461,10 +126386,10 @@ index 0000000..386792a
35591 +android_get_p2p_addr_37832 android_get_p2p_addr 0 37832 NULL
35592 +o2hb_debug_read_37851 o2hb_debug_read 3 37851 NULL
35593 +xfs_dir2_block_to_sf_37868 xfs_dir2_block_to_sf 3 37868 NULL
35594 -+set_registers_37883 set_registers 4 37883 NULL
35595 ++btrfs_leaf_data_37869 btrfs_leaf_data 0 37869 NULL
35596 +btrfs_stack_file_extent_disk_bytenr_37888 btrfs_stack_file_extent_disk_bytenr 0 37888 NULL
35597 -+_rtw_malloc_37928 _rtw_malloc 1 37928 NULL nohasharray
35598 -+pkt_alloc_packet_data_37928 pkt_alloc_packet_data 1 37928 &_rtw_malloc_37928
35599 ++pkt_alloc_packet_data_37928 pkt_alloc_packet_data 1 37928 NULL nohasharray
35600 ++_rtw_malloc_37928 _rtw_malloc 1 37928 &pkt_alloc_packet_data_37928
35601 +read_rbu_packet_size_37939 read_rbu_packet_size 6 37939 NULL
35602 +write_file_bool_37957 write_file_bool 3 37957 NULL
35603 +fifo_alloc_37961 fifo_alloc 1 37961 NULL
35604 @@ -118475,12 +126400,10 @@ index 0000000..386792a
35605 +il_dbgfs_chain_noise_read_38044 il_dbgfs_chain_noise_read 3 38044 NULL nohasharray
35606 +klsi_105_prepare_write_buffer_38044 klsi_105_prepare_write_buffer 3 38044 &il_dbgfs_chain_noise_read_38044
35607 +SyS_llistxattr_38048 SyS_llistxattr 3 38048 NULL
35608 -+sysfs_do_create_link_38051 sysfs_do_create_link 0 38051 NULL
35609 +_xfs_buf_alloc_38058 _xfs_buf_alloc 3 38058 NULL
35610 +nsm_create_handle_38060 nsm_create_handle 4 38060 NULL
35611 +alloc_ltalkdev_38071 alloc_ltalkdev 1 38071 NULL
35612 -+wcn36xx_smd_rsp_process_38081 wcn36xx_smd_rsp_process 3 38081 NULL nohasharray
35613 -+xfs_buf_readahead_map_38081 xfs_buf_readahead_map 3 38081 &wcn36xx_smd_rsp_process_38081
35614 ++xfs_buf_readahead_map_38081 xfs_buf_readahead_map 3 38081 NULL
35615 +uwb_mac_addr_print_38085 uwb_mac_addr_print 2 38085 NULL
35616 +request_key_auth_new_38092 request_key_auth_new 3 38092 NULL
35617 +proc_self_readlink_38094 proc_self_readlink 3 38094 NULL
35618 @@ -118490,8 +126413,8 @@ index 0000000..386792a
35619 +o2hb_read_slots_38105 o2hb_read_slots 2 38105 NULL
35620 +snd_pcm_oss_write_38108 snd_pcm_oss_write 3 38108 NULL
35621 +vmw_kms_present_38130 vmw_kms_present 9 38130 NULL
35622 -+__ntfs_copy_from_user_iovec_inatomic_38153 __ntfs_copy_from_user_iovec_inatomic 4-3-0 38153 NULL
35623 -+btrfs_extent_same_38163 btrfs_extent_same 3-2 38163 NULL
35624 ++__ntfs_copy_from_user_iovec_inatomic_38153 __ntfs_copy_from_user_iovec_inatomic 3-4-0 38153 NULL
35625 ++btrfs_extent_same_38163 btrfs_extent_same 3-2-5 38163 NULL
35626 +kvm_clear_guest_38164 kvm_clear_guest 3-2 38164 NULL
35627 +cdev_add_38176 cdev_add 2-3 38176 NULL
35628 +rt2x00debug_write_rf_38195 rt2x00debug_write_rf 3 38195 NULL
35629 @@ -118499,11 +126422,10 @@ index 0000000..386792a
35630 +osd_req_list_partition_collections_38223 osd_req_list_partition_collections 5 38223 NULL
35631 +ceph_decode_16_38239 ceph_decode_16 0 38239 NULL
35632 +_ipw_read_reg32_38245 _ipw_read_reg32 0 38245 NULL
35633 -+snd_pcm_playback_rewind_38249 snd_pcm_playback_rewind 0-2 38249 NULL
35634 +mthca_alloc_icm_table_38268 mthca_alloc_icm_table 4-3 38268 NULL nohasharray
35635 +ieee80211_if_read_auto_open_plinks_38268 ieee80211_if_read_auto_open_plinks 3 38268 &mthca_alloc_icm_table_38268
35636 -+xfs_bmbt_to_bmdr_38275 xfs_bmbt_to_bmdr 3 38275 NULL nohasharray
35637 -+xfs_bmdr_to_bmbt_38275 xfs_bmdr_to_bmbt 5 38275 &xfs_bmbt_to_bmdr_38275
35638 ++xfs_bmdr_to_bmbt_38275 xfs_bmdr_to_bmbt 5 38275 NULL nohasharray
35639 ++xfs_bmbt_to_bmdr_38275 xfs_bmbt_to_bmdr 3 38275 &xfs_bmdr_to_bmbt_38275
35640 +ftdi_process_packet_38281 ftdi_process_packet 4 38281 NULL
35641 +C_SYSC_pselect6_38296 C_SYSC_pselect6 1 38296 NULL
35642 +ucma_query_path_38305 ucma_query_path 3 38305 NULL
35643 @@ -118514,13 +126436,13 @@ index 0000000..386792a
35644 +dn_sendmsg_38390 dn_sendmsg 4 38390 NULL
35645 +ieee80211_if_read_dtim_count_38419 ieee80211_if_read_dtim_count 3 38419 NULL
35646 +pmcraid_copy_sglist_38431 pmcraid_copy_sglist 3 38431 NULL
35647 ++iov_iter_npages_iovec_38448 iov_iter_npages_iovec 0-2 38448 NULL
35648 +kvm_write_guest_38454 kvm_write_guest 4-2 38454 NULL
35649 +_iwl_dbgfs_scan_ant_rxchain_write_38479 _iwl_dbgfs_scan_ant_rxchain_write 3 38479 NULL
35650 +blk_end_bidi_request_38482 blk_end_bidi_request 3-4 38482 NULL
35651 +dev_names_read_38509 dev_names_read 3 38509 NULL
35652 +iscsi_create_iface_38510 iscsi_create_iface 5 38510 NULL
35653 +event_rx_mismatch_read_38518 event_rx_mismatch_read 3 38518 NULL
35654 -+set_queue_count_38519 set_queue_count 0 38519 NULL
35655 +ubifs_idx_node_sz_38546 ubifs_idx_node_sz 0-2 38546 NULL
35656 +btrfs_discard_extent_38547 btrfs_discard_extent 2 38547 NULL
35657 +kuc_len_38557 kuc_len 0-1 38557 NULL
35658 @@ -118537,7 +126459,6 @@ index 0000000..386792a
35659 +qp_broker_alloc_38646 qp_broker_alloc 6-5 38646 NULL
35660 +mmc_send_cxd_data_38655 mmc_send_cxd_data 5 38655 NULL
35661 +nouveau_instmem_create__38664 nouveau_instmem_create_ 4 38664 NULL
35662 -+snd_es1371_wait_src_ready_38673 snd_es1371_wait_src_ready 0 38673 NULL
35663 +iscsit_dump_data_payload_38683 iscsit_dump_data_payload 2 38683 NULL
35664 +validate_vid_hdr_38699 validate_vid_hdr 0 38699 NULL
35665 +rbio_add_io_page_38700 rbio_add_io_page 6 38700 NULL
35666 @@ -118545,18 +126466,16 @@ index 0000000..386792a
35667 +iwl_dbgfs_thermal_throttling_read_38779 iwl_dbgfs_thermal_throttling_read 3 38779 NULL
35668 +bcache_device_init_38781 bcache_device_init 3 38781 NULL
35669 +snd_gus_dram_write_38784 snd_gus_dram_write 4 38784 NULL
35670 -+do_pci_enable_device_38802 do_pci_enable_device 0 38802 NULL
35671 +err_decode_38804 err_decode 2 38804 NULL
35672 +ipv6_renew_option_38813 ipv6_renew_option 3 38813 NULL
35673 +direct_entry_38836 direct_entry 3 38836 NULL
35674 +compat_udp_setsockopt_38840 compat_udp_setsockopt 5 38840 NULL
35675 -+read_nic_io_word_38853 read_nic_io_word 0 38853 NULL
35676 +interfaces_38859 interfaces 2 38859 NULL
35677 +dbgfs_state_38894 dbgfs_state 3 38894 NULL
35678 +il_dbgfs_sram_write_38942 il_dbgfs_sram_write 3 38942 NULL
35679 +__ath6kl_wmi_send_mgmt_cmd_38971 __ath6kl_wmi_send_mgmt_cmd 7 38971 NULL
35680 -+usb_maxpacket_38977 usb_maxpacket 0 38977 NULL nohasharray
35681 -+C_SYSC_preadv64_38977 C_SYSC_preadv64 3 38977 &usb_maxpacket_38977
35682 ++C_SYSC_preadv64_38977 C_SYSC_preadv64 3 38977 NULL nohasharray
35683 ++usb_maxpacket_38977 usb_maxpacket 0 38977 &C_SYSC_preadv64_38977
35684 +OSDSetBlock_38986 OSDSetBlock 2-4 38986 NULL
35685 +bio_clone_range_38997 bio_clone_range 2 38997 NULL
35686 +lpfc_idiag_extacc_write_38998 lpfc_idiag_extacc_write 3 38998 NULL
35687 @@ -118565,7 +126484,6 @@ index 0000000..386792a
35688 +force_sc_support_read_39014 force_sc_support_read 3 39014 NULL
35689 +__blkdev_issue_zeroout_39020 __blkdev_issue_zeroout 3 39020 NULL
35690 +_zd_iowrite32v_async_locked_39034 _zd_iowrite32v_async_locked 3 39034 NULL
35691 -+do_write_kmem_39051 do_write_kmem 0-1-3 39051 NULL
35692 +tomoyo_truncate_39105 tomoyo_truncate 0 39105 NULL
35693 +leb_write_lock_39111 leb_write_lock 0 39111 NULL
35694 +__kfifo_to_user_r_39123 __kfifo_to_user_r 5-3 39123 NULL
35695 @@ -118579,7 +126497,6 @@ index 0000000..386792a
35696 +qcam_read_bytes_39205 qcam_read_bytes 0 39205 NULL
35697 +ivtv_v4l2_write_39226 ivtv_v4l2_write 3 39226 NULL
35698 +posix_acl_to_xattr_39237 posix_acl_to_xattr 0 39237 NULL
35699 -+snd_pcm_capture_forward_39248 snd_pcm_capture_forward 0-2 39248 NULL
35700 +r128_compat_ioctl_39250 r128_compat_ioctl 2 39250 NULL nohasharray
35701 +pwr_cont_miss_bcns_spread_read_39250 pwr_cont_miss_bcns_spread_read 3 39250 &r128_compat_ioctl_39250
35702 +i915_error_state_read_39254 i915_error_state_read 3 39254 NULL
35703 @@ -118612,7 +126529,6 @@ index 0000000..386792a
35704 +batadv_tt_tvlv_generate_39615 batadv_tt_tvlv_generate 4 39615 NULL
35705 +nfs_idmap_get_key_39616 nfs_idmap_get_key 2 39616 NULL
35706 +sdio_readb_39618 sdio_readb 0 39618 NULL
35707 -+prepare_uptodate_page_39622 prepare_uptodate_page 0 39622 NULL
35708 +set_dev_class_39645 set_dev_class 4 39645 NULL
35709 +snd_rme32_capture_copy_39653 snd_rme32_capture_copy 5 39653 NULL
35710 +tcp_try_rmem_schedule_39657 tcp_try_rmem_schedule 3 39657 NULL
35711 @@ -118620,7 +126536,6 @@ index 0000000..386792a
35712 +v4l_stk_read_39672 v4l_stk_read 3 39672 NULL
35713 +hsc_msg_len_get_39673 hsc_msg_len_get 0 39673 NULL
35714 +do_surface_dirty_sou_39678 do_surface_dirty_sou 7 39678 NULL
35715 -+sd_completed_bytes_39705 sd_completed_bytes 0 39705 NULL
35716 +ftrace_pid_write_39710 ftrace_pid_write 3 39710 NULL
35717 +adt7316_spi_multi_read_39765 adt7316_spi_multi_read 3 39765 NULL
35718 +security_inode_listsecurity_39812 security_inode_listsecurity 0 39812 NULL
35719 @@ -118630,10 +126545,9 @@ index 0000000..386792a
35720 +read_file_modal_eeprom_39909 read_file_modal_eeprom 3 39909 NULL
35721 +gen_pool_add_virt_39913 gen_pool_add_virt 4 39913 NULL
35722 +dw210x_op_rw_39915 dw210x_op_rw 6 39915 NULL
35723 -+__mnt_want_write_file_39917 __mnt_want_write_file 0 39917 NULL
35724 +aes_encrypt_interrupt_read_39919 aes_encrypt_interrupt_read 3 39919 NULL
35725 -+exofs_read_kern_39921 exofs_read_kern 6 39921 NULL nohasharray
35726 -+oom_score_adj_read_39921 oom_score_adj_read 3 39921 &exofs_read_kern_39921
35727 ++oom_score_adj_read_39921 oom_score_adj_read 3 39921 NULL nohasharray
35728 ++exofs_read_kern_39921 exofs_read_kern 6 39921 &oom_score_adj_read_39921
35729 +__spi_async_39932 __spi_async 0 39932 NULL
35730 +__get_order_39935 __get_order 0 39935 NULL
35731 +error_error_frame_read_39947 error_error_frame_read 3 39947 NULL
35732 @@ -118644,7 +126558,6 @@ index 0000000..386792a
35733 +broadsheetfb_write_39976 broadsheetfb_write 3 39976 NULL
35734 +mthca_array_init_39987 mthca_array_init 2 39987 NULL
35735 +fw_device_op_read_39990 fw_device_op_read 3 39990 NULL
35736 -+server_name2svname_39998 server_name2svname 4 39998 NULL
35737 +xen_hvm_config_40018 xen_hvm_config 2 40018 NULL
35738 +ivtvfb_write_40023 ivtvfb_write 3 40023 NULL
35739 +disc_pwup_write_40027 disc_pwup_write 3 40027 NULL
35740 @@ -118653,7 +126566,6 @@ index 0000000..386792a
35741 +l2cap_create_iframe_pdu_40055 l2cap_create_iframe_pdu 3 40055 NULL nohasharray
35742 +add_tty_40055 add_tty 1 40055 &l2cap_create_iframe_pdu_40055
35743 +atomic_xchg_40070 atomic_xchg 0 40070 NULL
35744 -+snd_pcm_sw_params_user_40095 snd_pcm_sw_params_user 0 40095 NULL
35745 +sctp_setsockopt_delayed_ack_40129 sctp_setsockopt_delayed_ack 3 40129 NULL
35746 +dwc2_max_desc_num_40132 dwc2_max_desc_num 0 40132 NULL
35747 +rx_rx_frame_checksum_read_40140 rx_rx_frame_checksum_read 3 40140 NULL
35748 @@ -118696,7 +126608,6 @@ index 0000000..386792a
35749 +ima_write_policy_40548 ima_write_policy 3 40548 NULL
35750 +esp_alloc_tmp_40558 esp_alloc_tmp 3-2 40558 NULL
35751 +get_priv_descr_and_size_40612 get_priv_descr_and_size 0 40612 NULL
35752 -+i2c_register_adapter_40660 i2c_register_adapter 0 40660 NULL
35753 +twl4030_kpwrite_u8_40665 twl4030_kpwrite_u8 3 40665 NULL
35754 +__cfg80211_roamed_40668 __cfg80211_roamed 4-6 40668 NULL
35755 +pipeline_rx_complete_stat_fifo_int_read_40671 pipeline_rx_complete_stat_fifo_int_read 3 40671 NULL
35756 @@ -118704,10 +126615,8 @@ index 0000000..386792a
35757 +idr_get_empty_slot_40674 idr_get_empty_slot 0 40674 NULL
35758 +alloc_rbio_40676 alloc_rbio 4 40676 NULL
35759 +videobuf_dma_init_user_locked_40678 videobuf_dma_init_user_locked 4-3 40678 NULL
35760 -+pci_enable_resources_40680 pci_enable_resources 0 40680 NULL
35761 +nfc_hci_set_param_40697 nfc_hci_set_param 5 40697 NULL
35762 +__seq_open_private_40715 __seq_open_private 3 40715 NULL
35763 -+set_extent_bit_40719 set_extent_bit 0 40719 NULL
35764 +of_pdt_build_one_prop_40735 of_pdt_build_one_prop 5 40735 NULL
35765 +fuse_readpages_40737 fuse_readpages 4 40737 NULL
35766 +xfs_iext_remove_direct_40744 xfs_iext_remove_direct 3 40744 NULL
35767 @@ -118736,6 +126645,7 @@ index 0000000..386792a
35768 +il_dbgfs_fh_reg_read_40993 il_dbgfs_fh_reg_read 3 40993 NULL
35769 +iwl_dbgfs_scan_ant_rxchain_read_40999 iwl_dbgfs_scan_ant_rxchain_read 3 40999 NULL
35770 +mac80211_format_buffer_41010 mac80211_format_buffer 2 41010 NULL
35771 ++get_pages_alloc_bvec_41012 get_pages_alloc_bvec 0-3 41012 NULL
35772 +mtd_block_isbad_41015 mtd_block_isbad 0 41015 NULL
35773 +__proc_dobitmasks_41029 __proc_dobitmasks 5 41029 NULL
35774 +_req_append_segment_41031 _req_append_segment 2 41031 NULL
35775 @@ -118755,8 +126665,6 @@ index 0000000..386792a
35776 +v4l2_ctrl_new_int_menu_41151 v4l2_ctrl_new_int_menu 4 41151 NULL
35777 +tx_frag_mpdu_alloc_failed_read_41167 tx_frag_mpdu_alloc_failed_read 3 41167 NULL
35778 +dvb_ca_write_41171 dvb_ca_write 3 41171 NULL
35779 -+netif_get_num_default_rss_queues_41187 netif_get_num_default_rss_queues 0 41187 NULL
35780 -+request_irq_41192 request_irq 0 41192 NULL
35781 +dfs_file_write_41196 dfs_file_write 3 41196 NULL
35782 +nfs_page_array_len_41219 nfs_page_array_len 0-2-1 41219 NULL
35783 +cfg80211_process_disassoc_41231 cfg80211_process_disassoc 3 41231 NULL
35784 @@ -118780,7 +126688,6 @@ index 0000000..386792a
35785 +pcpu_build_alloc_info_41443 pcpu_build_alloc_info 1-2-3 41443 NULL
35786 +se_io_cb_41461 se_io_cb 3 41461 NULL
35787 +layout_leb_in_gaps_41470 layout_leb_in_gaps 0 41470 NULL
35788 -+snd_pcm_status_41472 snd_pcm_status 0 41472 NULL
35789 +rt2x00debug_write_rfcsr_41473 rt2x00debug_write_rfcsr 3 41473 NULL
35790 +bl_alloc_init_bio_41478 bl_alloc_init_bio 1 41478 NULL
35791 +kvm_unmap_hva_range_41484 kvm_unmap_hva_range 3-2 41484 NULL
35792 @@ -118791,11 +126698,11 @@ index 0000000..386792a
35793 +dm_get_reserved_rq_based_ios_41529 dm_get_reserved_rq_based_ios 0 41529 NULL
35794 +tx_tx_frame_checksum_read_41553 tx_tx_frame_checksum_read 3 41553 NULL
35795 +ath6kl_endpoint_stats_read_41554 ath6kl_endpoint_stats_read 3 41554 NULL
35796 -+nr_status_frames_41559 nr_status_frames 0-1 41559 NULL nohasharray
35797 -+si476x_radio_fops_read_41559 si476x_radio_fops_read 3 41559 &nr_status_frames_41559
35798 ++si476x_radio_fops_read_41559 si476x_radio_fops_read 3 41559 NULL nohasharray
35799 ++nr_status_frames_41559 nr_status_frames 0-1 41559 &si476x_radio_fops_read_41559
35800 +rng_dev_read_41581 rng_dev_read 3 41581 NULL
35801 ++nfsd_readv_41585 nfsd_readv 4 41585 NULL
35802 +batadv_tvlv_container_ogm_append_41588 batadv_tvlv_container_ogm_append 4 41588 NULL
35803 -+vga_io_r_41609 vga_io_r 0 41609 NULL
35804 +tcp_hdrlen_41610 tcp_hdrlen 0 41610 NULL
35805 +usb_endpoint_maxp_41613 usb_endpoint_maxp 0 41613 NULL nohasharray
35806 +lbs_bcnmiss_write_41613 lbs_bcnmiss_write 3 41613 &usb_endpoint_maxp_41613
35807 @@ -118805,20 +126712,19 @@ index 0000000..386792a
35808 +rx_rx_pre_complt_read_41653 rx_rx_pre_complt_read 3 41653 NULL
35809 +get_std_timing_41654 get_std_timing 0 41654 NULL
35810 +ieee80211_if_fmt_bssid_41677 ieee80211_if_fmt_bssid 3 41677 NULL
35811 -+fill_pcm_stream_name_41685 fill_pcm_stream_name 2 41685 NULL
35812 +lov_unpackmd_41701 lov_unpackmd 4 41701 NULL
35813 +fillonedir_41746 fillonedir 3 41746 NULL
35814 +iwl_dbgfs_bt_notif_read_41794 iwl_dbgfs_bt_notif_read 3 41794 NULL
35815 +hsi_alloc_controller_41802 hsi_alloc_controller 1 41802 NULL
35816 +rtw_android_get_macaddr_41812 rtw_android_get_macaddr 0 41812 NULL
35817 +sco_send_frame_41815 sco_send_frame 3 41815 NULL
35818 ++copy_page_to_iter_bvec_41830 copy_page_to_iter_bvec 0-3 41830 NULL
35819 +ixgbe_dbg_netdev_ops_read_41839 ixgbe_dbg_netdev_ops_read 3 41839 NULL
35820 +do_ip_setsockopt_41852 do_ip_setsockopt 5 41852 NULL
35821 +keyctl_instantiate_key_41855 keyctl_instantiate_key 3 41855 NULL
35822 +pci_map_single_41869 pci_map_single 0 41869 NULL
35823 -+v_APCI3120_InterruptDmaMoveBlock16bit_41914 v_APCI3120_InterruptDmaMoveBlock16bit 4 41914 NULL
35824 +get_fdb_entries_41916 get_fdb_entries 3 41916 NULL
35825 -+ext4_da_write_inline_data_begin_41935 ext4_da_write_inline_data_begin 3-4 41935 NULL
35826 ++ext4_da_write_inline_data_begin_41935 ext4_da_write_inline_data_begin 4-3 41935 NULL
35827 +sci_rxfill_41945 sci_rxfill 0 41945 NULL
35828 +read_gssp_41947 read_gssp 3 41947 NULL
35829 +ocfs2_xattr_bucket_get_name_value_41949 ocfs2_xattr_bucket_get_name_value 0 41949 NULL
35830 @@ -118847,7 +126753,8 @@ index 0000000..386792a
35831 +oprofilefs_str_to_user_42182 oprofilefs_str_to_user 3 42182 NULL
35832 +write_file_beacon_42185 write_file_beacon 3 42185 NULL
35833 +get_znodes_to_commit_42201 get_znodes_to_commit 0 42201 NULL
35834 -+pla_ocp_read_42235 pla_ocp_read 3 42235 NULL
35835 ++pla_ocp_read_42235 pla_ocp_read 3 42235 NULL nohasharray
35836 ++blockdev_direct_IO_42235 blockdev_direct_IO 5 42235 &pla_ocp_read_42235
35837 +rx_defrag_need_decrypt_read_42253 rx_defrag_need_decrypt_read 3 42253 NULL
35838 +find_last_bit_42260 find_last_bit 0 42260 NULL
35839 +__pcpu_size_to_slot_42271 __pcpu_size_to_slot 0 42271 NULL
35840 @@ -118859,7 +126766,7 @@ index 0000000..386792a
35841 +ulong_read_file_42304 ulong_read_file 3 42304 &sctp_setsockopt_del_key_42304
35842 +xfs_vm_readpages_42308 xfs_vm_readpages 4 42308 NULL
35843 +hysdn_conf_read_42324 hysdn_conf_read 3 42324 NULL
35844 -+tcp_sync_mss_42330 tcp_sync_mss 2-0 42330 NULL
35845 ++tcp_sync_mss_42330 tcp_sync_mss 0-2 42330 NULL
35846 +ide_raw_taskfile_42355 ide_raw_taskfile 4 42355 NULL
35847 +drbd_md_last_sector_42378 drbd_md_last_sector 0 42378 NULL
35848 +il_dbgfs_disable_ht40_read_42386 il_dbgfs_disable_ht40_read 3 42386 NULL
35849 @@ -118894,12 +126801,10 @@ index 0000000..386792a
35850 +dvb_demux_ioctl_42733 dvb_demux_ioctl 2 42733 NULL
35851 +set_aoe_iflist_42737 set_aoe_iflist 2 42737 NULL
35852 +ax25_setsockopt_42740 ax25_setsockopt 5 42740 NULL
35853 -+dpm_sysfs_add_42756 dpm_sysfs_add 0 42756 NULL
35854 +x25_recvmsg_42777 x25_recvmsg 4 42777 NULL
35855 +snd_midi_event_decode_42780 snd_midi_event_decode 0 42780 NULL
35856 +cryptd_hash_setkey_42781 cryptd_hash_setkey 3 42781 NULL nohasharray
35857 +isku_sysfs_read_info_42781 isku_sysfs_read_info 6 42781 &cryptd_hash_setkey_42781
35858 -+elfcorehdr_read_notes_42786 elfcorehdr_read_notes 2 42786 NULL
35859 +koneplus_sysfs_read_42792 koneplus_sysfs_read 6 42792 NULL
35860 +ntfs_attr_extend_allocation_42796 ntfs_attr_extend_allocation 0 42796 NULL
35861 +fw_device_op_compat_ioctl_42804 fw_device_op_compat_ioctl 2 42804 NULL
35862 @@ -118914,8 +126819,6 @@ index 0000000..386792a
35863 +sta_last_rx_rate_read_42909 sta_last_rx_rate_read 3 42909 NULL
35864 +sctp_getsockopt_maxburst_42941 sctp_getsockopt_maxburst 2 42941 NULL
35865 +vx_reset_chk_42946 vx_reset_chk 0 42946 NULL
35866 -+blkdev_direct_IO_42962 blkdev_direct_IO 4 42962 NULL
35867 -+ntb_setup_snb_msix_42971 ntb_setup_snb_msix 2-0 42971 NULL
35868 +compat_udpv6_setsockopt_42981 compat_udpv6_setsockopt 5 42981 NULL
35869 +nfs_idmap_get_desc_42990 nfs_idmap_get_desc 4-2 42990 NULL nohasharray
35870 +rtw_os_xmit_resource_alloc_42990 rtw_os_xmit_resource_alloc 3 42990 &nfs_idmap_get_desc_42990
35871 @@ -118924,10 +126827,8 @@ index 0000000..386792a
35872 +nouveau_gpuobj_create__43072 nouveau_gpuobj_create_ 9 43072 NULL
35873 +nfs_map_group_to_gid_43082 nfs_map_group_to_gid 3 43082 NULL
35874 +_xfer_secondary_pool_43089 _xfer_secondary_pool 2 43089 NULL
35875 -+sysfs_create_file_ns_43103 sysfs_create_file_ns 0 43103 NULL
35876 +ieee80211_if_fmt_drop_unencrypted_43107 ieee80211_if_fmt_drop_unencrypted 3 43107 NULL
35877 +calculate_node_totalpages_43118 calculate_node_totalpages 2-3 43118 NULL
35878 -+e1000_request_msix_43134 e1000_request_msix 0 43134 NULL
35879 +read_file_dfs_43145 read_file_dfs 3 43145 NULL
35880 +cfs_cpt_table_alloc_43159 cfs_cpt_table_alloc 1 43159 NULL
35881 +usb_string_sub_43164 usb_string_sub 0 43164 NULL
35882 @@ -118938,19 +126839,18 @@ index 0000000..386792a
35883 +iso_callback_43208 iso_callback 3 43208 NULL
35884 +ath10k_p2p_calc_noa_ie_len_43209 ath10k_p2p_calc_noa_ie_len 0 43209 NULL
35885 +f2fs_acl_from_disk_43210 f2fs_acl_from_disk 2 43210 NULL
35886 -+atomic_long_add_return_43217 atomic_long_add_return 1-0 43217 NULL
35887 ++atomic_long_add_return_43217 atomic_long_add_return 1 43217 NULL
35888 ++gfs2_direct_IO_43220 gfs2_direct_IO 4 43220 NULL
35889 +batadv_tt_tvlv_unicast_handler_v1_43239 batadv_tt_tvlv_unicast_handler_v1 5 43239 NULL
35890 +vmemmap_alloc_block_43245 vmemmap_alloc_block 1 43245 NULL
35891 +ide_end_rq_43269 ide_end_rq 4 43269 NULL
35892 -+nilfs_direct_IO_43271 nilfs_direct_IO 4 43271 NULL
35893 +evtchn_write_43278 evtchn_write 3 43278 NULL
35894 +filemap_write_and_wait_range_43279 filemap_write_and_wait_range 0 43279 NULL
35895 +mpage_alloc_43299 mpage_alloc 3 43299 NULL
35896 -+mmu_set_spte_43327 mmu_set_spte 6-7 43327 NULL
35897 ++mmu_set_spte_43327 mmu_set_spte 7-6 43327 NULL
35898 +__ext4_get_inode_loc_43332 __ext4_get_inode_loc 0 43332 NULL
35899 +xenfb_write_43412 xenfb_write 3 43412 NULL
35900 -+__alloc_bootmem_low_43423 __alloc_bootmem_low 1 43423 NULL nohasharray
35901 -+msi_capability_init_43423 msi_capability_init 0 43423 &__alloc_bootmem_low_43423
35902 ++__alloc_bootmem_low_43423 __alloc_bootmem_low 1 43423 NULL
35903 +usb_alloc_urb_43436 usb_alloc_urb 1 43436 NULL
35904 +ath6kl_wmi_roam_tbl_event_rx_43440 ath6kl_wmi_roam_tbl_event_rx 3 43440 NULL
35905 +usb_string_43443 usb_string 0 43443 NULL nohasharray
35906 @@ -118960,15 +126860,14 @@ index 0000000..386792a
35907 +nvme_trans_device_id_page_43466 nvme_trans_device_id_page 4 43466 NULL
35908 +tx_tx_data_prepared_read_43497 tx_tx_data_prepared_read 3 43497 NULL
35909 +ieee80211_if_fmt_dot11MeshHWMPnetDiameterTraversalTime_43505 ieee80211_if_fmt_dot11MeshHWMPnetDiameterTraversalTime 3 43505 NULL
35910 ++ll_direct_IO_26_43530 ll_direct_IO_26 4 43530 NULL
35911 +dvb_ca_en50221_io_write_43533 dvb_ca_en50221_io_write 3 43533 NULL
35912 +read_events_43534 read_events 3 43534 NULL
35913 +cachefiles_daemon_write_43535 cachefiles_daemon_write 3 43535 NULL
35914 +tx_frag_failed_read_43540 tx_frag_failed_read 3 43540 NULL
35915 +rpc_malloc_43573 rpc_malloc 2 43573 NULL
35916 -+handle_frequent_errors_43599 handle_frequent_errors 4 43599 NULL
35917 +lpfc_idiag_drbacc_read_reg_43606 lpfc_idiag_drbacc_read_reg 0-3 43606 NULL
35918 +proc_read_43614 proc_read 3 43614 NULL
35919 -+disable_dma_on_even_43618 disable_dma_on_even 0 43618 NULL
35920 +alloc_thread_groups_43625 alloc_thread_groups 2 43625 NULL
35921 +random_write_43656 random_write 3 43656 NULL
35922 +bio_integrity_tag_43658 bio_integrity_tag 3 43658 NULL
35923 @@ -118976,15 +126875,15 @@ index 0000000..386792a
35924 +write_file_tx99_power_43670 write_file_tx99_power 3 43670 NULL
35925 +dmam_declare_coherent_memory_43679 dmam_declare_coherent_memory 4 43679 NULL
35926 +max77693_bulk_write_43698 max77693_bulk_write 2-3 43698 NULL
35927 ++nvkm_connector_create__43711 nvkm_connector_create_ 6 43711 NULL
35928 +drbd_md_first_sector_43729 drbd_md_first_sector 0 43729 NULL
35929 +snd_rme32_playback_copy_43732 snd_rme32_playback_copy 5 43732 NULL
35930 +fuse_conn_congestion_threshold_write_43736 fuse_conn_congestion_threshold_write 3 43736 NULL
35931 +gigaset_initcs_43753 gigaset_initcs 2 43753 NULL
35932 +sctp_setsockopt_active_key_43755 sctp_setsockopt_active_key 3 43755 NULL
35933 -+generic_file_direct_write_43770 generic_file_direct_write 0 43770 NULL
35934 +ocfs2_xattr_get_value_outside_43787 ocfs2_xattr_get_value_outside 0 43787 NULL nohasharray
35935 +byte_pos_43787 byte_pos 0 43787 &ocfs2_xattr_get_value_outside_43787
35936 -+btrfs_copy_from_user_43806 btrfs_copy_from_user 3-1-0 43806 NULL
35937 ++btrfs_copy_from_user_43806 btrfs_copy_from_user 0-3-1 43806 NULL
35938 +ieee80211_if_fmt_element_ttl_43825 ieee80211_if_fmt_element_ttl 3 43825 NULL
35939 +ieee80211_alloc_hw_43829 ieee80211_alloc_hw 1 43829 NULL
35940 +read_flush_43851 read_flush 3 43851 NULL
35941 @@ -118995,10 +126894,9 @@ index 0000000..386792a
35942 +__get_required_blob_size_43980 __get_required_blob_size 0-3-2 43980 NULL
35943 +nla_reserve_43984 nla_reserve 3 43984 NULL
35944 +__clkdev_alloc_43990 __clkdev_alloc 1 43990 NULL
35945 -+scsi_command_size_43992 scsi_command_size 0 43992 NULL nohasharray
35946 -+bcm_recvmsg_43992 bcm_recvmsg 4 43992 &scsi_command_size_43992 nohasharray
35947 -+kvm_read_guest_virt_43992 kvm_read_guest_virt 4-2 43992 &bcm_recvmsg_43992
35948 -+ulist_add_43994 ulist_add 0 43994 NULL
35949 ++kvm_read_guest_virt_43992 kvm_read_guest_virt 4-2 43992 NULL nohasharray
35950 ++bcm_recvmsg_43992 bcm_recvmsg 4 43992 &kvm_read_guest_virt_43992 nohasharray
35951 ++scsi_command_size_43992 scsi_command_size 0 43992 &bcm_recvmsg_43992
35952 +emit_flags_44006 emit_flags 4-3 44006 NULL
35953 +write_flush_procfs_44011 write_flush_procfs 3 44011 NULL
35954 +fru_strlen_44046 fru_strlen 0 44046 NULL
35955 @@ -119007,19 +126905,20 @@ index 0000000..386792a
35956 +pci_msix_vec_count_44093 pci_msix_vec_count 0 44093 NULL
35957 +xlog_recover_add_to_cont_trans_44102 xlog_recover_add_to_cont_trans 4 44102 NULL
35958 +skb_frag_dma_map_44112 skb_frag_dma_map 0 44112 NULL
35959 -+tracing_set_trace_read_44122 tracing_set_trace_read 3 44122 NULL nohasharray
35960 -+file_remove_suid_44122 file_remove_suid 0 44122 &tracing_set_trace_read_44122
35961 ++nouveau_clock_create__44116 nouveau_clock_create_ 6 44116 NULL
35962 ++tracing_set_trace_read_44122 tracing_set_trace_read 3 44122 NULL
35963 +SyS_process_vm_writev_44129 SyS_process_vm_writev 3-5 44129 NULL
35964 ++tracing_resize_saved_cmdlines_44140 tracing_resize_saved_cmdlines 1 44140 NULL
35965 +ttm_get_pages_44142 ttm_get_pages 2 44142 NULL
35966 +scsi_get_resid_44147 scsi_get_resid 0 44147 NULL
35967 +ubifs_find_dirty_idx_leb_44169 ubifs_find_dirty_idx_leb 0 44169 NULL
35968 +ocfs2_xattr_bucket_find_44174 ocfs2_xattr_bucket_find 0 44174 NULL
35969 +SYSC_set_mempolicy_44176 SYSC_set_mempolicy 3 44176 NULL
35970 +handle_eviocgbit_44193 handle_eviocgbit 3 44193 NULL
35971 ++btrfs_item_offset_nr_44220 btrfs_item_offset_nr 0 44220 NULL
35972 +srp_alloc_iu_44227 srp_alloc_iu 2 44227 NULL
35973 +scsi_track_queue_full_44239 scsi_track_queue_full 2 44239 NULL
35974 +sigma_action_write_regmap_44240 sigma_action_write_regmap 3 44240 NULL
35975 -+device_create_file_44285 device_create_file 0 44285 NULL
35976 +ath6kl_keepalive_read_44303 ath6kl_keepalive_read 3 44303 NULL
35977 +bitmap_scnprintf_44318 bitmap_scnprintf 0-2 44318 NULL
35978 +dispatch_proc_write_44320 dispatch_proc_write 3 44320 NULL
35979 @@ -119030,7 +126929,6 @@ index 0000000..386792a
35980 +rts_threshold_read_44384 rts_threshold_read 3 44384 NULL
35981 +mtip_hw_read_flags_44396 mtip_hw_read_flags 3 44396 NULL
35982 +aoedev_flush_44398 aoedev_flush 2 44398 NULL
35983 -+strlcpy_44400 strlcpy 3 44400 NULL
35984 +drm_buffer_alloc_44405 drm_buffer_alloc 2 44405 NULL
35985 +osst_do_scsi_44410 osst_do_scsi 4 44410 NULL
35986 +ieee80211_if_read_rc_rateidx_mcs_mask_5ghz_44423 ieee80211_if_read_rc_rateidx_mcs_mask_5ghz 3 44423 NULL
35987 @@ -119046,22 +126944,20 @@ index 0000000..386792a
35988 +SyS_io_getevents_44519 SyS_io_getevents 3 44519 NULL
35989 +ieee80211_rx_mgmt_assoc_resp_44525 ieee80211_rx_mgmt_assoc_resp 3 44525 NULL
35990 +comm_write_44537 comm_write 3 44537 NULL
35991 -+snd_pcm_drop_44542 snd_pcm_drop 0 44542 NULL
35992 +dgrp_config_proc_write_44571 dgrp_config_proc_write 3 44571 NULL
35993 -+btrfs_set_extent_delalloc_44587 btrfs_set_extent_delalloc 0 44587 NULL
35994 +nouveau_perfmon_create__44602 nouveau_perfmon_create_ 4 44602 NULL
35995 ++xpcs_mmd_write_44633 xpcs_mmd_write 3 44633 NULL
35996 +alloc_ctrl_packet_44667 alloc_ctrl_packet 1 44667 NULL
35997 +mpi_resize_44674 mpi_resize 2 44674 NULL
35998 -+sysfs_create_link_44685 sysfs_create_link 0 44685 NULL
35999 +ts_read_44687 ts_read 3 44687 NULL
36000 +lov_emerg_alloc_44698 lov_emerg_alloc 1 44698 NULL
36001 +C_SYSC_select_44701 C_SYSC_select 1 44701 NULL
36002 +__generic_block_fiemap_44713 __generic_block_fiemap 4 44713 NULL nohasharray
36003 +xfer_to_user_44713 xfer_to_user 3 44713 &__generic_block_fiemap_44713
36004 ++nft_hash_tbl_size_44724 nft_hash_tbl_size 0 44724 NULL
36005 +_zd_iowrite32v_locked_44725 _zd_iowrite32v_locked 3 44725 NULL
36006 +clusterip_proc_write_44729 clusterip_proc_write 3 44729 NULL
36007 +fib_count_nexthops_44730 fib_count_nexthops 0 44730 NULL
36008 -+efx_wanted_parallelism_44732 efx_wanted_parallelism 0 44732 NULL
36009 +key_tx_rx_count_read_44742 key_tx_rx_count_read 3 44742 NULL
36010 +bch_bio_max_sectors_44755 bch_bio_max_sectors 0 44755 NULL
36011 +tnode_new_44757 tnode_new 3 44757 NULL nohasharray
36012 @@ -119088,7 +126984,6 @@ index 0000000..386792a
36013 +bytepos_delta_45017 bytepos_delta 0 45017 NULL
36014 +ptrace_writedata_45021 ptrace_writedata 4 45021 NULL
36015 +dm_kvzalloc_45025 dm_kvzalloc 1 45025 NULL
36016 -+sysfs_do_create_link_sd_45057 sysfs_do_create_link_sd 0 45057 NULL
36017 +sel_write_user_45060 sel_write_user 3 45060 NULL
36018 +snd_mixart_BA0_read_45069 snd_mixart_BA0_read 5 45069 NULL
36019 +snd_card_new_45104 snd_card_new 5 45104 NULL
36020 @@ -119121,9 +127016,9 @@ index 0000000..386792a
36021 +ieee80211_if_fmt_dot11MeshHWMProotInterval_45421 ieee80211_if_fmt_dot11MeshHWMProotInterval 3 45421 NULL
36022 +ll_iocontrol_register_45430 ll_iocontrol_register 2 45430 NULL
36023 +tty_buffer_alloc_45437 tty_buffer_alloc 2 45437 NULL
36024 ++blkdev_direct_IO_45440 blkdev_direct_IO 4 45440 NULL
36025 +rds_ib_set_wr_signal_state_45463 rds_ib_set_wr_signal_state 0 45463 NULL
36026 +tracing_read_dyn_info_45468 tracing_read_dyn_info 3 45468 NULL
36027 -+snd_pcm_hwsync_45479 snd_pcm_hwsync 0 45479 NULL
36028 +rds_message_copy_from_user_45510 rds_message_copy_from_user 3 45510 NULL
36029 +copy_macs_45534 copy_macs 4 45534 NULL
36030 +nla_attr_size_45545 nla_attr_size 0-1 45545 NULL
36031 @@ -119154,7 +127049,6 @@ index 0000000..386792a
36032 +ll_max_readahead_mb_seq_write_45815 ll_max_readahead_mb_seq_write 3 45815 NULL
36033 +memcg_update_cache_size_45828 memcg_update_cache_size 2 45828 NULL
36034 +ipv6_recv_rxpmtu_45830 ipv6_recv_rxpmtu 3 45830 NULL
36035 -+insert_state_45848 insert_state 0 45848 NULL
36036 +x509_process_extension_45854 x509_process_extension 5 45854 NULL
36037 +efx_tx_queue_insert_45859 efx_tx_queue_insert 2 45859 NULL
36038 +isdn_write_45863 isdn_write 3 45863 NULL
36039 @@ -119165,17 +127059,15 @@ index 0000000..386792a
36040 +dbgfs_frame_45917 dbgfs_frame 3 45917 NULL
36041 +btree_keys_cachelines_45928 btree_keys_cachelines 0 45928 NULL
36042 +alloc_mr_45935 alloc_mr 1 45935 NULL
36043 -+copy_to_45969 copy_to 3 45969 NULL
36044 +rb_simple_read_45972 rb_simple_read 3 45972 NULL
36045 +ioat2_dca_count_dca_slots_45984 ioat2_dca_count_dca_slots 0 45984 NULL
36046 -+kobject_init_and_add_46003 kobject_init_and_add 0 46003 NULL
36047 +sierra_setup_urb_46029 sierra_setup_urb 5 46029 NULL
36048 -+get_free_entries_46030 get_free_entries 1 46030 NULL nohasharray
36049 -+fnic_reset_stats_read_46030 fnic_reset_stats_read 3 46030 &get_free_entries_46030
36050 ++fnic_reset_stats_read_46030 fnic_reset_stats_read 3 46030 NULL nohasharray
36051 ++get_free_entries_46030 get_free_entries 1 46030 &fnic_reset_stats_read_46030
36052 +__access_remote_vm_46031 __access_remote_vm 0 46031 NULL
36053 +snd_emu10k1x_ptr_read_46049 snd_emu10k1x_ptr_read 0 46049 NULL
36054 -+__ocfs2_move_extent_46060 __ocfs2_move_extent 3-4 46060 NULL nohasharray
36055 -+dma_tx_errors_read_46060 dma_tx_errors_read 3 46060 &__ocfs2_move_extent_46060
36056 ++dma_tx_errors_read_46060 dma_tx_errors_read 3 46060 NULL nohasharray
36057 ++__ocfs2_move_extent_46060 __ocfs2_move_extent 3-4 46060 &dma_tx_errors_read_46060
36058 +sel_commit_bools_write_46077 sel_commit_bools_write 3 46077 NULL
36059 +memcg_update_array_size_46111 memcg_update_array_size 1 46111 NULL nohasharray
36060 +il3945_ucode_general_stats_read_46111 il3945_ucode_general_stats_read 3 46111 &memcg_update_array_size_46111
36061 @@ -119200,7 +127092,6 @@ index 0000000..386792a
36062 +__hwahc_dev_set_key_46328 __hwahc_dev_set_key 5 46328 &compat_SyS_readv_46328
36063 +iwl_dbgfs_chain_noise_read_46355 iwl_dbgfs_chain_noise_read 3 46355 NULL
36064 +smk_write_direct_46363 smk_write_direct 3 46363 NULL
36065 -+fuse_file_aio_write_46399 fuse_file_aio_write 4 46399 NULL
36066 +crypto_ablkcipher_reqsize_46411 crypto_ablkcipher_reqsize 0 46411 NULL
36067 +ttm_page_pool_get_pages_46431 ttm_page_pool_get_pages 0-5 46431 NULL
36068 +cfs_power2_roundup_46433 cfs_power2_roundup 0-1 46433 NULL
36069 @@ -119210,17 +127101,17 @@ index 0000000..386792a
36070 +fill_in_write_vector_46498 fill_in_write_vector 0 46498 NULL
36071 +pin_code_reply_46510 pin_code_reply 4 46510 NULL
36072 +mthca_alloc_cq_buf_46512 mthca_alloc_cq_buf 3 46512 NULL
36073 -+nouveau_drm_ioctl_46514 nouveau_drm_ioctl 2 46514 NULL nohasharray
36074 -+kmsg_read_46514 kmsg_read 3 46514 &nouveau_drm_ioctl_46514
36075 ++kmsg_read_46514 kmsg_read 3 46514 NULL nohasharray
36076 ++nouveau_drm_ioctl_46514 nouveau_drm_ioctl 2 46514 &kmsg_read_46514
36077 +nl80211_send_rx_assoc_46538 nl80211_send_rx_assoc 4 46538 NULL
36078 ++__btrfs_free_extent_46573 __btrfs_free_extent 7 46573 NULL
36079 +dn_current_mss_46574 dn_current_mss 0 46574 NULL
36080 +serverworks_create_gatt_pages_46582 serverworks_create_gatt_pages 1 46582 NULL
36081 +snd_compr_write_data_46592 snd_compr_write_data 3 46592 NULL
36082 -+il3945_stats_flag_46606 il3945_stats_flag 0-3 46606 NULL
36083 ++il3945_stats_flag_46606 il3945_stats_flag 3-0 46606 NULL
36084 +vscnprintf_46617 vscnprintf 0-2 46617 NULL
36085 +__kfifo_out_r_46623 __kfifo_out_r 0-3 46623 NULL
36086 +request_key_async_with_auxdata_46624 request_key_async_with_auxdata 4 46624 NULL
36087 -+pci_enable_device_46642 pci_enable_device 0 46642 NULL
36088 +vfs_getxattr_alloc_46649 vfs_getxattr_alloc 0 46649 NULL
36089 +e1000_tx_map_46672 e1000_tx_map 4 46672 NULL
36090 +l2cap_create_le_flowctl_pdu_46682 l2cap_create_le_flowctl_pdu 3 46682 NULL
36091 @@ -119232,7 +127123,6 @@ index 0000000..386792a
36092 +read_file_tx99_46741 read_file_tx99 3 46741 NULL
36093 +hest_ghes_dev_register_46766 hest_ghes_dev_register 1 46766 NULL
36094 +int_hw_irq_en_46776 int_hw_irq_en 3 46776 NULL
36095 -+_xfs_buf_get_pages_46811 _xfs_buf_get_pages 2 46811 NULL
36096 +xfs_iroot_realloc_46826 xfs_iroot_realloc 2 46826 NULL
36097 +shmem_pwrite_fast_46842 shmem_pwrite_fast 3 46842 NULL
36098 +spi_async_46857 spi_async 0 46857 NULL
36099 @@ -119243,21 +127133,19 @@ index 0000000..386792a
36100 +ixgbe_dbg_reg_ops_write_46895 ixgbe_dbg_reg_ops_write 3 46895 NULL
36101 +sk_mem_pages_46896 sk_mem_pages 0-1 46896 NULL
36102 +ieee80211_if_fmt_power_mode_46906 ieee80211_if_fmt_power_mode 3 46906 NULL
36103 -+wlcore_alloc_hw_46917 wlcore_alloc_hw 3-1 46917 NULL
36104 ++wlcore_alloc_hw_46917 wlcore_alloc_hw 1-3 46917 NULL
36105 +fb_write_46924 fb_write 3 46924 NULL
36106 +__sctp_setsockopt_connectx_46949 __sctp_setsockopt_connectx 3 46949 NULL
36107 +qla4xxx_post_aen_work_46953 qla4xxx_post_aen_work 3 46953 NULL
36108 +SYSC_poll_46965 SYSC_poll 2 46965 NULL
36109 +crypto_tfm_alg_alignmask_46971 crypto_tfm_alg_alignmask 0 46971 NULL
36110 +mgmt_pending_add_46976 mgmt_pending_add 5 46976 NULL
36111 -+strlcat_46985 strlcat 3 46985 NULL
36112 +bitmap_file_clear_bit_46990 bitmap_file_clear_bit 2 46990 NULL
36113 +sel_write_bool_46996 sel_write_bool 3 46996 NULL
36114 +blk_rq_map_kern_47004 blk_rq_map_kern 4 47004 NULL
36115 +cx231xx_init_bulk_47024 cx231xx_init_bulk 3-2-4 47024 NULL
36116 +fs_path_len_47060 fs_path_len 0 47060 NULL
36117 +event_trigger_regex_write_47067 event_trigger_regex_write 3 47067 NULL
36118 -+ext4_xattr_list_entries_47070 ext4_xattr_list_entries 0 47070 NULL
36119 +pipeline_dec_packet_in_read_47076 pipeline_dec_packet_in_read 3 47076 NULL
36120 +scsi_deactivate_tcq_47086 scsi_deactivate_tcq 2 47086 NULL
36121 +iwl_dump_nic_event_log_47089 iwl_dump_nic_event_log 0 47089 NULL
36122 @@ -119268,13 +127156,11 @@ index 0000000..386792a
36123 +ses_recv_diag_47143 ses_recv_diag 4 47143 &acpi_ut_initialize_buffer_47143
36124 +mxms_headerlen_47161 mxms_headerlen 0 47161 NULL
36125 +rs_sta_dbgfs_rate_scale_data_read_47165 rs_sta_dbgfs_rate_scale_data_read 3 47165 NULL
36126 -+rts51x_ms_rw_47171 rts51x_ms_rw 3-4 47171 NULL
36127 +options_write_47243 options_write 3 47243 NULL
36128 +portcntrs_1_read_47253 portcntrs_1_read 3 47253 NULL
36129 +ablkcipher_next_slow_47274 ablkcipher_next_slow 4-3 47274 NULL
36130 +gfs2_readpages_47285 gfs2_readpages 4 47285 NULL
36131 +vsnprintf_47291 vsnprintf 0 47291 NULL
36132 -+SYSC_semop_47292 SYSC_semop 3 47292 NULL
36133 +tx_internal_desc_overflow_read_47300 tx_internal_desc_overflow_read 3 47300 NULL
36134 +nouveau_fb_create__47316 nouveau_fb_create_ 4 47316 NULL
36135 +ieee80211_if_read_dot11MeshHoldingTimeout_47356 ieee80211_if_read_dot11MeshHoldingTimeout 3 47356 NULL
36136 @@ -119282,8 +127168,8 @@ index 0000000..386792a
36137 +kvm_arch_create_memslot_47364 kvm_arch_create_memslot 3 47364 NULL nohasharray
36138 +__output_copy_user_47364 __output_copy_user 3 47364 &kvm_arch_create_memslot_47364
36139 +__bio_map_kern_47379 __bio_map_kern 3 47379 NULL
36140 -+nv_rd32_47390 nv_rd32 0 47390 NULL nohasharray
36141 -+trace_options_core_read_47390 trace_options_core_read 3 47390 &nv_rd32_47390
36142 ++trace_options_core_read_47390 trace_options_core_read 3 47390 NULL nohasharray
36143 ++nv_rd32_47390 nv_rd32 0 47390 &trace_options_core_read_47390
36144 +nametbl_list_47391 nametbl_list 2 47391 NULL
36145 +dgrp_net_write_47392 dgrp_net_write 3 47392 NULL
36146 +pfkey_sendmsg_47394 pfkey_sendmsg 4 47394 NULL
36147 @@ -119292,20 +127178,19 @@ index 0000000..386792a
36148 +crypto_ablkcipher_alignmask_47410 crypto_ablkcipher_alignmask 0 47410 NULL
36149 +lbs_wrrf_write_47418 lbs_wrrf_write 3 47418 NULL
36150 +C_SYSC_set_mempolicy_47466 C_SYSC_set_mempolicy 3 47466 NULL
36151 ++lprocfs_fid_write_common_47471 lprocfs_fid_write_common 2 47471 NULL
36152 +nvme_trans_send_fw_cmd_47479 nvme_trans_send_fw_cmd 4 47479 NULL
36153 +newpart_47485 newpart 6-4 47485 NULL
36154 +mcp23s17_read_regs_47491 mcp23s17_read_regs 4 47491 NULL
36155 +core_sys_select_47494 core_sys_select 1 47494 NULL
36156 +as3722_block_write_47503 as3722_block_write 2-3 47503 NULL
36157 -+alloc_arraycache_47505 alloc_arraycache 2 47505 NULL
36158 +unlink_simple_47506 unlink_simple 3 47506 NULL
36159 +pstore_decompress_47510 pstore_decompress 0 47510 NULL
36160 ++ec_i2c_count_response_47518 ec_i2c_count_response 0 47518 NULL
36161 +__proc_lnet_portal_rotor_47529 __proc_lnet_portal_rotor 5 47529 NULL
36162 -+snd_pcm_resume_47530 snd_pcm_resume 0 47530 NULL
36163 +process_vm_rw_47533 process_vm_rw 3-5 47533 NULL nohasharray
36164 +vscnprintf_47533 vscnprintf 0-2 47533 &process_vm_rw_47533
36165 +ieee80211_if_fmt_min_discovery_timeout_47539 ieee80211_if_fmt_min_discovery_timeout 3 47539 NULL
36166 -+rtw_cfg80211_set_assoc_resp_wpsp2pie_47558 rtw_cfg80211_set_assoc_resp_wpsp2pie 3 47558 NULL
36167 +read_ldt_47570 read_ldt 2 47570 NULL
36168 +isku_sysfs_read_last_set_47572 isku_sysfs_read_last_set 6 47572 NULL
36169 +btrfs_stack_header_bytenr_47589 btrfs_stack_header_bytenr 0 47589 NULL
36170 @@ -119315,9 +127200,7 @@ index 0000000..386792a
36171 +twl4030_clear_set_47624 twl4030_clear_set 4 47624 NULL
36172 +ccp_sha_setkey_47633 ccp_sha_setkey 3 47633 NULL
36173 +get_size_47644 get_size 1-2 47644 NULL
36174 -+snd_pcm_info_47699 snd_pcm_info 0 47699 NULL
36175 -+packet_recvmsg_47700 packet_recvmsg 4 47700 NULL nohasharray
36176 -+ipath_format_hwmsg_47700 ipath_format_hwmsg 2 47700 &packet_recvmsg_47700
36177 ++packet_recvmsg_47700 packet_recvmsg 4 47700 NULL
36178 +save_microcode_47717 save_microcode 3 47717 NULL
36179 +bits_to_user_47733 bits_to_user 2-3 47733 NULL
36180 +carl9170_debugfs_read_47738 carl9170_debugfs_read 3 47738 NULL
36181 @@ -119338,8 +127221,6 @@ index 0000000..386792a
36182 +cfs_percpt_alloc_47918 cfs_percpt_alloc 2 47918 NULL
36183 +comedi_write_47926 comedi_write 3 47926 NULL
36184 +nvme_trans_get_blk_desc_len_47946 nvme_trans_get_blk_desc_len 0-2 47946 NULL
36185 -+arch_setup_msi_irq_47959 arch_setup_msi_irq 0 47959 NULL
36186 -+gether_get_ifname_47972 gether_get_ifname 3 47972 NULL
36187 +mempool_resize_47983 mempool_resize 2 47983 NULL nohasharray
36188 +iwl_dbgfs_ucode_tracing_read_47983 iwl_dbgfs_ucode_tracing_read 3 47983 &mempool_resize_47983
36189 +dbg_port_buf_47990 dbg_port_buf 2 47990 NULL
36190 @@ -119368,7 +127249,6 @@ index 0000000..386792a
36191 +cfg80211_process_deauth_48200 cfg80211_process_deauth 3 48200 NULL
36192 +ext4_index_trans_blocks_48205 ext4_index_trans_blocks 0-2 48205 NULL
36193 +snd_seq_dump_var_event_48209 snd_seq_dump_var_event 0 48209 NULL
36194 -+ll_direct_IO_26_48216 ll_direct_IO_26 4 48216 NULL
36195 +uv_blade_nr_possible_cpus_48226 uv_blade_nr_possible_cpus 0 48226 NULL
36196 +nilfs_readpages_48229 nilfs_readpages 4 48229 NULL
36197 +read_file_recv_48232 read_file_recv 3 48232 NULL
36198 @@ -119387,13 +127267,12 @@ index 0000000..386792a
36199 +lbs_debugfs_write_48413 lbs_debugfs_write 3 48413 NULL
36200 +uhid_event_from_user_48417 uhid_event_from_user 2 48417 NULL
36201 +div64_u64_rem_48418 div64_u64_rem 0-1-2 48418 NULL
36202 -+snd_power_wait_48422 snd_power_wait 0 48422 NULL
36203 +pwr_tx_without_ps_read_48423 pwr_tx_without_ps_read 3 48423 NULL
36204 +print_filtered_48442 print_filtered 2-0 48442 NULL
36205 +tun_recvmsg_48463 tun_recvmsg 4 48463 NULL
36206 ++copy_page_from_iter_iovec_48466 copy_page_from_iter_iovec 3-0 48466 NULL
36207 +compat_SyS_preadv64_48469 compat_SyS_preadv64 3 48469 NULL
36208 +_iwl_dbgfs_bt_tx_prio_write_48473 _iwl_dbgfs_bt_tx_prio_write 3 48473 NULL
36209 -+ipath_format_hwerrors_48487 ipath_format_hwerrors 5 48487 NULL
36210 +r8712_usbctrl_vendorreq_48489 r8712_usbctrl_vendorreq 6 48489 NULL
36211 +send_control_msg_48498 send_control_msg 6 48498 NULL
36212 +count_masked_bytes_48507 count_masked_bytes 0-1 48507 NULL
36213 @@ -119404,12 +127283,12 @@ index 0000000..386792a
36214 +raid10_size_48571 raid10_size 0-2-3 48571 NULL
36215 +llog_data_len_48607 llog_data_len 1 48607 NULL
36216 +do_ip_vs_set_ctl_48641 do_ip_vs_set_ctl 4 48641 NULL
36217 ++kernel_sock_ioctl_48644 kernel_sock_ioctl 0 48644 NULL
36218 +ll_rw_extents_stats_pp_seq_write_48651 ll_rw_extents_stats_pp_seq_write 3 48651 NULL
36219 +mtd_read_48655 mtd_read 0 48655 NULL
36220 +aes_encrypt_packets_read_48666 aes_encrypt_packets_read 3 48666 NULL
36221 +sm501_create_subdev_48668 sm501_create_subdev 3-4 48668 NULL
36222 +ubi_eba_unmap_leb_48671 ubi_eba_unmap_leb 0 48671 NULL
36223 -+security_inode_setattr_48689 security_inode_setattr 0 48689 NULL
36224 +hysdn_log_write_48694 hysdn_log_write 3 48694 NULL
36225 +altera_drscan_48698 altera_drscan 2 48698 NULL
36226 +kvm_set_irq_routing_48704 kvm_set_irq_routing 3 48704 NULL
36227 @@ -119418,13 +127297,11 @@ index 0000000..386792a
36228 +ath6kl_usb_bmi_read_48745 ath6kl_usb_bmi_read 3 48745 NULL
36229 +ath6kl_regwrite_read_48747 ath6kl_regwrite_read 3 48747 NULL
36230 +l2cap_segment_sdu_48772 l2cap_segment_sdu 4 48772 NULL
36231 -+gfs2_direct_IO_48774 gfs2_direct_IO 4 48774 NULL
36232 +il3945_sta_dbgfs_stats_table_read_48802 il3945_sta_dbgfs_stats_table_read 3 48802 NULL
36233 +twa_change_queue_depth_48808 twa_change_queue_depth 2 48808 NULL
36234 +atomic_counters_read_48827 atomic_counters_read 3 48827 NULL
36235 +azx_get_position_48841 azx_get_position 0 48841 NULL
36236 +vc_do_resize_48842 vc_do_resize 3-4 48842 NULL
36237 -+comedi_buf_write_alloc_48846 comedi_buf_write_alloc 0-2 48846 NULL
36238 +suspend_dtim_interval_write_48854 suspend_dtim_interval_write 3 48854 NULL
36239 +C_SYSC_pwritev64_48864 C_SYSC_pwritev64 3 48864 NULL nohasharray
36240 +viafb_dvp1_proc_write_48864 viafb_dvp1_proc_write 3 48864 &C_SYSC_pwritev64_48864
36241 @@ -119433,12 +127310,12 @@ index 0000000..386792a
36242 +joydev_handle_JSIOCSAXMAP_48898 joydev_handle_JSIOCSAXMAP 3 48898 NULL
36243 +xdi_copy_to_user_48900 xdi_copy_to_user 4 48900 NULL
36244 +msg_hdr_sz_48908 msg_hdr_sz 0 48908 NULL
36245 -+snd_pcm_update_hw_ptr_48925 snd_pcm_update_hw_ptr 0 48925 NULL
36246 +sep_crypto_dma_48937 sep_crypto_dma 0 48937 NULL
36247 +si5351_write_parameters_48940 si5351_write_parameters 2 48940 NULL
36248 +event_heart_beat_read_48961 event_heart_beat_read 3 48961 NULL
36249 +nand_ecc_test_run_48966 nand_ecc_test_run 1 48966 NULL
36250 +vmci_handle_arr_create_48971 vmci_handle_arr_create 1 48971 NULL
36251 ++nilfs_direct_IO_48981 nilfs_direct_IO 4 48981 NULL
36252 +rds_rm_size_48996 rds_rm_size 0-2 48996 NULL
36253 +sel_write_enforce_48998 sel_write_enforce 3 48998 NULL
36254 +null_alloc_rs_49019 null_alloc_rs 2 49019 NULL
36255 @@ -119449,16 +127326,14 @@ index 0000000..386792a
36256 +compat_do_readv_writev_49102 compat_do_readv_writev 4 49102 NULL
36257 +xfrm_replay_state_esn_len_49119 xfrm_replay_state_esn_len 0 49119 NULL
36258 +ll_max_cached_mb_seq_write_49122 ll_max_cached_mb_seq_write 3 49122 NULL
36259 -+pt_read_49136 pt_read 3 49136 NULL nohasharray
36260 -+netxen_setup_msi_interrupts_49136 netxen_setup_msi_interrupts 2 49136 &pt_read_49136
36261 ++pt_read_49136 pt_read 3 49136 NULL
36262 +ipwireless_tty_received_49154 ipwireless_tty_received 3 49154 NULL
36263 +f2fs_acl_count_49155 f2fs_acl_count 0-1 49155 NULL
36264 +ipw_queue_tx_init_49161 ipw_queue_tx_init 3 49161 NULL
36265 +__jfs_setxattr_49175 __jfs_setxattr 5 49175 NULL
36266 +ath6kl_bgscan_int_write_49178 ath6kl_bgscan_int_write 3 49178 NULL
36267 +dvb_dvr_ioctl_49182 dvb_dvr_ioctl 2 49182 NULL
36268 -+print_queue_49191 print_queue 0-4 49191 NULL
36269 -+root_nfs_cat_49192 root_nfs_cat 3 49192 NULL
36270 ++print_queue_49191 print_queue 4-0 49191 NULL
36271 +iwl_dbgfs_ucode_general_stats_read_49199 iwl_dbgfs_ucode_general_stats_read 3 49199 NULL
36272 +il4965_rs_sta_dbgfs_stats_table_read_49206 il4965_rs_sta_dbgfs_stats_table_read 3 49206 NULL
36273 +do_jffs2_getxattr_49210 do_jffs2_getxattr 0 49210 NULL
36274 @@ -119470,7 +127345,7 @@ index 0000000..386792a
36275 +viafb_dfph_proc_write_49288 viafb_dfph_proc_write 3 49288 NULL
36276 +uio_read_49300 uio_read 3 49300 NULL
36277 +isku_sysfs_read_keys_macro_49312 isku_sysfs_read_keys_macro 6 49312 NULL
36278 -+SYSC_mincore_49319 SYSC_mincore 2-1 49319 NULL
36279 ++SYSC_mincore_49319 SYSC_mincore 1-2 49319 NULL
36280 +fwtty_port_handler_49327 fwtty_port_handler 9 49327 NULL
36281 +srpt_alloc_ioctx_ring_49330 srpt_alloc_ioctx_ring 2-4-3 49330 NULL
36282 +joydev_ioctl_common_49359 joydev_ioctl_common 2 49359 NULL
36283 @@ -119490,7 +127365,6 @@ index 0000000..386792a
36284 +smk_write_access_49561 smk_write_access 3 49561 NULL
36285 +alloc_chunk_49575 alloc_chunk 1 49575 NULL
36286 +sctp_setsockopt_default_send_param_49578 sctp_setsockopt_default_send_param 3 49578 NULL
36287 -+evm_inode_setattr_49594 evm_inode_setattr 0 49594 NULL
36288 +tap_write_49595 tap_write 3 49595 NULL
36289 +isr_wakeups_read_49607 isr_wakeups_read 3 49607 NULL
36290 +btrfs_mksubvol_49616 btrfs_mksubvol 3 49616 NULL
36291 @@ -119498,9 +127372,9 @@ index 0000000..386792a
36292 +smk_write_doi_49621 smk_write_doi 3 49621 NULL
36293 +port_fops_read_49626 port_fops_read 3 49626 NULL
36294 +btrfsic_cmp_log_and_dev_bytenr_49628 btrfsic_cmp_log_and_dev_bytenr 2 49628 NULL
36295 -+aa_simple_write_to_buffer_49683 aa_simple_write_to_buffer 3-4 49683 NULL
36296 ++__swab32p_49657 __swab32p 0 49657 NULL
36297 ++aa_simple_write_to_buffer_49683 aa_simple_write_to_buffer 4-3 49683 NULL
36298 +SyS_pwritev_49688 SyS_pwritev 3 49688 NULL
36299 -+__setup_irq_49696 __setup_irq 0 49696 NULL
36300 +__copy_from_user_nocheck_49699 __copy_from_user_nocheck 0-3 49699 NULL
36301 +cx2341x_ctrl_new_menu_49700 cx2341x_ctrl_new_menu 3 49700 NULL
36302 +write_pool_49718 write_pool 3 49718 NULL
36303 @@ -119508,7 +127382,7 @@ index 0000000..386792a
36304 +sep_create_dcb_dmatables_context_kernel_49728 sep_create_dcb_dmatables_context_kernel 6 49728 NULL
36305 +zd_usb_iowrite16v_49744 zd_usb_iowrite16v 3 49744 NULL
36306 +btrfs_chunk_num_stripes_49751 btrfs_chunk_num_stripes 0 49751 NULL
36307 -+fuse_wr_pages_49753 fuse_wr_pages 0-2-1 49753 NULL
36308 ++fuse_wr_pages_49753 fuse_wr_pages 0-1-2 49753 NULL
36309 +key_conf_keylen_read_49758 key_conf_keylen_read 3 49758 NULL
36310 +fuse_conn_waiting_read_49762 fuse_conn_waiting_read 3 49762 NULL
36311 +ceph_osdc_readpages_49789 ceph_osdc_readpages 0 49789 NULL
36312 @@ -119533,22 +127407,20 @@ index 0000000..386792a
36313 +ioread8_50049 ioread8 0 50049 NULL
36314 +fuse_conn_max_background_write_50061 fuse_conn_max_background_write 3 50061 NULL
36315 +__kfifo_dma_in_prepare_50081 __kfifo_dma_in_prepare 4 50081 NULL
36316 -+dev_set_alias_50084 dev_set_alias 3 50084 NULL
36317 +libcfs_ioctl_popdata_50087 libcfs_ioctl_popdata 3 50087 NULL
36318 +sock_setsockopt_50088 sock_setsockopt 5 50088 NULL
36319 +altera_swap_dr_50090 altera_swap_dr 2 50090 NULL
36320 +android_set_cntry_50100 android_set_cntry 0 50100 NULL
36321 +read_file_slot_50111 read_file_slot 3 50111 NULL
36322 +rx_streaming_interval_write_50120 rx_streaming_interval_write 3 50120 NULL
36323 -+jfs_direct_IO_50125 jfs_direct_IO 4 50125 NULL
36324 +SYSC_preadv_50134 SYSC_preadv 3 50134 NULL
36325 +tx_frag_need_fragmentation_read_50153 tx_frag_need_fragmentation_read 3 50153 NULL
36326 +kmalloc_node_50163 kmalloc_node 1 50163 NULL
36327 +rx_filter_ibss_filter_read_50167 rx_filter_ibss_filter_read 3 50167 NULL
36328 +ahd_probe_stack_size_50168 ahd_probe_stack_size 0 50168 NULL
36329 +odev_update_50169 odev_update 2 50169 NULL
36330 -+ubi_resize_volume_50172 ubi_resize_volume 2 50172 NULL nohasharray
36331 -+ieee80211_if_fmt_dot11MeshHWMPRannInterval_50172 ieee80211_if_fmt_dot11MeshHWMPRannInterval 3 50172 &ubi_resize_volume_50172
36332 ++ieee80211_if_fmt_dot11MeshHWMPRannInterval_50172 ieee80211_if_fmt_dot11MeshHWMPRannInterval 3 50172 NULL nohasharray
36333 ++ubi_resize_volume_50172 ubi_resize_volume 2 50172 &ieee80211_if_fmt_dot11MeshHWMPRannInterval_50172
36334 +cfg80211_roamed_bss_50198 cfg80211_roamed_bss 4-6 50198 NULL
36335 +cyttsp4_probe_50201 cyttsp4_probe 4 50201 NULL
36336 +rx_rx_timeout_wa_read_50204 rx_rx_timeout_wa_read 3 50204 NULL
36337 @@ -119575,7 +127447,6 @@ index 0000000..386792a
36338 +validate_acl_mac_addrs_50429 validate_acl_mac_addrs 0 50429 NULL
36339 +btrfs_error_discard_extent_50444 btrfs_error_discard_extent 2 50444 NULL
36340 +pgctrl_write_50453 pgctrl_write 3 50453 NULL
36341 -+device_create_sys_dev_entry_50458 device_create_sys_dev_entry 0 50458 NULL
36342 +cfs_size_round_50472 cfs_size_round 0-1 50472 NULL
36343 +cdrom_read_cdda_50478 cdrom_read_cdda 4 50478 NULL
36344 +mei_io_cb_alloc_req_buf_50493 mei_io_cb_alloc_req_buf 2 50493 NULL
36345 @@ -119598,8 +127469,6 @@ index 0000000..386792a
36346 +__ext3_get_inode_loc_50744 __ext3_get_inode_loc 0 50744 NULL
36347 +ocfs2_xattr_block_get_50773 ocfs2_xattr_block_get 0 50773 NULL
36348 +tm6000_read_write_usb_50774 tm6000_read_write_usb 7 50774 NULL
36349 -+bio_alloc_map_data_50782 bio_alloc_map_data 2 50782 NULL
36350 -+ixgbe_acquire_msix_vectors_50789 ixgbe_acquire_msix_vectors 2 50789 NULL
36351 +tpm_write_50798 tpm_write 3 50798 NULL
36352 +tun_do_read_50800 tun_do_read 4 50800 NULL
36353 +write_flush_50803 write_flush 3 50803 NULL
36354 @@ -119607,6 +127476,7 @@ index 0000000..386792a
36355 +btrfs_stack_file_extent_disk_num_bytes_50825 btrfs_stack_file_extent_disk_num_bytes 0 50825 NULL
36356 +dpcm_show_state_50827 dpcm_show_state 0 50827 NULL
36357 +SetArea_50835 SetArea 4 50835 NULL
36358 ++nft_trans_alloc_50836 nft_trans_alloc 3 50836 NULL
36359 +videobuf_dma_init_user_50839 videobuf_dma_init_user 4-3 50839 NULL
36360 +self_check_write_50856 self_check_write 0 50856 NULL
36361 +carl9170_debugfs_write_50857 carl9170_debugfs_write 3 50857 NULL
36362 @@ -119622,8 +127492,7 @@ index 0000000..386792a
36363 +virtio_cread16_50951 virtio_cread16 0 50951 NULL
36364 +sdio_uart_write_50954 sdio_uart_write 3 50954 NULL
36365 +SyS_setxattr_50957 SyS_setxattr 4 50957 NULL
36366 -+of_modalias_node_50975 of_modalias_node 3 50975 NULL
36367 -+iwl_statistics_flag_50981 iwl_statistics_flag 0-3 50981 NULL
36368 ++iwl_statistics_flag_50981 iwl_statistics_flag 3-0 50981 NULL
36369 +timeout_write_50991 timeout_write 3 50991 NULL
36370 +proc_write_51003 proc_write 3 51003 NULL
36371 +jbd2_journal_extend_51012 jbd2_journal_extend 2 51012 NULL
36372 @@ -119641,7 +127510,6 @@ index 0000000..386792a
36373 +alloc_rtllib_51136 alloc_rtllib 1 51136 NULL
36374 +simple_xattr_set_51140 simple_xattr_set 4 51140 NULL
36375 +xfs_trans_get_efd_51148 xfs_trans_get_efd 3 51148 NULL
36376 -+snd_pcm_unlink_51210 snd_pcm_unlink 0 51210 NULL
36377 +iwl_dbgfs_bcast_filters_macs_read_51231 iwl_dbgfs_bcast_filters_macs_read 3 51231 NULL
36378 +nf_ct_ext_create_51232 nf_ct_ext_create 3 51232 NULL
36379 +snd_pcm_write_51235 snd_pcm_write 3 51235 NULL
36380 @@ -119656,6 +127524,7 @@ index 0000000..386792a
36381 +init_map_ipmac_51317 init_map_ipmac 5 51317 NULL
36382 +alloc_hippi_dev_51320 alloc_hippi_dev 1 51320 NULL
36383 +ext2_xattr_get_51327 ext2_xattr_get 0 51327 NULL
36384 ++smk_write_ptrace_51333 smk_write_ptrace 3 51333 NULL
36385 +alloc_smp_req_51337 alloc_smp_req 1 51337 NULL
36386 +ipw_get_event_log_len_51341 ipw_get_event_log_len 0 51341 NULL
36387 +ieee80211_if_fmt_estab_plinks_51370 ieee80211_if_fmt_estab_plinks 3 51370 NULL
36388 @@ -119665,7 +127534,6 @@ index 0000000..386792a
36389 +hfsplus_brec_read_51436 hfsplus_brec_read 0 51436 NULL
36390 +ieee80211_if_read_dot11MeshHWMPRootMode_51441 ieee80211_if_read_dot11MeshHWMPRootMode 3 51441 NULL
36391 +print_devstats_dot11ACKFailureCount_51443 print_devstats_dot11ACKFailureCount 3 51443 NULL
36392 -+vmxnet3_acquire_msix_vectors_51462 vmxnet3_acquire_msix_vectors 2 51462 NULL
36393 +____alloc_ei_netdev_51475 ____alloc_ei_netdev 1 51475 NULL
36394 +xfs_buf_get_uncached_51477 xfs_buf_get_uncached 2 51477 NULL
36395 +kvm_fetch_guest_virt_51493 kvm_fetch_guest_virt 4-2 51493 NULL
36396 @@ -119710,11 +127578,9 @@ index 0000000..386792a
36397 +xfrm_alg_len_51940 xfrm_alg_len 0 51940 NULL
36398 +scsi_get_vpd_page_51951 scsi_get_vpd_page 4 51951 NULL
36399 +snd_mask_min_51969 snd_mask_min 0 51969 NULL
36400 -+__blkdev_get_51972 __blkdev_get 0 51972 NULL
36401 +get_zone_51981 get_zone 0-1 51981 NULL
36402 +ath6kl_sdio_alloc_prep_scat_req_51986 ath6kl_sdio_alloc_prep_scat_req 2 51986 NULL
36403 +dwc3_mode_write_51997 dwc3_mode_write 3 51997 NULL
36404 -+scsi_sysfs_add_host_52010 scsi_sysfs_add_host 0 52010 NULL
36405 +skb_copy_datagram_from_iovec_52014 skb_copy_datagram_from_iovec 4-2-5 52014 NULL
36406 +rdmalt_52022 rdmalt 0 52022 NULL
36407 +override_release_52032 override_release 2 52032 NULL
36408 @@ -119726,11 +127592,9 @@ index 0000000..386792a
36409 +isofs_readpages_52067 isofs_readpages 4 52067 NULL
36410 +mxuport_process_read_urb_data_52072 mxuport_process_read_urb_data 3 52072 NULL
36411 +nsm_get_handle_52089 nsm_get_handle 4 52089 NULL
36412 -+ulist_add_merge_52096 ulist_add_merge 0 52096 NULL
36413 +o2net_debug_read_52105 o2net_debug_read 3 52105 NULL
36414 +split_scan_timeout_write_52128 split_scan_timeout_write 3 52128 NULL
36415 +retry_count_read_52129 retry_count_read 3 52129 NULL
36416 -+snd_pcm_channel_info_user_52135 snd_pcm_channel_info_user 0 52135 NULL
36417 +gdm_usb_hci_send_52138 gdm_usb_hci_send 3 52138 NULL
36418 +sub_alloc_52140 sub_alloc 0 52140 NULL
36419 +hysdn_conf_write_52145 hysdn_conf_write 3 52145 NULL
36420 @@ -119741,22 +127605,20 @@ index 0000000..386792a
36421 +print_prefix_52176 print_prefix 0 52176 NULL
36422 +proc_pid_readlink_52186 proc_pid_readlink 3 52186 NULL
36423 +reiserfs_posix_acl_from_disk_52191 reiserfs_posix_acl_from_disk 2 52191 NULL
36424 ++f2fs_seek_block_52194 f2fs_seek_block 2 52194 NULL
36425 +vmci_qp_broker_alloc_52216 vmci_qp_broker_alloc 6-5 52216 NULL
36426 +fuse_request_alloc_52243 fuse_request_alloc 1 52243 NULL
36427 +mdiobus_alloc_size_52259 mdiobus_alloc_size 1 52259 NULL
36428 +shrink_slab_52261 shrink_slab 2 52261 NULL
36429 ++ext2_direct_IO_52270 ext2_direct_IO 4 52270 NULL
36430 +sisusbcon_do_font_op_52271 sisusbcon_do_font_op 9 52271 NULL
36431 -+handle_supp_msgs_52284 handle_supp_msgs 4 52284 NULL
36432 -+kobject_set_name_vargs_52309 kobject_set_name_vargs 0 52309 NULL
36433 +read_file_reset_52310 read_file_reset 3 52310 NULL
36434 +ssd1307fb_write_52315 ssd1307fb_write 3 52315 NULL
36435 +request_asymmetric_key_52317 request_asymmetric_key 2-4 52317 NULL
36436 +hwflags_read_52318 hwflags_read 3 52318 NULL
36437 -+snd_pcm_hw_free_52327 snd_pcm_hw_free 0 52327 NULL
36438 +test_unaligned_bulk_52333 test_unaligned_bulk 3 52333 NULL
36439 +hur_len_52339 hur_len 0 52339 NULL
36440 -+bytes_to_frames_52362 bytes_to_frames 0-2 52362 NULL nohasharray
36441 -+cap_inode_killpriv_52362 cap_inode_killpriv 0 52362 &bytes_to_frames_52362
36442 ++bytes_to_frames_52362 bytes_to_frames 0-2 52362 NULL
36443 +copy_entries_to_user_52367 copy_entries_to_user 1 52367 NULL
36444 +iwl_dump_fh_52371 iwl_dump_fh 0 52371 NULL
36445 +hfsplus_find_attr_52374 hfsplus_find_attr 0 52374 NULL
36446 @@ -119770,6 +127632,7 @@ index 0000000..386792a
36447 +ath6kl_delete_qos_write_52435 ath6kl_delete_qos_write 3 52435 NULL
36448 +ieee80211_if_fmt_num_sta_ps_52438 ieee80211_if_fmt_num_sta_ps 3 52438 NULL
36449 +alauda_read_data_52452 alauda_read_data 3 52452 NULL
36450 ++bt_alloc_52457 bt_alloc 2 52457 NULL
36451 +ieee80211_alloc_txb_52477 ieee80211_alloc_txb 1 52477 NULL
36452 +usb_tranzport_write_52479 usb_tranzport_write 3 52479 NULL
36453 +ocfs2_extend_no_holes_52483 ocfs2_extend_no_holes 3-4 52483 NULL
36454 @@ -119784,7 +127647,6 @@ index 0000000..386792a
36455 +dccpprobe_read_52549 dccpprobe_read 3 52549 NULL
36456 +debug_level_proc_write_52572 debug_level_proc_write 3 52572 NULL
36457 +isku_sysfs_read_macro_52587 isku_sysfs_read_macro 6 52587 NULL
36458 -+snd_pcm_sw_params_52594 snd_pcm_sw_params 0 52594 NULL
36459 +SyS_setsockopt_52610 SyS_setsockopt 5 52610 NULL
36460 +ll_sa_entry_alloc_52611 ll_sa_entry_alloc 4 52611 NULL
36461 +tps80031_writes_52638 tps80031_writes 3-4 52638 NULL
36462 @@ -119804,7 +127666,6 @@ index 0000000..386792a
36463 +lb_alloc_ep_req_52837 lb_alloc_ep_req 2 52837 NULL
36464 +mon_bin_get_event_52863 mon_bin_get_event 4-6 52863 NULL
36465 +twl6030_gpadc_write_52867 twl6030_gpadc_write 1 52867 NULL
36466 -+qib_decode_6120_err_52876 qib_decode_6120_err 3 52876 NULL
36467 +twlreg_write_52880 twlreg_write 3 52880 NULL
36468 +pvr2_ctrl_value_to_sym_internal_52881 pvr2_ctrl_value_to_sym_internal 5 52881 NULL
36469 +cache_read_procfs_52882 cache_read_procfs 3 52882 NULL
36470 @@ -119815,7 +127676,6 @@ index 0000000..386792a
36471 +ieee80211_if_fmt_fwded_mcast_52961 ieee80211_if_fmt_fwded_mcast 3 52961 NULL
36472 +tx_tx_exch_read_52986 tx_tx_exch_read 3 52986 NULL
36473 +num_node_state_52989 num_node_state 0 52989 NULL
36474 -+efivarfs_file_write_53000 efivarfs_file_write 3 53000 NULL
36475 +btrfs_free_and_pin_reserved_extent_53016 btrfs_free_and_pin_reserved_extent 2 53016 NULL
36476 +tx_tx_exch_pending_read_53018 tx_tx_exch_pending_read 3 53018 NULL
36477 +bio_cur_bytes_53037 bio_cur_bytes 0 53037 NULL
36478 @@ -119823,12 +127683,10 @@ index 0000000..386792a
36479 +cfi_read_query_53066 cfi_read_query 0 53066 NULL
36480 +iwl_dbgfs_interrupt_write_53069 iwl_dbgfs_interrupt_write 3 53069 NULL
36481 +mwifiex_debug_read_53074 mwifiex_debug_read 3 53074 NULL
36482 -+vmci_check_host_caps_53087 vmci_check_host_caps 0 53087 NULL
36483 +mic_virtio_copy_from_user_53107 mic_virtio_copy_from_user 3 53107 NULL
36484 +verity_status_53120 verity_status 5 53120 NULL
36485 +brcmf_usb_dl_cmd_53130 brcmf_usb_dl_cmd 4 53130 NULL
36486 -+ps_poll_ps_poll_max_ap_turn_read_53140 ps_poll_ps_poll_max_ap_turn_read 3 53140 NULL nohasharray
36487 -+inode_newsize_ok_53140 inode_newsize_ok 0 53140 &ps_poll_ps_poll_max_ap_turn_read_53140
36488 ++ps_poll_ps_poll_max_ap_turn_read_53140 ps_poll_ps_poll_max_ap_turn_read 3 53140 NULL
36489 +ieee80211_bss_info_update_53170 ieee80211_bss_info_update 4 53170 NULL
36490 +btrfs_io_bio_alloc_53179 btrfs_io_bio_alloc 2 53179 NULL
36491 +clear_capture_buf_53192 clear_capture_buf 2 53192 NULL
36492 @@ -119837,6 +127695,7 @@ index 0000000..386792a
36493 +xfs_trans_read_buf_map_53258 xfs_trans_read_buf_map 5 53258 NULL
36494 +wil_write_file_ssid_53266 wil_write_file_ssid 3 53266 NULL
36495 +btrfs_file_extent_num_bytes_53269 btrfs_file_extent_num_bytes 0 53269 NULL
36496 ++f2fs_fiemap_53310 f2fs_fiemap 4 53310 NULL
36497 +ftrace_profile_write_53327 ftrace_profile_write 3 53327 NULL
36498 +find_nr_power_limit_53330 find_nr_power_limit 0 53330 NULL
36499 +gsm_control_reply_53333 gsm_control_reply 4 53333 NULL
36500 @@ -119854,26 +127713,24 @@ index 0000000..386792a
36501 +do_verify_xattr_datum_53499 do_verify_xattr_datum 0 53499 NULL
36502 +snd_pcm_format_physical_width_53505 snd_pcm_format_physical_width 0 53505 NULL
36503 +dbAllocNext_53506 dbAllocNext 0 53506 NULL
36504 -+force_sc_support_write_53512 force_sc_support_write 3 53512 NULL nohasharray
36505 -+check_acl_53512 check_acl 0 53512 &force_sc_support_write_53512
36506 ++check_acl_53512 check_acl 0 53512 NULL nohasharray
36507 ++force_sc_support_write_53512 force_sc_support_write 3 53512 &check_acl_53512
36508 +nft_data_dump_53549 nft_data_dump 5 53549 NULL
36509 +SYSC_bind_53582 SYSC_bind 3 53582 NULL
36510 +cifs_utf16_bytes_53593 cifs_utf16_bytes 0 53593 NULL
36511 +proc_uid_map_write_53596 proc_uid_map_write 3 53596 NULL
36512 +pfkey_recvmsg_53604 pfkey_recvmsg 4 53604 NULL
36513 +___alloc_bootmem_nopanic_53626 ___alloc_bootmem_nopanic 1 53626 NULL
36514 -+xd_write_multiple_pages_53633 xd_write_multiple_pages 6-5 53633 NULL
36515 +ccid_getsockopt_builtin_ccids_53634 ccid_getsockopt_builtin_ccids 2 53634 NULL
36516 +nr_sendmsg_53656 nr_sendmsg 4 53656 NULL
36517 -+fuse_fill_write_pages_53682 fuse_fill_write_pages 4-0 53682 NULL
36518 ++fuse_fill_write_pages_53682 fuse_fill_write_pages 0-4 53682 NULL
36519 +v4l2_event_subscribe_53687 v4l2_event_subscribe 3 53687 NULL
36520 +bdev_logical_block_size_53690 bdev_logical_block_size 0 53690 NULL nohasharray
36521 +igb_alloc_q_vector_53690 igb_alloc_q_vector 4-6 53690 &bdev_logical_block_size_53690
36522 +find_overflow_devnum_53711 find_overflow_devnum 0 53711 NULL
36523 +__proc_debug_mb_53732 __proc_debug_mb 5 53732 NULL
36524 +wdm_write_53735 wdm_write 3 53735 NULL
36525 -+lpfc_idiag_queacc_read_qe_53755 lpfc_idiag_queacc_read_qe 0-2 53755 NULL nohasharray
36526 -+amdtp_out_stream_get_max_payload_53755 amdtp_out_stream_get_max_payload 0 53755 &lpfc_idiag_queacc_read_qe_53755
36527 ++lpfc_idiag_queacc_read_qe_53755 lpfc_idiag_queacc_read_qe 0-2 53755 NULL
36528 +wa_populate_buf_in_urb_53758 wa_populate_buf_in_urb 3-4 53758 NULL
36529 +ext2_acl_count_53773 ext2_acl_count 0-1 53773 NULL
36530 +__kfifo_dma_in_prepare_r_53792 __kfifo_dma_in_prepare_r 4-5 53792 NULL
36531 @@ -119882,7 +127739,8 @@ index 0000000..386792a
36532 +lpfc_idiag_ctlacc_read_reg_53809 lpfc_idiag_ctlacc_read_reg 0-3 53809 NULL
36533 +nls_nullsize_53815 nls_nullsize 0 53815 NULL
36534 +setup_data_read_53822 setup_data_read 3 53822 NULL
36535 -+pms_read_53873 pms_read 3 53873 NULL
36536 ++btrfs_free_reserved_extent_53873 btrfs_free_reserved_extent 2 53873 NULL nohasharray
36537 ++pms_read_53873 pms_read 3 53873 &btrfs_free_reserved_extent_53873
36538 +ieee80211_if_fmt_dropped_frames_congestion_53883 ieee80211_if_fmt_dropped_frames_congestion 3 53883 NULL
36539 +SyS_setgroups_53900 SyS_setgroups 1 53900 NULL
36540 +batadv_tt_tvlv_ogm_handler_v1_53909 batadv_tt_tvlv_ogm_handler_v1 5 53909 NULL
36541 @@ -119899,10 +127757,8 @@ index 0000000..386792a
36542 +pipeline_dec_packet_out_read_54052 pipeline_dec_packet_out_read 3 54052 NULL
36543 +nl80211_send_disconnected_54056 nl80211_send_disconnected 5 54056 NULL
36544 +rproc_state_read_54057 rproc_state_read 3 54057 NULL
36545 -+_malloc_54077 _malloc 1 54077 NULL
36546 -+lustre_posix_acl_xattr_filter_54103 lustre_posix_acl_xattr_filter 2 54103 NULL nohasharray
36547 -+altera_set_ir_pre_54103 altera_set_ir_pre 2 54103 &lustre_posix_acl_xattr_filter_54103
36548 -+__comedi_buf_write_alloc_54112 __comedi_buf_write_alloc 0-2 54112 NULL
36549 ++altera_set_ir_pre_54103 altera_set_ir_pre 2 54103 NULL nohasharray
36550 ++lustre_posix_acl_xattr_filter_54103 lustre_posix_acl_xattr_filter 2 54103 &altera_set_ir_pre_54103
36551 +strn_len_54122 strn_len 0 54122 NULL
36552 +isku_receive_54130 isku_receive 4 54130 NULL
36553 +isr_host_acknowledges_read_54136 isr_host_acknowledges_read 3 54136 NULL
36554 @@ -119921,6 +127777,7 @@ index 0000000..386792a
36555 +wusb_prf_54261 wusb_prf 7 54261 &audio_write_54261
36556 +mwifiex_getlog_read_54269 mwifiex_getlog_read 3 54269 NULL
36557 +kstrtou16_from_user_54274 kstrtou16_from_user 2 54274 NULL
36558 ++sizeof_long_54276 sizeof_long 0 54276 NULL
36559 +altera_set_dr_post_54291 altera_set_dr_post 2 54291 NULL
36560 +dlm_alloc_pagevec_54296 dlm_alloc_pagevec 1 54296 NULL
36561 +reclaim_pages_54301 reclaim_pages 3 54301 NULL
36562 @@ -119941,7 +127798,6 @@ index 0000000..386792a
36563 +sparse_early_mem_maps_alloc_node_54485 sparse_early_mem_maps_alloc_node 4 54485 NULL
36564 +simple_strtoull_54493 simple_strtoull 0 54493 NULL
36565 +btrfs_ordered_sum_size_54509 btrfs_ordered_sum_size 0-2 54509 NULL
36566 -+sst_byt_get_dsp_position_54513 sst_byt_get_dsp_position 0-3 54513 NULL
36567 +rfc4106_set_key_54519 rfc4106_set_key 3 54519 NULL
36568 +vmci_transport_dgram_enqueue_54525 vmci_transport_dgram_enqueue 4 54525 NULL
36569 +viacam_read_54526 viacam_read 3 54526 NULL
36570 @@ -119959,11 +127815,10 @@ index 0000000..386792a
36571 +dns_resolver_read_54658 dns_resolver_read 3 54658 NULL
36572 +twl6030_interrupt_mask_54659 twl6030_interrupt_mask 2 54659 NULL
36573 +tdp_page_fault_54663 tdp_page_fault 2 54663 NULL
36574 -+bus_add_device_54665 bus_add_device 0 54665 NULL
36575 +cw1200_queue_stats_init_54670 cw1200_queue_stats_init 2 54670 NULL
36576 +bio_kmalloc_54672 bio_kmalloc 2 54672 NULL
36577 +evm_read_key_54674 evm_read_key 3 54674 NULL
36578 -+__btrfs_inc_extent_ref_54706 __btrfs_inc_extent_ref 7 54706 NULL
36579 ++jfs_direct_IO_54687 jfs_direct_IO 4 54687 NULL
36580 +rfkill_fop_read_54711 rfkill_fop_read 3 54711 NULL
36581 +ocfs2_control_write_54737 ocfs2_control_write 3 54737 NULL
36582 +kzalloc_54740 kzalloc 1 54740 NULL
36583 @@ -119977,33 +127832,31 @@ index 0000000..386792a
36584 +nfsd_write_54809 nfsd_write 6 54809 NULL
36585 +ar9287_dump_modal_eeprom_54814 ar9287_dump_modal_eeprom 3-2 54814 NULL
36586 +crypto_tfm_ctx_alignment_54815 crypto_tfm_ctx_alignment 0 54815 NULL nohasharray
36587 -+kvzalloc_54815 kvzalloc 1 54815 &crypto_tfm_ctx_alignment_54815 nohasharray
36588 -+aes_decrypt_fail_read_54815 aes_decrypt_fail_read 3 54815 &kvzalloc_54815
36589 -+generic_perform_write_54832 generic_perform_write 3-0 54832 NULL
36590 ++aes_decrypt_fail_read_54815 aes_decrypt_fail_read 3 54815 &crypto_tfm_ctx_alignment_54815 nohasharray
36591 ++kvzalloc_54815 kvzalloc 1 54815 &aes_decrypt_fail_read_54815
36592 ++generic_perform_write_54832 generic_perform_write 3 54832 NULL
36593 +write_rio_54837 write_rio 3 54837 NULL
36594 +ext3_acl_from_disk_54839 ext3_acl_from_disk 2 54839 NULL nohasharray
36595 +nouveau_engctx_create__54839 nouveau_engctx_create_ 8 54839 &ext3_acl_from_disk_54839
36596 +ufx_ops_write_54848 ufx_ops_write 3 54848 NULL
36597 +printer_read_54851 printer_read 3 54851 NULL
36598 -+assign_irq_vector_54852 assign_irq_vector 0 54852 NULL
36599 +broadsheet_spiflash_rewrite_sector_54864 broadsheet_spiflash_rewrite_sector 2 54864 NULL
36600 +prism_build_supp_rates_54865 prism_build_supp_rates 0 54865 NULL
36601 -+iscsi_pool_init_54913 iscsi_pool_init 2-4 54913 NULL nohasharray
36602 -+kobject_set_name_vargs_54913 kobject_set_name_vargs 0 54913 &iscsi_pool_init_54913
36603 ++iscsi_pool_init_54913 iscsi_pool_init 2-4 54913 NULL
36604 +btrfs_stack_chunk_num_stripes_54923 btrfs_stack_chunk_num_stripes 0 54923 NULL
36605 +bio_add_page_54933 bio_add_page 0-3 54933 NULL
36606 +mxms_structlen_54939 mxms_structlen 0 54939 NULL
36607 +add_port_54941 add_port 2 54941 NULL
36608 +tipc_send2name_54946 tipc_send2name 5 54946 NULL
36609 -+ath9k_dump_btcoex_54949 ath9k_dump_btcoex 0-3 54949 NULL
36610 ++ath9k_dump_btcoex_54949 ath9k_dump_btcoex 3-0 54949 NULL
36611 +alauda_write_data_54967 alauda_write_data 3 54967 NULL
36612 +c4_add_card_54968 c4_add_card 3 54968 NULL
36613 +ext3_xattr_get_54989 ext3_xattr_get 0 54989 NULL
36614 +cx231xx_v4l2_read_55014 cx231xx_v4l2_read 3 55014 NULL
36615 +error_error_null_Frame_tx_start_read_55024 error_error_null_Frame_tx_start_read 3 55024 NULL
36616 ++efw_transaction_55052 efw_transaction 5-7 55052 NULL
36617 +apei_exec_run_55075 apei_exec_run 0 55075 NULL
36618 +bitmap_storage_alloc_55077 bitmap_storage_alloc 2 55077 NULL
36619 -+snd_pcm_capture_hw_avail_55086 snd_pcm_capture_hw_avail 0 55086 NULL
36620 +rxpipe_beacon_buffer_thres_host_int_trig_rx_data_read_55106 rxpipe_beacon_buffer_thres_host_int_trig_rx_data_read 3 55106 NULL
36621 +crypto_ahash_setkey_55134 crypto_ahash_setkey 3 55134 NULL
36622 +filldir_55137 filldir 3 55137 NULL
36623 @@ -120025,12 +127878,12 @@ index 0000000..386792a
36624 +rx_streaming_interval_read_55291 rx_streaming_interval_read 3 55291 NULL
36625 +lov_get_stripecnt_55297 lov_get_stripecnt 0-3 55297 NULL
36626 +gsm_control_modem_55303 gsm_control_modem 3 55303 NULL
36627 -+qp_alloc_guest_work_55305 qp_alloc_guest_work 5-3 55305 NULL nohasharray
36628 -+compat_SyS_process_vm_readv_55305 compat_SyS_process_vm_readv 3-5 55305 &qp_alloc_guest_work_55305
36629 ++compat_SyS_process_vm_readv_55305 compat_SyS_process_vm_readv 3-5 55305 NULL nohasharray
36630 ++qp_alloc_guest_work_55305 qp_alloc_guest_work 5-3 55305 &compat_SyS_process_vm_readv_55305
36631 +compat_SyS_mbind_55329 compat_SyS_mbind 5 55329 NULL
36632 +vme_user_read_55338 vme_user_read 3 55338 NULL
36633 -+__wa_xfer_setup_sizes_55342 __wa_xfer_setup_sizes 0 55342 NULL nohasharray
36634 -+sctp_datamsg_from_user_55342 sctp_datamsg_from_user 4 55342 &__wa_xfer_setup_sizes_55342
36635 ++sctp_datamsg_from_user_55342 sctp_datamsg_from_user 4 55342 NULL nohasharray
36636 ++__wa_xfer_setup_sizes_55342 __wa_xfer_setup_sizes 0 55342 &sctp_datamsg_from_user_55342
36637 +cw1200_sdio_align_size_55391 cw1200_sdio_align_size 2 55391 NULL
36638 +iwl_dbgfs_plcp_delta_read_55407 iwl_dbgfs_plcp_delta_read 3 55407 NULL
36639 +nouveau_cli_create_55425 nouveau_cli_create 3 55425 NULL
36640 @@ -120055,8 +127908,8 @@ index 0000000..386792a
36641 +macvtap_put_user_55609 macvtap_put_user 4 55609 NULL
36642 +selinux_setprocattr_55611 selinux_setprocattr 4 55611 NULL
36643 +edge_tty_recv_55622 edge_tty_recv 3 55622 NULL
36644 -+reiserfs_xattr_get_55628 reiserfs_xattr_get 0 55628 NULL nohasharray
36645 -+pktgen_if_write_55628 pktgen_if_write 3 55628 &reiserfs_xattr_get_55628
36646 ++pktgen_if_write_55628 pktgen_if_write 3 55628 NULL nohasharray
36647 ++reiserfs_xattr_get_55628 reiserfs_xattr_get 0 55628 &pktgen_if_write_55628
36648 +osc_obd_max_pages_per_rpc_seq_write_55636 osc_obd_max_pages_per_rpc_seq_write 3 55636 NULL
36649 +xfs_bmbt_maxrecs_55649 xfs_bmbt_maxrecs 0-2 55649 NULL
36650 +lpfc_idiag_queinfo_read_55662 lpfc_idiag_queinfo_read 3 55662 NULL
36651 @@ -120068,11 +127921,12 @@ index 0000000..386792a
36652 +tap_pwup_write_55723 tap_pwup_write 3 55723 NULL
36653 +__iio_allocate_kfifo_55738 __iio_allocate_kfifo 2 55738 NULL
36654 +set_local_name_55757 set_local_name 4 55757 NULL
36655 ++ethtool_copy_validate_indir_55769 ethtool_copy_validate_indir 4 55769 NULL
36656 +strlen_55778 strlen 0 55778 NULL nohasharray
36657 +is_idx_node_in_tnc_55778 is_idx_node_in_tnc 0 55778 &strlen_55778
36658 -+set_spte_55783 set_spte 5-4 55783 NULL
36659 -+req_bio_endio_55786 req_bio_endio 3 55786 NULL nohasharray
36660 -+conf_read_55786 conf_read 3 55786 &req_bio_endio_55786
36661 ++set_spte_55783 set_spte 4-5 55783 NULL
36662 ++conf_read_55786 conf_read 3 55786 NULL nohasharray
36663 ++req_bio_endio_55786 req_bio_endio 3 55786 &conf_read_55786
36664 +uwb_rc_neh_grok_event_55799 uwb_rc_neh_grok_event 3 55799 NULL
36665 +sb16_copy_from_user_55836 sb16_copy_from_user 10-6-7 55836 NULL
36666 +ip_hdrlen_55849 ip_hdrlen 0 55849 NULL
36667 @@ -120083,17 +127937,15 @@ index 0000000..386792a
36668 +pm_qos_power_read_55891 pm_qos_power_read 3 55891 NULL
36669 +hash_ip4_expire_55911 hash_ip4_expire 4 55911 NULL
36670 +snd_pcm_hw_param_value_min_55917 snd_pcm_hw_param_value_min 0 55917 NULL
36671 -+ext2_direct_IO_55932 ext2_direct_IO 4 55932 NULL
36672 +kvm_write_guest_virt_system_55944 kvm_write_guest_virt_system 4-2 55944 NULL
36673 +sel_read_policy_55947 sel_read_policy 3 55947 NULL
36674 +ceph_get_direct_page_vector_55956 ceph_get_direct_page_vector 2 55956 NULL
36675 -+simple_read_from_buffer_55957 simple_read_from_buffer 2-5 55957 NULL
36676 ++simple_read_from_buffer_55957 simple_read_from_buffer 5-2 55957 NULL
36677 +tx_tx_imm_resp_read_55964 tx_tx_imm_resp_read 3 55964 NULL
36678 -+btrfs_clone_55977 btrfs_clone 5-3 55977 NULL
36679 ++btrfs_clone_55977 btrfs_clone 5-3-6 55977 NULL
36680 +wa_xfer_create_subset_sg_55992 wa_xfer_create_subset_sg 3-2 55992 NULL
36681 +nvme_alloc_iod_56027 nvme_alloc_iod 1-2 56027 NULL
36682 -+rtl8169_init_ring_56028 rtl8169_init_ring 0 56028 NULL
36683 -+usb_ocp_write_56047 usb_ocp_write 4 56047 NULL
36684 ++iwl_trans_read_prph_56052 iwl_trans_read_prph 0 56052 NULL
36685 +dccp_sendmsg_56058 dccp_sendmsg 4 56058 NULL
36686 +pscsi_get_bio_56103 pscsi_get_bio 1 56103 NULL
36687 +usb_alloc_stream_buffers_56123 usb_alloc_stream_buffers 3 56123 NULL
36688 @@ -120117,17 +127969,16 @@ index 0000000..386792a
36689 +journal_init_revoke_table_56331 journal_init_revoke_table 1 56331 NULL
36690 +snd_rawmidi_read_56337 snd_rawmidi_read 3 56337 NULL
36691 +vxge_os_dma_malloc_async_56348 vxge_os_dma_malloc_async 3 56348 NULL
36692 -+mite_device_bytes_transferred_56355 mite_device_bytes_transferred 0 56355 NULL
36693 -+iov_iter_copy_from_user_atomic_56368 iov_iter_copy_from_user_atomic 4-0 56368 NULL
36694 ++iov_iter_copy_from_user_atomic_56368 iov_iter_copy_from_user_atomic 0-4 56368 NULL
36695 +dev_read_56369 dev_read 3 56369 NULL
36696 +ath10k_read_simulate_fw_crash_56371 ath10k_read_simulate_fw_crash 3 56371 NULL
36697 -+snd_pcm_common_ioctl1_56382 snd_pcm_common_ioctl1 0 56382 NULL
36698 +write_gssp_56404 write_gssp 3 56404 NULL
36699 +ocfs2_control_read_56405 ocfs2_control_read 3 56405 NULL
36700 +store_msg_56417 store_msg 3 56417 NULL
36701 +pppol2tp_sendmsg_56420 pppol2tp_sendmsg 4 56420 NULL
36702 +l2cap_segment_le_sdu_56426 l2cap_segment_le_sdu 4 56426 NULL
36703 -+ec_dbgfs_cmd_read_56431 ec_dbgfs_cmd_read 3 56431 NULL
36704 ++lprocfs_fid_space_seq_write_56431 lprocfs_fid_space_seq_write 3 56431 NULL nohasharray
36705 ++ec_dbgfs_cmd_read_56431 ec_dbgfs_cmd_read 3 56431 &lprocfs_fid_space_seq_write_56431
36706 +fl_create_56435 fl_create 5 56435 NULL
36707 +gnttab_map_56439 gnttab_map 2 56439 NULL
36708 +cx231xx_init_isoc_56453 cx231xx_init_isoc 3-2-4 56453 NULL
36709 @@ -120168,32 +128019,28 @@ index 0000000..386792a
36710 +mtdchar_write_56831 mtdchar_write 3 56831 NULL
36711 +snd_rawmidi_kernel_write1_56847 snd_rawmidi_kernel_write1 4-0 56847 NULL
36712 +si476x_radio_read_agc_blob_56849 si476x_radio_read_agc_blob 3 56849 NULL
36713 ++gk20a_ram_get_56863 gk20a_ram_get 2 56863 NULL
36714 +ext3_xattr_ibody_get_56880 ext3_xattr_ibody_get 0 56880 NULL
36715 +pvr2_debugifc_print_status_56890 pvr2_debugifc_print_status 3 56890 NULL
36716 +debug_debug3_read_56894 debug_debug3_read 3 56894 NULL
36717 +batadv_tt_update_changes_56895 batadv_tt_update_changes 3 56895 NULL nohasharray
36718 +le_auto_conn_write_56895 le_auto_conn_write 3 56895 &batadv_tt_update_changes_56895
36719 +hfsplus_find_cat_56899 hfsplus_find_cat 0 56899 NULL
36720 -+strcspn_56913 strcspn 0 56913 NULL
36721 +__kfifo_out_56927 __kfifo_out 0-3 56927 NULL
36722 +journal_init_revoke_56933 journal_init_revoke 2 56933 NULL
36723 +nouveau_xtensa_create__56952 nouveau_xtensa_create_ 8 56952 NULL
36724 +diva_get_driver_info_56967 diva_get_driver_info 0 56967 NULL
36725 -+sptlrpc_secflags2str_56995 sptlrpc_secflags2str 3 56995 NULL
36726 +vlsi_alloc_ring_57003 vlsi_alloc_ring 3-4 57003 NULL
36727 +btrfs_super_csum_size_57004 btrfs_super_csum_size 0 57004 NULL
36728 +aircable_process_packet_57027 aircable_process_packet 4 57027 NULL
36729 -+ieee80211_if_fmt_state_57043 ieee80211_if_fmt_state 3 57043 NULL nohasharray
36730 -+skb_network_offset_57043 skb_network_offset 0 57043 &ieee80211_if_fmt_state_57043
36731 ++ieee80211_if_fmt_state_57043 ieee80211_if_fmt_state 3 57043 NULL
36732 +bytes_to_samples_57049 bytes_to_samples 0-2 57049 NULL
36733 +xfs_buf_read_map_57053 xfs_buf_read_map 3 57053 NULL
36734 +cx2341x_ctrl_new_std_57061 cx2341x_ctrl_new_std 4 57061 NULL
36735 +sca3000_read_data_57064 sca3000_read_data 4 57064 NULL
36736 +pcmcia_replace_cis_57066 pcmcia_replace_cis 3 57066 NULL
36737 +tracing_set_trace_write_57096 tracing_set_trace_write 3 57096 NULL
36738 -+altera_get_note_57099 altera_get_note 6 57099 NULL
36739 +hpfs_readpages_57106 hpfs_readpages 4 57106 NULL
36740 -+snd_pcm_hw_params_old_user_57108 snd_pcm_hw_params_old_user 0 57108 NULL
36741 +crypto_compress_ctxsize_57109 crypto_compress_ctxsize 0 57109 NULL
36742 +cipso_v4_gentag_loc_57119 cipso_v4_gentag_loc 0 57119 NULL
36743 +ima_show_htable_value_57136 ima_show_htable_value 2 57136 NULL nohasharray
36744 @@ -120207,7 +128054,6 @@ index 0000000..386792a
36745 +hash_netnet6_expire_57191 hash_netnet6_expire 4 57191 NULL
36746 +tt3650_ci_msg_57219 tt3650_ci_msg 4 57219 NULL
36747 +dma_fifo_alloc_57236 dma_fifo_alloc 2-3-5 57236 NULL
36748 -+flush_space_57241 flush_space 0 57241 NULL
36749 +rsxx_cram_write_57244 rsxx_cram_write 3 57244 NULL
36750 +ieee80211_if_fmt_tsf_57249 ieee80211_if_fmt_tsf 3 57249 NULL
36751 +oprofilefs_ulong_from_user_57251 oprofilefs_ulong_from_user 3 57251 NULL
36752 @@ -120230,6 +128076,7 @@ index 0000000..386792a
36753 +__roundup_pow_of_two_57461 __roundup_pow_of_two 0 57461 NULL
36754 +sisusb_clear_vram_57466 sisusb_clear_vram 2-3 57466 NULL
36755 +ieee80211_if_read_flags_57470 ieee80211_if_read_flags 3 57470 NULL
36756 ++read_file_skb_rx_57490 read_file_skb_rx 3 57490 NULL
36757 +bnad_debugfs_write_regwr_57500 bnad_debugfs_write_regwr 3 57500 NULL
36758 +skb_headlen_57501 skb_headlen 0 57501 NULL
36759 +copy_in_user_57502 copy_in_user 3 57502 NULL
36760 @@ -120242,7 +128089,6 @@ index 0000000..386792a
36761 +acpi_dev_get_resources_57534 acpi_dev_get_resources 0 57534 NULL
36762 +ptlrpc_lprocfs_hp_ratio_seq_write_57537 ptlrpc_lprocfs_hp_ratio_seq_write 3 57537 NULL
36763 +compat_SyS_process_vm_writev_57542 compat_SyS_process_vm_writev 3-5 57542 NULL
36764 -+obd_unpackmd_57563 obd_unpackmd 0 57563 NULL
36765 +snd_pcm_playback_ioctl1_57569 snd_pcm_playback_ioctl1 0 57569 NULL
36766 +get_bridge_ifindices_57579 get_bridge_ifindices 0 57579 NULL
36767 +ldlm_cli_enqueue_local_57582 ldlm_cli_enqueue_local 11 57582 NULL
36768 @@ -120251,24 +128097,19 @@ index 0000000..386792a
36769 +tx_tx_retry_template_read_57623 tx_tx_retry_template_read 3 57623 NULL
36770 +sisusbcon_putcs_57630 sisusbcon_putcs 3 57630 NULL
36771 +mem_read_57631 mem_read 3 57631 NULL
36772 -+pci_enable_msi_block_57632 pci_enable_msi_block 0 57632 NULL
36773 -+msi_compose_msg_57637 msi_compose_msg 0 57637 NULL
36774 +r3964_write_57662 r3964_write 4 57662 NULL
36775 +proc_ns_readlink_57664 proc_ns_readlink 3 57664 NULL
36776 +__lgwrite_57669 __lgwrite 4 57669 NULL
36777 +i2400m_rx_stats_read_57706 i2400m_rx_stats_read 3 57706 NULL
36778 +ieee80211_if_read_dot11MeshHWMPconfirmationInterval_57722 ieee80211_if_read_dot11MeshHWMPconfirmationInterval 3 57722 NULL
36779 -+vm_find_vqs_57729 vm_find_vqs 0 57729 NULL
36780 -+nouveau_gpio_create__57735 nouveau_gpio_create_ 4-5 57735 NULL
36781 +pppol2tp_recvmsg_57742 pppol2tp_recvmsg 4 57742 NULL
36782 +ieee80211_if_fmt_dot11MeshHWMPpreqMinInterval_57762 ieee80211_if_fmt_dot11MeshHWMPpreqMinInterval 3 57762 NULL
36783 +SYSC_process_vm_writev_57776 SYSC_process_vm_writev 3-5 57776 NULL
36784 -+security_inode_unlink_57791 security_inode_unlink 0 57791 NULL
36785 +ld2_57794 ld2 0 57794 NULL
36786 +ivtv_read_57796 ivtv_read 3 57796 NULL
36787 +ion_test_ioctl_57799 ion_test_ioctl 2 57799 NULL
36788 +bfad_debugfs_read_regrd_57830 bfad_debugfs_read_regrd 3 57830 NULL
36789 -+copy_to_user_57835 copy_to_user 0-3 57835 NULL
36790 ++copy_to_user_57835 copy_to_user 3-0 57835 NULL
36791 +flash_read_57843 flash_read 3 57843 NULL
36792 +kiblnd_create_tx_pool_57846 kiblnd_create_tx_pool 2 57846 NULL
36793 +radeon_ttm_gtt_read_57879 radeon_ttm_gtt_read 3 57879 NULL
36794 @@ -120281,8 +128122,10 @@ index 0000000..386792a
36795 +sel_read_handle_unknown_57933 sel_read_handle_unknown 3 57933 NULL
36796 +xfs_mru_cache_create_57943 xfs_mru_cache_create 3 57943 NULL
36797 +key_algorithm_read_57946 key_algorithm_read 3 57946 NULL
36798 ++arch_gnttab_init_57948 arch_gnttab_init 2-1 57948 NULL
36799 +ip_set_alloc_57953 ip_set_alloc 1 57953 NULL nohasharray
36800 +ioat3_dca_count_dca_slots_57953 ioat3_dca_count_dca_slots 0 57953 &ip_set_alloc_57953
36801 ++iov_iter_npages_57979 iov_iter_npages 0-2 57979 NULL
36802 +rx_reset_counter_read_58001 rx_reset_counter_read 3 58001 NULL
36803 +iwl_dbgfs_ucode_rx_stats_read_58023 iwl_dbgfs_ucode_rx_stats_read 3 58023 NULL
36804 +io_playback_transfer_58030 io_playback_transfer 4 58030 NULL
36805 @@ -120310,36 +128153,34 @@ index 0000000..386792a
36806 +brcmf_debugfs_sdio_counter_read_58369 brcmf_debugfs_sdio_counter_read 3 58369 NULL
36807 +il_dbgfs_status_read_58388 il_dbgfs_status_read 3 58388 NULL
36808 +_drbd_md_sync_page_io_58403 _drbd_md_sync_page_io 6 58403 NULL
36809 -+idetape_pad_zeros_58406 idetape_pad_zeros 2 58406 NULL
36810 ++kvm_mmu_write_protect_pt_masked_58406 kvm_mmu_write_protect_pt_masked 3 58406 NULL nohasharray
36811 ++idetape_pad_zeros_58406 idetape_pad_zeros 2 58406 &kvm_mmu_write_protect_pt_masked_58406
36812 +i2400m_pld_size_58415 i2400m_pld_size 0 58415 NULL
36813 +capabilities_read_58457 capabilities_read 3 58457 NULL
36814 +usnic_vnic_get_resources_58462 usnic_vnic_get_resources 3 58462 NULL
36815 +compat_do_ipt_set_ctl_58466 compat_do_ipt_set_ctl 4 58466 NULL nohasharray
36816 +lpfc_idiag_baracc_read_58466 lpfc_idiag_baracc_read 3 58466 &compat_do_ipt_set_ctl_58466
36817 +nv_rd08_58472 nv_rd08 0 58472 NULL
36818 -+acpi_tables_sysfs_init_58477 acpi_tables_sysfs_init 0 58477 NULL
36819 +snd_gf1_read_addr_58483 snd_gf1_read_addr 0 58483 NULL
36820 +snd_rme96_capture_copy_58484 snd_rme96_capture_copy 5 58484 NULL
36821 -+btrfs_cont_expand_58498 btrfs_cont_expand 2-3-0 58498 NULL
36822 ++btrfs_cont_expand_58498 btrfs_cont_expand 2-3 58498 NULL
36823 +tcf_hash_create_58507 tcf_hash_create 4 58507 NULL
36824 +rndis_add_response_58544 rndis_add_response 2 58544 NULL
36825 +wep_decrypt_fail_read_58567 wep_decrypt_fail_read 3 58567 NULL
36826 +scnprint_mac_oui_58578 scnprint_mac_oui 3-0 58578 NULL
36827 +cur_wm_latency_write_58581 cur_wm_latency_write 3 58581 NULL
36828 -+get_rhf_errstring_58582 get_rhf_errstring 3 58582 NULL
36829 +ea_read_inline_58589 ea_read_inline 0 58589 NULL
36830 +isku_sysfs_read_keys_thumbster_58590 isku_sysfs_read_keys_thumbster 6 58590 NULL
36831 +xip_file_read_58592 xip_file_read 3 58592 NULL
36832 +ecryptfs_write_end_58594 ecryptfs_write_end 5-3 58594 NULL
36833 +radeon_bo_size_58606 radeon_bo_size 0 58606 NULL
36834 ++btrfs_direct_IO_58608 btrfs_direct_IO 4 58608 NULL
36835 +skb_copy_to_page_nocache_58624 skb_copy_to_page_nocache 6 58624 NULL
36836 -+filemap_fdatawrite_range_58630 filemap_fdatawrite_range 0 58630 NULL
36837 +tx_tx_start_fw_gen_read_58648 tx_tx_start_fw_gen_read 3 58648 NULL
36838 +iwl_dbgfs_rx_handlers_write_58655 iwl_dbgfs_rx_handlers_write 3 58655 NULL
36839 +find_zero_58685 find_zero 0-1 58685 NULL
36840 +uwb_bce_print_IEs_58686 uwb_bce_print_IEs 4 58686 NULL
36841 +tps6586x_writes_58689 tps6586x_writes 2-3 58689 NULL
36842 -+scsi_setup_command_freelist_58703 scsi_setup_command_freelist 0 58703 NULL
36843 +vx_send_msg_58711 vx_send_msg 0 58711 NULL
36844 +csum_exist_in_range_58730 csum_exist_in_range 2-3 58730 NULL
36845 +frames_to_bytes_58741 frames_to_bytes 0-2 58741 NULL
36846 @@ -120366,10 +128207,9 @@ index 0000000..386792a
36847 +init_pci_cap_msi_perm_59033 init_pci_cap_msi_perm 2 59033 NULL
36848 +selinux_transaction_write_59038 selinux_transaction_write 3 59038 NULL
36849 +crypto_aead_reqsize_59039 crypto_aead_reqsize 0 59039 NULL
36850 -+regmap_bulk_write_59049 regmap_bulk_write 2-4 59049 NULL nohasharray
36851 -+i8042_enable_kbd_port_59049 i8042_enable_kbd_port 0 59049 &regmap_bulk_write_59049
36852 ++regmap_bulk_write_59049 regmap_bulk_write 2-4 59049 NULL
36853 +mmc_sd_num_wr_blocks_59112 mmc_sd_num_wr_blocks 0 59112 NULL
36854 -+sta_tx_latency_stat_table_59122 sta_tx_latency_stat_table 0-4-5 59122 NULL nohasharray
36855 ++sta_tx_latency_stat_table_59122 sta_tx_latency_stat_table 5-4-0 59122 NULL nohasharray
36856 +scsi_io_completion_59122 scsi_io_completion 2 59122 &sta_tx_latency_stat_table_59122
36857 +nfc_llcp_send_i_frame_59130 nfc_llcp_send_i_frame 3 59130 NULL
36858 +framebuffer_alloc_59145 framebuffer_alloc 1 59145 NULL nohasharray
36859 @@ -120380,15 +128220,12 @@ index 0000000..386792a
36860 +setup_window_59178 setup_window 4-2-5-7 59178 NULL
36861 +ocfs2_move_extent_59187 ocfs2_move_extent 2-5 59187 NULL
36862 +xfs_iext_realloc_indirect_59211 xfs_iext_realloc_indirect 2 59211 NULL
36863 -+check_mapped_selector_name_59216 check_mapped_selector_name 5 59216 NULL
36864 +dt3155_read_59226 dt3155_read 3 59226 NULL
36865 +paging64_gpte_to_gfn_lvl_59229 paging64_gpte_to_gfn_lvl 0-2-1 59229 NULL
36866 +nla_len_59258 nla_len 0 59258 NULL
36867 +drbd_bm_write_page_59290 drbd_bm_write_page 2 59290 NULL
36868 +btrfs_insert_dir_item_59304 btrfs_insert_dir_item 4 59304 NULL
36869 +fd_copyout_59323 fd_copyout 3 59323 NULL
36870 -+read_9287_modal_eeprom_59327 read_9287_modal_eeprom 3 59327 NULL
36871 -+set_state_private_59336 set_state_private 0 59336 NULL
36872 +rx_defrag_in_process_called_read_59338 rx_defrag_in_process_called_read 3 59338 NULL
36873 +xfs_attrmulti_attr_set_59346 xfs_attrmulti_attr_set 4 59346 NULL
36874 +f2fs_fallocate_59377 f2fs_fallocate 4-3 59377 NULL
36875 @@ -120396,31 +128233,25 @@ index 0000000..386792a
36876 +journal_init_dev_59384 journal_init_dev 5 59384 NULL
36877 +__net_get_random_once_59389 __net_get_random_once 2 59389 NULL
36878 +isku_sysfs_read_keys_function_59412 isku_sysfs_read_keys_function 6 59412 NULL
36879 -+pci_ctrl_read_59424 pci_ctrl_read 0 59424 NULL
36880 +vxge_hw_ring_rxds_per_block_get_59425 vxge_hw_ring_rxds_per_block_get 0 59425 NULL
36881 -+snd_pcm_tstamp_59431 snd_pcm_tstamp 0 59431 NULL
36882 +SyS_sched_setaffinity_59442 SyS_sched_setaffinity 2 59442 NULL
36883 +fs_path_ensure_buf_59445 fs_path_ensure_buf 2 59445 NULL
36884 +tipc_recv_stream_59456 tipc_recv_stream 4 59456 NULL
36885 +_iwl_dbgfs_bcast_filters_write_59491 _iwl_dbgfs_bcast_filters_write 3 59491 NULL
36886 -+rtw_cfg80211_set_mgnt_wpsp2pie_59497 rtw_cfg80211_set_mgnt_wpsp2pie 3 59497 NULL
36887 +ib_copy_from_udata_59502 ib_copy_from_udata 3 59502 NULL
36888 +C_SYSC_get_mempolicy_59516 C_SYSC_get_mempolicy 3 59516 NULL
36889 +mic_vringh_copy_59523 mic_vringh_copy 4 59523 NULL
36890 -+msix_setup_entries_59545 msix_setup_entries 0 59545 NULL nohasharray
36891 -+idr_alloc_59545 idr_alloc 0 59545 &msix_setup_entries_59545
36892 +mpi_get_nbits_59551 mpi_get_nbits 0 59551 NULL
36893 +tunables_write_59563 tunables_write 3 59563 NULL
36894 +bio_split_59564 bio_split 2 59564 NULL
36895 +__copy_from_user_ll_nozero_59571 __copy_from_user_ll_nozero 0-3 59571 NULL
36896 +memdup_user_59590 memdup_user 2 59590 NULL
36897 -+xrcdn_free_res_59616 xrcdn_free_res 5 59616 NULL nohasharray
36898 -+mem_fwlog_free_mem_blks_read_59616 mem_fwlog_free_mem_blks_read 3 59616 &xrcdn_free_res_59616
36899 ++mem_fwlog_free_mem_blks_read_59616 mem_fwlog_free_mem_blks_read 3 59616 NULL nohasharray
36900 ++xrcdn_free_res_59616 xrcdn_free_res 5 59616 &mem_fwlog_free_mem_blks_read_59616
36901 +ath6kl_endpoint_stats_write_59621 ath6kl_endpoint_stats_write 3 59621 NULL
36902 +mtrr_write_59622 mtrr_write 3 59622 NULL
36903 +find_first_zero_bit_59636 find_first_zero_bit 0 59636 NULL
36904 +SyS_setdomainname_59646 SyS_setdomainname 2 59646 NULL
36905 -+file_update_time_59647 file_update_time 0 59647 NULL
36906 +hidraw_read_59650 hidraw_read 3 59650 NULL
36907 +v9fs_xattr_set_acl_59651 v9fs_xattr_set_acl 4 59651 NULL
36908 +__devcgroup_check_permission_59665 __devcgroup_check_permission 0 59665 NULL
36909 @@ -120428,15 +128259,12 @@ index 0000000..386792a
36910 +alloc_dca_provider_59670 alloc_dca_provider 2 59670 NULL
36911 +mic_calc_failure_read_59700 mic_calc_failure_read 3 59700 NULL
36912 +ioperm_get_59701 ioperm_get 4-3 59701 NULL
36913 -+snd_pcm_info_user_59711 snd_pcm_info_user 0 59711 NULL
36914 +prism2_info_scanresults_59729 prism2_info_scanresults 3 59729 NULL
36915 +ieee80211_if_read_fwded_unicast_59740 ieee80211_if_read_fwded_unicast 3 59740 NULL
36916 -+fat_direct_IO_59741 fat_direct_IO 4 59741 NULL
36917 +qib_decode_7220_sdma_errs_59745 qib_decode_7220_sdma_errs 4 59745 NULL
36918 +strnlen_59746 strnlen 0 59746 NULL
36919 +ext3_acl_count_59754 ext3_acl_count 0-1 59754 NULL
36920 -+long_retry_limit_read_59766 long_retry_limit_read 3 59766 NULL nohasharray
36921 -+cap_inode_need_killpriv_59766 cap_inode_need_killpriv 0 59766 &long_retry_limit_read_59766
36922 ++long_retry_limit_read_59766 long_retry_limit_read 3 59766 NULL
36923 +venus_remove_59781 venus_remove 4 59781 NULL
36924 +mei_nfc_recv_59784 mei_nfc_recv 3 59784 NULL
36925 +C_SYSC_preadv_59801 C_SYSC_preadv 3 59801 NULL
36926 @@ -120445,6 +128273,7 @@ index 0000000..386792a
36927 +ieee80211_if_read_dot11MeshHWMPmaxPREQretries_59829 ieee80211_if_read_dot11MeshHWMPmaxPREQretries 3 59829 NULL
36928 +gspca_dev_probe2_59833 gspca_dev_probe2 4 59833 NULL
36929 +regmap_raw_write_async_59849 regmap_raw_write_async 2-4 59849 NULL
36930 ++biovec_create_pool_59878 biovec_create_pool 1 59878 NULL
36931 +pvr2_ioread_set_sync_key_59882 pvr2_ioread_set_sync_key 3 59882 NULL
36932 +l2cap_sock_recvmsg_59886 l2cap_sock_recvmsg 4 59886 NULL
36933 +ffs_prepare_buffer_59892 ffs_prepare_buffer 2 59892 NULL
36934 @@ -120469,6 +128298,7 @@ index 0000000..386792a
36935 +compat_writev_60063 compat_writev 3 60063 NULL
36936 +ath6kl_listen_int_write_60066 ath6kl_listen_int_write 3 60066 NULL
36937 +c4iw_num_stags_60073 c4iw_num_stags 0 60073 NULL
36938 ++usb_os_desc_prepare_interf_dir_60075 usb_os_desc_prepare_interf_dir 2 60075 NULL
36939 +rxrpc_kernel_send_data_60083 rxrpc_kernel_send_data 3 60083 NULL
36940 +ieee80211_if_fmt_fwded_frames_60103 ieee80211_if_fmt_fwded_frames 3 60103 NULL
36941 +SYSC_msgsnd_60113 SYSC_msgsnd 3 60113 NULL
36942 @@ -120477,11 +128307,10 @@ index 0000000..386792a
36943 +ld_usb_read_60156 ld_usb_read 3 60156 NULL
36944 +jmb38x_ms_count_slots_60164 jmb38x_ms_count_slots 0 60164 NULL
36945 +init_state_60165 init_state 2 60165 NULL
36946 -+jffs2_alloc_full_dirent_60179 jffs2_alloc_full_dirent 1 60179 NULL nohasharray
36947 -+sg_build_sgat_60179 sg_build_sgat 3 60179 &jffs2_alloc_full_dirent_60179
36948 ++sg_build_sgat_60179 sg_build_sgat 3 60179 NULL nohasharray
36949 ++jffs2_alloc_full_dirent_60179 jffs2_alloc_full_dirent 1 60179 &sg_build_sgat_60179
36950 +fuse_async_req_send_60183 fuse_async_req_send 0-3 60183 NULL
36951 -+arch_setup_msi_irqs_60193 arch_setup_msi_irqs 0 60193 NULL nohasharray
36952 -+rx_rx_tkip_replays_read_60193 rx_rx_tkip_replays_read 3 60193 &arch_setup_msi_irqs_60193
36953 ++rx_rx_tkip_replays_read_60193 rx_rx_tkip_replays_read 3 60193 NULL
36954 +qib_reg_phys_mr_60202 qib_reg_phys_mr 3 60202 NULL
36955 +btrfs_get_token_16_60220 btrfs_get_token_16 0 60220 NULL
36956 +irq_alloc_domain_generic_chips_60264 irq_alloc_domain_generic_chips 2-3 60264 NULL
36957 @@ -120508,16 +128337,15 @@ index 0000000..386792a
36958 +v9fs_fid_readn_60544 v9fs_fid_readn 4 60544 NULL
36959 +nonpaging_map_60551 nonpaging_map 4 60551 NULL
36960 +osc_lockless_truncate_seq_write_60553 osc_lockless_truncate_seq_write 3 60553 NULL
36961 ++xfs_vm_direct_IO_60557 xfs_vm_direct_IO 4 60557 NULL
36962 +tracing_entries_write_60563 tracing_entries_write 3 60563 NULL
36963 +memblock_virt_alloc_try_nid_nopanic_60604 memblock_virt_alloc_try_nid_nopanic 1 60604 NULL
36964 -+inode_change_ok_60614 inode_change_ok 0 60614 NULL
36965 +skb_transport_offset_60619 skb_transport_offset 0 60619 NULL
36966 +wl1273_fm_fops_write_60621 wl1273_fm_fops_write 3 60621 NULL
36967 +acl_alloc_stack_init_60630 acl_alloc_stack_init 1 60630 NULL
36968 +__proc_lnet_stats_60647 __proc_lnet_stats 5 60647 NULL
36969 +if_sdio_host_to_card_60666 if_sdio_host_to_card 4 60666 NULL
36970 +ieee80211_if_read_dot11MeshConfirmTimeout_60670 ieee80211_if_read_dot11MeshConfirmTimeout 3 60670 NULL
36971 -+vga_rcrt_60731 vga_rcrt 0 60731 NULL
36972 +snd_ice1712_ds_read_60754 snd_ice1712_ds_read 0 60754 NULL
36973 +raid_status_60755 raid_status 5 60755 NULL
36974 +sel_write_checkreqprot_60774 sel_write_checkreqprot 3 60774 NULL
36975 @@ -120525,7 +128353,6 @@ index 0000000..386792a
36976 +acl_alloc_num_60778 acl_alloc_num 1-2 60778 NULL
36977 +snd_pcm_oss_readv3_60792 snd_pcm_oss_readv3 3 60792 NULL
36978 +pwr_tx_with_ps_read_60851 pwr_tx_with_ps_read 3 60851 NULL
36979 -+__clone_and_map_data_bio_60861 __clone_and_map_data_bio 3-4 60861 NULL
36980 +alloc_buf_60864 alloc_buf 3-2 60864 NULL
36981 +generic_writepages_60871 generic_writepages 0 60871 NULL
36982 +ubifs_read_one_lp_60882 ubifs_read_one_lp 0 60882 NULL
36983 @@ -120538,16 +128365,15 @@ index 0000000..386792a
36984 +mwifiex_alloc_sdio_mpa_buffers_60961 mwifiex_alloc_sdio_mpa_buffers 2-3 60961 NULL
36985 +__a2mp_build_60987 __a2mp_build 3 60987 NULL
36986 +hsc_msg_alloc_60990 hsc_msg_alloc 1 60990 NULL
36987 ++generic_file_direct_write_60995 generic_file_direct_write 0 60995 NULL
36988 +ath6kl_lrssi_roam_read_61022 ath6kl_lrssi_roam_read 3 61022 NULL
36989 +graph_depth_write_61024 graph_depth_write 3 61024 NULL
36990 +sdhci_pltfm_register_61031 sdhci_pltfm_register 3 61031 NULL
36991 +lpfc_idiag_queacc_write_61043 lpfc_idiag_queacc_write 3 61043 NULL
36992 +symtab_init_61050 symtab_init 2 61050 NULL
36993 +fuse_send_write_61053 fuse_send_write 0-4 61053 NULL
36994 -+snd_pcm_pause_61054 snd_pcm_pause 0 61054 NULL
36995 +bitmap_scnlistprintf_61062 bitmap_scnlistprintf 2-0 61062 NULL
36996 +ahash_align_buffer_size_61070 ahash_align_buffer_size 0-1-2 61070 NULL
36997 -+snd_pcm_update_hw_ptr0_61084 snd_pcm_update_hw_ptr0 0 61084 NULL
36998 +get_derived_key_61100 get_derived_key 4 61100 NULL
36999 +i40e_calculate_l2fpm_size_61104 i40e_calculate_l2fpm_size 0-4-3-2-1 61104 NULL
37000 +alloc_chrdev_region_61112 alloc_chrdev_region 0 61112 NULL
37001 @@ -120558,20 +128384,19 @@ index 0000000..386792a
37002 +event_oom_late_read_61175 event_oom_late_read 3 61175 &pair_device_61175
37003 +dio_bio_add_page_61178 dio_bio_add_page 0 61178 NULL
37004 +SyS_prctl_61202 SyS_prctl 4 61202 NULL
37005 -+arch_hibernation_header_save_61212 arch_hibernation_header_save 0 61212 NULL
37006 ++srp_create_fr_pool_61207 srp_create_fr_pool 3 61207 NULL
37007 +smk_read_ambient_61220 smk_read_ambient 3 61220 NULL
37008 +v9fs_mmap_file_read_61262 v9fs_mmap_file_read 3 61262 NULL
37009 +btrfs_bio_alloc_61270 btrfs_bio_alloc 3 61270 NULL nohasharray
37010 -+find_get_pages_tag_61270 find_get_pages_tag 0 61270 &btrfs_bio_alloc_61270 nohasharray
37011 -+ifalias_store_61270 ifalias_store 4 61270 &find_get_pages_tag_61270
37012 -+vortex_adbdma_getlinearpos_61283 vortex_adbdma_getlinearpos 0 61283 NULL nohasharray
37013 -+hfsplus_getxattr_finder_info_61283 hfsplus_getxattr_finder_info 0 61283 &vortex_adbdma_getlinearpos_61283
37014 ++find_get_pages_tag_61270 find_get_pages_tag 0 61270 &btrfs_bio_alloc_61270
37015 ++hfsplus_getxattr_finder_info_61283 hfsplus_getxattr_finder_info 0 61283 NULL nohasharray
37016 ++vortex_adbdma_getlinearpos_61283 vortex_adbdma_getlinearpos 0 61283 &hfsplus_getxattr_finder_info_61283
37017 +nvme_trans_copy_to_user_61288 nvme_trans_copy_to_user 3 61288 NULL
37018 +xfer_from_user_61307 xfer_from_user 3 61307 NULL
37019 +xfrm_user_sec_ctx_size_61320 xfrm_user_sec_ctx_size 0 61320 NULL
37020 +C_SYSC_msgsnd_61330 C_SYSC_msgsnd 3 61330 NULL
37021 +write_file_spectral_short_repeat_61335 write_file_spectral_short_repeat 3 61335 NULL
37022 -+st5481_setup_isocpipes_61340 st5481_setup_isocpipes 6-4 61340 NULL
37023 ++st5481_setup_isocpipes_61340 st5481_setup_isocpipes 4-6 61340 NULL
37024 +rx_rx_wa_ba_not_expected_read_61341 rx_rx_wa_ba_not_expected_read 3 61341 NULL
37025 +__dm_get_reserved_ios_61342 __dm_get_reserved_ios 0-3-2 61342 NULL
37026 +debug_debug4_read_61367 debug_debug4_read 3 61367 NULL
37027 @@ -120598,10 +128423,7 @@ index 0000000..386792a
37028 +resize_stripes_61650 resize_stripes 2 61650 NULL
37029 +ttm_page_pool_free_61661 ttm_page_pool_free 2-0 61661 NULL
37030 +insert_one_name_61668 insert_one_name 7 61668 NULL
37031 -+snd_pcm_playback_avail_61671 snd_pcm_playback_avail 0 61671 NULL
37032 -+qib_format_hwmsg_61679 qib_format_hwmsg 2 61679 NULL
37033 +lock_loop_61681 lock_loop 1 61681 NULL
37034 -+__do_tune_cpucache_61684 __do_tune_cpucache 2 61684 NULL
37035 +filter_read_61692 filter_read 3 61692 NULL
37036 +iov_length_61716 iov_length 0 61716 NULL
37037 +fragmentation_threshold_read_61718 fragmentation_threshold_read 3 61718 NULL
37038 @@ -120618,18 +128440,13 @@ index 0000000..386792a
37039 +get_fw_name_61874 get_fw_name 3 61874 NULL
37040 +btrfs_ioctl_clone_61886 btrfs_ioctl_clone 3-4-5 61886 NULL
37041 +lprocfs_write_frac_u64_helper_61897 lprocfs_write_frac_u64_helper 2 61897 NULL
37042 -+lov_mds_md_stripecnt_61899 lov_mds_md_stripecnt 0-1 61899 NULL
37043 -+clear_refs_write_61904 clear_refs_write 3 61904 NULL
37044 -+kernfs_name_61910 kernfs_name 3 61910 NULL
37045 +rx_filter_arp_filter_read_61914 rx_filter_arp_filter_read 3 61914 NULL
37046 +au0828_init_isoc_61917 au0828_init_isoc 3-2-4 61917 NULL
37047 +sctp_sendmsg_61919 sctp_sendmsg 4 61919 NULL
37048 -+SyS_kexec_load_61946 SyS_kexec_load 2 61946 NULL
37049 +il4965_ucode_rx_stats_read_61948 il4965_ucode_rx_stats_read 3 61948 NULL
37050 +squashfs_read_id_index_table_61961 squashfs_read_id_index_table 4 61961 NULL
37051 +fix_read_error_61965 fix_read_error 4 61965 NULL
37052 +cow_file_range_61979 cow_file_range 3 61979 NULL
37053 -+set_extent_delalloc_61982 set_extent_delalloc 0 61982 NULL
37054 +dequeue_event_62000 dequeue_event 3 62000 NULL
37055 +xt_compat_match_offset_62011 xt_compat_match_offset 0 62011 NULL
37056 +SyS_setxattr_62019 SyS_setxattr 4 62019 NULL
37057 @@ -120639,16 +128456,12 @@ index 0000000..386792a
37058 +sctp_user_addto_chunk_62047 sctp_user_addto_chunk 2-3 62047 NULL
37059 +do_pselect_62061 do_pselect 1 62061 NULL
37060 +pcpu_alloc_bootmem_62074 pcpu_alloc_bootmem 2 62074 NULL
37061 -+fat_setattr_62084 fat_setattr 0 62084 NULL
37062 +jffs2_security_setxattr_62107 jffs2_security_setxattr 4 62107 NULL
37063 -+btrfs_direct_IO_62114 btrfs_direct_IO 4 62114 NULL
37064 +ip_recv_error_62117 ip_recv_error 3 62117 NULL
37065 +generic_block_fiemap_62122 generic_block_fiemap 4 62122 NULL
37066 +llc_ui_header_len_62131 llc_ui_header_len 0 62131 NULL
37067 -+qib_diag_write_62133 qib_diag_write 3 62133 NULL nohasharray
37068 -+kobject_add_varg_62133 kobject_add_varg 0 62133 &qib_diag_write_62133
37069 -+ql_status_62135 ql_status 5 62135 NULL nohasharray
37070 -+device_add_attrs_62135 device_add_attrs 0 62135 &ql_status_62135
37071 ++qib_diag_write_62133 qib_diag_write 3 62133 NULL
37072 ++ql_status_62135 ql_status 5 62135 NULL
37073 +video_usercopy_62151 video_usercopy 2 62151 NULL
37074 +SyS_getxattr_62166 SyS_getxattr 4 62166 NULL
37075 +prism54_wpa_bss_ie_get_62173 prism54_wpa_bss_ie_get 0 62173 NULL
37076 @@ -120657,7 +128470,6 @@ index 0000000..386792a
37077 +sock_kmalloc_62205 sock_kmalloc 2 62205 NULL
37078 +smk_read_syslog_62227 smk_read_syslog 3 62227 NULL
37079 +SYSC_setgroups16_62232 SYSC_setgroups16 1 62232 NULL
37080 -+nfsd_read_file_62241 nfsd_read_file 6 62241 NULL
37081 +ion_handle_test_dma_62262 ion_handle_test_dma 4-5 62262 NULL
37082 +il_dbgfs_sram_read_62296 il_dbgfs_sram_read 3 62296 NULL
37083 +sparse_early_usemaps_alloc_pgdat_section_62304 sparse_early_usemaps_alloc_pgdat_section 2 62304 NULL
37084 @@ -120670,8 +128482,7 @@ index 0000000..386792a
37085 +rx_rx_timeout_read_62389 rx_rx_timeout_read 3 62389 NULL
37086 +altera_irscan_62396 altera_irscan 2 62396 NULL
37087 +set_ssp_62411 set_ssp 4 62411 NULL
37088 -+udf_expand_file_adinicb_62470 udf_expand_file_adinicb 0 62470 NULL
37089 -+ext_rts51x_sd_execute_read_data_62501 ext_rts51x_sd_execute_read_data 9 62501 NULL
37090 ++tracing_saved_cmdlines_size_read_62491 tracing_saved_cmdlines_size_read 3 62491 NULL
37091 +pep_sendmsg_62524 pep_sendmsg 4 62524 NULL
37092 +test_iso_queue_62534 test_iso_queue 5 62534 NULL
37093 +debugfs_read_62535 debugfs_read 3 62535 NULL
37094 @@ -120679,7 +128490,6 @@ index 0000000..386792a
37095 +qib_refresh_qsfp_cache_62547 qib_refresh_qsfp_cache 0 62547 NULL
37096 +xfrm_user_policy_62573 xfrm_user_policy 4 62573 NULL
37097 +get_subdir_62581 get_subdir 3 62581 NULL
37098 -+nfsd_vfs_read_62605 nfsd_vfs_read 6 62605 NULL
37099 +dut_mode_write_62630 dut_mode_write 3 62630 NULL
37100 +vfs_fsync_range_62635 vfs_fsync_range 0 62635 NULL
37101 +lpfc_sli4_queue_alloc_62646 lpfc_sli4_queue_alloc 3 62646 NULL
37102 @@ -120691,7 +128501,9 @@ index 0000000..386792a
37103 +key_replays_read_62746 key_replays_read 3 62746 NULL
37104 +lov_verify_lmm_62747 lov_verify_lmm 2 62747 NULL
37105 +mwifiex_rdeeprom_write_62754 mwifiex_rdeeprom_write 3 62754 NULL
37106 -+ax25_sendmsg_62770 ax25_sendmsg 4 62770 NULL
37107 ++mxt_obj_instances_62764 mxt_obj_instances 0 62764 NULL
37108 ++copy_page_to_iter_iovec_62770 copy_page_to_iter_iovec 3-0 62770 NULL nohasharray
37109 ++ax25_sendmsg_62770 ax25_sendmsg 4 62770 &copy_page_to_iter_iovec_62770
37110 +C_SYSC_ipc_62776 C_SYSC_ipc 3 62776 NULL
37111 +SyS_sched_getaffinity_62786 SyS_sched_getaffinity 2 62786 NULL
37112 +dm_stats_account_io_62787 dm_stats_account_io 3 62787 NULL
37113 @@ -120700,7 +128512,6 @@ index 0000000..386792a
37114 +bio_get_nr_vecs_62838 bio_get_nr_vecs 0 62838 NULL
37115 +xlog_recover_add_to_trans_62839 xlog_recover_add_to_trans 4 62839 NULL
37116 +rx_fcs_err_read_62844 rx_fcs_err_read 3 62844 NULL
37117 -+read_nic_io_dword_62859 read_nic_io_dword 0 62859 NULL
37118 +l2tp_ip6_recvmsg_62874 l2tp_ip6_recvmsg 4 62874 NULL
37119 +aoechr_write_62883 aoechr_write 3 62883 NULL
37120 +if_spi_host_to_card_62890 if_spi_host_to_card 4 62890 NULL
37121 @@ -120708,6 +128519,7 @@ index 0000000..386792a
37122 +getdqbuf_62908 getdqbuf 1 62908 NULL
37123 +ll_statahead_agl_seq_write_62928 ll_statahead_agl_seq_write 3 62928 NULL
37124 +agp_create_user_memory_62955 agp_create_user_memory 1 62955 NULL
37125 ++hwdep_read_62992 hwdep_read 3 62992 NULL
37126 +kstrtoull_from_user_63026 kstrtoull_from_user 2 63026 NULL
37127 +__vb2_perform_fileio_63033 __vb2_perform_fileio 3 63033 NULL
37128 +pipeline_defrag_to_csum_swi_read_63037 pipeline_defrag_to_csum_swi_read 3 63037 NULL
37129 @@ -120718,7 +128530,6 @@ index 0000000..386792a
37130 +sep_prepare_input_output_dma_table_in_dcb_63087 sep_prepare_input_output_dma_table_in_dcb 4-5 63087 NULL
37131 +iwl_dbgfs_sensitivity_read_63116 iwl_dbgfs_sensitivity_read 3 63116 NULL
37132 +ext4_chunk_trans_blocks_63123 ext4_chunk_trans_blocks 0-2 63123 NULL
37133 -+snd_pcm_status_user_63140 snd_pcm_status_user 0 63140 NULL
37134 +ubifs_change_one_lp_63157 ubifs_change_one_lp 0 63157 NULL
37135 +smk_write_revoke_subj_63173 smk_write_revoke_subj 3 63173 NULL
37136 +SyS_syslog_63178 SyS_syslog 3 63178 NULL
37137 @@ -120728,25 +128539,23 @@ index 0000000..386792a
37138 +xfs_dir2_leaf_getdents_63262 xfs_dir2_leaf_getdents 3 63262 NULL
37139 +iwl_dbgfs_fw_error_dump_read_63263 iwl_dbgfs_fw_error_dump_read 3 63263 NULL
37140 +raid5_resize_63306 raid5_resize 2 63306 NULL
37141 ++nfsd_vfs_read_63307 nfsd_vfs_read 5 63307 NULL
37142 +ath10k_read_fw_dbglog_63323 ath10k_read_fw_dbglog 3 63323 NULL
37143 +proc_info_read_63344 proc_info_read 3 63344 NULL
37144 +ps_upsd_max_sptime_read_63362 ps_upsd_max_sptime_read 3 63362 NULL
37145 +idmouse_read_63374 idmouse_read 3 63374 NULL
37146 -+usbnet_read_cmd_nopm_63388 usbnet_read_cmd_nopm 7 63388 NULL nohasharray
37147 -+edac_pci_alloc_ctl_info_63388 edac_pci_alloc_ctl_info 1 63388 &usbnet_read_cmd_nopm_63388
37148 ++edac_pci_alloc_ctl_info_63388 edac_pci_alloc_ctl_info 1 63388 NULL nohasharray
37149 ++usbnet_read_cmd_nopm_63388 usbnet_read_cmd_nopm 7 63388 &edac_pci_alloc_ctl_info_63388
37150 +rxpipe_missed_beacon_host_int_trig_rx_data_read_63405 rxpipe_missed_beacon_host_int_trig_rx_data_read 3 63405 NULL
37151 -+nouveau_event_create_63411 nouveau_event_create 1 63411 NULL
37152 +l2cap_sock_sendmsg_63427 l2cap_sock_sendmsg 4 63427 NULL
37153 +nfsd_symlink_63442 nfsd_symlink 6 63442 NULL
37154 +si5351_bulk_write_63468 si5351_bulk_write 2-3 63468 NULL
37155 +snd_info_entry_write_63474 snd_info_entry_write 3 63474 NULL
37156 +reada_find_extent_63486 reada_find_extent 2 63486 NULL
37157 -+read_kcore_63488 read_kcore 3 63488 NULL
37158 +iwl_dbgfs_bcast_filters_read_63489 iwl_dbgfs_bcast_filters_read 3 63489 NULL
37159 +snd_pcm_plug_write_transfer_63503 snd_pcm_plug_write_transfer 0-3 63503 NULL
37160 +efx_mcdi_rpc_async_63529 efx_mcdi_rpc_async 4-5 63529 NULL
37161 -+ubi_more_leb_change_data_63534 ubi_more_leb_change_data 4 63534 NULL nohasharray
37162 -+generic_cont_expand_simple_63534 generic_cont_expand_simple 0 63534 &ubi_more_leb_change_data_63534
37163 ++ubi_more_leb_change_data_63534 ubi_more_leb_change_data 4 63534 NULL
37164 +write_file_spectral_period_63536 write_file_spectral_period 3 63536 NULL
37165 +if_sdio_read_scratch_63540 if_sdio_read_scratch 0 63540 NULL
37166 +append_to_buffer_63550 append_to_buffer 3 63550 NULL
37167 @@ -120766,7 +128575,6 @@ index 0000000..386792a
37168 +btrfs_insert_delayed_dir_index_63720 btrfs_insert_delayed_dir_index 4 63720 NULL
37169 +selinux_secctx_to_secid_63744 selinux_secctx_to_secid 2 63744 NULL
37170 +snd_pcm_oss_read1_63771 snd_pcm_oss_read1 3 63771 NULL
37171 -+snd_pcm_link_63772 snd_pcm_link 0 63772 NULL
37172 +snd_opl4_mem_proc_read_63774 snd_opl4_mem_proc_read 5 63774 NULL
37173 +spidev_compat_ioctl_63778 spidev_compat_ioctl 2 63778 NULL
37174 +mwifiex_11n_create_rx_reorder_tbl_63806 mwifiex_11n_create_rx_reorder_tbl 4 63806 NULL
37175 @@ -120788,6 +128596,7 @@ index 0000000..386792a
37176 +SyS_rt_sigpending_64018 SyS_rt_sigpending 2 64018 NULL
37177 +dbAllocDmapLev_64030 dbAllocDmapLev 0 64030 NULL
37178 +SyS_fsetxattr_64039 SyS_fsetxattr 4 64039 NULL
37179 ++__sock_create_64069 __sock_create 0 64069 NULL
37180 +get_u8_64076 get_u8 0 64076 NULL
37181 +xilly_malloc_64077 xilly_malloc 2 64077 NULL
37182 +sl_realloc_bufs_64086 sl_realloc_bufs 2 64086 NULL
37183 @@ -120806,25 +128615,22 @@ index 0000000..386792a
37184 +bnx2x_vf_mcast_64166 bnx2x_vf_mcast 4 64166 NULL
37185 +cpumask_scnprintf_64170 cpumask_scnprintf 0-2 64170 NULL
37186 +kernfs_iop_setxattr_64220 kernfs_iop_setxattr 4 64220 NULL
37187 -+xfs_vm_direct_IO_64223 xfs_vm_direct_IO 4 64223 NULL
37188 +read_pulse_64227 read_pulse 0-3 64227 NULL
37189 +ea_len_64229 ea_len 0 64229 NULL
37190 +io_capture_transfer_64276 io_capture_transfer 4 64276 NULL
37191 +btrfs_file_extent_offset_64278 btrfs_file_extent_offset 0 64278 NULL
37192 +sta_current_tx_rate_read_64286 sta_current_tx_rate_read 3 64286 NULL
37193 -+xfs_dir_cilookup_result_64288 xfs_dir_cilookup_result 3 64288 NULL nohasharray
37194 -+event_id_read_64288 event_id_read 3 64288 &xfs_dir_cilookup_result_64288
37195 ++event_id_read_64288 event_id_read 3 64288 NULL nohasharray
37196 ++xfs_dir_cilookup_result_64288 xfs_dir_cilookup_result 3 64288 &event_id_read_64288
37197 +ocfs2_block_check_validate_bhs_64302 ocfs2_block_check_validate_bhs 0 64302 NULL
37198 +snd_hda_get_sub_nodes_64304 snd_hda_get_sub_nodes 0 64304 NULL
37199 +error_error_bar_retry_read_64305 error_error_bar_retry_read 3 64305 NULL
37200 +sisusbcon_clear_64329 sisusbcon_clear 4-3-5 64329 NULL
37201 +ts_write_64336 ts_write 3 64336 NULL
37202 +usbtmc_write_64340 usbtmc_write 3 64340 NULL
37203 -+qlcnic_82xx_calculate_msix_vector_64354 qlcnic_82xx_calculate_msix_vector 0 64354 NULL
37204 +user_regset_copyin_64360 user_regset_copyin 7 64360 NULL
37205 +wlc_phy_loadsampletable_nphy_64367 wlc_phy_loadsampletable_nphy 3 64367 NULL
37206 -+reg_create_64372 reg_create 5 64372 NULL nohasharray
37207 -+bnx2_enable_msix_64372 bnx2_enable_msix 2 64372 &reg_create_64372
37208 ++reg_create_64372 reg_create 5 64372 NULL
37209 +ilo_write_64378 ilo_write 3 64378 NULL
37210 +btrfs_map_block_64379 btrfs_map_block 3 64379 NULL
37211 +vmcs_readl_64381 vmcs_readl 0 64381 NULL
37212 @@ -120836,7 +128642,6 @@ index 0000000..386792a
37213 +oom_adj_write_64428 oom_adj_write 3 64428 NULL
37214 +read_file_spectral_short_repeat_64431 read_file_spectral_short_repeat 3 64431 NULL
37215 +ax25_recvmsg_64441 ax25_recvmsg 4 64441 NULL
37216 -+__i2c_add_numbered_adapter_64445 __i2c_add_numbered_adapter 0 64445 NULL
37217 +single_open_size_64483 single_open_size 4 64483 NULL
37218 +p54_parse_rssical_64493 p54_parse_rssical 3 64493 NULL
37219 +msg_data_sz_64503 msg_data_sz 0 64503 NULL
37220 @@ -120868,6 +128673,7 @@ index 0000000..386792a
37221 +squashfs_read_inode_lookup_table_64739 squashfs_read_inode_lookup_table 4 64739 NULL
37222 +bio_map_kern_64751 bio_map_kern 3 64751 NULL
37223 +rt2x00debug_write_csr_64753 rt2x00debug_write_csr 3 64753 NULL
37224 ++hwdep_write_64776 hwdep_write 3 64776 NULL
37225 +message_for_md_64777 message_for_md 5 64777 NULL
37226 +isr_low_rssi_read_64789 isr_low_rssi_read 3 64789 NULL
37227 +regmap_reg_ranges_read_file_64798 regmap_reg_ranges_read_file 3 64798 NULL
37228 @@ -120876,7 +128682,6 @@ index 0000000..386792a
37229 +proc_projid_map_write_64810 proc_projid_map_write 3 64810 NULL
37230 +megaraid_change_queue_depth_64815 megaraid_change_queue_depth 2 64815 NULL
37231 +ecryptfs_send_miscdev_64816 ecryptfs_send_miscdev 2 64816 NULL
37232 -+do_kimage_alloc_64827 do_kimage_alloc 3 64827 NULL
37233 +altera_set_dr_pre_64862 altera_set_dr_pre 2 64862 NULL
37234 +pci_vc_do_save_buffer_64876 pci_vc_do_save_buffer 0 64876 NULL
37235 +lprocfs_write_u64_helper_64880 lprocfs_write_u64_helper 2 64880 NULL
37236 @@ -120887,22 +128692,20 @@ index 0000000..386792a
37237 +suspend_dtim_interval_read_64971 suspend_dtim_interval_read 3 64971 NULL
37238 +crypto_ahash_digestsize_65014 crypto_ahash_digestsize 0 65014 NULL
37239 +insert_dent_65034 insert_dent 7 65034 NULL
37240 -+snd_hda_get_pin_label_65035 snd_hda_get_pin_label 5 65035 NULL
37241 +ext4_ind_trans_blocks_65053 ext4_ind_trans_blocks 0-2 65053 NULL
37242 -+pcibios_enable_device_65059 pcibios_enable_device 0 65059 NULL
37243 +make_idx_node_65068 make_idx_node 0 65068 NULL
37244 +__alloc_bootmem_node_high_65076 __alloc_bootmem_node_high 2 65076 NULL
37245 +batadv_socket_write_65083 batadv_socket_write 3 65083 NULL
37246 +ocfs2_truncate_cluster_pages_65086 ocfs2_truncate_cluster_pages 2 65086 NULL
37247 +ath9k_dump_mci_btcoex_65090 ath9k_dump_mci_btcoex 3-0 65090 NULL
37248 -+scsi_add_host_with_dma_65093 scsi_add_host_with_dma 0 65093 NULL
37249 -+generic_ocp_write_65107 generic_ocp_write 4 65107 NULL
37250 +rx_rx_done_read_65217 rx_rx_done_read 3 65217 NULL
37251 -+print_endpoint_stat_65232 print_endpoint_stat 0-3-4 65232 NULL
37252 ++nouveau_event_create_65229 nouveau_event_create 2-1 65229 NULL
37253 ++print_endpoint_stat_65232 print_endpoint_stat 3-4-0 65232 NULL
37254 +whci_n_caps_65247 whci_n_caps 0 65247 NULL
37255 +kmalloc_parameter_65279 kmalloc_parameter 1 65279 NULL
37256 +compat_core_sys_select_65285 compat_core_sys_select 1 65285 NULL
37257 +mpi_set_buffer_65294 mpi_set_buffer 3 65294 NULL
37258 ++fat_direct_IO_65295 fat_direct_IO 4 65295 NULL
37259 +redirected_tty_write_65297 redirected_tty_write 3 65297 NULL
37260 +get_var_len_65304 get_var_len 0 65304 NULL
37261 +unpack_array_65318 unpack_array 0 65318 NULL
37262 @@ -120913,9 +128716,7 @@ index 0000000..386792a
37263 +SyS_writev_65372 SyS_writev 3 65372 NULL
37264 +__alloc_bootmem_nopanic_65397 __alloc_bootmem_nopanic 1 65397 NULL
37265 +trace_seq_to_user_65398 trace_seq_to_user 3 65398 NULL
37266 -+__read_vmcore_65402 __read_vmcore 2 65402 NULL
37267 +ocfs2_write_begin_nolock_65410 ocfs2_write_begin_nolock 3-4 65410 NULL
37268 -+device_add_groups_65423 device_add_groups 0 65423 NULL
37269 +xpc_kzalloc_cacheline_aligned_65433 xpc_kzalloc_cacheline_aligned 1 65433 NULL
37270 +usb_alloc_coherent_65444 usb_alloc_coherent 2 65444 NULL
37271 +il_dbgfs_wd_timeout_write_65464 il_dbgfs_wd_timeout_write 3 65464 NULL
37272 @@ -122339,10 +130140,10 @@ index 0000000..4ee2231
37273 + return 0;
37274 +}
37275 diff --git a/tools/include/linux/compiler.h b/tools/include/linux/compiler.h
37276 -index fbc6665..5e9ce79 100644
37277 +index 88461f0..6fb70a0 100644
37278 --- a/tools/include/linux/compiler.h
37279 +++ b/tools/include/linux/compiler.h
37280 -@@ -35,4 +35,12 @@
37281 +@@ -35,6 +35,14 @@
37282 # define unlikely(x) __builtin_expect(!!(x), 0)
37283 #endif
37284
37285 @@ -122354,6 +130155,8 @@ index fbc6665..5e9ce79 100644
37286 +# define __intentional_overflow(...)
37287 +#endif
37288 +
37289 + #define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x))
37290 +
37291 #endif /* _TOOLS_LINUX_COMPILER_H */
37292 diff --git a/tools/lib/api/Makefile b/tools/lib/api/Makefile
37293 index ce00f7e..0aca5e4 100644
37294 @@ -122394,7 +130197,7 @@ index 0a578fe..b81f62d 100644
37295 })
37296
37297 diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
37298 -index 56baae8..2c889c2 100644
37299 +index 4b6c01b..16eb755 100644
37300 --- a/virt/kvm/kvm_main.c
37301 +++ b/virt/kvm/kvm_main.c
37302 @@ -76,12 +76,17 @@ LIST_HEAD(vm_list);
37303 @@ -122417,7 +130220,7 @@ index 56baae8..2c889c2 100644
37304
37305 struct dentry *kvm_debugfs_dir;
37306
37307 -@@ -755,7 +760,7 @@ int __kvm_set_memory_region(struct kvm *kvm,
37308 +@@ -761,7 +766,7 @@ int __kvm_set_memory_region(struct kvm *kvm,
37309 /* We can read the guest memory with __xxx_user() later on. */
37310 if ((mem->slot < KVM_USER_MEM_SLOTS) &&
37311 ((mem->userspace_addr & (PAGE_SIZE - 1)) ||
37312 @@ -122426,7 +130229,7 @@ index 56baae8..2c889c2 100644
37313 (void __user *)(unsigned long)mem->userspace_addr,
37314 mem->memory_size)))
37315 goto out;
37316 -@@ -1612,9 +1617,17 @@ EXPORT_SYMBOL_GPL(kvm_read_guest_cached);
37317 +@@ -1618,9 +1623,17 @@ EXPORT_SYMBOL_GPL(kvm_read_guest_cached);
37318
37319 int kvm_clear_guest_page(struct kvm *kvm, gfn_t gfn, int offset, int len)
37320 {
37321 @@ -122446,7 +130249,7 @@ index 56baae8..2c889c2 100644
37322 }
37323 EXPORT_SYMBOL_GPL(kvm_clear_guest_page);
37324
37325 -@@ -1864,7 +1877,7 @@ static int kvm_vcpu_release(struct inode *inode, struct file *filp)
37326 +@@ -1870,7 +1883,7 @@ static int kvm_vcpu_release(struct inode *inode, struct file *filp)
37327 return 0;
37328 }
37329
37330 @@ -122455,7 +130258,7 @@ index 56baae8..2c889c2 100644
37331 .release = kvm_vcpu_release,
37332 .unlocked_ioctl = kvm_vcpu_ioctl,
37333 #ifdef CONFIG_COMPAT
37334 -@@ -2534,7 +2547,7 @@ out:
37335 +@@ -2540,7 +2553,7 @@ out:
37336 }
37337 #endif
37338
37339 @@ -122464,7 +130267,7 @@ index 56baae8..2c889c2 100644
37340 .release = kvm_vm_release,
37341 .unlocked_ioctl = kvm_vm_ioctl,
37342 #ifdef CONFIG_COMPAT
37343 -@@ -2634,7 +2647,7 @@ out:
37344 +@@ -2640,7 +2653,7 @@ out:
37345 return r;
37346 }
37347
37348 @@ -122473,7 +130276,7 @@ index 56baae8..2c889c2 100644
37349 .unlocked_ioctl = kvm_dev_ioctl,
37350 .compat_ioctl = kvm_dev_ioctl,
37351 .llseek = noop_llseek,
37352 -@@ -2660,7 +2673,7 @@ static void hardware_enable_nolock(void *junk)
37353 +@@ -2666,7 +2679,7 @@ static void hardware_enable_nolock(void *junk)
37354
37355 if (r) {
37356 cpumask_clear_cpu(cpu, cpus_hardware_enabled);
37357 @@ -122482,7 +130285,7 @@ index 56baae8..2c889c2 100644
37358 printk(KERN_INFO "kvm: enabling virtualization on "
37359 "CPU%d failed\n", cpu);
37360 }
37361 -@@ -2716,10 +2729,10 @@ static int hardware_enable_all(void)
37362 +@@ -2722,10 +2735,10 @@ static int hardware_enable_all(void)
37363
37364 kvm_usage_count++;
37365 if (kvm_usage_count == 1) {
37366 @@ -122495,7 +130298,7 @@ index 56baae8..2c889c2 100644
37367 hardware_disable_all_nolock();
37368 r = -EBUSY;
37369 }
37370 -@@ -3123,7 +3136,7 @@ static void kvm_sched_out(struct preempt_notifier *pn,
37371 +@@ -3130,7 +3143,7 @@ static void kvm_sched_out(struct preempt_notifier *pn,
37372 kvm_arch_vcpu_put(vcpu);
37373 }
37374
37375 @@ -122504,7 +130307,7 @@ index 56baae8..2c889c2 100644
37376 struct module *module)
37377 {
37378 int r;
37379 -@@ -3170,7 +3183,7 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
37380 +@@ -3177,7 +3190,7 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
37381 if (!vcpu_align)
37382 vcpu_align = __alignof__(struct kvm_vcpu);
37383 kvm_vcpu_cache = kmem_cache_create("kvm_vcpu", vcpu_size, vcpu_align,
37384 @@ -122513,7 +130316,7 @@ index 56baae8..2c889c2 100644
37385 if (!kvm_vcpu_cache) {
37386 r = -ENOMEM;
37387 goto out_free_3;
37388 -@@ -3180,9 +3193,11 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
37389 +@@ -3187,9 +3200,11 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
37390 if (r)
37391 goto out_free;
37392
37393 @@ -122525,7 +130328,7 @@ index 56baae8..2c889c2 100644
37394
37395 r = misc_register(&kvm_dev);
37396 if (r) {
37397 -@@ -3192,9 +3207,6 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
37398 +@@ -3199,9 +3214,6 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
37399
37400 register_syscore_ops(&kvm_syscore_ops);
37401
37402
37403 diff --git a/3.15.10/4425_grsec_remove_EI_PAX.patch b/3.16.1/4425_grsec_remove_EI_PAX.patch
37404 similarity index 100%
37405 rename from 3.15.10/4425_grsec_remove_EI_PAX.patch
37406 rename to 3.16.1/4425_grsec_remove_EI_PAX.patch
37407
37408 diff --git a/3.15.10/4427_force_XATTR_PAX_tmpfs.patch b/3.16.1/4427_force_XATTR_PAX_tmpfs.patch
37409 similarity index 100%
37410 rename from 3.15.10/4427_force_XATTR_PAX_tmpfs.patch
37411 rename to 3.16.1/4427_force_XATTR_PAX_tmpfs.patch
37412
37413 diff --git a/3.15.10/4430_grsec-remove-localversion-grsec.patch b/3.16.1/4430_grsec-remove-localversion-grsec.patch
37414 similarity index 100%
37415 rename from 3.15.10/4430_grsec-remove-localversion-grsec.patch
37416 rename to 3.16.1/4430_grsec-remove-localversion-grsec.patch
37417
37418 diff --git a/3.15.10/4435_grsec-mute-warnings.patch b/3.16.1/4435_grsec-mute-warnings.patch
37419 similarity index 100%
37420 rename from 3.15.10/4435_grsec-mute-warnings.patch
37421 rename to 3.16.1/4435_grsec-mute-warnings.patch
37422
37423 diff --git a/3.15.10/4440_grsec-remove-protected-paths.patch b/3.16.1/4440_grsec-remove-protected-paths.patch
37424 similarity index 100%
37425 rename from 3.15.10/4440_grsec-remove-protected-paths.patch
37426 rename to 3.16.1/4440_grsec-remove-protected-paths.patch
37427
37428 diff --git a/3.15.10/4450_grsec-kconfig-default-gids.patch b/3.16.1/4450_grsec-kconfig-default-gids.patch
37429 similarity index 100%
37430 rename from 3.15.10/4450_grsec-kconfig-default-gids.patch
37431 rename to 3.16.1/4450_grsec-kconfig-default-gids.patch
37432
37433 diff --git a/3.15.10/4465_selinux-avc_audit-log-curr_ip.patch b/3.16.1/4465_selinux-avc_audit-log-curr_ip.patch
37434 similarity index 100%
37435 rename from 3.15.10/4465_selinux-avc_audit-log-curr_ip.patch
37436 rename to 3.16.1/4465_selinux-avc_audit-log-curr_ip.patch
37437
37438 diff --git a/3.15.10/4470_disable-compat_vdso.patch b/3.16.1/4470_disable-compat_vdso.patch
37439 similarity index 100%
37440 rename from 3.15.10/4470_disable-compat_vdso.patch
37441 rename to 3.16.1/4470_disable-compat_vdso.patch
37442
37443 diff --git a/3.15.10/4475_emutramp_default_on.patch b/3.16.1/4475_emutramp_default_on.patch
37444 similarity index 100%
37445 rename from 3.15.10/4475_emutramp_default_on.patch
37446 rename to 3.16.1/4475_emutramp_default_on.patch
37447
37448 diff --git a/3.2.62/0000_README b/3.2.62/0000_README
37449 index 9c125a6..6c4c3cc 100644
37450 --- a/3.2.62/0000_README
37451 +++ b/3.2.62/0000_README
37452 @@ -166,7 +166,7 @@ Patch: 1061_linux-3.2.62.patch
37453 From: http://www.kernel.org
37454 Desc: Linux 3.2.62
37455
37456 -Patch: 4420_grsecurity-3.0-3.2.62-201408260037.patch
37457 +Patch: 4420_grsecurity-3.0-3.2.62-201408312002.patch
37458 From: http://www.grsecurity.net
37459 Desc: hardened-sources base patch from upstream grsecurity
37460
37461
37462 diff --git a/3.2.62/4420_grsecurity-3.0-3.2.62-201408260037.patch b/3.2.62/4420_grsecurity-3.0-3.2.62-201408312002.patch
37463 similarity index 99%
37464 rename from 3.2.62/4420_grsecurity-3.0-3.2.62-201408260037.patch
37465 rename to 3.2.62/4420_grsecurity-3.0-3.2.62-201408312002.patch
37466 index a4df725..ad26b87 100644
37467 --- a/3.2.62/4420_grsecurity-3.0-3.2.62-201408260037.patch
37468 +++ b/3.2.62/4420_grsecurity-3.0-3.2.62-201408312002.patch
37469 @@ -8747,7 +8747,7 @@ index fbb8005..984a269 100644
37470
37471 /* Atomic bit operations. */
37472 diff --git a/arch/sparc/mm/Makefile b/arch/sparc/mm/Makefile
37473 -index 301421c..e2535d1 100644
37474 +index 301421c1..e2535d1 100644
37475 --- a/arch/sparc/mm/Makefile
37476 +++ b/arch/sparc/mm/Makefile
37477 @@ -2,7 +2,7 @@
37478 @@ -39211,6 +39211,34 @@ index 828a0dd..6efc0ea 100644
37479
37480 spin_lock_irqsave(&djrcv_dev->lock, flags);
37481 if (dj_report->report_id == REPORT_ID_DJ_SHORT) {
37482 +diff --git a/drivers/hid/hid-magicmouse.c b/drivers/hid/hid-magicmouse.c
37483 +index 7cf3ffe..81356f6 100644
37484 +--- a/drivers/hid/hid-magicmouse.c
37485 ++++ b/drivers/hid/hid-magicmouse.c
37486 +@@ -308,6 +308,11 @@ static int magicmouse_raw_event(struct hid_device *hdev,
37487 + if (size < 4 || ((size - 4) % 9) != 0)
37488 + return 0;
37489 + npoints = (size - 4) / 9;
37490 ++ if (npoints > 15) {
37491 ++ hid_warn(hdev, "invalid size value (%d) for TRACKPAD_REPORT_ID\n",
37492 ++ size);
37493 ++ return 0;
37494 ++ }
37495 + msc->ntouches = 0;
37496 + for (ii = 0; ii < npoints; ii++)
37497 + magicmouse_emit_touch(msc, ii, data + ii * 9 + 4);
37498 +@@ -331,6 +336,11 @@ static int magicmouse_raw_event(struct hid_device *hdev,
37499 + if (size < 6 || ((size - 6) % 8) != 0)
37500 + return 0;
37501 + npoints = (size - 6) / 8;
37502 ++ if (npoints > 15) {
37503 ++ hid_warn(hdev, "invalid size value (%d) for MOUSE_REPORT_ID\n",
37504 ++ size);
37505 ++ return 0;
37506 ++ }
37507 + msc->ntouches = 0;
37508 + for (ii = 0; ii < npoints; ii++)
37509 + magicmouse_emit_touch(msc, ii, data + ii * 8 + 6);
37510 diff --git a/drivers/hid/hid-monterey.c b/drivers/hid/hid-monterey.c
37511 index dedf757..eb0271e 100644
37512 --- a/drivers/hid/hid-monterey.c