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.0.9/, 3.1.1/, 2.6.32/
Date: Thu, 17 Nov 2011 15:46:26
Message-Id: 8db43271ae8801fa3a42174835c5ff7776fd764d.blueness@gentoo
1 commit: 8db43271ae8801fa3a42174835c5ff7776fd764d
2 Author: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
3 AuthorDate: Thu Nov 17 15:45:06 2011 +0000
4 Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
5 CommitDate: Thu Nov 17 15:45:06 2011 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/hardened-patchset.git;a=commit;h=8db43271
7
8 Grsec/PaX: 2.2.2-2.6.32.48-201111161802 + 2.2.2-3.1.1-201111170037
9
10 ---
11 2.6.32/0000_README | 2 +-
12 ..._grsecurity-2.2.2-2.6.32.48-201111161802.patch} | 49 +-
13 3.0.9/1007_linux-3.0.8.patch | 1472 --
14 3.0.9/1008_linux-3.0.9.patch |10991 ---------------
15 {3.0.9 => 3.1.1}/0000_README | 10 +-
16 .../4420_grsecurity-2.2.2-3.1.1-201111170037.patch |14089 ++++++++++----------
17 .../4421_grsec-remove-localversion-grsec.patch | 0
18 {3.0.9 => 3.1.1}/4422_grsec-mute-warnings.patch | 0
19 .../4423_grsec-remove-protected-paths.patch | 0
20 .../4425_grsec-pax-without-grsec.patch | 8 +-
21 .../4430_grsec-kconfig-default-gids.patch | 0
22 {3.0.9 => 3.1.1}/4435_grsec-kconfig-gentoo.patch | 0
23 .../4437-grsec-kconfig-proc-user.patch | 0
24 .../4440_selinux-avc_audit-log-curr_ip.patch | 0
25 {3.0.9 => 3.1.1}/4445_disable-compat_vdso.patch | 0
26 15 files changed, 7002 insertions(+), 19619 deletions(-)
27
28 diff --git a/2.6.32/0000_README b/2.6.32/0000_README
29 index b6de0e5..09a7a03 100644
30 --- a/2.6.32/0000_README
31 +++ b/2.6.32/0000_README
32 @@ -3,7 +3,7 @@ README
33
34 Individual Patch Descriptions:
35 -----------------------------------------------------------------------------
36 -Patch: 4420_grsecurity-2.2.2-2.6.32.48-201111152003.patch
37 +Patch: 4420_grsecurity-2.2.2-2.6.32.48-201111161802.patch
38 From: http://www.grsecurity.net
39 Desc: hardened-sources base patch from upstream grsecurity
40
41
42 diff --git a/2.6.32/4420_grsecurity-2.2.2-2.6.32.48-201111152003.patch b/2.6.32/4420_grsecurity-2.2.2-2.6.32.48-201111161802.patch
43 similarity index 99%
44 rename from 2.6.32/4420_grsecurity-2.2.2-2.6.32.48-201111152003.patch
45 rename to 2.6.32/4420_grsecurity-2.2.2-2.6.32.48-201111161802.patch
46 index 7ed3623..8c18994 100644
47 --- a/2.6.32/4420_grsecurity-2.2.2-2.6.32.48-201111152003.patch
48 +++ b/2.6.32/4420_grsecurity-2.2.2-2.6.32.48-201111161802.patch
49 @@ -47259,7 +47259,7 @@ diff -urNp linux-2.6.32.48/fs/mbcache.c linux-2.6.32.48/fs/mbcache.c
50 #ifdef MB_CACHE_INDEXES_COUNT
51 diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
52 --- linux-2.6.32.48/fs/namei.c 2011-11-08 19:02:43.000000000 -0500
53 -+++ linux-2.6.32.48/fs/namei.c 2011-11-15 19:59:43.000000000 -0500
54 ++++ linux-2.6.32.48/fs/namei.c 2011-11-16 17:53:55.000000000 -0500
55 @@ -224,14 +224,6 @@ int generic_permission(struct inode *ino
56 return ret;
57
58 @@ -47536,16 +47536,14 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
59
60 error = user_path_parent(dfd, pathname, &nd, &name);
61 if (error)
62 -@@ -2250,6 +2359,19 @@ static long do_rmdir(int dfd, const char
63 +@@ -2250,6 +2359,17 @@ static long do_rmdir(int dfd, const char
64 error = PTR_ERR(dentry);
65 if (IS_ERR(dentry))
66 goto exit2;
67 +
68 + if (dentry->d_inode != NULL) {
69 -+ if (dentry->d_inode->i_nlink <= 1) {
70 -+ saved_ino = dentry->d_inode->i_ino;
71 -+ saved_dev = gr_get_dev_from_dentry(dentry);
72 -+ }
73 ++ saved_ino = dentry->d_inode->i_ino;
74 ++ saved_dev = gr_get_dev_from_dentry(dentry);
75 +
76 + if (!gr_acl_handle_rmdir(dentry, nd.path.mnt)) {
77 + error = -EACCES;
78 @@ -47556,7 +47554,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
79 error = mnt_want_write(nd.path.mnt);
80 if (error)
81 goto exit3;
82 -@@ -2257,6 +2379,8 @@ static long do_rmdir(int dfd, const char
83 +@@ -2257,6 +2377,8 @@ static long do_rmdir(int dfd, const char
84 if (error)
85 goto exit4;
86 error = vfs_rmdir(nd.path.dentry->d_inode, dentry);
87 @@ -47565,7 +47563,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
88 exit4:
89 mnt_drop_write(nd.path.mnt);
90 exit3:
91 -@@ -2318,6 +2442,8 @@ static long do_unlinkat(int dfd, const c
92 +@@ -2318,6 +2440,8 @@ static long do_unlinkat(int dfd, const c
93 struct dentry *dentry;
94 struct nameidata nd;
95 struct inode *inode = NULL;
96 @@ -47574,7 +47572,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
97
98 error = user_path_parent(dfd, pathname, &nd, &name);
99 if (error)
100 -@@ -2337,8 +2463,19 @@ static long do_unlinkat(int dfd, const c
101 +@@ -2337,8 +2461,19 @@ static long do_unlinkat(int dfd, const c
102 if (nd.last.name[nd.last.len])
103 goto slashes;
104 inode = dentry->d_inode;
105 @@ -47595,7 +47593,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
106 error = mnt_want_write(nd.path.mnt);
107 if (error)
108 goto exit2;
109 -@@ -2346,6 +2483,8 @@ static long do_unlinkat(int dfd, const c
110 +@@ -2346,6 +2481,8 @@ static long do_unlinkat(int dfd, const c
111 if (error)
112 goto exit3;
113 error = vfs_unlink(nd.path.dentry->d_inode, dentry);
114 @@ -47604,7 +47602,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
115 exit3:
116 mnt_drop_write(nd.path.mnt);
117 exit2:
118 -@@ -2424,6 +2563,11 @@ SYSCALL_DEFINE3(symlinkat, const char __
119 +@@ -2424,6 +2561,11 @@ SYSCALL_DEFINE3(symlinkat, const char __
120 if (IS_ERR(dentry))
121 goto out_unlock;
122
123 @@ -47616,7 +47614,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
124 error = mnt_want_write(nd.path.mnt);
125 if (error)
126 goto out_dput;
127 -@@ -2431,6 +2575,8 @@ SYSCALL_DEFINE3(symlinkat, const char __
128 +@@ -2431,6 +2573,8 @@ SYSCALL_DEFINE3(symlinkat, const char __
129 if (error)
130 goto out_drop_write;
131 error = vfs_symlink(nd.path.dentry->d_inode, dentry, from);
132 @@ -47625,7 +47623,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
133 out_drop_write:
134 mnt_drop_write(nd.path.mnt);
135 out_dput:
136 -@@ -2524,6 +2670,20 @@ SYSCALL_DEFINE5(linkat, int, olddfd, con
137 +@@ -2524,6 +2668,20 @@ SYSCALL_DEFINE5(linkat, int, olddfd, con
138 error = PTR_ERR(new_dentry);
139 if (IS_ERR(new_dentry))
140 goto out_unlock;
141 @@ -47646,7 +47644,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
142 error = mnt_want_write(nd.path.mnt);
143 if (error)
144 goto out_dput;
145 -@@ -2531,6 +2691,8 @@ SYSCALL_DEFINE5(linkat, int, olddfd, con
146 +@@ -2531,6 +2689,8 @@ SYSCALL_DEFINE5(linkat, int, olddfd, con
147 if (error)
148 goto out_drop_write;
149 error = vfs_link(old_path.dentry, nd.path.dentry->d_inode, new_dentry);
150 @@ -47655,7 +47653,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
151 out_drop_write:
152 mnt_drop_write(nd.path.mnt);
153 out_dput:
154 -@@ -2708,6 +2870,8 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
155 +@@ -2708,6 +2868,8 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
156 char *to;
157 int error;
158
159 @@ -47664,7 +47662,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
160 error = user_path_parent(olddfd, oldname, &oldnd, &from);
161 if (error)
162 goto exit;
163 -@@ -2764,6 +2928,12 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
164 +@@ -2764,6 +2926,12 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
165 if (new_dentry == trap)
166 goto exit5;
167
168 @@ -47677,7 +47675,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
169 error = mnt_want_write(oldnd.path.mnt);
170 if (error)
171 goto exit5;
172 -@@ -2773,6 +2943,9 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
173 +@@ -2773,6 +2941,9 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
174 goto exit6;
175 error = vfs_rename(old_dir->d_inode, old_dentry,
176 new_dir->d_inode, new_dentry);
177 @@ -47687,7 +47685,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
178 exit6:
179 mnt_drop_write(oldnd.path.mnt);
180 exit5:
181 -@@ -2798,6 +2971,8 @@ SYSCALL_DEFINE2(rename, const char __use
182 +@@ -2798,6 +2969,8 @@ SYSCALL_DEFINE2(rename, const char __use
183
184 int vfs_readlink(struct dentry *dentry, char __user *buffer, int buflen, const char *link)
185 {
186 @@ -47696,7 +47694,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
187 int len;
188
189 len = PTR_ERR(link);
190 -@@ -2807,7 +2982,14 @@ int vfs_readlink(struct dentry *dentry,
191 +@@ -2807,7 +2980,14 @@ int vfs_readlink(struct dentry *dentry,
192 len = strlen(link);
193 if (len > (unsigned) buflen)
194 len = buflen;
195 @@ -50637,8 +50635,8 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_alloc.c linux-2.6.32.48/grsecurity/g
196 +}
197 diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
198 --- linux-2.6.32.48/grsecurity/gracl.c 1969-12-31 19:00:00.000000000 -0500
199 -+++ linux-2.6.32.48/grsecurity/gracl.c 2011-11-15 19:59:43.000000000 -0500
200 -@@ -0,0 +1,4140 @@
201 ++++ linux-2.6.32.48/grsecurity/gracl.c 2011-11-16 17:55:28.000000000 -0500
202 +@@ -0,0 +1,4141 @@
203 +#include <linux/kernel.h>
204 +#include <linux/module.h>
205 +#include <linux/sched.h>
206 @@ -53460,6 +53458,7 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
207 +{
208 + struct name_entry *matchn;
209 + struct inodev_entry *inodev;
210 ++ struct inode *inode = new_dentry->d_inode;
211 + ino_t oldinode = old_dentry->d_inode->i_ino;
212 + dev_t olddev = __get_dev(old_dentry);
213 +
214 @@ -53482,16 +53481,16 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
215 + */
216 +
217 + write_lock(&gr_inode_lock);
218 -+ if (unlikely(replace && new_dentry->d_inode)) {
219 -+ ino_t newinode = new_dentry->d_inode->i_ino;
220 ++ if (unlikely(replace && inode)) {
221 ++ ino_t newinode = inode->i_ino;
222 + dev_t newdev = __get_dev(new_dentry);
223 + inodev = lookup_inodev_entry(newinode, newdev);
224 -+ if (inodev != NULL && (new_dentry->d_inode->i_nlink <= 1))
225 ++ if (inodev != NULL && ((inode->i_nlink <= 1) || S_ISDIR(inode->i_mode)))
226 + do_handle_delete(inodev, newinode, newdev);
227 + }
228 +
229 + inodev = lookup_inodev_entry(oldinode, olddev);
230 -+ if (inodev != NULL && (old_dentry->d_inode->i_nlink <= 1))
231 ++ if (inodev != NULL && ((old_dentry->d_inode->i_nlink <= 1) || S_ISDIR(old_dentry->d_inode->i_mode)))
232 + do_handle_delete(inodev, oldinode, olddev);
233 +
234 + if (unlikely((unsigned long)matchn))
235
236 diff --git a/3.0.9/1007_linux-3.0.8.patch b/3.0.9/1007_linux-3.0.8.patch
237 deleted file mode 100644
238 index 62a4bb6..0000000
239 --- a/3.0.9/1007_linux-3.0.8.patch
240 +++ /dev/null
241 @@ -1,1472 +0,0 @@
242 -diff --git a/Makefile b/Makefile
243 -index 11c4249..9f6e3cd 100644
244 ---- a/Makefile
245 -+++ b/Makefile
246 -@@ -1,6 +1,6 @@
247 - VERSION = 3
248 - PATCHLEVEL = 0
249 --SUBLEVEL = 7
250 -+SUBLEVEL = 8
251 - EXTRAVERSION =
252 - NAME = Sneaky Weasel
253 -
254 -diff --git a/arch/arm/kernel/perf_event_v7.c b/arch/arm/kernel/perf_event_v7.c
255 -index 4960686..4372763 100644
256 ---- a/arch/arm/kernel/perf_event_v7.c
257 -+++ b/arch/arm/kernel/perf_event_v7.c
258 -@@ -264,8 +264,8 @@ static const unsigned armv7_a9_perf_map[PERF_COUNT_HW_MAX] = {
259 - [PERF_COUNT_HW_CPU_CYCLES] = ARMV7_PERFCTR_CPU_CYCLES,
260 - [PERF_COUNT_HW_INSTRUCTIONS] =
261 - ARMV7_PERFCTR_INST_OUT_OF_RENAME_STAGE,
262 -- [PERF_COUNT_HW_CACHE_REFERENCES] = ARMV7_PERFCTR_COHERENT_LINE_HIT,
263 -- [PERF_COUNT_HW_CACHE_MISSES] = ARMV7_PERFCTR_COHERENT_LINE_MISS,
264 -+ [PERF_COUNT_HW_CACHE_REFERENCES] = ARMV7_PERFCTR_DCACHE_ACCESS,
265 -+ [PERF_COUNT_HW_CACHE_MISSES] = ARMV7_PERFCTR_DCACHE_REFILL,
266 - [PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = ARMV7_PERFCTR_PC_WRITE,
267 - [PERF_COUNT_HW_BRANCH_MISSES] = ARMV7_PERFCTR_PC_BRANCH_MIS_PRED,
268 - [PERF_COUNT_HW_BUS_CYCLES] = ARMV7_PERFCTR_CLOCK_CYCLES,
269 -diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
270 -index c19571c..4a4eba5 100644
271 ---- a/arch/arm/mm/init.c
272 -+++ b/arch/arm/mm/init.c
273 -@@ -473,6 +473,13 @@ static void __init free_unused_memmap(struct meminfo *mi)
274 - */
275 - bank_start = min(bank_start,
276 - ALIGN(prev_bank_end, PAGES_PER_SECTION));
277 -+#else
278 -+ /*
279 -+ * Align down here since the VM subsystem insists that the
280 -+ * memmap entries are valid from the bank start aligned to
281 -+ * MAX_ORDER_NR_PAGES.
282 -+ */
283 -+ bank_start = round_down(bank_start, MAX_ORDER_NR_PAGES);
284 - #endif
285 - /*
286 - * If we had a previous bank, and there is a space
287 -diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
288 -index 3032644..87488b9 100644
289 ---- a/arch/x86/mm/init.c
290 -+++ b/arch/x86/mm/init.c
291 -@@ -63,9 +63,8 @@ static void __init find_early_table_space(unsigned long end, int use_pse,
292 - #ifdef CONFIG_X86_32
293 - /* for fixmap */
294 - tables += roundup(__end_of_fixed_addresses * sizeof(pte_t), PAGE_SIZE);
295 --
296 -- good_end = max_pfn_mapped << PAGE_SHIFT;
297 - #endif
298 -+ good_end = max_pfn_mapped << PAGE_SHIFT;
299 -
300 - base = memblock_find_in_range(start, good_end, tables, PAGE_SIZE);
301 - if (base == MEMBLOCK_ERROR)
302 -diff --git a/crypto/ghash-generic.c b/crypto/ghash-generic.c
303 -index be44256..7835b8f 100644
304 ---- a/crypto/ghash-generic.c
305 -+++ b/crypto/ghash-generic.c
306 -@@ -67,6 +67,9 @@ static int ghash_update(struct shash_desc *desc,
307 - struct ghash_ctx *ctx = crypto_shash_ctx(desc->tfm);
308 - u8 *dst = dctx->buffer;
309 -
310 -+ if (!ctx->gf128)
311 -+ return -ENOKEY;
312 -+
313 - if (dctx->bytes) {
314 - int n = min(srclen, dctx->bytes);
315 - u8 *pos = dst + (GHASH_BLOCK_SIZE - dctx->bytes);
316 -@@ -119,6 +122,9 @@ static int ghash_final(struct shash_desc *desc, u8 *dst)
317 - struct ghash_ctx *ctx = crypto_shash_ctx(desc->tfm);
318 - u8 *buf = dctx->buffer;
319 -
320 -+ if (!ctx->gf128)
321 -+ return -ENOKEY;
322 -+
323 - ghash_flush(ctx, dctx);
324 - memcpy(dst, buf, GHASH_BLOCK_SIZE);
325 -
326 -diff --git a/drivers/firewire/sbp2.c b/drivers/firewire/sbp2.c
327 -index 41841a3..17cef86 100644
328 ---- a/drivers/firewire/sbp2.c
329 -+++ b/drivers/firewire/sbp2.c
330 -@@ -1198,6 +1198,10 @@ static int sbp2_remove(struct device *dev)
331 - {
332 - struct fw_unit *unit = fw_unit(dev);
333 - struct sbp2_target *tgt = dev_get_drvdata(&unit->device);
334 -+ struct sbp2_logical_unit *lu;
335 -+
336 -+ list_for_each_entry(lu, &tgt->lu_list, link)
337 -+ cancel_delayed_work_sync(&lu->work);
338 -
339 - sbp2_target_put(tgt);
340 - return 0;
341 -diff --git a/drivers/gpu/drm/radeon/atom.c b/drivers/gpu/drm/radeon/atom.c
342 -index ebdb0fd..9a0aee2 100644
343 ---- a/drivers/gpu/drm/radeon/atom.c
344 -+++ b/drivers/gpu/drm/radeon/atom.c
345 -@@ -277,7 +277,12 @@ static uint32_t atom_get_src_int(atom_exec_context *ctx, uint8_t attr,
346 - case ATOM_ARG_FB:
347 - idx = U8(*ptr);
348 - (*ptr)++;
349 -- val = gctx->scratch[((gctx->fb_base + idx) / 4)];
350 -+ if ((gctx->fb_base + (idx * 4)) > gctx->scratch_size_bytes) {
351 -+ DRM_ERROR("ATOM: fb read beyond scratch region: %d vs. %d\n",
352 -+ gctx->fb_base + (idx * 4), gctx->scratch_size_bytes);
353 -+ val = 0;
354 -+ } else
355 -+ val = gctx->scratch[(gctx->fb_base / 4) + idx];
356 - if (print)
357 - DEBUG("FB[0x%02X]", idx);
358 - break;
359 -@@ -531,7 +536,11 @@ static void atom_put_dst(atom_exec_context *ctx, int arg, uint8_t attr,
360 - case ATOM_ARG_FB:
361 - idx = U8(*ptr);
362 - (*ptr)++;
363 -- gctx->scratch[((gctx->fb_base + idx) / 4)] = val;
364 -+ if ((gctx->fb_base + (idx * 4)) > gctx->scratch_size_bytes) {
365 -+ DRM_ERROR("ATOM: fb write beyond scratch region: %d vs. %d\n",
366 -+ gctx->fb_base + (idx * 4), gctx->scratch_size_bytes);
367 -+ } else
368 -+ gctx->scratch[(gctx->fb_base / 4) + idx] = val;
369 - DEBUG("FB[0x%02X]", idx);
370 - break;
371 - case ATOM_ARG_PLL:
372 -@@ -1367,11 +1376,13 @@ int atom_allocate_fb_scratch(struct atom_context *ctx)
373 -
374 - usage_bytes = firmware_usage->asFirmwareVramReserveInfo[0].usFirmwareUseInKb * 1024;
375 - }
376 -+ ctx->scratch_size_bytes = 0;
377 - if (usage_bytes == 0)
378 - usage_bytes = 20 * 1024;
379 - /* allocate some scratch memory */
380 - ctx->scratch = kzalloc(usage_bytes, GFP_KERNEL);
381 - if (!ctx->scratch)
382 - return -ENOMEM;
383 -+ ctx->scratch_size_bytes = usage_bytes;
384 - return 0;
385 - }
386 -diff --git a/drivers/gpu/drm/radeon/atom.h b/drivers/gpu/drm/radeon/atom.h
387 -index a589a55..93cfe20 100644
388 ---- a/drivers/gpu/drm/radeon/atom.h
389 -+++ b/drivers/gpu/drm/radeon/atom.h
390 -@@ -137,6 +137,7 @@ struct atom_context {
391 - int cs_equal, cs_above;
392 - int io_mode;
393 - uint32_t *scratch;
394 -+ int scratch_size_bytes;
395 - };
396 -
397 - extern int atom_debug;
398 -diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
399 -index b7f0726..e2b2d78 100644
400 ---- a/drivers/gpu/drm/ttm/ttm_bo.c
401 -+++ b/drivers/gpu/drm/ttm/ttm_bo.c
402 -@@ -392,10 +392,12 @@ static int ttm_bo_handle_move_mem(struct ttm_buffer_object *bo,
403 - * Create and bind a ttm if required.
404 - */
405 -
406 -- if (!(new_man->flags & TTM_MEMTYPE_FLAG_FIXED) && (bo->ttm == NULL)) {
407 -- ret = ttm_bo_add_ttm(bo, false);
408 -- if (ret)
409 -- goto out_err;
410 -+ if (!(new_man->flags & TTM_MEMTYPE_FLAG_FIXED)) {
411 -+ if (bo->ttm == NULL) {
412 -+ ret = ttm_bo_add_ttm(bo, false);
413 -+ if (ret)
414 -+ goto out_err;
415 -+ }
416 -
417 - ret = ttm_tt_set_placement_caching(bo->ttm, mem->placement);
418 - if (ret)
419 -diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c
420 -index 77dbf40..ae3c6f5 100644
421 ---- a/drivers/gpu/drm/ttm/ttm_bo_util.c
422 -+++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
423 -@@ -635,13 +635,13 @@ int ttm_bo_move_accel_cleanup(struct ttm_buffer_object *bo,
424 - if (ret)
425 - return ret;
426 -
427 -- ttm_bo_free_old_node(bo);
428 - if ((man->flags & TTM_MEMTYPE_FLAG_FIXED) &&
429 - (bo->ttm != NULL)) {
430 - ttm_tt_unbind(bo->ttm);
431 - ttm_tt_destroy(bo->ttm);
432 - bo->ttm = NULL;
433 - }
434 -+ ttm_bo_free_old_node(bo);
435 - } else {
436 - /**
437 - * This should help pipeline ordinary buffer moves.
438 -diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
439 -index a756ee6..c946d90 100644
440 ---- a/drivers/hid/hid-ids.h
441 -+++ b/drivers/hid/hid-ids.h
442 -@@ -568,6 +568,9 @@
443 - #define USB_DEVICE_ID_SAMSUNG_IR_REMOTE 0x0001
444 - #define USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE 0x0600
445 -
446 -+#define USB_VENDOR_ID_SIGMA_MICRO 0x1c4f
447 -+#define USB_DEVICE_ID_SIGMA_MICRO_KEYBOARD 0x0002
448 -+
449 - #define USB_VENDOR_ID_SKYCABLE 0x1223
450 - #define USB_DEVICE_ID_SKYCABLE_WIRELESS_PRESENTER 0x3F07
451 -
452 -diff --git a/drivers/hid/hid-magicmouse.c b/drivers/hid/hid-magicmouse.c
453 -index 0ec91c1..56d0539 100644
454 ---- a/drivers/hid/hid-magicmouse.c
455 -+++ b/drivers/hid/hid-magicmouse.c
456 -@@ -501,9 +501,17 @@ static int magicmouse_probe(struct hid_device *hdev,
457 - }
458 - report->size = 6;
459 -
460 -+ /*
461 -+ * Some devices repond with 'invalid report id' when feature
462 -+ * report switching it into multitouch mode is sent to it.
463 -+ *
464 -+ * This results in -EIO from the _raw low-level transport callback,
465 -+ * but there seems to be no other way of switching the mode.
466 -+ * Thus the super-ugly hacky success check below.
467 -+ */
468 - ret = hdev->hid_output_raw_report(hdev, feature, sizeof(feature),
469 - HID_FEATURE_REPORT);
470 -- if (ret != sizeof(feature)) {
471 -+ if (ret != -EIO && ret != sizeof(feature)) {
472 - hid_err(hdev, "unable to request touch data (%d)\n", ret);
473 - goto err_stop_hw;
474 - }
475 -diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
476 -index 621959d..4bdb5d4 100644
477 ---- a/drivers/hid/usbhid/hid-quirks.c
478 -+++ b/drivers/hid/usbhid/hid-quirks.c
479 -@@ -89,6 +89,7 @@ static const struct hid_blacklist {
480 -
481 - { USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH, HID_QUIRK_MULTI_INPUT },
482 - { USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS, HID_QUIRK_MULTI_INPUT },
483 -+ { USB_VENDOR_ID_SIGMA_MICRO, USB_DEVICE_ID_SIGMA_MICRO_KEYBOARD, HID_QUIRK_NO_INIT_REPORTS },
484 - { 0, 0 }
485 - };
486 -
487 -diff --git a/drivers/hwmon/w83627ehf.c b/drivers/hwmon/w83627ehf.c
488 -index f2b377c..36d7f27 100644
489 ---- a/drivers/hwmon/w83627ehf.c
490 -+++ b/drivers/hwmon/w83627ehf.c
491 -@@ -390,7 +390,7 @@ temp_from_reg(u16 reg, s16 regval)
492 - {
493 - if (is_word_sized(reg))
494 - return LM75_TEMP_FROM_REG(regval);
495 -- return regval * 1000;
496 -+ return ((s8)regval) * 1000;
497 - }
498 -
499 - static inline u16
500 -@@ -398,7 +398,8 @@ temp_to_reg(u16 reg, long temp)
501 - {
502 - if (is_word_sized(reg))
503 - return LM75_TEMP_TO_REG(temp);
504 -- return DIV_ROUND_CLOSEST(SENSORS_LIMIT(temp, -127000, 128000), 1000);
505 -+ return (s8)DIV_ROUND_CLOSEST(SENSORS_LIMIT(temp, -127000, 128000),
506 -+ 1000);
507 - }
508 -
509 - /* Some of analog inputs have internal scaling (2x), 8mV is ADC LSB */
510 -@@ -1715,7 +1716,8 @@ static void w83627ehf_device_remove_files(struct device *dev)
511 - }
512 -
513 - /* Get the monitoring functions started */
514 --static inline void __devinit w83627ehf_init_device(struct w83627ehf_data *data)
515 -+static inline void __devinit w83627ehf_init_device(struct w83627ehf_data *data,
516 -+ enum kinds kind)
517 - {
518 - int i;
519 - u8 tmp, diode;
520 -@@ -1746,10 +1748,16 @@ static inline void __devinit w83627ehf_init_device(struct w83627ehf_data *data)
521 - w83627ehf_write_value(data, W83627EHF_REG_VBAT, tmp | 0x01);
522 -
523 - /* Get thermal sensor types */
524 -- diode = w83627ehf_read_value(data, W83627EHF_REG_DIODE);
525 -+ switch (kind) {
526 -+ case w83627ehf:
527 -+ diode = w83627ehf_read_value(data, W83627EHF_REG_DIODE);
528 -+ break;
529 -+ default:
530 -+ diode = 0x70;
531 -+ }
532 - for (i = 0; i < 3; i++) {
533 - if ((tmp & (0x02 << i)))
534 -- data->temp_type[i] = (diode & (0x10 << i)) ? 1 : 2;
535 -+ data->temp_type[i] = (diode & (0x10 << i)) ? 1 : 3;
536 - else
537 - data->temp_type[i] = 4; /* thermistor */
538 - }
539 -@@ -2016,7 +2024,7 @@ static int __devinit w83627ehf_probe(struct platform_device *pdev)
540 - }
541 -
542 - /* Initialize the chip */
543 -- w83627ehf_init_device(data);
544 -+ w83627ehf_init_device(data, sio_data->kind);
545 -
546 - data->vrm = vid_which_vrm();
547 - superio_enter(sio_data->sioreg);
548 -diff --git a/drivers/media/video/uvc/uvc_entity.c b/drivers/media/video/uvc/uvc_entity.c
549 -index 48fea37..29e2399 100644
550 ---- a/drivers/media/video/uvc/uvc_entity.c
551 -+++ b/drivers/media/video/uvc/uvc_entity.c
552 -@@ -49,7 +49,7 @@ static int uvc_mc_register_entity(struct uvc_video_chain *chain,
553 - if (remote == NULL)
554 - return -EINVAL;
555 -
556 -- source = (UVC_ENTITY_TYPE(remote) != UVC_TT_STREAMING)
557 -+ source = (UVC_ENTITY_TYPE(remote) == UVC_TT_STREAMING)
558 - ? (remote->vdev ? &remote->vdev->entity : NULL)
559 - : &remote->subdev.entity;
560 - if (source == NULL)
561 -diff --git a/drivers/platform/x86/samsung-laptop.c b/drivers/platform/x86/samsung-laptop.c
562 -index d347116..1658575 100644
563 ---- a/drivers/platform/x86/samsung-laptop.c
564 -+++ b/drivers/platform/x86/samsung-laptop.c
565 -@@ -601,6 +601,16 @@ static struct dmi_system_id __initdata samsung_dmi_table[] = {
566 - .callback = dmi_check_cb,
567 - },
568 - {
569 -+ .ident = "N150/N210/N220",
570 -+ .matches = {
571 -+ DMI_MATCH(DMI_SYS_VENDOR,
572 -+ "SAMSUNG ELECTRONICS CO., LTD."),
573 -+ DMI_MATCH(DMI_PRODUCT_NAME, "N150/N210/N220"),
574 -+ DMI_MATCH(DMI_BOARD_NAME, "N150/N210/N220"),
575 -+ },
576 -+ .callback = dmi_check_cb,
577 -+ },
578 -+ {
579 - .ident = "N150/N210/N220/N230",
580 - .matches = {
581 - DMI_MATCH(DMI_SYS_VENDOR,
582 -diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
583 -index fc7e57b..53e7d72 100644
584 ---- a/fs/cifs/cifsfs.c
585 -+++ b/fs/cifs/cifsfs.c
586 -@@ -566,6 +566,12 @@ cifs_get_root(struct smb_vol *vol, struct super_block *sb)
587 - struct inode *dir = dentry->d_inode;
588 - struct dentry *child;
589 -
590 -+ if (!dir) {
591 -+ dput(dentry);
592 -+ dentry = ERR_PTR(-ENOENT);
593 -+ break;
594 -+ }
595 -+
596 - /* skip separators */
597 - while (*s == sep)
598 - s++;
599 -@@ -581,10 +587,6 @@ cifs_get_root(struct smb_vol *vol, struct super_block *sb)
600 - mutex_unlock(&dir->i_mutex);
601 - dput(dentry);
602 - dentry = child;
603 -- if (!dentry->d_inode) {
604 -- dput(dentry);
605 -- dentry = ERR_PTR(-ENOENT);
606 -- }
607 - } while (!IS_ERR(dentry));
608 - _FreeXid(xid);
609 - kfree(full_path);
610 -diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
611 -index 168a80f..5cb8614 100644
612 ---- a/fs/fuse/dev.c
613 -+++ b/fs/fuse/dev.c
614 -@@ -258,10 +258,14 @@ void fuse_queue_forget(struct fuse_conn *fc, struct fuse_forget_link *forget,
615 - forget->forget_one.nlookup = nlookup;
616 -
617 - spin_lock(&fc->lock);
618 -- fc->forget_list_tail->next = forget;
619 -- fc->forget_list_tail = forget;
620 -- wake_up(&fc->waitq);
621 -- kill_fasync(&fc->fasync, SIGIO, POLL_IN);
622 -+ if (fc->connected) {
623 -+ fc->forget_list_tail->next = forget;
624 -+ fc->forget_list_tail = forget;
625 -+ wake_up(&fc->waitq);
626 -+ kill_fasync(&fc->fasync, SIGIO, POLL_IN);
627 -+ } else {
628 -+ kfree(forget);
629 -+ }
630 - spin_unlock(&fc->lock);
631 - }
632 -
633 -diff --git a/fs/hfsplus/hfsplus_fs.h b/fs/hfsplus/hfsplus_fs.h
634 -index d685752..4e7f64b 100644
635 ---- a/fs/hfsplus/hfsplus_fs.h
636 -+++ b/fs/hfsplus/hfsplus_fs.h
637 -@@ -13,6 +13,7 @@
638 - #include <linux/fs.h>
639 - #include <linux/mutex.h>
640 - #include <linux/buffer_head.h>
641 -+#include <linux/blkdev.h>
642 - #include "hfsplus_raw.h"
643 -
644 - #define DBG_BNODE_REFS 0x00000001
645 -@@ -110,7 +111,9 @@ struct hfsplus_vh;
646 - struct hfs_btree;
647 -
648 - struct hfsplus_sb_info {
649 -+ void *s_vhdr_buf;
650 - struct hfsplus_vh *s_vhdr;
651 -+ void *s_backup_vhdr_buf;
652 - struct hfsplus_vh *s_backup_vhdr;
653 - struct hfs_btree *ext_tree;
654 - struct hfs_btree *cat_tree;
655 -@@ -258,6 +261,15 @@ struct hfsplus_readdir_data {
656 - struct hfsplus_cat_key key;
657 - };
658 -
659 -+/*
660 -+ * Find minimum acceptible I/O size for an hfsplus sb.
661 -+ */
662 -+static inline unsigned short hfsplus_min_io_size(struct super_block *sb)
663 -+{
664 -+ return max_t(unsigned short, bdev_logical_block_size(sb->s_bdev),
665 -+ HFSPLUS_SECTOR_SIZE);
666 -+}
667 -+
668 - #define hfs_btree_open hfsplus_btree_open
669 - #define hfs_btree_close hfsplus_btree_close
670 - #define hfs_btree_write hfsplus_btree_write
671 -@@ -436,8 +448,8 @@ int hfsplus_compare_dentry(const struct dentry *parent,
672 - /* wrapper.c */
673 - int hfsplus_read_wrapper(struct super_block *);
674 - int hfs_part_find(struct super_block *, sector_t *, sector_t *);
675 --int hfsplus_submit_bio(struct block_device *bdev, sector_t sector,
676 -- void *data, int rw);
677 -+int hfsplus_submit_bio(struct super_block *sb, sector_t sector,
678 -+ void *buf, void **data, int rw);
679 -
680 - /* time macros */
681 - #define __hfsp_mt2ut(t) (be32_to_cpu(t) - 2082844800U)
682 -diff --git a/fs/hfsplus/part_tbl.c b/fs/hfsplus/part_tbl.c
683 -index 40ad88c..eb355d8 100644
684 ---- a/fs/hfsplus/part_tbl.c
685 -+++ b/fs/hfsplus/part_tbl.c
686 -@@ -88,11 +88,12 @@ static int hfs_parse_old_pmap(struct super_block *sb, struct old_pmap *pm,
687 - return -ENOENT;
688 - }
689 -
690 --static int hfs_parse_new_pmap(struct super_block *sb, struct new_pmap *pm,
691 -- sector_t *part_start, sector_t *part_size)
692 -+static int hfs_parse_new_pmap(struct super_block *sb, void *buf,
693 -+ struct new_pmap *pm, sector_t *part_start, sector_t *part_size)
694 - {
695 - struct hfsplus_sb_info *sbi = HFSPLUS_SB(sb);
696 - int size = be32_to_cpu(pm->pmMapBlkCnt);
697 -+ int buf_size = hfsplus_min_io_size(sb);
698 - int res;
699 - int i = 0;
700 -
701 -@@ -107,11 +108,14 @@ static int hfs_parse_new_pmap(struct super_block *sb, struct new_pmap *pm,
702 - if (++i >= size)
703 - return -ENOENT;
704 -
705 -- res = hfsplus_submit_bio(sb->s_bdev,
706 -- *part_start + HFS_PMAP_BLK + i,
707 -- pm, READ);
708 -- if (res)
709 -- return res;
710 -+ pm = (struct new_pmap *)((u8 *)pm + HFSPLUS_SECTOR_SIZE);
711 -+ if ((u8 *)pm - (u8 *)buf >= buf_size) {
712 -+ res = hfsplus_submit_bio(sb,
713 -+ *part_start + HFS_PMAP_BLK + i,
714 -+ buf, (void **)&pm, READ);
715 -+ if (res)
716 -+ return res;
717 -+ }
718 - } while (pm->pmSig == cpu_to_be16(HFS_NEW_PMAP_MAGIC));
719 -
720 - return -ENOENT;
721 -@@ -124,15 +128,15 @@ static int hfs_parse_new_pmap(struct super_block *sb, struct new_pmap *pm,
722 - int hfs_part_find(struct super_block *sb,
723 - sector_t *part_start, sector_t *part_size)
724 - {
725 -- void *data;
726 -+ void *buf, *data;
727 - int res;
728 -
729 -- data = kmalloc(HFSPLUS_SECTOR_SIZE, GFP_KERNEL);
730 -- if (!data)
731 -+ buf = kmalloc(hfsplus_min_io_size(sb), GFP_KERNEL);
732 -+ if (!buf)
733 - return -ENOMEM;
734 -
735 -- res = hfsplus_submit_bio(sb->s_bdev, *part_start + HFS_PMAP_BLK,
736 -- data, READ);
737 -+ res = hfsplus_submit_bio(sb, *part_start + HFS_PMAP_BLK,
738 -+ buf, &data, READ);
739 - if (res)
740 - goto out;
741 -
742 -@@ -141,13 +145,13 @@ int hfs_part_find(struct super_block *sb,
743 - res = hfs_parse_old_pmap(sb, data, part_start, part_size);
744 - break;
745 - case HFS_NEW_PMAP_MAGIC:
746 -- res = hfs_parse_new_pmap(sb, data, part_start, part_size);
747 -+ res = hfs_parse_new_pmap(sb, buf, data, part_start, part_size);
748 - break;
749 - default:
750 - res = -ENOENT;
751 - break;
752 - }
753 - out:
754 -- kfree(data);
755 -+ kfree(buf);
756 - return res;
757 - }
758 -diff --git a/fs/hfsplus/super.c b/fs/hfsplus/super.c
759 -index 84a47b7..c3a76fd 100644
760 ---- a/fs/hfsplus/super.c
761 -+++ b/fs/hfsplus/super.c
762 -@@ -197,17 +197,17 @@ int hfsplus_sync_fs(struct super_block *sb, int wait)
763 - write_backup = 1;
764 - }
765 -
766 -- error2 = hfsplus_submit_bio(sb->s_bdev,
767 -+ error2 = hfsplus_submit_bio(sb,
768 - sbi->part_start + HFSPLUS_VOLHEAD_SECTOR,
769 -- sbi->s_vhdr, WRITE_SYNC);
770 -+ sbi->s_vhdr_buf, NULL, WRITE_SYNC);
771 - if (!error)
772 - error = error2;
773 - if (!write_backup)
774 - goto out;
775 -
776 -- error2 = hfsplus_submit_bio(sb->s_bdev,
777 -+ error2 = hfsplus_submit_bio(sb,
778 - sbi->part_start + sbi->sect_count - 2,
779 -- sbi->s_backup_vhdr, WRITE_SYNC);
780 -+ sbi->s_backup_vhdr_buf, NULL, WRITE_SYNC);
781 - if (!error)
782 - error2 = error;
783 - out:
784 -@@ -251,8 +251,8 @@ static void hfsplus_put_super(struct super_block *sb)
785 - hfs_btree_close(sbi->ext_tree);
786 - iput(sbi->alloc_file);
787 - iput(sbi->hidden_dir);
788 -- kfree(sbi->s_vhdr);
789 -- kfree(sbi->s_backup_vhdr);
790 -+ kfree(sbi->s_vhdr_buf);
791 -+ kfree(sbi->s_backup_vhdr_buf);
792 - unload_nls(sbi->nls);
793 - kfree(sb->s_fs_info);
794 - sb->s_fs_info = NULL;
795 -@@ -508,8 +508,8 @@ out_close_cat_tree:
796 - out_close_ext_tree:
797 - hfs_btree_close(sbi->ext_tree);
798 - out_free_vhdr:
799 -- kfree(sbi->s_vhdr);
800 -- kfree(sbi->s_backup_vhdr);
801 -+ kfree(sbi->s_vhdr_buf);
802 -+ kfree(sbi->s_backup_vhdr_buf);
803 - out_unload_nls:
804 - unload_nls(sbi->nls);
805 - unload_nls(nls);
806 -diff --git a/fs/hfsplus/wrapper.c b/fs/hfsplus/wrapper.c
807 -index 4ac88ff..7b8112d 100644
808 ---- a/fs/hfsplus/wrapper.c
809 -+++ b/fs/hfsplus/wrapper.c
810 -@@ -31,25 +31,67 @@ static void hfsplus_end_io_sync(struct bio *bio, int err)
811 - complete(bio->bi_private);
812 - }
813 -
814 --int hfsplus_submit_bio(struct block_device *bdev, sector_t sector,
815 -- void *data, int rw)
816 -+/*
817 -+ * hfsplus_submit_bio - Perfrom block I/O
818 -+ * @sb: super block of volume for I/O
819 -+ * @sector: block to read or write, for blocks of HFSPLUS_SECTOR_SIZE bytes
820 -+ * @buf: buffer for I/O
821 -+ * @data: output pointer for location of requested data
822 -+ * @rw: direction of I/O
823 -+ *
824 -+ * The unit of I/O is hfsplus_min_io_size(sb), which may be bigger than
825 -+ * HFSPLUS_SECTOR_SIZE, and @buf must be sized accordingly. On reads
826 -+ * @data will return a pointer to the start of the requested sector,
827 -+ * which may not be the same location as @buf.
828 -+ *
829 -+ * If @sector is not aligned to the bdev logical block size it will
830 -+ * be rounded down. For writes this means that @buf should contain data
831 -+ * that starts at the rounded-down address. As long as the data was
832 -+ * read using hfsplus_submit_bio() and the same buffer is used things
833 -+ * will work correctly.
834 -+ */
835 -+int hfsplus_submit_bio(struct super_block *sb, sector_t sector,
836 -+ void *buf, void **data, int rw)
837 - {
838 - DECLARE_COMPLETION_ONSTACK(wait);
839 - struct bio *bio;
840 - int ret = 0;
841 -+ unsigned int io_size;
842 -+ loff_t start;
843 -+ int offset;
844 -+
845 -+ /*
846 -+ * Align sector to hardware sector size and find offset. We
847 -+ * assume that io_size is a power of two, which _should_
848 -+ * be true.
849 -+ */
850 -+ io_size = hfsplus_min_io_size(sb);
851 -+ start = (loff_t)sector << HFSPLUS_SECTOR_SHIFT;
852 -+ offset = start & (io_size - 1);
853 -+ sector &= ~((io_size >> HFSPLUS_SECTOR_SHIFT) - 1);
854 -
855 - bio = bio_alloc(GFP_NOIO, 1);
856 - bio->bi_sector = sector;
857 -- bio->bi_bdev = bdev;
858 -+ bio->bi_bdev = sb->s_bdev;
859 - bio->bi_end_io = hfsplus_end_io_sync;
860 - bio->bi_private = &wait;
861 -
862 -- /*
863 -- * We always submit one sector at a time, so bio_add_page must not fail.
864 -- */
865 -- if (bio_add_page(bio, virt_to_page(data), HFSPLUS_SECTOR_SIZE,
866 -- offset_in_page(data)) != HFSPLUS_SECTOR_SIZE)
867 -- BUG();
868 -+ if (!(rw & WRITE) && data)
869 -+ *data = (u8 *)buf + offset;
870 -+
871 -+ while (io_size > 0) {
872 -+ unsigned int page_offset = offset_in_page(buf);
873 -+ unsigned int len = min_t(unsigned int, PAGE_SIZE - page_offset,
874 -+ io_size);
875 -+
876 -+ ret = bio_add_page(bio, virt_to_page(buf), len, page_offset);
877 -+ if (ret != len) {
878 -+ ret = -EIO;
879 -+ goto out;
880 -+ }
881 -+ io_size -= len;
882 -+ buf = (u8 *)buf + len;
883 -+ }
884 -
885 - submit_bio(rw, bio);
886 - wait_for_completion(&wait);
887 -@@ -57,8 +99,9 @@ int hfsplus_submit_bio(struct block_device *bdev, sector_t sector,
888 - if (!bio_flagged(bio, BIO_UPTODATE))
889 - ret = -EIO;
890 -
891 -+out:
892 - bio_put(bio);
893 -- return ret;
894 -+ return ret < 0 ? ret : 0;
895 - }
896 -
897 - static int hfsplus_read_mdb(void *bufptr, struct hfsplus_wd *wd)
898 -@@ -147,17 +190,17 @@ int hfsplus_read_wrapper(struct super_block *sb)
899 - }
900 -
901 - error = -ENOMEM;
902 -- sbi->s_vhdr = kmalloc(HFSPLUS_SECTOR_SIZE, GFP_KERNEL);
903 -- if (!sbi->s_vhdr)
904 -+ sbi->s_vhdr_buf = kmalloc(hfsplus_min_io_size(sb), GFP_KERNEL);
905 -+ if (!sbi->s_vhdr_buf)
906 - goto out;
907 -- sbi->s_backup_vhdr = kmalloc(HFSPLUS_SECTOR_SIZE, GFP_KERNEL);
908 -- if (!sbi->s_backup_vhdr)
909 -+ sbi->s_backup_vhdr_buf = kmalloc(hfsplus_min_io_size(sb), GFP_KERNEL);
910 -+ if (!sbi->s_backup_vhdr_buf)
911 - goto out_free_vhdr;
912 -
913 - reread:
914 -- error = hfsplus_submit_bio(sb->s_bdev,
915 -- part_start + HFSPLUS_VOLHEAD_SECTOR,
916 -- sbi->s_vhdr, READ);
917 -+ error = hfsplus_submit_bio(sb, part_start + HFSPLUS_VOLHEAD_SECTOR,
918 -+ sbi->s_vhdr_buf, (void **)&sbi->s_vhdr,
919 -+ READ);
920 - if (error)
921 - goto out_free_backup_vhdr;
922 -
923 -@@ -186,9 +229,9 @@ reread:
924 - goto reread;
925 - }
926 -
927 -- error = hfsplus_submit_bio(sb->s_bdev,
928 -- part_start + part_size - 2,
929 -- sbi->s_backup_vhdr, READ);
930 -+ error = hfsplus_submit_bio(sb, part_start + part_size - 2,
931 -+ sbi->s_backup_vhdr_buf,
932 -+ (void **)&sbi->s_backup_vhdr, READ);
933 - if (error)
934 - goto out_free_backup_vhdr;
935 -
936 -@@ -232,9 +275,9 @@ reread:
937 - return 0;
938 -
939 - out_free_backup_vhdr:
940 -- kfree(sbi->s_backup_vhdr);
941 -+ kfree(sbi->s_backup_vhdr_buf);
942 - out_free_vhdr:
943 -- kfree(sbi->s_vhdr);
944 -+ kfree(sbi->s_vhdr_buf);
945 - out:
946 - return error;
947 - }
948 -diff --git a/fs/xfs/linux-2.6/xfs_linux.h b/fs/xfs/linux-2.6/xfs_linux.h
949 -index 8633521..8731516 100644
950 ---- a/fs/xfs/linux-2.6/xfs_linux.h
951 -+++ b/fs/xfs/linux-2.6/xfs_linux.h
952 -@@ -70,6 +70,8 @@
953 - #include <linux/ctype.h>
954 - #include <linux/writeback.h>
955 - #include <linux/capability.h>
956 -+#include <linux/kthread.h>
957 -+#include <linux/freezer.h>
958 - #include <linux/list_sort.h>
959 -
960 - #include <asm/page.h>
961 -diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c
962 -index a1a881e..347cae9 100644
963 ---- a/fs/xfs/linux-2.6/xfs_super.c
964 -+++ b/fs/xfs/linux-2.6/xfs_super.c
965 -@@ -1412,37 +1412,35 @@ xfs_fs_fill_super(
966 - sb->s_time_gran = 1;
967 - set_posix_acl_flag(sb);
968 -
969 -- error = xfs_syncd_init(mp);
970 -- if (error)
971 -- goto out_filestream_unmount;
972 --
973 - xfs_inode_shrinker_register(mp);
974 -
975 - error = xfs_mountfs(mp);
976 - if (error)
977 -- goto out_syncd_stop;
978 -+ goto out_filestream_unmount;
979 -+
980 -+ error = xfs_syncd_init(mp);
981 -+ if (error)
982 -+ goto out_unmount;
983 -
984 - root = igrab(VFS_I(mp->m_rootip));
985 - if (!root) {
986 - error = ENOENT;
987 -- goto fail_unmount;
988 -+ goto out_syncd_stop;
989 - }
990 - if (is_bad_inode(root)) {
991 - error = EINVAL;
992 -- goto fail_vnrele;
993 -+ goto out_syncd_stop;
994 - }
995 - sb->s_root = d_alloc_root(root);
996 - if (!sb->s_root) {
997 - error = ENOMEM;
998 -- goto fail_vnrele;
999 -+ goto out_iput;
1000 - }
1001 -
1002 - return 0;
1003 -
1004 -- out_syncd_stop:
1005 -- xfs_inode_shrinker_unregister(mp);
1006 -- xfs_syncd_stop(mp);
1007 - out_filestream_unmount:
1008 -+ xfs_inode_shrinker_unregister(mp);
1009 - xfs_filestream_unmount(mp);
1010 - out_free_sb:
1011 - xfs_freesb(mp);
1012 -@@ -1456,17 +1454,12 @@ xfs_fs_fill_super(
1013 - out:
1014 - return -error;
1015 -
1016 -- fail_vnrele:
1017 -- if (sb->s_root) {
1018 -- dput(sb->s_root);
1019 -- sb->s_root = NULL;
1020 -- } else {
1021 -- iput(root);
1022 -- }
1023 --
1024 -- fail_unmount:
1025 -- xfs_inode_shrinker_unregister(mp);
1026 -+ out_iput:
1027 -+ iput(root);
1028 -+ out_syncd_stop:
1029 - xfs_syncd_stop(mp);
1030 -+ out_unmount:
1031 -+ xfs_inode_shrinker_unregister(mp);
1032 -
1033 - /*
1034 - * Blow away any referenced inode in the filestreams cache.
1035 -@@ -1667,24 +1660,13 @@ xfs_init_workqueues(void)
1036 - */
1037 - xfs_syncd_wq = alloc_workqueue("xfssyncd", WQ_CPU_INTENSIVE, 8);
1038 - if (!xfs_syncd_wq)
1039 -- goto out;
1040 --
1041 -- xfs_ail_wq = alloc_workqueue("xfsail", WQ_CPU_INTENSIVE, 8);
1042 -- if (!xfs_ail_wq)
1043 -- goto out_destroy_syncd;
1044 --
1045 -+ return -ENOMEM;
1046 - return 0;
1047 --
1048 --out_destroy_syncd:
1049 -- destroy_workqueue(xfs_syncd_wq);
1050 --out:
1051 -- return -ENOMEM;
1052 - }
1053 -
1054 - STATIC void
1055 - xfs_destroy_workqueues(void)
1056 - {
1057 -- destroy_workqueue(xfs_ail_wq);
1058 - destroy_workqueue(xfs_syncd_wq);
1059 - }
1060 -
1061 -diff --git a/fs/xfs/quota/xfs_dquot_item.c b/fs/xfs/quota/xfs_dquot_item.c
1062 -index 9e0e2fa..8126fc2 100644
1063 ---- a/fs/xfs/quota/xfs_dquot_item.c
1064 -+++ b/fs/xfs/quota/xfs_dquot_item.c
1065 -@@ -183,13 +183,14 @@ xfs_qm_dqunpin_wait(
1066 - * search the buffer cache can be a time consuming thing, and AIL lock is a
1067 - * spinlock.
1068 - */
1069 --STATIC void
1070 -+STATIC bool
1071 - xfs_qm_dquot_logitem_pushbuf(
1072 - struct xfs_log_item *lip)
1073 - {
1074 - struct xfs_dq_logitem *qlip = DQUOT_ITEM(lip);
1075 - struct xfs_dquot *dqp = qlip->qli_dquot;
1076 - struct xfs_buf *bp;
1077 -+ bool ret = true;
1078 -
1079 - ASSERT(XFS_DQ_IS_LOCKED(dqp));
1080 -
1081 -@@ -201,17 +202,20 @@ xfs_qm_dquot_logitem_pushbuf(
1082 - if (completion_done(&dqp->q_flush) ||
1083 - !(lip->li_flags & XFS_LI_IN_AIL)) {
1084 - xfs_dqunlock(dqp);
1085 -- return;
1086 -+ return true;
1087 - }
1088 -
1089 - bp = xfs_incore(dqp->q_mount->m_ddev_targp, qlip->qli_format.qlf_blkno,
1090 - dqp->q_mount->m_quotainfo->qi_dqchunklen, XBF_TRYLOCK);
1091 - xfs_dqunlock(dqp);
1092 - if (!bp)
1093 -- return;
1094 -+ return true;
1095 - if (XFS_BUF_ISDELAYWRITE(bp))
1096 - xfs_buf_delwri_promote(bp);
1097 -+ if (XFS_BUF_ISPINNED(bp))
1098 -+ ret = false;
1099 - xfs_buf_relse(bp);
1100 -+ return ret;
1101 - }
1102 -
1103 - /*
1104 -diff --git a/fs/xfs/xfs_buf_item.c b/fs/xfs/xfs_buf_item.c
1105 -index 7b7e005..a7342e8 100644
1106 ---- a/fs/xfs/xfs_buf_item.c
1107 -+++ b/fs/xfs/xfs_buf_item.c
1108 -@@ -632,7 +632,7 @@ xfs_buf_item_push(
1109 - * the xfsbufd to get this buffer written. We have to unlock the buffer
1110 - * to allow the xfsbufd to write it, too.
1111 - */
1112 --STATIC void
1113 -+STATIC bool
1114 - xfs_buf_item_pushbuf(
1115 - struct xfs_log_item *lip)
1116 - {
1117 -@@ -646,6 +646,7 @@ xfs_buf_item_pushbuf(
1118 -
1119 - xfs_buf_delwri_promote(bp);
1120 - xfs_buf_relse(bp);
1121 -+ return true;
1122 - }
1123 -
1124 - STATIC void
1125 -diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c
1126 -index b1e88d5..391044c 100644
1127 ---- a/fs/xfs/xfs_inode_item.c
1128 -+++ b/fs/xfs/xfs_inode_item.c
1129 -@@ -713,13 +713,14 @@ xfs_inode_item_committed(
1130 - * marked delayed write. If that's the case, we'll promote it and that will
1131 - * allow the caller to write the buffer by triggering the xfsbufd to run.
1132 - */
1133 --STATIC void
1134 -+STATIC bool
1135 - xfs_inode_item_pushbuf(
1136 - struct xfs_log_item *lip)
1137 - {
1138 - struct xfs_inode_log_item *iip = INODE_ITEM(lip);
1139 - struct xfs_inode *ip = iip->ili_inode;
1140 - struct xfs_buf *bp;
1141 -+ bool ret = true;
1142 -
1143 - ASSERT(xfs_isilocked(ip, XFS_ILOCK_SHARED));
1144 -
1145 -@@ -730,7 +731,7 @@ xfs_inode_item_pushbuf(
1146 - if (completion_done(&ip->i_flush) ||
1147 - !(lip->li_flags & XFS_LI_IN_AIL)) {
1148 - xfs_iunlock(ip, XFS_ILOCK_SHARED);
1149 -- return;
1150 -+ return true;
1151 - }
1152 -
1153 - bp = xfs_incore(ip->i_mount->m_ddev_targp, iip->ili_format.ilf_blkno,
1154 -@@ -738,10 +739,13 @@ xfs_inode_item_pushbuf(
1155 -
1156 - xfs_iunlock(ip, XFS_ILOCK_SHARED);
1157 - if (!bp)
1158 -- return;
1159 -+ return true;
1160 - if (XFS_BUF_ISDELAYWRITE(bp))
1161 - xfs_buf_delwri_promote(bp);
1162 -+ if (XFS_BUF_ISPINNED(bp))
1163 -+ ret = false;
1164 - xfs_buf_relse(bp);
1165 -+ return ret;
1166 - }
1167 -
1168 - /*
1169 -diff --git a/fs/xfs/xfs_trans.c b/fs/xfs/xfs_trans.c
1170 -index c83f63b..efc147f 100644
1171 ---- a/fs/xfs/xfs_trans.c
1172 -+++ b/fs/xfs/xfs_trans.c
1173 -@@ -1426,6 +1426,7 @@ xfs_trans_committed(
1174 - static inline void
1175 - xfs_log_item_batch_insert(
1176 - struct xfs_ail *ailp,
1177 -+ struct xfs_ail_cursor *cur,
1178 - struct xfs_log_item **log_items,
1179 - int nr_items,
1180 - xfs_lsn_t commit_lsn)
1181 -@@ -1434,7 +1435,7 @@ xfs_log_item_batch_insert(
1182 -
1183 - spin_lock(&ailp->xa_lock);
1184 - /* xfs_trans_ail_update_bulk drops ailp->xa_lock */
1185 -- xfs_trans_ail_update_bulk(ailp, log_items, nr_items, commit_lsn);
1186 -+ xfs_trans_ail_update_bulk(ailp, cur, log_items, nr_items, commit_lsn);
1187 -
1188 - for (i = 0; i < nr_items; i++)
1189 - IOP_UNPIN(log_items[i], 0);
1190 -@@ -1452,6 +1453,13 @@ xfs_log_item_batch_insert(
1191 - * as an iclog write error even though we haven't started any IO yet. Hence in
1192 - * this case all we need to do is IOP_COMMITTED processing, followed by an
1193 - * IOP_UNPIN(aborted) call.
1194 -+ *
1195 -+ * The AIL cursor is used to optimise the insert process. If commit_lsn is not
1196 -+ * at the end of the AIL, the insert cursor avoids the need to walk
1197 -+ * the AIL to find the insertion point on every xfs_log_item_batch_insert()
1198 -+ * call. This saves a lot of needless list walking and is a net win, even
1199 -+ * though it slightly increases that amount of AIL lock traffic to set it up
1200 -+ * and tear it down.
1201 - */
1202 - void
1203 - xfs_trans_committed_bulk(
1204 -@@ -1463,8 +1471,13 @@ xfs_trans_committed_bulk(
1205 - #define LOG_ITEM_BATCH_SIZE 32
1206 - struct xfs_log_item *log_items[LOG_ITEM_BATCH_SIZE];
1207 - struct xfs_log_vec *lv;
1208 -+ struct xfs_ail_cursor cur;
1209 - int i = 0;
1210 -
1211 -+ spin_lock(&ailp->xa_lock);
1212 -+ xfs_trans_ail_cursor_last(ailp, &cur, commit_lsn);
1213 -+ spin_unlock(&ailp->xa_lock);
1214 -+
1215 - /* unpin all the log items */
1216 - for (lv = log_vector; lv; lv = lv->lv_next ) {
1217 - struct xfs_log_item *lip = lv->lv_item;
1218 -@@ -1493,7 +1506,9 @@ xfs_trans_committed_bulk(
1219 - /*
1220 - * Not a bulk update option due to unusual item_lsn.
1221 - * Push into AIL immediately, rechecking the lsn once
1222 -- * we have the ail lock. Then unpin the item.
1223 -+ * we have the ail lock. Then unpin the item. This does
1224 -+ * not affect the AIL cursor the bulk insert path is
1225 -+ * using.
1226 - */
1227 - spin_lock(&ailp->xa_lock);
1228 - if (XFS_LSN_CMP(item_lsn, lip->li_lsn) > 0)
1229 -@@ -1507,7 +1522,7 @@ xfs_trans_committed_bulk(
1230 - /* Item is a candidate for bulk AIL insert. */
1231 - log_items[i++] = lv->lv_item;
1232 - if (i >= LOG_ITEM_BATCH_SIZE) {
1233 -- xfs_log_item_batch_insert(ailp, log_items,
1234 -+ xfs_log_item_batch_insert(ailp, &cur, log_items,
1235 - LOG_ITEM_BATCH_SIZE, commit_lsn);
1236 - i = 0;
1237 - }
1238 -@@ -1515,7 +1530,11 @@ xfs_trans_committed_bulk(
1239 -
1240 - /* make sure we insert the remainder! */
1241 - if (i)
1242 -- xfs_log_item_batch_insert(ailp, log_items, i, commit_lsn);
1243 -+ xfs_log_item_batch_insert(ailp, &cur, log_items, i, commit_lsn);
1244 -+
1245 -+ spin_lock(&ailp->xa_lock);
1246 -+ xfs_trans_ail_cursor_done(ailp, &cur);
1247 -+ spin_unlock(&ailp->xa_lock);
1248 - }
1249 -
1250 - /*
1251 -diff --git a/fs/xfs/xfs_trans.h b/fs/xfs/xfs_trans.h
1252 -index 06a9759..53597f4 100644
1253 ---- a/fs/xfs/xfs_trans.h
1254 -+++ b/fs/xfs/xfs_trans.h
1255 -@@ -350,7 +350,7 @@ typedef struct xfs_item_ops {
1256 - void (*iop_unlock)(xfs_log_item_t *);
1257 - xfs_lsn_t (*iop_committed)(xfs_log_item_t *, xfs_lsn_t);
1258 - void (*iop_push)(xfs_log_item_t *);
1259 -- void (*iop_pushbuf)(xfs_log_item_t *);
1260 -+ bool (*iop_pushbuf)(xfs_log_item_t *);
1261 - void (*iop_committing)(xfs_log_item_t *, xfs_lsn_t);
1262 - } xfs_item_ops_t;
1263 -
1264 -diff --git a/fs/xfs/xfs_trans_ail.c b/fs/xfs/xfs_trans_ail.c
1265 -index 5fc2380..a4c281b 100644
1266 ---- a/fs/xfs/xfs_trans_ail.c
1267 -+++ b/fs/xfs/xfs_trans_ail.c
1268 -@@ -28,8 +28,6 @@
1269 - #include "xfs_trans_priv.h"
1270 - #include "xfs_error.h"
1271 -
1272 --struct workqueue_struct *xfs_ail_wq; /* AIL workqueue */
1273 --
1274 - #ifdef DEBUG
1275 - /*
1276 - * Check that the list is sorted as it should be.
1277 -@@ -272,9 +270,9 @@ xfs_trans_ail_cursor_clear(
1278 - }
1279 -
1280 - /*
1281 -- * Return the item in the AIL with the current lsn.
1282 -- * Return the current tree generation number for use
1283 -- * in calls to xfs_trans_next_ail().
1284 -+ * Initialise the cursor to the first item in the AIL with the given @lsn.
1285 -+ * This searches the list from lowest LSN to highest. Pass a @lsn of zero
1286 -+ * to initialise the cursor to the first item in the AIL.
1287 - */
1288 - xfs_log_item_t *
1289 - xfs_trans_ail_cursor_first(
1290 -@@ -300,31 +298,97 @@ out:
1291 - }
1292 -
1293 - /*
1294 -- * splice the log item list into the AIL at the given LSN.
1295 -+ * Initialise the cursor to the last item in the AIL with the given @lsn.
1296 -+ * This searches the list from highest LSN to lowest. If there is no item with
1297 -+ * the value of @lsn, then it sets the cursor to the last item with an LSN lower
1298 -+ * than @lsn.
1299 -+ */
1300 -+static struct xfs_log_item *
1301 -+__xfs_trans_ail_cursor_last(
1302 -+ struct xfs_ail *ailp,
1303 -+ xfs_lsn_t lsn)
1304 -+{
1305 -+ xfs_log_item_t *lip;
1306 -+
1307 -+ list_for_each_entry_reverse(lip, &ailp->xa_ail, li_ail) {
1308 -+ if (XFS_LSN_CMP(lip->li_lsn, lsn) <= 0)
1309 -+ return lip;
1310 -+ }
1311 -+ return NULL;
1312 -+}
1313 -+
1314 -+/*
1315 -+ * Initialise the cursor to the last item in the AIL with the given @lsn.
1316 -+ * This searches the list from highest LSN to lowest.
1317 -+ */
1318 -+struct xfs_log_item *
1319 -+xfs_trans_ail_cursor_last(
1320 -+ struct xfs_ail *ailp,
1321 -+ struct xfs_ail_cursor *cur,
1322 -+ xfs_lsn_t lsn)
1323 -+{
1324 -+ xfs_trans_ail_cursor_init(ailp, cur);
1325 -+ cur->item = __xfs_trans_ail_cursor_last(ailp, lsn);
1326 -+ return cur->item;
1327 -+}
1328 -+
1329 -+/*
1330 -+ * splice the log item list into the AIL at the given LSN. We splice to the
1331 -+ * tail of the given LSN to maintain insert order for push traversals. The
1332 -+ * cursor is optional, allowing repeated updates to the same LSN to avoid
1333 -+ * repeated traversals.
1334 - */
1335 - static void
1336 - xfs_ail_splice(
1337 -- struct xfs_ail *ailp,
1338 -- struct list_head *list,
1339 -- xfs_lsn_t lsn)
1340 -+ struct xfs_ail *ailp,
1341 -+ struct xfs_ail_cursor *cur,
1342 -+ struct list_head *list,
1343 -+ xfs_lsn_t lsn)
1344 - {
1345 -- xfs_log_item_t *next_lip;
1346 -+ struct xfs_log_item *lip = cur ? cur->item : NULL;
1347 -+ struct xfs_log_item *next_lip;
1348 -
1349 -- /* If the list is empty, just insert the item. */
1350 -- if (list_empty(&ailp->xa_ail)) {
1351 -- list_splice(list, &ailp->xa_ail);
1352 -- return;
1353 -+ /*
1354 -+ * Get a new cursor if we don't have a placeholder or the existing one
1355 -+ * has been invalidated.
1356 -+ */
1357 -+ if (!lip || (__psint_t)lip & 1) {
1358 -+ lip = __xfs_trans_ail_cursor_last(ailp, lsn);
1359 -+
1360 -+ if (!lip) {
1361 -+ /* The list is empty, so just splice and return. */
1362 -+ if (cur)
1363 -+ cur->item = NULL;
1364 -+ list_splice(list, &ailp->xa_ail);
1365 -+ return;
1366 -+ }
1367 - }
1368 -
1369 -- list_for_each_entry_reverse(next_lip, &ailp->xa_ail, li_ail) {
1370 -- if (XFS_LSN_CMP(next_lip->li_lsn, lsn) <= 0)
1371 -- break;
1372 -+ /*
1373 -+ * Our cursor points to the item we want to insert _after_, so we have
1374 -+ * to update the cursor to point to the end of the list we are splicing
1375 -+ * in so that it points to the correct location for the next splice.
1376 -+ * i.e. before the splice
1377 -+ *
1378 -+ * lsn -> lsn -> lsn + x -> lsn + x ...
1379 -+ * ^
1380 -+ * | cursor points here
1381 -+ *
1382 -+ * After the splice we have:
1383 -+ *
1384 -+ * lsn -> lsn -> lsn -> lsn -> .... -> lsn -> lsn + x -> lsn + x ...
1385 -+ * ^ ^
1386 -+ * | cursor points here | needs to move here
1387 -+ *
1388 -+ * So we set the cursor to the last item in the list to be spliced
1389 -+ * before we execute the splice, resulting in the cursor pointing to
1390 -+ * the correct item after the splice occurs.
1391 -+ */
1392 -+ if (cur) {
1393 -+ next_lip = list_entry(list->prev, struct xfs_log_item, li_ail);
1394 -+ cur->item = next_lip;
1395 - }
1396 --
1397 -- ASSERT(&next_lip->li_ail == &ailp->xa_ail ||
1398 -- XFS_LSN_CMP(next_lip->li_lsn, lsn) <= 0);
1399 --
1400 -- list_splice_init(list, &next_lip->li_ail);
1401 -+ list_splice(list, &lip->li_ail);
1402 - }
1403 -
1404 - /*
1405 -@@ -340,16 +404,10 @@ xfs_ail_delete(
1406 - xfs_trans_ail_cursor_clear(ailp, lip);
1407 - }
1408 -
1409 --/*
1410 -- * xfs_ail_worker does the work of pushing on the AIL. It will requeue itself
1411 -- * to run at a later time if there is more work to do to complete the push.
1412 -- */
1413 --STATIC void
1414 --xfs_ail_worker(
1415 -- struct work_struct *work)
1416 -+static long
1417 -+xfsaild_push(
1418 -+ struct xfs_ail *ailp)
1419 - {
1420 -- struct xfs_ail *ailp = container_of(to_delayed_work(work),
1421 -- struct xfs_ail, xa_work);
1422 - xfs_mount_t *mp = ailp->xa_mount;
1423 - struct xfs_ail_cursor *cur = &ailp->xa_cursors;
1424 - xfs_log_item_t *lip;
1425 -@@ -412,8 +470,13 @@ xfs_ail_worker(
1426 -
1427 - case XFS_ITEM_PUSHBUF:
1428 - XFS_STATS_INC(xs_push_ail_pushbuf);
1429 -- IOP_PUSHBUF(lip);
1430 -- ailp->xa_last_pushed_lsn = lsn;
1431 -+
1432 -+ if (!IOP_PUSHBUF(lip)) {
1433 -+ stuck++;
1434 -+ flush_log = 1;
1435 -+ } else {
1436 -+ ailp->xa_last_pushed_lsn = lsn;
1437 -+ }
1438 - push_xfsbufd = 1;
1439 - break;
1440 -
1441 -@@ -425,7 +488,6 @@ xfs_ail_worker(
1442 -
1443 - case XFS_ITEM_LOCKED:
1444 - XFS_STATS_INC(xs_push_ail_locked);
1445 -- ailp->xa_last_pushed_lsn = lsn;
1446 - stuck++;
1447 - break;
1448 -
1449 -@@ -486,20 +548,6 @@ out_done:
1450 - /* We're past our target or empty, so idle */
1451 - ailp->xa_last_pushed_lsn = 0;
1452 -
1453 -- /*
1454 -- * We clear the XFS_AIL_PUSHING_BIT first before checking
1455 -- * whether the target has changed. If the target has changed,
1456 -- * this pushes the requeue race directly onto the result of the
1457 -- * atomic test/set bit, so we are guaranteed that either the
1458 -- * the pusher that changed the target or ourselves will requeue
1459 -- * the work (but not both).
1460 -- */
1461 -- clear_bit(XFS_AIL_PUSHING_BIT, &ailp->xa_flags);
1462 -- smp_rmb();
1463 -- if (XFS_LSN_CMP(ailp->xa_target, target) == 0 ||
1464 -- test_and_set_bit(XFS_AIL_PUSHING_BIT, &ailp->xa_flags))
1465 -- return;
1466 --
1467 - tout = 50;
1468 - } else if (XFS_LSN_CMP(lsn, target) >= 0) {
1469 - /*
1470 -@@ -522,9 +570,30 @@ out_done:
1471 - tout = 20;
1472 - }
1473 -
1474 -- /* There is more to do, requeue us. */
1475 -- queue_delayed_work(xfs_syncd_wq, &ailp->xa_work,
1476 -- msecs_to_jiffies(tout));
1477 -+ return tout;
1478 -+}
1479 -+
1480 -+static int
1481 -+xfsaild(
1482 -+ void *data)
1483 -+{
1484 -+ struct xfs_ail *ailp = data;
1485 -+ long tout = 0; /* milliseconds */
1486 -+
1487 -+ while (!kthread_should_stop()) {
1488 -+ if (tout && tout <= 20)
1489 -+ __set_current_state(TASK_KILLABLE);
1490 -+ else
1491 -+ __set_current_state(TASK_INTERRUPTIBLE);
1492 -+ schedule_timeout(tout ?
1493 -+ msecs_to_jiffies(tout) : MAX_SCHEDULE_TIMEOUT);
1494 -+
1495 -+ try_to_freeze();
1496 -+
1497 -+ tout = xfsaild_push(ailp);
1498 -+ }
1499 -+
1500 -+ return 0;
1501 - }
1502 -
1503 - /*
1504 -@@ -559,8 +628,9 @@ xfs_ail_push(
1505 - */
1506 - smp_wmb();
1507 - xfs_trans_ail_copy_lsn(ailp, &ailp->xa_target, &threshold_lsn);
1508 -- if (!test_and_set_bit(XFS_AIL_PUSHING_BIT, &ailp->xa_flags))
1509 -- queue_delayed_work(xfs_syncd_wq, &ailp->xa_work, 0);
1510 -+ smp_wmb();
1511 -+
1512 -+ wake_up_process(ailp->xa_task);
1513 - }
1514 -
1515 - /*
1516 -@@ -645,6 +715,7 @@ xfs_trans_unlocked_item(
1517 - void
1518 - xfs_trans_ail_update_bulk(
1519 - struct xfs_ail *ailp,
1520 -+ struct xfs_ail_cursor *cur,
1521 - struct xfs_log_item **log_items,
1522 - int nr_items,
1523 - xfs_lsn_t lsn) __releases(ailp->xa_lock)
1524 -@@ -674,7 +745,7 @@ xfs_trans_ail_update_bulk(
1525 - list_add(&lip->li_ail, &tmp);
1526 - }
1527 -
1528 -- xfs_ail_splice(ailp, &tmp, lsn);
1529 -+ xfs_ail_splice(ailp, cur, &tmp, lsn);
1530 -
1531 - if (!mlip_changed) {
1532 - spin_unlock(&ailp->xa_lock);
1533 -@@ -794,9 +865,18 @@ xfs_trans_ail_init(
1534 - ailp->xa_mount = mp;
1535 - INIT_LIST_HEAD(&ailp->xa_ail);
1536 - spin_lock_init(&ailp->xa_lock);
1537 -- INIT_DELAYED_WORK(&ailp->xa_work, xfs_ail_worker);
1538 -+
1539 -+ ailp->xa_task = kthread_run(xfsaild, ailp, "xfsaild/%s",
1540 -+ ailp->xa_mount->m_fsname);
1541 -+ if (IS_ERR(ailp->xa_task))
1542 -+ goto out_free_ailp;
1543 -+
1544 - mp->m_ail = ailp;
1545 - return 0;
1546 -+
1547 -+out_free_ailp:
1548 -+ kmem_free(ailp);
1549 -+ return ENOMEM;
1550 - }
1551 -
1552 - void
1553 -@@ -805,6 +885,6 @@ xfs_trans_ail_destroy(
1554 - {
1555 - struct xfs_ail *ailp = mp->m_ail;
1556 -
1557 -- cancel_delayed_work_sync(&ailp->xa_work);
1558 -+ kthread_stop(ailp->xa_task);
1559 - kmem_free(ailp);
1560 - }
1561 -diff --git a/fs/xfs/xfs_trans_priv.h b/fs/xfs/xfs_trans_priv.h
1562 -index 6b164e9..fe2e3cb 100644
1563 ---- a/fs/xfs/xfs_trans_priv.h
1564 -+++ b/fs/xfs/xfs_trans_priv.h
1565 -@@ -64,24 +64,19 @@ struct xfs_ail_cursor {
1566 - */
1567 - struct xfs_ail {
1568 - struct xfs_mount *xa_mount;
1569 -+ struct task_struct *xa_task;
1570 - struct list_head xa_ail;
1571 - xfs_lsn_t xa_target;
1572 - struct xfs_ail_cursor xa_cursors;
1573 - spinlock_t xa_lock;
1574 -- struct delayed_work xa_work;
1575 - xfs_lsn_t xa_last_pushed_lsn;
1576 -- unsigned long xa_flags;
1577 - };
1578 -
1579 --#define XFS_AIL_PUSHING_BIT 0
1580 --
1581 - /*
1582 - * From xfs_trans_ail.c
1583 - */
1584 --
1585 --extern struct workqueue_struct *xfs_ail_wq; /* AIL workqueue */
1586 --
1587 - void xfs_trans_ail_update_bulk(struct xfs_ail *ailp,
1588 -+ struct xfs_ail_cursor *cur,
1589 - struct xfs_log_item **log_items, int nr_items,
1590 - xfs_lsn_t lsn) __releases(ailp->xa_lock);
1591 - static inline void
1592 -@@ -90,7 +85,7 @@ xfs_trans_ail_update(
1593 - struct xfs_log_item *lip,
1594 - xfs_lsn_t lsn) __releases(ailp->xa_lock)
1595 - {
1596 -- xfs_trans_ail_update_bulk(ailp, &lip, 1, lsn);
1597 -+ xfs_trans_ail_update_bulk(ailp, NULL, &lip, 1, lsn);
1598 - }
1599 -
1600 - void xfs_trans_ail_delete_bulk(struct xfs_ail *ailp,
1601 -@@ -111,10 +106,13 @@ xfs_lsn_t xfs_ail_min_lsn(struct xfs_ail *ailp);
1602 - void xfs_trans_unlocked_item(struct xfs_ail *,
1603 - xfs_log_item_t *);
1604 -
1605 --struct xfs_log_item *xfs_trans_ail_cursor_first(struct xfs_ail *ailp,
1606 -+struct xfs_log_item * xfs_trans_ail_cursor_first(struct xfs_ail *ailp,
1607 -+ struct xfs_ail_cursor *cur,
1608 -+ xfs_lsn_t lsn);
1609 -+struct xfs_log_item * xfs_trans_ail_cursor_last(struct xfs_ail *ailp,
1610 - struct xfs_ail_cursor *cur,
1611 - xfs_lsn_t lsn);
1612 --struct xfs_log_item *xfs_trans_ail_cursor_next(struct xfs_ail *ailp,
1613 -+struct xfs_log_item * xfs_trans_ail_cursor_next(struct xfs_ail *ailp,
1614 - struct xfs_ail_cursor *cur);
1615 - void xfs_trans_ail_cursor_done(struct xfs_ail *ailp,
1616 - struct xfs_ail_cursor *cur);
1617 -diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c
1618 -index c8008dd..640ded8 100644
1619 ---- a/kernel/posix-cpu-timers.c
1620 -+++ b/kernel/posix-cpu-timers.c
1621 -@@ -274,9 +274,7 @@ void thread_group_cputimer(struct task_struct *tsk, struct task_cputime *times)
1622 - struct task_cputime sum;
1623 - unsigned long flags;
1624 -
1625 -- spin_lock_irqsave(&cputimer->lock, flags);
1626 - if (!cputimer->running) {
1627 -- cputimer->running = 1;
1628 - /*
1629 - * The POSIX timer interface allows for absolute time expiry
1630 - * values through the TIMER_ABSTIME flag, therefore we have
1631 -@@ -284,8 +282,11 @@ void thread_group_cputimer(struct task_struct *tsk, struct task_cputime *times)
1632 - * it.
1633 - */
1634 - thread_group_cputime(tsk, &sum);
1635 -+ spin_lock_irqsave(&cputimer->lock, flags);
1636 -+ cputimer->running = 1;
1637 - update_gt_cputime(&cputimer->cputime, &sum);
1638 -- }
1639 -+ } else
1640 -+ spin_lock_irqsave(&cputimer->lock, flags);
1641 - *times = cputimer->cputime;
1642 - spin_unlock_irqrestore(&cputimer->lock, flags);
1643 - }
1644 -diff --git a/kernel/sys.c b/kernel/sys.c
1645 -index 5c942cf..f88dadc 100644
1646 ---- a/kernel/sys.c
1647 -+++ b/kernel/sys.c
1648 -@@ -1135,7 +1135,7 @@ DECLARE_RWSEM(uts_sem);
1649 - static int override_release(char __user *release, int len)
1650 - {
1651 - int ret = 0;
1652 -- char buf[len];
1653 -+ char buf[65];
1654 -
1655 - if (current->personality & UNAME26) {
1656 - char *rest = UTS_RELEASE;
1657 -diff --git a/mm/migrate.c b/mm/migrate.c
1658 -index 666e4e6..14d0a6a 100644
1659 ---- a/mm/migrate.c
1660 -+++ b/mm/migrate.c
1661 -@@ -120,10 +120,10 @@ static int remove_migration_pte(struct page *new, struct vm_area_struct *vma,
1662 -
1663 - ptep = pte_offset_map(pmd, addr);
1664 -
1665 -- if (!is_swap_pte(*ptep)) {
1666 -- pte_unmap(ptep);
1667 -- goto out;
1668 -- }
1669 -+ /*
1670 -+ * Peek to check is_swap_pte() before taking ptlock? No, we
1671 -+ * can race mremap's move_ptes(), which skips anon_vma lock.
1672 -+ */
1673 -
1674 - ptl = pte_lockptr(mm, pmd);
1675 - }
1676 -diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c
1677 -index 4680b1e..373e14f 100644
1678 ---- a/net/x25/af_x25.c
1679 -+++ b/net/x25/af_x25.c
1680 -@@ -295,7 +295,8 @@ static struct sock *x25_find_listener(struct x25_address *addr,
1681 - * Found a listening socket, now check the incoming
1682 - * call user data vs this sockets call user data
1683 - */
1684 -- if(skb->len > 0 && x25_sk(s)->cudmatchlength > 0) {
1685 -+ if (x25_sk(s)->cudmatchlength > 0 &&
1686 -+ skb->len >= x25_sk(s)->cudmatchlength) {
1687 - if((memcmp(x25_sk(s)->calluserdata.cuddata,
1688 - skb->data,
1689 - x25_sk(s)->cudmatchlength)) == 0) {
1690 -diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
1691 -index 486f6de..981b6fd 100644
1692 ---- a/sound/pci/hda/hda_intel.c
1693 -+++ b/sound/pci/hda/hda_intel.c
1694 -@@ -2352,6 +2352,7 @@ static struct snd_pci_quirk position_fix_list[] __devinitdata = {
1695 - SND_PCI_QUIRK(0x1028, 0x01cc, "Dell D820", POS_FIX_LPIB),
1696 - SND_PCI_QUIRK(0x1028, 0x01de, "Dell Precision 390", POS_FIX_LPIB),
1697 - SND_PCI_QUIRK(0x1028, 0x01f6, "Dell Latitude 131L", POS_FIX_LPIB),
1698 -+ SND_PCI_QUIRK(0x1028, 0x02c6, "Dell Inspiron 1010", POS_FIX_LPIB),
1699 - SND_PCI_QUIRK(0x1028, 0x0470, "Dell Inspiron 1120", POS_FIX_LPIB),
1700 - SND_PCI_QUIRK(0x103c, 0x306d, "HP dv3", POS_FIX_LPIB),
1701 - SND_PCI_QUIRK(0x1043, 0x813d, "ASUS P5AD2", POS_FIX_LPIB),
1702 -diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
1703 -index 7bbc5f2..cf1fa36 100644
1704 ---- a/sound/pci/hda/patch_conexant.c
1705 -+++ b/sound/pci/hda/patch_conexant.c
1706 -@@ -3097,6 +3097,7 @@ static const struct snd_pci_quirk cxt5066_cfg_tbl[] = {
1707 - SND_PCI_QUIRK(0x17aa, 0x21c5, "Thinkpad Edge 13", CXT5066_THINKPAD),
1708 - SND_PCI_QUIRK(0x17aa, 0x21c6, "Thinkpad Edge 13", CXT5066_ASUS),
1709 - SND_PCI_QUIRK(0x17aa, 0x215e, "Lenovo Thinkpad", CXT5066_THINKPAD),
1710 -+ SND_PCI_QUIRK(0x17aa, 0x21cf, "Lenovo T520 & W520", CXT5066_AUTO),
1711 - SND_PCI_QUIRK(0x17aa, 0x21da, "Lenovo X220", CXT5066_THINKPAD),
1712 - SND_PCI_QUIRK(0x17aa, 0x21db, "Lenovo X220-tablet", CXT5066_THINKPAD),
1713 - SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo U350", CXT5066_ASUS),
1714
1715 diff --git a/3.0.9/1008_linux-3.0.9.patch b/3.0.9/1008_linux-3.0.9.patch
1716 deleted file mode 100644
1717 index 1679a52..0000000
1718 --- a/3.0.9/1008_linux-3.0.9.patch
1719 +++ /dev/null
1720 @@ -1,10991 +0,0 @@
1721 -diff --git a/Documentation/hwspinlock.txt b/Documentation/hwspinlock.txt
1722 -index 7dcd1a4..6996681 100644
1723 ---- a/Documentation/hwspinlock.txt
1724 -+++ b/Documentation/hwspinlock.txt
1725 -@@ -39,23 +39,20 @@ independent, drivers.
1726 - in case an unused hwspinlock isn't available. Users of this
1727 - API will usually want to communicate the lock's id to the remote core
1728 - before it can be used to achieve synchronization.
1729 -- Can be called from an atomic context (this function will not sleep) but
1730 -- not from within interrupt context.
1731 -+ Should be called from a process context (might sleep).
1732 -
1733 - struct hwspinlock *hwspin_lock_request_specific(unsigned int id);
1734 - - assign a specific hwspinlock id and return its address, or NULL
1735 - if that hwspinlock is already in use. Usually board code will
1736 - be calling this function in order to reserve specific hwspinlock
1737 - ids for predefined purposes.
1738 -- Can be called from an atomic context (this function will not sleep) but
1739 -- not from within interrupt context.
1740 -+ Should be called from a process context (might sleep).
1741 -
1742 - int hwspin_lock_free(struct hwspinlock *hwlock);
1743 - - free a previously-assigned hwspinlock; returns 0 on success, or an
1744 - appropriate error code on failure (e.g. -EINVAL if the hwspinlock
1745 - is already free).
1746 -- Can be called from an atomic context (this function will not sleep) but
1747 -- not from within interrupt context.
1748 -+ Should be called from a process context (might sleep).
1749 -
1750 - int hwspin_lock_timeout(struct hwspinlock *hwlock, unsigned int timeout);
1751 - - lock a previously-assigned hwspinlock with a timeout limit (specified in
1752 -@@ -232,15 +229,14 @@ int hwspinlock_example2(void)
1753 -
1754 - int hwspin_lock_register(struct hwspinlock *hwlock);
1755 - - to be called from the underlying platform-specific implementation, in
1756 -- order to register a new hwspinlock instance. Can be called from an atomic
1757 -- context (this function will not sleep) but not from within interrupt
1758 -- context. Returns 0 on success, or appropriate error code on failure.
1759 -+ order to register a new hwspinlock instance. Should be called from
1760 -+ a process context (this function might sleep).
1761 -+ Returns 0 on success, or appropriate error code on failure.
1762 -
1763 - struct hwspinlock *hwspin_lock_unregister(unsigned int id);
1764 - - to be called from the underlying vendor-specific implementation, in order
1765 - to unregister an existing (and unused) hwspinlock instance.
1766 -- Can be called from an atomic context (will not sleep) but not from
1767 -- within interrupt context.
1768 -+ Should be called from a process context (this function might sleep).
1769 - Returns the address of hwspinlock on success, or NULL on error (e.g.
1770 - if the hwspinlock is sill in use).
1771 -
1772 -diff --git a/Documentation/power/runtime_pm.txt b/Documentation/power/runtime_pm.txt
1773 -index b24875b..6ade987 100644
1774 ---- a/Documentation/power/runtime_pm.txt
1775 -+++ b/Documentation/power/runtime_pm.txt
1776 -@@ -708,6 +708,16 @@ will behave normally, not taking the autosuspend delay into account.
1777 - Similarly, if the power.use_autosuspend field isn't set then the autosuspend
1778 - helper functions will behave just like the non-autosuspend counterparts.
1779 -
1780 -+Under some circumstances a driver or subsystem may want to prevent a device
1781 -+from autosuspending immediately, even though the usage counter is zero and the
1782 -+autosuspend delay time has expired. If the ->runtime_suspend() callback
1783 -+returns -EAGAIN or -EBUSY, and if the next autosuspend delay expiration time is
1784 -+in the future (as it normally would be if the callback invoked
1785 -+pm_runtime_mark_last_busy()), the PM core will automatically reschedule the
1786 -+autosuspend. The ->runtime_suspend() callback can't do this rescheduling
1787 -+itself because no suspend requests of any kind are accepted while the device is
1788 -+suspending (i.e., while the callback is running).
1789 -+
1790 - The implementation is well suited for asynchronous use in interrupt contexts.
1791 - However such use inevitably involves races, because the PM core can't
1792 - synchronize ->runtime_suspend() callbacks with the arrival of I/O requests.
1793 -diff --git a/Documentation/stable_kernel_rules.txt b/Documentation/stable_kernel_rules.txt
1794 -index e213f45..21fd05c 100644
1795 ---- a/Documentation/stable_kernel_rules.txt
1796 -+++ b/Documentation/stable_kernel_rules.txt
1797 -@@ -24,10 +24,10 @@ Rules on what kind of patches are accepted, and which ones are not, into the
1798 - Procedure for submitting patches to the -stable tree:
1799 -
1800 - - Send the patch, after verifying that it follows the above rules, to
1801 -- stable@××××××.org. You must note the upstream commit ID in the changelog
1802 -- of your submission.
1803 -+ stable@×××××××××××.org. You must note the upstream commit ID in the
1804 -+ changelog of your submission.
1805 - - To have the patch automatically included in the stable tree, add the tag
1806 -- Cc: stable@××××××.org
1807 -+ Cc: stable@×××××××××××.org
1808 - in the sign-off area. Once the patch is merged it will be applied to
1809 - the stable tree without anything else needing to be done by the author
1810 - or subsystem maintainer.
1811 -@@ -35,10 +35,10 @@ Procedure for submitting patches to the -stable tree:
1812 - cherry-picked than this can be specified in the following format in
1813 - the sign-off area:
1814 -
1815 -- Cc: <stable@××××××.org> # .32.x: a1f84a3: sched: Check for idle
1816 -- Cc: <stable@××××××.org> # .32.x: 1b9508f: sched: Rate-limit newidle
1817 -- Cc: <stable@××××××.org> # .32.x: fd21073: sched: Fix affinity logic
1818 -- Cc: <stable@××××××.org> # .32.x
1819 -+ Cc: <stable@×××××××××××.org> # .32.x: a1f84a3: sched: Check for idle
1820 -+ Cc: <stable@×××××××××××.org> # .32.x: 1b9508f: sched: Rate-limit newidle
1821 -+ Cc: <stable@×××××××××××.org> # .32.x: fd21073: sched: Fix affinity logic
1822 -+ Cc: <stable@×××××××××××.org> # .32.x
1823 - Signed-off-by: Ingo Molnar <mingo@××××.hu>
1824 -
1825 - The tag sequence has the meaning of:
1826 -diff --git a/MAINTAINERS b/MAINTAINERS
1827 -index 187282d..34e2418 100644
1828 ---- a/MAINTAINERS
1829 -+++ b/MAINTAINERS
1830 -@@ -1221,7 +1221,7 @@ F: Documentation/aoe/
1831 - F: drivers/block/aoe/
1832 -
1833 - ATHEROS ATH GENERIC UTILITIES
1834 --M: "Luis R. Rodriguez" <lrodriguez@×××××××.com>
1835 -+M: "Luis R. Rodriguez" <mcgrof@××××××××××××.com>
1836 - L: linux-wireless@×××××××××××.org
1837 - S: Supported
1838 - F: drivers/net/wireless/ath/*
1839 -@@ -1229,7 +1229,7 @@ F: drivers/net/wireless/ath/*
1840 - ATHEROS ATH5K WIRELESS DRIVER
1841 - M: Jiri Slaby <jirislaby@×××××.com>
1842 - M: Nick Kossifidis <mickflemm@×××××.com>
1843 --M: "Luis R. Rodriguez" <lrodriguez@×××××××.com>
1844 -+M: "Luis R. Rodriguez" <mcgrof@××××××××××××.com>
1845 - M: Bob Copeland <me@×××××××××××.com>
1846 - L: linux-wireless@×××××××××××.org
1847 - L: ath5k-devel@×××××××××××.org
1848 -@@ -1238,10 +1238,10 @@ S: Maintained
1849 - F: drivers/net/wireless/ath/ath5k/
1850 -
1851 - ATHEROS ATH9K WIRELESS DRIVER
1852 --M: "Luis R. Rodriguez" <lrodriguez@×××××××.com>
1853 --M: Jouni Malinen <jmalinen@×××××××.com>
1854 --M: Vasanthakumar Thiagarajan <vasanth@×××××××.com>
1855 --M: Senthil Balasubramanian <senthilkumar@×××××××.com>
1856 -+M: "Luis R. Rodriguez" <mcgrof@××××××××××××.com>
1857 -+M: Jouni Malinen <jouni@××××××××××××.com>
1858 -+M: Vasanthakumar Thiagarajan <vthiagar@××××××××××××.com>
1859 -+M: Senthil Balasubramanian <senthilb@××××××××××××.com>
1860 - L: linux-wireless@×××××××××××.org
1861 - L: ath9k-devel@×××××××××××.org
1862 - W: http://wireless.kernel.org/en/users/Drivers/ath9k
1863 -@@ -1269,7 +1269,7 @@ F: drivers/input/misc/ati_remote2.c
1864 - ATLX ETHERNET DRIVERS
1865 - M: Jay Cliburn <jcliburn@×××××.com>
1866 - M: Chris Snook <chris.snook@×××××.com>
1867 --M: Jie Yang <jie.yang@×××××××.com>
1868 -+M: Jie Yang <yangjie@××××××××××××.com>
1869 - L: netdev@×××××××××××.org
1870 - W: http://sourceforge.net/projects/atl1
1871 - W: http://atl1.sourceforge.net
1872 -diff --git a/Makefile b/Makefile
1873 -index 9f6e3cd..438c11a 100644
1874 ---- a/Makefile
1875 -+++ b/Makefile
1876 -@@ -1,6 +1,6 @@
1877 - VERSION = 3
1878 - PATCHLEVEL = 0
1879 --SUBLEVEL = 8
1880 -+SUBLEVEL = 9
1881 - EXTRAVERSION =
1882 - NAME = Sneaky Weasel
1883 -
1884 -diff --git a/arch/arm/mach-ux500/cpu.c b/arch/arm/mach-ux500/cpu.c
1885 -index 1da23bb..8aa104a 100644
1886 ---- a/arch/arm/mach-ux500/cpu.c
1887 -+++ b/arch/arm/mach-ux500/cpu.c
1888 -@@ -99,7 +99,27 @@ static void ux500_l2x0_inv_all(void)
1889 - ux500_cache_sync();
1890 - }
1891 -
1892 --static int ux500_l2x0_init(void)
1893 -+static int __init ux500_l2x0_unlock(void)
1894 -+{
1895 -+ int i;
1896 -+
1897 -+ /*
1898 -+ * Unlock Data and Instruction Lock if locked. Ux500 U-Boot versions
1899 -+ * apparently locks both caches before jumping to the kernel. The
1900 -+ * l2x0 core will not touch the unlock registers if the l2x0 is
1901 -+ * already enabled, so we do it right here instead. The PL310 has
1902 -+ * 8 sets of registers, one per possible CPU.
1903 -+ */
1904 -+ for (i = 0; i < 8; i++) {
1905 -+ writel_relaxed(0x0, l2x0_base + L2X0_LOCKDOWN_WAY_D_BASE +
1906 -+ i * L2X0_LOCKDOWN_STRIDE);
1907 -+ writel_relaxed(0x0, l2x0_base + L2X0_LOCKDOWN_WAY_I_BASE +
1908 -+ i * L2X0_LOCKDOWN_STRIDE);
1909 -+ }
1910 -+ return 0;
1911 -+}
1912 -+
1913 -+static int __init ux500_l2x0_init(void)
1914 - {
1915 - if (cpu_is_u5500())
1916 - l2x0_base = __io_address(U5500_L2CC_BASE);
1917 -@@ -108,6 +128,9 @@ static int ux500_l2x0_init(void)
1918 - else
1919 - ux500_unknown_soc();
1920 -
1921 -+ /* Unlock before init */
1922 -+ ux500_l2x0_unlock();
1923 -+
1924 - /* 64KB way size, 8 way associativity, force WA */
1925 - l2x0_init(l2x0_base, 0x3e060000, 0xc0000fff);
1926 -
1927 -diff --git a/arch/arm/plat-mxc/include/mach/iomux-v3.h b/arch/arm/plat-mxc/include/mach/iomux-v3.h
1928 -index ebbce33..4509956 100644
1929 ---- a/arch/arm/plat-mxc/include/mach/iomux-v3.h
1930 -+++ b/arch/arm/plat-mxc/include/mach/iomux-v3.h
1931 -@@ -89,11 +89,11 @@ typedef u64 iomux_v3_cfg_t;
1932 - #define PAD_CTL_HYS (1 << 8)
1933 -
1934 - #define PAD_CTL_PKE (1 << 7)
1935 --#define PAD_CTL_PUE (1 << 6)
1936 --#define PAD_CTL_PUS_100K_DOWN (0 << 4)
1937 --#define PAD_CTL_PUS_47K_UP (1 << 4)
1938 --#define PAD_CTL_PUS_100K_UP (2 << 4)
1939 --#define PAD_CTL_PUS_22K_UP (3 << 4)
1940 -+#define PAD_CTL_PUE (1 << 6 | PAD_CTL_PKE)
1941 -+#define PAD_CTL_PUS_100K_DOWN (0 << 4 | PAD_CTL_PUE)
1942 -+#define PAD_CTL_PUS_47K_UP (1 << 4 | PAD_CTL_PUE)
1943 -+#define PAD_CTL_PUS_100K_UP (2 << 4 | PAD_CTL_PUE)
1944 -+#define PAD_CTL_PUS_22K_UP (3 << 4 | PAD_CTL_PUE)
1945 -
1946 - #define PAD_CTL_ODE (1 << 3)
1947 -
1948 -diff --git a/arch/powerpc/include/asm/sparsemem.h b/arch/powerpc/include/asm/sparsemem.h
1949 -index 54a47ea..0c5fa31 100644
1950 ---- a/arch/powerpc/include/asm/sparsemem.h
1951 -+++ b/arch/powerpc/include/asm/sparsemem.h
1952 -@@ -16,7 +16,7 @@
1953 - #endif /* CONFIG_SPARSEMEM */
1954 -
1955 - #ifdef CONFIG_MEMORY_HOTPLUG
1956 --extern void create_section_mapping(unsigned long start, unsigned long end);
1957 -+extern int create_section_mapping(unsigned long start, unsigned long end);
1958 - extern int remove_section_mapping(unsigned long start, unsigned long end);
1959 - #ifdef CONFIG_NUMA
1960 - extern int hot_add_scn_to_nid(unsigned long scn_addr);
1961 -diff --git a/arch/powerpc/mm/gup.c b/arch/powerpc/mm/gup.c
1962 -index fec1320..d7efdbf 100644
1963 ---- a/arch/powerpc/mm/gup.c
1964 -+++ b/arch/powerpc/mm/gup.c
1965 -@@ -16,16 +16,6 @@
1966 -
1967 - #ifdef __HAVE_ARCH_PTE_SPECIAL
1968 -
1969 --static inline void get_huge_page_tail(struct page *page)
1970 --{
1971 -- /*
1972 -- * __split_huge_page_refcount() cannot run
1973 -- * from under us.
1974 -- */
1975 -- VM_BUG_ON(atomic_read(&page->_count) < 0);
1976 -- atomic_inc(&page->_count);
1977 --}
1978 --
1979 - /*
1980 - * The performance critical leaf functions are made noinline otherwise gcc
1981 - * inlines everything into a single function which results in too much
1982 -@@ -57,8 +47,6 @@ static noinline int gup_pte_range(pmd_t pmd, unsigned long addr,
1983 - put_page(page);
1984 - return 0;
1985 - }
1986 -- if (PageTail(page))
1987 -- get_huge_page_tail(page);
1988 - pages[*nr] = page;
1989 - (*nr)++;
1990 -
1991 -diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
1992 -index 26b2872..07f9e9f 100644
1993 ---- a/arch/powerpc/mm/hash_utils_64.c
1994 -+++ b/arch/powerpc/mm/hash_utils_64.c
1995 -@@ -534,11 +534,11 @@ static unsigned long __init htab_get_table_size(void)
1996 - }
1997 -
1998 - #ifdef CONFIG_MEMORY_HOTPLUG
1999 --void create_section_mapping(unsigned long start, unsigned long end)
2000 -+int create_section_mapping(unsigned long start, unsigned long end)
2001 - {
2002 -- BUG_ON(htab_bolt_mapping(start, end, __pa(start),
2003 -+ return htab_bolt_mapping(start, end, __pa(start),
2004 - pgprot_val(PAGE_KERNEL), mmu_linear_psize,
2005 -- mmu_kernel_ssize));
2006 -+ mmu_kernel_ssize);
2007 - }
2008 -
2009 - int remove_section_mapping(unsigned long start, unsigned long end)
2010 -diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c
2011 -index 0b9a5c1..da5eb38 100644
2012 ---- a/arch/powerpc/mm/hugetlbpage.c
2013 -+++ b/arch/powerpc/mm/hugetlbpage.c
2014 -@@ -390,7 +390,7 @@ static noinline int gup_hugepte(pte_t *ptep, unsigned long sz, unsigned long add
2015 - {
2016 - unsigned long mask;
2017 - unsigned long pte_end;
2018 -- struct page *head, *page;
2019 -+ struct page *head, *page, *tail;
2020 - pte_t pte;
2021 - int refs;
2022 -
2023 -@@ -413,6 +413,7 @@ static noinline int gup_hugepte(pte_t *ptep, unsigned long sz, unsigned long add
2024 - head = pte_page(pte);
2025 -
2026 - page = head + ((addr & (sz-1)) >> PAGE_SHIFT);
2027 -+ tail = page;
2028 - do {
2029 - VM_BUG_ON(compound_head(page) != head);
2030 - pages[*nr] = page;
2031 -@@ -428,10 +429,20 @@ static noinline int gup_hugepte(pte_t *ptep, unsigned long sz, unsigned long add
2032 -
2033 - if (unlikely(pte_val(pte) != pte_val(*ptep))) {
2034 - /* Could be optimized better */
2035 -- while (*nr) {
2036 -- put_page(page);
2037 -- (*nr)--;
2038 -- }
2039 -+ *nr -= refs;
2040 -+ while (refs--)
2041 -+ put_page(head);
2042 -+ return 0;
2043 -+ }
2044 -+
2045 -+ /*
2046 -+ * Any tail page need their mapcount reference taken before we
2047 -+ * return.
2048 -+ */
2049 -+ while (refs--) {
2050 -+ if (PageTail(tail))
2051 -+ get_huge_page_tail(tail);
2052 -+ tail++;
2053 - }
2054 -
2055 - return 1;
2056 -diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c
2057 -index 29d4dde..278ec8e 100644
2058 ---- a/arch/powerpc/mm/mem.c
2059 -+++ b/arch/powerpc/mm/mem.c
2060 -@@ -123,7 +123,8 @@ int arch_add_memory(int nid, u64 start, u64 size)
2061 - pgdata = NODE_DATA(nid);
2062 -
2063 - start = (unsigned long)__va(start);
2064 -- create_section_mapping(start, start + size);
2065 -+ if (create_section_mapping(start, start + size))
2066 -+ return -EINVAL;
2067 -
2068 - /* this should work for most non-highmem platforms */
2069 - zone = pgdata->node_zones;
2070 -diff --git a/arch/powerpc/mm/mmu_context_hash64.c b/arch/powerpc/mm/mmu_context_hash64.c
2071 -index 3bafc3d..4ff587e 100644
2072 ---- a/arch/powerpc/mm/mmu_context_hash64.c
2073 -+++ b/arch/powerpc/mm/mmu_context_hash64.c
2074 -@@ -136,8 +136,8 @@ int use_cop(unsigned long acop, struct mm_struct *mm)
2075 - if (!mm || !acop)
2076 - return -EINVAL;
2077 -
2078 -- /* We need to make sure mm_users doesn't change */
2079 -- down_read(&mm->mmap_sem);
2080 -+ /* The page_table_lock ensures mm_users won't change under us */
2081 -+ spin_lock(&mm->page_table_lock);
2082 - spin_lock(mm->context.cop_lockp);
2083 -
2084 - if (mm->context.cop_pid == COP_PID_NONE) {
2085 -@@ -164,7 +164,7 @@ int use_cop(unsigned long acop, struct mm_struct *mm)
2086 -
2087 - out:
2088 - spin_unlock(mm->context.cop_lockp);
2089 -- up_read(&mm->mmap_sem);
2090 -+ spin_unlock(&mm->page_table_lock);
2091 -
2092 - return ret;
2093 - }
2094 -@@ -185,8 +185,8 @@ void drop_cop(unsigned long acop, struct mm_struct *mm)
2095 - if (WARN_ON_ONCE(!mm))
2096 - return;
2097 -
2098 -- /* We need to make sure mm_users doesn't change */
2099 -- down_read(&mm->mmap_sem);
2100 -+ /* The page_table_lock ensures mm_users won't change under us */
2101 -+ spin_lock(&mm->page_table_lock);
2102 - spin_lock(mm->context.cop_lockp);
2103 -
2104 - mm->context.acop &= ~acop;
2105 -@@ -213,7 +213,7 @@ void drop_cop(unsigned long acop, struct mm_struct *mm)
2106 - }
2107 -
2108 - spin_unlock(mm->context.cop_lockp);
2109 -- up_read(&mm->mmap_sem);
2110 -+ spin_unlock(&mm->page_table_lock);
2111 - }
2112 - EXPORT_SYMBOL_GPL(drop_cop);
2113 -
2114 -diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
2115 -index 2164006..2c1ae7a 100644
2116 ---- a/arch/powerpc/mm/numa.c
2117 -+++ b/arch/powerpc/mm/numa.c
2118 -@@ -1214,11 +1214,12 @@ int hot_add_node_scn_to_nid(unsigned long scn_addr)
2119 - break;
2120 - }
2121 -
2122 -- of_node_put(memory);
2123 - if (nid >= 0)
2124 - break;
2125 - }
2126 -
2127 -+ of_node_put(memory);
2128 -+
2129 - return nid;
2130 - }
2131 -
2132 -diff --git a/arch/powerpc/platforms/pseries/dlpar.c b/arch/powerpc/platforms/pseries/dlpar.c
2133 -index 57ceb92..82766e5 100644
2134 ---- a/arch/powerpc/platforms/pseries/dlpar.c
2135 -+++ b/arch/powerpc/platforms/pseries/dlpar.c
2136 -@@ -112,6 +112,7 @@ void dlpar_free_cc_nodes(struct device_node *dn)
2137 - dlpar_free_one_cc_node(dn);
2138 - }
2139 -
2140 -+#define COMPLETE 0
2141 - #define NEXT_SIBLING 1
2142 - #define NEXT_CHILD 2
2143 - #define NEXT_PROPERTY 3
2144 -@@ -158,6 +159,9 @@ struct device_node *dlpar_configure_connector(u32 drc_index)
2145 - spin_unlock(&rtas_data_buf_lock);
2146 -
2147 - switch (rc) {
2148 -+ case COMPLETE:
2149 -+ break;
2150 -+
2151 - case NEXT_SIBLING:
2152 - dn = dlpar_parse_cc_node(ccwa);
2153 - if (!dn)
2154 -diff --git a/arch/powerpc/platforms/pseries/eeh.c b/arch/powerpc/platforms/pseries/eeh.c
2155 -index 46b55cf..3608704 100644
2156 ---- a/arch/powerpc/platforms/pseries/eeh.c
2157 -+++ b/arch/powerpc/platforms/pseries/eeh.c
2158 -@@ -1338,7 +1338,7 @@ static const struct file_operations proc_eeh_operations = {
2159 - static int __init eeh_init_proc(void)
2160 - {
2161 - if (machine_is(pseries))
2162 -- proc_create("ppc64/eeh", 0, NULL, &proc_eeh_operations);
2163 -+ proc_create("powerpc/eeh", 0, NULL, &proc_eeh_operations);
2164 - return 0;
2165 - }
2166 - __initcall(eeh_init_proc);
2167 -diff --git a/arch/s390/kernel/ptrace.c b/arch/s390/kernel/ptrace.c
2168 -index ef86ad2..ae0e14b 100644
2169 ---- a/arch/s390/kernel/ptrace.c
2170 -+++ b/arch/s390/kernel/ptrace.c
2171 -@@ -47,29 +47,31 @@ enum s390_regset {
2172 -
2173 - void update_per_regs(struct task_struct *task)
2174 - {
2175 -- static const struct per_regs per_single_step = {
2176 -- .control = PER_EVENT_IFETCH,
2177 -- .start = 0,
2178 -- .end = PSW_ADDR_INSN,
2179 -- };
2180 - struct pt_regs *regs = task_pt_regs(task);
2181 - struct thread_struct *thread = &task->thread;
2182 -- const struct per_regs *new;
2183 -- struct per_regs old;
2184 --
2185 -- /* TIF_SINGLE_STEP overrides the user specified PER registers. */
2186 -- new = test_tsk_thread_flag(task, TIF_SINGLE_STEP) ?
2187 -- &per_single_step : &thread->per_user;
2188 -+ struct per_regs old, new;
2189 -+
2190 -+ /* Copy user specified PER registers */
2191 -+ new.control = thread->per_user.control;
2192 -+ new.start = thread->per_user.start;
2193 -+ new.end = thread->per_user.end;
2194 -+
2195 -+ /* merge TIF_SINGLE_STEP into user specified PER registers. */
2196 -+ if (test_tsk_thread_flag(task, TIF_SINGLE_STEP)) {
2197 -+ new.control |= PER_EVENT_IFETCH;
2198 -+ new.start = 0;
2199 -+ new.end = PSW_ADDR_INSN;
2200 -+ }
2201 -
2202 - /* Take care of the PER enablement bit in the PSW. */
2203 -- if (!(new->control & PER_EVENT_MASK)) {
2204 -+ if (!(new.control & PER_EVENT_MASK)) {
2205 - regs->psw.mask &= ~PSW_MASK_PER;
2206 - return;
2207 - }
2208 - regs->psw.mask |= PSW_MASK_PER;
2209 - __ctl_store(old, 9, 11);
2210 -- if (memcmp(new, &old, sizeof(struct per_regs)) != 0)
2211 -- __ctl_load(*new, 9, 11);
2212 -+ if (memcmp(&new, &old, sizeof(struct per_regs)) != 0)
2213 -+ __ctl_load(new, 9, 11);
2214 - }
2215 -
2216 - void user_enable_single_step(struct task_struct *task)
2217 -diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
2218 -index 67345ae..2ada634 100644
2219 ---- a/arch/s390/kvm/kvm-s390.c
2220 -+++ b/arch/s390/kvm/kvm-s390.c
2221 -@@ -301,11 +301,17 @@ int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu)
2222 - struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm,
2223 - unsigned int id)
2224 - {
2225 -- struct kvm_vcpu *vcpu = kzalloc(sizeof(struct kvm_vcpu), GFP_KERNEL);
2226 -- int rc = -ENOMEM;
2227 -+ struct kvm_vcpu *vcpu;
2228 -+ int rc = -EINVAL;
2229 -+
2230 -+ if (id >= KVM_MAX_VCPUS)
2231 -+ goto out;
2232 -+
2233 -+ rc = -ENOMEM;
2234 -
2235 -+ vcpu = kzalloc(sizeof(struct kvm_vcpu), GFP_KERNEL);
2236 - if (!vcpu)
2237 -- goto out_nomem;
2238 -+ goto out;
2239 -
2240 - vcpu->arch.sie_block = (struct kvm_s390_sie_block *)
2241 - get_zeroed_page(GFP_KERNEL);
2242 -@@ -341,7 +347,7 @@ out_free_sie_block:
2243 - free_page((unsigned long)(vcpu->arch.sie_block));
2244 - out_free_cpu:
2245 - kfree(vcpu);
2246 --out_nomem:
2247 -+out:
2248 - return ERR_PTR(rc);
2249 - }
2250 -
2251 -diff --git a/arch/s390/mm/gup.c b/arch/s390/mm/gup.c
2252 -index 45b405c..65cb06e 100644
2253 ---- a/arch/s390/mm/gup.c
2254 -+++ b/arch/s390/mm/gup.c
2255 -@@ -52,7 +52,7 @@ static inline int gup_huge_pmd(pmd_t *pmdp, pmd_t pmd, unsigned long addr,
2256 - unsigned long end, int write, struct page **pages, int *nr)
2257 - {
2258 - unsigned long mask, result;
2259 -- struct page *head, *page;
2260 -+ struct page *head, *page, *tail;
2261 - int refs;
2262 -
2263 - result = write ? 0 : _SEGMENT_ENTRY_RO;
2264 -@@ -64,6 +64,7 @@ static inline int gup_huge_pmd(pmd_t *pmdp, pmd_t pmd, unsigned long addr,
2265 - refs = 0;
2266 - head = pmd_page(pmd);
2267 - page = head + ((addr & ~PMD_MASK) >> PAGE_SHIFT);
2268 -+ tail = page;
2269 - do {
2270 - VM_BUG_ON(compound_head(page) != head);
2271 - pages[*nr] = page;
2272 -@@ -81,6 +82,17 @@ static inline int gup_huge_pmd(pmd_t *pmdp, pmd_t pmd, unsigned long addr,
2273 - *nr -= refs;
2274 - while (refs--)
2275 - put_page(head);
2276 -+ return 0;
2277 -+ }
2278 -+
2279 -+ /*
2280 -+ * Any tail page need their mapcount reference taken before we
2281 -+ * return.
2282 -+ */
2283 -+ while (refs--) {
2284 -+ if (PageTail(tail))
2285 -+ get_huge_page_tail(tail);
2286 -+ tail++;
2287 - }
2288 -
2289 - return 1;
2290 -diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c
2291 -index 37a23c22..458893f 100644
2292 ---- a/arch/s390/mm/pgtable.c
2293 -+++ b/arch/s390/mm/pgtable.c
2294 -@@ -291,8 +291,9 @@ void page_table_free_rcu(struct mmu_gather *tlb, unsigned long *table)
2295 -
2296 - void __tlb_remove_table(void *_table)
2297 - {
2298 -- void *table = (void *)((unsigned long) _table & PAGE_MASK);
2299 -- unsigned type = (unsigned long) _table & ~PAGE_MASK;
2300 -+ const unsigned long mask = (FRAG_MASK << 4) | FRAG_MASK;
2301 -+ void *table = (void *)((unsigned long) _table & ~mask);
2302 -+ unsigned type = (unsigned long) _table & mask;
2303 -
2304 - if (type)
2305 - __page_table_free_rcu(table, type);
2306 -diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c
2307 -index 620f5b7..0491e40 100644
2308 ---- a/arch/um/drivers/ubd_kern.c
2309 -+++ b/arch/um/drivers/ubd_kern.c
2310 -@@ -513,8 +513,37 @@ __uml_exitcall(kill_io_thread);
2311 - static inline int ubd_file_size(struct ubd *ubd_dev, __u64 *size_out)
2312 - {
2313 - char *file;
2314 -+ int fd;
2315 -+ int err;
2316 -+
2317 -+ __u32 version;
2318 -+ __u32 align;
2319 -+ char *backing_file;
2320 -+ time_t mtime;
2321 -+ unsigned long long size;
2322 -+ int sector_size;
2323 -+ int bitmap_offset;
2324 -+
2325 -+ if (ubd_dev->file && ubd_dev->cow.file) {
2326 -+ file = ubd_dev->cow.file;
2327 -+
2328 -+ goto out;
2329 -+ }
2330 -
2331 -- file = ubd_dev->cow.file ? ubd_dev->cow.file : ubd_dev->file;
2332 -+ fd = os_open_file(ubd_dev->file, global_openflags, 0);
2333 -+ if (fd < 0)
2334 -+ return fd;
2335 -+
2336 -+ err = read_cow_header(file_reader, &fd, &version, &backing_file, \
2337 -+ &mtime, &size, &sector_size, &align, &bitmap_offset);
2338 -+ os_close_file(fd);
2339 -+
2340 -+ if(err == -EINVAL)
2341 -+ file = ubd_dev->file;
2342 -+ else
2343 -+ file = backing_file;
2344 -+
2345 -+out:
2346 - return os_file_size(file, size_out);
2347 - }
2348 -
2349 -diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h
2350 -index 4a0b7c7..244ac77 100644
2351 ---- a/arch/x86/include/asm/apic.h
2352 -+++ b/arch/x86/include/asm/apic.h
2353 -@@ -495,7 +495,7 @@ static inline void default_wait_for_init_deassert(atomic_t *deassert)
2354 - return;
2355 - }
2356 -
2357 --extern struct apic *generic_bigsmp_probe(void);
2358 -+extern void generic_bigsmp_probe(void);
2359 -
2360 -
2361 - #ifdef CONFIG_X86_LOCAL_APIC
2362 -diff --git a/arch/x86/include/asm/uv/uv_bau.h b/arch/x86/include/asm/uv/uv_bau.h
2363 -index a291c40..5d62d65 100644
2364 ---- a/arch/x86/include/asm/uv/uv_bau.h
2365 -+++ b/arch/x86/include/asm/uv/uv_bau.h
2366 -@@ -55,6 +55,7 @@
2367 - #define UV_BAU_TUNABLES_DIR "sgi_uv"
2368 - #define UV_BAU_TUNABLES_FILE "bau_tunables"
2369 - #define WHITESPACE " \t\n"
2370 -+#define uv_mmask ((1UL << uv_hub_info->m_val) - 1)
2371 - #define uv_physnodeaddr(x) ((__pa((unsigned long)(x)) & uv_mmask))
2372 - #define cpubit_isset(cpu, bau_local_cpumask) \
2373 - test_bit((cpu), (bau_local_cpumask).bits)
2374 -diff --git a/arch/x86/include/asm/uv/uv_hub.h b/arch/x86/include/asm/uv/uv_hub.h
2375 -index f26544a..54a13aa 100644
2376 ---- a/arch/x86/include/asm/uv/uv_hub.h
2377 -+++ b/arch/x86/include/asm/uv/uv_hub.h
2378 -@@ -46,6 +46,13 @@
2379 - * PNODE - the low N bits of the GNODE. The PNODE is the most useful variant
2380 - * of the nasid for socket usage.
2381 - *
2382 -+ * GPA - (global physical address) a socket physical address converted
2383 -+ * so that it can be used by the GRU as a global address. Socket
2384 -+ * physical addresses 1) need additional NASID (node) bits added
2385 -+ * to the high end of the address, and 2) unaliased if the
2386 -+ * partition does not have a physical address 0. In addition, on
2387 -+ * UV2 rev 1, GPAs need the gnode left shifted to bits 39 or 40.
2388 -+ *
2389 - *
2390 - * NumaLink Global Physical Address Format:
2391 - * +--------------------------------+---------------------+
2392 -@@ -141,6 +148,8 @@ struct uv_hub_info_s {
2393 - unsigned int gnode_extra;
2394 - unsigned char hub_revision;
2395 - unsigned char apic_pnode_shift;
2396 -+ unsigned char m_shift;
2397 -+ unsigned char n_lshift;
2398 - unsigned long gnode_upper;
2399 - unsigned long lowmem_remap_top;
2400 - unsigned long lowmem_remap_base;
2401 -@@ -177,6 +186,16 @@ static inline int is_uv2_hub(void)
2402 - return uv_hub_info->hub_revision >= UV2_HUB_REVISION_BASE;
2403 - }
2404 -
2405 -+static inline int is_uv2_1_hub(void)
2406 -+{
2407 -+ return uv_hub_info->hub_revision == UV2_HUB_REVISION_BASE;
2408 -+}
2409 -+
2410 -+static inline int is_uv2_2_hub(void)
2411 -+{
2412 -+ return uv_hub_info->hub_revision == UV2_HUB_REVISION_BASE + 1;
2413 -+}
2414 -+
2415 - union uvh_apicid {
2416 - unsigned long v;
2417 - struct uvh_apicid_s {
2418 -@@ -276,7 +295,10 @@ static inline unsigned long uv_soc_phys_ram_to_gpa(unsigned long paddr)
2419 - {
2420 - if (paddr < uv_hub_info->lowmem_remap_top)
2421 - paddr |= uv_hub_info->lowmem_remap_base;
2422 -- return paddr | uv_hub_info->gnode_upper;
2423 -+ paddr |= uv_hub_info->gnode_upper;
2424 -+ paddr = ((paddr << uv_hub_info->m_shift) >> uv_hub_info->m_shift) |
2425 -+ ((paddr >> uv_hub_info->m_val) << uv_hub_info->n_lshift);
2426 -+ return paddr;
2427 - }
2428 -
2429 -
2430 -@@ -300,16 +322,19 @@ static inline unsigned long uv_gpa_to_soc_phys_ram(unsigned long gpa)
2431 - unsigned long remap_base = uv_hub_info->lowmem_remap_base;
2432 - unsigned long remap_top = uv_hub_info->lowmem_remap_top;
2433 -
2434 -+ gpa = ((gpa << uv_hub_info->m_shift) >> uv_hub_info->m_shift) |
2435 -+ ((gpa >> uv_hub_info->n_lshift) << uv_hub_info->m_val);
2436 -+ gpa = gpa & uv_hub_info->gpa_mask;
2437 - if (paddr >= remap_base && paddr < remap_base + remap_top)
2438 - paddr -= remap_base;
2439 - return paddr;
2440 - }
2441 -
2442 -
2443 --/* gnode -> pnode */
2444 -+/* gpa -> pnode */
2445 - static inline unsigned long uv_gpa_to_gnode(unsigned long gpa)
2446 - {
2447 -- return gpa >> uv_hub_info->m_val;
2448 -+ return gpa >> uv_hub_info->n_lshift;
2449 - }
2450 -
2451 - /* gpa -> pnode */
2452 -@@ -320,6 +345,12 @@ static inline int uv_gpa_to_pnode(unsigned long gpa)
2453 - return uv_gpa_to_gnode(gpa) & n_mask;
2454 - }
2455 -
2456 -+/* gpa -> node offset*/
2457 -+static inline unsigned long uv_gpa_to_offset(unsigned long gpa)
2458 -+{
2459 -+ return (gpa << uv_hub_info->m_shift) >> uv_hub_info->m_shift;
2460 -+}
2461 -+
2462 - /* pnode, offset --> socket virtual */
2463 - static inline void *uv_pnode_offset_to_vaddr(int pnode, unsigned long offset)
2464 - {
2465 -diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c
2466 -index d3d9d50..bfd75ff 100644
2467 ---- a/arch/x86/kernel/amd_iommu.c
2468 -+++ b/arch/x86/kernel/amd_iommu.c
2469 -@@ -1203,7 +1203,7 @@ static int alloc_new_range(struct dma_ops_domain *dma_dom,
2470 - if (!pte || !IOMMU_PTE_PRESENT(*pte))
2471 - continue;
2472 -
2473 -- dma_ops_reserve_addresses(dma_dom, i << PAGE_SHIFT, 1);
2474 -+ dma_ops_reserve_addresses(dma_dom, i >> PAGE_SHIFT, 1);
2475 - }
2476 -
2477 - update_domain(&dma_dom->domain);
2478 -diff --git a/arch/x86/kernel/apic/bigsmp_32.c b/arch/x86/kernel/apic/bigsmp_32.c
2479 -index efd737e..521bead 100644
2480 ---- a/arch/x86/kernel/apic/bigsmp_32.c
2481 -+++ b/arch/x86/kernel/apic/bigsmp_32.c
2482 -@@ -255,12 +255,24 @@ static struct apic apic_bigsmp = {
2483 - .x86_32_early_logical_apicid = bigsmp_early_logical_apicid,
2484 - };
2485 -
2486 --struct apic * __init generic_bigsmp_probe(void)
2487 -+void __init generic_bigsmp_probe(void)
2488 - {
2489 -- if (probe_bigsmp())
2490 -- return &apic_bigsmp;
2491 -+ unsigned int cpu;
2492 -
2493 -- return NULL;
2494 -+ if (!probe_bigsmp())
2495 -+ return;
2496 -+
2497 -+ apic = &apic_bigsmp;
2498 -+
2499 -+ for_each_possible_cpu(cpu) {
2500 -+ if (early_per_cpu(x86_cpu_to_logical_apicid,
2501 -+ cpu) == BAD_APICID)
2502 -+ continue;
2503 -+ early_per_cpu(x86_cpu_to_logical_apicid, cpu) =
2504 -+ bigsmp_early_logical_apicid(cpu);
2505 -+ }
2506 -+
2507 -+ pr_info("Overriding APIC driver with %s\n", apic_bigsmp.name);
2508 - }
2509 -
2510 - apic_driver(apic_bigsmp);
2511 -diff --git a/arch/x86/kernel/apic/probe_32.c b/arch/x86/kernel/apic/probe_32.c
2512 -index b5254ad..0787bb3 100644
2513 ---- a/arch/x86/kernel/apic/probe_32.c
2514 -+++ b/arch/x86/kernel/apic/probe_32.c
2515 -@@ -200,14 +200,8 @@ void __init default_setup_apic_routing(void)
2516 - * - we find more than 8 CPUs in acpi LAPIC listing with xAPIC support
2517 - */
2518 -
2519 -- if (!cmdline_apic && apic == &apic_default) {
2520 -- struct apic *bigsmp = generic_bigsmp_probe();
2521 -- if (bigsmp) {
2522 -- apic = bigsmp;
2523 -- printk(KERN_INFO "Overriding APIC driver with %s\n",
2524 -- apic->name);
2525 -- }
2526 -- }
2527 -+ if (!cmdline_apic && apic == &apic_default)
2528 -+ generic_bigsmp_probe();
2529 - #endif
2530 -
2531 - if (apic->setup_apic_routing)
2532 -diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c
2533 -index 34b1859..cfeb978 100644
2534 ---- a/arch/x86/kernel/apic/x2apic_uv_x.c
2535 -+++ b/arch/x86/kernel/apic/x2apic_uv_x.c
2536 -@@ -832,6 +832,10 @@ void __init uv_system_init(void)
2537 - uv_cpu_hub_info(cpu)->apic_pnode_shift = uvh_apicid.s.pnode_shift;
2538 - uv_cpu_hub_info(cpu)->hub_revision = uv_hub_info->hub_revision;
2539 -
2540 -+ uv_cpu_hub_info(cpu)->m_shift = 64 - m_val;
2541 -+ uv_cpu_hub_info(cpu)->n_lshift = is_uv2_1_hub() ?
2542 -+ (m_val == 40 ? 40 : 39) : m_val;
2543 -+
2544 - pnode = uv_apicid_to_pnode(apicid);
2545 - blade = boot_pnode_to_blade(pnode);
2546 - lcpu = uv_blade_info[blade].nr_possible_cpus;
2547 -@@ -862,8 +866,7 @@ void __init uv_system_init(void)
2548 - if (uv_node_to_blade[nid] >= 0)
2549 - continue;
2550 - paddr = node_start_pfn(nid) << PAGE_SHIFT;
2551 -- paddr = uv_soc_phys_ram_to_gpa(paddr);
2552 -- pnode = (paddr >> m_val) & pnode_mask;
2553 -+ pnode = uv_gpa_to_pnode(uv_soc_phys_ram_to_gpa(paddr));
2554 - blade = boot_pnode_to_blade(pnode);
2555 - uv_node_to_blade[nid] = blade;
2556 - }
2557 -diff --git a/arch/x86/kernel/kprobes.c b/arch/x86/kernel/kprobes.c
2558 -index f1a6244..794bc95 100644
2559 ---- a/arch/x86/kernel/kprobes.c
2560 -+++ b/arch/x86/kernel/kprobes.c
2561 -@@ -75,8 +75,10 @@ DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk);
2562 - /*
2563 - * Undefined/reserved opcodes, conditional jump, Opcode Extension
2564 - * Groups, and some special opcodes can not boost.
2565 -+ * This is non-const to keep gcc from statically optimizing it out, as
2566 -+ * variable_test_bit makes gcc think only *(unsigned long*) is used.
2567 - */
2568 --static const u32 twobyte_is_boostable[256 / 32] = {
2569 -+static u32 twobyte_is_boostable[256 / 32] = {
2570 - /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
2571 - /* ---------------------------------------------- */
2572 - W(0x00, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0) | /* 00 */
2573 -diff --git a/arch/x86/mm/gup.c b/arch/x86/mm/gup.c
2574 -index dbe34b9..ea30585 100644
2575 ---- a/arch/x86/mm/gup.c
2576 -+++ b/arch/x86/mm/gup.c
2577 -@@ -108,16 +108,6 @@ static inline void get_head_page_multiple(struct page *page, int nr)
2578 - SetPageReferenced(page);
2579 - }
2580 -
2581 --static inline void get_huge_page_tail(struct page *page)
2582 --{
2583 -- /*
2584 -- * __split_huge_page_refcount() cannot run
2585 -- * from under us.
2586 -- */
2587 -- VM_BUG_ON(atomic_read(&page->_count) < 0);
2588 -- atomic_inc(&page->_count);
2589 --}
2590 --
2591 - static noinline int gup_huge_pmd(pmd_t pmd, unsigned long addr,
2592 - unsigned long end, int write, struct page **pages, int *nr)
2593 - {
2594 -diff --git a/arch/x86/platform/uv/tlb_uv.c b/arch/x86/platform/uv/tlb_uv.c
2595 -index 68e467f..82cff4a 100644
2596 ---- a/arch/x86/platform/uv/tlb_uv.c
2597 -+++ b/arch/x86/platform/uv/tlb_uv.c
2598 -@@ -115,9 +115,6 @@ early_param("nobau", setup_nobau);
2599 -
2600 - /* base pnode in this partition */
2601 - static int uv_base_pnode __read_mostly;
2602 --/* position of pnode (which is nasid>>1): */
2603 --static int uv_nshift __read_mostly;
2604 --static unsigned long uv_mmask __read_mostly;
2605 -
2606 - static DEFINE_PER_CPU(struct ptc_stats, ptcstats);
2607 - static DEFINE_PER_CPU(struct bau_control, bau_control);
2608 -@@ -1426,7 +1423,7 @@ static void activation_descriptor_init(int node, int pnode, int base_pnode)
2609 - {
2610 - int i;
2611 - int cpu;
2612 -- unsigned long pa;
2613 -+ unsigned long gpa;
2614 - unsigned long m;
2615 - unsigned long n;
2616 - size_t dsize;
2617 -@@ -1442,9 +1439,9 @@ static void activation_descriptor_init(int node, int pnode, int base_pnode)
2618 - bau_desc = kmalloc_node(dsize, GFP_KERNEL, node);
2619 - BUG_ON(!bau_desc);
2620 -
2621 -- pa = uv_gpa(bau_desc); /* need the real nasid*/
2622 -- n = pa >> uv_nshift;
2623 -- m = pa & uv_mmask;
2624 -+ gpa = uv_gpa(bau_desc);
2625 -+ n = uv_gpa_to_gnode(gpa);
2626 -+ m = uv_gpa_to_offset(gpa);
2627 -
2628 - /* the 14-bit pnode */
2629 - write_mmr_descriptor_base(pnode, (n << UV_DESC_PSHIFT | m));
2630 -@@ -1516,9 +1513,9 @@ static void pq_init(int node, int pnode)
2631 - bcp->queue_last = pqp + (DEST_Q_SIZE - 1);
2632 - }
2633 - /*
2634 -- * need the pnode of where the memory was really allocated
2635 -+ * need the gnode of where the memory was really allocated
2636 - */
2637 -- pn = uv_gpa(pqp) >> uv_nshift;
2638 -+ pn = uv_gpa_to_gnode(uv_gpa(pqp));
2639 - first = uv_physnodeaddr(pqp);
2640 - pn_first = ((unsigned long)pn << UV_PAYLOADQ_PNODE_SHIFT) | first;
2641 - last = uv_physnodeaddr(pqp + (DEST_Q_SIZE - 1));
2642 -@@ -1812,8 +1809,6 @@ static int __init uv_bau_init(void)
2643 - zalloc_cpumask_var_node(mask, GFP_KERNEL, cpu_to_node(cur_cpu));
2644 - }
2645 -
2646 -- uv_nshift = uv_hub_info->m_val;
2647 -- uv_mmask = (1UL << uv_hub_info->m_val) - 1;
2648 - nuvhubs = uv_num_possible_blades();
2649 - spin_lock_init(&disable_lock);
2650 - congested_cycles = usec_2_cycles(congested_respns_us);
2651 -diff --git a/block/genhd.c b/block/genhd.c
2652 -index 3608289..8c0829a 100644
2653 ---- a/block/genhd.c
2654 -+++ b/block/genhd.c
2655 -@@ -611,6 +611,12 @@ void add_disk(struct gendisk *disk)
2656 - register_disk(disk);
2657 - blk_register_queue(disk);
2658 -
2659 -+ /*
2660 -+ * Take an extra ref on queue which will be put on disk_release()
2661 -+ * so that it sticks around as long as @disk is there.
2662 -+ */
2663 -+ WARN_ON_ONCE(blk_get_queue(disk->queue));
2664 -+
2665 - retval = sysfs_create_link(&disk_to_dev(disk)->kobj, &bdi->dev->kobj,
2666 - "bdi");
2667 - WARN_ON(retval);
2668 -@@ -1103,6 +1109,8 @@ static void disk_release(struct device *dev)
2669 - disk_replace_part_tbl(disk, NULL);
2670 - free_part_stats(&disk->part0);
2671 - free_part_info(&disk->part0);
2672 -+ if (disk->queue)
2673 -+ blk_put_queue(disk->queue);
2674 - kfree(disk);
2675 - }
2676 - struct class block_class = {
2677 -diff --git a/crypto/cryptd.c b/crypto/cryptd.c
2678 -index e46d21a..671d4d6 100644
2679 ---- a/crypto/cryptd.c
2680 -+++ b/crypto/cryptd.c
2681 -@@ -945,7 +945,7 @@ static void __exit cryptd_exit(void)
2682 - crypto_unregister_template(&cryptd_tmpl);
2683 - }
2684 -
2685 --module_init(cryptd_init);
2686 -+subsys_initcall(cryptd_init);
2687 - module_exit(cryptd_exit);
2688 -
2689 - MODULE_LICENSE("GPL");
2690 -diff --git a/drivers/acpi/atomicio.c b/drivers/acpi/atomicio.c
2691 -index 7489b89..f151afe 100644
2692 ---- a/drivers/acpi/atomicio.c
2693 -+++ b/drivers/acpi/atomicio.c
2694 -@@ -76,7 +76,7 @@ static void __iomem *__acpi_ioremap_fast(phys_addr_t paddr,
2695 - {
2696 - struct acpi_iomap *map;
2697 -
2698 -- map = __acpi_find_iomap(paddr, size);
2699 -+ map = __acpi_find_iomap(paddr, size/8);
2700 - if (map)
2701 - return map->vaddr + (paddr - map->paddr);
2702 - else
2703 -diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
2704 -index 6f6e771..6da6deb 100644
2705 ---- a/drivers/ata/ata_piix.c
2706 -+++ b/drivers/ata/ata_piix.c
2707 -@@ -113,6 +113,8 @@ enum {
2708 - PIIX_PATA_FLAGS = ATA_FLAG_SLAVE_POSS,
2709 - PIIX_SATA_FLAGS = ATA_FLAG_SATA | PIIX_FLAG_CHECKINTR,
2710 -
2711 -+ PIIX_FLAG_PIO16 = (1 << 30), /*support 16bit PIO only*/
2712 -+
2713 - PIIX_80C_PRI = (1 << 5) | (1 << 4),
2714 - PIIX_80C_SEC = (1 << 7) | (1 << 6),
2715 -
2716 -@@ -147,6 +149,7 @@ enum piix_controller_ids {
2717 - ich8m_apple_sata, /* locks up on second port enable */
2718 - tolapai_sata,
2719 - piix_pata_vmw, /* PIIX4 for VMware, spurious DMA_ERR */
2720 -+ ich8_sata_snb,
2721 - };
2722 -
2723 - struct piix_map_db {
2724 -@@ -177,6 +180,7 @@ static int piix_sidpr_scr_write(struct ata_link *link,
2725 - static int piix_sidpr_set_lpm(struct ata_link *link, enum ata_lpm_policy policy,
2726 - unsigned hints);
2727 - static bool piix_irq_check(struct ata_port *ap);
2728 -+static int piix_port_start(struct ata_port *ap);
2729 - #ifdef CONFIG_PM
2730 - static int piix_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg);
2731 - static int piix_pci_device_resume(struct pci_dev *pdev);
2732 -@@ -298,21 +302,21 @@ static const struct pci_device_id piix_pci_tbl[] = {
2733 - /* SATA Controller IDE (PCH) */
2734 - { 0x8086, 0x3b2e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
2735 - /* SATA Controller IDE (CPT) */
2736 -- { 0x8086, 0x1c00, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
2737 -+ { 0x8086, 0x1c00, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb },
2738 - /* SATA Controller IDE (CPT) */
2739 -- { 0x8086, 0x1c01, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
2740 -+ { 0x8086, 0x1c01, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb },
2741 - /* SATA Controller IDE (CPT) */
2742 - { 0x8086, 0x1c08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
2743 - /* SATA Controller IDE (CPT) */
2744 - { 0x8086, 0x1c09, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
2745 - /* SATA Controller IDE (PBG) */
2746 -- { 0x8086, 0x1d00, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
2747 -+ { 0x8086, 0x1d00, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb },
2748 - /* SATA Controller IDE (PBG) */
2749 - { 0x8086, 0x1d08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
2750 - /* SATA Controller IDE (Panther Point) */
2751 -- { 0x8086, 0x1e00, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
2752 -+ { 0x8086, 0x1e00, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb },
2753 - /* SATA Controller IDE (Panther Point) */
2754 -- { 0x8086, 0x1e01, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
2755 -+ { 0x8086, 0x1e01, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb },
2756 - /* SATA Controller IDE (Panther Point) */
2757 - { 0x8086, 0x1e08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
2758 - /* SATA Controller IDE (Panther Point) */
2759 -@@ -338,6 +342,7 @@ static struct scsi_host_template piix_sht = {
2760 - static struct ata_port_operations piix_sata_ops = {
2761 - .inherits = &ata_bmdma32_port_ops,
2762 - .sff_irq_check = piix_irq_check,
2763 -+ .port_start = piix_port_start,
2764 - };
2765 -
2766 - static struct ata_port_operations piix_pata_ops = {
2767 -@@ -478,6 +483,7 @@ static const struct piix_map_db *piix_map_db_table[] = {
2768 - [ich8_2port_sata] = &ich8_2port_map_db,
2769 - [ich8m_apple_sata] = &ich8m_apple_map_db,
2770 - [tolapai_sata] = &tolapai_map_db,
2771 -+ [ich8_sata_snb] = &ich8_map_db,
2772 - };
2773 -
2774 - static struct ata_port_info piix_port_info[] = {
2775 -@@ -606,6 +612,19 @@ static struct ata_port_info piix_port_info[] = {
2776 - .port_ops = &piix_vmw_ops,
2777 - },
2778 -
2779 -+ /*
2780 -+ * some Sandybridge chipsets have broken 32 mode up to now,
2781 -+ * see https://bugzilla.kernel.org/show_bug.cgi?id=40592
2782 -+ */
2783 -+ [ich8_sata_snb] =
2784 -+ {
2785 -+ .flags = PIIX_SATA_FLAGS | PIIX_FLAG_SIDPR | PIIX_FLAG_PIO16,
2786 -+ .pio_mask = ATA_PIO4,
2787 -+ .mwdma_mask = ATA_MWDMA2,
2788 -+ .udma_mask = ATA_UDMA6,
2789 -+ .port_ops = &piix_sata_ops,
2790 -+ },
2791 -+
2792 - };
2793 -
2794 - static struct pci_bits piix_enable_bits[] = {
2795 -@@ -649,6 +668,14 @@ static const struct ich_laptop ich_laptop[] = {
2796 - { 0, }
2797 - };
2798 -
2799 -+static int piix_port_start(struct ata_port *ap)
2800 -+{
2801 -+ if (!(ap->flags & PIIX_FLAG_PIO16))
2802 -+ ap->pflags |= ATA_PFLAG_PIO32 | ATA_PFLAG_PIO32CHANGE;
2803 -+
2804 -+ return ata_bmdma_port_start(ap);
2805 -+}
2806 -+
2807 - /**
2808 - * ich_pata_cable_detect - Probe host controller cable detect info
2809 - * @ap: Port for which cable detect info is desired
2810 -diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c
2811 -index 0d4587b..1023392 100644
2812 ---- a/drivers/base/power/runtime.c
2813 -+++ b/drivers/base/power/runtime.c
2814 -@@ -278,6 +278,9 @@ static int rpm_callback(int (*cb)(struct device *), struct device *dev)
2815 - * If a deferred resume was requested while the callback was running then carry
2816 - * it out; otherwise send an idle notification for the device (if the suspend
2817 - * failed) or for its parent (if the suspend succeeded).
2818 -+ * If ->runtime_suspend failed with -EAGAIN or -EBUSY, and if the RPM_AUTO
2819 -+ * flag is set and the next autosuspend-delay expiration time is in the
2820 -+ * future, schedule another autosuspend attempt.
2821 - *
2822 - * This function must be called under dev->power.lock with interrupts disabled.
2823 - */
2824 -@@ -389,10 +392,21 @@ static int rpm_suspend(struct device *dev, int rpmflags)
2825 - if (retval) {
2826 - __update_runtime_status(dev, RPM_ACTIVE);
2827 - dev->power.deferred_resume = 0;
2828 -- if (retval == -EAGAIN || retval == -EBUSY)
2829 -+ if (retval == -EAGAIN || retval == -EBUSY) {
2830 - dev->power.runtime_error = 0;
2831 -- else
2832 -+
2833 -+ /*
2834 -+ * If the callback routine failed an autosuspend, and
2835 -+ * if the last_busy time has been updated so that there
2836 -+ * is a new autosuspend expiration time, automatically
2837 -+ * reschedule another autosuspend.
2838 -+ */
2839 -+ if ((rpmflags & RPM_AUTO) &&
2840 -+ pm_runtime_autosuspend_expiration(dev) != 0)
2841 -+ goto repeat;
2842 -+ } else {
2843 - pm_runtime_cancel_pending(dev);
2844 -+ }
2845 - } else {
2846 - no_callback:
2847 - __update_runtime_status(dev, RPM_SUSPENDED);
2848 -diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
2849 -index 8f4ef65..c2f9b3e 100644
2850 ---- a/drivers/block/cciss.c
2851 -+++ b/drivers/block/cciss.c
2852 -@@ -4533,6 +4533,13 @@ static int cciss_controller_hard_reset(struct pci_dev *pdev,
2853 - pmcsr &= ~PCI_PM_CTRL_STATE_MASK;
2854 - pmcsr |= PCI_D0;
2855 - pci_write_config_word(pdev, pos + PCI_PM_CTRL, pmcsr);
2856 -+
2857 -+ /*
2858 -+ * The P600 requires a small delay when changing states.
2859 -+ * Otherwise we may think the board did not reset and we bail.
2860 -+ * This for kdump only and is particular to the P600.
2861 -+ */
2862 -+ msleep(500);
2863 - }
2864 - return 0;
2865 - }
2866 -diff --git a/drivers/block/xen-blkback/blkback.c b/drivers/block/xen-blkback/blkback.c
2867 -index 5cf2993..54139d0 100644
2868 ---- a/drivers/block/xen-blkback/blkback.c
2869 -+++ b/drivers/block/xen-blkback/blkback.c
2870 -@@ -667,7 +667,7 @@ static int dispatch_rw_block_io(struct xen_blkif *blkif,
2871 -
2872 - if (operation == READ)
2873 - blkif->st_rd_sect += preq.nr_sects;
2874 -- else if (operation == WRITE || operation == WRITE_FLUSH)
2875 -+ else if (operation & WRITE)
2876 - blkif->st_wr_sect += preq.nr_sects;
2877 -
2878 - return 0;
2879 -diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
2880 -index 6bacef3..db7cb81 100644
2881 ---- a/drivers/bluetooth/ath3k.c
2882 -+++ b/drivers/bluetooth/ath3k.c
2883 -@@ -63,6 +63,7 @@ static struct usb_device_id ath3k_table[] = {
2884 - /* Atheros AR3011 with sflash firmware*/
2885 - { USB_DEVICE(0x0CF3, 0x3002) },
2886 - { USB_DEVICE(0x13d3, 0x3304) },
2887 -+ { USB_DEVICE(0x0930, 0x0215) },
2888 -
2889 - /* Atheros AR9285 Malbec with sflash firmware */
2890 - { USB_DEVICE(0x03F0, 0x311D) },
2891 -@@ -375,6 +376,11 @@ static int ath3k_probe(struct usb_interface *intf,
2892 -
2893 - /* load patch and sysconfig files for AR3012 */
2894 - if (id->driver_info & BTUSB_ATH3012) {
2895 -+
2896 -+ /* New firmware with patch and sysconfig files already loaded */
2897 -+ if (le16_to_cpu(udev->descriptor.bcdDevice) > 0x0001)
2898 -+ return -ENODEV;
2899 -+
2900 - ret = ath3k_load_patch(udev);
2901 - if (ret < 0) {
2902 - BT_ERR("Loading patch file failed");
2903 -diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
2904 -index c2de895..b9af6db 100644
2905 ---- a/drivers/bluetooth/btusb.c
2906 -+++ b/drivers/bluetooth/btusb.c
2907 -@@ -54,11 +54,15 @@ static struct usb_driver btusb_driver;
2908 - #define BTUSB_BCM92035 0x10
2909 - #define BTUSB_BROKEN_ISOC 0x20
2910 - #define BTUSB_WRONG_SCO_MTU 0x40
2911 -+#define BTUSB_ATH3012 0x80
2912 -
2913 - static struct usb_device_id btusb_table[] = {
2914 - /* Generic Bluetooth USB device */
2915 - { USB_DEVICE_INFO(0xe0, 0x01, 0x01) },
2916 -
2917 -+ /* Broadcom SoftSailing reporting vendor specific */
2918 -+ { USB_DEVICE(0x05ac, 0x21e1) },
2919 -+
2920 - /* Apple MacBookPro 7,1 */
2921 - { USB_DEVICE(0x05ac, 0x8213) },
2922 -
2923 -@@ -71,9 +75,15 @@ static struct usb_device_id btusb_table[] = {
2924 - /* Apple MacBookAir3,1, MacBookAir3,2 */
2925 - { USB_DEVICE(0x05ac, 0x821b) },
2926 -
2927 -+ /* Apple MacBookAir4,1 */
2928 -+ { USB_DEVICE(0x05ac, 0x821f) },
2929 -+
2930 - /* Apple MacBookPro8,2 */
2931 - { USB_DEVICE(0x05ac, 0x821a) },
2932 -
2933 -+ /* Apple MacMini5,1 */
2934 -+ { USB_DEVICE(0x05ac, 0x8281) },
2935 -+
2936 - /* AVM BlueFRITZ! USB v2.0 */
2937 - { USB_DEVICE(0x057c, 0x3800) },
2938 -
2939 -@@ -105,12 +115,13 @@ static struct usb_device_id blacklist_table[] = {
2940 - /* Atheros 3011 with sflash firmware */
2941 - { USB_DEVICE(0x0cf3, 0x3002), .driver_info = BTUSB_IGNORE },
2942 - { USB_DEVICE(0x13d3, 0x3304), .driver_info = BTUSB_IGNORE },
2943 -+ { USB_DEVICE(0x0930, 0x0215), .driver_info = BTUSB_IGNORE },
2944 -
2945 - /* Atheros AR9285 Malbec with sflash firmware */
2946 - { USB_DEVICE(0x03f0, 0x311d), .driver_info = BTUSB_IGNORE },
2947 -
2948 - /* Atheros 3012 with sflash firmware */
2949 -- { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_IGNORE },
2950 -+ { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 },
2951 -
2952 - /* Atheros AR5BBU12 with sflash firmware */
2953 - { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE },
2954 -@@ -914,6 +925,15 @@ static int btusb_probe(struct usb_interface *intf,
2955 - if (ignore_sniffer && id->driver_info & BTUSB_SNIFFER)
2956 - return -ENODEV;
2957 -
2958 -+ if (id->driver_info & BTUSB_ATH3012) {
2959 -+ struct usb_device *udev = interface_to_usbdev(intf);
2960 -+
2961 -+ /* Old firmware would otherwise let ath3k driver load
2962 -+ * patch and sysconfig files */
2963 -+ if (le16_to_cpu(udev->descriptor.bcdDevice) <= 0x0001)
2964 -+ return -ENODEV;
2965 -+ }
2966 -+
2967 - data = kzalloc(sizeof(*data), GFP_KERNEL);
2968 - if (!data)
2969 - return -ENOMEM;
2970 -diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
2971 -index e2aced6..14264a8 100644
2972 ---- a/drivers/gpu/drm/i915/intel_dp.c
2973 -+++ b/drivers/gpu/drm/i915/intel_dp.c
2974 -@@ -1658,6 +1658,31 @@ g4x_dp_detect(struct intel_dp *intel_dp)
2975 - return status;
2976 - }
2977 -
2978 -+static struct edid *
2979 -+intel_dp_get_edid(struct drm_connector *connector, struct i2c_adapter *adapter)
2980 -+{
2981 -+ struct intel_dp *intel_dp = intel_attached_dp(connector);
2982 -+ struct edid *edid;
2983 -+
2984 -+ ironlake_edp_panel_vdd_on(intel_dp);
2985 -+ edid = drm_get_edid(connector, adapter);
2986 -+ ironlake_edp_panel_vdd_off(intel_dp);
2987 -+ return edid;
2988 -+}
2989 -+
2990 -+static int
2991 -+intel_dp_get_edid_modes(struct drm_connector *connector, struct i2c_adapter *adapter)
2992 -+{
2993 -+ struct intel_dp *intel_dp = intel_attached_dp(connector);
2994 -+ int ret;
2995 -+
2996 -+ ironlake_edp_panel_vdd_on(intel_dp);
2997 -+ ret = intel_ddc_get_modes(connector, adapter);
2998 -+ ironlake_edp_panel_vdd_off(intel_dp);
2999 -+ return ret;
3000 -+}
3001 -+
3002 -+
3003 - /**
3004 - * Uses CRT_HOTPLUG_EN and CRT_HOTPLUG_STAT to detect DP connection.
3005 - *
3006 -@@ -1684,7 +1709,7 @@ intel_dp_detect(struct drm_connector *connector, bool force)
3007 - if (intel_dp->force_audio) {
3008 - intel_dp->has_audio = intel_dp->force_audio > 0;
3009 - } else {
3010 -- edid = drm_get_edid(connector, &intel_dp->adapter);
3011 -+ edid = intel_dp_get_edid(connector, &intel_dp->adapter);
3012 - if (edid) {
3013 - intel_dp->has_audio = drm_detect_monitor_audio(edid);
3014 - connector->display_info.raw_edid = NULL;
3015 -@@ -1705,7 +1730,7 @@ static int intel_dp_get_modes(struct drm_connector *connector)
3016 - /* We should parse the EDID data and find out if it has an audio sink
3017 - */
3018 -
3019 -- ret = intel_ddc_get_modes(connector, &intel_dp->adapter);
3020 -+ ret = intel_dp_get_edid_modes(connector, &intel_dp->adapter);
3021 - if (ret) {
3022 - if (is_edp(intel_dp) && !dev_priv->panel_fixed_mode) {
3023 - struct drm_display_mode *newmode;
3024 -@@ -1741,7 +1766,7 @@ intel_dp_detect_audio(struct drm_connector *connector)
3025 - struct edid *edid;
3026 - bool has_audio = false;
3027 -
3028 -- edid = drm_get_edid(connector, &intel_dp->adapter);
3029 -+ edid = intel_dp_get_edid(connector, &intel_dp->adapter);
3030 - if (edid) {
3031 - has_audio = drm_detect_monitor_audio(edid);
3032 -
3033 -diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
3034 -index 05f500c..f8aa821 100644
3035 ---- a/drivers/gpu/drm/i915/intel_panel.c
3036 -+++ b/drivers/gpu/drm/i915/intel_panel.c
3037 -@@ -226,7 +226,7 @@ static void intel_pch_panel_set_backlight(struct drm_device *dev, u32 level)
3038 - I915_WRITE(BLC_PWM_CPU_CTL, val | level);
3039 - }
3040 -
3041 --void intel_panel_set_backlight(struct drm_device *dev, u32 level)
3042 -+static void intel_panel_actually_set_backlight(struct drm_device *dev, u32 level)
3043 - {
3044 - struct drm_i915_private *dev_priv = dev->dev_private;
3045 - u32 tmp;
3046 -@@ -254,16 +254,21 @@ void intel_panel_set_backlight(struct drm_device *dev, u32 level)
3047 - I915_WRITE(BLC_PWM_CTL, tmp | level);
3048 - }
3049 -
3050 --void intel_panel_disable_backlight(struct drm_device *dev)
3051 -+void intel_panel_set_backlight(struct drm_device *dev, u32 level)
3052 - {
3053 - struct drm_i915_private *dev_priv = dev->dev_private;
3054 -
3055 -- if (dev_priv->backlight_enabled) {
3056 -- dev_priv->backlight_level = intel_panel_get_backlight(dev);
3057 -- dev_priv->backlight_enabled = false;
3058 -- }
3059 -+ dev_priv->backlight_level = level;
3060 -+ if (dev_priv->backlight_enabled)
3061 -+ intel_panel_actually_set_backlight(dev, level);
3062 -+}
3063 -+
3064 -+void intel_panel_disable_backlight(struct drm_device *dev)
3065 -+{
3066 -+ struct drm_i915_private *dev_priv = dev->dev_private;
3067 -
3068 -- intel_panel_set_backlight(dev, 0);
3069 -+ dev_priv->backlight_enabled = false;
3070 -+ intel_panel_actually_set_backlight(dev, 0);
3071 - }
3072 -
3073 - void intel_panel_enable_backlight(struct drm_device *dev)
3074 -@@ -273,8 +278,8 @@ void intel_panel_enable_backlight(struct drm_device *dev)
3075 - if (dev_priv->backlight_level == 0)
3076 - dev_priv->backlight_level = intel_panel_get_max_backlight(dev);
3077 -
3078 -- intel_panel_set_backlight(dev, dev_priv->backlight_level);
3079 - dev_priv->backlight_enabled = true;
3080 -+ intel_panel_actually_set_backlight(dev, dev_priv->backlight_level);
3081 - }
3082 -
3083 - void intel_panel_setup_backlight(struct drm_device *dev)
3084 -diff --git a/drivers/gpu/drm/radeon/atombios_dp.c b/drivers/gpu/drm/radeon/atombios_dp.c
3085 -index 79e8ebc..b5628ce 100644
3086 ---- a/drivers/gpu/drm/radeon/atombios_dp.c
3087 -+++ b/drivers/gpu/drm/radeon/atombios_dp.c
3088 -@@ -553,6 +553,7 @@ static void radeon_dp_set_panel_mode(struct drm_encoder *encoder,
3089 - {
3090 - struct drm_device *dev = encoder->dev;
3091 - struct radeon_device *rdev = dev->dev_private;
3092 -+ struct radeon_connector *radeon_connector = to_radeon_connector(connector);
3093 - int panel_mode = DP_PANEL_MODE_EXTERNAL_DP_MODE;
3094 -
3095 - if (!ASIC_IS_DCE4(rdev))
3096 -@@ -560,10 +561,20 @@ static void radeon_dp_set_panel_mode(struct drm_encoder *encoder,
3097 -
3098 - if (radeon_connector_encoder_is_dp_bridge(connector))
3099 - panel_mode = DP_PANEL_MODE_INTERNAL_DP1_MODE;
3100 -+ else if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) {
3101 -+ u8 tmp = radeon_read_dpcd_reg(radeon_connector, DP_EDP_CONFIGURATION_CAP);
3102 -+ if (tmp & 1)
3103 -+ panel_mode = DP_PANEL_MODE_INTERNAL_DP2_MODE;
3104 -+ }
3105 -
3106 - atombios_dig_encoder_setup(encoder,
3107 - ATOM_ENCODER_CMD_SETUP_PANEL_MODE,
3108 - panel_mode);
3109 -+
3110 -+ if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) &&
3111 -+ (panel_mode == DP_PANEL_MODE_INTERNAL_DP2_MODE)) {
3112 -+ radeon_write_dpcd_reg(radeon_connector, DP_EDP_CONFIGURATION_SET, 1);
3113 -+ }
3114 - }
3115 -
3116 - void radeon_dp_set_link_config(struct drm_connector *connector,
3117 -diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
3118 -index ea7a24e..f1bdb58 100644
3119 ---- a/drivers/gpu/drm/radeon/evergreen.c
3120 -+++ b/drivers/gpu/drm/radeon/evergreen.c
3121 -@@ -353,6 +353,7 @@ void evergreen_hpd_init(struct radeon_device *rdev)
3122 - default:
3123 - break;
3124 - }
3125 -+ radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd);
3126 - }
3127 - if (rdev->irq.installed)
3128 - evergreen_irq_set(rdev);
3129 -diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c
3130 -index 7fcdbbb..c9a0dae 100644
3131 ---- a/drivers/gpu/drm/radeon/r100.c
3132 -+++ b/drivers/gpu/drm/radeon/r100.c
3133 -@@ -434,6 +434,7 @@ void r100_hpd_init(struct radeon_device *rdev)
3134 - default:
3135 - break;
3136 - }
3137 -+ radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd);
3138 - }
3139 - if (rdev->irq.installed)
3140 - r100_irq_set(rdev);
3141 -diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
3142 -index 1dea9d6..1a4ed43 100644
3143 ---- a/drivers/gpu/drm/radeon/r600.c
3144 -+++ b/drivers/gpu/drm/radeon/r600.c
3145 -@@ -762,13 +762,14 @@ void r600_hpd_init(struct radeon_device *rdev)
3146 - struct drm_device *dev = rdev->ddev;
3147 - struct drm_connector *connector;
3148 -
3149 -- if (ASIC_IS_DCE3(rdev)) {
3150 -- u32 tmp = DC_HPDx_CONNECTION_TIMER(0x9c4) | DC_HPDx_RX_INT_TIMER(0xfa);
3151 -- if (ASIC_IS_DCE32(rdev))
3152 -- tmp |= DC_HPDx_EN;
3153 -+ list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
3154 -+ struct radeon_connector *radeon_connector = to_radeon_connector(connector);
3155 -+
3156 -+ if (ASIC_IS_DCE3(rdev)) {
3157 -+ u32 tmp = DC_HPDx_CONNECTION_TIMER(0x9c4) | DC_HPDx_RX_INT_TIMER(0xfa);
3158 -+ if (ASIC_IS_DCE32(rdev))
3159 -+ tmp |= DC_HPDx_EN;
3160 -
3161 -- list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
3162 -- struct radeon_connector *radeon_connector = to_radeon_connector(connector);
3163 - switch (radeon_connector->hpd.hpd) {
3164 - case RADEON_HPD_1:
3165 - WREG32(DC_HPD1_CONTROL, tmp);
3166 -@@ -798,10 +799,7 @@ void r600_hpd_init(struct radeon_device *rdev)
3167 - default:
3168 - break;
3169 - }
3170 -- }
3171 -- } else {
3172 -- list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
3173 -- struct radeon_connector *radeon_connector = to_radeon_connector(connector);
3174 -+ } else {
3175 - switch (radeon_connector->hpd.hpd) {
3176 - case RADEON_HPD_1:
3177 - WREG32(DC_HOT_PLUG_DETECT1_CONTROL, DC_HOT_PLUG_DETECTx_EN);
3178 -@@ -819,6 +817,7 @@ void r600_hpd_init(struct radeon_device *rdev)
3179 - break;
3180 - }
3181 - }
3182 -+ radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd);
3183 - }
3184 - if (rdev->irq.installed)
3185 - r600_irq_set(rdev);
3186 -diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
3187 -index 0bb4ddf..59d72d0 100644
3188 ---- a/drivers/gpu/drm/radeon/radeon.h
3189 -+++ b/drivers/gpu/drm/radeon/radeon.h
3190 -@@ -93,6 +93,7 @@ extern int radeon_audio;
3191 - extern int radeon_disp_priority;
3192 - extern int radeon_hw_i2c;
3193 - extern int radeon_pcie_gen2;
3194 -+extern int radeon_msi;
3195 -
3196 - /*
3197 - * Copy from radeon_drv.h so we don't have to include both and have conflicting
3198 -diff --git a/drivers/gpu/drm/radeon/radeon_combios.c b/drivers/gpu/drm/radeon/radeon_combios.c
3199 -index cd3c86c..859df6b 100644
3200 ---- a/drivers/gpu/drm/radeon/radeon_combios.c
3201 -+++ b/drivers/gpu/drm/radeon/radeon_combios.c
3202 -@@ -620,8 +620,8 @@ static struct radeon_i2c_bus_rec combios_setup_i2c_bus(struct radeon_device *rde
3203 - i2c.y_data_mask = 0x80;
3204 - } else {
3205 - /* default masks for ddc pads */
3206 -- i2c.mask_clk_mask = RADEON_GPIO_EN_1;
3207 -- i2c.mask_data_mask = RADEON_GPIO_EN_0;
3208 -+ i2c.mask_clk_mask = RADEON_GPIO_MASK_1;
3209 -+ i2c.mask_data_mask = RADEON_GPIO_MASK_0;
3210 - i2c.a_clk_mask = RADEON_GPIO_A_1;
3211 - i2c.a_data_mask = RADEON_GPIO_A_0;
3212 - i2c.en_clk_mask = RADEON_GPIO_EN_1;
3213 -diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
3214 -index 05b8b2c..2109c17 100644
3215 ---- a/drivers/gpu/drm/radeon/radeon_connectors.c
3216 -+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
3217 -@@ -715,6 +715,7 @@ radeon_vga_detect(struct drm_connector *connector, bool force)
3218 - dret = radeon_ddc_probe(radeon_connector,
3219 - radeon_connector->requires_extended_probe);
3220 - if (dret) {
3221 -+ radeon_connector->detected_by_load = false;
3222 - if (radeon_connector->edid) {
3223 - kfree(radeon_connector->edid);
3224 - radeon_connector->edid = NULL;
3225 -@@ -741,12 +742,21 @@ radeon_vga_detect(struct drm_connector *connector, bool force)
3226 - } else {
3227 -
3228 - /* if we aren't forcing don't do destructive polling */
3229 -- if (!force)
3230 -- return connector->status;
3231 -+ if (!force) {
3232 -+ /* only return the previous status if we last
3233 -+ * detected a monitor via load.
3234 -+ */
3235 -+ if (radeon_connector->detected_by_load)
3236 -+ return connector->status;
3237 -+ else
3238 -+ return ret;
3239 -+ }
3240 -
3241 - if (radeon_connector->dac_load_detect && encoder) {
3242 - encoder_funcs = encoder->helper_private;
3243 - ret = encoder_funcs->detect(encoder, connector);
3244 -+ if (ret != connector_status_disconnected)
3245 -+ radeon_connector->detected_by_load = true;
3246 - }
3247 - }
3248 -
3249 -@@ -888,6 +898,7 @@ radeon_dvi_detect(struct drm_connector *connector, bool force)
3250 - dret = radeon_ddc_probe(radeon_connector,
3251 - radeon_connector->requires_extended_probe);
3252 - if (dret) {
3253 -+ radeon_connector->detected_by_load = false;
3254 - if (radeon_connector->edid) {
3255 - kfree(radeon_connector->edid);
3256 - radeon_connector->edid = NULL;
3257 -@@ -950,8 +961,18 @@ radeon_dvi_detect(struct drm_connector *connector, bool force)
3258 - if ((ret == connector_status_connected) && (radeon_connector->use_digital == true))
3259 - goto out;
3260 -
3261 -+ /* DVI-D and HDMI-A are digital only */
3262 -+ if ((connector->connector_type == DRM_MODE_CONNECTOR_DVID) ||
3263 -+ (connector->connector_type == DRM_MODE_CONNECTOR_HDMIA))
3264 -+ goto out;
3265 -+
3266 -+ /* if we aren't forcing don't do destructive polling */
3267 - if (!force) {
3268 -- ret = connector->status;
3269 -+ /* only return the previous status if we last
3270 -+ * detected a monitor via load.
3271 -+ */
3272 -+ if (radeon_connector->detected_by_load)
3273 -+ ret = connector->status;
3274 - goto out;
3275 - }
3276 -
3277 -@@ -976,6 +997,8 @@ radeon_dvi_detect(struct drm_connector *connector, bool force)
3278 - if (ret == connector_status_connected) {
3279 - radeon_connector->use_digital = false;
3280 - }
3281 -+ if (ret != connector_status_disconnected)
3282 -+ radeon_connector->detected_by_load = true;
3283 - }
3284 - break;
3285 - }
3286 -diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
3287 -index 73dfbe8..60e1605 100644
3288 ---- a/drivers/gpu/drm/radeon/radeon_drv.c
3289 -+++ b/drivers/gpu/drm/radeon/radeon_drv.c
3290 -@@ -117,6 +117,7 @@ int radeon_audio = 0;
3291 - int radeon_disp_priority = 0;
3292 - int radeon_hw_i2c = 0;
3293 - int radeon_pcie_gen2 = 0;
3294 -+int radeon_msi = -1;
3295 -
3296 - MODULE_PARM_DESC(no_wb, "Disable AGP writeback for scratch registers");
3297 - module_param_named(no_wb, radeon_no_wb, int, 0444);
3298 -@@ -163,6 +164,9 @@ module_param_named(hw_i2c, radeon_hw_i2c, int, 0444);
3299 - MODULE_PARM_DESC(pcie_gen2, "PCIE Gen2 mode (1 = enable)");
3300 - module_param_named(pcie_gen2, radeon_pcie_gen2, int, 0444);
3301 -
3302 -+MODULE_PARM_DESC(msi, "MSI support (1 = enable, 0 = disable, -1 = auto)");
3303 -+module_param_named(msi, radeon_msi, int, 0444);
3304 -+
3305 - static int radeon_suspend(struct drm_device *dev, pm_message_t state)
3306 - {
3307 - drm_radeon_private_t *dev_priv = dev->dev_private;
3308 -diff --git a/drivers/gpu/drm/radeon/radeon_irq_kms.c b/drivers/gpu/drm/radeon/radeon_irq_kms.c
3309 -index 9ec830c..fecc1aa 100644
3310 ---- a/drivers/gpu/drm/radeon/radeon_irq_kms.c
3311 -+++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c
3312 -@@ -108,6 +108,46 @@ void radeon_driver_irq_uninstall_kms(struct drm_device *dev)
3313 - radeon_irq_set(rdev);
3314 - }
3315 -
3316 -+static bool radeon_msi_ok(struct radeon_device *rdev)
3317 -+{
3318 -+ /* RV370/RV380 was first asic with MSI support */
3319 -+ if (rdev->family < CHIP_RV380)
3320 -+ return false;
3321 -+
3322 -+ /* MSIs don't work on AGP */
3323 -+ if (rdev->flags & RADEON_IS_AGP)
3324 -+ return false;
3325 -+
3326 -+ /* force MSI on */
3327 -+ if (radeon_msi == 1)
3328 -+ return true;
3329 -+ else if (radeon_msi == 0)
3330 -+ return false;
3331 -+
3332 -+ /* Quirks */
3333 -+ /* HP RS690 only seems to work with MSIs. */
3334 -+ if ((rdev->pdev->device == 0x791f) &&
3335 -+ (rdev->pdev->subsystem_vendor == 0x103c) &&
3336 -+ (rdev->pdev->subsystem_device == 0x30c2))
3337 -+ return true;
3338 -+
3339 -+ /* Dell RS690 only seems to work with MSIs. */
3340 -+ if ((rdev->pdev->device == 0x791f) &&
3341 -+ (rdev->pdev->subsystem_vendor == 0x1028) &&
3342 -+ (rdev->pdev->subsystem_device == 0x01fd))
3343 -+ return true;
3344 -+
3345 -+ if (rdev->flags & RADEON_IS_IGP) {
3346 -+ /* APUs work fine with MSIs */
3347 -+ if (rdev->family >= CHIP_PALM)
3348 -+ return true;
3349 -+ /* lots of IGPs have problems with MSIs */
3350 -+ return false;
3351 -+ }
3352 -+
3353 -+ return true;
3354 -+}
3355 -+
3356 - int radeon_irq_kms_init(struct radeon_device *rdev)
3357 - {
3358 - int i;
3359 -@@ -124,12 +164,8 @@ int radeon_irq_kms_init(struct radeon_device *rdev)
3360 - }
3361 - /* enable msi */
3362 - rdev->msi_enabled = 0;
3363 -- /* MSIs don't seem to work reliably on all IGP
3364 -- * chips. Disable MSI on them for now.
3365 -- */
3366 -- if ((rdev->family >= CHIP_RV380) &&
3367 -- ((!(rdev->flags & RADEON_IS_IGP)) || (rdev->family >= CHIP_PALM)) &&
3368 -- (!(rdev->flags & RADEON_IS_AGP))) {
3369 -+
3370 -+ if (radeon_msi_ok(rdev)) {
3371 - int ret = pci_enable_msi(rdev->pdev);
3372 - if (!ret) {
3373 - rdev->msi_enabled = 1;
3374 -diff --git a/drivers/gpu/drm/radeon/radeon_mode.h b/drivers/gpu/drm/radeon/radeon_mode.h
3375 -index 68820f5..ed0178f 100644
3376 ---- a/drivers/gpu/drm/radeon/radeon_mode.h
3377 -+++ b/drivers/gpu/drm/radeon/radeon_mode.h
3378 -@@ -447,6 +447,7 @@ struct radeon_connector {
3379 - struct edid *edid;
3380 - void *con_priv;
3381 - bool dac_load_detect;
3382 -+ bool detected_by_load; /* if the connection status was determined by load */
3383 - uint16_t connector_object_id;
3384 - struct radeon_hpd hpd;
3385 - struct radeon_router router;
3386 -diff --git a/drivers/gpu/drm/radeon/rs600.c b/drivers/gpu/drm/radeon/rs600.c
3387 -index 1f5850e..aea28c3 100644
3388 ---- a/drivers/gpu/drm/radeon/rs600.c
3389 -+++ b/drivers/gpu/drm/radeon/rs600.c
3390 -@@ -287,6 +287,7 @@ void rs600_hpd_init(struct radeon_device *rdev)
3391 - default:
3392 - break;
3393 - }
3394 -+ radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd);
3395 - }
3396 - if (rdev->irq.installed)
3397 - rs600_irq_set(rdev);
3398 -diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
3399 -index 36ca465..7e0acf4 100644
3400 ---- a/drivers/hid/Kconfig
3401 -+++ b/drivers/hid/Kconfig
3402 -@@ -69,7 +69,7 @@ config HID_ACRUX
3403 - Say Y here if you want to enable support for ACRUX game controllers.
3404 -
3405 - config HID_ACRUX_FF
3406 -- tristate "ACRUX force feedback support"
3407 -+ bool "ACRUX force feedback support"
3408 - depends on HID_ACRUX
3409 - select INPUT_FF_MEMLESS
3410 - ---help---
3411 -@@ -314,6 +314,7 @@ config HID_MULTITOUCH
3412 - - Hanvon dual touch panels
3413 - - Ilitek dual touch panels
3414 - - IrTouch Infrared USB panels
3415 -+ - LG Display panels (Dell ST2220Tc)
3416 - - Lumio CrystalTouch panels
3417 - - MosArt dual-touch panels
3418 - - PenMount dual touch panels
3419 -diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c
3420 -index b85744f..299d238 100644
3421 ---- a/drivers/hid/hid-apple.c
3422 -+++ b/drivers/hid/hid-apple.c
3423 -@@ -444,11 +444,20 @@ static const struct hid_device_id apple_devices[] = {
3424 - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_JIS),
3425 - .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN |
3426 - APPLE_RDESC_JIS },
3427 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_REVB_ANSI),
3428 -+ .driver_data = APPLE_HAS_FN },
3429 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_REVB_ISO),
3430 -+ .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
3431 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_REVB_JIS),
3432 -+ .driver_data = APPLE_HAS_FN },
3433 - { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI),
3434 - .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
3435 - { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ISO),
3436 - .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN |
3437 - APPLE_ISO_KEYBOARD },
3438 -+ { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ISO),
3439 -+ .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN |
3440 -+ APPLE_ISO_KEYBOARD },
3441 - { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_JIS),
3442 - .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
3443 - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING_ANSI),
3444 -@@ -487,6 +496,24 @@ static const struct hid_device_id apple_devices[] = {
3445 - .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
3446 - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_JIS),
3447 - .driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
3448 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_ANSI),
3449 -+ .driver_data = APPLE_HAS_FN },
3450 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_ISO),
3451 -+ .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
3452 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_JIS),
3453 -+ .driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
3454 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ANSI),
3455 -+ .driver_data = APPLE_HAS_FN },
3456 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ISO),
3457 -+ .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
3458 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_JIS),
3459 -+ .driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
3460 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_ANSI),
3461 -+ .driver_data = APPLE_HAS_FN },
3462 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_ISO),
3463 -+ .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
3464 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_JIS),
3465 -+ .driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
3466 - { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI),
3467 - .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
3468 - { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO),
3469 -diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
3470 -index 6f3289a..4f81d20 100644
3471 ---- a/drivers/hid/hid-core.c
3472 -+++ b/drivers/hid/hid-core.c
3473 -@@ -1340,9 +1340,22 @@ static const struct hid_device_id hid_have_special_driver[] = {
3474 - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_ANSI) },
3475 - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_ISO) },
3476 - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_JIS) },
3477 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_ANSI) },
3478 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_ISO) },
3479 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_JIS) },
3480 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_ANSI) },
3481 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_ISO) },
3482 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_JIS) },
3483 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ANSI) },
3484 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ISO) },
3485 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_JIS) },
3486 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_REVB_ANSI) },
3487 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_REVB_ISO) },
3488 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_REVB_JIS) },
3489 - { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI) },
3490 - { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO) },
3491 - { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS) },
3492 -+ { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ISO) },
3493 - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) },
3494 - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) },
3495 - { HID_USB_DEVICE(USB_VENDOR_ID_ASUS, USB_DEVICE_ID_ASUS_T91MT) },
3496 -@@ -1395,6 +1408,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
3497 - { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_ERGO_525V) },
3498 - { HID_USB_DEVICE(USB_VENDOR_ID_LABTEC, USB_DEVICE_ID_LABTEC_WIRELESS_KEYBOARD) },
3499 - { HID_USB_DEVICE(USB_VENDOR_ID_LCPOWER, USB_DEVICE_ID_LCPOWER_LC1000 ) },
3500 -+ { HID_USB_DEVICE(USB_VENDOR_ID_LG, USB_DEVICE_ID_LG_MULTITOUCH) },
3501 - { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_MX3000_RECEIVER) },
3502 - { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_S510_RECEIVER) },
3503 - { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_S510_RECEIVER_2) },
3504 -@@ -1883,6 +1897,9 @@ static const struct hid_device_id hid_mouse_ignore_list[] = {
3505 - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_ANSI) },
3506 - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_ISO) },
3507 - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_JIS) },
3508 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_ANSI) },
3509 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_ISO) },
3510 -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_JIS) },
3511 - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) },
3512 - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) },
3513 - { }
3514 -diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
3515 -index c946d90..c97003c 100644
3516 ---- a/drivers/hid/hid-ids.h
3517 -+++ b/drivers/hid/hid-ids.h
3518 -@@ -109,9 +109,22 @@
3519 - #define USB_DEVICE_ID_APPLE_WELLSPRING5_ANSI 0x0245
3520 - #define USB_DEVICE_ID_APPLE_WELLSPRING5_ISO 0x0246
3521 - #define USB_DEVICE_ID_APPLE_WELLSPRING5_JIS 0x0247
3522 -+#define USB_DEVICE_ID_APPLE_WELLSPRING6A_ANSI 0x0249
3523 -+#define USB_DEVICE_ID_APPLE_WELLSPRING6A_ISO 0x024a
3524 -+#define USB_DEVICE_ID_APPLE_WELLSPRING6A_JIS 0x024b
3525 -+#define USB_DEVICE_ID_APPLE_WELLSPRING6_ANSI 0x024c
3526 -+#define USB_DEVICE_ID_APPLE_WELLSPRING6_ISO 0x024d
3527 -+#define USB_DEVICE_ID_APPLE_WELLSPRING6_JIS 0x024e
3528 -+#define USB_DEVICE_ID_APPLE_ALU_REVB_ANSI 0x024f
3529 -+#define USB_DEVICE_ID_APPLE_ALU_REVB_ISO 0x0250
3530 -+#define USB_DEVICE_ID_APPLE_ALU_REVB_JIS 0x0251
3531 -+#define USB_DEVICE_ID_APPLE_WELLSPRING5A_ANSI 0x0252
3532 -+#define USB_DEVICE_ID_APPLE_WELLSPRING5A_ISO 0x0253
3533 -+#define USB_DEVICE_ID_APPLE_WELLSPRING5A_JIS 0x0254
3534 - #define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI 0x0239
3535 - #define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO 0x023a
3536 - #define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS 0x023b
3537 -+#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ISO 0x0256
3538 - #define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a
3539 - #define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b
3540 - #define USB_DEVICE_ID_APPLE_ATV_IRCONTROL 0x8241
3541 -@@ -274,6 +287,7 @@
3542 - #define USB_DEVICE_ID_PENPOWER 0x00f4
3543 -
3544 - #define USB_VENDOR_ID_GREENASIA 0x0e8f
3545 -+#define USB_DEVICE_ID_GREENASIA_DUAL_USB_JOYPAD 0x3013
3546 -
3547 - #define USB_VENDOR_ID_GRETAGMACBETH 0x0971
3548 - #define USB_DEVICE_ID_GRETAGMACBETH_HUEY 0x2005
3549 -@@ -416,6 +430,9 @@
3550 - #define USB_DEVICE_ID_LD_HYBRID 0x2090
3551 - #define USB_DEVICE_ID_LD_HEATCONTROL 0x20A0
3552 -
3553 -+#define USB_VENDOR_ID_LG 0x1fd2
3554 -+#define USB_DEVICE_ID_LG_MULTITOUCH 0x0064
3555 -+
3556 - #define USB_VENDOR_ID_LOGITECH 0x046d
3557 - #define USB_DEVICE_ID_LOGITECH_RECEIVER 0xc101
3558 - #define USB_DEVICE_ID_LOGITECH_HARMONY_FIRST 0xc110
3559 -diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
3560 -index 62cac4d..685d8e4 100644
3561 ---- a/drivers/hid/hid-multitouch.c
3562 -+++ b/drivers/hid/hid-multitouch.c
3563 -@@ -672,6 +672,11 @@ static const struct hid_device_id mt_devices[] = {
3564 - HID_USB_DEVICE(USB_VENDOR_ID_IRTOUCHSYSTEMS,
3565 - USB_DEVICE_ID_IRTOUCH_INFRARED_USB) },
3566 -
3567 -+ /* LG Display panels */
3568 -+ { .driver_data = MT_CLS_DEFAULT,
3569 -+ HID_USB_DEVICE(USB_VENDOR_ID_LG,
3570 -+ USB_DEVICE_ID_LG_MULTITOUCH) },
3571 -+
3572 - /* Lumio panels */
3573 - { .driver_data = MT_CLS_CONFIDENCE_MINUS_ONE,
3574 - HID_USB_DEVICE(USB_VENDOR_ID_LUMIO,
3575 -diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
3576 -index 4bdb5d4..3146fdc 100644
3577 ---- a/drivers/hid/usbhid/hid-quirks.c
3578 -+++ b/drivers/hid/usbhid/hid-quirks.c
3579 -@@ -47,6 +47,7 @@ static const struct hid_blacklist {
3580 - { USB_VENDOR_ID_AFATECH, USB_DEVICE_ID_AFATECH_AF9016, HID_QUIRK_FULLSPEED_INTERVAL },
3581 -
3582 - { USB_VENDOR_ID_ETURBOTOUCH, USB_DEVICE_ID_ETURBOTOUCH, HID_QUIRK_MULTI_INPUT },
3583 -+ { USB_VENDOR_ID_GREENASIA, USB_DEVICE_ID_GREENASIA_DUAL_USB_JOYPAD, HID_QUIRK_MULTI_INPUT },
3584 - { USB_VENDOR_ID_PANTHERLORD, USB_DEVICE_ID_PANTHERLORD_TWIN_USB_JOYSTICK, HID_QUIRK_MULTI_INPUT | HID_QUIRK_SKIP_OUTPUT_REPORTS },
3585 - { USB_VENDOR_ID_PLAYDOTCOM, USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII, HID_QUIRK_MULTI_INPUT },
3586 - { USB_VENDOR_ID_TOUCHPACK, USB_DEVICE_ID_TOUCHPACK_RTS, HID_QUIRK_MULTI_INPUT },
3587 -diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c
3588 -index 0070d54..f642194 100644
3589 ---- a/drivers/hwmon/coretemp.c
3590 -+++ b/drivers/hwmon/coretemp.c
3591 -@@ -50,14 +50,13 @@
3592 - #ifdef CONFIG_SMP
3593 - #define TO_PHYS_ID(cpu) cpu_data(cpu).phys_proc_id
3594 - #define TO_CORE_ID(cpu) cpu_data(cpu).cpu_core_id
3595 --#define TO_ATTR_NO(cpu) (TO_CORE_ID(cpu) + BASE_SYSFS_ATTR_NO)
3596 - #define for_each_sibling(i, cpu) for_each_cpu(i, cpu_sibling_mask(cpu))
3597 - #else
3598 - #define TO_PHYS_ID(cpu) (cpu)
3599 - #define TO_CORE_ID(cpu) (cpu)
3600 --#define TO_ATTR_NO(cpu) (cpu)
3601 - #define for_each_sibling(i, cpu) for (i = 0; false; )
3602 - #endif
3603 -+#define TO_ATTR_NO(cpu) (TO_CORE_ID(cpu) + BASE_SYSFS_ATTR_NO)
3604 -
3605 - /*
3606 - * Per-Core Temperature Data
3607 -diff --git a/drivers/hwmon/w83627ehf.c b/drivers/hwmon/w83627ehf.c
3608 -index 36d7f27..4b2fc50 100644
3609 ---- a/drivers/hwmon/w83627ehf.c
3610 -+++ b/drivers/hwmon/w83627ehf.c
3611 -@@ -1756,7 +1756,17 @@ static inline void __devinit w83627ehf_init_device(struct w83627ehf_data *data,
3612 - diode = 0x70;
3613 - }
3614 - for (i = 0; i < 3; i++) {
3615 -- if ((tmp & (0x02 << i)))
3616 -+ const char *label = NULL;
3617 -+
3618 -+ if (data->temp_label)
3619 -+ label = data->temp_label[data->temp_src[i]];
3620 -+
3621 -+ /* Digital source overrides analog type */
3622 -+ if (label && strncmp(label, "PECI", 4) == 0)
3623 -+ data->temp_type[i] = 6;
3624 -+ else if (label && strncmp(label, "AMD", 3) == 0)
3625 -+ data->temp_type[i] = 5;
3626 -+ else if ((tmp & (0x02 << i)))
3627 - data->temp_type[i] = (diode & (0x10 << i)) ? 1 : 3;
3628 - else
3629 - data->temp_type[i] = 4; /* thermistor */
3630 -diff --git a/drivers/hwspinlock/hwspinlock_core.c b/drivers/hwspinlock/hwspinlock_core.c
3631 -index 43a6271..12f7c83 100644
3632 ---- a/drivers/hwspinlock/hwspinlock_core.c
3633 -+++ b/drivers/hwspinlock/hwspinlock_core.c
3634 -@@ -26,6 +26,7 @@
3635 - #include <linux/radix-tree.h>
3636 - #include <linux/hwspinlock.h>
3637 - #include <linux/pm_runtime.h>
3638 -+#include <linux/mutex.h>
3639 -
3640 - #include "hwspinlock_internal.h"
3641 -
3642 -@@ -52,10 +53,12 @@
3643 - static RADIX_TREE(hwspinlock_tree, GFP_KERNEL);
3644 -
3645 - /*
3646 -- * Synchronization of access to the tree is achieved using this spinlock,
3647 -+ * Synchronization of access to the tree is achieved using this mutex,
3648 - * as the radix-tree API requires that users provide all synchronisation.
3649 -+ * A mutex is needed because we're using non-atomic radix tree allocations.
3650 - */
3651 --static DEFINE_SPINLOCK(hwspinlock_tree_lock);
3652 -+static DEFINE_MUTEX(hwspinlock_tree_lock);
3653 -+
3654 -
3655 - /**
3656 - * __hwspin_trylock() - attempt to lock a specific hwspinlock
3657 -@@ -261,8 +264,7 @@ EXPORT_SYMBOL_GPL(__hwspin_unlock);
3658 - * This function should be called from the underlying platform-specific
3659 - * implementation, to register a new hwspinlock instance.
3660 - *
3661 -- * Can be called from an atomic context (will not sleep) but not from
3662 -- * within interrupt context.
3663 -+ * Should be called from a process context (might sleep)
3664 - *
3665 - * Returns 0 on success, or an appropriate error code on failure
3666 - */
3667 -@@ -279,7 +281,7 @@ int hwspin_lock_register(struct hwspinlock *hwlock)
3668 -
3669 - spin_lock_init(&hwlock->lock);
3670 -
3671 -- spin_lock(&hwspinlock_tree_lock);
3672 -+ mutex_lock(&hwspinlock_tree_lock);
3673 -
3674 - ret = radix_tree_insert(&hwspinlock_tree, hwlock->id, hwlock);
3675 - if (ret)
3676 -@@ -293,7 +295,7 @@ int hwspin_lock_register(struct hwspinlock *hwlock)
3677 - WARN_ON(tmp != hwlock);
3678 -
3679 - out:
3680 -- spin_unlock(&hwspinlock_tree_lock);
3681 -+ mutex_unlock(&hwspinlock_tree_lock);
3682 - return ret;
3683 - }
3684 - EXPORT_SYMBOL_GPL(hwspin_lock_register);
3685 -@@ -305,8 +307,7 @@ EXPORT_SYMBOL_GPL(hwspin_lock_register);
3686 - * This function should be called from the underlying platform-specific
3687 - * implementation, to unregister an existing (and unused) hwspinlock.
3688 - *
3689 -- * Can be called from an atomic context (will not sleep) but not from
3690 -- * within interrupt context.
3691 -+ * Should be called from a process context (might sleep)
3692 - *
3693 - * Returns the address of hwspinlock @id on success, or NULL on failure
3694 - */
3695 -@@ -315,7 +316,7 @@ struct hwspinlock *hwspin_lock_unregister(unsigned int id)
3696 - struct hwspinlock *hwlock = NULL;
3697 - int ret;
3698 -
3699 -- spin_lock(&hwspinlock_tree_lock);
3700 -+ mutex_lock(&hwspinlock_tree_lock);
3701 -
3702 - /* make sure the hwspinlock is not in use (tag is set) */
3703 - ret = radix_tree_tag_get(&hwspinlock_tree, id, HWSPINLOCK_UNUSED);
3704 -@@ -331,7 +332,7 @@ struct hwspinlock *hwspin_lock_unregister(unsigned int id)
3705 - }
3706 -
3707 - out:
3708 -- spin_unlock(&hwspinlock_tree_lock);
3709 -+ mutex_unlock(&hwspinlock_tree_lock);
3710 - return hwlock;
3711 - }
3712 - EXPORT_SYMBOL_GPL(hwspin_lock_unregister);
3713 -@@ -400,9 +401,7 @@ EXPORT_SYMBOL_GPL(hwspin_lock_get_id);
3714 - * to the remote core before it can be used for synchronization (to get the
3715 - * id of a given hwlock, use hwspin_lock_get_id()).
3716 - *
3717 -- * Can be called from an atomic context (will not sleep) but not from
3718 -- * within interrupt context (simply because there is no use case for
3719 -- * that yet).
3720 -+ * Should be called from a process context (might sleep)
3721 - *
3722 - * Returns the address of the assigned hwspinlock, or NULL on error
3723 - */
3724 -@@ -411,7 +410,7 @@ struct hwspinlock *hwspin_lock_request(void)
3725 - struct hwspinlock *hwlock;
3726 - int ret;
3727 -
3728 -- spin_lock(&hwspinlock_tree_lock);
3729 -+ mutex_lock(&hwspinlock_tree_lock);
3730 -
3731 - /* look for an unused lock */
3732 - ret = radix_tree_gang_lookup_tag(&hwspinlock_tree, (void **)&hwlock,
3733 -@@ -431,7 +430,7 @@ struct hwspinlock *hwspin_lock_request(void)
3734 - hwlock = NULL;
3735 -
3736 - out:
3737 -- spin_unlock(&hwspinlock_tree_lock);
3738 -+ mutex_unlock(&hwspinlock_tree_lock);
3739 - return hwlock;
3740 - }
3741 - EXPORT_SYMBOL_GPL(hwspin_lock_request);
3742 -@@ -445,9 +444,7 @@ EXPORT_SYMBOL_GPL(hwspin_lock_request);
3743 - * Usually early board code will be calling this function in order to
3744 - * reserve specific hwspinlock ids for predefined purposes.
3745 - *
3746 -- * Can be called from an atomic context (will not sleep) but not from
3747 -- * within interrupt context (simply because there is no use case for
3748 -- * that yet).
3749 -+ * Should be called from a process context (might sleep)
3750 - *
3751 - * Returns the address of the assigned hwspinlock, or NULL on error
3752 - */
3753 -@@ -456,7 +453,7 @@ struct hwspinlock *hwspin_lock_request_specific(unsigned int id)
3754 - struct hwspinlock *hwlock;
3755 - int ret;
3756 -
3757 -- spin_lock(&hwspinlock_tree_lock);
3758 -+ mutex_lock(&hwspinlock_tree_lock);
3759 -
3760 - /* make sure this hwspinlock exists */
3761 - hwlock = radix_tree_lookup(&hwspinlock_tree, id);
3762 -@@ -482,7 +479,7 @@ struct hwspinlock *hwspin_lock_request_specific(unsigned int id)
3763 - hwlock = NULL;
3764 -
3765 - out:
3766 -- spin_unlock(&hwspinlock_tree_lock);
3767 -+ mutex_unlock(&hwspinlock_tree_lock);
3768 - return hwlock;
3769 - }
3770 - EXPORT_SYMBOL_GPL(hwspin_lock_request_specific);
3771 -@@ -495,9 +492,7 @@ EXPORT_SYMBOL_GPL(hwspin_lock_request_specific);
3772 - * Should only be called with an @hwlock that was retrieved from
3773 - * an earlier call to omap_hwspin_lock_request{_specific}.
3774 - *
3775 -- * Can be called from an atomic context (will not sleep) but not from
3776 -- * within interrupt context (simply because there is no use case for
3777 -- * that yet).
3778 -+ * Should be called from a process context (might sleep)
3779 - *
3780 - * Returns 0 on success, or an appropriate error code on failure
3781 - */
3782 -@@ -511,7 +506,7 @@ int hwspin_lock_free(struct hwspinlock *hwlock)
3783 - return -EINVAL;
3784 - }
3785 -
3786 -- spin_lock(&hwspinlock_tree_lock);
3787 -+ mutex_lock(&hwspinlock_tree_lock);
3788 -
3789 - /* make sure the hwspinlock is used */
3790 - ret = radix_tree_tag_get(&hwspinlock_tree, hwlock->id,
3791 -@@ -538,7 +533,7 @@ int hwspin_lock_free(struct hwspinlock *hwlock)
3792 - module_put(hwlock->owner);
3793 -
3794 - out:
3795 -- spin_unlock(&hwspinlock_tree_lock);
3796 -+ mutex_unlock(&hwspinlock_tree_lock);
3797 - return ret;
3798 - }
3799 - EXPORT_SYMBOL_GPL(hwspin_lock_free);
3800 -diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c
3801 -index dc3d3d8..661b692 100644
3802 ---- a/drivers/leds/led-class.c
3803 -+++ b/drivers/leds/led-class.c
3804 -@@ -267,9 +267,14 @@ void led_blink_set(struct led_classdev *led_cdev,
3805 - unsigned long *delay_on,
3806 - unsigned long *delay_off)
3807 - {
3808 -+ del_timer_sync(&led_cdev->blink_timer);
3809 -+
3810 - if (led_cdev->blink_set &&
3811 -- !led_cdev->blink_set(led_cdev, delay_on, delay_off))
3812 -+ !led_cdev->blink_set(led_cdev, delay_on, delay_off)) {
3813 -+ led_cdev->blink_delay_on = *delay_on;
3814 -+ led_cdev->blink_delay_off = *delay_off;
3815 - return;
3816 -+ }
3817 -
3818 - /* blink with 1 Hz as default if nothing specified */
3819 - if (!*delay_on && !*delay_off)
3820 -diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
3821 -index 2581ba1..e509147 100644
3822 ---- a/drivers/md/raid5.c
3823 -+++ b/drivers/md/raid5.c
3824 -@@ -3369,7 +3369,7 @@ static void handle_stripe6(struct stripe_head *sh)
3825 - /* Not in-sync */;
3826 - else if (test_bit(In_sync, &rdev->flags))
3827 - set_bit(R5_Insync, &dev->flags);
3828 -- else {
3829 -+ else if (!test_bit(Faulty, &rdev->flags)) {
3830 - /* in sync if before recovery_offset */
3831 - if (sh->sector + STRIPE_SECTORS <= rdev->recovery_offset)
3832 - set_bit(R5_Insync, &dev->flags);
3833 -diff --git a/drivers/media/dvb/dvb-usb/dib0700_core.c b/drivers/media/dvb/dvb-usb/dib0700_core.c
3834 -index 5eb91b4..a224e94 100644
3835 ---- a/drivers/media/dvb/dvb-usb/dib0700_core.c
3836 -+++ b/drivers/media/dvb/dvb-usb/dib0700_core.c
3837 -@@ -30,6 +30,11 @@ int dib0700_get_version(struct dvb_usb_device *d, u32 *hwversion,
3838 - struct dib0700_state *st = d->priv;
3839 - int ret;
3840 -
3841 -+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
3842 -+ deb_info("could not acquire lock");
3843 -+ return 0;
3844 -+ }
3845 -+
3846 - ret = usb_control_msg(d->udev, usb_rcvctrlpipe(d->udev, 0),
3847 - REQUEST_GET_VERSION,
3848 - USB_TYPE_VENDOR | USB_DIR_IN, 0, 0,
3849 -@@ -46,6 +51,7 @@ int dib0700_get_version(struct dvb_usb_device *d, u32 *hwversion,
3850 - if (fwtype != NULL)
3851 - *fwtype = (st->buf[12] << 24) | (st->buf[13] << 16) |
3852 - (st->buf[14] << 8) | st->buf[15];
3853 -+ mutex_unlock(&d->usb_mutex);
3854 - return ret;
3855 - }
3856 -
3857 -@@ -108,7 +114,12 @@ int dib0700_ctrl_rd(struct dvb_usb_device *d, u8 *tx, u8 txlen, u8 *rx, u8 rxlen
3858 - int dib0700_set_gpio(struct dvb_usb_device *d, enum dib07x0_gpios gpio, u8 gpio_dir, u8 gpio_val)
3859 - {
3860 - struct dib0700_state *st = d->priv;
3861 -- s16 ret;
3862 -+ int ret;
3863 -+
3864 -+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
3865 -+ deb_info("could not acquire lock");
3866 -+ return 0;
3867 -+ }
3868 -
3869 - st->buf[0] = REQUEST_SET_GPIO;
3870 - st->buf[1] = gpio;
3871 -@@ -116,6 +127,7 @@ int dib0700_set_gpio(struct dvb_usb_device *d, enum dib07x0_gpios gpio, u8 gpio_
3872 -
3873 - ret = dib0700_ctrl_wr(d, st->buf, 3);
3874 -
3875 -+ mutex_unlock(&d->usb_mutex);
3876 - return ret;
3877 - }
3878 -
3879 -@@ -125,6 +137,11 @@ static int dib0700_set_usb_xfer_len(struct dvb_usb_device *d, u16 nb_ts_packets)
3880 - int ret;
3881 -
3882 - if (st->fw_version >= 0x10201) {
3883 -+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
3884 -+ deb_info("could not acquire lock");
3885 -+ return 0;
3886 -+ }
3887 -+
3888 - st->buf[0] = REQUEST_SET_USB_XFER_LEN;
3889 - st->buf[1] = (nb_ts_packets >> 8) & 0xff;
3890 - st->buf[2] = nb_ts_packets & 0xff;
3891 -@@ -132,6 +149,7 @@ static int dib0700_set_usb_xfer_len(struct dvb_usb_device *d, u16 nb_ts_packets)
3892 - deb_info("set the USB xfer len to %i Ts packet\n", nb_ts_packets);
3893 -
3894 - ret = dib0700_ctrl_wr(d, st->buf, 3);
3895 -+ mutex_unlock(&d->usb_mutex);
3896 - } else {
3897 - deb_info("this firmware does not allow to change the USB xfer len\n");
3898 - ret = -EIO;
3899 -@@ -208,6 +226,10 @@ static int dib0700_i2c_xfer_new(struct i2c_adapter *adap, struct i2c_msg *msg,
3900 -
3901 - } else {
3902 - /* Write request */
3903 -+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
3904 -+ deb_info("could not acquire lock");
3905 -+ return 0;
3906 -+ }
3907 - st->buf[0] = REQUEST_NEW_I2C_WRITE;
3908 - st->buf[1] = msg[i].addr << 1;
3909 - st->buf[2] = (en_start << 7) | (en_stop << 6) |
3910 -@@ -227,6 +249,7 @@ static int dib0700_i2c_xfer_new(struct i2c_adapter *adap, struct i2c_msg *msg,
3911 - USB_TYPE_VENDOR | USB_DIR_OUT,
3912 - 0, 0, st->buf, msg[i].len + 4,
3913 - USB_CTRL_GET_TIMEOUT);
3914 -+ mutex_unlock(&d->usb_mutex);
3915 - if (result < 0) {
3916 - deb_info("i2c write error (status = %d)\n", result);
3917 - break;
3918 -@@ -249,6 +272,10 @@ static int dib0700_i2c_xfer_legacy(struct i2c_adapter *adap,
3919 -
3920 - if (mutex_lock_interruptible(&d->i2c_mutex) < 0)
3921 - return -EAGAIN;
3922 -+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
3923 -+ deb_info("could not acquire lock");
3924 -+ return 0;
3925 -+ }
3926 -
3927 - for (i = 0; i < num; i++) {
3928 - /* fill in the address */
3929 -@@ -279,6 +306,7 @@ static int dib0700_i2c_xfer_legacy(struct i2c_adapter *adap,
3930 - break;
3931 - }
3932 - }
3933 -+ mutex_unlock(&d->usb_mutex);
3934 - mutex_unlock(&d->i2c_mutex);
3935 -
3936 - return i;
3937 -@@ -337,7 +365,12 @@ static int dib0700_set_clock(struct dvb_usb_device *d, u8 en_pll,
3938 - u16 pll_loopdiv, u16 free_div, u16 dsuScaler)
3939 - {
3940 - struct dib0700_state *st = d->priv;
3941 -- s16 ret;
3942 -+ int ret;
3943 -+
3944 -+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
3945 -+ deb_info("could not acquire lock");
3946 -+ return 0;
3947 -+ }
3948 -
3949 - st->buf[0] = REQUEST_SET_CLOCK;
3950 - st->buf[1] = (en_pll << 7) | (pll_src << 6) |
3951 -@@ -352,6 +385,7 @@ static int dib0700_set_clock(struct dvb_usb_device *d, u8 en_pll,
3952 - st->buf[9] = dsuScaler & 0xff; /* LSB */
3953 -
3954 - ret = dib0700_ctrl_wr(d, st->buf, 10);
3955 -+ mutex_unlock(&d->usb_mutex);
3956 -
3957 - return ret;
3958 - }
3959 -@@ -360,10 +394,16 @@ int dib0700_set_i2c_speed(struct dvb_usb_device *d, u16 scl_kHz)
3960 - {
3961 - struct dib0700_state *st = d->priv;
3962 - u16 divider;
3963 -+ int ret;
3964 -
3965 - if (scl_kHz == 0)
3966 - return -EINVAL;
3967 -
3968 -+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
3969 -+ deb_info("could not acquire lock");
3970 -+ return 0;
3971 -+ }
3972 -+
3973 - st->buf[0] = REQUEST_SET_I2C_PARAM;
3974 - divider = (u16) (30000 / scl_kHz);
3975 - st->buf[1] = 0;
3976 -@@ -379,7 +419,11 @@ int dib0700_set_i2c_speed(struct dvb_usb_device *d, u16 scl_kHz)
3977 - deb_info("setting I2C speed: %04x %04x %04x (%d kHz).",
3978 - (st->buf[2] << 8) | (st->buf[3]), (st->buf[4] << 8) |
3979 - st->buf[5], (st->buf[6] << 8) | st->buf[7], scl_kHz);
3980 -- return dib0700_ctrl_wr(d, st->buf, 8);
3981 -+
3982 -+ ret = dib0700_ctrl_wr(d, st->buf, 8);
3983 -+ mutex_unlock(&d->usb_mutex);
3984 -+
3985 -+ return ret;
3986 - }
3987 -
3988 -
3989 -@@ -515,6 +559,11 @@ int dib0700_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)
3990 - }
3991 - }
3992 -
3993 -+ if (mutex_lock_interruptible(&adap->dev->usb_mutex) < 0) {
3994 -+ deb_info("could not acquire lock");
3995 -+ return 0;
3996 -+ }
3997 -+
3998 - st->buf[0] = REQUEST_ENABLE_VIDEO;
3999 - /* this bit gives a kind of command,
4000 - * rather than enabling something or not */
4001 -@@ -548,7 +597,10 @@ int dib0700_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)
4002 -
4003 - deb_info("data for streaming: %x %x\n", st->buf[1], st->buf[2]);
4004 -
4005 -- return dib0700_ctrl_wr(adap->dev, st->buf, 4);
4006 -+ ret = dib0700_ctrl_wr(adap->dev, st->buf, 4);
4007 -+ mutex_unlock(&adap->dev->usb_mutex);
4008 -+
4009 -+ return ret;
4010 - }
4011 -
4012 - int dib0700_change_protocol(struct rc_dev *rc, u64 rc_type)
4013 -@@ -557,6 +609,11 @@ int dib0700_change_protocol(struct rc_dev *rc, u64 rc_type)
4014 - struct dib0700_state *st = d->priv;
4015 - int new_proto, ret;
4016 -
4017 -+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
4018 -+ deb_info("could not acquire lock");
4019 -+ return 0;
4020 -+ }
4021 -+
4022 - st->buf[0] = REQUEST_SET_RC;
4023 - st->buf[1] = 0;
4024 - st->buf[2] = 0;
4025 -@@ -567,23 +624,29 @@ int dib0700_change_protocol(struct rc_dev *rc, u64 rc_type)
4026 - else if (rc_type == RC_TYPE_NEC)
4027 - new_proto = 0;
4028 - else if (rc_type == RC_TYPE_RC6) {
4029 -- if (st->fw_version < 0x10200)
4030 -- return -EINVAL;
4031 -+ if (st->fw_version < 0x10200) {
4032 -+ ret = -EINVAL;
4033 -+ goto out;
4034 -+ }
4035 -
4036 - new_proto = 2;
4037 -- } else
4038 -- return -EINVAL;
4039 -+ } else {
4040 -+ ret = -EINVAL;
4041 -+ goto out;
4042 -+ }
4043 -
4044 - st->buf[1] = new_proto;
4045 -
4046 - ret = dib0700_ctrl_wr(d, st->buf, 3);
4047 - if (ret < 0) {
4048 - err("ir protocol setup failed");
4049 -- return ret;
4050 -+ goto out;
4051 - }
4052 -
4053 - d->props.rc.core.protocol = rc_type;
4054 -
4055 -+out:
4056 -+ mutex_unlock(&d->usb_mutex);
4057 - return ret;
4058 - }
4059 -
4060 -diff --git a/drivers/media/dvb/frontends/dib0070.c b/drivers/media/dvb/frontends/dib0070.c
4061 -index 1d47d4d..dc1cb17 100644
4062 ---- a/drivers/media/dvb/frontends/dib0070.c
4063 -+++ b/drivers/media/dvb/frontends/dib0070.c
4064 -@@ -27,6 +27,7 @@
4065 - #include <linux/kernel.h>
4066 - #include <linux/slab.h>
4067 - #include <linux/i2c.h>
4068 -+#include <linux/mutex.h>
4069 -
4070 - #include "dvb_frontend.h"
4071 -
4072 -@@ -78,10 +79,18 @@ struct dib0070_state {
4073 - struct i2c_msg msg[2];
4074 - u8 i2c_write_buffer[3];
4075 - u8 i2c_read_buffer[2];
4076 -+ struct mutex i2c_buffer_lock;
4077 - };
4078 -
4079 --static uint16_t dib0070_read_reg(struct dib0070_state *state, u8 reg)
4080 -+static u16 dib0070_read_reg(struct dib0070_state *state, u8 reg)
4081 - {
4082 -+ u16 ret;
4083 -+
4084 -+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
4085 -+ dprintk("could not acquire lock");
4086 -+ return 0;
4087 -+ }
4088 -+
4089 - state->i2c_write_buffer[0] = reg;
4090 -
4091 - memset(state->msg, 0, 2 * sizeof(struct i2c_msg));
4092 -@@ -96,13 +105,23 @@ static uint16_t dib0070_read_reg(struct dib0070_state *state, u8 reg)
4093 -
4094 - if (i2c_transfer(state->i2c, state->msg, 2) != 2) {
4095 - printk(KERN_WARNING "DiB0070 I2C read failed\n");
4096 -- return 0;
4097 -- }
4098 -- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
4099 -+ ret = 0;
4100 -+ } else
4101 -+ ret = (state->i2c_read_buffer[0] << 8)
4102 -+ | state->i2c_read_buffer[1];
4103 -+
4104 -+ mutex_unlock(&state->i2c_buffer_lock);
4105 -+ return ret;
4106 - }
4107 -
4108 - static int dib0070_write_reg(struct dib0070_state *state, u8 reg, u16 val)
4109 - {
4110 -+ int ret;
4111 -+
4112 -+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
4113 -+ dprintk("could not acquire lock");
4114 -+ return -EINVAL;
4115 -+ }
4116 - state->i2c_write_buffer[0] = reg;
4117 - state->i2c_write_buffer[1] = val >> 8;
4118 - state->i2c_write_buffer[2] = val & 0xff;
4119 -@@ -115,9 +134,12 @@ static int dib0070_write_reg(struct dib0070_state *state, u8 reg, u16 val)
4120 -
4121 - if (i2c_transfer(state->i2c, state->msg, 1) != 1) {
4122 - printk(KERN_WARNING "DiB0070 I2C write failed\n");
4123 -- return -EREMOTEIO;
4124 -- }
4125 -- return 0;
4126 -+ ret = -EREMOTEIO;
4127 -+ } else
4128 -+ ret = 0;
4129 -+
4130 -+ mutex_unlock(&state->i2c_buffer_lock);
4131 -+ return ret;
4132 - }
4133 -
4134 - #define HARD_RESET(state) do { \
4135 -@@ -734,6 +756,7 @@ struct dvb_frontend *dib0070_attach(struct dvb_frontend *fe, struct i2c_adapter
4136 - state->cfg = cfg;
4137 - state->i2c = i2c;
4138 - state->fe = fe;
4139 -+ mutex_init(&state->i2c_buffer_lock);
4140 - fe->tuner_priv = state;
4141 -
4142 - if (dib0070_reset(fe) != 0)
4143 -diff --git a/drivers/media/dvb/frontends/dib0090.c b/drivers/media/dvb/frontends/dib0090.c
4144 -index c9c935a..b174d1c 100644
4145 ---- a/drivers/media/dvb/frontends/dib0090.c
4146 -+++ b/drivers/media/dvb/frontends/dib0090.c
4147 -@@ -27,6 +27,7 @@
4148 - #include <linux/kernel.h>
4149 - #include <linux/slab.h>
4150 - #include <linux/i2c.h>
4151 -+#include <linux/mutex.h>
4152 -
4153 - #include "dvb_frontend.h"
4154 -
4155 -@@ -196,6 +197,7 @@ struct dib0090_state {
4156 - struct i2c_msg msg[2];
4157 - u8 i2c_write_buffer[3];
4158 - u8 i2c_read_buffer[2];
4159 -+ struct mutex i2c_buffer_lock;
4160 - };
4161 -
4162 - struct dib0090_fw_state {
4163 -@@ -208,10 +210,18 @@ struct dib0090_fw_state {
4164 - struct i2c_msg msg;
4165 - u8 i2c_write_buffer[2];
4166 - u8 i2c_read_buffer[2];
4167 -+ struct mutex i2c_buffer_lock;
4168 - };
4169 -
4170 - static u16 dib0090_read_reg(struct dib0090_state *state, u8 reg)
4171 - {
4172 -+ u16 ret;
4173 -+
4174 -+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
4175 -+ dprintk("could not acquire lock");
4176 -+ return 0;
4177 -+ }
4178 -+
4179 - state->i2c_write_buffer[0] = reg;
4180 -
4181 - memset(state->msg, 0, 2 * sizeof(struct i2c_msg));
4182 -@@ -226,14 +236,24 @@ static u16 dib0090_read_reg(struct dib0090_state *state, u8 reg)
4183 -
4184 - if (i2c_transfer(state->i2c, state->msg, 2) != 2) {
4185 - printk(KERN_WARNING "DiB0090 I2C read failed\n");
4186 -- return 0;
4187 -- }
4188 -+ ret = 0;
4189 -+ } else
4190 -+ ret = (state->i2c_read_buffer[0] << 8)
4191 -+ | state->i2c_read_buffer[1];
4192 -
4193 -- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
4194 -+ mutex_unlock(&state->i2c_buffer_lock);
4195 -+ return ret;
4196 - }
4197 -
4198 - static int dib0090_write_reg(struct dib0090_state *state, u32 reg, u16 val)
4199 - {
4200 -+ int ret;
4201 -+
4202 -+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
4203 -+ dprintk("could not acquire lock");
4204 -+ return -EINVAL;
4205 -+ }
4206 -+
4207 - state->i2c_write_buffer[0] = reg & 0xff;
4208 - state->i2c_write_buffer[1] = val >> 8;
4209 - state->i2c_write_buffer[2] = val & 0xff;
4210 -@@ -246,13 +266,23 @@ static int dib0090_write_reg(struct dib0090_state *state, u32 reg, u16 val)
4211 -
4212 - if (i2c_transfer(state->i2c, state->msg, 1) != 1) {
4213 - printk(KERN_WARNING "DiB0090 I2C write failed\n");
4214 -- return -EREMOTEIO;
4215 -- }
4216 -- return 0;
4217 -+ ret = -EREMOTEIO;
4218 -+ } else
4219 -+ ret = 0;
4220 -+
4221 -+ mutex_unlock(&state->i2c_buffer_lock);
4222 -+ return ret;
4223 - }
4224 -
4225 - static u16 dib0090_fw_read_reg(struct dib0090_fw_state *state, u8 reg)
4226 - {
4227 -+ u16 ret;
4228 -+
4229 -+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
4230 -+ dprintk("could not acquire lock");
4231 -+ return 0;
4232 -+ }
4233 -+
4234 - state->i2c_write_buffer[0] = reg;
4235 -
4236 - memset(&state->msg, 0, sizeof(struct i2c_msg));
4237 -@@ -262,13 +292,24 @@ static u16 dib0090_fw_read_reg(struct dib0090_fw_state *state, u8 reg)
4238 - state->msg.len = 2;
4239 - if (i2c_transfer(state->i2c, &state->msg, 1) != 1) {
4240 - printk(KERN_WARNING "DiB0090 I2C read failed\n");
4241 -- return 0;
4242 -- }
4243 -- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
4244 -+ ret = 0;
4245 -+ } else
4246 -+ ret = (state->i2c_read_buffer[0] << 8)
4247 -+ | state->i2c_read_buffer[1];
4248 -+
4249 -+ mutex_unlock(&state->i2c_buffer_lock);
4250 -+ return ret;
4251 - }
4252 -
4253 - static int dib0090_fw_write_reg(struct dib0090_fw_state *state, u8 reg, u16 val)
4254 - {
4255 -+ int ret;
4256 -+
4257 -+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
4258 -+ dprintk("could not acquire lock");
4259 -+ return -EINVAL;
4260 -+ }
4261 -+
4262 - state->i2c_write_buffer[0] = val >> 8;
4263 - state->i2c_write_buffer[1] = val & 0xff;
4264 -
4265 -@@ -279,9 +320,12 @@ static int dib0090_fw_write_reg(struct dib0090_fw_state *state, u8 reg, u16 val)
4266 - state->msg.len = 2;
4267 - if (i2c_transfer(state->i2c, &state->msg, 1) != 1) {
4268 - printk(KERN_WARNING "DiB0090 I2C write failed\n");
4269 -- return -EREMOTEIO;
4270 -- }
4271 -- return 0;
4272 -+ ret = -EREMOTEIO;
4273 -+ } else
4274 -+ ret = 0;
4275 -+
4276 -+ mutex_unlock(&state->i2c_buffer_lock);
4277 -+ return ret;
4278 - }
4279 -
4280 - #define HARD_RESET(state) do { if (cfg->reset) { if (cfg->sleep) cfg->sleep(fe, 0); msleep(10); cfg->reset(fe, 1); msleep(10); cfg->reset(fe, 0); msleep(10); } } while (0)
4281 -@@ -2440,6 +2484,7 @@ struct dvb_frontend *dib0090_register(struct dvb_frontend *fe, struct i2c_adapte
4282 - st->config = config;
4283 - st->i2c = i2c;
4284 - st->fe = fe;
4285 -+ mutex_init(&st->i2c_buffer_lock);
4286 - fe->tuner_priv = st;
4287 -
4288 - if (config->wbd == NULL)
4289 -@@ -2471,6 +2516,7 @@ struct dvb_frontend *dib0090_fw_register(struct dvb_frontend *fe, struct i2c_ada
4290 - st->config = config;
4291 - st->i2c = i2c;
4292 - st->fe = fe;
4293 -+ mutex_init(&st->i2c_buffer_lock);
4294 - fe->tuner_priv = st;
4295 -
4296 - if (dib0090_fw_reset_digital(fe, st->config) != 0)
4297 -diff --git a/drivers/media/dvb/frontends/dib7000m.c b/drivers/media/dvb/frontends/dib7000m.c
4298 -index 79cb1c2..dbb76d7 100644
4299 ---- a/drivers/media/dvb/frontends/dib7000m.c
4300 -+++ b/drivers/media/dvb/frontends/dib7000m.c
4301 -@@ -11,6 +11,7 @@
4302 - #include <linux/kernel.h>
4303 - #include <linux/slab.h>
4304 - #include <linux/i2c.h>
4305 -+#include <linux/mutex.h>
4306 -
4307 - #include "dvb_frontend.h"
4308 -
4309 -@@ -55,6 +56,7 @@ struct dib7000m_state {
4310 - struct i2c_msg msg[2];
4311 - u8 i2c_write_buffer[4];
4312 - u8 i2c_read_buffer[2];
4313 -+ struct mutex i2c_buffer_lock;
4314 - };
4315 -
4316 - enum dib7000m_power_mode {
4317 -@@ -69,6 +71,13 @@ enum dib7000m_power_mode {
4318 -
4319 - static u16 dib7000m_read_word(struct dib7000m_state *state, u16 reg)
4320 - {
4321 -+ u16 ret;
4322 -+
4323 -+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
4324 -+ dprintk("could not acquire lock");
4325 -+ return 0;
4326 -+ }
4327 -+
4328 - state->i2c_write_buffer[0] = (reg >> 8) | 0x80;
4329 - state->i2c_write_buffer[1] = reg & 0xff;
4330 -
4331 -@@ -85,11 +94,21 @@ static u16 dib7000m_read_word(struct dib7000m_state *state, u16 reg)
4332 - if (i2c_transfer(state->i2c_adap, state->msg, 2) != 2)
4333 - dprintk("i2c read error on %d",reg);
4334 -
4335 -- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
4336 -+ ret = (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
4337 -+ mutex_unlock(&state->i2c_buffer_lock);
4338 -+
4339 -+ return ret;
4340 - }
4341 -
4342 - static int dib7000m_write_word(struct dib7000m_state *state, u16 reg, u16 val)
4343 - {
4344 -+ int ret;
4345 -+
4346 -+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
4347 -+ dprintk("could not acquire lock");
4348 -+ return -EINVAL;
4349 -+ }
4350 -+
4351 - state->i2c_write_buffer[0] = (reg >> 8) & 0xff;
4352 - state->i2c_write_buffer[1] = reg & 0xff;
4353 - state->i2c_write_buffer[2] = (val >> 8) & 0xff;
4354 -@@ -101,7 +120,10 @@ static int dib7000m_write_word(struct dib7000m_state *state, u16 reg, u16 val)
4355 - state->msg[0].buf = state->i2c_write_buffer;
4356 - state->msg[0].len = 4;
4357 -
4358 -- return i2c_transfer(state->i2c_adap, state->msg, 1) != 1 ? -EREMOTEIO : 0;
4359 -+ ret = (i2c_transfer(state->i2c_adap, state->msg, 1) != 1 ?
4360 -+ -EREMOTEIO : 0);
4361 -+ mutex_unlock(&state->i2c_buffer_lock);
4362 -+ return ret;
4363 - }
4364 - static void dib7000m_write_tab(struct dib7000m_state *state, u16 *buf)
4365 - {
4366 -@@ -1385,6 +1407,7 @@ struct dvb_frontend * dib7000m_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr,
4367 - demod = &st->demod;
4368 - demod->demodulator_priv = st;
4369 - memcpy(&st->demod.ops, &dib7000m_ops, sizeof(struct dvb_frontend_ops));
4370 -+ mutex_init(&st->i2c_buffer_lock);
4371 -
4372 - st->timf_default = cfg->bw->timf;
4373 -
4374 -diff --git a/drivers/media/dvb/frontends/dib7000p.c b/drivers/media/dvb/frontends/dib7000p.c
4375 -index 0c9f40c..292bc19 100644
4376 ---- a/drivers/media/dvb/frontends/dib7000p.c
4377 -+++ b/drivers/media/dvb/frontends/dib7000p.c
4378 -@@ -10,6 +10,7 @@
4379 - #include <linux/kernel.h>
4380 - #include <linux/slab.h>
4381 - #include <linux/i2c.h>
4382 -+#include <linux/mutex.h>
4383 -
4384 - #include "dvb_math.h"
4385 - #include "dvb_frontend.h"
4386 -@@ -68,6 +69,7 @@ struct dib7000p_state {
4387 - struct i2c_msg msg[2];
4388 - u8 i2c_write_buffer[4];
4389 - u8 i2c_read_buffer[2];
4390 -+ struct mutex i2c_buffer_lock;
4391 - };
4392 -
4393 - enum dib7000p_power_mode {
4394 -@@ -81,6 +83,13 @@ static int dib7090_set_diversity_in(struct dvb_frontend *fe, int onoff);
4395 -
4396 - static u16 dib7000p_read_word(struct dib7000p_state *state, u16 reg)
4397 - {
4398 -+ u16 ret;
4399 -+
4400 -+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
4401 -+ dprintk("could not acquire lock");
4402 -+ return 0;
4403 -+ }
4404 -+
4405 - state->i2c_write_buffer[0] = reg >> 8;
4406 - state->i2c_write_buffer[1] = reg & 0xff;
4407 -
4408 -@@ -97,11 +106,20 @@ static u16 dib7000p_read_word(struct dib7000p_state *state, u16 reg)
4409 - if (i2c_transfer(state->i2c_adap, state->msg, 2) != 2)
4410 - dprintk("i2c read error on %d", reg);
4411 -
4412 -- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
4413 -+ ret = (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
4414 -+ mutex_unlock(&state->i2c_buffer_lock);
4415 -+ return ret;
4416 - }
4417 -
4418 - static int dib7000p_write_word(struct dib7000p_state *state, u16 reg, u16 val)
4419 - {
4420 -+ int ret;
4421 -+
4422 -+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
4423 -+ dprintk("could not acquire lock");
4424 -+ return -EINVAL;
4425 -+ }
4426 -+
4427 - state->i2c_write_buffer[0] = (reg >> 8) & 0xff;
4428 - state->i2c_write_buffer[1] = reg & 0xff;
4429 - state->i2c_write_buffer[2] = (val >> 8) & 0xff;
4430 -@@ -113,7 +131,10 @@ static int dib7000p_write_word(struct dib7000p_state *state, u16 reg, u16 val)
4431 - state->msg[0].buf = state->i2c_write_buffer;
4432 - state->msg[0].len = 4;
4433 -
4434 -- return i2c_transfer(state->i2c_adap, state->msg, 1) != 1 ? -EREMOTEIO : 0;
4435 -+ ret = (i2c_transfer(state->i2c_adap, state->msg, 1) != 1 ?
4436 -+ -EREMOTEIO : 0);
4437 -+ mutex_unlock(&state->i2c_buffer_lock);
4438 -+ return ret;
4439 - }
4440 -
4441 - static void dib7000p_write_tab(struct dib7000p_state *state, u16 * buf)
4442 -@@ -1646,6 +1667,7 @@ int dib7000p_i2c_enumeration(struct i2c_adapter *i2c, int no_of_demods, u8 defau
4443 - return -ENOMEM;
4444 -
4445 - dpst->i2c_adap = i2c;
4446 -+ mutex_init(&dpst->i2c_buffer_lock);
4447 -
4448 - for (k = no_of_demods - 1; k >= 0; k--) {
4449 - dpst->cfg = cfg[k];
4450 -@@ -2324,6 +2346,7 @@ struct dvb_frontend *dib7000p_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr,
4451 - demod = &st->demod;
4452 - demod->demodulator_priv = st;
4453 - memcpy(&st->demod.ops, &dib7000p_ops, sizeof(struct dvb_frontend_ops));
4454 -+ mutex_init(&st->i2c_buffer_lock);
4455 -
4456 - dib7000p_write_word(st, 1287, 0x0003); /* sram lead in, rdy */
4457 -
4458 -@@ -2333,8 +2356,9 @@ struct dvb_frontend *dib7000p_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr,
4459 - st->version = dib7000p_read_word(st, 897);
4460 -
4461 - /* FIXME: make sure the dev.parent field is initialized, or else
4462 -- request_firmware() will hit an OOPS (this should be moved somewhere
4463 -- more common) */
4464 -+ request_firmware() will hit an OOPS (this should be moved somewhere
4465 -+ more common) */
4466 -+ st->i2c_master.gated_tuner_i2c_adap.dev.parent = i2c_adap->dev.parent;
4467 -
4468 - dibx000_init_i2c_master(&st->i2c_master, DIB7000P, st->i2c_adap, st->i2c_addr);
4469 -
4470 -diff --git a/drivers/media/dvb/frontends/dib8000.c b/drivers/media/dvb/frontends/dib8000.c
4471 -index 7d2ea11..fe284d5 100644
4472 ---- a/drivers/media/dvb/frontends/dib8000.c
4473 -+++ b/drivers/media/dvb/frontends/dib8000.c
4474 -@@ -10,6 +10,8 @@
4475 - #include <linux/kernel.h>
4476 - #include <linux/slab.h>
4477 - #include <linux/i2c.h>
4478 -+#include <linux/mutex.h>
4479 -+
4480 - #include "dvb_math.h"
4481 -
4482 - #include "dvb_frontend.h"
4483 -@@ -37,6 +39,7 @@ struct i2c_device {
4484 - u8 addr;
4485 - u8 *i2c_write_buffer;
4486 - u8 *i2c_read_buffer;
4487 -+ struct mutex *i2c_buffer_lock;
4488 - };
4489 -
4490 - struct dib8000_state {
4491 -@@ -77,6 +80,7 @@ struct dib8000_state {
4492 - struct i2c_msg msg[2];
4493 - u8 i2c_write_buffer[4];
4494 - u8 i2c_read_buffer[2];
4495 -+ struct mutex i2c_buffer_lock;
4496 - };
4497 -
4498 - enum dib8000_power_mode {
4499 -@@ -86,24 +90,39 @@ enum dib8000_power_mode {
4500 -
4501 - static u16 dib8000_i2c_read16(struct i2c_device *i2c, u16 reg)
4502 - {
4503 -+ u16 ret;
4504 - struct i2c_msg msg[2] = {
4505 -- {.addr = i2c->addr >> 1, .flags = 0,
4506 -- .buf = i2c->i2c_write_buffer, .len = 2},
4507 -- {.addr = i2c->addr >> 1, .flags = I2C_M_RD,
4508 -- .buf = i2c->i2c_read_buffer, .len = 2},
4509 -+ {.addr = i2c->addr >> 1, .flags = 0, .len = 2},
4510 -+ {.addr = i2c->addr >> 1, .flags = I2C_M_RD, .len = 2},
4511 - };
4512 -
4513 -+ if (mutex_lock_interruptible(i2c->i2c_buffer_lock) < 0) {
4514 -+ dprintk("could not acquire lock");
4515 -+ return 0;
4516 -+ }
4517 -+
4518 -+ msg[0].buf = i2c->i2c_write_buffer;
4519 - msg[0].buf[0] = reg >> 8;
4520 - msg[0].buf[1] = reg & 0xff;
4521 -+ msg[1].buf = i2c->i2c_read_buffer;
4522 -
4523 - if (i2c_transfer(i2c->adap, msg, 2) != 2)
4524 - dprintk("i2c read error on %d", reg);
4525 -
4526 -- return (msg[1].buf[0] << 8) | msg[1].buf[1];
4527 -+ ret = (msg[1].buf[0] << 8) | msg[1].buf[1];
4528 -+ mutex_unlock(i2c->i2c_buffer_lock);
4529 -+ return ret;
4530 - }
4531 -
4532 - static u16 dib8000_read_word(struct dib8000_state *state, u16 reg)
4533 - {
4534 -+ u16 ret;
4535 -+
4536 -+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
4537 -+ dprintk("could not acquire lock");
4538 -+ return 0;
4539 -+ }
4540 -+
4541 - state->i2c_write_buffer[0] = reg >> 8;
4542 - state->i2c_write_buffer[1] = reg & 0xff;
4543 -
4544 -@@ -120,7 +139,10 @@ static u16 dib8000_read_word(struct dib8000_state *state, u16 reg)
4545 - if (i2c_transfer(state->i2c.adap, state->msg, 2) != 2)
4546 - dprintk("i2c read error on %d", reg);
4547 -
4548 -- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
4549 -+ ret = (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
4550 -+ mutex_unlock(&state->i2c_buffer_lock);
4551 -+
4552 -+ return ret;
4553 - }
4554 -
4555 - static u32 dib8000_read32(struct dib8000_state *state, u16 reg)
4556 -@@ -135,22 +157,35 @@ static u32 dib8000_read32(struct dib8000_state *state, u16 reg)
4557 -
4558 - static int dib8000_i2c_write16(struct i2c_device *i2c, u16 reg, u16 val)
4559 - {
4560 -- struct i2c_msg msg = {.addr = i2c->addr >> 1, .flags = 0,
4561 -- .buf = i2c->i2c_write_buffer, .len = 4};
4562 -+ struct i2c_msg msg = {.addr = i2c->addr >> 1, .flags = 0, .len = 4};
4563 - int ret = 0;
4564 -
4565 -+ if (mutex_lock_interruptible(i2c->i2c_buffer_lock) < 0) {
4566 -+ dprintk("could not acquire lock");
4567 -+ return -EINVAL;
4568 -+ }
4569 -+
4570 -+ msg.buf = i2c->i2c_write_buffer;
4571 - msg.buf[0] = (reg >> 8) & 0xff;
4572 - msg.buf[1] = reg & 0xff;
4573 - msg.buf[2] = (val >> 8) & 0xff;
4574 - msg.buf[3] = val & 0xff;
4575 -
4576 - ret = i2c_transfer(i2c->adap, &msg, 1) != 1 ? -EREMOTEIO : 0;
4577 -+ mutex_unlock(i2c->i2c_buffer_lock);
4578 -
4579 - return ret;
4580 - }
4581 -
4582 - static int dib8000_write_word(struct dib8000_state *state, u16 reg, u16 val)
4583 - {
4584 -+ int ret;
4585 -+
4586 -+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
4587 -+ dprintk("could not acquire lock");
4588 -+ return -EINVAL;
4589 -+ }
4590 -+
4591 - state->i2c_write_buffer[0] = (reg >> 8) & 0xff;
4592 - state->i2c_write_buffer[1] = reg & 0xff;
4593 - state->i2c_write_buffer[2] = (val >> 8) & 0xff;
4594 -@@ -162,7 +197,11 @@ static int dib8000_write_word(struct dib8000_state *state, u16 reg, u16 val)
4595 - state->msg[0].buf = state->i2c_write_buffer;
4596 - state->msg[0].len = 4;
4597 -
4598 -- return i2c_transfer(state->i2c.adap, state->msg, 1) != 1 ? -EREMOTEIO : 0;
4599 -+ ret = (i2c_transfer(state->i2c.adap, state->msg, 1) != 1 ?
4600 -+ -EREMOTEIO : 0);
4601 -+ mutex_unlock(&state->i2c_buffer_lock);
4602 -+
4603 -+ return ret;
4604 - }
4605 -
4606 - static const s16 coeff_2k_sb_1seg_dqpsk[8] = {
4607 -@@ -2434,8 +2473,15 @@ int dib8000_i2c_enumeration(struct i2c_adapter *host, int no_of_demods, u8 defau
4608 - if (!client.i2c_read_buffer) {
4609 - dprintk("%s: not enough memory", __func__);
4610 - ret = -ENOMEM;
4611 -- goto error_memory;
4612 -+ goto error_memory_read;
4613 -+ }
4614 -+ client.i2c_buffer_lock = kzalloc(sizeof(struct mutex), GFP_KERNEL);
4615 -+ if (!client.i2c_buffer_lock) {
4616 -+ dprintk("%s: not enough memory", __func__);
4617 -+ ret = -ENOMEM;
4618 -+ goto error_memory_lock;
4619 - }
4620 -+ mutex_init(client.i2c_buffer_lock);
4621 -
4622 - for (k = no_of_demods - 1; k >= 0; k--) {
4623 - /* designated i2c address */
4624 -@@ -2476,8 +2522,10 @@ int dib8000_i2c_enumeration(struct i2c_adapter *host, int no_of_demods, u8 defau
4625 - }
4626 -
4627 - error:
4628 -+ kfree(client.i2c_buffer_lock);
4629 -+error_memory_lock:
4630 - kfree(client.i2c_read_buffer);
4631 --error_memory:
4632 -+error_memory_read:
4633 - kfree(client.i2c_write_buffer);
4634 -
4635 - return ret;
4636 -@@ -2581,6 +2629,8 @@ struct dvb_frontend *dib8000_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, s
4637 - state->i2c.addr = i2c_addr;
4638 - state->i2c.i2c_write_buffer = state->i2c_write_buffer;
4639 - state->i2c.i2c_read_buffer = state->i2c_read_buffer;
4640 -+ mutex_init(&state->i2c_buffer_lock);
4641 -+ state->i2c.i2c_buffer_lock = &state->i2c_buffer_lock;
4642 - state->gpio_val = cfg->gpio_val;
4643 - state->gpio_dir = cfg->gpio_dir;
4644 -
4645 -diff --git a/drivers/media/dvb/frontends/dib9000.c b/drivers/media/dvb/frontends/dib9000.c
4646 -index a085588..b931074 100644
4647 ---- a/drivers/media/dvb/frontends/dib9000.c
4648 -+++ b/drivers/media/dvb/frontends/dib9000.c
4649 -@@ -38,6 +38,15 @@ struct i2c_device {
4650 - #define DibInitLock(lock) mutex_init(lock)
4651 - #define DibFreeLock(lock)
4652 -
4653 -+struct dib9000_pid_ctrl {
4654 -+#define DIB9000_PID_FILTER_CTRL 0
4655 -+#define DIB9000_PID_FILTER 1
4656 -+ u8 cmd;
4657 -+ u8 id;
4658 -+ u16 pid;
4659 -+ u8 onoff;
4660 -+};
4661 -+
4662 - struct dib9000_state {
4663 - struct i2c_device i2c;
4664 -
4665 -@@ -99,6 +108,10 @@ struct dib9000_state {
4666 - struct i2c_msg msg[2];
4667 - u8 i2c_write_buffer[255];
4668 - u8 i2c_read_buffer[255];
4669 -+ DIB_LOCK demod_lock;
4670 -+ u8 get_frontend_internal;
4671 -+ struct dib9000_pid_ctrl pid_ctrl[10];
4672 -+ s8 pid_ctrl_index; /* -1: empty list; -2: do not use the list */
4673 - };
4674 -
4675 - static const u32 fe_info[44] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4676 -@@ -1743,19 +1756,56 @@ EXPORT_SYMBOL(dib9000_set_gpio);
4677 - int dib9000_fw_pid_filter_ctrl(struct dvb_frontend *fe, u8 onoff)
4678 - {
4679 - struct dib9000_state *state = fe->demodulator_priv;
4680 -- u16 val = dib9000_read_word(state, 294 + 1) & 0xffef;
4681 -+ u16 val;
4682 -+ int ret;
4683 -+
4684 -+ if ((state->pid_ctrl_index != -2) && (state->pid_ctrl_index < 9)) {
4685 -+ /* postpone the pid filtering cmd */
4686 -+ dprintk("pid filter cmd postpone");
4687 -+ state->pid_ctrl_index++;
4688 -+ state->pid_ctrl[state->pid_ctrl_index].cmd = DIB9000_PID_FILTER_CTRL;
4689 -+ state->pid_ctrl[state->pid_ctrl_index].onoff = onoff;
4690 -+ return 0;
4691 -+ }
4692 -+
4693 -+ DibAcquireLock(&state->demod_lock);
4694 -+
4695 -+ val = dib9000_read_word(state, 294 + 1) & 0xffef;
4696 - val |= (onoff & 0x1) << 4;
4697 -
4698 - dprintk("PID filter enabled %d", onoff);
4699 -- return dib9000_write_word(state, 294 + 1, val);
4700 -+ ret = dib9000_write_word(state, 294 + 1, val);
4701 -+ DibReleaseLock(&state->demod_lock);
4702 -+ return ret;
4703 -+
4704 - }
4705 - EXPORT_SYMBOL(dib9000_fw_pid_filter_ctrl);
4706 -
4707 - int dib9000_fw_pid_filter(struct dvb_frontend *fe, u8 id, u16 pid, u8 onoff)
4708 - {
4709 - struct dib9000_state *state = fe->demodulator_priv;
4710 -+ int ret;
4711 -+
4712 -+ if (state->pid_ctrl_index != -2) {
4713 -+ /* postpone the pid filtering cmd */
4714 -+ dprintk("pid filter postpone");
4715 -+ if (state->pid_ctrl_index < 9) {
4716 -+ state->pid_ctrl_index++;
4717 -+ state->pid_ctrl[state->pid_ctrl_index].cmd = DIB9000_PID_FILTER;
4718 -+ state->pid_ctrl[state->pid_ctrl_index].id = id;
4719 -+ state->pid_ctrl[state->pid_ctrl_index].pid = pid;
4720 -+ state->pid_ctrl[state->pid_ctrl_index].onoff = onoff;
4721 -+ } else
4722 -+ dprintk("can not add any more pid ctrl cmd");
4723 -+ return 0;
4724 -+ }
4725 -+
4726 -+ DibAcquireLock(&state->demod_lock);
4727 - dprintk("Index %x, PID %d, OnOff %d", id, pid, onoff);
4728 -- return dib9000_write_word(state, 300 + 1 + id, onoff ? (1 << 13) | pid : 0);
4729 -+ ret = dib9000_write_word(state, 300 + 1 + id,
4730 -+ onoff ? (1 << 13) | pid : 0);
4731 -+ DibReleaseLock(&state->demod_lock);
4732 -+ return ret;
4733 - }
4734 - EXPORT_SYMBOL(dib9000_fw_pid_filter);
4735 -
4736 -@@ -1778,6 +1828,7 @@ static void dib9000_release(struct dvb_frontend *demod)
4737 - DibFreeLock(&state->platform.risc.mbx_lock);
4738 - DibFreeLock(&state->platform.risc.mem_lock);
4739 - DibFreeLock(&state->platform.risc.mem_mbx_lock);
4740 -+ DibFreeLock(&state->demod_lock);
4741 - dibx000_exit_i2c_master(&st->i2c_master);
4742 -
4743 - i2c_del_adapter(&st->tuner_adap);
4744 -@@ -1795,14 +1846,19 @@ static int dib9000_sleep(struct dvb_frontend *fe)
4745 - {
4746 - struct dib9000_state *state = fe->demodulator_priv;
4747 - u8 index_frontend;
4748 -- int ret;
4749 -+ int ret = 0;
4750 -
4751 -+ DibAcquireLock(&state->demod_lock);
4752 - for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++) {
4753 - ret = state->fe[index_frontend]->ops.sleep(state->fe[index_frontend]);
4754 - if (ret < 0)
4755 -- return ret;
4756 -+ goto error;
4757 - }
4758 -- return dib9000_mbx_send(state, OUT_MSG_FE_SLEEP, NULL, 0);
4759 -+ ret = dib9000_mbx_send(state, OUT_MSG_FE_SLEEP, NULL, 0);
4760 -+
4761 -+error:
4762 -+ DibReleaseLock(&state->demod_lock);
4763 -+ return ret;
4764 - }
4765 -
4766 - static int dib9000_fe_get_tune_settings(struct dvb_frontend *fe, struct dvb_frontend_tune_settings *tune)
4767 -@@ -1816,7 +1872,10 @@ static int dib9000_get_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
4768 - struct dib9000_state *state = fe->demodulator_priv;
4769 - u8 index_frontend, sub_index_frontend;
4770 - fe_status_t stat;
4771 -- int ret;
4772 -+ int ret = 0;
4773 -+
4774 -+ if (state->get_frontend_internal == 0)
4775 -+ DibAcquireLock(&state->demod_lock);
4776 -
4777 - for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++) {
4778 - state->fe[index_frontend]->ops.read_status(state->fe[index_frontend], &stat);
4779 -@@ -1846,14 +1905,15 @@ static int dib9000_get_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
4780 - state->fe[index_frontend]->dtv_property_cache.rolloff;
4781 - }
4782 - }
4783 -- return 0;
4784 -+ ret = 0;
4785 -+ goto return_value;
4786 - }
4787 - }
4788 -
4789 - /* get the channel from master chip */
4790 - ret = dib9000_fw_get_channel(fe, fep);
4791 - if (ret != 0)
4792 -- return ret;
4793 -+ goto return_value;
4794 -
4795 - /* synchronize the cache with the other frontends */
4796 - for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++) {
4797 -@@ -1866,8 +1926,12 @@ static int dib9000_get_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
4798 - state->fe[index_frontend]->dtv_property_cache.code_rate_LP = fe->dtv_property_cache.code_rate_LP;
4799 - state->fe[index_frontend]->dtv_property_cache.rolloff = fe->dtv_property_cache.rolloff;
4800 - }
4801 -+ ret = 0;
4802 -
4803 -- return 0;
4804 -+return_value:
4805 -+ if (state->get_frontend_internal == 0)
4806 -+ DibReleaseLock(&state->demod_lock);
4807 -+ return ret;
4808 - }
4809 -
4810 - static int dib9000_set_tune_state(struct dvb_frontend *fe, enum frontend_tune_state tune_state)
4811 -@@ -1912,6 +1976,10 @@ static int dib9000_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
4812 - dprintk("dib9000: must specify bandwidth ");
4813 - return 0;
4814 - }
4815 -+
4816 -+ state->pid_ctrl_index = -1; /* postpone the pid filtering cmd */
4817 -+ DibAcquireLock(&state->demod_lock);
4818 -+
4819 - fe->dtv_property_cache.delivery_system = SYS_DVBT;
4820 -
4821 - /* set the master status */
4822 -@@ -1974,13 +2042,18 @@ static int dib9000_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
4823 - /* check the tune result */
4824 - if (exit_condition == 1) { /* tune failed */
4825 - dprintk("tune failed");
4826 -+ DibReleaseLock(&state->demod_lock);
4827 -+ /* tune failed; put all the pid filtering cmd to junk */
4828 -+ state->pid_ctrl_index = -1;
4829 - return 0;
4830 - }
4831 -
4832 - dprintk("tune success on frontend%i", index_frontend_success);
4833 -
4834 - /* synchronize all the channel cache */
4835 -+ state->get_frontend_internal = 1;
4836 - dib9000_get_frontend(state->fe[0], fep);
4837 -+ state->get_frontend_internal = 0;
4838 -
4839 - /* retune the other frontends with the found channel */
4840 - channel_status.status = CHANNEL_STATUS_PARAMETERS_SET;
4841 -@@ -2025,6 +2098,28 @@ static int dib9000_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
4842 - /* turn off the diversity for the last frontend */
4843 - dib9000_fw_set_diversity_in(state->fe[index_frontend - 1], 0);
4844 -
4845 -+ DibReleaseLock(&state->demod_lock);
4846 -+ if (state->pid_ctrl_index >= 0) {
4847 -+ u8 index_pid_filter_cmd;
4848 -+ u8 pid_ctrl_index = state->pid_ctrl_index;
4849 -+
4850 -+ state->pid_ctrl_index = -2;
4851 -+ for (index_pid_filter_cmd = 0;
4852 -+ index_pid_filter_cmd <= pid_ctrl_index;
4853 -+ index_pid_filter_cmd++) {
4854 -+ if (state->pid_ctrl[index_pid_filter_cmd].cmd == DIB9000_PID_FILTER_CTRL)
4855 -+ dib9000_fw_pid_filter_ctrl(state->fe[0],
4856 -+ state->pid_ctrl[index_pid_filter_cmd].onoff);
4857 -+ else if (state->pid_ctrl[index_pid_filter_cmd].cmd == DIB9000_PID_FILTER)
4858 -+ dib9000_fw_pid_filter(state->fe[0],
4859 -+ state->pid_ctrl[index_pid_filter_cmd].id,
4860 -+ state->pid_ctrl[index_pid_filter_cmd].pid,
4861 -+ state->pid_ctrl[index_pid_filter_cmd].onoff);
4862 -+ }
4863 -+ }
4864 -+ /* do not postpone any more the pid filtering */
4865 -+ state->pid_ctrl_index = -2;
4866 -+
4867 - return 0;
4868 - }
4869 -
4870 -@@ -2041,6 +2136,7 @@ static int dib9000_read_status(struct dvb_frontend *fe, fe_status_t * stat)
4871 - u8 index_frontend;
4872 - u16 lock = 0, lock_slave = 0;
4873 -
4874 -+ DibAcquireLock(&state->demod_lock);
4875 - for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++)
4876 - lock_slave |= dib9000_read_lock(state->fe[index_frontend]);
4877 -
4878 -@@ -2059,6 +2155,8 @@ static int dib9000_read_status(struct dvb_frontend *fe, fe_status_t * stat)
4879 - if ((lock & 0x0008) || (lock_slave & 0x0008))
4880 - *stat |= FE_HAS_LOCK;
4881 -
4882 -+ DibReleaseLock(&state->demod_lock);
4883 -+
4884 - return 0;
4885 - }
4886 -
4887 -@@ -2066,10 +2164,14 @@ static int dib9000_read_ber(struct dvb_frontend *fe, u32 * ber)
4888 - {
4889 - struct dib9000_state *state = fe->demodulator_priv;
4890 - u16 *c;
4891 -+ int ret = 0;
4892 -
4893 -+ DibAcquireLock(&state->demod_lock);
4894 - DibAcquireLock(&state->platform.risc.mem_mbx_lock);
4895 -- if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0)
4896 -- return -EIO;
4897 -+ if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0) {
4898 -+ ret = -EIO;
4899 -+ goto error;
4900 -+ }
4901 - dib9000_risc_mem_read(state, FE_MM_R_FE_MONITOR,
4902 - state->i2c_read_buffer, 16 * 2);
4903 - DibReleaseLock(&state->platform.risc.mem_mbx_lock);
4904 -@@ -2077,7 +2179,10 @@ static int dib9000_read_ber(struct dvb_frontend *fe, u32 * ber)
4905 - c = (u16 *)state->i2c_read_buffer;
4906 -
4907 - *ber = c[10] << 16 | c[11];
4908 -- return 0;
4909 -+
4910 -+error:
4911 -+ DibReleaseLock(&state->demod_lock);
4912 -+ return ret;
4913 - }
4914 -
4915 - static int dib9000_read_signal_strength(struct dvb_frontend *fe, u16 * strength)
4916 -@@ -2086,7 +2191,9 @@ static int dib9000_read_signal_strength(struct dvb_frontend *fe, u16 * strength)
4917 - u8 index_frontend;
4918 - u16 *c = (u16 *)state->i2c_read_buffer;
4919 - u16 val;
4920 -+ int ret = 0;
4921 -
4922 -+ DibAcquireLock(&state->demod_lock);
4923 - *strength = 0;
4924 - for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++) {
4925 - state->fe[index_frontend]->ops.read_signal_strength(state->fe[index_frontend], &val);
4926 -@@ -2097,8 +2204,10 @@ static int dib9000_read_signal_strength(struct dvb_frontend *fe, u16 * strength)
4927 - }
4928 -
4929 - DibAcquireLock(&state->platform.risc.mem_mbx_lock);
4930 -- if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0)
4931 -- return -EIO;
4932 -+ if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0) {
4933 -+ ret = -EIO;
4934 -+ goto error;
4935 -+ }
4936 - dib9000_risc_mem_read(state, FE_MM_R_FE_MONITOR, (u8 *) c, 16 * 2);
4937 - DibReleaseLock(&state->platform.risc.mem_mbx_lock);
4938 -
4939 -@@ -2107,7 +2216,10 @@ static int dib9000_read_signal_strength(struct dvb_frontend *fe, u16 * strength)
4940 - *strength = 65535;
4941 - else
4942 - *strength += val;
4943 -- return 0;
4944 -+
4945 -+error:
4946 -+ DibReleaseLock(&state->demod_lock);
4947 -+ return ret;
4948 - }
4949 -
4950 - static u32 dib9000_get_snr(struct dvb_frontend *fe)
4951 -@@ -2151,6 +2263,7 @@ static int dib9000_read_snr(struct dvb_frontend *fe, u16 * snr)
4952 - u8 index_frontend;
4953 - u32 snr_master;
4954 -
4955 -+ DibAcquireLock(&state->demod_lock);
4956 - snr_master = dib9000_get_snr(fe);
4957 - for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++)
4958 - snr_master += dib9000_get_snr(state->fe[index_frontend]);
4959 -@@ -2161,6 +2274,8 @@ static int dib9000_read_snr(struct dvb_frontend *fe, u16 * snr)
4960 - } else
4961 - *snr = 0;
4962 -
4963 -+ DibReleaseLock(&state->demod_lock);
4964 -+
4965 - return 0;
4966 - }
4967 -
4968 -@@ -2168,15 +2283,22 @@ static int dib9000_read_unc_blocks(struct dvb_frontend *fe, u32 * unc)
4969 - {
4970 - struct dib9000_state *state = fe->demodulator_priv;
4971 - u16 *c = (u16 *)state->i2c_read_buffer;
4972 -+ int ret = 0;
4973 -
4974 -+ DibAcquireLock(&state->demod_lock);
4975 - DibAcquireLock(&state->platform.risc.mem_mbx_lock);
4976 -- if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0)
4977 -- return -EIO;
4978 -+ if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0) {
4979 -+ ret = -EIO;
4980 -+ goto error;
4981 -+ }
4982 - dib9000_risc_mem_read(state, FE_MM_R_FE_MONITOR, (u8 *) c, 16 * 2);
4983 - DibReleaseLock(&state->platform.risc.mem_mbx_lock);
4984 -
4985 - *unc = c[12];
4986 -- return 0;
4987 -+
4988 -+error:
4989 -+ DibReleaseLock(&state->demod_lock);
4990 -+ return ret;
4991 - }
4992 -
4993 - int dib9000_i2c_enumeration(struct i2c_adapter *i2c, int no_of_demods, u8 default_addr, u8 first_addr)
4994 -@@ -2322,6 +2444,10 @@ struct dvb_frontend *dib9000_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, c
4995 - DibInitLock(&st->platform.risc.mbx_lock);
4996 - DibInitLock(&st->platform.risc.mem_lock);
4997 - DibInitLock(&st->platform.risc.mem_mbx_lock);
4998 -+ DibInitLock(&st->demod_lock);
4999 -+ st->get_frontend_internal = 0;
5000 -+
5001 -+ st->pid_ctrl_index = -2;
5002 -
5003 - st->fe[0] = fe;
5004 - fe->demodulator_priv = st;
5005 -diff --git a/drivers/media/dvb/frontends/dibx000_common.c b/drivers/media/dvb/frontends/dibx000_common.c
5006 -index dc5d17a..774d507 100644
5007 ---- a/drivers/media/dvb/frontends/dibx000_common.c
5008 -+++ b/drivers/media/dvb/frontends/dibx000_common.c
5009 -@@ -1,4 +1,5 @@
5010 - #include <linux/i2c.h>
5011 -+#include <linux/mutex.h>
5012 -
5013 - #include "dibx000_common.h"
5014 -
5015 -@@ -10,6 +11,13 @@ MODULE_PARM_DESC(debug, "turn on debugging (default: 0)");
5016 -
5017 - static int dibx000_write_word(struct dibx000_i2c_master *mst, u16 reg, u16 val)
5018 - {
5019 -+ int ret;
5020 -+
5021 -+ if (mutex_lock_interruptible(&mst->i2c_buffer_lock) < 0) {
5022 -+ dprintk("could not acquire lock");
5023 -+ return -EINVAL;
5024 -+ }
5025 -+
5026 - mst->i2c_write_buffer[0] = (reg >> 8) & 0xff;
5027 - mst->i2c_write_buffer[1] = reg & 0xff;
5028 - mst->i2c_write_buffer[2] = (val >> 8) & 0xff;
5029 -@@ -21,11 +29,21 @@ static int dibx000_write_word(struct dibx000_i2c_master *mst, u16 reg, u16 val)
5030 - mst->msg[0].buf = mst->i2c_write_buffer;
5031 - mst->msg[0].len = 4;
5032 -
5033 -- return i2c_transfer(mst->i2c_adap, mst->msg, 1) != 1 ? -EREMOTEIO : 0;
5034 -+ ret = i2c_transfer(mst->i2c_adap, mst->msg, 1) != 1 ? -EREMOTEIO : 0;
5035 -+ mutex_unlock(&mst->i2c_buffer_lock);
5036 -+
5037 -+ return ret;
5038 - }
5039 -
5040 - static u16 dibx000_read_word(struct dibx000_i2c_master *mst, u16 reg)
5041 - {
5042 -+ u16 ret;
5043 -+
5044 -+ if (mutex_lock_interruptible(&mst->i2c_buffer_lock) < 0) {
5045 -+ dprintk("could not acquire lock");
5046 -+ return 0;
5047 -+ }
5048 -+
5049 - mst->i2c_write_buffer[0] = reg >> 8;
5050 - mst->i2c_write_buffer[1] = reg & 0xff;
5051 -
5052 -@@ -42,7 +60,10 @@ static u16 dibx000_read_word(struct dibx000_i2c_master *mst, u16 reg)
5053 - if (i2c_transfer(mst->i2c_adap, mst->msg, 2) != 2)
5054 - dprintk("i2c read error on %d", reg);
5055 -
5056 -- return (mst->i2c_read_buffer[0] << 8) | mst->i2c_read_buffer[1];
5057 -+ ret = (mst->i2c_read_buffer[0] << 8) | mst->i2c_read_buffer[1];
5058 -+ mutex_unlock(&mst->i2c_buffer_lock);
5059 -+
5060 -+ return ret;
5061 - }
5062 -
5063 - static int dibx000_is_i2c_done(struct dibx000_i2c_master *mst)
5064 -@@ -257,6 +278,7 @@ static int dibx000_i2c_gated_gpio67_xfer(struct i2c_adapter *i2c_adap,
5065 - struct i2c_msg msg[], int num)
5066 - {
5067 - struct dibx000_i2c_master *mst = i2c_get_adapdata(i2c_adap);
5068 -+ int ret;
5069 -
5070 - if (num > 32) {
5071 - dprintk("%s: too much I2C message to be transmitted (%i).\
5072 -@@ -264,10 +286,15 @@ static int dibx000_i2c_gated_gpio67_xfer(struct i2c_adapter *i2c_adap,
5073 - return -ENOMEM;
5074 - }
5075 -
5076 -- memset(mst->msg, 0, sizeof(struct i2c_msg) * (2 + num));
5077 --
5078 - dibx000_i2c_select_interface(mst, DIBX000_I2C_INTERFACE_GPIO_6_7);
5079 -
5080 -+ if (mutex_lock_interruptible(&mst->i2c_buffer_lock) < 0) {
5081 -+ dprintk("could not acquire lock");
5082 -+ return -EINVAL;
5083 -+ }
5084 -+
5085 -+ memset(mst->msg, 0, sizeof(struct i2c_msg) * (2 + num));
5086 -+
5087 - /* open the gate */
5088 - dibx000_i2c_gate_ctrl(mst, &mst->i2c_write_buffer[0], msg[0].addr, 1);
5089 - mst->msg[0].addr = mst->i2c_addr;
5090 -@@ -282,7 +309,11 @@ static int dibx000_i2c_gated_gpio67_xfer(struct i2c_adapter *i2c_adap,
5091 - mst->msg[num + 1].buf = &mst->i2c_write_buffer[4];
5092 - mst->msg[num + 1].len = 4;
5093 -
5094 -- return i2c_transfer(mst->i2c_adap, mst->msg, 2 + num) == 2 + num ? num : -EIO;
5095 -+ ret = (i2c_transfer(mst->i2c_adap, mst->msg, 2 + num) == 2 + num ?
5096 -+ num : -EIO);
5097 -+
5098 -+ mutex_unlock(&mst->i2c_buffer_lock);
5099 -+ return ret;
5100 - }
5101 -
5102 - static struct i2c_algorithm dibx000_i2c_gated_gpio67_algo = {
5103 -@@ -294,6 +325,7 @@ static int dibx000_i2c_gated_tuner_xfer(struct i2c_adapter *i2c_adap,
5104 - struct i2c_msg msg[], int num)
5105 - {
5106 - struct dibx000_i2c_master *mst = i2c_get_adapdata(i2c_adap);
5107 -+ int ret;
5108 -
5109 - if (num > 32) {
5110 - dprintk("%s: too much I2C message to be transmitted (%i).\
5111 -@@ -301,10 +333,14 @@ static int dibx000_i2c_gated_tuner_xfer(struct i2c_adapter *i2c_adap,
5112 - return -ENOMEM;
5113 - }
5114 -
5115 -- memset(mst->msg, 0, sizeof(struct i2c_msg) * (2 + num));
5116 --
5117 - dibx000_i2c_select_interface(mst, DIBX000_I2C_INTERFACE_TUNER);
5118 -
5119 -+ if (mutex_lock_interruptible(&mst->i2c_buffer_lock) < 0) {
5120 -+ dprintk("could not acquire lock");
5121 -+ return -EINVAL;
5122 -+ }
5123 -+ memset(mst->msg, 0, sizeof(struct i2c_msg) * (2 + num));
5124 -+
5125 - /* open the gate */
5126 - dibx000_i2c_gate_ctrl(mst, &mst->i2c_write_buffer[0], msg[0].addr, 1);
5127 - mst->msg[0].addr = mst->i2c_addr;
5128 -@@ -319,7 +355,10 @@ static int dibx000_i2c_gated_tuner_xfer(struct i2c_adapter *i2c_adap,
5129 - mst->msg[num + 1].buf = &mst->i2c_write_buffer[4];
5130 - mst->msg[num + 1].len = 4;
5131 -
5132 -- return i2c_transfer(mst->i2c_adap, mst->msg, 2 + num) == 2 + num ? num : -EIO;
5133 -+ ret = (i2c_transfer(mst->i2c_adap, mst->msg, 2 + num) == 2 + num ?
5134 -+ num : -EIO);
5135 -+ mutex_unlock(&mst->i2c_buffer_lock);
5136 -+ return ret;
5137 - }
5138 -
5139 - static struct i2c_algorithm dibx000_i2c_gated_tuner_algo = {
5140 -@@ -390,8 +429,18 @@ static int i2c_adapter_init(struct i2c_adapter *i2c_adap,
5141 - int dibx000_init_i2c_master(struct dibx000_i2c_master *mst, u16 device_rev,
5142 - struct i2c_adapter *i2c_adap, u8 i2c_addr)
5143 - {
5144 -- u8 tx[4];
5145 -- struct i2c_msg m = {.addr = i2c_addr >> 1,.buf = tx,.len = 4 };
5146 -+ int ret;
5147 -+
5148 -+ mutex_init(&mst->i2c_buffer_lock);
5149 -+ if (mutex_lock_interruptible(&mst->i2c_buffer_lock) < 0) {
5150 -+ dprintk("could not acquire lock");
5151 -+ return -EINVAL;
5152 -+ }
5153 -+ memset(mst->msg, 0, sizeof(struct i2c_msg));
5154 -+ mst->msg[0].addr = i2c_addr >> 1;
5155 -+ mst->msg[0].flags = 0;
5156 -+ mst->msg[0].buf = mst->i2c_write_buffer;
5157 -+ mst->msg[0].len = 4;
5158 -
5159 - mst->device_rev = device_rev;
5160 - mst->i2c_adap = i2c_adap;
5161 -@@ -431,9 +480,12 @@ int dibx000_init_i2c_master(struct dibx000_i2c_master *mst, u16 device_rev,
5162 - "DiBX000: could not initialize the master i2c_adapter\n");
5163 -
5164 - /* initialize the i2c-master by closing the gate */
5165 -- dibx000_i2c_gate_ctrl(mst, tx, 0, 0);
5166 -+ dibx000_i2c_gate_ctrl(mst, mst->i2c_write_buffer, 0, 0);
5167 -+
5168 -+ ret = (i2c_transfer(i2c_adap, mst->msg, 1) == 1);
5169 -+ mutex_unlock(&mst->i2c_buffer_lock);
5170 -
5171 -- return i2c_transfer(i2c_adap, &m, 1) == 1;
5172 -+ return ret;
5173 - }
5174 -
5175 - EXPORT_SYMBOL(dibx000_init_i2c_master);
5176 -diff --git a/drivers/media/dvb/frontends/dibx000_common.h b/drivers/media/dvb/frontends/dibx000_common.h
5177 -index f031165..5e01147 100644
5178 ---- a/drivers/media/dvb/frontends/dibx000_common.h
5179 -+++ b/drivers/media/dvb/frontends/dibx000_common.h
5180 -@@ -33,6 +33,7 @@ struct dibx000_i2c_master {
5181 - struct i2c_msg msg[34];
5182 - u8 i2c_write_buffer[8];
5183 - u8 i2c_read_buffer[2];
5184 -+ struct mutex i2c_buffer_lock;
5185 - };
5186 -
5187 - extern int dibx000_init_i2c_master(struct dibx000_i2c_master *mst,
5188 -diff --git a/drivers/media/video/cx23885/cx23885-dvb.c b/drivers/media/video/cx23885/cx23885-dvb.c
5189 -index 3c315f9..2b5cd21 100644
5190 ---- a/drivers/media/video/cx23885/cx23885-dvb.c
5191 -+++ b/drivers/media/video/cx23885/cx23885-dvb.c
5192 -@@ -843,7 +843,7 @@ static int dvb_register(struct cx23885_tsport *port)
5193 - static struct xc2028_ctrl ctl = {
5194 - .fname = XC3028L_DEFAULT_FIRMWARE,
5195 - .max_len = 64,
5196 -- .demod = 5000,
5197 -+ .demod = XC3028_FE_DIBCOM52,
5198 - /* This is true for all demods with
5199 - v36 firmware? */
5200 - .type = XC2028_D2633,
5201 -diff --git a/drivers/media/video/uvc/uvc_driver.c b/drivers/media/video/uvc/uvc_driver.c
5202 -index b6eae48..1f962dc 100644
5203 ---- a/drivers/media/video/uvc/uvc_driver.c
5204 -+++ b/drivers/media/video/uvc/uvc_driver.c
5205 -@@ -1960,7 +1960,7 @@ static int __uvc_resume(struct usb_interface *intf, int reset)
5206 -
5207 - list_for_each_entry(stream, &dev->streams, list) {
5208 - if (stream->intf == intf)
5209 -- return uvc_video_resume(stream);
5210 -+ return uvc_video_resume(stream, reset);
5211 - }
5212 -
5213 - uvc_trace(UVC_TRACE_SUSPEND, "Resume: video streaming USB interface "
5214 -diff --git a/drivers/media/video/uvc/uvc_video.c b/drivers/media/video/uvc/uvc_video.c
5215 -index 4999479..6f147de 100644
5216 ---- a/drivers/media/video/uvc/uvc_video.c
5217 -+++ b/drivers/media/video/uvc/uvc_video.c
5218 -@@ -1104,10 +1104,18 @@ int uvc_video_suspend(struct uvc_streaming *stream)
5219 - * buffers, making sure userspace applications are notified of the problem
5220 - * instead of waiting forever.
5221 - */
5222 --int uvc_video_resume(struct uvc_streaming *stream)
5223 -+int uvc_video_resume(struct uvc_streaming *stream, int reset)
5224 - {
5225 - int ret;
5226 -
5227 -+ /* If the bus has been reset on resume, set the alternate setting to 0.
5228 -+ * This should be the default value, but some devices crash or otherwise
5229 -+ * misbehave if they don't receive a SET_INTERFACE request before any
5230 -+ * other video control request.
5231 -+ */
5232 -+ if (reset)
5233 -+ usb_set_interface(stream->dev->udev, stream->intfnum, 0);
5234 -+
5235 - stream->frozen = 0;
5236 -
5237 - ret = uvc_commit_video(stream, &stream->ctrl);
5238 -diff --git a/drivers/media/video/uvc/uvcvideo.h b/drivers/media/video/uvc/uvcvideo.h
5239 -index 20107fd..2a38d5e 100644
5240 ---- a/drivers/media/video/uvc/uvcvideo.h
5241 -+++ b/drivers/media/video/uvc/uvcvideo.h
5242 -@@ -639,7 +639,7 @@ extern void uvc_mc_cleanup_entity(struct uvc_entity *entity);
5243 - /* Video */
5244 - extern int uvc_video_init(struct uvc_streaming *stream);
5245 - extern int uvc_video_suspend(struct uvc_streaming *stream);
5246 --extern int uvc_video_resume(struct uvc_streaming *stream);
5247 -+extern int uvc_video_resume(struct uvc_streaming *stream, int reset);
5248 - extern int uvc_video_enable(struct uvc_streaming *stream, int enable);
5249 - extern int uvc_probe_video(struct uvc_streaming *stream,
5250 - struct uvc_streaming_control *probe);
5251 -diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
5252 -index 38089b2..75db30e6 100644
5253 ---- a/drivers/mmc/core/core.c
5254 -+++ b/drivers/mmc/core/core.c
5255 -@@ -1057,7 +1057,7 @@ static void mmc_power_up(struct mmc_host *host)
5256 - mmc_host_clk_release(host);
5257 - }
5258 -
5259 --static void mmc_power_off(struct mmc_host *host)
5260 -+void mmc_power_off(struct mmc_host *host)
5261 - {
5262 - mmc_host_clk_hold(host);
5263 -
5264 -@@ -1147,8 +1147,7 @@ void mmc_attach_bus(struct mmc_host *host, const struct mmc_bus_ops *ops)
5265 - }
5266 -
5267 - /*
5268 -- * Remove the current bus handler from a host. Assumes that there are
5269 -- * no interesting cards left, so the bus is powered down.
5270 -+ * Remove the current bus handler from a host.
5271 - */
5272 - void mmc_detach_bus(struct mmc_host *host)
5273 - {
5274 -@@ -1165,8 +1164,6 @@ void mmc_detach_bus(struct mmc_host *host)
5275 -
5276 - spin_unlock_irqrestore(&host->lock, flags);
5277 -
5278 -- mmc_power_off(host);
5279 --
5280 - mmc_bus_put(host);
5281 - }
5282 -
5283 -@@ -1675,6 +1672,7 @@ void mmc_stop_host(struct mmc_host *host)
5284 -
5285 - mmc_claim_host(host);
5286 - mmc_detach_bus(host);
5287 -+ mmc_power_off(host);
5288 - mmc_release_host(host);
5289 - mmc_bus_put(host);
5290 - return;
5291 -@@ -1796,6 +1794,7 @@ int mmc_suspend_host(struct mmc_host *host)
5292 - host->bus_ops->remove(host);
5293 - mmc_claim_host(host);
5294 - mmc_detach_bus(host);
5295 -+ mmc_power_off(host);
5296 - mmc_release_host(host);
5297 - host->pm_flags = 0;
5298 - err = 0;
5299 -@@ -1883,6 +1882,7 @@ int mmc_pm_notify(struct notifier_block *notify_block,
5300 - host->bus_ops->remove(host);
5301 -
5302 - mmc_detach_bus(host);
5303 -+ mmc_power_off(host);
5304 - mmc_release_host(host);
5305 - host->pm_flags = 0;
5306 - break;
5307 -diff --git a/drivers/mmc/core/core.h b/drivers/mmc/core/core.h
5308 -index d9411ed..14664f1 100644
5309 ---- a/drivers/mmc/core/core.h
5310 -+++ b/drivers/mmc/core/core.h
5311 -@@ -43,6 +43,7 @@ int mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage,
5312 - bool cmd11);
5313 - void mmc_set_timing(struct mmc_host *host, unsigned int timing);
5314 - void mmc_set_driver_type(struct mmc_host *host, unsigned int drv_type);
5315 -+void mmc_power_off(struct mmc_host *host);
5316 -
5317 - static inline void mmc_delay(unsigned int ms)
5318 - {
5319 -diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
5320 -index aa7d1d7..20b42c8 100644
5321 ---- a/drivers/mmc/core/mmc.c
5322 -+++ b/drivers/mmc/core/mmc.c
5323 -@@ -359,6 +359,7 @@ static int mmc_read_ext_csd(struct mmc_card *card, u8 *ext_csd)
5324 - * card has the Enhanced area enabled. If so, export enhanced
5325 - * area offset and size to user by adding sysfs interface.
5326 - */
5327 -+ card->ext_csd.raw_partition_support = ext_csd[EXT_CSD_PARTITION_SUPPORT];
5328 - if ((ext_csd[EXT_CSD_PARTITION_SUPPORT] & 0x2) &&
5329 - (ext_csd[EXT_CSD_PARTITION_ATTRIBUTE] & 0x1)) {
5330 - u8 hc_erase_grp_sz =
5331 -@@ -405,6 +406,7 @@ static int mmc_read_ext_csd(struct mmc_card *card, u8 *ext_csd)
5332 - if (card->ext_csd.rev >= 5)
5333 - card->ext_csd.rel_param = ext_csd[EXT_CSD_WR_REL_PARAM];
5334 -
5335 -+ card->ext_csd.raw_erased_mem_count = ext_csd[EXT_CSD_ERASED_MEM_CONT];
5336 - if (ext_csd[EXT_CSD_ERASED_MEM_CONT])
5337 - card->erased_byte = 0xFF;
5338 - else
5339 -@@ -891,6 +893,7 @@ static void mmc_detect(struct mmc_host *host)
5340 -
5341 - mmc_claim_host(host);
5342 - mmc_detach_bus(host);
5343 -+ mmc_power_off(host);
5344 - mmc_release_host(host);
5345 - }
5346 - }
5347 -diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
5348 -index ff27741..bd8805c 100644
5349 ---- a/drivers/mmc/core/sd.c
5350 -+++ b/drivers/mmc/core/sd.c
5351 -@@ -1008,6 +1008,7 @@ static void mmc_sd_detect(struct mmc_host *host)
5352 -
5353 - mmc_claim_host(host);
5354 - mmc_detach_bus(host);
5355 -+ mmc_power_off(host);
5356 - mmc_release_host(host);
5357 - }
5358 - }
5359 -diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
5360 -index 262fff0..ac492ac 100644
5361 ---- a/drivers/mmc/core/sdio.c
5362 -+++ b/drivers/mmc/core/sdio.c
5363 -@@ -597,6 +597,7 @@ out:
5364 -
5365 - mmc_claim_host(host);
5366 - mmc_detach_bus(host);
5367 -+ mmc_power_off(host);
5368 - mmc_release_host(host);
5369 - }
5370 - }
5371 -diff --git a/drivers/mtd/mtdchar.c b/drivers/mtd/mtdchar.c
5372 -index 3f92731..9f8658e 100644
5373 ---- a/drivers/mtd/mtdchar.c
5374 -+++ b/drivers/mtd/mtdchar.c
5375 -@@ -320,6 +320,7 @@ static ssize_t mtd_write(struct file *file, const char __user *buf, size_t count
5376 - ops.mode = MTD_OOB_RAW;
5377 - ops.datbuf = kbuf;
5378 - ops.oobbuf = NULL;
5379 -+ ops.ooboffs = 0;
5380 - ops.len = len;
5381 -
5382 - ret = mtd->write_oob(mtd, *ppos, &ops);
5383 -diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
5384 -index a46e9bb..86f05f4 100644
5385 ---- a/drivers/mtd/nand/nand_base.c
5386 -+++ b/drivers/mtd/nand/nand_base.c
5387 -@@ -2097,14 +2097,22 @@ static int nand_write_page(struct mtd_info *mtd, struct nand_chip *chip,
5388 -
5389 - /**
5390 - * nand_fill_oob - [Internal] Transfer client buffer to oob
5391 -- * @chip: nand chip structure
5392 -+ * @mtd: MTD device structure
5393 - * @oob: oob data buffer
5394 - * @len: oob data write length
5395 - * @ops: oob ops structure
5396 - */
5397 --static uint8_t *nand_fill_oob(struct nand_chip *chip, uint8_t *oob, size_t len,
5398 -- struct mtd_oob_ops *ops)
5399 -+static uint8_t *nand_fill_oob(struct mtd_info *mtd, uint8_t *oob, size_t len,
5400 -+ struct mtd_oob_ops *ops)
5401 - {
5402 -+ struct nand_chip *chip = mtd->priv;
5403 -+
5404 -+ /*
5405 -+ * Initialise to all 0xFF, to avoid the possibility of left over OOB
5406 -+ * data from a previous OOB read.
5407 -+ */
5408 -+ memset(chip->oob_poi, 0xff, mtd->oobsize);
5409 -+
5410 - switch (ops->mode) {
5411 -
5412 - case MTD_OOB_PLACE:
5413 -@@ -2201,10 +2209,6 @@ static int nand_do_write_ops(struct mtd_info *mtd, loff_t to,
5414 - (chip->pagebuf << chip->page_shift) < (to + ops->len))
5415 - chip->pagebuf = -1;
5416 -
5417 -- /* If we're not given explicit OOB data, let it be 0xFF */
5418 -- if (likely(!oob))
5419 -- memset(chip->oob_poi, 0xff, mtd->oobsize);
5420 --
5421 - /* Don't allow multipage oob writes with offset */
5422 - if (oob && ops->ooboffs && (ops->ooboffs + ops->ooblen > oobmaxlen))
5423 - return -EINVAL;
5424 -@@ -2226,8 +2230,11 @@ static int nand_do_write_ops(struct mtd_info *mtd, loff_t to,
5425 -
5426 - if (unlikely(oob)) {
5427 - size_t len = min(oobwritelen, oobmaxlen);
5428 -- oob = nand_fill_oob(chip, oob, len, ops);
5429 -+ oob = nand_fill_oob(mtd, oob, len, ops);
5430 - oobwritelen -= len;
5431 -+ } else {
5432 -+ /* We still need to erase leftover OOB data */
5433 -+ memset(chip->oob_poi, 0xff, mtd->oobsize);
5434 - }
5435 -
5436 - ret = chip->write_page(mtd, chip, wbuf, page, cached,
5437 -@@ -2401,10 +2408,8 @@ static int nand_do_write_oob(struct mtd_info *mtd, loff_t to,
5438 - if (page == chip->pagebuf)
5439 - chip->pagebuf = -1;
5440 -
5441 -- memset(chip->oob_poi, 0xff, mtd->oobsize);
5442 -- nand_fill_oob(chip, ops->oobbuf, ops->ooblen, ops);
5443 -+ nand_fill_oob(mtd, ops->oobbuf, ops->ooblen, ops);
5444 - status = chip->ecc.write_oob(mtd, chip, page & chip->pagemask);
5445 -- memset(chip->oob_poi, 0xff, mtd->oobsize);
5446 -
5447 - if (status)
5448 - return status;
5449 -diff --git a/drivers/mtd/nand/pxa3xx_nand.c b/drivers/mtd/nand/pxa3xx_nand.c
5450 -index 1fb3b3a..30689cc 100644
5451 ---- a/drivers/mtd/nand/pxa3xx_nand.c
5452 -+++ b/drivers/mtd/nand/pxa3xx_nand.c
5453 -@@ -685,6 +685,8 @@ static int pxa3xx_nand_read_page_hwecc(struct mtd_info *mtd,
5454 - * OOB, ignore such double bit errors
5455 - */
5456 - if (is_buf_blank(buf, mtd->writesize))
5457 -+ info->retcode = ERR_NONE;
5458 -+ else
5459 - mtd->ecc_stats.failed++;
5460 - }
5461 -
5462 -@@ -813,7 +815,7 @@ static int pxa3xx_nand_detect_config(struct pxa3xx_nand_info *info)
5463 - info->page_size = ndcr & NDCR_PAGE_SZ ? 2048 : 512;
5464 - /* set info fields needed to read id */
5465 - info->read_id_bytes = (info->page_size == 2048) ? 4 : 2;
5466 -- info->reg_ndcr = ndcr;
5467 -+ info->reg_ndcr = ndcr & ~NDCR_INT_MASK;
5468 - info->cmdset = &default_cmdset;
5469 -
5470 - info->ndtr0cs0 = nand_readl(info, NDTR0CS0);
5471 -@@ -882,7 +884,7 @@ static int pxa3xx_nand_scan(struct mtd_info *mtd)
5472 - struct pxa3xx_nand_info *info = mtd->priv;
5473 - struct platform_device *pdev = info->pdev;
5474 - struct pxa3xx_nand_platform_data *pdata = pdev->dev.platform_data;
5475 -- struct nand_flash_dev pxa3xx_flash_ids[2] = { {NULL,}, {NULL,} };
5476 -+ struct nand_flash_dev pxa3xx_flash_ids[2], *def = NULL;
5477 - const struct pxa3xx_nand_flash *f = NULL;
5478 - struct nand_chip *chip = mtd->priv;
5479 - uint32_t id = -1;
5480 -@@ -942,8 +944,10 @@ static int pxa3xx_nand_scan(struct mtd_info *mtd)
5481 - pxa3xx_flash_ids[0].erasesize = f->page_size * f->page_per_block;
5482 - if (f->flash_width == 16)
5483 - pxa3xx_flash_ids[0].options = NAND_BUSWIDTH_16;
5484 -+ pxa3xx_flash_ids[1].name = NULL;
5485 -+ def = pxa3xx_flash_ids;
5486 - KEEP_CONFIG:
5487 -- if (nand_scan_ident(mtd, 1, pxa3xx_flash_ids))
5488 -+ if (nand_scan_ident(mtd, 1, def))
5489 - return -ENODEV;
5490 - /* calculate addressing information */
5491 - info->col_addr_cycles = (mtd->writesize >= 2048) ? 2 : 1;
5492 -@@ -954,9 +958,9 @@ KEEP_CONFIG:
5493 - info->row_addr_cycles = 2;
5494 - mtd->name = mtd_names[0];
5495 - chip->ecc.mode = NAND_ECC_HW;
5496 -- chip->ecc.size = f->page_size;
5497 -+ chip->ecc.size = info->page_size;
5498 -
5499 -- chip->options = (f->flash_width == 16) ? NAND_BUSWIDTH_16 : 0;
5500 -+ chip->options = (info->reg_ndcr & NDCR_DWIDTH_M) ? NAND_BUSWIDTH_16 : 0;
5501 - chip->options |= NAND_NO_AUTOINCR;
5502 - chip->options |= NAND_NO_READRDY;
5503 -
5504 -diff --git a/drivers/mtd/redboot.c b/drivers/mtd/redboot.c
5505 -index 7a87d07..4938bd0 100644
5506 ---- a/drivers/mtd/redboot.c
5507 -+++ b/drivers/mtd/redboot.c
5508 -@@ -297,6 +297,9 @@ static struct mtd_part_parser redboot_parser = {
5509 - .name = "RedBoot",
5510 - };
5511 -
5512 -+/* mtd parsers will request the module by parser name */
5513 -+MODULE_ALIAS("RedBoot");
5514 -+
5515 - static int __init redboot_parser_init(void)
5516 - {
5517 - return register_mtd_parser(&redboot_parser);
5518 -diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
5519 -index 9ea2f21..2065cb4 100644
5520 ---- a/drivers/net/bonding/bond_main.c
5521 -+++ b/drivers/net/bonding/bond_main.c
5522 -@@ -1500,6 +1500,8 @@ static rx_handler_result_t bond_handle_frame(struct sk_buff **pskb)
5523 - struct sk_buff *skb = *pskb;
5524 - struct slave *slave;
5525 - struct bonding *bond;
5526 -+ void (*recv_probe)(struct sk_buff *, struct bonding *,
5527 -+ struct slave *);
5528 -
5529 - skb = skb_share_check(skb, GFP_ATOMIC);
5530 - if (unlikely(!skb))
5531 -@@ -1513,11 +1515,12 @@ static rx_handler_result_t bond_handle_frame(struct sk_buff **pskb)
5532 - if (bond->params.arp_interval)
5533 - slave->dev->last_rx = jiffies;
5534 -
5535 -- if (bond->recv_probe) {
5536 -+ recv_probe = ACCESS_ONCE(bond->recv_probe);
5537 -+ if (recv_probe) {
5538 - struct sk_buff *nskb = skb_clone(skb, GFP_ATOMIC);
5539 -
5540 - if (likely(nskb)) {
5541 -- bond->recv_probe(nskb, bond, slave);
5542 -+ recv_probe(nskb, bond, slave);
5543 - dev_kfree_skb(nskb);
5544 - }
5545 - }
5546 -diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c
5547 -index 2f433fb..51fba5f 100644
5548 ---- a/drivers/net/enic/enic_main.c
5549 -+++ b/drivers/net/enic/enic_main.c
5550 -@@ -1718,8 +1718,12 @@ static void enic_poll_controller(struct net_device *netdev)
5551 - enic_isr_msix_rq(enic->msix_entry[intr].vector,
5552 - &enic->napi[i]);
5553 - }
5554 -- intr = enic_msix_wq_intr(enic, i);
5555 -- enic_isr_msix_wq(enic->msix_entry[intr].vector, enic);
5556 -+
5557 -+ for (i = 0; i < enic->wq_count; i++) {
5558 -+ intr = enic_msix_wq_intr(enic, i);
5559 -+ enic_isr_msix_wq(enic->msix_entry[intr].vector, enic);
5560 -+ }
5561 -+
5562 - break;
5563 - case VNIC_DEV_INTR_MODE_MSI:
5564 - enic_isr_msi(enic->pdev->irq, enic);
5565 -diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
5566 -index 2f3c48d..ab4723d 100644
5567 ---- a/drivers/net/macvlan.c
5568 -+++ b/drivers/net/macvlan.c
5569 -@@ -239,7 +239,7 @@ static int macvlan_queue_xmit(struct sk_buff *skb, struct net_device *dev)
5570 - dest = macvlan_hash_lookup(port, eth->h_dest);
5571 - if (dest && dest->mode == MACVLAN_MODE_BRIDGE) {
5572 - /* send to lowerdev first for its network taps */
5573 -- vlan->forward(vlan->lowerdev, skb);
5574 -+ dev_forward_skb(vlan->lowerdev, skb);
5575 -
5576 - return NET_XMIT_SUCCESS;
5577 - }
5578 -diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c
5579 -index dfc8272..4840ab7 100644
5580 ---- a/drivers/net/netconsole.c
5581 -+++ b/drivers/net/netconsole.c
5582 -@@ -307,6 +307,11 @@ static ssize_t store_enabled(struct netconsole_target *nt,
5583 - return err;
5584 - if (enabled < 0 || enabled > 1)
5585 - return -EINVAL;
5586 -+ if (enabled == nt->enabled) {
5587 -+ printk(KERN_INFO "netconsole: network logging has already %s\n",
5588 -+ nt->enabled ? "started" : "stopped");
5589 -+ return -EINVAL;
5590 -+ }
5591 -
5592 - if (enabled) { /* 1 */
5593 -
5594 -diff --git a/drivers/net/phy/dp83640.c b/drivers/net/phy/dp83640.c
5595 -index cb6e0b4..364cd67 100644
5596 ---- a/drivers/net/phy/dp83640.c
5597 -+++ b/drivers/net/phy/dp83640.c
5598 -@@ -875,6 +875,7 @@ static void dp83640_remove(struct phy_device *phydev)
5599 - struct dp83640_clock *clock;
5600 - struct list_head *this, *next;
5601 - struct dp83640_private *tmp, *dp83640 = phydev->priv;
5602 -+ struct sk_buff *skb;
5603 -
5604 - if (phydev->addr == BROADCAST_ADDR)
5605 - return;
5606 -@@ -882,6 +883,12 @@ static void dp83640_remove(struct phy_device *phydev)
5607 - enable_status_frames(phydev, false);
5608 - cancel_work_sync(&dp83640->ts_work);
5609 -
5610 -+ while ((skb = skb_dequeue(&dp83640->rx_queue)) != NULL)
5611 -+ kfree_skb(skb);
5612 -+
5613 -+ while ((skb = skb_dequeue(&dp83640->tx_queue)) != NULL)
5614 -+ skb_complete_tx_timestamp(skb, NULL);
5615 -+
5616 - clock = dp83640_clock_get(dp83640->clock);
5617 -
5618 - if (dp83640 == clock->chosen) {
5619 -@@ -1060,7 +1067,7 @@ static void dp83640_txtstamp(struct phy_device *phydev,
5620 - struct dp83640_private *dp83640 = phydev->priv;
5621 -
5622 - if (!dp83640->hwts_tx_en) {
5623 -- kfree_skb(skb);
5624 -+ skb_complete_tx_timestamp(skb, NULL);
5625 - return;
5626 - }
5627 - skb_queue_tail(&dp83640->tx_queue, skb);
5628 -diff --git a/drivers/net/rionet.c b/drivers/net/rionet.c
5629 -index ca4694e..1f421d7 100644
5630 ---- a/drivers/net/rionet.c
5631 -+++ b/drivers/net/rionet.c
5632 -@@ -88,8 +88,8 @@ static struct rio_dev **rionet_active;
5633 - #define dev_rionet_capable(dev) \
5634 - is_rionet_capable(dev->src_ops, dev->dst_ops)
5635 -
5636 --#define RIONET_MAC_MATCH(x) (*(u32 *)x == 0x00010001)
5637 --#define RIONET_GET_DESTID(x) (*(u16 *)(x + 4))
5638 -+#define RIONET_MAC_MATCH(x) (!memcmp((x), "\00\01\00\01", 4))
5639 -+#define RIONET_GET_DESTID(x) ((*((u8 *)x + 4) << 8) | *((u8 *)x + 5))
5640 -
5641 - static int rionet_rx_clean(struct net_device *ndev)
5642 - {
5643 -diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
5644 -index 38f6859..bc8c183 100644
5645 ---- a/drivers/net/tg3.c
5646 -+++ b/drivers/net/tg3.c
5647 -@@ -15278,7 +15278,7 @@ static void __devexit tg3_remove_one(struct pci_dev *pdev)
5648 -
5649 - cancel_work_sync(&tp->reset_task);
5650 -
5651 -- if (!tg3_flag(tp, USE_PHYLIB)) {
5652 -+ if (tg3_flag(tp, USE_PHYLIB)) {
5653 - tg3_phy_fini(tp);
5654 - tg3_mdio_fini(tp);
5655 - }
5656 -diff --git a/drivers/net/usb/asix.c b/drivers/net/usb/asix.c
5657 -index 5250288..c5c4b4d 100644
5658 ---- a/drivers/net/usb/asix.c
5659 -+++ b/drivers/net/usb/asix.c
5660 -@@ -314,12 +314,11 @@ static int asix_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
5661 - skb_pull(skb, 4);
5662 -
5663 - while (skb->len > 0) {
5664 -- if ((short)(header & 0x0000ffff) !=
5665 -- ~((short)((header & 0xffff0000) >> 16))) {
5666 -+ if ((header & 0x07ff) != ((~header >> 16) & 0x07ff))
5667 - netdev_err(dev->net, "asix_rx_fixup() Bad Header Length\n");
5668 -- }
5669 -+
5670 - /* get the packet length */
5671 -- size = (u16) (header & 0x0000ffff);
5672 -+ size = (u16) (header & 0x000007ff);
5673 -
5674 - if ((skb->len) - ((size + 1) & 0xfffe) == 0) {
5675 - u8 alignment = (unsigned long)skb->data & 0x3;
5676 -diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c
5677 -index d3b9e95..6a53161 100644
5678 ---- a/drivers/net/usb/cdc_ncm.c
5679 -+++ b/drivers/net/usb/cdc_ncm.c
5680 -@@ -229,23 +229,40 @@ static u8 cdc_ncm_setup(struct cdc_ncm_ctx *ctx)
5681 - if (ctx->rx_max != le32_to_cpu(ctx->ncm_parm.dwNtbInMaxSize)) {
5682 -
5683 - if (flags & USB_CDC_NCM_NCAP_NTB_INPUT_SIZE) {
5684 -- struct usb_cdc_ncm_ndp_input_size ndp_in_sz;
5685 -+ struct usb_cdc_ncm_ndp_input_size *ndp_in_sz;
5686 -+
5687 -+ ndp_in_sz = kzalloc(sizeof(*ndp_in_sz), GFP_KERNEL);
5688 -+ if (!ndp_in_sz) {
5689 -+ err = -ENOMEM;
5690 -+ goto size_err;
5691 -+ }
5692 -+
5693 - err = usb_control_msg(ctx->udev,
5694 - usb_sndctrlpipe(ctx->udev, 0),
5695 - USB_CDC_SET_NTB_INPUT_SIZE,
5696 - USB_TYPE_CLASS | USB_DIR_OUT
5697 - | USB_RECIP_INTERFACE,
5698 -- 0, iface_no, &ndp_in_sz, 8, 1000);
5699 -+ 0, iface_no, ndp_in_sz, 8, 1000);
5700 -+ kfree(ndp_in_sz);
5701 - } else {
5702 -- __le32 dwNtbInMaxSize = cpu_to_le32(ctx->rx_max);
5703 -+ __le32 *dwNtbInMaxSize;
5704 -+ dwNtbInMaxSize = kzalloc(sizeof(*dwNtbInMaxSize),
5705 -+ GFP_KERNEL);
5706 -+ if (!dwNtbInMaxSize) {
5707 -+ err = -ENOMEM;
5708 -+ goto size_err;
5709 -+ }
5710 -+ *dwNtbInMaxSize = cpu_to_le32(ctx->rx_max);
5711 -+
5712 - err = usb_control_msg(ctx->udev,
5713 - usb_sndctrlpipe(ctx->udev, 0),
5714 - USB_CDC_SET_NTB_INPUT_SIZE,
5715 - USB_TYPE_CLASS | USB_DIR_OUT
5716 - | USB_RECIP_INTERFACE,
5717 -- 0, iface_no, &dwNtbInMaxSize, 4, 1000);
5718 -+ 0, iface_no, dwNtbInMaxSize, 4, 1000);
5719 -+ kfree(dwNtbInMaxSize);
5720 - }
5721 --
5722 -+size_err:
5723 - if (err < 0)
5724 - pr_debug("Setting NTB Input Size failed\n");
5725 - }
5726 -@@ -326,19 +343,29 @@ static u8 cdc_ncm_setup(struct cdc_ncm_ctx *ctx)
5727 -
5728 - /* set Max Datagram Size (MTU) */
5729 - if (flags & USB_CDC_NCM_NCAP_MAX_DATAGRAM_SIZE) {
5730 -- __le16 max_datagram_size;
5731 -+ __le16 *max_datagram_size;
5732 - u16 eth_max_sz = le16_to_cpu(ctx->ether_desc->wMaxSegmentSize);
5733 -+
5734 -+ max_datagram_size = kzalloc(sizeof(*max_datagram_size),
5735 -+ GFP_KERNEL);
5736 -+ if (!max_datagram_size) {
5737 -+ err = -ENOMEM;
5738 -+ goto max_dgram_err;
5739 -+ }
5740 -+
5741 - err = usb_control_msg(ctx->udev, usb_rcvctrlpipe(ctx->udev, 0),
5742 - USB_CDC_GET_MAX_DATAGRAM_SIZE,
5743 - USB_TYPE_CLASS | USB_DIR_IN
5744 - | USB_RECIP_INTERFACE,
5745 -- 0, iface_no, &max_datagram_size,
5746 -+ 0, iface_no, max_datagram_size,
5747 - 2, 1000);
5748 - if (err < 0) {
5749 - pr_debug("GET_MAX_DATAGRAM_SIZE failed, use size=%u\n",
5750 - CDC_NCM_MIN_DATAGRAM_SIZE);
5751 -+ kfree(max_datagram_size);
5752 - } else {
5753 -- ctx->max_datagram_size = le16_to_cpu(max_datagram_size);
5754 -+ ctx->max_datagram_size =
5755 -+ le16_to_cpu(*max_datagram_size);
5756 - /* Check Eth descriptor value */
5757 - if (eth_max_sz < CDC_NCM_MAX_DATAGRAM_SIZE) {
5758 - if (ctx->max_datagram_size > eth_max_sz)
5759 -@@ -361,8 +388,10 @@ static u8 cdc_ncm_setup(struct cdc_ncm_ctx *ctx)
5760 - USB_TYPE_CLASS | USB_DIR_OUT
5761 - | USB_RECIP_INTERFACE,
5762 - 0,
5763 -- iface_no, &max_datagram_size,
5764 -+ iface_no, max_datagram_size,
5765 - 2, 1000);
5766 -+ kfree(max_datagram_size);
5767 -+max_dgram_err:
5768 - if (err < 0)
5769 - pr_debug("SET_MAX_DATAGRAM_SIZE failed\n");
5770 - }
5771 -diff --git a/drivers/net/usb/ipheth.c b/drivers/net/usb/ipheth.c
5772 -index 81126ff..8f9b7f7 100644
5773 ---- a/drivers/net/usb/ipheth.c
5774 -+++ b/drivers/net/usb/ipheth.c
5775 -@@ -59,6 +59,7 @@
5776 - #define USB_PRODUCT_IPHONE_3G 0x1292
5777 - #define USB_PRODUCT_IPHONE_3GS 0x1294
5778 - #define USB_PRODUCT_IPHONE_4 0x1297
5779 -+#define USB_PRODUCT_IPHONE_4_VZW 0x129c
5780 -
5781 - #define IPHETH_USBINTF_CLASS 255
5782 - #define IPHETH_USBINTF_SUBCLASS 253
5783 -@@ -98,6 +99,10 @@ static struct usb_device_id ipheth_table[] = {
5784 - USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_4,
5785 - IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
5786 - IPHETH_USBINTF_PROTO) },
5787 -+ { USB_DEVICE_AND_INTERFACE_INFO(
5788 -+ USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_4_VZW,
5789 -+ IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
5790 -+ IPHETH_USBINTF_PROTO) },
5791 - { }
5792 - };
5793 - MODULE_DEVICE_TABLE(usb, ipheth_table);
5794 -diff --git a/drivers/net/usb/rtl8150.c b/drivers/net/usb/rtl8150.c
5795 -index 041fb7d..ef3b236 100644
5796 ---- a/drivers/net/usb/rtl8150.c
5797 -+++ b/drivers/net/usb/rtl8150.c
5798 -@@ -977,7 +977,6 @@ static void rtl8150_disconnect(struct usb_interface *intf)
5799 - usb_set_intfdata(intf, NULL);
5800 - if (dev) {
5801 - set_bit(RTL8150_UNPLUG, &dev->flags);
5802 -- tasklet_disable(&dev->tl);
5803 - tasklet_kill(&dev->tl);
5804 - unregister_netdev(dev->netdev);
5805 - unlink_all_urbs(dev);
5806 -diff --git a/drivers/net/wireless/ath/ath9k/ani.c b/drivers/net/wireless/ath/ath9k/ani.c
5807 -index bfb6481..4e4e7c3 100644
5808 ---- a/drivers/net/wireless/ath/ath9k/ani.c
5809 -+++ b/drivers/net/wireless/ath/ath9k/ani.c
5810 -@@ -502,9 +502,6 @@ static void ath9k_ani_reset_old(struct ath_hw *ah, bool is_scanning)
5811 - ath9k_hw_ani_control(ah, ATH9K_ANI_CCK_WEAK_SIGNAL_THR,
5812 - ATH9K_ANI_CCK_WEAK_SIG_THR);
5813 -
5814 -- ath9k_hw_setrxfilter(ah, ath9k_hw_getrxfilter(ah) |
5815 -- ATH9K_RX_FILTER_PHYERR);
5816 --
5817 - ath9k_ani_restart(ah);
5818 - return;
5819 - }
5820 -@@ -525,8 +522,6 @@ static void ath9k_ani_reset_old(struct ath_hw *ah, bool is_scanning)
5821 - ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL,
5822 - aniState->firstepLevel);
5823 -
5824 -- ath9k_hw_setrxfilter(ah, ath9k_hw_getrxfilter(ah) &
5825 -- ~ATH9K_RX_FILTER_PHYERR);
5826 - ath9k_ani_restart(ah);
5827 -
5828 - ENABLE_REGWRITE_BUFFER(ah);
5829 -diff --git a/drivers/net/wireless/ath/ath9k/ar9003_calib.c b/drivers/net/wireless/ath/ath9k/ar9003_calib.c
5830 -index f48051c..7c2aaad 100644
5831 ---- a/drivers/net/wireless/ath/ath9k/ar9003_calib.c
5832 -+++ b/drivers/net/wireless/ath/ath9k/ar9003_calib.c
5833 -@@ -643,8 +643,9 @@ static void ar9003_hw_detect_outlier(int *mp_coeff, int nmeasurement,
5834 - outlier_idx = max_idx;
5835 - else
5836 - outlier_idx = min_idx;
5837 -+
5838 -+ mp_coeff[outlier_idx] = mp_avg;
5839 - }
5840 -- mp_coeff[outlier_idx] = mp_avg;
5841 - }
5842 -
5843 - static void ar9003_hw_tx_iqcal_load_avg_2_passes(struct ath_hw *ah,
5844 -diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mac.c b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
5845 -index 1f99249..7880dca 100644
5846 ---- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c
5847 -+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
5848 -@@ -255,8 +255,6 @@ static int ar9003_hw_proc_txdesc(struct ath_hw *ah, void *ds,
5849 - return -EIO;
5850 - }
5851 -
5852 -- if (status & AR_TxOpExceeded)
5853 -- ts->ts_status |= ATH9K_TXERR_XTXOP;
5854 - ts->ts_rateindex = MS(status, AR_FinalTxIdx);
5855 - ts->ts_seqnum = MS(status, AR_SeqNum);
5856 - ts->tid = MS(status, AR_TxTid);
5857 -@@ -267,6 +265,8 @@ static int ar9003_hw_proc_txdesc(struct ath_hw *ah, void *ds,
5858 - ts->ts_status = 0;
5859 - ts->ts_flags = 0;
5860 -
5861 -+ if (status & AR_TxOpExceeded)
5862 -+ ts->ts_status |= ATH9K_TXERR_XTXOP;
5863 - status = ACCESS_ONCE(ads->status2);
5864 - ts->ts_rssi_ctl0 = MS(status, AR_TxRSSIAnt00);
5865 - ts->ts_rssi_ctl1 = MS(status, AR_TxRSSIAnt01);
5866 -diff --git a/drivers/net/wireless/ath/ath9k/ar9003_phy.h b/drivers/net/wireless/ath/ath9k/ar9003_phy.h
5867 -index efdbe98..2364b5f 100644
5868 ---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.h
5869 -+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.h
5870 -@@ -570,12 +570,12 @@
5871 -
5872 - #define AR_PHY_TXGAIN_TABLE (AR_SM_BASE + 0x300)
5873 -
5874 --#define AR_PHY_TX_IQCAL_CONTROL_1 (AR_SM_BASE + AR_SREV_9485(ah) ? \
5875 -- 0x3c8 : 0x448)
5876 --#define AR_PHY_TX_IQCAL_START (AR_SM_BASE + AR_SREV_9485(ah) ? \
5877 -- 0x3c4 : 0x440)
5878 --#define AR_PHY_TX_IQCAL_STATUS_B0 (AR_SM_BASE + AR_SREV_9485(ah) ? \
5879 -- 0x3f0 : 0x48c)
5880 -+#define AR_PHY_TX_IQCAL_CONTROL_1 (AR_SM_BASE + (AR_SREV_9485(ah) ? \
5881 -+ 0x3c8 : 0x448))
5882 -+#define AR_PHY_TX_IQCAL_START (AR_SM_BASE + (AR_SREV_9485(ah) ? \
5883 -+ 0x3c4 : 0x440))
5884 -+#define AR_PHY_TX_IQCAL_STATUS_B0 (AR_SM_BASE + (AR_SREV_9485(ah) ? \
5885 -+ 0x3f0 : 0x48c))
5886 - #define AR_PHY_TX_IQCAL_CORR_COEFF_B0(_i) (AR_SM_BASE + \
5887 - (AR_SREV_9485(ah) ? \
5888 - 0x3d0 : 0x450) + ((_i) << 2))
5889 -diff --git a/drivers/net/wireless/ath/ath9k/ar9485_initvals.h b/drivers/net/wireless/ath/ath9k/ar9485_initvals.h
5890 -index 611ea6c..d16d029 100644
5891 ---- a/drivers/net/wireless/ath/ath9k/ar9485_initvals.h
5892 -+++ b/drivers/net/wireless/ath/ath9k/ar9485_initvals.h
5893 -@@ -521,7 +521,7 @@ static const u32 ar9485_1_1_radio_postamble[][2] = {
5894 - {0x000160ac, 0x24611800},
5895 - {0x000160b0, 0x03284f3e},
5896 - {0x0001610c, 0x00170000},
5897 -- {0x00016140, 0x10804008},
5898 -+ {0x00016140, 0x50804008},
5899 - };
5900 -
5901 - static const u32 ar9485_1_1_mac_postamble[][5] = {
5902 -@@ -603,7 +603,7 @@ static const u32 ar9485_1_1_radio_core[][2] = {
5903 -
5904 - static const u32 ar9485_1_1_pcie_phy_pll_on_clkreq_enable_L1[][2] = {
5905 - /* Addr allmodes */
5906 -- {0x00018c00, 0x10052e5e},
5907 -+ {0x00018c00, 0x18052e5e},
5908 - {0x00018c04, 0x000801d8},
5909 - {0x00018c08, 0x0000080c},
5910 - };
5911 -@@ -776,7 +776,7 @@ static const u32 ar9485_modes_green_ob_db_tx_gain_1_1[][5] = {
5912 -
5913 - static const u32 ar9485_1_1_pcie_phy_clkreq_disable_L1[][2] = {
5914 - /* Addr allmodes */
5915 -- {0x00018c00, 0x10013e5e},
5916 -+ {0x00018c00, 0x18013e5e},
5917 - {0x00018c04, 0x000801d8},
5918 - {0x00018c08, 0x0000080c},
5919 - };
5920 -@@ -882,7 +882,7 @@ static const u32 ar9485_fast_clock_1_1_baseband_postamble[][3] = {
5921 -
5922 - static const u32 ar9485_1_1_pcie_phy_pll_on_clkreq_disable_L1[][2] = {
5923 - /* Addr allmodes */
5924 -- {0x00018c00, 0x10012e5e},
5925 -+ {0x00018c00, 0x18012e5e},
5926 - {0x00018c04, 0x000801d8},
5927 - {0x00018c08, 0x0000080c},
5928 - };
5929 -@@ -1021,7 +1021,7 @@ static const u32 ar9485_common_rx_gain_1_1[][2] = {
5930 -
5931 - static const u32 ar9485_1_1_pcie_phy_clkreq_enable_L1[][2] = {
5932 - /* Addr allmodes */
5933 -- {0x00018c00, 0x10053e5e},
5934 -+ {0x00018c00, 0x18053e5e},
5935 - {0x00018c04, 0x000801d8},
5936 - {0x00018c08, 0x0000080c},
5937 - };
5938 -diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.c b/drivers/net/wireless/ath/ath9k/hif_usb.c
5939 -index 260f1f3..5513c0a 100644
5940 ---- a/drivers/net/wireless/ath/ath9k/hif_usb.c
5941 -+++ b/drivers/net/wireless/ath/ath9k/hif_usb.c
5942 -@@ -37,6 +37,7 @@ static struct usb_device_id ath9k_hif_usb_ids[] = {
5943 - { USB_DEVICE(0x04CA, 0x4605) }, /* Liteon */
5944 - { USB_DEVICE(0x040D, 0x3801) }, /* VIA */
5945 - { USB_DEVICE(0x0cf3, 0xb003) }, /* Ubiquiti WifiStation Ext */
5946 -+ { USB_DEVICE(0x057c, 0x8403) }, /* AVM FRITZ!WLAN 11N v2 USB */
5947 -
5948 - { USB_DEVICE(0x0cf3, 0x7015),
5949 - .driver_info = AR9287_USB }, /* Atheros */
5950 -diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
5951 -index 03900ca..7c2f06e 100644
5952 ---- a/drivers/net/wireless/ath/ath9k/hw.c
5953 -+++ b/drivers/net/wireless/ath/ath9k/hw.c
5954 -@@ -1931,6 +1931,10 @@ int ath9k_hw_fill_cap_info(struct ath_hw *ah)
5955 - pCap->num_gpio_pins = AR9271_NUM_GPIO;
5956 - else if (AR_DEVID_7010(ah))
5957 - pCap->num_gpio_pins = AR7010_NUM_GPIO;
5958 -+ else if (AR_SREV_9300_20_OR_LATER(ah))
5959 -+ pCap->num_gpio_pins = AR9300_NUM_GPIO;
5960 -+ else if (AR_SREV_9287_11_OR_LATER(ah))
5961 -+ pCap->num_gpio_pins = AR9287_NUM_GPIO;
5962 - else if (AR_SREV_9285_12_OR_LATER(ah))
5963 - pCap->num_gpio_pins = AR9285_NUM_GPIO;
5964 - else if (AR_SREV_9280_20_OR_LATER(ah))
5965 -diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c
5966 -index 07e35e5..3b5f9d6 100644
5967 ---- a/drivers/net/wireless/ath/ath9k/recv.c
5968 -+++ b/drivers/net/wireless/ath/ath9k/recv.c
5969 -@@ -423,12 +423,9 @@ void ath_rx_cleanup(struct ath_softc *sc)
5970 -
5971 - u32 ath_calcrxfilter(struct ath_softc *sc)
5972 - {
5973 --#define RX_FILTER_PRESERVE (ATH9K_RX_FILTER_PHYERR | ATH9K_RX_FILTER_PHYRADAR)
5974 --
5975 - u32 rfilt;
5976 -
5977 -- rfilt = (ath9k_hw_getrxfilter(sc->sc_ah) & RX_FILTER_PRESERVE)
5978 -- | ATH9K_RX_FILTER_UCAST | ATH9K_RX_FILTER_BCAST
5979 -+ rfilt = ATH9K_RX_FILTER_UCAST | ATH9K_RX_FILTER_BCAST
5980 - | ATH9K_RX_FILTER_MCAST;
5981 -
5982 - if (sc->rx.rxfilter & FIF_PROBE_REQ)
5983 -diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-ucode.c b/drivers/net/wireless/iwlwifi/iwl-agn-ucode.c
5984 -index 97de5d9..a03dbcc 100644
5985 ---- a/drivers/net/wireless/iwlwifi/iwl-agn-ucode.c
5986 -+++ b/drivers/net/wireless/iwlwifi/iwl-agn-ucode.c
5987 -@@ -144,13 +144,8 @@ static int iwlagn_load_section(struct iwl_priv *priv, const char *name,
5988 - FH_TCSR_TX_CONFIG_REG_VAL_CIRQ_HOST_ENDTFD);
5989 -
5990 - IWL_DEBUG_INFO(priv, "%s uCode section being loaded...\n", name);
5991 -- ret = wait_event_interruptible_timeout(priv->wait_command_queue,
5992 -- priv->ucode_write_complete, 5 * HZ);
5993 -- if (ret == -ERESTARTSYS) {
5994 -- IWL_ERR(priv, "Could not load the %s uCode section due "
5995 -- "to interrupt\n", name);
5996 -- return ret;
5997 -- }
5998 -+ ret = wait_event_timeout(priv->wait_command_queue,
5999 -+ priv->ucode_write_complete, 5 * HZ);
6000 - if (!ret) {
6001 - IWL_ERR(priv, "Could not load the %s uCode section\n",
6002 - name);
6003 -diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
6004 -index f24165d..baec52d 100644
6005 ---- a/drivers/net/wireless/iwlwifi/iwl-agn.c
6006 -+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
6007 -@@ -797,7 +797,7 @@ static void iwl_irq_tasklet(struct iwl_priv *priv)
6008 - handled |= CSR_INT_BIT_FH_TX;
6009 - /* Wake up uCode load routine, now that load is complete */
6010 - priv->ucode_write_complete = 1;
6011 -- wake_up_interruptible(&priv->wait_command_queue);
6012 -+ wake_up(&priv->wait_command_queue);
6013 - }
6014 -
6015 - if (inta & ~handled) {
6016 -diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
6017 -index 45cc51c..5638407 100644
6018 ---- a/drivers/net/wireless/iwlwifi/iwl-core.c
6019 -+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
6020 -@@ -899,7 +899,7 @@ void iwlagn_fw_error(struct iwl_priv *priv, bool ondemand)
6021 - * commands by clearing the ready bit */
6022 - clear_bit(STATUS_READY, &priv->status);
6023 -
6024 -- wake_up_interruptible(&priv->wait_command_queue);
6025 -+ wake_up(&priv->wait_command_queue);
6026 -
6027 - if (!ondemand) {
6028 - /*
6029 -@@ -950,7 +950,7 @@ void iwl_irq_handle_error(struct iwl_priv *priv)
6030 - */
6031 - clear_bit(STATUS_READY, &priv->status);
6032 - clear_bit(STATUS_HCMD_ACTIVE, &priv->status);
6033 -- wake_up_interruptible(&priv->wait_command_queue);
6034 -+ wake_up(&priv->wait_command_queue);
6035 - IWL_ERR(priv, "RF is used by WiMAX\n");
6036 - return;
6037 - }
6038 -diff --git a/drivers/net/wireless/iwlwifi/iwl-hcmd.c b/drivers/net/wireless/iwlwifi/iwl-hcmd.c
6039 -index 76f9966..fc11277 100644
6040 ---- a/drivers/net/wireless/iwlwifi/iwl-hcmd.c
6041 -+++ b/drivers/net/wireless/iwlwifi/iwl-hcmd.c
6042 -@@ -194,7 +194,7 @@ int iwl_send_cmd_sync(struct iwl_priv *priv, struct iwl_host_cmd *cmd)
6043 - return ret;
6044 - }
6045 -
6046 -- ret = wait_event_interruptible_timeout(priv->wait_command_queue,
6047 -+ ret = wait_event_timeout(priv->wait_command_queue,
6048 - !test_bit(STATUS_HCMD_ACTIVE, &priv->status),
6049 - HOST_COMPLETE_TIMEOUT);
6050 - if (!ret) {
6051 -diff --git a/drivers/net/wireless/iwlwifi/iwl-rx.c b/drivers/net/wireless/iwlwifi/iwl-rx.c
6052 -index b774517..865ac1a 100644
6053 ---- a/drivers/net/wireless/iwlwifi/iwl-rx.c
6054 -+++ b/drivers/net/wireless/iwlwifi/iwl-rx.c
6055 -@@ -738,7 +738,7 @@ static void iwl_rx_card_state_notif(struct iwl_priv *priv,
6056 - wiphy_rfkill_set_hw_state(priv->hw->wiphy,
6057 - test_bit(STATUS_RF_KILL_HW, &priv->status));
6058 - else
6059 -- wake_up_interruptible(&priv->wait_command_queue);
6060 -+ wake_up(&priv->wait_command_queue);
6061 - }
6062 -
6063 - static void iwl_rx_missed_beacon_notif(struct iwl_priv *priv,
6064 -diff --git a/drivers/net/wireless/iwlwifi/iwl-tx.c b/drivers/net/wireless/iwlwifi/iwl-tx.c
6065 -index c368c50..93152c3 100644
6066 ---- a/drivers/net/wireless/iwlwifi/iwl-tx.c
6067 -+++ b/drivers/net/wireless/iwlwifi/iwl-tx.c
6068 -@@ -821,7 +821,7 @@ void iwl_tx_cmd_complete(struct iwl_priv *priv, struct iwl_rx_mem_buffer *rxb)
6069 - clear_bit(STATUS_HCMD_ACTIVE, &priv->status);
6070 - IWL_DEBUG_INFO(priv, "Clearing HCMD_ACTIVE for command %s\n",
6071 - get_cmd_string(cmd->hdr.cmd));
6072 -- wake_up_interruptible(&priv->wait_command_queue);
6073 -+ wake_up(&priv->wait_command_queue);
6074 - }
6075 -
6076 - /* Mark as unmapped */
6077 -diff --git a/drivers/net/wireless/wl12xx/scan.c b/drivers/net/wireless/wl12xx/scan.c
6078 -index 56f76ab..9542e46 100644
6079 ---- a/drivers/net/wireless/wl12xx/scan.c
6080 -+++ b/drivers/net/wireless/wl12xx/scan.c
6081 -@@ -83,14 +83,18 @@ static int wl1271_get_scan_channels(struct wl1271 *wl,
6082 - for (i = 0, j = 0;
6083 - i < req->n_channels && j < WL1271_SCAN_MAX_CHANNELS;
6084 - i++) {
6085 --
6086 - flags = req->channels[i]->flags;
6087 -
6088 - if (!test_bit(i, wl->scan.scanned_ch) &&
6089 - !(flags & IEEE80211_CHAN_DISABLED) &&
6090 -- ((!!(flags & IEEE80211_CHAN_PASSIVE_SCAN)) == passive) &&
6091 -- (req->channels[i]->band == band)) {
6092 --
6093 -+ (req->channels[i]->band == band) &&
6094 -+ /*
6095 -+ * In passive scans, we scan all remaining
6096 -+ * channels, even if not marked as such.
6097 -+ * In active scans, we only scan channels not
6098 -+ * marked as passive.
6099 -+ */
6100 -+ (passive || !(flags & IEEE80211_CHAN_PASSIVE_SCAN))) {
6101 - wl1271_debug(DEBUG_SCAN, "band %d, center_freq %d ",
6102 - req->channels[i]->band,
6103 - req->channels[i]->center_freq);
6104 -@@ -142,6 +146,10 @@ static int wl1271_scan_send(struct wl1271 *wl, enum ieee80211_band band,
6105 - int ret;
6106 - u16 scan_options = 0;
6107 -
6108 -+ /* skip active scans if we don't have SSIDs */
6109 -+ if (!passive && wl->scan.req->n_ssids == 0)
6110 -+ return WL1271_NOTHING_TO_SCAN;
6111 -+
6112 - cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
6113 - trigger = kzalloc(sizeof(*trigger), GFP_KERNEL);
6114 - if (!cmd || !trigger) {
6115 -@@ -152,8 +160,7 @@ static int wl1271_scan_send(struct wl1271 *wl, enum ieee80211_band band,
6116 - /* We always use high priority scans */
6117 - scan_options = WL1271_SCAN_OPT_PRIORITY_HIGH;
6118 -
6119 -- /* No SSIDs means that we have a forced passive scan */
6120 -- if (passive || wl->scan.req->n_ssids == 0)
6121 -+ if (passive)
6122 - scan_options |= WL1271_SCAN_OPT_PASSIVE;
6123 -
6124 - cmd->params.scan_options = cpu_to_le16(scan_options);
6125 -diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c
6126 -index 0ca86f9..1825629 100644
6127 ---- a/drivers/net/xen-netback/interface.c
6128 -+++ b/drivers/net/xen-netback/interface.c
6129 -@@ -327,12 +327,12 @@ int xenvif_connect(struct xenvif *vif, unsigned long tx_ring_ref,
6130 - xenvif_get(vif);
6131 -
6132 - rtnl_lock();
6133 -- if (netif_running(vif->dev))
6134 -- xenvif_up(vif);
6135 - if (!vif->can_sg && vif->dev->mtu > ETH_DATA_LEN)
6136 - dev_set_mtu(vif->dev, ETH_DATA_LEN);
6137 - netdev_update_features(vif->dev);
6138 - netif_carrier_on(vif->dev);
6139 -+ if (netif_running(vif->dev))
6140 -+ xenvif_up(vif);
6141 - rtnl_unlock();
6142 -
6143 - return 0;
6144 -diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
6145 -index 1196f61..cec4629 100644
6146 ---- a/drivers/pci/quirks.c
6147 -+++ b/drivers/pci/quirks.c
6148 -@@ -2745,20 +2745,6 @@ static void ricoh_mmc_fixup_r5c832(struct pci_dev *dev)
6149 - /* disable must be done via function #0 */
6150 - if (PCI_FUNC(dev->devfn))
6151 - return;
6152 --
6153 -- pci_read_config_byte(dev, 0xCB, &disable);
6154 --
6155 -- if (disable & 0x02)
6156 -- return;
6157 --
6158 -- pci_read_config_byte(dev, 0xCA, &write_enable);
6159 -- pci_write_config_byte(dev, 0xCA, 0x57);
6160 -- pci_write_config_byte(dev, 0xCB, disable | 0x02);
6161 -- pci_write_config_byte(dev, 0xCA, write_enable);
6162 --
6163 -- dev_notice(&dev->dev, "proprietary Ricoh MMC controller disabled (via firewire function)\n");
6164 -- dev_notice(&dev->dev, "MMC cards are now supported by standard SDHCI controller\n");
6165 --
6166 - /*
6167 - * RICOH 0xe823 SD/MMC card reader fails to recognize
6168 - * certain types of SD/MMC cards. Lowering the SD base
6169 -@@ -2781,6 +2767,20 @@ static void ricoh_mmc_fixup_r5c832(struct pci_dev *dev)
6170 -
6171 - dev_notice(&dev->dev, "MMC controller base frequency changed to 50Mhz.\n");
6172 - }
6173 -+
6174 -+ pci_read_config_byte(dev, 0xCB, &disable);
6175 -+
6176 -+ if (disable & 0x02)
6177 -+ return;
6178 -+
6179 -+ pci_read_config_byte(dev, 0xCA, &write_enable);
6180 -+ pci_write_config_byte(dev, 0xCA, 0x57);
6181 -+ pci_write_config_byte(dev, 0xCB, disable | 0x02);
6182 -+ pci_write_config_byte(dev, 0xCA, write_enable);
6183 -+
6184 -+ dev_notice(&dev->dev, "proprietary Ricoh MMC controller disabled (via firewire function)\n");
6185 -+ dev_notice(&dev->dev, "MMC cards are now supported by standard SDHCI controller\n");
6186 -+
6187 - }
6188 - DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5C832, ricoh_mmc_fixup_r5c832);
6189 - DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5C832, ricoh_mmc_fixup_r5c832);
6190 -diff --git a/drivers/pci/xen-pcifront.c b/drivers/pci/xen-pcifront.c
6191 -index 492b7d8..d4e7a10 100644
6192 ---- a/drivers/pci/xen-pcifront.c
6193 -+++ b/drivers/pci/xen-pcifront.c
6194 -@@ -400,9 +400,8 @@ static int pcifront_claim_resource(struct pci_dev *dev, void *data)
6195 - dev_info(&pdev->xdev->dev, "claiming resource %s/%d\n",
6196 - pci_name(dev), i);
6197 - if (pci_claim_resource(dev, i)) {
6198 -- dev_err(&pdev->xdev->dev, "Could not claim "
6199 -- "resource %s/%d! Device offline. Try "
6200 -- "giving less than 4GB to domain.\n",
6201 -+ dev_err(&pdev->xdev->dev, "Could not claim resource %s/%d! "
6202 -+ "Device offline. Try using e820_host=1 in the guest config.\n",
6203 - pci_name(dev), i);
6204 - }
6205 - }
6206 -diff --git a/drivers/platform/x86/samsung-laptop.c b/drivers/platform/x86/samsung-laptop.c
6207 -index 1658575..ec85987 100644
6208 ---- a/drivers/platform/x86/samsung-laptop.c
6209 -+++ b/drivers/platform/x86/samsung-laptop.c
6210 -@@ -370,15 +370,17 @@ static u8 read_brightness(void)
6211 - &sretval);
6212 - if (!retval) {
6213 - user_brightness = sretval.retval[0];
6214 -- if (user_brightness != 0)
6215 -+ if (user_brightness > sabi_config->min_brightness)
6216 - user_brightness -= sabi_config->min_brightness;
6217 -+ else
6218 -+ user_brightness = 0;
6219 - }
6220 - return user_brightness;
6221 - }
6222 -
6223 - static void set_brightness(u8 user_brightness)
6224 - {
6225 -- u8 user_level = user_brightness - sabi_config->min_brightness;
6226 -+ u8 user_level = user_brightness + sabi_config->min_brightness;
6227 -
6228 - sabi_set_command(sabi_config->commands.set_brightness, user_level);
6229 - }
6230 -@@ -631,6 +633,15 @@ static struct dmi_system_id __initdata samsung_dmi_table[] = {
6231 - .callback = dmi_check_cb,
6232 - },
6233 - {
6234 -+ .ident = "R700",
6235 -+ .matches = {
6236 -+ DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
6237 -+ DMI_MATCH(DMI_PRODUCT_NAME, "SR700"),
6238 -+ DMI_MATCH(DMI_BOARD_NAME, "SR700"),
6239 -+ },
6240 -+ .callback = dmi_check_cb,
6241 -+ },
6242 -+ {
6243 - .ident = "R530/R730",
6244 - .matches = {
6245 - DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
6246 -@@ -676,6 +687,24 @@ static struct dmi_system_id __initdata samsung_dmi_table[] = {
6247 - },
6248 - .callback = dmi_check_cb,
6249 - },
6250 -+ {
6251 -+ .ident = "X520",
6252 -+ .matches = {
6253 -+ DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
6254 -+ DMI_MATCH(DMI_PRODUCT_NAME, "X520"),
6255 -+ DMI_MATCH(DMI_BOARD_NAME, "X520"),
6256 -+ },
6257 -+ .callback = dmi_check_cb,
6258 -+ },
6259 -+ {
6260 -+ .ident = "R528/R728",
6261 -+ .matches = {
6262 -+ DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
6263 -+ DMI_MATCH(DMI_PRODUCT_NAME, "R528/R728"),
6264 -+ DMI_MATCH(DMI_BOARD_NAME, "R528/R728"),
6265 -+ },
6266 -+ .callback = dmi_check_cb,
6267 -+ },
6268 - { },
6269 - };
6270 - MODULE_DEVICE_TABLE(dmi, samsung_dmi_table);
6271 -@@ -760,7 +789,7 @@ static int __init samsung_init(void)
6272 - sabi_iface = ioremap_nocache(ifaceP, 16);
6273 - if (!sabi_iface) {
6274 - pr_err("Can't remap %x\n", ifaceP);
6275 -- goto exit;
6276 -+ goto error_no_signature;
6277 - }
6278 - if (debug) {
6279 - printk(KERN_DEBUG "ifaceP = 0x%08x\n", ifaceP);
6280 -@@ -792,7 +821,8 @@ static int __init samsung_init(void)
6281 - /* create a backlight device to talk to this one */
6282 - memset(&props, 0, sizeof(struct backlight_properties));
6283 - props.type = BACKLIGHT_PLATFORM;
6284 -- props.max_brightness = sabi_config->max_brightness;
6285 -+ props.max_brightness = sabi_config->max_brightness -
6286 -+ sabi_config->min_brightness;
6287 - backlight_device = backlight_device_register("samsung", &sdev->dev,
6288 - NULL, &backlight_ops,
6289 - &props);
6290 -@@ -811,7 +841,6 @@ static int __init samsung_init(void)
6291 - if (retval)
6292 - goto error_file_create;
6293 -
6294 --exit:
6295 - return 0;
6296 -
6297 - error_file_create:
6298 -diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c
6299 -index f23d5a8..9b88be4 100644
6300 ---- a/drivers/platform/x86/wmi.c
6301 -+++ b/drivers/platform/x86/wmi.c
6302 -@@ -754,9 +754,13 @@ static void wmi_free_devices(void)
6303 - struct wmi_block *wblock, *next;
6304 -
6305 - /* Delete devices for all the GUIDs */
6306 -- list_for_each_entry_safe(wblock, next, &wmi_block_list, list)
6307 -+ list_for_each_entry_safe(wblock, next, &wmi_block_list, list) {
6308 -+ list_del(&wblock->list);
6309 - if (wblock->dev.class)
6310 - device_unregister(&wblock->dev);
6311 -+ else
6312 -+ kfree(wblock);
6313 -+ }
6314 - }
6315 -
6316 - static bool guid_already_parsed(const char *guid_string)
6317 -diff --git a/drivers/power/ds2780_battery.c b/drivers/power/ds2780_battery.c
6318 -index 1fefe82..91a783d 100644
6319 ---- a/drivers/power/ds2780_battery.c
6320 -+++ b/drivers/power/ds2780_battery.c
6321 -@@ -39,6 +39,7 @@ struct ds2780_device_info {
6322 - struct device *dev;
6323 - struct power_supply bat;
6324 - struct device *w1_dev;
6325 -+ struct task_struct *mutex_holder;
6326 - };
6327 -
6328 - enum current_types {
6329 -@@ -49,8 +50,8 @@ enum current_types {
6330 - static const char model[] = "DS2780";
6331 - static const char manufacturer[] = "Maxim/Dallas";
6332 -
6333 --static inline struct ds2780_device_info *to_ds2780_device_info(
6334 -- struct power_supply *psy)
6335 -+static inline struct ds2780_device_info *
6336 -+to_ds2780_device_info(struct power_supply *psy)
6337 - {
6338 - return container_of(psy, struct ds2780_device_info, bat);
6339 - }
6340 -@@ -60,17 +61,28 @@ static inline struct power_supply *to_power_supply(struct device *dev)
6341 - return dev_get_drvdata(dev);
6342 - }
6343 -
6344 --static inline int ds2780_read8(struct device *dev, u8 *val, int addr)
6345 -+static inline int ds2780_battery_io(struct ds2780_device_info *dev_info,
6346 -+ char *buf, int addr, size_t count, int io)
6347 - {
6348 -- return w1_ds2780_io(dev, val, addr, sizeof(u8), 0);
6349 -+ if (dev_info->mutex_holder == current)
6350 -+ return w1_ds2780_io_nolock(dev_info->w1_dev, buf, addr, count, io);
6351 -+ else
6352 -+ return w1_ds2780_io(dev_info->w1_dev, buf, addr, count, io);
6353 -+}
6354 -+
6355 -+static inline int ds2780_read8(struct ds2780_device_info *dev_info, u8 *val,
6356 -+ int addr)
6357 -+{
6358 -+ return ds2780_battery_io(dev_info, val, addr, sizeof(u8), 0);
6359 - }
6360 -
6361 --static int ds2780_read16(struct device *dev, s16 *val, int addr)
6362 -+static int ds2780_read16(struct ds2780_device_info *dev_info, s16 *val,
6363 -+ int addr)
6364 - {
6365 - int ret;
6366 - u8 raw[2];
6367 -
6368 -- ret = w1_ds2780_io(dev, raw, addr, sizeof(u8) * 2, 0);
6369 -+ ret = ds2780_battery_io(dev_info, raw, addr, sizeof(raw), 0);
6370 - if (ret < 0)
6371 - return ret;
6372 -
6373 -@@ -79,16 +91,16 @@ static int ds2780_read16(struct device *dev, s16 *val, int addr)
6374 - return 0;
6375 - }
6376 -
6377 --static inline int ds2780_read_block(struct device *dev, u8 *val, int addr,
6378 -- size_t count)
6379 -+static inline int ds2780_read_block(struct ds2780_device_info *dev_info,
6380 -+ u8 *val, int addr, size_t count)
6381 - {
6382 -- return w1_ds2780_io(dev, val, addr, count, 0);
6383 -+ return ds2780_battery_io(dev_info, val, addr, count, 0);
6384 - }
6385 -
6386 --static inline int ds2780_write(struct device *dev, u8 *val, int addr,
6387 -- size_t count)
6388 -+static inline int ds2780_write(struct ds2780_device_info *dev_info, u8 *val,
6389 -+ int addr, size_t count)
6390 - {
6391 -- return w1_ds2780_io(dev, val, addr, count, 1);
6392 -+ return ds2780_battery_io(dev_info, val, addr, count, 1);
6393 - }
6394 -
6395 - static inline int ds2780_store_eeprom(struct device *dev, int addr)
6396 -@@ -122,7 +134,7 @@ static int ds2780_set_sense_register(struct ds2780_device_info *dev_info,
6397 - {
6398 - int ret;
6399 -
6400 -- ret = ds2780_write(dev_info->w1_dev, &conductance,
6401 -+ ret = ds2780_write(dev_info, &conductance,
6402 - DS2780_RSNSP_REG, sizeof(u8));
6403 - if (ret < 0)
6404 - return ret;
6405 -@@ -134,7 +146,7 @@ static int ds2780_set_sense_register(struct ds2780_device_info *dev_info,
6406 - static int ds2780_get_rsgain_register(struct ds2780_device_info *dev_info,
6407 - u16 *rsgain)
6408 - {
6409 -- return ds2780_read16(dev_info->w1_dev, rsgain, DS2780_RSGAIN_MSB_REG);
6410 -+ return ds2780_read16(dev_info, rsgain, DS2780_RSGAIN_MSB_REG);
6411 - }
6412 -
6413 - /* Set RSGAIN value from 0 to 1.999 in steps of 0.001 */
6414 -@@ -144,8 +156,8 @@ static int ds2780_set_rsgain_register(struct ds2780_device_info *dev_info,
6415 - int ret;
6416 - u8 raw[] = {rsgain >> 8, rsgain & 0xFF};
6417 -
6418 -- ret = ds2780_write(dev_info->w1_dev, raw,
6419 -- DS2780_RSGAIN_MSB_REG, sizeof(u8) * 2);
6420 -+ ret = ds2780_write(dev_info, raw,
6421 -+ DS2780_RSGAIN_MSB_REG, sizeof(raw));
6422 - if (ret < 0)
6423 - return ret;
6424 -
6425 -@@ -167,7 +179,7 @@ static int ds2780_get_voltage(struct ds2780_device_info *dev_info,
6426 - * Bits 2 - 0 of the voltage value are in bits 7 - 5 of the
6427 - * voltage LSB register
6428 - */
6429 -- ret = ds2780_read16(dev_info->w1_dev, &voltage_raw,
6430 -+ ret = ds2780_read16(dev_info, &voltage_raw,
6431 - DS2780_VOLT_MSB_REG);
6432 - if (ret < 0)
6433 - return ret;
6434 -@@ -196,7 +208,7 @@ static int ds2780_get_temperature(struct ds2780_device_info *dev_info,
6435 - * Bits 2 - 0 of the temperature value are in bits 7 - 5 of the
6436 - * temperature LSB register
6437 - */
6438 -- ret = ds2780_read16(dev_info->w1_dev, &temperature_raw,
6439 -+ ret = ds2780_read16(dev_info, &temperature_raw,
6440 - DS2780_TEMP_MSB_REG);
6441 - if (ret < 0)
6442 - return ret;
6443 -@@ -222,13 +234,13 @@ static int ds2780_get_current(struct ds2780_device_info *dev_info,
6444 - * The units of measurement for current are dependent on the value of
6445 - * the sense resistor.
6446 - */
6447 -- ret = ds2780_read8(dev_info->w1_dev, &sense_res_raw, DS2780_RSNSP_REG);
6448 -+ ret = ds2780_read8(dev_info, &sense_res_raw, DS2780_RSNSP_REG);
6449 - if (ret < 0)
6450 - return ret;
6451 -
6452 - if (sense_res_raw == 0) {
6453 - dev_err(dev_info->dev, "sense resistor value is 0\n");
6454 -- return -ENXIO;
6455 -+ return -EINVAL;
6456 - }
6457 - sense_res = 1000 / sense_res_raw;
6458 -
6459 -@@ -248,7 +260,7 @@ static int ds2780_get_current(struct ds2780_device_info *dev_info,
6460 - * Bits 7 - 0 of the current value are in bits 7 - 0 of the current
6461 - * LSB register
6462 - */
6463 -- ret = ds2780_read16(dev_info->w1_dev, &current_raw, reg_msb);
6464 -+ ret = ds2780_read16(dev_info, &current_raw, reg_msb);
6465 - if (ret < 0)
6466 - return ret;
6467 -
6468 -@@ -267,7 +279,7 @@ static int ds2780_get_accumulated_current(struct ds2780_device_info *dev_info,
6469 - * The units of measurement for accumulated current are dependent on
6470 - * the value of the sense resistor.
6471 - */
6472 -- ret = ds2780_read8(dev_info->w1_dev, &sense_res_raw, DS2780_RSNSP_REG);
6473 -+ ret = ds2780_read8(dev_info, &sense_res_raw, DS2780_RSNSP_REG);
6474 - if (ret < 0)
6475 - return ret;
6476 -
6477 -@@ -285,7 +297,7 @@ static int ds2780_get_accumulated_current(struct ds2780_device_info *dev_info,
6478 - * Bits 7 - 0 of the ACR value are in bits 7 - 0 of the ACR
6479 - * LSB register
6480 - */
6481 -- ret = ds2780_read16(dev_info->w1_dev, &current_raw, DS2780_ACR_MSB_REG);
6482 -+ ret = ds2780_read16(dev_info, &current_raw, DS2780_ACR_MSB_REG);
6483 - if (ret < 0)
6484 - return ret;
6485 -
6486 -@@ -299,7 +311,7 @@ static int ds2780_get_capacity(struct ds2780_device_info *dev_info,
6487 - int ret;
6488 - u8 raw;
6489 -
6490 -- ret = ds2780_read8(dev_info->w1_dev, &raw, DS2780_RARC_REG);
6491 -+ ret = ds2780_read8(dev_info, &raw, DS2780_RARC_REG);
6492 - if (ret < 0)
6493 - return ret;
6494 -
6495 -@@ -345,7 +357,7 @@ static int ds2780_get_charge_now(struct ds2780_device_info *dev_info,
6496 - * Bits 7 - 0 of the RAAC value are in bits 7 - 0 of the RAAC
6497 - * LSB register
6498 - */
6499 -- ret = ds2780_read16(dev_info->w1_dev, &charge_raw, DS2780_RAAC_MSB_REG);
6500 -+ ret = ds2780_read16(dev_info, &charge_raw, DS2780_RAAC_MSB_REG);
6501 - if (ret < 0)
6502 - return ret;
6503 -
6504 -@@ -356,7 +368,7 @@ static int ds2780_get_charge_now(struct ds2780_device_info *dev_info,
6505 - static int ds2780_get_control_register(struct ds2780_device_info *dev_info,
6506 - u8 *control_reg)
6507 - {
6508 -- return ds2780_read8(dev_info->w1_dev, control_reg, DS2780_CONTROL_REG);
6509 -+ return ds2780_read8(dev_info, control_reg, DS2780_CONTROL_REG);
6510 - }
6511 -
6512 - static int ds2780_set_control_register(struct ds2780_device_info *dev_info,
6513 -@@ -364,7 +376,7 @@ static int ds2780_set_control_register(struct ds2780_device_info *dev_info,
6514 - {
6515 - int ret;
6516 -
6517 -- ret = ds2780_write(dev_info->w1_dev, &control_reg,
6518 -+ ret = ds2780_write(dev_info, &control_reg,
6519 - DS2780_CONTROL_REG, sizeof(u8));
6520 - if (ret < 0)
6521 - return ret;
6522 -@@ -503,7 +515,7 @@ static ssize_t ds2780_get_sense_resistor_value(struct device *dev,
6523 - struct power_supply *psy = to_power_supply(dev);
6524 - struct ds2780_device_info *dev_info = to_ds2780_device_info(psy);
6525 -
6526 -- ret = ds2780_read8(dev_info->w1_dev, &sense_resistor, DS2780_RSNSP_REG);
6527 -+ ret = ds2780_read8(dev_info, &sense_resistor, DS2780_RSNSP_REG);
6528 - if (ret < 0)
6529 - return ret;
6530 -
6531 -@@ -584,7 +596,7 @@ static ssize_t ds2780_get_pio_pin(struct device *dev,
6532 - struct power_supply *psy = to_power_supply(dev);
6533 - struct ds2780_device_info *dev_info = to_ds2780_device_info(psy);
6534 -
6535 -- ret = ds2780_read8(dev_info->w1_dev, &sfr, DS2780_SFR_REG);
6536 -+ ret = ds2780_read8(dev_info, &sfr, DS2780_SFR_REG);
6537 - if (ret < 0)
6538 - return ret;
6539 -
6540 -@@ -611,7 +623,7 @@ static ssize_t ds2780_set_pio_pin(struct device *dev,
6541 - return -EINVAL;
6542 - }
6543 -
6544 -- ret = ds2780_write(dev_info->w1_dev, &new_setting,
6545 -+ ret = ds2780_write(dev_info, &new_setting,
6546 - DS2780_SFR_REG, sizeof(u8));
6547 - if (ret < 0)
6548 - return ret;
6549 -@@ -632,7 +644,7 @@ static ssize_t ds2780_read_param_eeprom_bin(struct file *filp,
6550 - DS2780_EEPROM_BLOCK1_END -
6551 - DS2780_EEPROM_BLOCK1_START + 1 - off);
6552 -
6553 -- return ds2780_read_block(dev_info->w1_dev, buf,
6554 -+ return ds2780_read_block(dev_info, buf,
6555 - DS2780_EEPROM_BLOCK1_START + off, count);
6556 - }
6557 -
6558 -@@ -650,7 +662,7 @@ static ssize_t ds2780_write_param_eeprom_bin(struct file *filp,
6559 - DS2780_EEPROM_BLOCK1_END -
6560 - DS2780_EEPROM_BLOCK1_START + 1 - off);
6561 -
6562 -- ret = ds2780_write(dev_info->w1_dev, buf,
6563 -+ ret = ds2780_write(dev_info, buf,
6564 - DS2780_EEPROM_BLOCK1_START + off, count);
6565 - if (ret < 0)
6566 - return ret;
6567 -@@ -685,9 +697,8 @@ static ssize_t ds2780_read_user_eeprom_bin(struct file *filp,
6568 - DS2780_EEPROM_BLOCK0_END -
6569 - DS2780_EEPROM_BLOCK0_START + 1 - off);
6570 -
6571 -- return ds2780_read_block(dev_info->w1_dev, buf,
6572 -+ return ds2780_read_block(dev_info, buf,
6573 - DS2780_EEPROM_BLOCK0_START + off, count);
6574 --
6575 - }
6576 -
6577 - static ssize_t ds2780_write_user_eeprom_bin(struct file *filp,
6578 -@@ -704,7 +715,7 @@ static ssize_t ds2780_write_user_eeprom_bin(struct file *filp,
6579 - DS2780_EEPROM_BLOCK0_END -
6580 - DS2780_EEPROM_BLOCK0_START + 1 - off);
6581 -
6582 -- ret = ds2780_write(dev_info->w1_dev, buf,
6583 -+ ret = ds2780_write(dev_info, buf,
6584 - DS2780_EEPROM_BLOCK0_START + off, count);
6585 - if (ret < 0)
6586 - return ret;
6587 -@@ -768,6 +779,7 @@ static int __devinit ds2780_battery_probe(struct platform_device *pdev)
6588 - dev_info->bat.properties = ds2780_battery_props;
6589 - dev_info->bat.num_properties = ARRAY_SIZE(ds2780_battery_props);
6590 - dev_info->bat.get_property = ds2780_battery_get_property;
6591 -+ dev_info->mutex_holder = current;
6592 -
6593 - ret = power_supply_register(&pdev->dev, &dev_info->bat);
6594 - if (ret) {
6595 -@@ -797,6 +809,8 @@ static int __devinit ds2780_battery_probe(struct platform_device *pdev)
6596 - goto fail_remove_bin_file;
6597 - }
6598 -
6599 -+ dev_info->mutex_holder = NULL;
6600 -+
6601 - return 0;
6602 -
6603 - fail_remove_bin_file:
6604 -@@ -816,6 +830,8 @@ static int __devexit ds2780_battery_remove(struct platform_device *pdev)
6605 - {
6606 - struct ds2780_device_info *dev_info = platform_get_drvdata(pdev);
6607 -
6608 -+ dev_info->mutex_holder = current;
6609 -+
6610 - /* remove attributes */
6611 - sysfs_remove_group(&dev_info->bat.dev->kobj, &ds2780_attr_group);
6612 -
6613 -diff --git a/drivers/s390/cio/ccwgroup.c b/drivers/s390/cio/ccwgroup.c
6614 -index 5c56741..cda9bd6 100644
6615 ---- a/drivers/s390/cio/ccwgroup.c
6616 -+++ b/drivers/s390/cio/ccwgroup.c
6617 -@@ -87,6 +87,12 @@ static void __ccwgroup_remove_cdev_refs(struct ccwgroup_device *gdev)
6618 - }
6619 - }
6620 -
6621 -+static ssize_t ccwgroup_online_store(struct device *dev,
6622 -+ struct device_attribute *attr,
6623 -+ const char *buf, size_t count);
6624 -+static ssize_t ccwgroup_online_show(struct device *dev,
6625 -+ struct device_attribute *attr,
6626 -+ char *buf);
6627 - /*
6628 - * Provide an 'ungroup' attribute so the user can remove group devices no
6629 - * longer needed or accidentially created. Saves memory :)
6630 -@@ -134,6 +140,20 @@ out:
6631 - }
6632 -
6633 - static DEVICE_ATTR(ungroup, 0200, NULL, ccwgroup_ungroup_store);
6634 -+static DEVICE_ATTR(online, 0644, ccwgroup_online_show, ccwgroup_online_store);
6635 -+
6636 -+static struct attribute *ccwgroup_attrs[] = {
6637 -+ &dev_attr_online.attr,
6638 -+ &dev_attr_ungroup.attr,
6639 -+ NULL,
6640 -+};
6641 -+static struct attribute_group ccwgroup_attr_group = {
6642 -+ .attrs = ccwgroup_attrs,
6643 -+};
6644 -+static const struct attribute_group *ccwgroup_attr_groups[] = {
6645 -+ &ccwgroup_attr_group,
6646 -+ NULL,
6647 -+};
6648 -
6649 - static void
6650 - ccwgroup_release (struct device *dev)
6651 -@@ -293,25 +313,17 @@ int ccwgroup_create_from_string(struct device *root, unsigned int creator_id,
6652 - }
6653 -
6654 - dev_set_name(&gdev->dev, "%s", dev_name(&gdev->cdev[0]->dev));
6655 --
6656 -+ gdev->dev.groups = ccwgroup_attr_groups;
6657 - rc = device_add(&gdev->dev);
6658 - if (rc)
6659 - goto error;
6660 - get_device(&gdev->dev);
6661 -- rc = device_create_file(&gdev->dev, &dev_attr_ungroup);
6662 --
6663 -- if (rc) {
6664 -- device_unregister(&gdev->dev);
6665 -- goto error;
6666 -- }
6667 --
6668 - rc = __ccwgroup_create_symlinks(gdev);
6669 - if (!rc) {
6670 - mutex_unlock(&gdev->reg_mutex);
6671 - put_device(&gdev->dev);
6672 - return 0;
6673 - }
6674 -- device_remove_file(&gdev->dev, &dev_attr_ungroup);
6675 - device_unregister(&gdev->dev);
6676 - error:
6677 - for (i = 0; i < num_devices; i++)
6678 -@@ -423,7 +435,7 @@ ccwgroup_online_store (struct device *dev, struct device_attribute *attr, const
6679 - int ret;
6680 -
6681 - if (!dev->driver)
6682 -- return -ENODEV;
6683 -+ return -EINVAL;
6684 -
6685 - gdev = to_ccwgroupdev(dev);
6686 - gdrv = to_ccwgroupdrv(dev->driver);
6687 -@@ -456,8 +468,6 @@ ccwgroup_online_show (struct device *dev, struct device_attribute *attr, char *b
6688 - return sprintf(buf, online ? "1\n" : "0\n");
6689 - }
6690 -
6691 --static DEVICE_ATTR(online, 0644, ccwgroup_online_show, ccwgroup_online_store);
6692 --
6693 - static int
6694 - ccwgroup_probe (struct device *dev)
6695 - {
6696 -@@ -469,12 +479,7 @@ ccwgroup_probe (struct device *dev)
6697 - gdev = to_ccwgroupdev(dev);
6698 - gdrv = to_ccwgroupdrv(dev->driver);
6699 -
6700 -- if ((ret = device_create_file(dev, &dev_attr_online)))
6701 -- return ret;
6702 --
6703 - ret = gdrv->probe ? gdrv->probe(gdev) : -ENODEV;
6704 -- if (ret)
6705 -- device_remove_file(dev, &dev_attr_online);
6706 -
6707 - return ret;
6708 - }
6709 -@@ -485,9 +490,6 @@ ccwgroup_remove (struct device *dev)
6710 - struct ccwgroup_device *gdev;
6711 - struct ccwgroup_driver *gdrv;
6712 -
6713 -- device_remove_file(dev, &dev_attr_online);
6714 -- device_remove_file(dev, &dev_attr_ungroup);
6715 --
6716 - if (!dev->driver)
6717 - return 0;
6718 -
6719 -diff --git a/drivers/scsi/device_handler/scsi_dh.c b/drivers/scsi/device_handler/scsi_dh.c
6720 -index 0119b81..d973325 100644
6721 ---- a/drivers/scsi/device_handler/scsi_dh.c
6722 -+++ b/drivers/scsi/device_handler/scsi_dh.c
6723 -@@ -398,7 +398,15 @@ int scsi_dh_activate(struct request_queue *q, activate_complete fn, void *data)
6724 -
6725 - spin_lock_irqsave(q->queue_lock, flags);
6726 - sdev = q->queuedata;
6727 -- if (sdev && sdev->scsi_dh_data)
6728 -+ if (!sdev) {
6729 -+ spin_unlock_irqrestore(q->queue_lock, flags);
6730 -+ err = SCSI_DH_NOSYS;
6731 -+ if (fn)
6732 -+ fn(data, err);
6733 -+ return err;
6734 -+ }
6735 -+
6736 -+ if (sdev->scsi_dh_data)
6737 - scsi_dh = sdev->scsi_dh_data->scsi_dh;
6738 - dev = get_device(&sdev->sdev_gendev);
6739 - if (!scsi_dh || !dev ||
6740 -diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
6741 -index 4f7a582..351dc0b 100644
6742 ---- a/drivers/scsi/hosts.c
6743 -+++ b/drivers/scsi/hosts.c
6744 -@@ -286,6 +286,7 @@ static void scsi_host_dev_release(struct device *dev)
6745 - {
6746 - struct Scsi_Host *shost = dev_to_shost(dev);
6747 - struct device *parent = dev->parent;
6748 -+ struct request_queue *q;
6749 -
6750 - scsi_proc_hostdir_rm(shost->hostt);
6751 -
6752 -@@ -293,9 +294,11 @@ static void scsi_host_dev_release(struct device *dev)
6753 - kthread_stop(shost->ehandler);
6754 - if (shost->work_q)
6755 - destroy_workqueue(shost->work_q);
6756 -- if (shost->uspace_req_q) {
6757 -- kfree(shost->uspace_req_q->queuedata);
6758 -- scsi_free_queue(shost->uspace_req_q);
6759 -+ q = shost->uspace_req_q;
6760 -+ if (q) {
6761 -+ kfree(q->queuedata);
6762 -+ q->queuedata = NULL;
6763 -+ scsi_free_queue(q);
6764 - }
6765 -
6766 - scsi_destroy_command_freelist(shost);
6767 -diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
6768 -index 78c2e20..6689d5d 100644
6769 ---- a/drivers/scsi/hpsa.c
6770 -+++ b/drivers/scsi/hpsa.c
6771 -@@ -3300,6 +3300,13 @@ static int hpsa_controller_hard_reset(struct pci_dev *pdev,
6772 - pmcsr &= ~PCI_PM_CTRL_STATE_MASK;
6773 - pmcsr |= PCI_D0;
6774 - pci_write_config_word(pdev, pos + PCI_PM_CTRL, pmcsr);
6775 -+
6776 -+ /*
6777 -+ * The P600 requires a small delay when changing states.
6778 -+ * Otherwise we may think the board did not reset and we bail.
6779 -+ * This for kdump only and is particular to the P600.
6780 -+ */
6781 -+ msleep(500);
6782 - }
6783 - return 0;
6784 - }
6785 -diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
6786 -index 888086c..c5c7c3a 100644
6787 ---- a/drivers/scsi/ipr.c
6788 -+++ b/drivers/scsi/ipr.c
6789 -@@ -8812,7 +8812,7 @@ static int __devinit ipr_probe_ioa(struct pci_dev *pdev,
6790 - uproc = readl(ioa_cfg->regs.sense_uproc_interrupt_reg32);
6791 - if ((mask & IPR_PCII_HRRQ_UPDATED) == 0 || (uproc & IPR_UPROCI_RESET_ALERT))
6792 - ioa_cfg->needs_hard_reset = 1;
6793 -- if (interrupts & IPR_PCII_ERROR_INTERRUPTS)
6794 -+ if ((interrupts & IPR_PCII_ERROR_INTERRUPTS) || reset_devices)
6795 - ioa_cfg->needs_hard_reset = 1;
6796 - if (interrupts & IPR_PCII_IOA_UNIT_CHECKED)
6797 - ioa_cfg->ioa_unit_checked = 1;
6798 -diff --git a/drivers/scsi/isci/isci.h b/drivers/scsi/isci/isci.h
6799 -index d1de633..8efeb6b 100644
6800 ---- a/drivers/scsi/isci/isci.h
6801 -+++ b/drivers/scsi/isci/isci.h
6802 -@@ -97,7 +97,7 @@
6803 - #define SCU_MAX_COMPLETION_QUEUE_SHIFT (ilog2(SCU_MAX_COMPLETION_QUEUE_ENTRIES))
6804 -
6805 - #define SCU_ABSOLUTE_MAX_UNSOLICITED_FRAMES (4096)
6806 --#define SCU_UNSOLICITED_FRAME_BUFFER_SIZE (1024)
6807 -+#define SCU_UNSOLICITED_FRAME_BUFFER_SIZE (1024U)
6808 - #define SCU_INVALID_FRAME_INDEX (0xFFFF)
6809 -
6810 - #define SCU_IO_REQUEST_MAX_SGE_SIZE (0x00FFFFFF)
6811 -diff --git a/drivers/scsi/isci/port_config.c b/drivers/scsi/isci/port_config.c
6812 -index 486b113..38a99d2 100644
6813 ---- a/drivers/scsi/isci/port_config.c
6814 -+++ b/drivers/scsi/isci/port_config.c
6815 -@@ -678,7 +678,7 @@ static void apc_agent_timeout(unsigned long data)
6816 - configure_phy_mask = ~port_agent->phy_configured_mask & port_agent->phy_ready_mask;
6817 -
6818 - if (!configure_phy_mask)
6819 -- return;
6820 -+ goto done;
6821 -
6822 - for (index = 0; index < SCI_MAX_PHYS; index++) {
6823 - if ((configure_phy_mask & (1 << index)) == 0)
6824 -diff --git a/drivers/scsi/isci/request.c b/drivers/scsi/isci/request.c
6825 -index b5d3a8c..225b196 100644
6826 ---- a/drivers/scsi/isci/request.c
6827 -+++ b/drivers/scsi/isci/request.c
6828 -@@ -1490,29 +1490,30 @@ sci_io_request_frame_handler(struct isci_request *ireq,
6829 - return SCI_SUCCESS;
6830 -
6831 - case SCI_REQ_SMP_WAIT_RESP: {
6832 -- struct smp_resp *rsp_hdr = &ireq->smp.rsp;
6833 -- void *frame_header;
6834 -+ struct sas_task *task = isci_request_access_task(ireq);
6835 -+ struct scatterlist *sg = &task->smp_task.smp_resp;
6836 -+ void *frame_header, *kaddr;
6837 -+ u8 *rsp;
6838 -
6839 - sci_unsolicited_frame_control_get_header(&ihost->uf_control,
6840 -- frame_index,
6841 -- &frame_header);
6842 --
6843 -- /* byte swap the header. */
6844 -- word_cnt = SMP_RESP_HDR_SZ / sizeof(u32);
6845 -- sci_swab32_cpy(rsp_hdr, frame_header, word_cnt);
6846 -+ frame_index,
6847 -+ &frame_header);
6848 -+ kaddr = kmap_atomic(sg_page(sg), KM_IRQ0);
6849 -+ rsp = kaddr + sg->offset;
6850 -+ sci_swab32_cpy(rsp, frame_header, 1);
6851 -
6852 -- if (rsp_hdr->frame_type == SMP_RESPONSE) {
6853 -+ if (rsp[0] == SMP_RESPONSE) {
6854 - void *smp_resp;
6855 -
6856 - sci_unsolicited_frame_control_get_buffer(&ihost->uf_control,
6857 -- frame_index,
6858 -- &smp_resp);
6859 -+ frame_index,
6860 -+ &smp_resp);
6861 -
6862 -- word_cnt = (sizeof(struct smp_resp) - SMP_RESP_HDR_SZ) /
6863 -- sizeof(u32);
6864 --
6865 -- sci_swab32_cpy(((u8 *) rsp_hdr) + SMP_RESP_HDR_SZ,
6866 -- smp_resp, word_cnt);
6867 -+ word_cnt = (sg->length/4)-1;
6868 -+ if (word_cnt > 0)
6869 -+ word_cnt = min_t(unsigned int, word_cnt,
6870 -+ SCU_UNSOLICITED_FRAME_BUFFER_SIZE/4);
6871 -+ sci_swab32_cpy(rsp + 4, smp_resp, word_cnt);
6872 -
6873 - ireq->scu_status = SCU_TASK_DONE_GOOD;
6874 - ireq->sci_status = SCI_SUCCESS;
6875 -@@ -1528,12 +1529,13 @@ sci_io_request_frame_handler(struct isci_request *ireq,
6876 - __func__,
6877 - ireq,
6878 - frame_index,
6879 -- rsp_hdr->frame_type);
6880 -+ rsp[0]);
6881 -
6882 - ireq->scu_status = SCU_TASK_DONE_SMP_FRM_TYPE_ERR;
6883 - ireq->sci_status = SCI_FAILURE_CONTROLLER_SPECIFIC_IO_ERR;
6884 - sci_change_state(&ireq->sm, SCI_REQ_COMPLETED);
6885 - }
6886 -+ kunmap_atomic(kaddr, KM_IRQ0);
6887 -
6888 - sci_controller_release_frame(ihost, frame_index);
6889 -
6890 -@@ -2603,18 +2605,7 @@ static void isci_request_io_request_complete(struct isci_host *ihost,
6891 - status = SAM_STAT_GOOD;
6892 - set_bit(IREQ_COMPLETE_IN_TARGET, &request->flags);
6893 -
6894 -- if (task->task_proto == SAS_PROTOCOL_SMP) {
6895 -- void *rsp = &request->smp.rsp;
6896 --
6897 -- dev_dbg(&ihost->pdev->dev,
6898 -- "%s: SMP protocol completion\n",
6899 -- __func__);
6900 --
6901 -- sg_copy_from_buffer(
6902 -- &task->smp_task.smp_resp, 1,
6903 -- rsp, sizeof(struct smp_resp));
6904 -- } else if (completion_status
6905 -- == SCI_IO_SUCCESS_IO_DONE_EARLY) {
6906 -+ if (completion_status == SCI_IO_SUCCESS_IO_DONE_EARLY) {
6907 -
6908 - /* This was an SSP / STP / SATA transfer.
6909 - * There is a possibility that less data than
6910 -diff --git a/drivers/scsi/isci/request.h b/drivers/scsi/isci/request.h
6911 -index 7a1d5a9..58d70b6 100644
6912 ---- a/drivers/scsi/isci/request.h
6913 -+++ b/drivers/scsi/isci/request.h
6914 -@@ -174,9 +174,6 @@ struct isci_request {
6915 - };
6916 - } ssp;
6917 - struct {
6918 -- struct smp_resp rsp;
6919 -- } smp;
6920 -- struct {
6921 - struct isci_stp_request req;
6922 - struct host_to_dev_fis cmd;
6923 - struct dev_to_host_fis rsp;
6924 -diff --git a/drivers/scsi/isci/sas.h b/drivers/scsi/isci/sas.h
6925 -index 462b151..dc26b4a 100644
6926 ---- a/drivers/scsi/isci/sas.h
6927 -+++ b/drivers/scsi/isci/sas.h
6928 -@@ -204,8 +204,6 @@ struct smp_req {
6929 - u8 req_data[0];
6930 - } __packed;
6931 -
6932 --#define SMP_RESP_HDR_SZ 4
6933 --
6934 - /*
6935 - * struct sci_sas_address - This structure depicts how a SAS address is
6936 - * represented by SCI.
6937 -diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c
6938 -index 16ad97d..37cbe4d 100644
6939 ---- a/drivers/scsi/libsas/sas_expander.c
6940 -+++ b/drivers/scsi/libsas/sas_expander.c
6941 -@@ -199,6 +199,8 @@ static void sas_set_ex_phy(struct domain_device *dev, int phy_id,
6942 - phy->virtual = dr->virtual;
6943 - phy->last_da_index = -1;
6944 -
6945 -+ phy->phy->identify.sas_address = SAS_ADDR(phy->attached_sas_addr);
6946 -+ phy->phy->identify.device_type = phy->attached_dev_type;
6947 - phy->phy->identify.initiator_port_protocols = phy->attached_iproto;
6948 - phy->phy->identify.target_port_protocols = phy->attached_tproto;
6949 - phy->phy->identify.phy_identifier = phy_id;
6950 -diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
6951 -index 2d8cdce..e6e30f4 100644
6952 ---- a/drivers/scsi/megaraid/megaraid_sas_base.c
6953 -+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
6954 -@@ -1906,7 +1906,6 @@ static int megasas_generic_reset(struct scsi_cmnd *scmd)
6955 - static enum
6956 - blk_eh_timer_return megasas_reset_timer(struct scsi_cmnd *scmd)
6957 - {
6958 -- struct megasas_cmd *cmd = (struct megasas_cmd *)scmd->SCp.ptr;
6959 - struct megasas_instance *instance;
6960 - unsigned long flags;
6961 -
6962 -@@ -1915,7 +1914,7 @@ blk_eh_timer_return megasas_reset_timer(struct scsi_cmnd *scmd)
6963 - return BLK_EH_NOT_HANDLED;
6964 - }
6965 -
6966 -- instance = cmd->instance;
6967 -+ instance = (struct megasas_instance *)scmd->device->host->hostdata;
6968 - if (!(instance->flag & MEGASAS_FW_BUSY)) {
6969 - /* FW is busy, throttle IO */
6970 - spin_lock_irqsave(instance->host->host_lock, flags);
6971 -diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
6972 -index 8dc2ad4..5690f09 100644
6973 ---- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c
6974 -+++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
6975 -@@ -7318,22 +7318,27 @@ _scsih_probe_sas(struct MPT2SAS_ADAPTER *ioc)
6976 - /* SAS Device List */
6977 - list_for_each_entry_safe(sas_device, next, &ioc->sas_device_init_list,
6978 - list) {
6979 -- spin_lock_irqsave(&ioc->sas_device_lock, flags);
6980 -- list_move_tail(&sas_device->list, &ioc->sas_device_list);
6981 -- spin_unlock_irqrestore(&ioc->sas_device_lock, flags);
6982 -
6983 - if (ioc->hide_drives)
6984 - continue;
6985 -
6986 - if (!mpt2sas_transport_port_add(ioc, sas_device->handle,
6987 - sas_device->sas_address_parent)) {
6988 -- _scsih_sas_device_remove(ioc, sas_device);
6989 -+ list_del(&sas_device->list);
6990 -+ kfree(sas_device);
6991 -+ continue;
6992 - } else if (!sas_device->starget) {
6993 - mpt2sas_transport_port_remove(ioc,
6994 - sas_device->sas_address,
6995 - sas_device->sas_address_parent);
6996 -- _scsih_sas_device_remove(ioc, sas_device);
6997 -+ list_del(&sas_device->list);
6998 -+ kfree(sas_device);
6999 -+ continue;
7000 -+
7001 - }
7002 -+ spin_lock_irqsave(&ioc->sas_device_lock, flags);
7003 -+ list_move_tail(&sas_device->list, &ioc->sas_device_list);
7004 -+ spin_unlock_irqrestore(&ioc->sas_device_lock, flags);
7005 - }
7006 - }
7007 -
7008 -diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
7009 -index 28d9c9d..f97acff 100644
7010 ---- a/drivers/scsi/scsi_lib.c
7011 -+++ b/drivers/scsi/scsi_lib.c
7012 -@@ -1697,6 +1697,15 @@ struct request_queue *scsi_alloc_queue(struct scsi_device *sdev)
7013 -
7014 - void scsi_free_queue(struct request_queue *q)
7015 - {
7016 -+ unsigned long flags;
7017 -+
7018 -+ WARN_ON(q->queuedata);
7019 -+
7020 -+ /* cause scsi_request_fn() to kill all non-finished requests */
7021 -+ spin_lock_irqsave(q->queue_lock, flags);
7022 -+ q->request_fn(q);
7023 -+ spin_unlock_irqrestore(q->queue_lock, flags);
7024 -+
7025 - blk_cleanup_queue(q);
7026 - }
7027 -
7028 -diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
7029 -index 44e8ca3..72273a0 100644
7030 ---- a/drivers/scsi/scsi_scan.c
7031 -+++ b/drivers/scsi/scsi_scan.c
7032 -@@ -322,6 +322,7 @@ out_device_destroy:
7033 - scsi_device_set_state(sdev, SDEV_DEL);
7034 - transport_destroy_device(&sdev->sdev_gendev);
7035 - put_device(&sdev->sdev_dev);
7036 -+ scsi_free_queue(sdev->request_queue);
7037 - put_device(&sdev->sdev_gendev);
7038 - out:
7039 - if (display_failure_msg)
7040 -diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c
7041 -index 1871b8a..9b28f39 100644
7042 ---- a/drivers/scsi/st.c
7043 -+++ b/drivers/scsi/st.c
7044 -@@ -462,14 +462,16 @@ static void st_scsi_execute_end(struct request *req, int uptodate)
7045 - {
7046 - struct st_request *SRpnt = req->end_io_data;
7047 - struct scsi_tape *STp = SRpnt->stp;
7048 -+ struct bio *tmp;
7049 -
7050 - STp->buffer->cmdstat.midlevel_result = SRpnt->result = req->errors;
7051 - STp->buffer->cmdstat.residual = req->resid_len;
7052 -
7053 -+ tmp = SRpnt->bio;
7054 - if (SRpnt->waiting)
7055 - complete(SRpnt->waiting);
7056 -
7057 -- blk_rq_unmap_user(SRpnt->bio);
7058 -+ blk_rq_unmap_user(tmp);
7059 - __blk_put_request(req->q, req);
7060 - }
7061 -
7062 -diff --git a/drivers/staging/hv/hyperv_storage.h b/drivers/staging/hv/hyperv_storage.h
7063 -index a01f9a0..5af82f4 100644
7064 ---- a/drivers/staging/hv/hyperv_storage.h
7065 -+++ b/drivers/staging/hv/hyperv_storage.h
7066 -@@ -218,6 +218,7 @@ struct vstor_packet {
7067 - #define STORVSC_MAX_LUNS_PER_TARGET 64
7068 - #define STORVSC_MAX_TARGETS 1
7069 - #define STORVSC_MAX_CHANNELS 1
7070 -+#define STORVSC_MAX_CMD_LEN 16
7071 -
7072 - struct hv_storvsc_request;
7073 -
7074 -diff --git a/drivers/staging/hv/storvsc_drv.c b/drivers/staging/hv/storvsc_drv.c
7075 -index cb4a25b..734076b 100644
7076 ---- a/drivers/staging/hv/storvsc_drv.c
7077 -+++ b/drivers/staging/hv/storvsc_drv.c
7078 -@@ -729,6 +729,8 @@ static int storvsc_probe(struct hv_device *device)
7079 - host->max_id = STORVSC_MAX_TARGETS;
7080 - /* max # of channels */
7081 - host->max_channel = STORVSC_MAX_CHANNELS - 1;
7082 -+ /* max cmd length */
7083 -+ host->max_cmd_len = STORVSC_MAX_CMD_LEN;
7084 -
7085 - /* Register the HBA and start the scsi bus scan */
7086 - ret = scsi_add_host(host, &device->device);
7087 -diff --git a/drivers/staging/quatech_usb2/quatech_usb2.c b/drivers/staging/quatech_usb2/quatech_usb2.c
7088 -index ca098ca..02fafec 100644
7089 ---- a/drivers/staging/quatech_usb2/quatech_usb2.c
7090 -+++ b/drivers/staging/quatech_usb2/quatech_usb2.c
7091 -@@ -916,9 +916,10 @@ static int qt2_ioctl(struct tty_struct *tty,
7092 - dbg("%s() port %d, cmd == TIOCMIWAIT enter",
7093 - __func__, port->number);
7094 - prev_msr_value = port_extra->shadowMSR & QT2_SERIAL_MSR_MASK;
7095 -+ barrier();
7096 -+ __set_current_state(TASK_INTERRUPTIBLE);
7097 - while (1) {
7098 - add_wait_queue(&port_extra->wait, &wait);
7099 -- set_current_state(TASK_INTERRUPTIBLE);
7100 - schedule();
7101 - dbg("%s(): port %d, cmd == TIOCMIWAIT here\n",
7102 - __func__, port->number);
7103 -@@ -926,9 +927,12 @@ static int qt2_ioctl(struct tty_struct *tty,
7104 - /* see if a signal woke us up */
7105 - if (signal_pending(current))
7106 - return -ERESTARTSYS;
7107 -+ set_current_state(TASK_INTERRUPTIBLE);
7108 - msr_value = port_extra->shadowMSR & QT2_SERIAL_MSR_MASK;
7109 -- if (msr_value == prev_msr_value)
7110 -+ if (msr_value == prev_msr_value) {
7111 -+ __set_current_state(TASK_RUNNING);
7112 - return -EIO; /* no change - error */
7113 -+ }
7114 - if ((arg & TIOCM_RNG &&
7115 - ((prev_msr_value & QT2_SERIAL_MSR_RI) ==
7116 - (msr_value & QT2_SERIAL_MSR_RI))) ||
7117 -@@ -941,6 +945,7 @@ static int qt2_ioctl(struct tty_struct *tty,
7118 - (arg & TIOCM_CTS &&
7119 - ((prev_msr_value & QT2_SERIAL_MSR_CTS) ==
7120 - (msr_value & QT2_SERIAL_MSR_CTS)))) {
7121 -+ __set_current_state(TASK_RUNNING);
7122 - return 0;
7123 - }
7124 - } /* end inifinite while */
7125 -diff --git a/drivers/staging/serqt_usb2/serqt_usb2.c b/drivers/staging/serqt_usb2/serqt_usb2.c
7126 -index 12f5eba..48aa61e 100644
7127 ---- a/drivers/staging/serqt_usb2/serqt_usb2.c
7128 -+++ b/drivers/staging/serqt_usb2/serqt_usb2.c
7129 -@@ -24,7 +24,6 @@ static int debug;
7130 - #define DRIVER_DESC "Quatech USB to Serial Driver"
7131 -
7132 - #define USB_VENDOR_ID_QUATECH 0x061d /* Quatech VID */
7133 --#define QUATECH_SSU100 0xC020 /* SSU100 */
7134 - #define QUATECH_SSU200 0xC030 /* SSU200 */
7135 - #define QUATECH_DSU100 0xC040 /* DSU100 */
7136 - #define QUATECH_DSU200 0xC050 /* DSU200 */
7137 -@@ -127,7 +126,6 @@ static int debug;
7138 - #define RS232_MODE 0x00
7139 -
7140 - static const struct usb_device_id serqt_id_table[] = {
7141 -- {USB_DEVICE(USB_VENDOR_ID_QUATECH, QUATECH_SSU100)},
7142 - {USB_DEVICE(USB_VENDOR_ID_QUATECH, QUATECH_SSU200)},
7143 - {USB_DEVICE(USB_VENDOR_ID_QUATECH, QUATECH_DSU100)},
7144 - {USB_DEVICE(USB_VENDOR_ID_QUATECH, QUATECH_DSU200)},
7145 -@@ -775,7 +773,6 @@ static int qt_startup(struct usb_serial *serial)
7146 - }
7147 -
7148 - switch (serial->dev->descriptor.idProduct) {
7149 -- case QUATECH_SSU100:
7150 - case QUATECH_DSU100:
7151 - case QUATECH_QSU100:
7152 - case QUATECH_ESU100A:
7153 -diff --git a/drivers/target/loopback/tcm_loop.c b/drivers/target/loopback/tcm_loop.c
7154 -index 70c2e7f..4b5421b 100644
7155 ---- a/drivers/target/loopback/tcm_loop.c
7156 -+++ b/drivers/target/loopback/tcm_loop.c
7157 -@@ -127,6 +127,24 @@ static struct se_cmd *tcm_loop_allocate_core_cmd(
7158 - set_host_byte(sc, DID_NO_CONNECT);
7159 - return NULL;
7160 - }
7161 -+ /*
7162 -+ * Because some userspace code via scsi-generic do not memset their
7163 -+ * associated read buffers, go ahead and do that here for type
7164 -+ * SCF_SCSI_CONTROL_SG_IO_CDB. Also note that this is currently
7165 -+ * guaranteed to be a single SGL for SCF_SCSI_CONTROL_SG_IO_CDB
7166 -+ * by target core in transport_generic_allocate_tasks() ->
7167 -+ * transport_generic_cmd_sequencer().
7168 -+ */
7169 -+ if (se_cmd->se_cmd_flags & SCF_SCSI_CONTROL_SG_IO_CDB &&
7170 -+ se_cmd->data_direction == DMA_FROM_DEVICE) {
7171 -+ struct scatterlist *sg = scsi_sglist(sc);
7172 -+ unsigned char *buf = kmap(sg_page(sg)) + sg->offset;
7173 -+
7174 -+ if (buf != NULL) {
7175 -+ memset(buf, 0, sg->length);
7176 -+ kunmap(sg_page(sg));
7177 -+ }
7178 -+ }
7179 -
7180 - transport_device_setup_cmd(se_cmd);
7181 - return se_cmd;
7182 -diff --git a/drivers/target/target_core_alua.c b/drivers/target/target_core_alua.c
7183 -index 47abb42..86b3660 100644
7184 ---- a/drivers/target/target_core_alua.c
7185 -+++ b/drivers/target/target_core_alua.c
7186 -@@ -60,11 +60,31 @@ int core_emulate_report_target_port_groups(struct se_cmd *cmd)
7187 - unsigned char *buf = (unsigned char *)T_TASK(cmd)->t_task_buf;
7188 - u32 rd_len = 0, off = 4; /* Skip over RESERVED area to first
7189 - Target port group descriptor */
7190 -+ /*
7191 -+ * Need at least 4 bytes of response data or else we can't
7192 -+ * even fit the return data length.
7193 -+ */
7194 -+ if (cmd->data_length < 4) {
7195 -+ pr_warn("REPORT TARGET PORT GROUPS allocation length %u"
7196 -+ " too small\n", cmd->data_length);
7197 -+ return -EINVAL;
7198 -+ }
7199 -
7200 - spin_lock(&T10_ALUA(su_dev)->tg_pt_gps_lock);
7201 - list_for_each_entry(tg_pt_gp, &T10_ALUA(su_dev)->tg_pt_gps_list,
7202 - tg_pt_gp_list) {
7203 - /*
7204 -+ * Check if the Target port group and Target port descriptor list
7205 -+ * based on tg_pt_gp_members count will fit into the response payload.
7206 -+ * Otherwise, bump rd_len to let the initiator know we have exceeded
7207 -+ * the allocation length and the response is truncated.
7208 -+ */
7209 -+ if ((off + 8 + (tg_pt_gp->tg_pt_gp_members * 4)) >
7210 -+ cmd->data_length) {
7211 -+ rd_len += 8 + (tg_pt_gp->tg_pt_gp_members * 4);
7212 -+ continue;
7213 -+ }
7214 -+ /*
7215 - * PREF: Preferred target port bit, determine if this
7216 - * bit should be set for port group.
7217 - */
7218 -diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c
7219 -index e809e9d..e18604b 100644
7220 ---- a/drivers/tty/pty.c
7221 -+++ b/drivers/tty/pty.c
7222 -@@ -670,12 +670,18 @@ static int ptmx_open(struct inode *inode, struct file *filp)
7223 -
7224 - nonseekable_open(inode, filp);
7225 -
7226 -+ retval = tty_alloc_file(filp);
7227 -+ if (retval)
7228 -+ return retval;
7229 -+
7230 - /* find a device that is not in use. */
7231 - tty_lock();
7232 - index = devpts_new_index(inode);
7233 - tty_unlock();
7234 -- if (index < 0)
7235 -- return index;
7236 -+ if (index < 0) {
7237 -+ retval = index;
7238 -+ goto err_file;
7239 -+ }
7240 -
7241 - mutex_lock(&tty_mutex);
7242 - tty_lock();
7243 -@@ -689,27 +695,27 @@ static int ptmx_open(struct inode *inode, struct file *filp)
7244 -
7245 - set_bit(TTY_PTY_LOCK, &tty->flags); /* LOCK THE SLAVE */
7246 -
7247 -- retval = tty_add_file(tty, filp);
7248 -- if (retval)
7249 -- goto out;
7250 -+ tty_add_file(tty, filp);
7251 -
7252 - retval = devpts_pty_new(inode, tty->link);
7253 - if (retval)
7254 -- goto out1;
7255 -+ goto err_release;
7256 -
7257 - retval = ptm_driver->ops->open(tty, filp);
7258 - if (retval)
7259 -- goto out2;
7260 --out1:
7261 -+ goto err_release;
7262 -+
7263 - tty_unlock();
7264 -- return retval;
7265 --out2:
7266 -+ return 0;
7267 -+err_release:
7268 - tty_unlock();
7269 - tty_release(inode, filp);
7270 - return retval;
7271 - out:
7272 - devpts_kill_index(inode, index);
7273 - tty_unlock();
7274 -+err_file:
7275 -+ tty_free_file(filp);
7276 - return retval;
7277 - }
7278 -
7279 -diff --git a/drivers/tty/serial/crisv10.c b/drivers/tty/serial/crisv10.c
7280 -index 225123b..58be715 100644
7281 ---- a/drivers/tty/serial/crisv10.c
7282 -+++ b/drivers/tty/serial/crisv10.c
7283 -@@ -4450,7 +4450,7 @@ static int __init rs_init(void)
7284 -
7285 - #if defined(CONFIG_ETRAX_RS485)
7286 - #if defined(CONFIG_ETRAX_RS485_ON_PA)
7287 -- if (cris_io_interface_allocate_pins(if_ser0, 'a', rs485_pa_bit,
7288 -+ if (cris_io_interface_allocate_pins(if_serial_0, 'a', rs485_pa_bit,
7289 - rs485_pa_bit)) {
7290 - printk(KERN_CRIT "ETRAX100LX serial: Could not allocate "
7291 - "RS485 pin\n");
7292 -@@ -4459,7 +4459,7 @@ static int __init rs_init(void)
7293 - }
7294 - #endif
7295 - #if defined(CONFIG_ETRAX_RS485_ON_PORT_G)
7296 -- if (cris_io_interface_allocate_pins(if_ser0, 'g', rs485_pa_bit,
7297 -+ if (cris_io_interface_allocate_pins(if_serial_0, 'g', rs485_pa_bit,
7298 - rs485_port_g_bit)) {
7299 - printk(KERN_CRIT "ETRAX100LX serial: Could not allocate "
7300 - "RS485 pin\n");
7301 -diff --git a/drivers/tty/serial/jsm/jsm.h b/drivers/tty/serial/jsm/jsm.h
7302 -index b704c8c..5b837e7 100644
7303 ---- a/drivers/tty/serial/jsm/jsm.h
7304 -+++ b/drivers/tty/serial/jsm/jsm.h
7305 -@@ -183,10 +183,8 @@ struct jsm_board
7306 - /* Our Read/Error/Write queue sizes */
7307 - #define RQUEUEMASK 0x1FFF /* 8 K - 1 */
7308 - #define EQUEUEMASK 0x1FFF /* 8 K - 1 */
7309 --#define WQUEUEMASK 0x0FFF /* 4 K - 1 */
7310 - #define RQUEUESIZE (RQUEUEMASK + 1)
7311 - #define EQUEUESIZE RQUEUESIZE
7312 --#define WQUEUESIZE (WQUEUEMASK + 1)
7313 -
7314 -
7315 - /************************************************************************
7316 -@@ -226,10 +224,6 @@ struct jsm_channel {
7317 - u16 ch_e_head; /* Head location of the error queue */
7318 - u16 ch_e_tail; /* Tail location of the error queue */
7319 -
7320 -- u8 *ch_wqueue; /* Our write queue buffer - malloc'ed */
7321 -- u16 ch_w_head; /* Head location of the write queue */
7322 -- u16 ch_w_tail; /* Tail location of the write queue */
7323 --
7324 - u64 ch_rxcount; /* total of data received so far */
7325 - u64 ch_txcount; /* total of data transmitted so far */
7326 -
7327 -@@ -378,7 +372,6 @@ extern int jsm_debug;
7328 - * Prototypes for non-static functions used in more than one module
7329 - *
7330 - *************************************************************************/
7331 --int jsm_tty_write(struct uart_port *port);
7332 - int jsm_tty_init(struct jsm_board *);
7333 - int jsm_uart_port_init(struct jsm_board *);
7334 - int jsm_remove_uart_port(struct jsm_board *);
7335 -diff --git a/drivers/tty/serial/jsm/jsm_driver.c b/drivers/tty/serial/jsm/jsm_driver.c
7336 -index 96da178..2aaafa9 100644
7337 ---- a/drivers/tty/serial/jsm/jsm_driver.c
7338 -+++ b/drivers/tty/serial/jsm/jsm_driver.c
7339 -@@ -211,7 +211,6 @@ static void __devexit jsm_remove_one(struct pci_dev *pdev)
7340 - if (brd->channels[i]) {
7341 - kfree(brd->channels[i]->ch_rqueue);
7342 - kfree(brd->channels[i]->ch_equeue);
7343 -- kfree(brd->channels[i]->ch_wqueue);
7344 - kfree(brd->channels[i]);
7345 - }
7346 - }
7347 -diff --git a/drivers/tty/serial/jsm/jsm_neo.c b/drivers/tty/serial/jsm/jsm_neo.c
7348 -index 4538c3e..bd6e846 100644
7349 ---- a/drivers/tty/serial/jsm/jsm_neo.c
7350 -+++ b/drivers/tty/serial/jsm/jsm_neo.c
7351 -@@ -496,12 +496,15 @@ static void neo_copy_data_from_queue_to_uart(struct jsm_channel *ch)
7352 - int s;
7353 - int qlen;
7354 - u32 len_written = 0;
7355 -+ struct circ_buf *circ;
7356 -
7357 - if (!ch)
7358 - return;
7359 -
7360 -+ circ = &ch->uart_port.state->xmit;
7361 -+
7362 - /* No data to write to the UART */
7363 -- if (ch->ch_w_tail == ch->ch_w_head)
7364 -+ if (uart_circ_empty(circ))
7365 - return;
7366 -
7367 - /* If port is "stopped", don't send any data to the UART */
7368 -@@ -517,11 +520,10 @@ static void neo_copy_data_from_queue_to_uart(struct jsm_channel *ch)
7369 - if (ch->ch_cached_lsr & UART_LSR_THRE) {
7370 - ch->ch_cached_lsr &= ~(UART_LSR_THRE);
7371 -
7372 -- writeb(ch->ch_wqueue[ch->ch_w_tail], &ch->ch_neo_uart->txrx);
7373 -+ writeb(circ->buf[circ->tail], &ch->ch_neo_uart->txrx);
7374 - jsm_printk(WRITE, INFO, &ch->ch_bd->pci_dev,
7375 -- "Tx data: %x\n", ch->ch_wqueue[ch->ch_w_head]);
7376 -- ch->ch_w_tail++;
7377 -- ch->ch_w_tail &= WQUEUEMASK;
7378 -+ "Tx data: %x\n", circ->buf[circ->head]);
7379 -+ circ->tail = (circ->tail + 1) & (UART_XMIT_SIZE - 1);
7380 - ch->ch_txcount++;
7381 - }
7382 - return;
7383 -@@ -536,36 +538,36 @@ static void neo_copy_data_from_queue_to_uart(struct jsm_channel *ch)
7384 - n = UART_17158_TX_FIFOSIZE - ch->ch_t_tlevel;
7385 -
7386 - /* cache head and tail of queue */
7387 -- head = ch->ch_w_head & WQUEUEMASK;
7388 -- tail = ch->ch_w_tail & WQUEUEMASK;
7389 -- qlen = (head - tail) & WQUEUEMASK;
7390 -+ head = circ->head & (UART_XMIT_SIZE - 1);
7391 -+ tail = circ->tail & (UART_XMIT_SIZE - 1);
7392 -+ qlen = uart_circ_chars_pending(circ);
7393 -
7394 - /* Find minimum of the FIFO space, versus queue length */
7395 - n = min(n, qlen);
7396 -
7397 - while (n > 0) {
7398 -
7399 -- s = ((head >= tail) ? head : WQUEUESIZE) - tail;
7400 -+ s = ((head >= tail) ? head : UART_XMIT_SIZE) - tail;
7401 - s = min(s, n);
7402 -
7403 - if (s <= 0)
7404 - break;
7405 -
7406 -- memcpy_toio(&ch->ch_neo_uart->txrxburst, ch->ch_wqueue + tail, s);
7407 -+ memcpy_toio(&ch->ch_neo_uart->txrxburst, circ->buf + tail, s);
7408 - /* Add and flip queue if needed */
7409 -- tail = (tail + s) & WQUEUEMASK;
7410 -+ tail = (tail + s) & (UART_XMIT_SIZE - 1);
7411 - n -= s;
7412 - ch->ch_txcount += s;
7413 - len_written += s;
7414 - }
7415 -
7416 - /* Update the final tail */
7417 -- ch->ch_w_tail = tail & WQUEUEMASK;
7418 -+ circ->tail = tail & (UART_XMIT_SIZE - 1);
7419 -
7420 - if (len_written >= ch->ch_t_tlevel)
7421 - ch->ch_flags &= ~(CH_TX_FIFO_EMPTY | CH_TX_FIFO_LWM);
7422 -
7423 -- if (!jsm_tty_write(&ch->uart_port))
7424 -+ if (uart_circ_empty(circ))
7425 - uart_write_wakeup(&ch->uart_port);
7426 - }
7427 -
7428 -@@ -946,7 +948,6 @@ static void neo_param(struct jsm_channel *ch)
7429 - if ((ch->ch_c_cflag & (CBAUD)) == 0) {
7430 - ch->ch_r_head = ch->ch_r_tail = 0;
7431 - ch->ch_e_head = ch->ch_e_tail = 0;
7432 -- ch->ch_w_head = ch->ch_w_tail = 0;
7433 -
7434 - neo_flush_uart_write(ch);
7435 - neo_flush_uart_read(ch);
7436 -diff --git a/drivers/tty/serial/jsm/jsm_tty.c b/drivers/tty/serial/jsm/jsm_tty.c
7437 -index 7a4a914..434bd88 100644
7438 ---- a/drivers/tty/serial/jsm/jsm_tty.c
7439 -+++ b/drivers/tty/serial/jsm/jsm_tty.c
7440 -@@ -118,6 +118,19 @@ static void jsm_tty_set_mctrl(struct uart_port *port, unsigned int mctrl)
7441 - udelay(10);
7442 - }
7443 -
7444 -+/*
7445 -+ * jsm_tty_write()
7446 -+ *
7447 -+ * Take data from the user or kernel and send it out to the FEP.
7448 -+ * In here exists all the Transparent Print magic as well.
7449 -+ */
7450 -+static void jsm_tty_write(struct uart_port *port)
7451 -+{
7452 -+ struct jsm_channel *channel;
7453 -+ channel = container_of(port, struct jsm_channel, uart_port);
7454 -+ channel->ch_bd->bd_ops->copy_data_from_queue_to_uart(channel);
7455 -+}
7456 -+
7457 - static void jsm_tty_start_tx(struct uart_port *port)
7458 - {
7459 - struct jsm_channel *channel = (struct jsm_channel *)port;
7460 -@@ -216,14 +229,6 @@ static int jsm_tty_open(struct uart_port *port)
7461 - return -ENOMEM;
7462 - }
7463 - }
7464 -- if (!channel->ch_wqueue) {
7465 -- channel->ch_wqueue = kzalloc(WQUEUESIZE, GFP_KERNEL);
7466 -- if (!channel->ch_wqueue) {
7467 -- jsm_printk(INIT, ERR, &channel->ch_bd->pci_dev,
7468 -- "unable to allocate write queue buf");
7469 -- return -ENOMEM;
7470 -- }
7471 -- }
7472 -
7473 - channel->ch_flags &= ~(CH_OPENING);
7474 - /*
7475 -@@ -237,7 +242,6 @@ static int jsm_tty_open(struct uart_port *port)
7476 - */
7477 - channel->ch_r_head = channel->ch_r_tail = 0;
7478 - channel->ch_e_head = channel->ch_e_tail = 0;
7479 -- channel->ch_w_head = channel->ch_w_tail = 0;
7480 -
7481 - brd->bd_ops->flush_uart_write(channel);
7482 - brd->bd_ops->flush_uart_read(channel);
7483 -@@ -836,75 +840,3 @@ void jsm_check_queue_flow_control(struct jsm_channel *ch)
7484 - }
7485 - }
7486 - }
7487 --
7488 --/*
7489 -- * jsm_tty_write()
7490 -- *
7491 -- * Take data from the user or kernel and send it out to the FEP.
7492 -- * In here exists all the Transparent Print magic as well.
7493 -- */
7494 --int jsm_tty_write(struct uart_port *port)
7495 --{
7496 -- int bufcount;
7497 -- int data_count = 0,data_count1 =0;
7498 -- u16 head;
7499 -- u16 tail;
7500 -- u16 tmask;
7501 -- u32 remain;
7502 -- int temp_tail = port->state->xmit.tail;
7503 -- struct jsm_channel *channel = (struct jsm_channel *)port;
7504 --
7505 -- tmask = WQUEUEMASK;
7506 -- head = (channel->ch_w_head) & tmask;
7507 -- tail = (channel->ch_w_tail) & tmask;
7508 --
7509 -- if ((bufcount = tail - head - 1) < 0)
7510 -- bufcount += WQUEUESIZE;
7511 --
7512 -- bufcount = min(bufcount, 56);
7513 -- remain = WQUEUESIZE - head;
7514 --
7515 -- data_count = 0;
7516 -- if (bufcount >= remain) {
7517 -- bufcount -= remain;
7518 -- while ((port->state->xmit.head != temp_tail) &&
7519 -- (data_count < remain)) {
7520 -- channel->ch_wqueue[head++] =
7521 -- port->state->xmit.buf[temp_tail];
7522 --
7523 -- temp_tail++;
7524 -- temp_tail &= (UART_XMIT_SIZE - 1);
7525 -- data_count++;
7526 -- }
7527 -- if (data_count == remain) head = 0;
7528 -- }
7529 --
7530 -- data_count1 = 0;
7531 -- if (bufcount > 0) {
7532 -- remain = bufcount;
7533 -- while ((port->state->xmit.head != temp_tail) &&
7534 -- (data_count1 < remain)) {
7535 -- channel->ch_wqueue[head++] =
7536 -- port->state->xmit.buf[temp_tail];
7537 --
7538 -- temp_tail++;
7539 -- temp_tail &= (UART_XMIT_SIZE - 1);
7540 -- data_count1++;
7541 --
7542 -- }
7543 -- }
7544 --
7545 -- port->state->xmit.tail = temp_tail;
7546 --
7547 -- data_count += data_count1;
7548 -- if (data_count) {
7549 -- head &= tmask;
7550 -- channel->ch_w_head = head;
7551 -- }
7552 --
7553 -- if (data_count) {
7554 -- channel->ch_bd->bd_ops->copy_data_from_queue_to_uart(channel);
7555 -- }
7556 --
7557 -- return data_count;
7558 --}
7559 -diff --git a/drivers/tty/serial/pxa.c b/drivers/tty/serial/pxa.c
7560 -index 4302e6e..81243a6 100644
7561 ---- a/drivers/tty/serial/pxa.c
7562 -+++ b/drivers/tty/serial/pxa.c
7563 -@@ -100,6 +100,16 @@ static inline void receive_chars(struct uart_pxa_port *up, int *status)
7564 - int max_count = 256;
7565 -
7566 - do {
7567 -+ /* work around Errata #20 according to
7568 -+ * Intel(R) PXA27x Processor Family
7569 -+ * Specification Update (May 2005)
7570 -+ *
7571 -+ * Step 2
7572 -+ * Disable the Reciever Time Out Interrupt via IER[RTOEI]
7573 -+ */
7574 -+ up->ier &= ~UART_IER_RTOIE;
7575 -+ serial_out(up, UART_IER, up->ier);
7576 -+
7577 - ch = serial_in(up, UART_RX);
7578 - flag = TTY_NORMAL;
7579 - up->port.icount.rx++;
7580 -@@ -156,6 +166,16 @@ static inline void receive_chars(struct uart_pxa_port *up, int *status)
7581 - *status = serial_in(up, UART_LSR);
7582 - } while ((*status & UART_LSR_DR) && (max_count-- > 0));
7583 - tty_flip_buffer_push(tty);
7584 -+
7585 -+ /* work around Errata #20 according to
7586 -+ * Intel(R) PXA27x Processor Family
7587 -+ * Specification Update (May 2005)
7588 -+ *
7589 -+ * Step 6:
7590 -+ * No more data in FIFO: Re-enable RTO interrupt via IER[RTOIE]
7591 -+ */
7592 -+ up->ier |= UART_IER_RTOIE;
7593 -+ serial_out(up, UART_IER, up->ier);
7594 - }
7595 -
7596 - static void transmit_chars(struct uart_pxa_port *up)
7597 -diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
7598 -index db7912c..6bc20d7 100644
7599 ---- a/drivers/tty/serial/serial_core.c
7600 -+++ b/drivers/tty/serial/serial_core.c
7601 -@@ -2003,6 +2003,8 @@ int uart_resume_port(struct uart_driver *drv, struct uart_port *uport)
7602 - if (port->tty && port->tty->termios && termios.c_cflag == 0)
7603 - termios = *(port->tty->termios);
7604 -
7605 -+ if (console_suspend_enabled)
7606 -+ uart_change_pm(state, 0);
7607 - uport->ops->set_termios(uport, &termios, NULL);
7608 - if (console_suspend_enabled)
7609 - console_start(uport->cons);
7610 -diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
7611 -index b6f92d3..b44aef0 100644
7612 ---- a/drivers/tty/tty_io.c
7613 -+++ b/drivers/tty/tty_io.c
7614 -@@ -193,8 +193,7 @@ static inline struct tty_struct *file_tty(struct file *file)
7615 - return ((struct tty_file_private *)file->private_data)->tty;
7616 - }
7617 -
7618 --/* Associate a new file with the tty structure */
7619 --int tty_add_file(struct tty_struct *tty, struct file *file)
7620 -+int tty_alloc_file(struct file *file)
7621 - {
7622 - struct tty_file_private *priv;
7623 -
7624 -@@ -202,15 +201,36 @@ int tty_add_file(struct tty_struct *tty, struct file *file)
7625 - if (!priv)
7626 - return -ENOMEM;
7627 -
7628 -+ file->private_data = priv;
7629 -+
7630 -+ return 0;
7631 -+}
7632 -+
7633 -+/* Associate a new file with the tty structure */
7634 -+void tty_add_file(struct tty_struct *tty, struct file *file)
7635 -+{
7636 -+ struct tty_file_private *priv = file->private_data;
7637 -+
7638 - priv->tty = tty;
7639 - priv->file = file;
7640 -- file->private_data = priv;
7641 -
7642 - spin_lock(&tty_files_lock);
7643 - list_add(&priv->list, &tty->tty_files);
7644 - spin_unlock(&tty_files_lock);
7645 -+}
7646 -
7647 -- return 0;
7648 -+/**
7649 -+ * tty_free_file - free file->private_data
7650 -+ *
7651 -+ * This shall be used only for fail path handling when tty_add_file was not
7652 -+ * called yet.
7653 -+ */
7654 -+void tty_free_file(struct file *file)
7655 -+{
7656 -+ struct tty_file_private *priv = file->private_data;
7657 -+
7658 -+ file->private_data = NULL;
7659 -+ kfree(priv);
7660 - }
7661 -
7662 - /* Delete file from its tty */
7663 -@@ -221,8 +241,7 @@ void tty_del_file(struct file *file)
7664 - spin_lock(&tty_files_lock);
7665 - list_del(&priv->list);
7666 - spin_unlock(&tty_files_lock);
7667 -- file->private_data = NULL;
7668 -- kfree(priv);
7669 -+ tty_free_file(file);
7670 - }
7671 -
7672 -
7673 -@@ -1811,6 +1830,10 @@ static int tty_open(struct inode *inode, struct file *filp)
7674 - nonseekable_open(inode, filp);
7675 -
7676 - retry_open:
7677 -+ retval = tty_alloc_file(filp);
7678 -+ if (retval)
7679 -+ return -ENOMEM;
7680 -+
7681 - noctty = filp->f_flags & O_NOCTTY;
7682 - index = -1;
7683 - retval = 0;
7684 -@@ -1823,6 +1846,7 @@ retry_open:
7685 - if (!tty) {
7686 - tty_unlock();
7687 - mutex_unlock(&tty_mutex);
7688 -+ tty_free_file(filp);
7689 - return -ENXIO;
7690 - }
7691 - driver = tty_driver_kref_get(tty->driver);
7692 -@@ -1855,6 +1879,7 @@ retry_open:
7693 - }
7694 - tty_unlock();
7695 - mutex_unlock(&tty_mutex);
7696 -+ tty_free_file(filp);
7697 - return -ENODEV;
7698 - }
7699 -
7700 -@@ -1862,6 +1887,7 @@ retry_open:
7701 - if (!driver) {
7702 - tty_unlock();
7703 - mutex_unlock(&tty_mutex);
7704 -+ tty_free_file(filp);
7705 - return -ENODEV;
7706 - }
7707 - got_driver:
7708 -@@ -1872,6 +1898,8 @@ got_driver:
7709 - if (IS_ERR(tty)) {
7710 - tty_unlock();
7711 - mutex_unlock(&tty_mutex);
7712 -+ tty_driver_kref_put(driver);
7713 -+ tty_free_file(filp);
7714 - return PTR_ERR(tty);
7715 - }
7716 - }
7717 -@@ -1887,15 +1915,11 @@ got_driver:
7718 - tty_driver_kref_put(driver);
7719 - if (IS_ERR(tty)) {
7720 - tty_unlock();
7721 -+ tty_free_file(filp);
7722 - return PTR_ERR(tty);
7723 - }
7724 -
7725 -- retval = tty_add_file(tty, filp);
7726 -- if (retval) {
7727 -- tty_unlock();
7728 -- tty_release(inode, filp);
7729 -- return retval;
7730 -- }
7731 -+ tty_add_file(tty, filp);
7732 -
7733 - check_tty_count(tty, "tty_open");
7734 - if (tty->driver->type == TTY_DRIVER_TYPE_PTY &&
7735 -diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
7736 -index dac7676..5112f57 100644
7737 ---- a/drivers/usb/class/cdc-acm.c
7738 -+++ b/drivers/usb/class/cdc-acm.c
7739 -@@ -1534,6 +1534,9 @@ static const struct usb_device_id acm_ids[] = {
7740 - { NOKIA_PCSUITE_ACM_INFO(0x03cd), }, /* Nokia C7 */
7741 - { SAMSUNG_PCSUITE_ACM_INFO(0x6651), }, /* Samsung GTi8510 (INNOV8) */
7742 -
7743 -+ /* Support for Owen devices */
7744 -+ { USB_DEVICE(0x03eb, 0x0030), }, /* Owen SI30 */
7745 -+
7746 - /* NOTE: non-Nokia COMM/ACM/0xff is likely MSFT RNDIS... NOT a modem! */
7747 -
7748 - /* Support Lego NXT using pbLua firmware */
7749 -diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
7750 -index 37518df..0ca54e2 100644
7751 ---- a/drivers/usb/core/devio.c
7752 -+++ b/drivers/usb/core/devio.c
7753 -@@ -407,7 +407,7 @@ static void async_completed(struct urb *urb)
7754 - sinfo.si_errno = as->status;
7755 - sinfo.si_code = SI_ASYNCIO;
7756 - sinfo.si_addr = as->userurb;
7757 -- pid = as->pid;
7758 -+ pid = get_pid(as->pid);
7759 - uid = as->uid;
7760 - euid = as->euid;
7761 - secid = as->secid;
7762 -@@ -422,9 +422,11 @@ static void async_completed(struct urb *urb)
7763 - cancel_bulk_urbs(ps, as->bulk_addr);
7764 - spin_unlock(&ps->lock);
7765 -
7766 -- if (signr)
7767 -+ if (signr) {
7768 - kill_pid_info_as_uid(sinfo.si_signo, &sinfo, pid, uid,
7769 - euid, secid);
7770 -+ put_pid(pid);
7771 -+ }
7772 -
7773 - wake_up(&ps->wait);
7774 - }
7775 -@@ -607,9 +609,10 @@ static int findintfep(struct usb_device *dev, unsigned int ep)
7776 - }
7777 -
7778 - static int check_ctrlrecip(struct dev_state *ps, unsigned int requesttype,
7779 -- unsigned int index)
7780 -+ unsigned int request, unsigned int index)
7781 - {
7782 - int ret = 0;
7783 -+ struct usb_host_interface *alt_setting;
7784 -
7785 - if (ps->dev->state != USB_STATE_UNAUTHENTICATED
7786 - && ps->dev->state != USB_STATE_ADDRESS
7787 -@@ -618,6 +621,19 @@ static int check_ctrlrecip(struct dev_state *ps, unsigned int requesttype,
7788 - if (USB_TYPE_VENDOR == (USB_TYPE_MASK & requesttype))
7789 - return 0;
7790 -
7791 -+ /*
7792 -+ * check for the special corner case 'get_device_id' in the printer
7793 -+ * class specification, where wIndex is (interface << 8 | altsetting)
7794 -+ * instead of just interface
7795 -+ */
7796 -+ if (requesttype == 0xa1 && request == 0) {
7797 -+ alt_setting = usb_find_alt_setting(ps->dev->actconfig,
7798 -+ index >> 8, index & 0xff);
7799 -+ if (alt_setting
7800 -+ && alt_setting->desc.bInterfaceClass == USB_CLASS_PRINTER)
7801 -+ index >>= 8;
7802 -+ }
7803 -+
7804 - index &= 0xff;
7805 - switch (requesttype & USB_RECIP_MASK) {
7806 - case USB_RECIP_ENDPOINT:
7807 -@@ -770,7 +786,8 @@ static int proc_control(struct dev_state *ps, void __user *arg)
7808 -
7809 - if (copy_from_user(&ctrl, arg, sizeof(ctrl)))
7810 - return -EFAULT;
7811 -- ret = check_ctrlrecip(ps, ctrl.bRequestType, ctrl.wIndex);
7812 -+ ret = check_ctrlrecip(ps, ctrl.bRequestType, ctrl.bRequest,
7813 -+ ctrl.wIndex);
7814 - if (ret)
7815 - return ret;
7816 - wLength = ctrl.wLength; /* To suppress 64k PAGE_SIZE warning */
7817 -@@ -1100,7 +1117,7 @@ static int proc_do_submiturb(struct dev_state *ps, struct usbdevfs_urb *uurb,
7818 - kfree(dr);
7819 - return -EINVAL;
7820 - }
7821 -- ret = check_ctrlrecip(ps, dr->bRequestType,
7822 -+ ret = check_ctrlrecip(ps, dr->bRequestType, dr->bRequest,
7823 - le16_to_cpup(&dr->wIndex));
7824 - if (ret) {
7825 - kfree(dr);
7826 -diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c
7827 -index 34e3da5..75b4bc0 100644
7828 ---- a/drivers/usb/core/driver.c
7829 -+++ b/drivers/usb/core/driver.c
7830 -@@ -1583,7 +1583,7 @@ int usb_autopm_get_interface_async(struct usb_interface *intf)
7831 - dev_vdbg(&intf->dev, "%s: cnt %d -> %d\n",
7832 - __func__, atomic_read(&intf->dev.power.usage_count),
7833 - status);
7834 -- if (status > 0)
7835 -+ if (status > 0 || status == -EINPROGRESS)
7836 - status = 0;
7837 - return status;
7838 - }
7839 -@@ -1668,6 +1668,11 @@ int usb_runtime_suspend(struct device *dev)
7840 - return -EAGAIN;
7841 -
7842 - status = usb_suspend_both(udev, PMSG_AUTO_SUSPEND);
7843 -+
7844 -+ /* Allow a retry if autosuspend failed temporarily */
7845 -+ if (status == -EAGAIN || status == -EBUSY)
7846 -+ usb_mark_last_busy(udev);
7847 -+
7848 - /* The PM core reacts badly unless the return code is 0,
7849 - * -EAGAIN, or -EBUSY, so always return -EBUSY on an error.
7850 - */
7851 -diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
7852 -index ace9f84..39ea00b 100644
7853 ---- a/drivers/usb/core/hcd.c
7854 -+++ b/drivers/usb/core/hcd.c
7855 -@@ -1764,6 +1764,8 @@ int usb_hcd_alloc_bandwidth(struct usb_device *udev,
7856 - struct usb_interface *iface = usb_ifnum_to_if(udev,
7857 - cur_alt->desc.bInterfaceNumber);
7858 -
7859 -+ if (!iface)
7860 -+ return -EINVAL;
7861 - if (iface->resetting_device) {
7862 - /*
7863 - * The USB core just reset the device, so the xHCI host
7864 -diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
7865 -index 81ce6a8..d6a8d82 100644
7866 ---- a/drivers/usb/core/quirks.c
7867 -+++ b/drivers/usb/core/quirks.c
7868 -@@ -38,6 +38,27 @@ static const struct usb_device_id usb_quirk_list[] = {
7869 - /* Creative SB Audigy 2 NX */
7870 - { USB_DEVICE(0x041e, 0x3020), .driver_info = USB_QUIRK_RESET_RESUME },
7871 -
7872 -+ /* Logitech Webcam C200 */
7873 -+ { USB_DEVICE(0x046d, 0x0802), .driver_info = USB_QUIRK_RESET_RESUME },
7874 -+
7875 -+ /* Logitech Webcam C250 */
7876 -+ { USB_DEVICE(0x046d, 0x0804), .driver_info = USB_QUIRK_RESET_RESUME },
7877 -+
7878 -+ /* Logitech Webcam C300 */
7879 -+ { USB_DEVICE(0x046d, 0x0805), .driver_info = USB_QUIRK_RESET_RESUME },
7880 -+
7881 -+ /* Logitech Webcam B/C500 */
7882 -+ { USB_DEVICE(0x046d, 0x0807), .driver_info = USB_QUIRK_RESET_RESUME },
7883 -+
7884 -+ /* Logitech Webcam Pro 9000 */
7885 -+ { USB_DEVICE(0x046d, 0x0809), .driver_info = USB_QUIRK_RESET_RESUME },
7886 -+
7887 -+ /* Logitech Webcam C310 */
7888 -+ { USB_DEVICE(0x046d, 0x081b), .driver_info = USB_QUIRK_RESET_RESUME },
7889 -+
7890 -+ /* Logitech Webcam C270 */
7891 -+ { USB_DEVICE(0x046d, 0x0825), .driver_info = USB_QUIRK_RESET_RESUME },
7892 -+
7893 - /* Logitech Harmony 700-series */
7894 - { USB_DEVICE(0x046d, 0xc122), .driver_info = USB_QUIRK_DELAY_INIT },
7895 -
7896 -@@ -69,6 +90,9 @@ static const struct usb_device_id usb_quirk_list[] = {
7897 - { USB_DEVICE(0x06a3, 0x0006), .driver_info =
7898 - USB_QUIRK_CONFIG_INTF_STRINGS },
7899 -
7900 -+ /* Guillemot Webcam Hercules Dualpix Exchange*/
7901 -+ { USB_DEVICE(0x06f8, 0x0804), .driver_info = USB_QUIRK_RESET_RESUME },
7902 -+
7903 - /* M-Systems Flash Disk Pioneers */
7904 - { USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME },
7905 -
7906 -diff --git a/drivers/usb/gadget/printer.c b/drivers/usb/gadget/printer.c
7907 -index 271ef94..88a464c 100644
7908 ---- a/drivers/usb/gadget/printer.c
7909 -+++ b/drivers/usb/gadget/printer.c
7910 -@@ -1602,7 +1602,7 @@ cleanup(void)
7911 - if (status)
7912 - ERROR(dev, "usb_gadget_unregister_driver %x\n", status);
7913 -
7914 -- unregister_chrdev_region(g_printer_devno, 2);
7915 -+ unregister_chrdev_region(g_printer_devno, 1);
7916 - class_destroy(usb_gadget_class);
7917 - mutex_unlock(&usb_printer_gadget.lock_printer_io);
7918 - }
7919 -diff --git a/drivers/usb/host/ehci-dbg.c b/drivers/usb/host/ehci-dbg.c
7920 -index 40a844c..3e2ccb0 100644
7921 ---- a/drivers/usb/host/ehci-dbg.c
7922 -+++ b/drivers/usb/host/ehci-dbg.c
7923 -@@ -808,7 +808,7 @@ static ssize_t fill_registers_buffer(struct debug_buffer *buf)
7924 - next += temp;
7925 -
7926 - temp = scnprintf (next, size, "uframe %04x\n",
7927 -- ehci_readl(ehci, &ehci->regs->frame_index));
7928 -+ ehci_read_frame_index(ehci));
7929 - size -= temp;
7930 - next += temp;
7931 -
7932 -diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
7933 -index 9ff9abc..b27ceab 100644
7934 ---- a/drivers/usb/host/ehci-hcd.c
7935 -+++ b/drivers/usb/host/ehci-hcd.c
7936 -@@ -761,6 +761,35 @@ static int ehci_run (struct usb_hcd *hcd)
7937 - return 0;
7938 - }
7939 -
7940 -+static int __maybe_unused ehci_setup (struct usb_hcd *hcd)
7941 -+{
7942 -+ struct ehci_hcd *ehci = hcd_to_ehci(hcd);
7943 -+ int retval;
7944 -+
7945 -+ ehci->regs = (void __iomem *)ehci->caps +
7946 -+ HC_LENGTH(ehci, ehci_readl(ehci, &ehci->caps->hc_capbase));
7947 -+ dbg_hcs_params(ehci, "reset");
7948 -+ dbg_hcc_params(ehci, "reset");
7949 -+
7950 -+ /* cache this readonly data; minimize chip reads */
7951 -+ ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params);
7952 -+
7953 -+ ehci->sbrn = HCD_USB2;
7954 -+
7955 -+ retval = ehci_halt(ehci);
7956 -+ if (retval)
7957 -+ return retval;
7958 -+
7959 -+ /* data structure init */
7960 -+ retval = ehci_init(hcd);
7961 -+ if (retval)
7962 -+ return retval;
7963 -+
7964 -+ ehci_reset(ehci);
7965 -+
7966 -+ return 0;
7967 -+}
7968 -+
7969 - /*-------------------------------------------------------------------------*/
7970 -
7971 - static irqreturn_t ehci_irq (struct usb_hcd *hcd)
7972 -@@ -1159,8 +1188,7 @@ ehci_endpoint_reset(struct usb_hcd *hcd, struct usb_host_endpoint *ep)
7973 - static int ehci_get_frame (struct usb_hcd *hcd)
7974 - {
7975 - struct ehci_hcd *ehci = hcd_to_ehci (hcd);
7976 -- return (ehci_readl(ehci, &ehci->regs->frame_index) >> 3) %
7977 -- ehci->periodic_size;
7978 -+ return (ehci_read_frame_index(ehci) >> 3) % ehci->periodic_size;
7979 - }
7980 -
7981 - /*-------------------------------------------------------------------------*/
7982 -diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c
7983 -index 0f3a724..f5d7fed 100644
7984 ---- a/drivers/usb/host/ehci-hub.c
7985 -+++ b/drivers/usb/host/ehci-hub.c
7986 -@@ -1120,7 +1120,19 @@ static int ehci_hub_control (
7987 - if (!selector || selector > 5)
7988 - goto error;
7989 - ehci_quiesce(ehci);
7990 -+
7991 -+ /* Put all enabled ports into suspend */
7992 -+ while (ports--) {
7993 -+ u32 __iomem *sreg =
7994 -+ &ehci->regs->port_status[ports];
7995 -+
7996 -+ temp = ehci_readl(ehci, sreg) & ~PORT_RWC_BITS;
7997 -+ if (temp & PORT_PE)
7998 -+ ehci_writel(ehci, temp | PORT_SUSPEND,
7999 -+ sreg);
8000 -+ }
8001 - ehci_halt(ehci);
8002 -+ temp = ehci_readl(ehci, status_reg);
8003 - temp |= selector << 16;
8004 - ehci_writel(ehci, temp, status_reg);
8005 - break;
8006 -diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
8007 -index 1102ce6..1d1caa6 100644
8008 ---- a/drivers/usb/host/ehci-pci.c
8009 -+++ b/drivers/usb/host/ehci-pci.c
8010 -@@ -224,6 +224,11 @@ static int ehci_pci_setup(struct usb_hcd *hcd)
8011 - pci_dev_put(p_smbus);
8012 - }
8013 - break;
8014 -+ case PCI_VENDOR_ID_NETMOS:
8015 -+ /* MosChip frame-index-register bug */
8016 -+ ehci_info(ehci, "applying MosChip frame-index workaround\n");
8017 -+ ehci->frame_index_bug = 1;
8018 -+ break;
8019 - }
8020 -
8021 - /* optional debug port, normally in the first BAR */
8022 -diff --git a/drivers/usb/host/ehci-sched.c b/drivers/usb/host/ehci-sched.c
8023 -index 6c9fbe3..063c630 100644
8024 ---- a/drivers/usb/host/ehci-sched.c
8025 -+++ b/drivers/usb/host/ehci-sched.c
8026 -@@ -36,6 +36,27 @@
8027 -
8028 - static int ehci_get_frame (struct usb_hcd *hcd);
8029 -
8030 -+#ifdef CONFIG_PCI
8031 -+
8032 -+static unsigned ehci_read_frame_index(struct ehci_hcd *ehci)
8033 -+{
8034 -+ unsigned uf;
8035 -+
8036 -+ /*
8037 -+ * The MosChip MCS9990 controller updates its microframe counter
8038 -+ * a little before the frame counter, and occasionally we will read
8039 -+ * the invalid intermediate value. Avoid problems by checking the
8040 -+ * microframe number (the low-order 3 bits); if they are 0 then
8041 -+ * re-read the register to get the correct value.
8042 -+ */
8043 -+ uf = ehci_readl(ehci, &ehci->regs->frame_index);
8044 -+ if (unlikely(ehci->frame_index_bug && ((uf & 7) == 0)))
8045 -+ uf = ehci_readl(ehci, &ehci->regs->frame_index);
8046 -+ return uf;
8047 -+}
8048 -+
8049 -+#endif
8050 -+
8051 - /*-------------------------------------------------------------------------*/
8052 -
8053 - /*
8054 -@@ -482,7 +503,7 @@ static int enable_periodic (struct ehci_hcd *ehci)
8055 - ehci_to_hcd(ehci)->state = HC_STATE_RUNNING;
8056 -
8057 - /* make sure ehci_work scans these */
8058 -- ehci->next_uframe = ehci_readl(ehci, &ehci->regs->frame_index)
8059 -+ ehci->next_uframe = ehci_read_frame_index(ehci)
8060 - % (ehci->periodic_size << 3);
8061 - if (unlikely(ehci->broken_periodic))
8062 - ehci->last_periodic_enable = ktime_get_real();
8063 -@@ -1412,7 +1433,7 @@ iso_stream_schedule (
8064 - goto fail;
8065 - }
8066 -
8067 -- now = ehci_readl(ehci, &ehci->regs->frame_index) & (mod - 1);
8068 -+ now = ehci_read_frame_index(ehci) & (mod - 1);
8069 -
8070 - /* Typical case: reuse current schedule, stream is still active.
8071 - * Hopefully there are no gaps from the host falling behind
8072 -@@ -2279,7 +2300,7 @@ scan_periodic (struct ehci_hcd *ehci)
8073 - */
8074 - now_uframe = ehci->next_uframe;
8075 - if (HC_IS_RUNNING(ehci_to_hcd(ehci)->state)) {
8076 -- clock = ehci_readl(ehci, &ehci->regs->frame_index);
8077 -+ clock = ehci_read_frame_index(ehci);
8078 - clock_frame = (clock >> 3) & (ehci->periodic_size - 1);
8079 - } else {
8080 - clock = now_uframe + mod - 1;
8081 -@@ -2458,8 +2479,7 @@ restart:
8082 - || ehci->periodic_sched == 0)
8083 - break;
8084 - ehci->next_uframe = now_uframe;
8085 -- now = ehci_readl(ehci, &ehci->regs->frame_index) &
8086 -- (mod - 1);
8087 -+ now = ehci_read_frame_index(ehci) & (mod - 1);
8088 - if (now_uframe == now)
8089 - break;
8090 -
8091 -diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h
8092 -index 989e0a8..3ffb27f 100644
8093 ---- a/drivers/usb/host/ehci.h
8094 -+++ b/drivers/usb/host/ehci.h
8095 -@@ -137,6 +137,7 @@ struct ehci_hcd { /* one per controller */
8096 - unsigned fs_i_thresh:1; /* Intel iso scheduling */
8097 - unsigned use_dummy_qh:1; /* AMD Frame List table quirk*/
8098 - unsigned has_synopsys_hc_bug:1; /* Synopsys HC */
8099 -+ unsigned frame_index_bug:1; /* MosChip (AKA NetMos) */
8100 -
8101 - /* required for usb32 quirk */
8102 - #define OHCI_CTRL_HCFS (3 << 6)
8103 -@@ -738,6 +739,22 @@ static inline u32 hc32_to_cpup (const struct ehci_hcd *ehci, const __hc32 *x)
8104 -
8105 - /*-------------------------------------------------------------------------*/
8106 -
8107 -+#ifdef CONFIG_PCI
8108 -+
8109 -+/* For working around the MosChip frame-index-register bug */
8110 -+static unsigned ehci_read_frame_index(struct ehci_hcd *ehci);
8111 -+
8112 -+#else
8113 -+
8114 -+static inline unsigned ehci_read_frame_index(struct ehci_hcd *ehci)
8115 -+{
8116 -+ return ehci_readl(ehci, &ehci->regs->frame_index);
8117 -+}
8118 -+
8119 -+#endif
8120 -+
8121 -+/*-------------------------------------------------------------------------*/
8122 -+
8123 - #ifndef DEBUG
8124 - #define STUB_DEBUG_FILES
8125 - #endif /* DEBUG */
8126 -diff --git a/drivers/usb/host/fhci-sched.c b/drivers/usb/host/fhci-sched.c
8127 -index a42ef38..2df851b 100644
8128 ---- a/drivers/usb/host/fhci-sched.c
8129 -+++ b/drivers/usb/host/fhci-sched.c
8130 -@@ -1,7 +1,7 @@
8131 - /*
8132 - * Freescale QUICC Engine USB Host Controller Driver
8133 - *
8134 -- * Copyright (c) Freescale Semicondutor, Inc. 2006.
8135 -+ * Copyright (c) Freescale Semicondutor, Inc. 2006, 2011.
8136 - * Shlomi Gridish <gridish@×××××××××.com>
8137 - * Jerry Huang <Chang-Ming.Huang@×××××××××.com>
8138 - * Copyright (c) Logic Product Development, Inc. 2007
8139 -@@ -810,9 +810,11 @@ void fhci_queue_urb(struct fhci_hcd *fhci, struct urb *urb)
8140 - ed->dev_addr = usb_pipedevice(urb->pipe);
8141 - ed->max_pkt_size = usb_maxpacket(urb->dev, urb->pipe,
8142 - usb_pipeout(urb->pipe));
8143 -+ /* setup stage */
8144 - td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt++, FHCI_TA_SETUP,
8145 - USB_TD_TOGGLE_DATA0, urb->setup_packet, 8, 0, 0, true);
8146 -
8147 -+ /* data stage */
8148 - if (data_len > 0) {
8149 - td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt++,
8150 - usb_pipeout(urb->pipe) ? FHCI_TA_OUT :
8151 -@@ -820,9 +822,18 @@ void fhci_queue_urb(struct fhci_hcd *fhci, struct urb *urb)
8152 - USB_TD_TOGGLE_DATA1, data, data_len, 0, 0,
8153 - true);
8154 - }
8155 -- td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt++,
8156 -- usb_pipeout(urb->pipe) ? FHCI_TA_IN : FHCI_TA_OUT,
8157 -- USB_TD_TOGGLE_DATA1, data, 0, 0, 0, true);
8158 -+
8159 -+ /* status stage */
8160 -+ if (data_len > 0)
8161 -+ td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt++,
8162 -+ (usb_pipeout(urb->pipe) ? FHCI_TA_IN :
8163 -+ FHCI_TA_OUT),
8164 -+ USB_TD_TOGGLE_DATA1, data, 0, 0, 0, true);
8165 -+ else
8166 -+ td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt++,
8167 -+ FHCI_TA_IN,
8168 -+ USB_TD_TOGGLE_DATA1, data, 0, 0, 0, true);
8169 -+
8170 - urb_state = US_CTRL_SETUP;
8171 - break;
8172 - case FHCI_TF_ISO:
8173 -diff --git a/drivers/usb/host/isp1760-hcd.c b/drivers/usb/host/isp1760-hcd.c
8174 -index 55d3d58..840beda 100644
8175 ---- a/drivers/usb/host/isp1760-hcd.c
8176 -+++ b/drivers/usb/host/isp1760-hcd.c
8177 -@@ -1583,6 +1583,9 @@ static int isp1760_urb_dequeue(struct usb_hcd *hcd, struct urb *urb,
8178 - int retval = 0;
8179 -
8180 - spin_lock_irqsave(&priv->lock, spinflags);
8181 -+ retval = usb_hcd_check_unlink_urb(hcd, urb, status);
8182 -+ if (retval)
8183 -+ goto out;
8184 -
8185 - qh = urb->ep->hcpriv;
8186 - if (!qh) {
8187 -diff --git a/drivers/usb/host/ohci-hub.c b/drivers/usb/host/ohci-hub.c
8188 -index 9154615..2f00040 100644
8189 ---- a/drivers/usb/host/ohci-hub.c
8190 -+++ b/drivers/usb/host/ohci-hub.c
8191 -@@ -356,10 +356,7 @@ static void ohci_finish_controller_resume(struct usb_hcd *hcd)
8192 - msleep(20);
8193 - }
8194 -
8195 -- /* Does the root hub have a port wakeup pending? */
8196 -- if (ohci_readl(ohci, &ohci->regs->intrstatus) &
8197 -- (OHCI_INTR_RD | OHCI_INTR_RHSC))
8198 -- usb_hcd_resume_root_hub(hcd);
8199 -+ usb_hcd_resume_root_hub(hcd);
8200 - }
8201 -
8202 - /* Carry out polling-, autostop-, and autoresume-related state changes */
8203 -diff --git a/drivers/usb/host/xhci-hub.c b/drivers/usb/host/xhci-hub.c
8204 -index 723f823..ce9f974 100644
8205 ---- a/drivers/usb/host/xhci-hub.c
8206 -+++ b/drivers/usb/host/xhci-hub.c
8207 -@@ -392,6 +392,20 @@ static int xhci_get_ports(struct usb_hcd *hcd, __le32 __iomem ***port_array)
8208 - return max_ports;
8209 - }
8210 -
8211 -+/* Test and clear port RWC bit */
8212 -+void xhci_test_and_clear_bit(struct xhci_hcd *xhci, __le32 __iomem **port_array,
8213 -+ int port_id, u32 port_bit)
8214 -+{
8215 -+ u32 temp;
8216 -+
8217 -+ temp = xhci_readl(xhci, port_array[port_id]);
8218 -+ if (temp & port_bit) {
8219 -+ temp = xhci_port_state_to_neutral(temp);
8220 -+ temp |= port_bit;
8221 -+ xhci_writel(xhci, temp, port_array[port_id]);
8222 -+ }
8223 -+}
8224 -+
8225 - int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue,
8226 - u16 wIndex, char *buf, u16 wLength)
8227 - {
8228 -@@ -938,12 +952,8 @@ int xhci_bus_resume(struct usb_hcd *hcd)
8229 - spin_lock_irqsave(&xhci->lock, flags);
8230 -
8231 - /* Clear PLC */
8232 -- temp = xhci_readl(xhci, port_array[port_index]);
8233 -- if (temp & PORT_PLC) {
8234 -- temp = xhci_port_state_to_neutral(temp);
8235 -- temp |= PORT_PLC;
8236 -- xhci_writel(xhci, temp, port_array[port_index]);
8237 -- }
8238 -+ xhci_test_and_clear_bit(xhci, port_array, port_index,
8239 -+ PORT_PLC);
8240 -
8241 - slot_id = xhci_find_slot_id_by_port(hcd,
8242 - xhci, port_index + 1);
8243 -diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
8244 -index fcb7f7e..104620b 100644
8245 ---- a/drivers/usb/host/xhci-mem.c
8246 -+++ b/drivers/usb/host/xhci-mem.c
8247 -@@ -81,7 +81,7 @@ static void xhci_segment_free(struct xhci_hcd *xhci, struct xhci_segment *seg)
8248 - * related flags, such as End TRB, Toggle Cycle, and no snoop.
8249 - */
8250 - static void xhci_link_segments(struct xhci_hcd *xhci, struct xhci_segment *prev,
8251 -- struct xhci_segment *next, bool link_trbs)
8252 -+ struct xhci_segment *next, bool link_trbs, bool isoc)
8253 - {
8254 - u32 val;
8255 -
8256 -@@ -97,7 +97,9 @@ static void xhci_link_segments(struct xhci_hcd *xhci, struct xhci_segment *prev,
8257 - val &= ~TRB_TYPE_BITMASK;
8258 - val |= TRB_TYPE(TRB_LINK);
8259 - /* Always set the chain bit with 0.95 hardware */
8260 -- if (xhci_link_trb_quirk(xhci))
8261 -+ /* Set chain bit for isoc rings on AMD 0.96 host */
8262 -+ if (xhci_link_trb_quirk(xhci) ||
8263 -+ (isoc && (xhci->quirks & XHCI_AMD_0x96_HOST)))
8264 - val |= TRB_CHAIN;
8265 - prev->trbs[TRBS_PER_SEGMENT-1].link.control = cpu_to_le32(val);
8266 - }
8267 -@@ -112,18 +114,20 @@ void xhci_ring_free(struct xhci_hcd *xhci, struct xhci_ring *ring)
8268 - struct xhci_segment *seg;
8269 - struct xhci_segment *first_seg;
8270 -
8271 -- if (!ring || !ring->first_seg)
8272 -+ if (!ring)
8273 - return;
8274 -- first_seg = ring->first_seg;
8275 -- seg = first_seg->next;
8276 -- xhci_dbg(xhci, "Freeing ring at %p\n", ring);
8277 -- while (seg != first_seg) {
8278 -- struct xhci_segment *next = seg->next;
8279 -- xhci_segment_free(xhci, seg);
8280 -- seg = next;
8281 -+ if (ring->first_seg) {
8282 -+ first_seg = ring->first_seg;
8283 -+ seg = first_seg->next;
8284 -+ xhci_dbg(xhci, "Freeing ring at %p\n", ring);
8285 -+ while (seg != first_seg) {
8286 -+ struct xhci_segment *next = seg->next;
8287 -+ xhci_segment_free(xhci, seg);
8288 -+ seg = next;
8289 -+ }
8290 -+ xhci_segment_free(xhci, first_seg);
8291 -+ ring->first_seg = NULL;
8292 - }
8293 -- xhci_segment_free(xhci, first_seg);
8294 -- ring->first_seg = NULL;
8295 - kfree(ring);
8296 - }
8297 -
8298 -@@ -152,7 +156,7 @@ static void xhci_initialize_ring_info(struct xhci_ring *ring)
8299 - * See section 4.9.1 and figures 15 and 16.
8300 - */
8301 - static struct xhci_ring *xhci_ring_alloc(struct xhci_hcd *xhci,
8302 -- unsigned int num_segs, bool link_trbs, gfp_t flags)
8303 -+ unsigned int num_segs, bool link_trbs, bool isoc, gfp_t flags)
8304 - {
8305 - struct xhci_ring *ring;
8306 - struct xhci_segment *prev;
8307 -@@ -178,12 +182,12 @@ static struct xhci_ring *xhci_ring_alloc(struct xhci_hcd *xhci,
8308 - next = xhci_segment_alloc(xhci, flags);
8309 - if (!next)
8310 - goto fail;
8311 -- xhci_link_segments(xhci, prev, next, link_trbs);
8312 -+ xhci_link_segments(xhci, prev, next, link_trbs, isoc);
8313 -
8314 - prev = next;
8315 - num_segs--;
8316 - }
8317 -- xhci_link_segments(xhci, prev, ring->first_seg, link_trbs);
8318 -+ xhci_link_segments(xhci, prev, ring->first_seg, link_trbs, isoc);
8319 -
8320 - if (link_trbs) {
8321 - /* See section 4.9.2.1 and 6.4.4.1 */
8322 -@@ -229,14 +233,14 @@ void xhci_free_or_cache_endpoint_ring(struct xhci_hcd *xhci,
8323 - * pointers to the beginning of the ring.
8324 - */
8325 - static void xhci_reinit_cached_ring(struct xhci_hcd *xhci,
8326 -- struct xhci_ring *ring)
8327 -+ struct xhci_ring *ring, bool isoc)
8328 - {
8329 - struct xhci_segment *seg = ring->first_seg;
8330 - do {
8331 - memset(seg->trbs, 0,
8332 - sizeof(union xhci_trb)*TRBS_PER_SEGMENT);
8333 - /* All endpoint rings have link TRBs */
8334 -- xhci_link_segments(xhci, seg, seg->next, 1);
8335 -+ xhci_link_segments(xhci, seg, seg->next, 1, isoc);
8336 - seg = seg->next;
8337 - } while (seg != ring->first_seg);
8338 - xhci_initialize_ring_info(ring);
8339 -@@ -540,7 +544,7 @@ struct xhci_stream_info *xhci_alloc_stream_info(struct xhci_hcd *xhci,
8340 - */
8341 - for (cur_stream = 1; cur_stream < num_streams; cur_stream++) {
8342 - stream_info->stream_rings[cur_stream] =
8343 -- xhci_ring_alloc(xhci, 1, true, mem_flags);
8344 -+ xhci_ring_alloc(xhci, 1, true, false, mem_flags);
8345 - cur_ring = stream_info->stream_rings[cur_stream];
8346 - if (!cur_ring)
8347 - goto cleanup_rings;
8348 -@@ -765,7 +769,7 @@ int xhci_alloc_virt_device(struct xhci_hcd *xhci, int slot_id,
8349 - }
8350 -
8351 - /* Allocate endpoint 0 ring */
8352 -- dev->eps[0].ring = xhci_ring_alloc(xhci, 1, true, flags);
8353 -+ dev->eps[0].ring = xhci_ring_alloc(xhci, 1, true, false, flags);
8354 - if (!dev->eps[0].ring)
8355 - goto fail;
8356 -
8357 -@@ -1175,10 +1179,10 @@ int xhci_endpoint_init(struct xhci_hcd *xhci,
8358 - */
8359 - if (usb_endpoint_xfer_isoc(&ep->desc))
8360 - virt_dev->eps[ep_index].new_ring =
8361 -- xhci_ring_alloc(xhci, 8, true, mem_flags);
8362 -+ xhci_ring_alloc(xhci, 8, true, true, mem_flags);
8363 - else
8364 - virt_dev->eps[ep_index].new_ring =
8365 -- xhci_ring_alloc(xhci, 1, true, mem_flags);
8366 -+ xhci_ring_alloc(xhci, 1, true, false, mem_flags);
8367 - if (!virt_dev->eps[ep_index].new_ring) {
8368 - /* Attempt to use the ring cache */
8369 - if (virt_dev->num_rings_cached == 0)
8370 -@@ -1187,7 +1191,8 @@ int xhci_endpoint_init(struct xhci_hcd *xhci,
8371 - virt_dev->ring_cache[virt_dev->num_rings_cached];
8372 - virt_dev->ring_cache[virt_dev->num_rings_cached] = NULL;
8373 - virt_dev->num_rings_cached--;
8374 -- xhci_reinit_cached_ring(xhci, virt_dev->eps[ep_index].new_ring);
8375 -+ xhci_reinit_cached_ring(xhci, virt_dev->eps[ep_index].new_ring,
8376 -+ usb_endpoint_xfer_isoc(&ep->desc) ? true : false);
8377 - }
8378 - virt_dev->eps[ep_index].skip = false;
8379 - ep_ring = virt_dev->eps[ep_index].new_ring;
8380 -@@ -2001,7 +2006,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags)
8381 - goto fail;
8382 -
8383 - /* Set up the command ring to have one segments for now. */
8384 -- xhci->cmd_ring = xhci_ring_alloc(xhci, 1, true, flags);
8385 -+ xhci->cmd_ring = xhci_ring_alloc(xhci, 1, true, false, flags);
8386 - if (!xhci->cmd_ring)
8387 - goto fail;
8388 - xhci_dbg(xhci, "Allocated command ring at %p\n", xhci->cmd_ring);
8389 -@@ -2032,7 +2037,8 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags)
8390 - * the event ring segment table (ERST). Section 4.9.3.
8391 - */
8392 - xhci_dbg(xhci, "// Allocating event ring\n");
8393 -- xhci->event_ring = xhci_ring_alloc(xhci, ERST_NUM_SEGS, false, flags);
8394 -+ xhci->event_ring = xhci_ring_alloc(xhci, ERST_NUM_SEGS, false, false,
8395 -+ flags);
8396 - if (!xhci->event_ring)
8397 - goto fail;
8398 - if (xhci_check_trb_in_td_math(xhci, flags) < 0)
8399 -diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
8400 -index cb16de2..50e7156 100644
8401 ---- a/drivers/usb/host/xhci-pci.c
8402 -+++ b/drivers/usb/host/xhci-pci.c
8403 -@@ -128,6 +128,9 @@ static int xhci_pci_setup(struct usb_hcd *hcd)
8404 - if (pdev->vendor == PCI_VENDOR_ID_NEC)
8405 - xhci->quirks |= XHCI_NEC_HOST;
8406 -
8407 -+ if (pdev->vendor == PCI_VENDOR_ID_AMD && xhci->hci_version == 0x96)
8408 -+ xhci->quirks |= XHCI_AMD_0x96_HOST;
8409 -+
8410 - /* AMD PLL quirk */
8411 - if (pdev->vendor == PCI_VENDOR_ID_AMD && usb_amd_find_chipset_info())
8412 - xhci->quirks |= XHCI_AMD_PLL_FIX;
8413 -diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
8414 -index d0871ea..b20d2f7 100644
8415 ---- a/drivers/usb/host/xhci-ring.c
8416 -+++ b/drivers/usb/host/xhci-ring.c
8417 -@@ -187,7 +187,7 @@ static void inc_deq(struct xhci_hcd *xhci, struct xhci_ring *ring, bool consumer
8418 - * prepare_transfer()?
8419 - */
8420 - static void inc_enq(struct xhci_hcd *xhci, struct xhci_ring *ring,
8421 -- bool consumer, bool more_trbs_coming)
8422 -+ bool consumer, bool more_trbs_coming, bool isoc)
8423 - {
8424 - u32 chain;
8425 - union xhci_trb *next;
8426 -@@ -214,11 +214,13 @@ static void inc_enq(struct xhci_hcd *xhci, struct xhci_ring *ring,
8427 - if (!chain && !more_trbs_coming)
8428 - break;
8429 -
8430 -- /* If we're not dealing with 0.95 hardware,
8431 -+ /* If we're not dealing with 0.95 hardware or
8432 -+ * isoc rings on AMD 0.96 host,
8433 - * carry over the chain bit of the previous TRB
8434 - * (which may mean the chain bit is cleared).
8435 - */
8436 -- if (!xhci_link_trb_quirk(xhci)) {
8437 -+ if (!(isoc && (xhci->quirks & XHCI_AMD_0x96_HOST))
8438 -+ && !xhci_link_trb_quirk(xhci)) {
8439 - next->link.control &=
8440 - cpu_to_le32(~TRB_CHAIN);
8441 - next->link.control |=
8442 -@@ -1345,10 +1347,8 @@ static void handle_port_status(struct xhci_hcd *xhci,
8443 - xhci_ring_device(xhci, slot_id);
8444 - xhci_dbg(xhci, "resume SS port %d finished\n", port_id);
8445 - /* Clear PORT_PLC */
8446 -- temp = xhci_readl(xhci, port_array[faked_port_index]);
8447 -- temp = xhci_port_state_to_neutral(temp);
8448 -- temp |= PORT_PLC;
8449 -- xhci_writel(xhci, temp, port_array[faked_port_index]);
8450 -+ xhci_test_and_clear_bit(xhci, port_array,
8451 -+ faked_port_index, PORT_PLC);
8452 - } else {
8453 - xhci_dbg(xhci, "resume HS port %d\n", port_id);
8454 - bus_state->resume_done[faked_port_index] = jiffies +
8455 -@@ -1359,6 +1359,10 @@ static void handle_port_status(struct xhci_hcd *xhci,
8456 - }
8457 - }
8458 -
8459 -+ if (hcd->speed != HCD_USB3)
8460 -+ xhci_test_and_clear_bit(xhci, port_array, faked_port_index,
8461 -+ PORT_PLC);
8462 -+
8463 - cleanup:
8464 - /* Update event ring dequeue pointer before dropping the lock */
8465 - inc_deq(xhci, xhci->event_ring, true);
8466 -@@ -1940,8 +1944,10 @@ static int handle_tx_event(struct xhci_hcd *xhci,
8467 - int status = -EINPROGRESS;
8468 - struct urb_priv *urb_priv;
8469 - struct xhci_ep_ctx *ep_ctx;
8470 -+ struct list_head *tmp;
8471 - u32 trb_comp_code;
8472 - int ret = 0;
8473 -+ int td_num = 0;
8474 -
8475 - slot_id = TRB_TO_SLOT_ID(le32_to_cpu(event->flags));
8476 - xdev = xhci->devs[slot_id];
8477 -@@ -1963,6 +1969,12 @@ static int handle_tx_event(struct xhci_hcd *xhci,
8478 - return -ENODEV;
8479 - }
8480 -
8481 -+ /* Count current td numbers if ep->skip is set */
8482 -+ if (ep->skip) {
8483 -+ list_for_each(tmp, &ep_ring->td_list)
8484 -+ td_num++;
8485 -+ }
8486 -+
8487 - event_dma = le64_to_cpu(event->buffer);
8488 - trb_comp_code = GET_COMP_CODE(le32_to_cpu(event->transfer_len));
8489 - /* Look for common error cases */
8490 -@@ -2074,7 +2086,18 @@ static int handle_tx_event(struct xhci_hcd *xhci,
8491 - goto cleanup;
8492 - }
8493 -
8494 -+ /* We've skipped all the TDs on the ep ring when ep->skip set */
8495 -+ if (ep->skip && td_num == 0) {
8496 -+ ep->skip = false;
8497 -+ xhci_dbg(xhci, "All tds on the ep_ring skipped. "
8498 -+ "Clear skip flag.\n");
8499 -+ ret = 0;
8500 -+ goto cleanup;
8501 -+ }
8502 -+
8503 - td = list_entry(ep_ring->td_list.next, struct xhci_td, td_list);
8504 -+ if (ep->skip)
8505 -+ td_num--;
8506 -
8507 - /* Is this a TRB in the currently executing TD? */
8508 - event_seg = trb_in_td(ep_ring->deq_seg, ep_ring->dequeue,
8509 -@@ -2398,7 +2421,7 @@ irqreturn_t xhci_msi_irq(int irq, struct usb_hcd *hcd)
8510 - * prepare_transfer()?
8511 - */
8512 - static void queue_trb(struct xhci_hcd *xhci, struct xhci_ring *ring,
8513 -- bool consumer, bool more_trbs_coming,
8514 -+ bool consumer, bool more_trbs_coming, bool isoc,
8515 - u32 field1, u32 field2, u32 field3, u32 field4)
8516 - {
8517 - struct xhci_generic_trb *trb;
8518 -@@ -2408,7 +2431,7 @@ static void queue_trb(struct xhci_hcd *xhci, struct xhci_ring *ring,
8519 - trb->field[1] = cpu_to_le32(field2);
8520 - trb->field[2] = cpu_to_le32(field3);
8521 - trb->field[3] = cpu_to_le32(field4);
8522 -- inc_enq(xhci, ring, consumer, more_trbs_coming);
8523 -+ inc_enq(xhci, ring, consumer, more_trbs_coming, isoc);
8524 - }
8525 -
8526 - /*
8527 -@@ -2416,7 +2439,7 @@ static void queue_trb(struct xhci_hcd *xhci, struct xhci_ring *ring,
8528 - * FIXME allocate segments if the ring is full.
8529 - */
8530 - static int prepare_ring(struct xhci_hcd *xhci, struct xhci_ring *ep_ring,
8531 -- u32 ep_state, unsigned int num_trbs, gfp_t mem_flags)
8532 -+ u32 ep_state, unsigned int num_trbs, bool isoc, gfp_t mem_flags)
8533 - {
8534 - /* Make sure the endpoint has been added to xHC schedule */
8535 - switch (ep_state) {
8536 -@@ -2458,10 +2481,11 @@ static int prepare_ring(struct xhci_hcd *xhci, struct xhci_ring *ep_ring,
8537 - next = ring->enqueue;
8538 -
8539 - while (last_trb(xhci, ring, ring->enq_seg, next)) {
8540 -- /* If we're not dealing with 0.95 hardware,
8541 -- * clear the chain bit.
8542 -+ /* If we're not dealing with 0.95 hardware or isoc rings
8543 -+ * on AMD 0.96 host, clear the chain bit.
8544 - */
8545 -- if (!xhci_link_trb_quirk(xhci))
8546 -+ if (!xhci_link_trb_quirk(xhci) && !(isoc &&
8547 -+ (xhci->quirks & XHCI_AMD_0x96_HOST)))
8548 - next->link.control &= cpu_to_le32(~TRB_CHAIN);
8549 - else
8550 - next->link.control |= cpu_to_le32(TRB_CHAIN);
8551 -@@ -2494,6 +2518,7 @@ static int prepare_transfer(struct xhci_hcd *xhci,
8552 - unsigned int num_trbs,
8553 - struct urb *urb,
8554 - unsigned int td_index,
8555 -+ bool isoc,
8556 - gfp_t mem_flags)
8557 - {
8558 - int ret;
8559 -@@ -2511,7 +2536,7 @@ static int prepare_transfer(struct xhci_hcd *xhci,
8560 -
8561 - ret = prepare_ring(xhci, ep_ring,
8562 - le32_to_cpu(ep_ctx->ep_info) & EP_STATE_MASK,
8563 -- num_trbs, mem_flags);
8564 -+ num_trbs, isoc, mem_flags);
8565 - if (ret)
8566 - return ret;
8567 -
8568 -@@ -2734,7 +2759,7 @@ static int queue_bulk_sg_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
8569 -
8570 - trb_buff_len = prepare_transfer(xhci, xhci->devs[slot_id],
8571 - ep_index, urb->stream_id,
8572 -- num_trbs, urb, 0, mem_flags);
8573 -+ num_trbs, urb, 0, false, mem_flags);
8574 - if (trb_buff_len < 0)
8575 - return trb_buff_len;
8576 -
8577 -@@ -2829,7 +2854,7 @@ static int queue_bulk_sg_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
8578 - more_trbs_coming = true;
8579 - else
8580 - more_trbs_coming = false;
8581 -- queue_trb(xhci, ep_ring, false, more_trbs_coming,
8582 -+ queue_trb(xhci, ep_ring, false, more_trbs_coming, false,
8583 - lower_32_bits(addr),
8584 - upper_32_bits(addr),
8585 - length_field,
8586 -@@ -2920,7 +2945,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
8587 -
8588 - ret = prepare_transfer(xhci, xhci->devs[slot_id],
8589 - ep_index, urb->stream_id,
8590 -- num_trbs, urb, 0, mem_flags);
8591 -+ num_trbs, urb, 0, false, mem_flags);
8592 - if (ret < 0)
8593 - return ret;
8594 -
8595 -@@ -2992,7 +3017,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
8596 - more_trbs_coming = true;
8597 - else
8598 - more_trbs_coming = false;
8599 -- queue_trb(xhci, ep_ring, false, more_trbs_coming,
8600 -+ queue_trb(xhci, ep_ring, false, more_trbs_coming, false,
8601 - lower_32_bits(addr),
8602 - upper_32_bits(addr),
8603 - length_field,
8604 -@@ -3052,7 +3077,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
8605 - num_trbs++;
8606 - ret = prepare_transfer(xhci, xhci->devs[slot_id],
8607 - ep_index, urb->stream_id,
8608 -- num_trbs, urb, 0, mem_flags);
8609 -+ num_trbs, urb, 0, false, mem_flags);
8610 - if (ret < 0)
8611 - return ret;
8612 -
8613 -@@ -3085,7 +3110,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
8614 - }
8615 - }
8616 -
8617 -- queue_trb(xhci, ep_ring, false, true,
8618 -+ queue_trb(xhci, ep_ring, false, true, false,
8619 - setup->bRequestType | setup->bRequest << 8 | le16_to_cpu(setup->wValue) << 16,
8620 - le16_to_cpu(setup->wIndex) | le16_to_cpu(setup->wLength) << 16,
8621 - TRB_LEN(8) | TRB_INTR_TARGET(0),
8622 -@@ -3105,7 +3130,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
8623 - if (urb->transfer_buffer_length > 0) {
8624 - if (setup->bRequestType & USB_DIR_IN)
8625 - field |= TRB_DIR_IN;
8626 -- queue_trb(xhci, ep_ring, false, true,
8627 -+ queue_trb(xhci, ep_ring, false, true, false,
8628 - lower_32_bits(urb->transfer_dma),
8629 - upper_32_bits(urb->transfer_dma),
8630 - length_field,
8631 -@@ -3121,7 +3146,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
8632 - field = 0;
8633 - else
8634 - field = TRB_DIR_IN;
8635 -- queue_trb(xhci, ep_ring, false, false,
8636 -+ queue_trb(xhci, ep_ring, false, false, false,
8637 - 0,
8638 - 0,
8639 - TRB_INTR_TARGET(0),
8640 -@@ -3270,7 +3295,8 @@ static int xhci_queue_isoc_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
8641 - trbs_per_td = count_isoc_trbs_needed(xhci, urb, i);
8642 -
8643 - ret = prepare_transfer(xhci, xhci->devs[slot_id], ep_index,
8644 -- urb->stream_id, trbs_per_td, urb, i, mem_flags);
8645 -+ urb->stream_id, trbs_per_td, urb, i, true,
8646 -+ mem_flags);
8647 - if (ret < 0) {
8648 - if (i == 0)
8649 - return ret;
8650 -@@ -3340,7 +3366,7 @@ static int xhci_queue_isoc_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
8651 - remainder |
8652 - TRB_INTR_TARGET(0);
8653 -
8654 -- queue_trb(xhci, ep_ring, false, more_trbs_coming,
8655 -+ queue_trb(xhci, ep_ring, false, more_trbs_coming, true,
8656 - lower_32_bits(addr),
8657 - upper_32_bits(addr),
8658 - length_field,
8659 -@@ -3422,7 +3448,7 @@ int xhci_queue_isoc_tx_prepare(struct xhci_hcd *xhci, gfp_t mem_flags,
8660 - * Do not insert any td of the urb to the ring if the check failed.
8661 - */
8662 - ret = prepare_ring(xhci, ep_ring, le32_to_cpu(ep_ctx->ep_info) & EP_STATE_MASK,
8663 -- num_trbs, mem_flags);
8664 -+ num_trbs, true, mem_flags);
8665 - if (ret)
8666 - return ret;
8667 -
8668 -@@ -3481,7 +3507,7 @@ static int queue_command(struct xhci_hcd *xhci, u32 field1, u32 field2,
8669 - reserved_trbs++;
8670 -
8671 - ret = prepare_ring(xhci, xhci->cmd_ring, EP_STATE_RUNNING,
8672 -- reserved_trbs, GFP_ATOMIC);
8673 -+ reserved_trbs, false, GFP_ATOMIC);
8674 - if (ret < 0) {
8675 - xhci_err(xhci, "ERR: No room for command on command ring\n");
8676 - if (command_must_succeed)
8677 -@@ -3489,8 +3515,8 @@ static int queue_command(struct xhci_hcd *xhci, u32 field1, u32 field2,
8678 - "unfailable commands failed.\n");
8679 - return ret;
8680 - }
8681 -- queue_trb(xhci, xhci->cmd_ring, false, false, field1, field2, field3,
8682 -- field4 | xhci->cmd_ring->cycle_state);
8683 -+ queue_trb(xhci, xhci->cmd_ring, false, false, false, field1, field2,
8684 -+ field3, field4 | xhci->cmd_ring->cycle_state);
8685 - return 0;
8686 - }
8687 -
8688 -diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
8689 -index 7ea48b3..fb61e9d 100644
8690 ---- a/drivers/usb/host/xhci.c
8691 -+++ b/drivers/usb/host/xhci.c
8692 -@@ -1889,6 +1889,12 @@ int xhci_check_bandwidth(struct usb_hcd *hcd, struct usb_device *udev)
8693 - ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG);
8694 - ctrl_ctx->add_flags &= cpu_to_le32(~EP0_FLAG);
8695 - ctrl_ctx->drop_flags &= cpu_to_le32(~(SLOT_FLAG | EP0_FLAG));
8696 -+
8697 -+ /* Don't issue the command if there's no endpoints to update. */
8698 -+ if (ctrl_ctx->add_flags == cpu_to_le32(SLOT_FLAG) &&
8699 -+ ctrl_ctx->drop_flags == 0)
8700 -+ return 0;
8701 -+
8702 - xhci_dbg(xhci, "New Input Control Context:\n");
8703 - slot_ctx = xhci_get_slot_ctx(xhci, virt_dev->in_ctx);
8704 - xhci_dbg_ctx(xhci, virt_dev->in_ctx,
8705 -diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
8706 -index d8bbf5c..49ce76c 100644
8707 ---- a/drivers/usb/host/xhci.h
8708 -+++ b/drivers/usb/host/xhci.h
8709 -@@ -1311,6 +1311,7 @@ struct xhci_hcd {
8710 - #define XHCI_EP_LIMIT_QUIRK (1 << 5)
8711 - #define XHCI_BROKEN_MSI (1 << 6)
8712 - #define XHCI_RESET_ON_RESUME (1 << 7)
8713 -+#define XHCI_AMD_0x96_HOST (1 << 9)
8714 - unsigned int num_active_eps;
8715 - unsigned int limit_active_eps;
8716 - /* There are two roothubs to keep track of bus suspend info for */
8717 -@@ -1565,6 +1566,8 @@ void xhci_ring_ep_doorbell(struct xhci_hcd *xhci, unsigned int slot_id,
8718 - unsigned int ep_index, unsigned int stream_id);
8719 -
8720 - /* xHCI roothub code */
8721 -+void xhci_test_and_clear_bit(struct xhci_hcd *xhci, __le32 __iomem **port_array,
8722 -+ int port_id, u32 port_bit);
8723 - int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, u16 wIndex,
8724 - char *buf, u16 wLength);
8725 - int xhci_hub_status_data(struct usb_hcd *hcd, char *buf);
8726 -diff --git a/drivers/usb/mon/mon_bin.c b/drivers/usb/mon/mon_bin.c
8727 -index a09dbd2..a04b2ff 100644
8728 ---- a/drivers/usb/mon/mon_bin.c
8729 -+++ b/drivers/usb/mon/mon_bin.c
8730 -@@ -1101,7 +1101,7 @@ static long mon_bin_ioctl(struct file *file, unsigned int cmd, unsigned long arg
8731 - nevents = mon_bin_queued(rp);
8732 -
8733 - sp = (struct mon_bin_stats __user *)arg;
8734 -- if (put_user(rp->cnt_lost, &sp->dropped))
8735 -+ if (put_user(ndropped, &sp->dropped))
8736 - return -EFAULT;
8737 - if (put_user(nevents, &sp->queued))
8738 - return -EFAULT;
8739 -diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
8740 -index f968a3d..1b51d43 100644
8741 ---- a/drivers/usb/serial/ftdi_sio.c
8742 -+++ b/drivers/usb/serial/ftdi_sio.c
8743 -@@ -156,6 +156,7 @@ static struct ftdi_sio_quirk ftdi_8u2232c_quirk = {
8744 - * /sys/bus/usb/ftdi_sio/new_id, then send patch/report!
8745 - */
8746 - static struct usb_device_id id_table_combined [] = {
8747 -+ { USB_DEVICE(FTDI_VID, FTDI_ZEITCONTROL_TAGTRACE_MIFARE_PID) },
8748 - { USB_DEVICE(FTDI_VID, FTDI_CTI_MINI_PID) },
8749 - { USB_DEVICE(FTDI_VID, FTDI_CTI_NANO_PID) },
8750 - { USB_DEVICE(FTDI_VID, FTDI_AMC232_PID) },
8751 -@@ -206,6 +207,8 @@ static struct usb_device_id id_table_combined [] = {
8752 - { USB_DEVICE(FTDI_VID, FTDI_XF_640_PID) },
8753 - { USB_DEVICE(FTDI_VID, FTDI_XF_642_PID) },
8754 - { USB_DEVICE(FTDI_VID, FTDI_DSS20_PID) },
8755 -+ { USB_DEVICE(FTDI_VID, FTDI_URBAN_0_PID) },
8756 -+ { USB_DEVICE(FTDI_VID, FTDI_URBAN_1_PID) },
8757 - { USB_DEVICE(FTDI_NF_RIC_VID, FTDI_NF_RIC_PID) },
8758 - { USB_DEVICE(FTDI_VID, FTDI_VNHCPCUSB_D_PID) },
8759 - { USB_DEVICE(FTDI_VID, FTDI_MTXORB_0_PID) },
8760 -@@ -744,6 +747,8 @@ static struct usb_device_id id_table_combined [] = {
8761 - .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
8762 - { USB_DEVICE(FTDI_VID, LMI_LM3S_EVAL_BOARD_PID),
8763 - .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
8764 -+ { USB_DEVICE(FTDI_VID, LMI_LM3S_ICDI_BOARD_PID),
8765 -+ .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
8766 - { USB_DEVICE(FTDI_VID, FTDI_TURTELIZER_PID),
8767 - .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
8768 - { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID_USB60F) },
8769 -diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
8770 -index 19156d1..571fa96 100644
8771 ---- a/drivers/usb/serial/ftdi_sio_ids.h
8772 -+++ b/drivers/usb/serial/ftdi_sio_ids.h
8773 -@@ -54,6 +54,7 @@
8774 - /* FTDI 2332C Dual channel device, side A=245 FIFO (JTAG), Side B=RS232 UART */
8775 - #define LMI_LM3S_DEVEL_BOARD_PID 0xbcd8
8776 - #define LMI_LM3S_EVAL_BOARD_PID 0xbcd9
8777 -+#define LMI_LM3S_ICDI_BOARD_PID 0xbcda
8778 -
8779 - #define FTDI_TURTELIZER_PID 0xBDC8 /* JTAG/RS-232 adapter by egnite GmbH */
8780 -
8781 -@@ -420,9 +421,11 @@
8782 - #define PROTEGO_SPECIAL_4 0xFC73 /* special/unknown device */
8783 -
8784 - /*
8785 -- * DSS-20 Sync Station for Sony Ericsson P800
8786 -+ * Sony Ericsson product ids
8787 - */
8788 --#define FTDI_DSS20_PID 0xFC82
8789 -+#define FTDI_DSS20_PID 0xFC82 /* DSS-20 Sync Station for Sony Ericsson P800 */
8790 -+#define FTDI_URBAN_0_PID 0xFC8A /* Sony Ericsson Urban, uart #0 */
8791 -+#define FTDI_URBAN_1_PID 0xFC8B /* Sony Ericsson Urban, uart #1 */
8792 -
8793 - /* www.irtrans.de device */
8794 - #define FTDI_IRTRANS_PID 0xFC60 /* Product Id */
8795 -@@ -1159,4 +1162,8 @@
8796 - /* USB-Nano-485*/
8797 - #define FTDI_CTI_NANO_PID 0xF60B
8798 -
8799 --
8800 -+/*
8801 -+ * ZeitControl cardsystems GmbH rfid-readers http://zeitconrol.de
8802 -+ */
8803 -+/* TagTracer MIFARE*/
8804 -+#define FTDI_ZEITCONTROL_TAGTRACE_MIFARE_PID 0xF7C0
8805 -diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
8806 -index fe22e90..89ae1f6 100644
8807 ---- a/drivers/usb/serial/option.c
8808 -+++ b/drivers/usb/serial/option.c
8809 -@@ -475,31 +475,54 @@ enum option_blacklist_reason {
8810 - OPTION_BLACKLIST_RESERVED_IF = 2
8811 - };
8812 -
8813 -+#define MAX_BL_NUM 8
8814 - struct option_blacklist_info {
8815 -- const u32 infolen; /* number of interface numbers on blacklist */
8816 -- const u8 *ifaceinfo; /* pointer to the array holding the numbers */
8817 -- enum option_blacklist_reason reason;
8818 -+ /* bitfield of interface numbers for OPTION_BLACKLIST_SENDSETUP */
8819 -+ const unsigned long sendsetup;
8820 -+ /* bitfield of interface numbers for OPTION_BLACKLIST_RESERVED_IF */
8821 -+ const unsigned long reserved;
8822 - };
8823 -
8824 --static const u8 four_g_w14_no_sendsetup[] = { 0, 1 };
8825 - static const struct option_blacklist_info four_g_w14_blacklist = {
8826 -- .infolen = ARRAY_SIZE(four_g_w14_no_sendsetup),
8827 -- .ifaceinfo = four_g_w14_no_sendsetup,
8828 -- .reason = OPTION_BLACKLIST_SENDSETUP
8829 -+ .sendsetup = BIT(0) | BIT(1),
8830 - };
8831 -
8832 --static const u8 alcatel_x200_no_sendsetup[] = { 0, 1 };
8833 - static const struct option_blacklist_info alcatel_x200_blacklist = {
8834 -- .infolen = ARRAY_SIZE(alcatel_x200_no_sendsetup),
8835 -- .ifaceinfo = alcatel_x200_no_sendsetup,
8836 -- .reason = OPTION_BLACKLIST_SENDSETUP
8837 -+ .sendsetup = BIT(0) | BIT(1),
8838 -+};
8839 -+
8840 -+static const struct option_blacklist_info zte_0037_blacklist = {
8841 -+ .sendsetup = BIT(0) | BIT(1),
8842 - };
8843 -
8844 --static const u8 zte_k3765_z_no_sendsetup[] = { 0, 1, 2 };
8845 - static const struct option_blacklist_info zte_k3765_z_blacklist = {
8846 -- .infolen = ARRAY_SIZE(zte_k3765_z_no_sendsetup),
8847 -- .ifaceinfo = zte_k3765_z_no_sendsetup,
8848 -- .reason = OPTION_BLACKLIST_SENDSETUP
8849 -+ .sendsetup = BIT(0) | BIT(1) | BIT(2),
8850 -+ .reserved = BIT(4),
8851 -+};
8852 -+
8853 -+static const struct option_blacklist_info huawei_cdc12_blacklist = {
8854 -+ .reserved = BIT(1) | BIT(2),
8855 -+};
8856 -+
8857 -+static const struct option_blacklist_info net_intf1_blacklist = {
8858 -+ .reserved = BIT(1),
8859 -+};
8860 -+
8861 -+static const struct option_blacklist_info net_intf3_blacklist = {
8862 -+ .reserved = BIT(3),
8863 -+};
8864 -+
8865 -+static const struct option_blacklist_info net_intf4_blacklist = {
8866 -+ .reserved = BIT(4),
8867 -+};
8868 -+
8869 -+static const struct option_blacklist_info net_intf5_blacklist = {
8870 -+ .reserved = BIT(5),
8871 -+};
8872 -+
8873 -+static const struct option_blacklist_info zte_mf626_blacklist = {
8874 -+ .sendsetup = BIT(0) | BIT(1),
8875 -+ .reserved = BIT(4),
8876 - };
8877 -
8878 - static const struct usb_device_id option_ids[] = {
8879 -@@ -599,12 +622,15 @@ static const struct usb_device_id option_ids[] = {
8880 - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143D, 0xff, 0xff, 0xff) },
8881 - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143E, 0xff, 0xff, 0xff) },
8882 - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143F, 0xff, 0xff, 0xff) },
8883 -- { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4505, 0xff, 0xff, 0xff) },
8884 -- { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3765, 0xff, 0xff, 0xff) },
8885 -+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4505, 0xff, 0xff, 0xff),
8886 -+ .driver_info = (kernel_ulong_t) &huawei_cdc12_blacklist },
8887 -+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3765, 0xff, 0xff, 0xff),
8888 -+ .driver_info = (kernel_ulong_t) &huawei_cdc12_blacklist },
8889 - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_ETS1220, 0xff, 0xff, 0xff) },
8890 - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E14AC, 0xff, 0xff, 0xff) },
8891 - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3806, 0xff, 0xff, 0xff) },
8892 -- { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0xff, 0xff) },
8893 -+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0xff, 0xff),
8894 -+ .driver_info = (kernel_ulong_t) &huawei_cdc12_blacklist },
8895 - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x31) },
8896 - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x32) },
8897 - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x31) },
8898 -@@ -705,7 +731,8 @@ static const struct usb_device_id option_ids[] = {
8899 - { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) },
8900 - { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864G) },
8901 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */
8902 -- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0002, 0xff, 0xff, 0xff) },
8903 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0002, 0xff, 0xff, 0xff),
8904 -+ .driver_info = (kernel_ulong_t)&net_intf1_blacklist },
8905 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0003, 0xff, 0xff, 0xff) },
8906 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0004, 0xff, 0xff, 0xff) },
8907 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0005, 0xff, 0xff, 0xff) },
8908 -@@ -720,51 +747,62 @@ static const struct usb_device_id option_ids[] = {
8909 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x000f, 0xff, 0xff, 0xff) },
8910 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0010, 0xff, 0xff, 0xff) },
8911 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0011, 0xff, 0xff, 0xff) },
8912 -- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0012, 0xff, 0xff, 0xff) },
8913 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0012, 0xff, 0xff, 0xff),
8914 -+ .driver_info = (kernel_ulong_t)&net_intf1_blacklist },
8915 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0013, 0xff, 0xff, 0xff) },
8916 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0014, 0xff, 0xff, 0xff) },
8917 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF628, 0xff, 0xff, 0xff) },
8918 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0016, 0xff, 0xff, 0xff) },
8919 -- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0017, 0xff, 0xff, 0xff) },
8920 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0017, 0xff, 0xff, 0xff),
8921 -+ .driver_info = (kernel_ulong_t)&net_intf3_blacklist },
8922 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0018, 0xff, 0xff, 0xff) },
8923 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0019, 0xff, 0xff, 0xff) },
8924 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0020, 0xff, 0xff, 0xff) },
8925 -- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0021, 0xff, 0xff, 0xff) },
8926 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0021, 0xff, 0xff, 0xff),
8927 -+ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
8928 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0022, 0xff, 0xff, 0xff) },
8929 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0023, 0xff, 0xff, 0xff) },
8930 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0024, 0xff, 0xff, 0xff) },
8931 -- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0025, 0xff, 0xff, 0xff) },
8932 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0025, 0xff, 0xff, 0xff),
8933 -+ .driver_info = (kernel_ulong_t)&net_intf1_blacklist },
8934 - /* { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0026, 0xff, 0xff, 0xff) }, */
8935 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0028, 0xff, 0xff, 0xff) },
8936 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0029, 0xff, 0xff, 0xff) },
8937 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0030, 0xff, 0xff, 0xff) },
8938 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF626, 0xff,
8939 -- 0xff, 0xff), .driver_info = (kernel_ulong_t)&four_g_w14_blacklist },
8940 -+ 0xff, 0xff), .driver_info = (kernel_ulong_t)&zte_mf626_blacklist },
8941 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0032, 0xff, 0xff, 0xff) },
8942 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0033, 0xff, 0xff, 0xff) },
8943 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0034, 0xff, 0xff, 0xff) },
8944 -- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0037, 0xff, 0xff, 0xff) },
8945 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0037, 0xff, 0xff, 0xff),
8946 -+ .driver_info = (kernel_ulong_t)&zte_0037_blacklist },
8947 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0038, 0xff, 0xff, 0xff) },
8948 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0039, 0xff, 0xff, 0xff) },
8949 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0040, 0xff, 0xff, 0xff) },
8950 -- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0042, 0xff, 0xff, 0xff) },
8951 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0042, 0xff, 0xff, 0xff),
8952 -+ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
8953 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0043, 0xff, 0xff, 0xff) },
8954 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0044, 0xff, 0xff, 0xff) },
8955 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0048, 0xff, 0xff, 0xff) },
8956 -- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0049, 0xff, 0xff, 0xff) },
8957 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0049, 0xff, 0xff, 0xff),
8958 -+ .driver_info = (kernel_ulong_t)&net_intf5_blacklist },
8959 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0050, 0xff, 0xff, 0xff) },
8960 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0051, 0xff, 0xff, 0xff) },
8961 -- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0052, 0xff, 0xff, 0xff) },
8962 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0052, 0xff, 0xff, 0xff),
8963 -+ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
8964 - /* { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0053, 0xff, 0xff, 0xff) }, */
8965 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0054, 0xff, 0xff, 0xff) },
8966 -- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0055, 0xff, 0xff, 0xff) },
8967 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0055, 0xff, 0xff, 0xff),
8968 -+ .driver_info = (kernel_ulong_t)&net_intf1_blacklist },
8969 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0056, 0xff, 0xff, 0xff) },
8970 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0057, 0xff, 0xff, 0xff) },
8971 -- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0058, 0xff, 0xff, 0xff) },
8972 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0058, 0xff, 0xff, 0xff),
8973 -+ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
8974 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0059, 0xff, 0xff, 0xff) },
8975 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0061, 0xff, 0xff, 0xff) },
8976 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0062, 0xff, 0xff, 0xff) },
8977 -- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0063, 0xff, 0xff, 0xff) },
8978 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0063, 0xff, 0xff, 0xff),
8979 -+ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
8980 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0064, 0xff, 0xff, 0xff) },
8981 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0065, 0xff, 0xff, 0xff) },
8982 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0066, 0xff, 0xff, 0xff) },
8983 -@@ -779,11 +817,13 @@ static const struct usb_device_id option_ids[] = {
8984 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0083, 0xff, 0xff, 0xff) },
8985 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0086, 0xff, 0xff, 0xff) },
8986 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0087, 0xff, 0xff, 0xff) },
8987 -- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0104, 0xff, 0xff, 0xff) },
8988 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0104, 0xff, 0xff, 0xff),
8989 -+ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
8990 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0105, 0xff, 0xff, 0xff) },
8991 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0106, 0xff, 0xff, 0xff) },
8992 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0108, 0xff, 0xff, 0xff) },
8993 -- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0113, 0xff, 0xff, 0xff) },
8994 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0113, 0xff, 0xff, 0xff),
8995 -+ .driver_info = (kernel_ulong_t)&net_intf5_blacklist },
8996 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0117, 0xff, 0xff, 0xff) },
8997 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0118, 0xff, 0xff, 0xff) },
8998 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0121, 0xff, 0xff, 0xff) },
8999 -@@ -1214,10 +1254,35 @@ static void __exit option_exit(void)
9000 - module_init(option_init);
9001 - module_exit(option_exit);
9002 -
9003 -+static bool is_blacklisted(const u8 ifnum, enum option_blacklist_reason reason,
9004 -+ const struct option_blacklist_info *blacklist)
9005 -+{
9006 -+ unsigned long num;
9007 -+ const unsigned long *intf_list;
9008 -+
9009 -+ if (blacklist) {
9010 -+ if (reason == OPTION_BLACKLIST_SENDSETUP)
9011 -+ intf_list = &blacklist->sendsetup;
9012 -+ else if (reason == OPTION_BLACKLIST_RESERVED_IF)
9013 -+ intf_list = &blacklist->reserved;
9014 -+ else {
9015 -+ BUG_ON(reason);
9016 -+ return false;
9017 -+ }
9018 -+
9019 -+ for_each_set_bit(num, intf_list, MAX_BL_NUM + 1) {
9020 -+ if (num == ifnum)
9021 -+ return true;
9022 -+ }
9023 -+ }
9024 -+ return false;
9025 -+}
9026 -+
9027 - static int option_probe(struct usb_serial *serial,
9028 - const struct usb_device_id *id)
9029 - {
9030 - struct usb_wwan_intf_private *data;
9031 -+
9032 - /* D-Link DWM 652 still exposes CD-Rom emulation interface in modem mode */
9033 - if (serial->dev->descriptor.idVendor == DLINK_VENDOR_ID &&
9034 - serial->dev->descriptor.idProduct == DLINK_PRODUCT_DWM_652 &&
9035 -@@ -1230,14 +1295,14 @@ static int option_probe(struct usb_serial *serial,
9036 - serial->interface->cur_altsetting->desc.bInterfaceClass != 0xff)
9037 - return -ENODEV;
9038 -
9039 -- /* Don't bind network interfaces on Huawei K3765, K4505 & K4605 */
9040 -- if (serial->dev->descriptor.idVendor == HUAWEI_VENDOR_ID &&
9041 -- (serial->dev->descriptor.idProduct == HUAWEI_PRODUCT_K3765 ||
9042 -- serial->dev->descriptor.idProduct == HUAWEI_PRODUCT_K4505 ||
9043 -- serial->dev->descriptor.idProduct == HUAWEI_PRODUCT_K4605) &&
9044 -- (serial->interface->cur_altsetting->desc.bInterfaceNumber == 1 ||
9045 -- serial->interface->cur_altsetting->desc.bInterfaceNumber == 2))
9046 -- return -ENODEV;
9047 -+ /* Don't bind reserved interfaces (like network ones) which often have
9048 -+ * the same class/subclass/protocol as the serial interfaces. Look at
9049 -+ * the Windows driver .INF files for reserved interface numbers.
9050 -+ */
9051 -+ if (is_blacklisted(
9052 -+ serial->interface->cur_altsetting->desc.bInterfaceNumber,
9053 -+ OPTION_BLACKLIST_RESERVED_IF,
9054 -+ (const struct option_blacklist_info *) id->driver_info))
9055 -
9056 - /* Don't bind network interface on Samsung GT-B3730, it is handled by a separate module */
9057 - if (serial->dev->descriptor.idVendor == SAMSUNG_VENDOR_ID &&
9058 -@@ -1246,7 +1311,6 @@ static int option_probe(struct usb_serial *serial,
9059 - return -ENODEV;
9060 -
9061 - data = serial->private = kzalloc(sizeof(struct usb_wwan_intf_private), GFP_KERNEL);
9062 --
9063 - if (!data)
9064 - return -ENOMEM;
9065 - data->send_setup = option_send_setup;
9066 -@@ -1255,23 +1319,6 @@ static int option_probe(struct usb_serial *serial,
9067 - return 0;
9068 - }
9069 -
9070 --static enum option_blacklist_reason is_blacklisted(const u8 ifnum,
9071 -- const struct option_blacklist_info *blacklist)
9072 --{
9073 -- const u8 *info;
9074 -- int i;
9075 --
9076 -- if (blacklist) {
9077 -- info = blacklist->ifaceinfo;
9078 --
9079 -- for (i = 0; i < blacklist->infolen; i++) {
9080 -- if (info[i] == ifnum)
9081 -- return blacklist->reason;
9082 -- }
9083 -- }
9084 -- return OPTION_BLACKLIST_NONE;
9085 --}
9086 --
9087 - static void option_instat_callback(struct urb *urb)
9088 - {
9089 - int err;
9090 -@@ -1343,9 +1390,8 @@ static int option_send_setup(struct usb_serial_port *port)
9091 - int val = 0;
9092 - dbg("%s", __func__);
9093 -
9094 -- if (is_blacklisted(ifNum,
9095 -- (struct option_blacklist_info *) intfdata->private)
9096 -- == OPTION_BLACKLIST_SENDSETUP) {
9097 -+ if (is_blacklisted(ifNum, OPTION_BLACKLIST_SENDSETUP,
9098 -+ (struct option_blacklist_info *) intfdata->private)) {
9099 - dbg("No send_setup on blacklisted interface #%d\n", ifNum);
9100 - return -EIO;
9101 - }
9102 -diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
9103 -index 1d33260..614fabc 100644
9104 ---- a/drivers/usb/serial/pl2303.c
9105 -+++ b/drivers/usb/serial/pl2303.c
9106 -@@ -92,6 +92,7 @@ static const struct usb_device_id id_table[] = {
9107 - { USB_DEVICE(SANWA_VENDOR_ID, SANWA_PRODUCT_ID) },
9108 - { USB_DEVICE(ADLINK_VENDOR_ID, ADLINK_ND6530_PRODUCT_ID) },
9109 - { USB_DEVICE(WINCHIPHEAD_VENDOR_ID, WINCHIPHEAD_USBSER_PRODUCT_ID) },
9110 -+ { USB_DEVICE(SMART_VENDOR_ID, SMART_PRODUCT_ID) },
9111 - { } /* Terminating entry */
9112 - };
9113 -
9114 -diff --git a/drivers/usb/serial/pl2303.h b/drivers/usb/serial/pl2303.h
9115 -index ca0d237..3d10d7f 100644
9116 ---- a/drivers/usb/serial/pl2303.h
9117 -+++ b/drivers/usb/serial/pl2303.h
9118 -@@ -148,3 +148,8 @@
9119 - /* WinChipHead USB->RS 232 adapter */
9120 - #define WINCHIPHEAD_VENDOR_ID 0x4348
9121 - #define WINCHIPHEAD_USBSER_PRODUCT_ID 0x5523
9122 -+
9123 -+/* SMART USB Serial Adapter */
9124 -+#define SMART_VENDOR_ID 0x0b8c
9125 -+#define SMART_PRODUCT_ID 0x2303
9126 -+
9127 -diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c
9128 -index 27f9ae4..b9bb247 100644
9129 ---- a/drivers/usb/serial/qcserial.c
9130 -+++ b/drivers/usb/serial/qcserial.c
9131 -@@ -28,6 +28,7 @@ static const struct usb_device_id id_table[] = {
9132 - {USB_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */
9133 - {USB_DEVICE(0x03f0, 0x1f1d)}, /* HP un2400 Gobi Modem Device */
9134 - {USB_DEVICE(0x03f0, 0x201d)}, /* HP un2400 Gobi QDL Device */
9135 -+ {USB_DEVICE(0x03f0, 0x371d)}, /* HP un2430 Mobile Broadband Module */
9136 - {USB_DEVICE(0x04da, 0x250d)}, /* Panasonic Gobi Modem device */
9137 - {USB_DEVICE(0x04da, 0x250c)}, /* Panasonic Gobi QDL device */
9138 - {USB_DEVICE(0x413c, 0x8172)}, /* Dell Gobi Modem device */
9139 -@@ -79,10 +80,12 @@ static const struct usb_device_id id_table[] = {
9140 - {USB_DEVICE(0x1199, 0x9008)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */
9141 - {USB_DEVICE(0x1199, 0x9009)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */
9142 - {USB_DEVICE(0x1199, 0x900a)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */
9143 -+ {USB_DEVICE(0x1199, 0x9011)}, /* Sierra Wireless Gobi 2000 Modem device (MC8305) */
9144 - {USB_DEVICE(0x16d8, 0x8001)}, /* CMDTech Gobi 2000 QDL device (VU922) */
9145 - {USB_DEVICE(0x16d8, 0x8002)}, /* CMDTech Gobi 2000 Modem device (VU922) */
9146 - {USB_DEVICE(0x05c6, 0x9204)}, /* Gobi 2000 QDL device */
9147 - {USB_DEVICE(0x05c6, 0x9205)}, /* Gobi 2000 Modem device */
9148 -+ {USB_DEVICE(0x1199, 0x9013)}, /* Sierra Wireless Gobi 3000 Modem device (MC8355) */
9149 - { } /* Terminating entry */
9150 - };
9151 - MODULE_DEVICE_TABLE(usb, id_table);
9152 -diff --git a/drivers/usb/storage/transport.c b/drivers/usb/storage/transport.c
9153 -index e8ae21b..ff32390 100644
9154 ---- a/drivers/usb/storage/transport.c
9155 -+++ b/drivers/usb/storage/transport.c
9156 -@@ -691,6 +691,9 @@ void usb_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us)
9157 - int temp_result;
9158 - struct scsi_eh_save ses;
9159 - int sense_size = US_SENSE_SIZE;
9160 -+ struct scsi_sense_hdr sshdr;
9161 -+ const u8 *scdd;
9162 -+ u8 fm_ili;
9163 -
9164 - /* device supports and needs bigger sense buffer */
9165 - if (us->fflags & US_FL_SANE_SENSE)
9166 -@@ -774,32 +777,30 @@ Retry_Sense:
9167 - srb->sense_buffer[7] = (US_SENSE_SIZE - 8);
9168 - }
9169 -
9170 -+ scsi_normalize_sense(srb->sense_buffer, SCSI_SENSE_BUFFERSIZE,
9171 -+ &sshdr);
9172 -+
9173 - US_DEBUGP("-- Result from auto-sense is %d\n", temp_result);
9174 - US_DEBUGP("-- code: 0x%x, key: 0x%x, ASC: 0x%x, ASCQ: 0x%x\n",
9175 -- srb->sense_buffer[0],
9176 -- srb->sense_buffer[2] & 0xf,
9177 -- srb->sense_buffer[12],
9178 -- srb->sense_buffer[13]);
9179 -+ sshdr.response_code, sshdr.sense_key,
9180 -+ sshdr.asc, sshdr.ascq);
9181 - #ifdef CONFIG_USB_STORAGE_DEBUG
9182 -- usb_stor_show_sense(
9183 -- srb->sense_buffer[2] & 0xf,
9184 -- srb->sense_buffer[12],
9185 -- srb->sense_buffer[13]);
9186 -+ usb_stor_show_sense(sshdr.sense_key, sshdr.asc, sshdr.ascq);
9187 - #endif
9188 -
9189 - /* set the result so the higher layers expect this data */
9190 - srb->result = SAM_STAT_CHECK_CONDITION;
9191 -
9192 -+ scdd = scsi_sense_desc_find(srb->sense_buffer,
9193 -+ SCSI_SENSE_BUFFERSIZE, 4);
9194 -+ fm_ili = (scdd ? scdd[3] : srb->sense_buffer[2]) & 0xA0;
9195 -+
9196 - /* We often get empty sense data. This could indicate that
9197 - * everything worked or that there was an unspecified
9198 - * problem. We have to decide which.
9199 - */
9200 -- if ( /* Filemark 0, ignore EOM, ILI 0, no sense */
9201 -- (srb->sense_buffer[2] & 0xaf) == 0 &&
9202 -- /* No ASC or ASCQ */
9203 -- srb->sense_buffer[12] == 0 &&
9204 -- srb->sense_buffer[13] == 0) {
9205 --
9206 -+ if (sshdr.sense_key == 0 && sshdr.asc == 0 && sshdr.ascq == 0 &&
9207 -+ fm_ili == 0) {
9208 - /* If things are really okay, then let's show that.
9209 - * Zero out the sense buffer so the higher layers
9210 - * won't realize we did an unsolicited auto-sense.
9211 -@@ -814,7 +815,10 @@ Retry_Sense:
9212 - */
9213 - } else {
9214 - srb->result = DID_ERROR << 16;
9215 -- srb->sense_buffer[2] = HARDWARE_ERROR;
9216 -+ if ((sshdr.response_code & 0x72) == 0x72)
9217 -+ srb->sense_buffer[1] = HARDWARE_ERROR;
9218 -+ else
9219 -+ srb->sense_buffer[2] = HARDWARE_ERROR;
9220 - }
9221 - }
9222 - }
9223 -diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
9224 -index 0ca0958..c325e69 100644
9225 ---- a/drivers/usb/storage/usb.c
9226 -+++ b/drivers/usb/storage/usb.c
9227 -@@ -831,12 +831,22 @@ static int usb_stor_scan_thread(void * __us)
9228 -
9229 - dev_dbg(dev, "device found\n");
9230 -
9231 -- set_freezable();
9232 -- /* Wait for the timeout to expire or for a disconnect */
9233 -+ set_freezable_with_signal();
9234 -+ /*
9235 -+ * Wait for the timeout to expire or for a disconnect
9236 -+ *
9237 -+ * We can't freeze in this thread or we risk causing khubd to
9238 -+ * fail to freeze, but we can't be non-freezable either. Nor can
9239 -+ * khubd freeze while waiting for scanning to complete as it may
9240 -+ * hold the device lock, causing a hang when suspending devices.
9241 -+ * So we request a fake signal when freezing and use
9242 -+ * interruptible sleep to kick us out of our wait early when
9243 -+ * freezing happens.
9244 -+ */
9245 - if (delay_use > 0) {
9246 - dev_dbg(dev, "waiting for device to settle "
9247 - "before scanning\n");
9248 -- wait_event_freezable_timeout(us->delay_wait,
9249 -+ wait_event_interruptible_timeout(us->delay_wait,
9250 - test_bit(US_FLIDX_DONT_SCAN, &us->dflags),
9251 - delay_use * HZ);
9252 - }
9253 -diff --git a/drivers/video/carminefb.c b/drivers/video/carminefb.c
9254 -index caaa27d..cb09aa1f 100644
9255 ---- a/drivers/video/carminefb.c
9256 -+++ b/drivers/video/carminefb.c
9257 -@@ -32,11 +32,11 @@
9258 - #define CARMINEFB_DEFAULT_VIDEO_MODE 1
9259 -
9260 - static unsigned int fb_mode = CARMINEFB_DEFAULT_VIDEO_MODE;
9261 --module_param(fb_mode, uint, 444);
9262 -+module_param(fb_mode, uint, 0444);
9263 - MODULE_PARM_DESC(fb_mode, "Initial video mode as integer.");
9264 -
9265 - static char *fb_mode_str;
9266 --module_param(fb_mode_str, charp, 444);
9267 -+module_param(fb_mode_str, charp, 0444);
9268 - MODULE_PARM_DESC(fb_mode_str, "Initial video mode in characters.");
9269 -
9270 - /*
9271 -@@ -46,7 +46,7 @@ MODULE_PARM_DESC(fb_mode_str, "Initial video mode in characters.");
9272 - * 0b010 Display 1
9273 - */
9274 - static int fb_displays = CARMINE_USE_DISPLAY0 | CARMINE_USE_DISPLAY1;
9275 --module_param(fb_displays, int, 444);
9276 -+module_param(fb_displays, int, 0444);
9277 - MODULE_PARM_DESC(fb_displays, "Bit mode, which displays are used");
9278 -
9279 - struct carmine_hw {
9280 -diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
9281 -index 5aac00e..ad93629 100644
9282 ---- a/drivers/video/fbmem.c
9283 -+++ b/drivers/video/fbmem.c
9284 -@@ -1738,8 +1738,6 @@ void fb_set_suspend(struct fb_info *info, int state)
9285 - {
9286 - struct fb_event event;
9287 -
9288 -- if (!lock_fb_info(info))
9289 -- return;
9290 - event.info = info;
9291 - if (state) {
9292 - fb_notifier_call_chain(FB_EVENT_SUSPEND, &event);
9293 -@@ -1748,7 +1746,6 @@ void fb_set_suspend(struct fb_info *info, int state)
9294 - info->state = FBINFO_STATE_RUNNING;
9295 - fb_notifier_call_chain(FB_EVENT_RESUME, &event);
9296 - }
9297 -- unlock_fb_info(info);
9298 - }
9299 -
9300 - /**
9301 -diff --git a/drivers/video/fbsysfs.c b/drivers/video/fbsysfs.c
9302 -index 04251ce..67afa9c 100644
9303 ---- a/drivers/video/fbsysfs.c
9304 -+++ b/drivers/video/fbsysfs.c
9305 -@@ -399,9 +399,12 @@ static ssize_t store_fbstate(struct device *device,
9306 -
9307 - state = simple_strtoul(buf, &last, 0);
9308 -
9309 -+ if (!lock_fb_info(fb_info))
9310 -+ return -ENODEV;
9311 - console_lock();
9312 - fb_set_suspend(fb_info, (int)state);
9313 - console_unlock();
9314 -+ unlock_fb_info(fb_info);
9315 -
9316 - return count;
9317 - }
9318 -diff --git a/drivers/video/sh_mobile_hdmi.c b/drivers/video/sh_mobile_hdmi.c
9319 -index 7d54e2c..647ba98 100644
9320 ---- a/drivers/video/sh_mobile_hdmi.c
9321 -+++ b/drivers/video/sh_mobile_hdmi.c
9322 -@@ -1111,6 +1111,7 @@ static long sh_hdmi_clk_configure(struct sh_hdmi *hdmi, unsigned long hdmi_rate,
9323 - static void sh_hdmi_edid_work_fn(struct work_struct *work)
9324 - {
9325 - struct sh_hdmi *hdmi = container_of(work, struct sh_hdmi, edid_work.work);
9326 -+ struct fb_info *info;
9327 - struct sh_mobile_hdmi_info *pdata = hdmi->dev->platform_data;
9328 - struct sh_mobile_lcdc_chan *ch;
9329 - int ret;
9330 -@@ -1123,8 +1124,9 @@ static void sh_hdmi_edid_work_fn(struct work_struct *work)
9331 -
9332 - mutex_lock(&hdmi->mutex);
9333 -
9334 -+ info = hdmi->info;
9335 -+
9336 - if (hdmi->hp_state == HDMI_HOTPLUG_CONNECTED) {
9337 -- struct fb_info *info = hdmi->info;
9338 - unsigned long parent_rate = 0, hdmi_rate;
9339 -
9340 - ret = sh_hdmi_read_edid(hdmi, &hdmi_rate, &parent_rate);
9341 -@@ -1148,42 +1150,45 @@ static void sh_hdmi_edid_work_fn(struct work_struct *work)
9342 -
9343 - ch = info->par;
9344 -
9345 -- console_lock();
9346 -+ if (lock_fb_info(info)) {
9347 -+ console_lock();
9348 -
9349 -- /* HDMI plug in */
9350 -- if (!sh_hdmi_must_reconfigure(hdmi) &&
9351 -- info->state == FBINFO_STATE_RUNNING) {
9352 -- /*
9353 -- * First activation with the default monitor - just turn
9354 -- * on, if we run a resume here, the logo disappears
9355 -- */
9356 -- if (lock_fb_info(info)) {
9357 -+ /* HDMI plug in */
9358 -+ if (!sh_hdmi_must_reconfigure(hdmi) &&
9359 -+ info->state == FBINFO_STATE_RUNNING) {
9360 -+ /*
9361 -+ * First activation with the default monitor - just turn
9362 -+ * on, if we run a resume here, the logo disappears
9363 -+ */
9364 - info->var.width = hdmi->var.width;
9365 - info->var.height = hdmi->var.height;
9366 - sh_hdmi_display_on(hdmi, info);
9367 -- unlock_fb_info(info);
9368 -+ } else {
9369 -+ /* New monitor or have to wake up */
9370 -+ fb_set_suspend(info, 0);
9371 - }
9372 -- } else {
9373 -- /* New monitor or have to wake up */
9374 -- fb_set_suspend(info, 0);
9375 -- }
9376 -
9377 -- console_unlock();
9378 -+ console_unlock();
9379 -+ unlock_fb_info(info);
9380 -+ }
9381 - } else {
9382 - ret = 0;
9383 -- if (!hdmi->info)
9384 -+ if (!info)
9385 - goto out;
9386 -
9387 - hdmi->monspec.modedb_len = 0;
9388 - fb_destroy_modedb(hdmi->monspec.modedb);
9389 - hdmi->monspec.modedb = NULL;
9390 -
9391 -- console_lock();
9392 -+ if (lock_fb_info(info)) {
9393 -+ console_lock();
9394 -
9395 -- /* HDMI disconnect */
9396 -- fb_set_suspend(hdmi->info, 1);
9397 -+ /* HDMI disconnect */
9398 -+ fb_set_suspend(info, 1);
9399 -
9400 -- console_unlock();
9401 -+ console_unlock();
9402 -+ unlock_fb_info(info);
9403 -+ }
9404 - }
9405 -
9406 - out:
9407 -diff --git a/drivers/video/via/via_modesetting.h b/drivers/video/via/via_modesetting.h
9408 -index ae35cfd..0138845 100644
9409 ---- a/drivers/video/via/via_modesetting.h
9410 -+++ b/drivers/video/via/via_modesetting.h
9411 -@@ -28,6 +28,11 @@
9412 -
9413 - #include <linux/types.h>
9414 -
9415 -+
9416 -+#define VIA_PITCH_SIZE (1<<3)
9417 -+#define VIA_PITCH_MAX 0x3FF8
9418 -+
9419 -+
9420 - void via_set_primary_address(u32 addr);
9421 - void via_set_secondary_address(u32 addr);
9422 - void via_set_primary_pitch(u32 pitch);
9423 -diff --git a/drivers/video/via/viafbdev.c b/drivers/video/via/viafbdev.c
9424 -index cf43c80..dd1276e 100644
9425 ---- a/drivers/video/via/viafbdev.c
9426 -+++ b/drivers/video/via/viafbdev.c
9427 -@@ -151,7 +151,8 @@ static void viafb_update_fix(struct fb_info *info)
9428 -
9429 - info->fix.visual =
9430 - bpp == 8 ? FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_TRUECOLOR;
9431 -- info->fix.line_length = (info->var.xres_virtual * bpp / 8 + 7) & ~7;
9432 -+ info->fix.line_length = ALIGN(info->var.xres_virtual * bpp / 8,
9433 -+ VIA_PITCH_SIZE);
9434 - }
9435 -
9436 - static void viafb_setup_fixinfo(struct fb_fix_screeninfo *fix,
9437 -@@ -238,8 +239,12 @@ static int viafb_check_var(struct fb_var_screeninfo *var,
9438 - depth = 24;
9439 -
9440 - viafb_fill_var_color_info(var, depth);
9441 -- line = (var->xres_virtual * var->bits_per_pixel / 8 + 7) & ~7;
9442 -- if (line * var->yres_virtual > ppar->memsize)
9443 -+ if (var->xres_virtual < var->xres)
9444 -+ var->xres_virtual = var->xres;
9445 -+
9446 -+ line = ALIGN(var->xres_virtual * var->bits_per_pixel / 8,
9447 -+ VIA_PITCH_SIZE);
9448 -+ if (line > VIA_PITCH_MAX || line * var->yres_virtual > ppar->memsize)
9449 - return -EINVAL;
9450 -
9451 - /* Based on var passed in to calculate the refresh,
9452 -@@ -348,8 +353,9 @@ static int viafb_pan_display(struct fb_var_screeninfo *var,
9453 - struct fb_info *info)
9454 - {
9455 - struct viafb_par *viapar = info->par;
9456 -- u32 vram_addr = (var->yoffset * var->xres_virtual + var->xoffset)
9457 -- * (var->bits_per_pixel / 8) + viapar->vram_addr;
9458 -+ u32 vram_addr = viapar->vram_addr
9459 -+ + var->yoffset * info->fix.line_length
9460 -+ + var->xoffset * info->var.bits_per_pixel / 8;
9461 -
9462 - DEBUG_MSG(KERN_DEBUG "viafb_pan_display, address = %d\n", vram_addr);
9463 - if (!viafb_dual_fb) {
9464 -diff --git a/drivers/w1/slaves/w1_ds2780.c b/drivers/w1/slaves/w1_ds2780.c
9465 -index 274c8f3..505b17d 100644
9466 ---- a/drivers/w1/slaves/w1_ds2780.c
9467 -+++ b/drivers/w1/slaves/w1_ds2780.c
9468 -@@ -26,20 +26,14 @@
9469 - #include "../w1_family.h"
9470 - #include "w1_ds2780.h"
9471 -
9472 --int w1_ds2780_io(struct device *dev, char *buf, int addr, size_t count,
9473 -- int io)
9474 -+static int w1_ds2780_do_io(struct device *dev, char *buf, int addr,
9475 -+ size_t count, int io)
9476 - {
9477 - struct w1_slave *sl = container_of(dev, struct w1_slave, dev);
9478 -
9479 -- if (!dev)
9480 -- return -ENODEV;
9481 -+ if (addr > DS2780_DATA_SIZE || addr < 0)
9482 -+ return 0;
9483 -
9484 -- mutex_lock(&sl->master->mutex);
9485 --
9486 -- if (addr > DS2780_DATA_SIZE || addr < 0) {
9487 -- count = 0;
9488 -- goto out;
9489 -- }
9490 - count = min_t(int, count, DS2780_DATA_SIZE - addr);
9491 -
9492 - if (w1_reset_select_slave(sl) == 0) {
9493 -@@ -47,7 +41,6 @@ int w1_ds2780_io(struct device *dev, char *buf, int addr, size_t count,
9494 - w1_write_8(sl->master, W1_DS2780_WRITE_DATA);
9495 - w1_write_8(sl->master, addr);
9496 - w1_write_block(sl->master, buf, count);
9497 -- /* XXX w1_write_block returns void, not n_written */
9498 - } else {
9499 - w1_write_8(sl->master, W1_DS2780_READ_DATA);
9500 - w1_write_8(sl->master, addr);
9501 -@@ -55,13 +48,42 @@ int w1_ds2780_io(struct device *dev, char *buf, int addr, size_t count,
9502 - }
9503 - }
9504 -
9505 --out:
9506 -+ return count;
9507 -+}
9508 -+
9509 -+int w1_ds2780_io(struct device *dev, char *buf, int addr, size_t count,
9510 -+ int io)
9511 -+{
9512 -+ struct w1_slave *sl = container_of(dev, struct w1_slave, dev);
9513 -+ int ret;
9514 -+
9515 -+ if (!dev)
9516 -+ return -ENODEV;
9517 -+
9518 -+ mutex_lock(&sl->master->mutex);
9519 -+
9520 -+ ret = w1_ds2780_do_io(dev, buf, addr, count, io);
9521 -+
9522 - mutex_unlock(&sl->master->mutex);
9523 -
9524 -- return count;
9525 -+ return ret;
9526 - }
9527 - EXPORT_SYMBOL(w1_ds2780_io);
9528 -
9529 -+int w1_ds2780_io_nolock(struct device *dev, char *buf, int addr, size_t count,
9530 -+ int io)
9531 -+{
9532 -+ int ret;
9533 -+
9534 -+ if (!dev)
9535 -+ return -ENODEV;
9536 -+
9537 -+ ret = w1_ds2780_do_io(dev, buf, addr, count, io);
9538 -+
9539 -+ return ret;
9540 -+}
9541 -+EXPORT_SYMBOL(w1_ds2780_io_nolock);
9542 -+
9543 - int w1_ds2780_eeprom_cmd(struct device *dev, int addr, int cmd)
9544 - {
9545 - struct w1_slave *sl = container_of(dev, struct w1_slave, dev);
9546 -diff --git a/drivers/w1/slaves/w1_ds2780.h b/drivers/w1/slaves/w1_ds2780.h
9547 -index a1fba79..7373793 100644
9548 ---- a/drivers/w1/slaves/w1_ds2780.h
9549 -+++ b/drivers/w1/slaves/w1_ds2780.h
9550 -@@ -124,6 +124,8 @@
9551 -
9552 - extern int w1_ds2780_io(struct device *dev, char *buf, int addr, size_t count,
9553 - int io);
9554 -+extern int w1_ds2780_io_nolock(struct device *dev, char *buf, int addr,
9555 -+ size_t count, int io);
9556 - extern int w1_ds2780_eeprom_cmd(struct device *dev, int addr, int cmd);
9557 -
9558 - #endif /* !_W1_DS2780_H */
9559 -diff --git a/drivers/xen/events.c b/drivers/xen/events.c
9560 -index 30df85d..a5493f8 100644
9561 ---- a/drivers/xen/events.c
9562 -+++ b/drivers/xen/events.c
9563 -@@ -1026,7 +1026,7 @@ int bind_ipi_to_irqhandler(enum ipi_vector ipi,
9564 - if (irq < 0)
9565 - return irq;
9566 -
9567 -- irqflags |= IRQF_NO_SUSPEND | IRQF_FORCE_RESUME;
9568 -+ irqflags |= IRQF_NO_SUSPEND | IRQF_FORCE_RESUME | IRQF_EARLY_RESUME;
9569 - retval = request_irq(irq, handler, irqflags, devname, dev_id);
9570 - if (retval != 0) {
9571 - unbind_from_irq(irq);
9572 -diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
9573 -index 6e8c15a..84f317e 100644
9574 ---- a/drivers/xen/swiotlb-xen.c
9575 -+++ b/drivers/xen/swiotlb-xen.c
9576 -@@ -278,9 +278,10 @@ dma_addr_t xen_swiotlb_map_page(struct device *dev, struct page *page,
9577 - /*
9578 - * Ensure that the address returned is DMA'ble
9579 - */
9580 -- if (!dma_capable(dev, dev_addr, size))
9581 -- panic("map_single: bounce buffer is not DMA'ble");
9582 --
9583 -+ if (!dma_capable(dev, dev_addr, size)) {
9584 -+ swiotlb_tbl_unmap_single(dev, map, size, dir);
9585 -+ dev_addr = 0;
9586 -+ }
9587 - return dev_addr;
9588 - }
9589 - EXPORT_SYMBOL_GPL(xen_swiotlb_map_page);
9590 -diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
9591 -index 303983f..9ba2ac7 100644
9592 ---- a/fs/binfmt_elf.c
9593 -+++ b/fs/binfmt_elf.c
9594 -@@ -796,7 +796,16 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
9595 - * might try to exec. This is because the brk will
9596 - * follow the loader, and is not movable. */
9597 - #if defined(CONFIG_X86) || defined(CONFIG_ARM)
9598 -- load_bias = 0;
9599 -+ /* Memory randomization might have been switched off
9600 -+ * in runtime via sysctl.
9601 -+ * If that is the case, retain the original non-zero
9602 -+ * load_bias value in order to establish proper
9603 -+ * non-randomized mappings.
9604 -+ */
9605 -+ if (current->flags & PF_RANDOMIZE)
9606 -+ load_bias = 0;
9607 -+ else
9608 -+ load_bias = ELF_PAGESTART(ELF_ET_DYN_BASE - vaddr);
9609 - #else
9610 - load_bias = ELF_PAGESTART(ELF_ET_DYN_BASE - vaddr);
9611 - #endif
9612 -diff --git a/fs/block_dev.c b/fs/block_dev.c
9613 -index 194cf66..34503ba 100644
9614 ---- a/fs/block_dev.c
9615 -+++ b/fs/block_dev.c
9616 -@@ -1075,6 +1075,7 @@ static int __blkdev_put(struct block_device *bdev, fmode_t mode, int for_part);
9617 - static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
9618 - {
9619 - struct gendisk *disk;
9620 -+ struct module *owner;
9621 - int ret;
9622 - int partno;
9623 - int perm = 0;
9624 -@@ -1100,6 +1101,7 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
9625 - disk = get_gendisk(bdev->bd_dev, &partno);
9626 - if (!disk)
9627 - goto out;
9628 -+ owner = disk->fops->owner;
9629 -
9630 - disk_block_events(disk);
9631 - mutex_lock_nested(&bdev->bd_mutex, for_part);
9632 -@@ -1127,8 +1129,8 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
9633 - bdev->bd_disk = NULL;
9634 - mutex_unlock(&bdev->bd_mutex);
9635 - disk_unblock_events(disk);
9636 -- module_put(disk->fops->owner);
9637 - put_disk(disk);
9638 -+ module_put(owner);
9639 - goto restart;
9640 - }
9641 - }
9642 -@@ -1184,8 +1186,8 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
9643 - goto out_unlock_bdev;
9644 - }
9645 - /* only one opener holds refs to the module and disk */
9646 -- module_put(disk->fops->owner);
9647 - put_disk(disk);
9648 -+ module_put(owner);
9649 - }
9650 - bdev->bd_openers++;
9651 - if (for_part)
9652 -@@ -1205,8 +1207,8 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
9653 - out_unlock_bdev:
9654 - mutex_unlock(&bdev->bd_mutex);
9655 - disk_unblock_events(disk);
9656 -- module_put(disk->fops->owner);
9657 - put_disk(disk);
9658 -+ module_put(owner);
9659 - out:
9660 - bdput(bdev);
9661 -
9662 -@@ -1432,14 +1434,15 @@ static int __blkdev_put(struct block_device *bdev, fmode_t mode, int for_part)
9663 - if (!bdev->bd_openers) {
9664 - struct module *owner = disk->fops->owner;
9665 -
9666 -- put_disk(disk);
9667 -- module_put(owner);
9668 - disk_put_part(bdev->bd_part);
9669 - bdev->bd_part = NULL;
9670 - bdev->bd_disk = NULL;
9671 - if (bdev != bdev->bd_contains)
9672 - victim = bdev->bd_contains;
9673 - bdev->bd_contains = NULL;
9674 -+
9675 -+ put_disk(disk);
9676 -+ module_put(owner);
9677 - }
9678 - mutex_unlock(&bdev->bd_mutex);
9679 - bdput(bdev);
9680 -diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
9681 -index 2451627..cb85825 100644
9682 ---- a/fs/cifs/connect.c
9683 -+++ b/fs/cifs/connect.c
9684 -@@ -2767,10 +2767,10 @@ void cifs_setup_cifs_sb(struct smb_vol *pvolume_info,
9685 -
9686 - /*
9687 - * When the server doesn't allow large posix writes, only allow a wsize of
9688 -- * 128k minus the size of the WRITE_AND_X header. That allows for a write up
9689 -+ * 2^17-1 minus the size of the WRITE_AND_X header. That allows for a write up
9690 - * to the maximum size described by RFC1002.
9691 - */
9692 --#define CIFS_MAX_RFC1002_WSIZE (128 * 1024 - sizeof(WRITE_REQ) + 4)
9693 -+#define CIFS_MAX_RFC1002_WSIZE ((1<<17) - 1 - sizeof(WRITE_REQ) + 4)
9694 -
9695 - /*
9696 - * The default wsize is 1M. find_get_pages seems to return a maximum of 256
9697 -diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
9698 -index a7b2dcd..745e5cd 100644
9699 ---- a/fs/cifs/inode.c
9700 -+++ b/fs/cifs/inode.c
9701 -@@ -562,7 +562,16 @@ int cifs_get_file_info(struct file *filp)
9702 -
9703 - xid = GetXid();
9704 - rc = CIFSSMBQFileInfo(xid, tcon, cfile->netfid, &find_data);
9705 -- if (rc == -EOPNOTSUPP || rc == -EINVAL) {
9706 -+ switch (rc) {
9707 -+ case 0:
9708 -+ cifs_all_info_to_fattr(&fattr, &find_data, cifs_sb, false);
9709 -+ break;
9710 -+ case -EREMOTE:
9711 -+ cifs_create_dfs_fattr(&fattr, inode->i_sb);
9712 -+ rc = 0;
9713 -+ break;
9714 -+ case -EOPNOTSUPP:
9715 -+ case -EINVAL:
9716 - /*
9717 - * FIXME: legacy server -- fall back to path-based call?
9718 - * for now, just skip revalidating and mark inode for
9719 -@@ -570,18 +579,14 @@ int cifs_get_file_info(struct file *filp)
9720 - */
9721 - rc = 0;
9722 - CIFS_I(inode)->time = 0;
9723 -+ default:
9724 - goto cgfi_exit;
9725 -- } else if (rc == -EREMOTE) {
9726 -- cifs_create_dfs_fattr(&fattr, inode->i_sb);
9727 -- rc = 0;
9728 -- } else if (rc)
9729 -- goto cgfi_exit;
9730 -+ }
9731 -
9732 - /*
9733 - * don't bother with SFU junk here -- just mark inode as needing
9734 - * revalidation.
9735 - */
9736 -- cifs_all_info_to_fattr(&fattr, &find_data, cifs_sb, false);
9737 - fattr.cf_uniqueid = CIFS_I(inode)->uniqueid;
9738 - fattr.cf_flags |= CIFS_FATTR_NEED_REVAL;
9739 - cifs_fattr_to_inode(inode, &fattr);
9740 -diff --git a/fs/eventpoll.c b/fs/eventpoll.c
9741 -index f9cfd16..2acaf60 100644
9742 ---- a/fs/eventpoll.c
9743 -+++ b/fs/eventpoll.c
9744 -@@ -70,6 +70,15 @@
9745 - * simultaneous inserts (A into B and B into A) from racing and
9746 - * constructing a cycle without either insert observing that it is
9747 - * going to.
9748 -+ * It is necessary to acquire multiple "ep->mtx"es at once in the
9749 -+ * case when one epoll fd is added to another. In this case, we
9750 -+ * always acquire the locks in the order of nesting (i.e. after
9751 -+ * epoll_ctl(e1, EPOLL_CTL_ADD, e2), e1->mtx will always be acquired
9752 -+ * before e2->mtx). Since we disallow cycles of epoll file
9753 -+ * descriptors, this ensures that the mutexes are well-ordered. In
9754 -+ * order to communicate this nesting to lockdep, when walking a tree
9755 -+ * of epoll file descriptors, we use the current recursion depth as
9756 -+ * the lockdep subkey.
9757 - * It is possible to drop the "ep->mtx" and to use the global
9758 - * mutex "epmutex" (together with "ep->lock") to have it working,
9759 - * but having "ep->mtx" will make the interface more scalable.
9760 -@@ -464,13 +473,15 @@ static void ep_unregister_pollwait(struct eventpoll *ep, struct epitem *epi)
9761 - * @ep: Pointer to the epoll private data structure.
9762 - * @sproc: Pointer to the scan callback.
9763 - * @priv: Private opaque data passed to the @sproc callback.
9764 -+ * @depth: The current depth of recursive f_op->poll calls.
9765 - *
9766 - * Returns: The same integer error code returned by the @sproc callback.
9767 - */
9768 - static int ep_scan_ready_list(struct eventpoll *ep,
9769 - int (*sproc)(struct eventpoll *,
9770 - struct list_head *, void *),
9771 -- void *priv)
9772 -+ void *priv,
9773 -+ int depth)
9774 - {
9775 - int error, pwake = 0;
9776 - unsigned long flags;
9777 -@@ -481,7 +492,7 @@ static int ep_scan_ready_list(struct eventpoll *ep,
9778 - * We need to lock this because we could be hit by
9779 - * eventpoll_release_file() and epoll_ctl().
9780 - */
9781 -- mutex_lock(&ep->mtx);
9782 -+ mutex_lock_nested(&ep->mtx, depth);
9783 -
9784 - /*
9785 - * Steal the ready list, and re-init the original one to the
9786 -@@ -670,7 +681,7 @@ static int ep_read_events_proc(struct eventpoll *ep, struct list_head *head,
9787 -
9788 - static int ep_poll_readyevents_proc(void *priv, void *cookie, int call_nests)
9789 - {
9790 -- return ep_scan_ready_list(priv, ep_read_events_proc, NULL);
9791 -+ return ep_scan_ready_list(priv, ep_read_events_proc, NULL, call_nests + 1);
9792 - }
9793 -
9794 - static unsigned int ep_eventpoll_poll(struct file *file, poll_table *wait)
9795 -@@ -737,7 +748,7 @@ void eventpoll_release_file(struct file *file)
9796 -
9797 - ep = epi->ep;
9798 - list_del_init(&epi->fllink);
9799 -- mutex_lock(&ep->mtx);
9800 -+ mutex_lock_nested(&ep->mtx, 0);
9801 - ep_remove(ep, epi);
9802 - mutex_unlock(&ep->mtx);
9803 - }
9804 -@@ -1134,7 +1145,7 @@ static int ep_send_events(struct eventpoll *ep,
9805 - esed.maxevents = maxevents;
9806 - esed.events = events;
9807 -
9808 -- return ep_scan_ready_list(ep, ep_send_events_proc, &esed);
9809 -+ return ep_scan_ready_list(ep, ep_send_events_proc, &esed, 0);
9810 - }
9811 -
9812 - static inline struct timespec ep_set_mstimeout(long ms)
9813 -@@ -1267,7 +1278,7 @@ static int ep_loop_check_proc(void *priv, void *cookie, int call_nests)
9814 - struct rb_node *rbp;
9815 - struct epitem *epi;
9816 -
9817 -- mutex_lock(&ep->mtx);
9818 -+ mutex_lock_nested(&ep->mtx, call_nests + 1);
9819 - for (rbp = rb_first(&ep->rbr); rbp; rbp = rb_next(rbp)) {
9820 - epi = rb_entry(rbp, struct epitem, rbn);
9821 - if (unlikely(is_file_epoll(epi->ffd.file))) {
9822 -@@ -1409,7 +1420,7 @@ SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd,
9823 - }
9824 -
9825 -
9826 -- mutex_lock(&ep->mtx);
9827 -+ mutex_lock_nested(&ep->mtx, 0);
9828 -
9829 - /*
9830 - * Try to lookup the file inside our RB tree, Since we grabbed "mtx"
9831 -diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
9832 -index 354619a..1a34c1c 100644
9833 ---- a/fs/ext4/ext4.h
9834 -+++ b/fs/ext4/ext4.h
9835 -@@ -175,6 +175,7 @@ struct mpage_da_data {
9836 - */
9837 - #define EXT4_IO_END_UNWRITTEN 0x0001
9838 - #define EXT4_IO_END_ERROR 0x0002
9839 -+#define EXT4_IO_END_QUEUED 0x0004
9840 -
9841 - struct ext4_io_page {
9842 - struct page *p_page;
9843 -@@ -357,8 +358,7 @@ struct flex_groups {
9844 -
9845 - /* Flags that should be inherited by new inodes from their parent. */
9846 - #define EXT4_FL_INHERITED (EXT4_SECRM_FL | EXT4_UNRM_FL | EXT4_COMPR_FL |\
9847 -- EXT4_SYNC_FL | EXT4_IMMUTABLE_FL | EXT4_APPEND_FL |\
9848 -- EXT4_NODUMP_FL | EXT4_NOATIME_FL |\
9849 -+ EXT4_SYNC_FL | EXT4_NODUMP_FL | EXT4_NOATIME_FL |\
9850 - EXT4_NOCOMPR_FL | EXT4_JOURNAL_DATA_FL |\
9851 - EXT4_NOTAIL_FL | EXT4_DIRSYNC_FL)
9852 -
9853 -diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
9854 -index c94774c..1265904 100644
9855 ---- a/fs/ext4/inode.c
9856 -+++ b/fs/ext4/inode.c
9857 -@@ -190,9 +190,6 @@ void ext4_evict_inode(struct inode *inode)
9858 -
9859 - trace_ext4_evict_inode(inode);
9860 -
9861 -- mutex_lock(&inode->i_mutex);
9862 -- ext4_flush_completed_IO(inode);
9863 -- mutex_unlock(&inode->i_mutex);
9864 - ext4_ioend_wait(inode);
9865 -
9866 - if (inode->i_nlink) {
9867 -diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
9868 -index 458a394..3d36d5a 100644
9869 ---- a/fs/ext4/namei.c
9870 -+++ b/fs/ext4/namei.c
9871 -@@ -1589,7 +1589,7 @@ static int ext4_dx_add_entry(handle_t *handle, struct dentry *dentry,
9872 - dxtrace(dx_show_index("node", frames[1].entries));
9873 - dxtrace(dx_show_index("node",
9874 - ((struct dx_node *) bh2->b_data)->entries));
9875 -- err = ext4_handle_dirty_metadata(handle, inode, bh2);
9876 -+ err = ext4_handle_dirty_metadata(handle, dir, bh2);
9877 - if (err)
9878 - goto journal_error;
9879 - brelse (bh2);
9880 -@@ -1615,7 +1615,7 @@ static int ext4_dx_add_entry(handle_t *handle, struct dentry *dentry,
9881 - if (err)
9882 - goto journal_error;
9883 - }
9884 -- err = ext4_handle_dirty_metadata(handle, inode, frames[0].bh);
9885 -+ err = ext4_handle_dirty_metadata(handle, dir, frames[0].bh);
9886 - if (err) {
9887 - ext4_std_error(inode->i_sb, err);
9888 - goto cleanup;
9889 -@@ -1866,7 +1866,7 @@ retry:
9890 - ext4_set_de_type(dir->i_sb, de, S_IFDIR);
9891 - inode->i_nlink = 2;
9892 - BUFFER_TRACE(dir_block, "call ext4_handle_dirty_metadata");
9893 -- err = ext4_handle_dirty_metadata(handle, dir, dir_block);
9894 -+ err = ext4_handle_dirty_metadata(handle, inode, dir_block);
9895 - if (err)
9896 - goto out_clear_inode;
9897 - err = ext4_mark_inode_dirty(handle, inode);
9898 -@@ -2540,7 +2540,7 @@ static int ext4_rename(struct inode *old_dir, struct dentry *old_dentry,
9899 - PARENT_INO(dir_bh->b_data, new_dir->i_sb->s_blocksize) =
9900 - cpu_to_le32(new_dir->i_ino);
9901 - BUFFER_TRACE(dir_bh, "call ext4_handle_dirty_metadata");
9902 -- retval = ext4_handle_dirty_metadata(handle, old_dir, dir_bh);
9903 -+ retval = ext4_handle_dirty_metadata(handle, old_inode, dir_bh);
9904 - if (retval) {
9905 - ext4_std_error(old_dir->i_sb, retval);
9906 - goto end_rename;
9907 -diff --git a/fs/ext4/page-io.c b/fs/ext4/page-io.c
9908 -index 97e5e98..bd6a85e 100644
9909 ---- a/fs/ext4/page-io.c
9910 -+++ b/fs/ext4/page-io.c
9911 -@@ -142,7 +142,23 @@ static void ext4_end_io_work(struct work_struct *work)
9912 - unsigned long flags;
9913 - int ret;
9914 -
9915 -- mutex_lock(&inode->i_mutex);
9916 -+ if (!mutex_trylock(&inode->i_mutex)) {
9917 -+ /*
9918 -+ * Requeue the work instead of waiting so that the work
9919 -+ * items queued after this can be processed.
9920 -+ */
9921 -+ queue_work(EXT4_SB(inode->i_sb)->dio_unwritten_wq, &io->work);
9922 -+ /*
9923 -+ * To prevent the ext4-dio-unwritten thread from keeping
9924 -+ * requeueing end_io requests and occupying cpu for too long,
9925 -+ * yield the cpu if it sees an end_io request that has already
9926 -+ * been requeued.
9927 -+ */
9928 -+ if (io->flag & EXT4_IO_END_QUEUED)
9929 -+ yield();
9930 -+ io->flag |= EXT4_IO_END_QUEUED;
9931 -+ return;
9932 -+ }
9933 - ret = ext4_end_io_nolock(io);
9934 - if (ret < 0) {
9935 - mutex_unlock(&inode->i_mutex);
9936 -diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c
9937 -index c757adc..19fe4e3 100644
9938 ---- a/fs/ext4/xattr.c
9939 -+++ b/fs/ext4/xattr.c
9940 -@@ -820,8 +820,14 @@ inserted:
9941 - if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)))
9942 - goal = goal & EXT4_MAX_BLOCK_FILE_PHYS;
9943 -
9944 -+ /*
9945 -+ * take i_data_sem because we will test
9946 -+ * i_delalloc_reserved_flag in ext4_mb_new_blocks
9947 -+ */
9948 -+ down_read((&EXT4_I(inode)->i_data_sem));
9949 - block = ext4_new_meta_blocks(handle, inode, goal, 0,
9950 - NULL, &error);
9951 -+ up_read((&EXT4_I(inode)->i_data_sem));
9952 - if (error)
9953 - goto cleanup;
9954 -
9955 -diff --git a/fs/hppfs/hppfs.c b/fs/hppfs/hppfs.c
9956 -index 85c098a..9d71c95 100644
9957 ---- a/fs/hppfs/hppfs.c
9958 -+++ b/fs/hppfs/hppfs.c
9959 -@@ -16,6 +16,7 @@
9960 - #include <linux/statfs.h>
9961 - #include <linux/types.h>
9962 - #include <linux/pid_namespace.h>
9963 -+#include <linux/namei.h>
9964 - #include <asm/uaccess.h>
9965 - #include "os.h"
9966 -
9967 -diff --git a/fs/namei.c b/fs/namei.c
9968 -index b456c7a..f7593c0 100644
9969 ---- a/fs/namei.c
9970 -+++ b/fs/namei.c
9971 -@@ -136,7 +136,7 @@ static int do_getname(const char __user *filename, char *page)
9972 - return retval;
9973 - }
9974 -
9975 --static char *getname_flags(const char __user * filename, int flags)
9976 -+static char *getname_flags(const char __user *filename, int flags, int *empty)
9977 - {
9978 - char *tmp, *result;
9979 -
9980 -@@ -147,6 +147,8 @@ static char *getname_flags(const char __user * filename, int flags)
9981 -
9982 - result = tmp;
9983 - if (retval < 0) {
9984 -+ if (retval == -ENOENT && empty)
9985 -+ *empty = 1;
9986 - if (retval != -ENOENT || !(flags & LOOKUP_EMPTY)) {
9987 - __putname(tmp);
9988 - result = ERR_PTR(retval);
9989 -@@ -159,7 +161,7 @@ static char *getname_flags(const char __user * filename, int flags)
9990 -
9991 - char *getname(const char __user * filename)
9992 - {
9993 -- return getname_flags(filename, 0);
9994 -+ return getname_flags(filename, 0, 0);
9995 - }
9996 -
9997 - #ifdef CONFIG_AUDITSYSCALL
9998 -@@ -779,17 +781,20 @@ static int follow_automount(struct path *path, unsigned flags,
9999 - if ((flags & LOOKUP_NO_AUTOMOUNT) && !(flags & LOOKUP_CONTINUE))
10000 - return -EISDIR; /* we actually want to stop here */
10001 -
10002 -- /* We want to mount if someone is trying to open/create a file of any
10003 -- * type under the mountpoint, wants to traverse through the mountpoint
10004 -- * or wants to open the mounted directory.
10005 -+ /* We don't want to mount if someone's just doing a stat -
10006 -+ * unless they're stat'ing a directory and appended a '/' to
10007 -+ * the name.
10008 - *
10009 -- * We don't want to mount if someone's just doing a stat and they've
10010 -- * set AT_SYMLINK_NOFOLLOW - unless they're stat'ing a directory and
10011 -- * appended a '/' to the name.
10012 -+ * We do, however, want to mount if someone wants to open or
10013 -+ * create a file of any type under the mountpoint, wants to
10014 -+ * traverse through the mountpoint or wants to open the
10015 -+ * mounted directory. Also, autofs may mark negative dentries
10016 -+ * as being automount points. These will need the attentions
10017 -+ * of the daemon to instantiate them before they can be used.
10018 - */
10019 -- if (!(flags & LOOKUP_FOLLOW) &&
10020 -- !(flags & (LOOKUP_CONTINUE | LOOKUP_DIRECTORY |
10021 -- LOOKUP_OPEN | LOOKUP_CREATE)))
10022 -+ if (!(flags & (LOOKUP_CONTINUE | LOOKUP_DIRECTORY |
10023 -+ LOOKUP_OPEN | LOOKUP_CREATE | LOOKUP_AUTOMOUNT)) &&
10024 -+ path->dentry->d_inode)
10025 - return -EISDIR;
10026 -
10027 - current->total_link_count++;
10028 -@@ -905,7 +910,7 @@ static int follow_managed(struct path *path, unsigned flags)
10029 - mntput(path->mnt);
10030 - if (ret == -EISDIR)
10031 - ret = 0;
10032 -- return ret;
10033 -+ return ret < 0 ? ret : need_mntput;
10034 - }
10035 -
10036 - int follow_down_one(struct path *path)
10037 -@@ -953,6 +958,7 @@ static bool __follow_mount_rcu(struct nameidata *nd, struct path *path,
10038 - break;
10039 - path->mnt = mounted;
10040 - path->dentry = mounted->mnt_root;
10041 -+ nd->flags |= LOOKUP_JUMPED;
10042 - nd->seq = read_seqcount_begin(&path->dentry->d_seq);
10043 - /*
10044 - * Update the inode too. We don't need to re-check the
10045 -@@ -1227,6 +1233,8 @@ retry:
10046 - path_put_conditional(path, nd);
10047 - return err;
10048 - }
10049 -+ if (err)
10050 -+ nd->flags |= LOOKUP_JUMPED;
10051 - *inode = path->dentry->d_inode;
10052 - return 0;
10053 - }
10054 -@@ -1747,11 +1755,11 @@ struct dentry *lookup_one_len(const char *name, struct dentry *base, int len)
10055 - return __lookup_hash(&this, base, NULL);
10056 - }
10057 -
10058 --int user_path_at(int dfd, const char __user *name, unsigned flags,
10059 -- struct path *path)
10060 -+int user_path_at_empty(int dfd, const char __user *name, unsigned flags,
10061 -+ struct path *path, int *empty)
10062 - {
10063 - struct nameidata nd;
10064 -- char *tmp = getname_flags(name, flags);
10065 -+ char *tmp = getname_flags(name, flags, empty);
10066 - int err = PTR_ERR(tmp);
10067 - if (!IS_ERR(tmp)) {
10068 -
10069 -@@ -1765,6 +1773,12 @@ int user_path_at(int dfd, const char __user *name, unsigned flags,
10070 - return err;
10071 - }
10072 -
10073 -+int user_path_at(int dfd, const char __user *name, unsigned flags,
10074 -+ struct path *path)
10075 -+{
10076 -+ return user_path_at_empty(dfd, name, flags, path, 0);
10077 -+}
10078 -+
10079 - static int user_path_parent(int dfd, const char __user *path,
10080 - struct nameidata *nd, char **name)
10081 - {
10082 -@@ -2107,6 +2121,10 @@ static struct file *do_last(struct nameidata *nd, struct path *path,
10083 - }
10084 -
10085 - /* create side of things */
10086 -+ /*
10087 -+ * This will *only* deal with leaving RCU mode - LOOKUP_JUMPED has been
10088 -+ * cleared when we got to the last component we are about to look up
10089 -+ */
10090 - error = complete_walk(nd);
10091 - if (error)
10092 - return ERR_PTR(error);
10093 -@@ -2175,6 +2193,9 @@ static struct file *do_last(struct nameidata *nd, struct path *path,
10094 - if (error < 0)
10095 - goto exit_dput;
10096 -
10097 -+ if (error)
10098 -+ nd->flags |= LOOKUP_JUMPED;
10099 -+
10100 - error = -ENOENT;
10101 - if (!path->dentry->d_inode)
10102 - goto exit_dput;
10103 -@@ -2184,6 +2205,10 @@ static struct file *do_last(struct nameidata *nd, struct path *path,
10104 -
10105 - path_to_nameidata(path, nd);
10106 - nd->inode = path->dentry->d_inode;
10107 -+ /* Why this, you ask? _Now_ we might have grown LOOKUP_JUMPED... */
10108 -+ error = complete_walk(nd);
10109 -+ if (error)
10110 -+ goto exit;
10111 - error = -EISDIR;
10112 - if (S_ISDIR(nd->inode->i_mode))
10113 - goto exit;
10114 -diff --git a/fs/namespace.c b/fs/namespace.c
10115 -index fe59bd1..537dd96 100644
10116 ---- a/fs/namespace.c
10117 -+++ b/fs/namespace.c
10118 -@@ -1109,6 +1109,7 @@ static int show_vfsstat(struct seq_file *m, void *v)
10119 -
10120 - /* device */
10121 - if (mnt->mnt_sb->s_op->show_devname) {
10122 -+ seq_puts(m, "device ");
10123 - err = mnt->mnt_sb->s_op->show_devname(m, mnt);
10124 - } else {
10125 - if (mnt->mnt_devname) {
10126 -@@ -1757,7 +1758,7 @@ static int do_loopback(struct path *path, char *old_name,
10127 - return err;
10128 - if (!old_name || !*old_name)
10129 - return -EINVAL;
10130 -- err = kern_path(old_name, LOOKUP_FOLLOW, &old_path);
10131 -+ err = kern_path(old_name, LOOKUP_FOLLOW|LOOKUP_AUTOMOUNT, &old_path);
10132 - if (err)
10133 - return err;
10134 -
10135 -diff --git a/fs/nfs/super.c b/fs/nfs/super.c
10136 -index ce40e5c..858d31b 100644
10137 ---- a/fs/nfs/super.c
10138 -+++ b/fs/nfs/super.c
10139 -@@ -2793,7 +2793,7 @@ static struct dentry *nfs_follow_remote_path(struct vfsmount *root_mnt,
10140 - goto out_put_mnt_ns;
10141 -
10142 - ret = vfs_path_lookup(root_mnt->mnt_root, root_mnt,
10143 -- export_path, LOOKUP_FOLLOW, nd);
10144 -+ export_path, LOOKUP_FOLLOW|LOOKUP_AUTOMOUNT, nd);
10145 -
10146 - nfs_referral_loop_unprotect();
10147 - put_mnt_ns(ns_private);
10148 -diff --git a/fs/nfs/write.c b/fs/nfs/write.c
10149 -index 7271680..f2f80c0 100644
10150 ---- a/fs/nfs/write.c
10151 -+++ b/fs/nfs/write.c
10152 -@@ -428,7 +428,6 @@ static void
10153 - nfs_mark_request_dirty(struct nfs_page *req)
10154 - {
10155 - __set_page_dirty_nobuffers(req->wb_page);
10156 -- __mark_inode_dirty(req->wb_page->mapping->host, I_DIRTY_DATASYNC);
10157 - }
10158 -
10159 - #if defined(CONFIG_NFS_V3) || defined(CONFIG_NFS_V4)
10160 -@@ -762,6 +761,8 @@ int nfs_updatepage(struct file *file, struct page *page,
10161 - status = nfs_writepage_setup(ctx, page, offset, count);
10162 - if (status < 0)
10163 - nfs_set_pageerror(page);
10164 -+ else
10165 -+ __set_page_dirty_nobuffers(page);
10166 -
10167 - dprintk("NFS: nfs_updatepage returns %d (isize %lld)\n",
10168 - status, (long long)i_size_read(inode));
10169 -@@ -1525,6 +1526,10 @@ static int nfs_commit_unstable_pages(struct inode *inode, struct writeback_contr
10170 - int flags = FLUSH_SYNC;
10171 - int ret = 0;
10172 -
10173 -+ /* no commits means nothing needs to be done */
10174 -+ if (!nfsi->ncommit)
10175 -+ return ret;
10176 -+
10177 - if (wbc->sync_mode == WB_SYNC_NONE) {
10178 - /* Don't commit yet if this is a non-blocking flush and there
10179 - * are a lot of outstanding writes for this mapping.
10180 -@@ -1659,34 +1664,20 @@ out_error:
10181 - int nfs_migrate_page(struct address_space *mapping, struct page *newpage,
10182 - struct page *page)
10183 - {
10184 -- struct nfs_page *req;
10185 -- int ret;
10186 -+ /*
10187 -+ * If PagePrivate is set, then the page is currently associated with
10188 -+ * an in-progress read or write request. Don't try to migrate it.
10189 -+ *
10190 -+ * FIXME: we could do this in principle, but we'll need a way to ensure
10191 -+ * that we can safely release the inode reference while holding
10192 -+ * the page lock.
10193 -+ */
10194 -+ if (PagePrivate(page))
10195 -+ return -EBUSY;
10196 -
10197 - nfs_fscache_release_page(page, GFP_KERNEL);
10198 -
10199 -- req = nfs_find_and_lock_request(page, false);
10200 -- ret = PTR_ERR(req);
10201 -- if (IS_ERR(req))
10202 -- goto out;
10203 --
10204 -- ret = migrate_page(mapping, newpage, page);
10205 -- if (!req)
10206 -- goto out;
10207 -- if (ret)
10208 -- goto out_unlock;
10209 -- page_cache_get(newpage);
10210 -- spin_lock(&mapping->host->i_lock);
10211 -- req->wb_page = newpage;
10212 -- SetPagePrivate(newpage);
10213 -- set_page_private(newpage, (unsigned long)req);
10214 -- ClearPagePrivate(page);
10215 -- set_page_private(page, 0);
10216 -- spin_unlock(&mapping->host->i_lock);
10217 -- page_cache_release(page);
10218 --out_unlock:
10219 -- nfs_clear_page_tag_locked(req);
10220 --out:
10221 -- return ret;
10222 -+ return migrate_page(mapping, newpage, page);
10223 - }
10224 - #endif
10225 -
10226 -diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
10227 -index 3a6dbd7..0b8830c 100644
10228 ---- a/fs/nfsd/nfs4proc.c
10229 -+++ b/fs/nfsd/nfs4proc.c
10230 -@@ -156,6 +156,8 @@ do_open_permission(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfs
10231 - !(open->op_share_access & NFS4_SHARE_ACCESS_WRITE))
10232 - return nfserr_inval;
10233 -
10234 -+ accmode |= NFSD_MAY_READ_IF_EXEC;
10235 -+
10236 - if (open->op_share_access & NFS4_SHARE_ACCESS_READ)
10237 - accmode |= NFSD_MAY_READ;
10238 - if (open->op_share_access & NFS4_SHARE_ACCESS_WRITE)
10239 -@@ -682,7 +684,7 @@ nfsd4_readdir(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
10240 - readdir->rd_bmval[1] &= nfsd_suppattrs1(cstate->minorversion);
10241 - readdir->rd_bmval[2] &= nfsd_suppattrs2(cstate->minorversion);
10242 -
10243 -- if ((cookie > ~(u32)0) || (cookie == 1) || (cookie == 2) ||
10244 -+ if ((cookie == 1) || (cookie == 2) ||
10245 - (cookie == 0 && memcmp(readdir->rd_verf.data, zeroverf.data, NFS4_VERIFIER_SIZE)))
10246 - return nfserr_bad_cookie;
10247 -
10248 -@@ -921,7 +923,7 @@ _nfsd4_verify(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
10249 - count = 4 + (verify->ve_attrlen >> 2);
10250 - buf = kmalloc(count << 2, GFP_KERNEL);
10251 - if (!buf)
10252 -- return nfserr_resource;
10253 -+ return nfserr_jukebox;
10254 -
10255 - status = nfsd4_encode_fattr(&cstate->current_fh,
10256 - cstate->current_fh.fh_export,
10257 -diff --git a/fs/nfsd/nfs4recover.c b/fs/nfsd/nfs4recover.c
10258 -index ffb59ef..be26814 100644
10259 ---- a/fs/nfsd/nfs4recover.c
10260 -+++ b/fs/nfsd/nfs4recover.c
10261 -@@ -88,7 +88,7 @@ nfs4_make_rec_clidname(char *dname, struct xdr_netobj *clname)
10262 - struct xdr_netobj cksum;
10263 - struct hash_desc desc;
10264 - struct scatterlist sg;
10265 -- __be32 status = nfserr_resource;
10266 -+ __be32 status = nfserr_jukebox;
10267 -
10268 - dprintk("NFSD: nfs4_make_rec_clidname for %.*s\n",
10269 - clname->len, clname->data);
10270 -diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
10271 -index 3b8ad35..ecd8152 100644
10272 ---- a/fs/nfsd/nfs4state.c
10273 -+++ b/fs/nfsd/nfs4state.c
10274 -@@ -188,8 +188,15 @@ static void nfs4_file_put_fd(struct nfs4_file *fp, int oflag)
10275 - static void __nfs4_file_put_access(struct nfs4_file *fp, int oflag)
10276 - {
10277 - if (atomic_dec_and_test(&fp->fi_access[oflag])) {
10278 -- nfs4_file_put_fd(fp, O_RDWR);
10279 - nfs4_file_put_fd(fp, oflag);
10280 -+ /*
10281 -+ * It's also safe to get rid of the RDWR open *if*
10282 -+ * we no longer have need of the other kind of access
10283 -+ * or if we already have the other kind of open:
10284 -+ */
10285 -+ if (fp->fi_fds[1-oflag]
10286 -+ || atomic_read(&fp->fi_access[1 - oflag]) == 0)
10287 -+ nfs4_file_put_fd(fp, O_RDWR);
10288 - }
10289 - }
10290 -
10291 -@@ -1903,7 +1910,7 @@ nfsd4_setclientid(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
10292 - * of 5 bullet points, labeled as CASE0 - CASE4 below.
10293 - */
10294 - unconf = find_unconfirmed_client_by_str(dname, strhashval);
10295 -- status = nfserr_resource;
10296 -+ status = nfserr_jukebox;
10297 - if (!conf) {
10298 - /*
10299 - * RFC 3530 14.2.33 CASE 4:
10300 -@@ -2440,7 +2447,7 @@ renew:
10301 - if (open->op_stateowner == NULL) {
10302 - sop = alloc_init_open_stateowner(strhashval, clp, open);
10303 - if (sop == NULL)
10304 -- return nfserr_resource;
10305 -+ return nfserr_jukebox;
10306 - open->op_stateowner = sop;
10307 - }
10308 - list_del_init(&sop->so_close_lru);
10309 -@@ -2576,7 +2583,7 @@ nfs4_new_open(struct svc_rqst *rqstp, struct nfs4_stateid **stpp,
10310 -
10311 - stp = nfs4_alloc_stateid();
10312 - if (stp == NULL)
10313 -- return nfserr_resource;
10314 -+ return nfserr_jukebox;
10315 -
10316 - status = nfs4_get_vfs_file(rqstp, fp, cur_fh, open);
10317 - if (status) {
10318 -@@ -2807,7 +2814,7 @@ nfsd4_process_open2(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nf
10319 - status = nfserr_bad_stateid;
10320 - if (open->op_claim_type == NFS4_OPEN_CLAIM_DELEGATE_CUR)
10321 - goto out;
10322 -- status = nfserr_resource;
10323 -+ status = nfserr_jukebox;
10324 - fp = alloc_init_file(ino);
10325 - if (fp == NULL)
10326 - goto out;
10327 -@@ -3381,8 +3388,9 @@ static inline void nfs4_file_downgrade(struct nfs4_stateid *stp, unsigned int to
10328 - int i;
10329 -
10330 - for (i = 1; i < 4; i++) {
10331 -- if (test_bit(i, &stp->st_access_bmap) && !(i & to_access)) {
10332 -- nfs4_file_put_access(stp->st_file, i);
10333 -+ if (test_bit(i, &stp->st_access_bmap)
10334 -+ && ((i & to_access) != i)) {
10335 -+ nfs4_file_put_access(stp->st_file, nfs4_access_to_omode(i));
10336 - __clear_bit(i, &stp->st_access_bmap);
10337 - }
10338 - }
10339 -@@ -3413,6 +3421,8 @@ nfsd4_open_downgrade(struct svc_rqst *rqstp,
10340 - if (!access_valid(od->od_share_access, cstate->minorversion)
10341 - || !deny_valid(od->od_share_deny))
10342 - return nfserr_inval;
10343 -+ /* We don't yet support WANT bits: */
10344 -+ od->od_share_access &= NFS4_SHARE_ACCESS_MASK;
10345 -
10346 - nfs4_lock_state();
10347 - if ((status = nfs4_preprocess_seqid_op(cstate,
10348 -@@ -3840,7 +3850,7 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
10349 - /* XXX: Do we need to check for duplicate stateowners on
10350 - * the same file, or should they just be allowed (and
10351 - * create new stateids)? */
10352 -- status = nfserr_resource;
10353 -+ status = nfserr_jukebox;
10354 - lock_sop = alloc_init_lock_stateowner(strhashval,
10355 - open_sop->so_client, open_stp, lock);
10356 - if (lock_sop == NULL)
10357 -@@ -3924,9 +3934,9 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
10358 - case (EDEADLK):
10359 - status = nfserr_deadlock;
10360 - break;
10361 -- default:
10362 -+ default:
10363 - dprintk("NFSD: nfsd4_lock: vfs_lock_file() failed! status %d\n",err);
10364 -- status = nfserr_resource;
10365 -+ status = nfserrno(err);
10366 - break;
10367 - }
10368 - out:
10369 -diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
10370 -index 9901811..6c74097 100644
10371 ---- a/fs/nfsd/nfs4xdr.c
10372 -+++ b/fs/nfsd/nfs4xdr.c
10373 -@@ -1548,6 +1548,18 @@ static void write_cinfo(__be32 **p, struct nfsd4_change_info *c)
10374 - \
10375 - save = resp->p;
10376 -
10377 -+static bool seqid_mutating_err(__be32 err)
10378 -+{
10379 -+ /* rfc 3530 section 8.1.5: */
10380 -+ return err != nfserr_stale_clientid &&
10381 -+ err != nfserr_stale_stateid &&
10382 -+ err != nfserr_bad_stateid &&
10383 -+ err != nfserr_bad_seqid &&
10384 -+ err != nfserr_bad_xdr &&
10385 -+ err != nfserr_resource &&
10386 -+ err != nfserr_nofilehandle;
10387 -+}
10388 -+
10389 - /*
10390 - * Routine for encoding the result of a "seqid-mutating" NFSv4 operation. This
10391 - * is where sequence id's are incremented, and the replay cache is filled.
10392 -diff --git a/fs/nfsd/state.h b/fs/nfsd/state.h
10393 -index 6bd2f3c..858c7ba 100644
10394 ---- a/fs/nfsd/state.h
10395 -+++ b/fs/nfsd/state.h
10396 -@@ -447,12 +447,6 @@ struct nfs4_stateid {
10397 - #define WR_STATE 0x00000020
10398 - #define CLOSE_STATE 0x00000040
10399 -
10400 --#define seqid_mutating_err(err) \
10401 -- (((err) != nfserr_stale_clientid) && \
10402 -- ((err) != nfserr_bad_seqid) && \
10403 -- ((err) != nfserr_stale_stateid) && \
10404 -- ((err) != nfserr_bad_stateid))
10405 --
10406 - struct nfsd4_compound_state;
10407 -
10408 - extern __be32 nfs4_preprocess_stateid_op(struct nfsd4_compound_state *cstate,
10409 -diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
10410 -index fd0acca..acf88ae 100644
10411 ---- a/fs/nfsd/vfs.c
10412 -+++ b/fs/nfsd/vfs.c
10413 -@@ -2114,7 +2114,8 @@ nfsd_permission(struct svc_rqst *rqstp, struct svc_export *exp,
10414 -
10415 - /* Allow read access to binaries even when mode 111 */
10416 - if (err == -EACCES && S_ISREG(inode->i_mode) &&
10417 -- acc == (NFSD_MAY_READ | NFSD_MAY_OWNER_OVERRIDE))
10418 -+ (acc == (NFSD_MAY_READ | NFSD_MAY_OWNER_OVERRIDE) ||
10419 -+ acc == (NFSD_MAY_READ | NFSD_MAY_READ_IF_EXEC)))
10420 - err = inode_permission(inode, MAY_EXEC);
10421 -
10422 - return err? nfserrno(err) : 0;
10423 -diff --git a/fs/nfsd/vfs.h b/fs/nfsd/vfs.h
10424 -index e0bbac0..a22e40e 100644
10425 ---- a/fs/nfsd/vfs.h
10426 -+++ b/fs/nfsd/vfs.h
10427 -@@ -25,6 +25,7 @@
10428 - #define NFSD_MAY_BYPASS_GSS_ON_ROOT 256
10429 - #define NFSD_MAY_NOT_BREAK_LEASE 512
10430 - #define NFSD_MAY_BYPASS_GSS 1024
10431 -+#define NFSD_MAY_READ_IF_EXEC 2048
10432 -
10433 - #define NFSD_MAY_CREATE (NFSD_MAY_EXEC|NFSD_MAY_WRITE)
10434 - #define NFSD_MAY_REMOVE (NFSD_MAY_EXEC|NFSD_MAY_WRITE|NFSD_MAY_TRUNC)
10435 -diff --git a/fs/proc/base.c b/fs/proc/base.c
10436 -index 5bff4c6..f039017 100644
10437 ---- a/fs/proc/base.c
10438 -+++ b/fs/proc/base.c
10439 -@@ -1920,6 +1920,14 @@ static int proc_fd_info(struct inode *inode, struct path *path, char *info)
10440 - spin_lock(&files->file_lock);
10441 - file = fcheck_files(files, fd);
10442 - if (file) {
10443 -+ unsigned int f_flags;
10444 -+ struct fdtable *fdt;
10445 -+
10446 -+ fdt = files_fdtable(files);
10447 -+ f_flags = file->f_flags & ~O_CLOEXEC;
10448 -+ if (FD_ISSET(fd, fdt->close_on_exec))
10449 -+ f_flags |= O_CLOEXEC;
10450 -+
10451 - if (path) {
10452 - *path = file->f_path;
10453 - path_get(&file->f_path);
10454 -@@ -1929,7 +1937,7 @@ static int proc_fd_info(struct inode *inode, struct path *path, char *info)
10455 - "pos:\t%lli\n"
10456 - "flags:\t0%o\n",
10457 - (long long) file->f_pos,
10458 -- file->f_flags);
10459 -+ f_flags);
10460 - spin_unlock(&files->file_lock);
10461 - put_files_struct(files);
10462 - return 0;
10463 -diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
10464 -index 5afaa58..c7d4ee6 100644
10465 ---- a/fs/proc/task_mmu.c
10466 -+++ b/fs/proc/task_mmu.c
10467 -@@ -1039,6 +1039,9 @@ static int show_numa_map(struct seq_file *m, void *v)
10468 - seq_printf(m, " stack");
10469 - }
10470 -
10471 -+ if (is_vm_hugetlb_page(vma))
10472 -+ seq_printf(m, " huge");
10473 -+
10474 - walk_page_range(vma->vm_start, vma->vm_end, &walk);
10475 -
10476 - if (!md->pages)
10477 -diff --git a/fs/quota/quota.c b/fs/quota/quota.c
10478 -index b34bdb2..10b6be3 100644
10479 ---- a/fs/quota/quota.c
10480 -+++ b/fs/quota/quota.c
10481 -@@ -355,7 +355,7 @@ SYSCALL_DEFINE4(quotactl, unsigned int, cmd, const char __user *, special,
10482 - * resolution (think about autofs) and thus deadlocks could arise.
10483 - */
10484 - if (cmds == Q_QUOTAON) {
10485 -- ret = user_path_at(AT_FDCWD, addr, LOOKUP_FOLLOW, &path);
10486 -+ ret = user_path_at(AT_FDCWD, addr, LOOKUP_FOLLOW|LOOKUP_AUTOMOUNT, &path);
10487 - if (ret)
10488 - pathp = ERR_PTR(ret);
10489 - else
10490 -diff --git a/fs/stat.c b/fs/stat.c
10491 -index 9610391..02a6061 100644
10492 ---- a/fs/stat.c
10493 -+++ b/fs/stat.c
10494 -@@ -296,15 +296,16 @@ SYSCALL_DEFINE4(readlinkat, int, dfd, const char __user *, pathname,
10495 - {
10496 - struct path path;
10497 - int error;
10498 -+ int empty = 0;
10499 -
10500 - if (bufsiz <= 0)
10501 - return -EINVAL;
10502 -
10503 -- error = user_path_at(dfd, pathname, LOOKUP_EMPTY, &path);
10504 -+ error = user_path_at_empty(dfd, pathname, LOOKUP_EMPTY, &path, &empty);
10505 - if (!error) {
10506 - struct inode *inode = path.dentry->d_inode;
10507 -
10508 -- error = -EINVAL;
10509 -+ error = empty ? -ENOENT : -EINVAL;
10510 - if (inode->i_op->readlink) {
10511 - error = security_inode_readlink(path.dentry);
10512 - if (!error) {
10513 -diff --git a/fs/statfs.c b/fs/statfs.c
10514 -index 8244924..9cf04a1 100644
10515 ---- a/fs/statfs.c
10516 -+++ b/fs/statfs.c
10517 -@@ -76,7 +76,7 @@ EXPORT_SYMBOL(vfs_statfs);
10518 - int user_statfs(const char __user *pathname, struct kstatfs *st)
10519 - {
10520 - struct path path;
10521 -- int error = user_path(pathname, &path);
10522 -+ int error = user_path_at(AT_FDCWD, pathname, LOOKUP_FOLLOW|LOOKUP_AUTOMOUNT, &path);
10523 - if (!error) {
10524 - error = vfs_statfs(&path, st);
10525 - path_put(&path);
10526 -diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
10527 -index 91567bb..03eb1d6 100644
10528 ---- a/include/drm/drm_dp_helper.h
10529 -+++ b/include/drm/drm_dp_helper.h
10530 -@@ -72,6 +72,7 @@
10531 -
10532 - #define DP_MAIN_LINK_CHANNEL_CODING 0x006
10533 -
10534 -+#define DP_EDP_CONFIGURATION_CAP 0x00d
10535 - #define DP_TRAINING_AUX_RD_INTERVAL 0x00e
10536 -
10537 - /* link configuration */
10538 -@@ -133,6 +134,8 @@
10539 - #define DP_MAIN_LINK_CHANNEL_CODING_SET 0x108
10540 - # define DP_SET_ANSI_8B10B (1 << 0)
10541 -
10542 -+#define DP_EDP_CONFIGURATION_SET 0x10a
10543 -+
10544 - #define DP_LANE0_1_STATUS 0x202
10545 - #define DP_LANE2_3_STATUS 0x203
10546 - # define DP_LANE_CR_DONE (1 << 0)
10547 -diff --git a/include/linux/ext2_fs.h b/include/linux/ext2_fs.h
10548 -index 2dfa707..0bfcb76 100644
10549 ---- a/include/linux/ext2_fs.h
10550 -+++ b/include/linux/ext2_fs.h
10551 -@@ -196,8 +196,8 @@ struct ext2_group_desc
10552 -
10553 - /* Flags that should be inherited by new inodes from their parent. */
10554 - #define EXT2_FL_INHERITED (EXT2_SECRM_FL | EXT2_UNRM_FL | EXT2_COMPR_FL |\
10555 -- EXT2_SYNC_FL | EXT2_IMMUTABLE_FL | EXT2_APPEND_FL |\
10556 -- EXT2_NODUMP_FL | EXT2_NOATIME_FL | EXT2_COMPRBLK_FL|\
10557 -+ EXT2_SYNC_FL | EXT2_NODUMP_FL |\
10558 -+ EXT2_NOATIME_FL | EXT2_COMPRBLK_FL |\
10559 - EXT2_NOCOMP_FL | EXT2_JOURNAL_DATA_FL |\
10560 - EXT2_NOTAIL_FL | EXT2_DIRSYNC_FL)
10561 -
10562 -diff --git a/include/linux/ext3_fs.h b/include/linux/ext3_fs.h
10563 -index 5e06acf..7b14d25 100644
10564 ---- a/include/linux/ext3_fs.h
10565 -+++ b/include/linux/ext3_fs.h
10566 -@@ -180,8 +180,8 @@ struct ext3_group_desc
10567 -
10568 - /* Flags that should be inherited by new inodes from their parent. */
10569 - #define EXT3_FL_INHERITED (EXT3_SECRM_FL | EXT3_UNRM_FL | EXT3_COMPR_FL |\
10570 -- EXT3_SYNC_FL | EXT3_IMMUTABLE_FL | EXT3_APPEND_FL |\
10571 -- EXT3_NODUMP_FL | EXT3_NOATIME_FL | EXT3_COMPRBLK_FL|\
10572 -+ EXT3_SYNC_FL | EXT3_NODUMP_FL |\
10573 -+ EXT3_NOATIME_FL | EXT3_COMPRBLK_FL |\
10574 - EXT3_NOCOMPR_FL | EXT3_JOURNAL_DATA_FL |\
10575 - EXT3_NOTAIL_FL | EXT3_DIRSYNC_FL)
10576 -
10577 -diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
10578 -index f6efed0..b9490bf 100644
10579 ---- a/include/linux/interrupt.h
10580 -+++ b/include/linux/interrupt.h
10581 -@@ -59,6 +59,8 @@
10582 - * IRQF_NO_SUSPEND - Do not disable this IRQ during suspend
10583 - * IRQF_FORCE_RESUME - Force enable it on resume even if IRQF_NO_SUSPEND is set
10584 - * IRQF_NO_THREAD - Interrupt cannot be threaded
10585 -+ * IRQF_EARLY_RESUME - Resume IRQ early during syscore instead of at device
10586 -+ * resume time.
10587 - */
10588 - #define IRQF_DISABLED 0x00000020
10589 - #define IRQF_SAMPLE_RANDOM 0x00000040
10590 -@@ -72,6 +74,7 @@
10591 - #define IRQF_NO_SUSPEND 0x00004000
10592 - #define IRQF_FORCE_RESUME 0x00008000
10593 - #define IRQF_NO_THREAD 0x00010000
10594 -+#define IRQF_EARLY_RESUME 0x00020000
10595 -
10596 - #define IRQF_TIMER (__IRQF_TIMER | IRQF_NO_SUSPEND | IRQF_NO_THREAD)
10597 -
10598 -diff --git a/include/linux/io-mapping.h b/include/linux/io-mapping.h
10599 -index 8cdcc2a1..1feeb52 100644
10600 ---- a/include/linux/io-mapping.h
10601 -+++ b/include/linux/io-mapping.h
10602 -@@ -117,6 +117,8 @@ io_mapping_unmap(void __iomem *vaddr)
10603 -
10604 - #else
10605 -
10606 -+#include <linux/uaccess.h>
10607 -+
10608 - /* this struct isn't actually defined anywhere */
10609 - struct io_mapping;
10610 -
10611 -@@ -138,12 +140,14 @@ static inline void __iomem *
10612 - io_mapping_map_atomic_wc(struct io_mapping *mapping,
10613 - unsigned long offset)
10614 - {
10615 -+ pagefault_disable();
10616 - return ((char __force __iomem *) mapping) + offset;
10617 - }
10618 -
10619 - static inline void
10620 - io_mapping_unmap_atomic(void __iomem *vaddr)
10621 - {
10622 -+ pagefault_enable();
10623 - }
10624 -
10625 - /* Non-atomic map/unmap */
10626 -diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
10627 -index f97672a..265e2c3 100644
10628 ---- a/include/linux/jiffies.h
10629 -+++ b/include/linux/jiffies.h
10630 -@@ -303,7 +303,7 @@ extern void jiffies_to_timespec(const unsigned long jiffies,
10631 - extern unsigned long timeval_to_jiffies(const struct timeval *value);
10632 - extern void jiffies_to_timeval(const unsigned long jiffies,
10633 - struct timeval *value);
10634 --extern clock_t jiffies_to_clock_t(long x);
10635 -+extern clock_t jiffies_to_clock_t(unsigned long x);
10636 - extern unsigned long clock_t_to_jiffies(unsigned long x);
10637 - extern u64 jiffies_64_to_clock_t(u64 x);
10638 - extern u64 nsec_to_clock_t(u64 x);
10639 -diff --git a/include/linux/mm.h b/include/linux/mm.h
10640 -index ec6e33d..18eea05 100644
10641 ---- a/include/linux/mm.h
10642 -+++ b/include/linux/mm.h
10643 -@@ -355,36 +355,50 @@ static inline struct page *compound_head(struct page *page)
10644 - return page;
10645 - }
10646 -
10647 -+/*
10648 -+ * The atomic page->_mapcount, starts from -1: so that transitions
10649 -+ * both from it and to it can be tracked, using atomic_inc_and_test
10650 -+ * and atomic_add_negative(-1).
10651 -+ */
10652 -+static inline void reset_page_mapcount(struct page *page)
10653 -+{
10654 -+ atomic_set(&(page)->_mapcount, -1);
10655 -+}
10656 -+
10657 -+static inline int page_mapcount(struct page *page)
10658 -+{
10659 -+ return atomic_read(&(page)->_mapcount) + 1;
10660 -+}
10661 -+
10662 - static inline int page_count(struct page *page)
10663 - {
10664 - return atomic_read(&compound_head(page)->_count);
10665 - }
10666 -
10667 -+static inline void get_huge_page_tail(struct page *page)
10668 -+{
10669 -+ /*
10670 -+ * __split_huge_page_refcount() cannot run
10671 -+ * from under us.
10672 -+ */
10673 -+ VM_BUG_ON(page_mapcount(page) < 0);
10674 -+ VM_BUG_ON(atomic_read(&page->_count) != 0);
10675 -+ atomic_inc(&page->_mapcount);
10676 -+}
10677 -+
10678 -+extern bool __get_page_tail(struct page *page);
10679 -+
10680 - static inline void get_page(struct page *page)
10681 - {
10682 -+ if (unlikely(PageTail(page)))
10683 -+ if (likely(__get_page_tail(page)))
10684 -+ return;
10685 - /*
10686 - * Getting a normal page or the head of a compound page
10687 -- * requires to already have an elevated page->_count. Only if
10688 -- * we're getting a tail page, the elevated page->_count is
10689 -- * required only in the head page, so for tail pages the
10690 -- * bugcheck only verifies that the page->_count isn't
10691 -- * negative.
10692 -+ * requires to already have an elevated page->_count.
10693 - */
10694 -- VM_BUG_ON(atomic_read(&page->_count) < !PageTail(page));
10695 -+ VM_BUG_ON(atomic_read(&page->_count) <= 0);
10696 - atomic_inc(&page->_count);
10697 -- /*
10698 -- * Getting a tail page will elevate both the head and tail
10699 -- * page->_count(s).
10700 -- */
10701 -- if (unlikely(PageTail(page))) {
10702 -- /*
10703 -- * This is safe only because
10704 -- * __split_huge_page_refcount can't run under
10705 -- * get_page().
10706 -- */
10707 -- VM_BUG_ON(atomic_read(&page->first_page->_count) <= 0);
10708 -- atomic_inc(&page->first_page->_count);
10709 -- }
10710 - }
10711 -
10712 - static inline struct page *virt_to_head_page(const void *x)
10713 -@@ -803,21 +817,6 @@ static inline pgoff_t page_index(struct page *page)
10714 - }
10715 -
10716 - /*
10717 -- * The atomic page->_mapcount, like _count, starts from -1:
10718 -- * so that transitions both from it and to it can be tracked,
10719 -- * using atomic_inc_and_test and atomic_add_negative(-1).
10720 -- */
10721 --static inline void reset_page_mapcount(struct page *page)
10722 --{
10723 -- atomic_set(&(page)->_mapcount, -1);
10724 --}
10725 --
10726 --static inline int page_mapcount(struct page *page)
10727 --{
10728 -- return atomic_read(&(page)->_mapcount) + 1;
10729 --}
10730 --
10731 --/*
10732 - * Return true if this page is mapped into pagetables.
10733 - */
10734 - static inline int page_mapped(struct page *page)
10735 -diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
10736 -index 027935c..059839c 100644
10737 ---- a/include/linux/mm_types.h
10738 -+++ b/include/linux/mm_types.h
10739 -@@ -36,10 +36,24 @@ struct page {
10740 - * updated asynchronously */
10741 - atomic_t _count; /* Usage count, see below. */
10742 - union {
10743 -- atomic_t _mapcount; /* Count of ptes mapped in mms,
10744 -- * to show when page is mapped
10745 -- * & limit reverse map searches.
10746 -- */
10747 -+ /*
10748 -+ * Count of ptes mapped in
10749 -+ * mms, to show when page is
10750 -+ * mapped & limit reverse map
10751 -+ * searches.
10752 -+ *
10753 -+ * Used also for tail pages
10754 -+ * refcounting instead of
10755 -+ * _count. Tail pages cannot
10756 -+ * be mapped and keeping the
10757 -+ * tail page _count zero at
10758 -+ * all times guarantees
10759 -+ * get_page_unless_zero() will
10760 -+ * never succeed on tail
10761 -+ * pages.
10762 -+ */
10763 -+ atomic_t _mapcount;
10764 -+
10765 - struct { /* SLUB */
10766 - u16 inuse;
10767 - u16 objects;
10768 -diff --git a/include/linux/namei.h b/include/linux/namei.h
10769 -index eba45ea..82ab16b 100644
10770 ---- a/include/linux/namei.h
10771 -+++ b/include/linux/namei.h
10772 -@@ -49,6 +49,7 @@ enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND};
10773 - #define LOOKUP_FOLLOW 0x0001
10774 - #define LOOKUP_DIRECTORY 0x0002
10775 - #define LOOKUP_CONTINUE 0x0004
10776 -+#define LOOKUP_AUTOMOUNT 0x0008
10777 -
10778 - #define LOOKUP_PARENT 0x0010
10779 - #define LOOKUP_REVAL 0x0020
10780 -@@ -67,6 +68,7 @@ enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND};
10781 - #define LOOKUP_EMPTY 0x4000
10782 -
10783 - extern int user_path_at(int, const char __user *, unsigned, struct path *);
10784 -+extern int user_path_at_empty(int, const char __user *, unsigned, struct path *, int *empty);
10785 -
10786 - #define user_path(name, path) user_path_at(AT_FDCWD, name, LOOKUP_FOLLOW, path)
10787 - #define user_lpath(name, path) user_path_at(AT_FDCWD, name, 0, path)
10788 -diff --git a/include/linux/phy.h b/include/linux/phy.h
10789 -index 7da5fa8..4d3f63a 100644
10790 ---- a/include/linux/phy.h
10791 -+++ b/include/linux/phy.h
10792 -@@ -418,7 +418,7 @@ struct phy_driver {
10793 -
10794 - /*
10795 - * Requests a Tx timestamp for 'skb'. The phy driver promises
10796 -- * to deliver it to the socket's error queue as soon as a
10797 -+ * to deliver it using skb_complete_tx_timestamp() as soon as a
10798 - * timestamp becomes available. One of the PTP_CLASS_ values
10799 - * is passed in 'type'.
10800 - */
10801 -diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
10802 -index c0a4f3a..b920a72 100644
10803 ---- a/include/linux/skbuff.h
10804 -+++ b/include/linux/skbuff.h
10805 -@@ -1996,8 +1996,13 @@ static inline bool skb_defer_rx_timestamp(struct sk_buff *skb)
10806 - /**
10807 - * skb_complete_tx_timestamp() - deliver cloned skb with tx timestamps
10808 - *
10809 -+ * PHY drivers may accept clones of transmitted packets for
10810 -+ * timestamping via their phy_driver.txtstamp method. These drivers
10811 -+ * must call this function to return the skb back to the stack, with
10812 -+ * or without a timestamp.
10813 -+ *
10814 - * @skb: clone of the the original outgoing packet
10815 -- * @hwtstamps: hardware time stamps
10816 -+ * @hwtstamps: hardware time stamps, may be NULL if not available
10817 - *
10818 - */
10819 - void skb_complete_tx_timestamp(struct sk_buff *skb,
10820 -diff --git a/include/linux/tty.h b/include/linux/tty.h
10821 -index 6660c41..1ff6b62 100644
10822 ---- a/include/linux/tty.h
10823 -+++ b/include/linux/tty.h
10824 -@@ -472,7 +472,9 @@ extern void proc_clear_tty(struct task_struct *p);
10825 - extern struct tty_struct *get_current_tty(void);
10826 - extern void tty_default_fops(struct file_operations *fops);
10827 - extern struct tty_struct *alloc_tty_struct(void);
10828 --extern int tty_add_file(struct tty_struct *tty, struct file *file);
10829 -+extern int tty_alloc_file(struct file *file);
10830 -+extern void tty_add_file(struct tty_struct *tty, struct file *file);
10831 -+extern void tty_free_file(struct file *file);
10832 - extern void free_tty_struct(struct tty_struct *tty);
10833 - extern void initialize_tty_struct(struct tty_struct *tty,
10834 - struct tty_driver *driver, int idx);
10835 -diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h
10836 -index 0097136..c0ecc5a 100644
10837 ---- a/include/linux/usb/hcd.h
10838 -+++ b/include/linux/usb/hcd.h
10839 -@@ -178,7 +178,7 @@ struct usb_hcd {
10840 - * this structure.
10841 - */
10842 - unsigned long hcd_priv[0]
10843 -- __attribute__ ((aligned(sizeof(unsigned long))));
10844 -+ __attribute__ ((aligned(sizeof(s64))));
10845 - };
10846 -
10847 - /* 2.4 does this a bit differently ... */
10848 -diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h
10849 -index 9332e52..687fb11 100644
10850 ---- a/include/linux/vmalloc.h
10851 -+++ b/include/linux/vmalloc.h
10852 -@@ -13,6 +13,7 @@ struct vm_area_struct; /* vma defining user mapping in mm_types.h */
10853 - #define VM_MAP 0x00000004 /* vmap()ed pages */
10854 - #define VM_USERMAP 0x00000008 /* suitable for remap_vmalloc_range */
10855 - #define VM_VPAGES 0x00000010 /* buffer for pages was vmalloc'ed */
10856 -+#define VM_UNLIST 0x00000020 /* vm_struct is not listed in vmlist */
10857 - /* bits [20..32] reserved for arch specific ioremap internals */
10858 -
10859 - /*
10860 -diff --git a/include/net/flow.h b/include/net/flow.h
10861 -index c6d5fe5..32359fd 100644
10862 ---- a/include/net/flow.h
10863 -+++ b/include/net/flow.h
10864 -@@ -7,6 +7,7 @@
10865 - #ifndef _NET_FLOW_H
10866 - #define _NET_FLOW_H
10867 -
10868 -+#include <linux/socket.h>
10869 - #include <linux/in6.h>
10870 - #include <asm/atomic.h>
10871 -
10872 -@@ -68,7 +69,7 @@ struct flowi4 {
10873 - #define fl4_ipsec_spi uli.spi
10874 - #define fl4_mh_type uli.mht.type
10875 - #define fl4_gre_key uli.gre_key
10876 --};
10877 -+} __attribute__((__aligned__(BITS_PER_LONG/8)));
10878 -
10879 - static inline void flowi4_init_output(struct flowi4 *fl4, int oif,
10880 - __u32 mark, __u8 tos, __u8 scope,
10881 -@@ -112,7 +113,7 @@ struct flowi6 {
10882 - #define fl6_ipsec_spi uli.spi
10883 - #define fl6_mh_type uli.mht.type
10884 - #define fl6_gre_key uli.gre_key
10885 --};
10886 -+} __attribute__((__aligned__(BITS_PER_LONG/8)));
10887 -
10888 - struct flowidn {
10889 - struct flowi_common __fl_common;
10890 -@@ -127,7 +128,7 @@ struct flowidn {
10891 - union flowi_uli uli;
10892 - #define fld_sport uli.ports.sport
10893 - #define fld_dport uli.ports.dport
10894 --};
10895 -+} __attribute__((__aligned__(BITS_PER_LONG/8)));
10896 -
10897 - struct flowi {
10898 - union {
10899 -@@ -161,6 +162,24 @@ static inline struct flowi *flowidn_to_flowi(struct flowidn *fldn)
10900 - return container_of(fldn, struct flowi, u.dn);
10901 - }
10902 -
10903 -+typedef unsigned long flow_compare_t;
10904 -+
10905 -+static inline size_t flow_key_size(u16 family)
10906 -+{
10907 -+ switch (family) {
10908 -+ case AF_INET:
10909 -+ BUILD_BUG_ON(sizeof(struct flowi4) % sizeof(flow_compare_t));
10910 -+ return sizeof(struct flowi4) / sizeof(flow_compare_t);
10911 -+ case AF_INET6:
10912 -+ BUILD_BUG_ON(sizeof(struct flowi6) % sizeof(flow_compare_t));
10913 -+ return sizeof(struct flowi6) / sizeof(flow_compare_t);
10914 -+ case AF_DECnet:
10915 -+ BUILD_BUG_ON(sizeof(struct flowidn) % sizeof(flow_compare_t));
10916 -+ return sizeof(struct flowidn) / sizeof(flow_compare_t);
10917 -+ }
10918 -+ return 0;
10919 -+}
10920 -+
10921 - #define FLOW_DIR_IN 0
10922 - #define FLOW_DIR_OUT 1
10923 - #define FLOW_DIR_FWD 2
10924 -diff --git a/kernel/irq/pm.c b/kernel/irq/pm.c
10925 -index f76fc00..15e53b1 100644
10926 ---- a/kernel/irq/pm.c
10927 -+++ b/kernel/irq/pm.c
10928 -@@ -9,6 +9,7 @@
10929 - #include <linux/irq.h>
10930 - #include <linux/module.h>
10931 - #include <linux/interrupt.h>
10932 -+#include <linux/syscore_ops.h>
10933 -
10934 - #include "internals.h"
10935 -
10936 -@@ -39,25 +40,58 @@ void suspend_device_irqs(void)
10937 - }
10938 - EXPORT_SYMBOL_GPL(suspend_device_irqs);
10939 -
10940 --/**
10941 -- * resume_device_irqs - enable interrupt lines disabled by suspend_device_irqs()
10942 -- *
10943 -- * Enable all interrupt lines previously disabled by suspend_device_irqs() that
10944 -- * have the IRQS_SUSPENDED flag set.
10945 -- */
10946 --void resume_device_irqs(void)
10947 -+static void resume_irqs(bool want_early)
10948 - {
10949 - struct irq_desc *desc;
10950 - int irq;
10951 -
10952 - for_each_irq_desc(irq, desc) {
10953 - unsigned long flags;
10954 -+ bool is_early = desc->action &&
10955 -+ desc->action->flags & IRQF_EARLY_RESUME;
10956 -+
10957 -+ if (is_early != want_early)
10958 -+ continue;
10959 -
10960 - raw_spin_lock_irqsave(&desc->lock, flags);
10961 - __enable_irq(desc, irq, true);
10962 - raw_spin_unlock_irqrestore(&desc->lock, flags);
10963 - }
10964 - }
10965 -+
10966 -+/**
10967 -+ * irq_pm_syscore_ops - enable interrupt lines early
10968 -+ *
10969 -+ * Enable all interrupt lines with %IRQF_EARLY_RESUME set.
10970 -+ */
10971 -+static void irq_pm_syscore_resume(void)
10972 -+{
10973 -+ resume_irqs(true);
10974 -+}
10975 -+
10976 -+static struct syscore_ops irq_pm_syscore_ops = {
10977 -+ .resume = irq_pm_syscore_resume,
10978 -+};
10979 -+
10980 -+static int __init irq_pm_init_ops(void)
10981 -+{
10982 -+ register_syscore_ops(&irq_pm_syscore_ops);
10983 -+ return 0;
10984 -+}
10985 -+
10986 -+device_initcall(irq_pm_init_ops);
10987 -+
10988 -+/**
10989 -+ * resume_device_irqs - enable interrupt lines disabled by suspend_device_irqs()
10990 -+ *
10991 -+ * Enable all non-%IRQF_EARLY_RESUME interrupt lines previously
10992 -+ * disabled by suspend_device_irqs() that have the IRQS_SUSPENDED flag
10993 -+ * set as well as those with %IRQF_FORCE_RESUME.
10994 -+ */
10995 -+void resume_device_irqs(void)
10996 -+{
10997 -+ resume_irqs(false);
10998 -+}
10999 - EXPORT_SYMBOL_GPL(resume_device_irqs);
11000 -
11001 - /**
11002 -diff --git a/kernel/kmod.c b/kernel/kmod.c
11003 -index 47613df..fabfe54 100644
11004 ---- a/kernel/kmod.c
11005 -+++ b/kernel/kmod.c
11006 -@@ -114,10 +114,12 @@ int __request_module(bool wait, const char *fmt, ...)
11007 - atomic_inc(&kmod_concurrent);
11008 - if (atomic_read(&kmod_concurrent) > max_modprobes) {
11009 - /* We may be blaming an innocent here, but unlikely */
11010 -- if (kmod_loop_msg++ < 5)
11011 -+ if (kmod_loop_msg < 5) {
11012 - printk(KERN_ERR
11013 - "request_module: runaway loop modprobe %s\n",
11014 - module_name);
11015 -+ kmod_loop_msg++;
11016 -+ }
11017 - atomic_dec(&kmod_concurrent);
11018 - return -ENOMEM;
11019 - }
11020 -diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
11021 -index 1c41ba2..449ccc9 100644
11022 ---- a/kernel/power/suspend.c
11023 -+++ b/kernel/power/suspend.c
11024 -@@ -307,7 +307,7 @@ int enter_state(suspend_state_t state)
11025 - */
11026 - int pm_suspend(suspend_state_t state)
11027 - {
11028 -- if (state > PM_SUSPEND_ON && state <= PM_SUSPEND_MAX)
11029 -+ if (state > PM_SUSPEND_ON && state < PM_SUSPEND_MAX)
11030 - return enter_state(state);
11031 - return -EINVAL;
11032 - }
11033 -diff --git a/kernel/signal.c b/kernel/signal.c
11034 -index 415d85d..43fee1c 100644
11035 ---- a/kernel/signal.c
11036 -+++ b/kernel/signal.c
11037 -@@ -1894,21 +1894,19 @@ static int do_signal_stop(int signr)
11038 - */
11039 - if (!(sig->flags & SIGNAL_STOP_STOPPED))
11040 - sig->group_exit_code = signr;
11041 -- else
11042 -- WARN_ON_ONCE(!task_ptrace(current));
11043 -
11044 - current->group_stop &= ~GROUP_STOP_SIGMASK;
11045 - current->group_stop |= signr | gstop;
11046 - sig->group_stop_count = 1;
11047 - for (t = next_thread(current); t != current;
11048 - t = next_thread(t)) {
11049 -- t->group_stop &= ~GROUP_STOP_SIGMASK;
11050 - /*
11051 - * Setting state to TASK_STOPPED for a group
11052 - * stop is always done with the siglock held,
11053 - * so this check has no races.
11054 - */
11055 - if (!(t->flags & PF_EXITING) && !task_is_stopped(t)) {
11056 -+ t->group_stop &= ~GROUP_STOP_SIGMASK;
11057 - t->group_stop |= signr | gstop;
11058 - sig->group_stop_count++;
11059 - signal_wake_up(t, 0);
11060 -diff --git a/kernel/time.c b/kernel/time.c
11061 -index 8e8dc6d..d776062 100644
11062 ---- a/kernel/time.c
11063 -+++ b/kernel/time.c
11064 -@@ -575,7 +575,7 @@ EXPORT_SYMBOL(jiffies_to_timeval);
11065 - /*
11066 - * Convert jiffies/jiffies_64 to clock_t and back.
11067 - */
11068 --clock_t jiffies_to_clock_t(long x)
11069 -+clock_t jiffies_to_clock_t(unsigned long x)
11070 - {
11071 - #if (TICK_NSEC % (NSEC_PER_SEC / USER_HZ)) == 0
11072 - # if HZ < USER_HZ
11073 -diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
11074 -index ee9c921..0731e81a 100644
11075 ---- a/kernel/trace/trace.c
11076 -+++ b/kernel/trace/trace.c
11077 -@@ -3704,8 +3704,6 @@ tracing_buffers_read(struct file *filp, char __user *ubuf,
11078 - if (info->read < PAGE_SIZE)
11079 - goto read;
11080 -
11081 -- info->read = 0;
11082 --
11083 - trace_access_lock(info->cpu);
11084 - ret = ring_buffer_read_page(info->tr->buffer,
11085 - &info->spare,
11086 -@@ -3715,6 +3713,8 @@ tracing_buffers_read(struct file *filp, char __user *ubuf,
11087 - if (ret < 0)
11088 - return 0;
11089 -
11090 -+ info->read = 0;
11091 -+
11092 - read:
11093 - size = PAGE_SIZE - info->read;
11094 - if (size > count)
11095 -diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c
11096 -index 70af0a7..ad72a03 100644
11097 ---- a/lib/kobject_uevent.c
11098 -+++ b/lib/kobject_uevent.c
11099 -@@ -282,7 +282,7 @@ int kobject_uevent_env(struct kobject *kobj, enum kobject_action action,
11100 - kobj_bcast_filter,
11101 - kobj);
11102 - /* ENOBUFS should be handled in userspace */
11103 -- if (retval == -ENOBUFS)
11104 -+ if (retval == -ENOBUFS || retval == -ESRCH)
11105 - retval = 0;
11106 - } else
11107 - retval = -ENOMEM;
11108 -diff --git a/lib/nlattr.c b/lib/nlattr.c
11109 -index ac09f22..a8408b6 100644
11110 ---- a/lib/nlattr.c
11111 -+++ b/lib/nlattr.c
11112 -@@ -20,6 +20,7 @@ static const u16 nla_attr_minlen[NLA_TYPE_MAX+1] = {
11113 - [NLA_U16] = sizeof(u16),
11114 - [NLA_U32] = sizeof(u32),
11115 - [NLA_U64] = sizeof(u64),
11116 -+ [NLA_MSECS] = sizeof(u64),
11117 - [NLA_NESTED] = NLA_HDRLEN,
11118 - };
11119 -
11120 -diff --git a/mm/huge_memory.c b/mm/huge_memory.c
11121 -index 81532f2..cc5acf9 100644
11122 ---- a/mm/huge_memory.c
11123 -+++ b/mm/huge_memory.c
11124 -@@ -989,7 +989,7 @@ struct page *follow_trans_huge_pmd(struct mm_struct *mm,
11125 - page += (addr & ~HPAGE_PMD_MASK) >> PAGE_SHIFT;
11126 - VM_BUG_ON(!PageCompound(page));
11127 - if (flags & FOLL_GET)
11128 -- get_page(page);
11129 -+ get_page_foll(page);
11130 -
11131 - out:
11132 - return page;
11133 -@@ -1156,6 +1156,7 @@ static void __split_huge_page_refcount(struct page *page)
11134 - unsigned long head_index = page->index;
11135 - struct zone *zone = page_zone(page);
11136 - int zonestat;
11137 -+ int tail_count = 0;
11138 -
11139 - /* prevent PageLRU to go away from under us, and freeze lru stats */
11140 - spin_lock_irq(&zone->lru_lock);
11141 -@@ -1164,11 +1165,27 @@ static void __split_huge_page_refcount(struct page *page)
11142 - for (i = 1; i < HPAGE_PMD_NR; i++) {
11143 - struct page *page_tail = page + i;
11144 -
11145 -- /* tail_page->_count cannot change */
11146 -- atomic_sub(atomic_read(&page_tail->_count), &page->_count);
11147 -- BUG_ON(page_count(page) <= 0);
11148 -- atomic_add(page_mapcount(page) + 1, &page_tail->_count);
11149 -- BUG_ON(atomic_read(&page_tail->_count) <= 0);
11150 -+ /* tail_page->_mapcount cannot change */
11151 -+ BUG_ON(page_mapcount(page_tail) < 0);
11152 -+ tail_count += page_mapcount(page_tail);
11153 -+ /* check for overflow */
11154 -+ BUG_ON(tail_count < 0);
11155 -+ BUG_ON(atomic_read(&page_tail->_count) != 0);
11156 -+ /*
11157 -+ * tail_page->_count is zero and not changing from
11158 -+ * under us. But get_page_unless_zero() may be running
11159 -+ * from under us on the tail_page. If we used
11160 -+ * atomic_set() below instead of atomic_add(), we
11161 -+ * would then run atomic_set() concurrently with
11162 -+ * get_page_unless_zero(), and atomic_set() is
11163 -+ * implemented in C not using locked ops. spin_unlock
11164 -+ * on x86 sometime uses locked ops because of PPro
11165 -+ * errata 66, 92, so unless somebody can guarantee
11166 -+ * atomic_set() here would be safe on all archs (and
11167 -+ * not only on x86), it's safer to use atomic_add().
11168 -+ */
11169 -+ atomic_add(page_mapcount(page) + page_mapcount(page_tail) + 1,
11170 -+ &page_tail->_count);
11171 -
11172 - /* after clearing PageTail the gup refcount can be released */
11173 - smp_mb();
11174 -@@ -1186,10 +1203,7 @@ static void __split_huge_page_refcount(struct page *page)
11175 - (1L << PG_uptodate)));
11176 - page_tail->flags |= (1L << PG_dirty);
11177 -
11178 -- /*
11179 -- * 1) clear PageTail before overwriting first_page
11180 -- * 2) clear PageTail before clearing PageHead for VM_BUG_ON
11181 -- */
11182 -+ /* clear PageTail before overwriting first_page */
11183 - smp_wmb();
11184 -
11185 - /*
11186 -@@ -1206,7 +1220,6 @@ static void __split_huge_page_refcount(struct page *page)
11187 - * status is achieved setting a reserved bit in the
11188 - * pmd, not by clearing the present bit.
11189 - */
11190 -- BUG_ON(page_mapcount(page_tail));
11191 - page_tail->_mapcount = page->_mapcount;
11192 -
11193 - BUG_ON(page_tail->mapping);
11194 -@@ -1223,6 +1236,8 @@ static void __split_huge_page_refcount(struct page *page)
11195 -
11196 - lru_add_page_tail(zone, page, page_tail);
11197 - }
11198 -+ atomic_sub(tail_count, &page->_count);
11199 -+ BUG_ON(atomic_read(&page->_count) <= 0);
11200 -
11201 - __dec_zone_page_state(page, NR_ANON_TRANSPARENT_HUGEPAGES);
11202 - __mod_zone_page_state(zone, NR_ANON_PAGES, HPAGE_PMD_NR);
11203 -diff --git a/mm/internal.h b/mm/internal.h
11204 -index d071d38..2189af4 100644
11205 ---- a/mm/internal.h
11206 -+++ b/mm/internal.h
11207 -@@ -37,6 +37,52 @@ static inline void __put_page(struct page *page)
11208 - atomic_dec(&page->_count);
11209 - }
11210 -
11211 -+static inline void __get_page_tail_foll(struct page *page,
11212 -+ bool get_page_head)
11213 -+{
11214 -+ /*
11215 -+ * If we're getting a tail page, the elevated page->_count is
11216 -+ * required only in the head page and we will elevate the head
11217 -+ * page->_count and tail page->_mapcount.
11218 -+ *
11219 -+ * We elevate page_tail->_mapcount for tail pages to force
11220 -+ * page_tail->_count to be zero at all times to avoid getting
11221 -+ * false positives from get_page_unless_zero() with
11222 -+ * speculative page access (like in
11223 -+ * page_cache_get_speculative()) on tail pages.
11224 -+ */
11225 -+ VM_BUG_ON(atomic_read(&page->first_page->_count) <= 0);
11226 -+ VM_BUG_ON(atomic_read(&page->_count) != 0);
11227 -+ VM_BUG_ON(page_mapcount(page) < 0);
11228 -+ if (get_page_head)
11229 -+ atomic_inc(&page->first_page->_count);
11230 -+ atomic_inc(&page->_mapcount);
11231 -+}
11232 -+
11233 -+/*
11234 -+ * This is meant to be called as the FOLL_GET operation of
11235 -+ * follow_page() and it must be called while holding the proper PT
11236 -+ * lock while the pte (or pmd_trans_huge) is still mapping the page.
11237 -+ */
11238 -+static inline void get_page_foll(struct page *page)
11239 -+{
11240 -+ if (unlikely(PageTail(page)))
11241 -+ /*
11242 -+ * This is safe only because
11243 -+ * __split_huge_page_refcount() can't run under
11244 -+ * get_page_foll() because we hold the proper PT lock.
11245 -+ */
11246 -+ __get_page_tail_foll(page, true);
11247 -+ else {
11248 -+ /*
11249 -+ * Getting a normal page or the head of a compound page
11250 -+ * requires to already have an elevated page->_count.
11251 -+ */
11252 -+ VM_BUG_ON(atomic_read(&page->_count) <= 0);
11253 -+ atomic_inc(&page->_count);
11254 -+ }
11255 -+}
11256 -+
11257 - extern unsigned long highest_memmap_pfn;
11258 -
11259 - /*
11260 -diff --git a/mm/memory.c b/mm/memory.c
11261 -index d961e19..95a7799 100644
11262 ---- a/mm/memory.c
11263 -+++ b/mm/memory.c
11264 -@@ -1514,7 +1514,7 @@ split_fallthrough:
11265 - }
11266 -
11267 - if (flags & FOLL_GET)
11268 -- get_page(page);
11269 -+ get_page_foll(page);
11270 - if (flags & FOLL_TOUCH) {
11271 - if ((flags & FOLL_WRITE) &&
11272 - !pte_dirty(pte) && !PageDirty(page))
11273 -diff --git a/mm/swap.c b/mm/swap.c
11274 -index 3a442f1..87627f1 100644
11275 ---- a/mm/swap.c
11276 -+++ b/mm/swap.c
11277 -@@ -78,39 +78,22 @@ static void put_compound_page(struct page *page)
11278 - {
11279 - if (unlikely(PageTail(page))) {
11280 - /* __split_huge_page_refcount can run under us */
11281 -- struct page *page_head = page->first_page;
11282 -- smp_rmb();
11283 -- /*
11284 -- * If PageTail is still set after smp_rmb() we can be sure
11285 -- * that the page->first_page we read wasn't a dangling pointer.
11286 -- * See __split_huge_page_refcount() smp_wmb().
11287 -- */
11288 -- if (likely(PageTail(page) && get_page_unless_zero(page_head))) {
11289 -+ struct page *page_head = compound_trans_head(page);
11290 -+
11291 -+ if (likely(page != page_head &&
11292 -+ get_page_unless_zero(page_head))) {
11293 - unsigned long flags;
11294 - /*
11295 -- * Verify that our page_head wasn't converted
11296 -- * to a a regular page before we got a
11297 -- * reference on it.
11298 -+ * page_head wasn't a dangling pointer but it
11299 -+ * may not be a head page anymore by the time
11300 -+ * we obtain the lock. That is ok as long as it
11301 -+ * can't be freed from under us.
11302 - */
11303 -- if (unlikely(!PageHead(page_head))) {
11304 -- /* PageHead is cleared after PageTail */
11305 -- smp_rmb();
11306 -- VM_BUG_ON(PageTail(page));
11307 -- goto out_put_head;
11308 -- }
11309 -- /*
11310 -- * Only run compound_lock on a valid PageHead,
11311 -- * after having it pinned with
11312 -- * get_page_unless_zero() above.
11313 -- */
11314 -- smp_mb();
11315 -- /* page_head wasn't a dangling pointer */
11316 - flags = compound_lock_irqsave(page_head);
11317 - if (unlikely(!PageTail(page))) {
11318 - /* __split_huge_page_refcount run before us */
11319 - compound_unlock_irqrestore(page_head, flags);
11320 - VM_BUG_ON(PageHead(page_head));
11321 -- out_put_head:
11322 - if (put_page_testzero(page_head))
11323 - __put_single_page(page_head);
11324 - out_put_single:
11325 -@@ -121,16 +104,17 @@ static void put_compound_page(struct page *page)
11326 - VM_BUG_ON(page_head != page->first_page);
11327 - /*
11328 - * We can release the refcount taken by
11329 -- * get_page_unless_zero now that
11330 -- * split_huge_page_refcount is blocked on the
11331 -- * compound_lock.
11332 -+ * get_page_unless_zero() now that
11333 -+ * __split_huge_page_refcount() is blocked on
11334 -+ * the compound_lock.
11335 - */
11336 - if (put_page_testzero(page_head))
11337 - VM_BUG_ON(1);
11338 - /* __split_huge_page_refcount will wait now */
11339 -- VM_BUG_ON(atomic_read(&page->_count) <= 0);
11340 -- atomic_dec(&page->_count);
11341 -+ VM_BUG_ON(page_mapcount(page) <= 0);
11342 -+ atomic_dec(&page->_mapcount);
11343 - VM_BUG_ON(atomic_read(&page_head->_count) <= 0);
11344 -+ VM_BUG_ON(atomic_read(&page->_count) != 0);
11345 - compound_unlock_irqrestore(page_head, flags);
11346 - if (put_page_testzero(page_head)) {
11347 - if (PageHead(page_head))
11348 -@@ -160,6 +144,45 @@ void put_page(struct page *page)
11349 - }
11350 - EXPORT_SYMBOL(put_page);
11351 -
11352 -+/*
11353 -+ * This function is exported but must not be called by anything other
11354 -+ * than get_page(). It implements the slow path of get_page().
11355 -+ */
11356 -+bool __get_page_tail(struct page *page)
11357 -+{
11358 -+ /*
11359 -+ * This takes care of get_page() if run on a tail page
11360 -+ * returned by one of the get_user_pages/follow_page variants.
11361 -+ * get_user_pages/follow_page itself doesn't need the compound
11362 -+ * lock because it runs __get_page_tail_foll() under the
11363 -+ * proper PT lock that already serializes against
11364 -+ * split_huge_page().
11365 -+ */
11366 -+ unsigned long flags;
11367 -+ bool got = false;
11368 -+ struct page *page_head = compound_trans_head(page);
11369 -+
11370 -+ if (likely(page != page_head && get_page_unless_zero(page_head))) {
11371 -+ /*
11372 -+ * page_head wasn't a dangling pointer but it
11373 -+ * may not be a head page anymore by the time
11374 -+ * we obtain the lock. That is ok as long as it
11375 -+ * can't be freed from under us.
11376 -+ */
11377 -+ flags = compound_lock_irqsave(page_head);
11378 -+ /* here __split_huge_page_refcount won't run anymore */
11379 -+ if (likely(PageTail(page))) {
11380 -+ __get_page_tail_foll(page, false);
11381 -+ got = true;
11382 -+ }
11383 -+ compound_unlock_irqrestore(page_head, flags);
11384 -+ if (unlikely(!got))
11385 -+ put_page(page_head);
11386 -+ }
11387 -+ return got;
11388 -+}
11389 -+EXPORT_SYMBOL(__get_page_tail);
11390 -+
11391 - /**
11392 - * put_pages_list() - release a list of pages
11393 - * @pages: list of pages threaded on page->lru
11394 -diff --git a/mm/vmalloc.c b/mm/vmalloc.c
11395 -index 45ece89..65d5fd2 100644
11396 ---- a/mm/vmalloc.c
11397 -+++ b/mm/vmalloc.c
11398 -@@ -1267,18 +1267,22 @@ EXPORT_SYMBOL_GPL(map_vm_area);
11399 - DEFINE_RWLOCK(vmlist_lock);
11400 - struct vm_struct *vmlist;
11401 -
11402 --static void insert_vmalloc_vm(struct vm_struct *vm, struct vmap_area *va,
11403 -+static void setup_vmalloc_vm(struct vm_struct *vm, struct vmap_area *va,
11404 - unsigned long flags, void *caller)
11405 - {
11406 -- struct vm_struct *tmp, **p;
11407 --
11408 - vm->flags = flags;
11409 - vm->addr = (void *)va->va_start;
11410 - vm->size = va->va_end - va->va_start;
11411 - vm->caller = caller;
11412 - va->private = vm;
11413 - va->flags |= VM_VM_AREA;
11414 -+}
11415 -+
11416 -+static void insert_vmalloc_vmlist(struct vm_struct *vm)
11417 -+{
11418 -+ struct vm_struct *tmp, **p;
11419 -
11420 -+ vm->flags &= ~VM_UNLIST;
11421 - write_lock(&vmlist_lock);
11422 - for (p = &vmlist; (tmp = *p) != NULL; p = &tmp->next) {
11423 - if (tmp->addr >= vm->addr)
11424 -@@ -1289,6 +1293,13 @@ static void insert_vmalloc_vm(struct vm_struct *vm, struct vmap_area *va,
11425 - write_unlock(&vmlist_lock);
11426 - }
11427 -
11428 -+static void insert_vmalloc_vm(struct vm_struct *vm, struct vmap_area *va,
11429 -+ unsigned long flags, void *caller)
11430 -+{
11431 -+ setup_vmalloc_vm(vm, va, flags, caller);
11432 -+ insert_vmalloc_vmlist(vm);
11433 -+}
11434 -+
11435 - static struct vm_struct *__get_vm_area_node(unsigned long size,
11436 - unsigned long align, unsigned long flags, unsigned long start,
11437 - unsigned long end, int node, gfp_t gfp_mask, void *caller)
11438 -@@ -1327,7 +1338,18 @@ static struct vm_struct *__get_vm_area_node(unsigned long size,
11439 - return NULL;
11440 - }
11441 -
11442 -- insert_vmalloc_vm(area, va, flags, caller);
11443 -+ /*
11444 -+ * When this function is called from __vmalloc_node_range,
11445 -+ * we do not add vm_struct to vmlist here to avoid
11446 -+ * accessing uninitialized members of vm_struct such as
11447 -+ * pages and nr_pages fields. They will be set later.
11448 -+ * To distinguish it from others, we use a VM_UNLIST flag.
11449 -+ */
11450 -+ if (flags & VM_UNLIST)
11451 -+ setup_vmalloc_vm(area, va, flags, caller);
11452 -+ else
11453 -+ insert_vmalloc_vm(area, va, flags, caller);
11454 -+
11455 - return area;
11456 - }
11457 -
11458 -@@ -1395,17 +1417,20 @@ struct vm_struct *remove_vm_area(const void *addr)
11459 - va = find_vmap_area((unsigned long)addr);
11460 - if (va && va->flags & VM_VM_AREA) {
11461 - struct vm_struct *vm = va->private;
11462 -- struct vm_struct *tmp, **p;
11463 -- /*
11464 -- * remove from list and disallow access to this vm_struct
11465 -- * before unmap. (address range confliction is maintained by
11466 -- * vmap.)
11467 -- */
11468 -- write_lock(&vmlist_lock);
11469 -- for (p = &vmlist; (tmp = *p) != vm; p = &tmp->next)
11470 -- ;
11471 -- *p = tmp->next;
11472 -- write_unlock(&vmlist_lock);
11473 -+
11474 -+ if (!(vm->flags & VM_UNLIST)) {
11475 -+ struct vm_struct *tmp, **p;
11476 -+ /*
11477 -+ * remove from list and disallow access to
11478 -+ * this vm_struct before unmap. (address range
11479 -+ * confliction is maintained by vmap.)
11480 -+ */
11481 -+ write_lock(&vmlist_lock);
11482 -+ for (p = &vmlist; (tmp = *p) != vm; p = &tmp->next)
11483 -+ ;
11484 -+ *p = tmp->next;
11485 -+ write_unlock(&vmlist_lock);
11486 -+ }
11487 -
11488 - vmap_debug_free_range(va->va_start, va->va_end);
11489 - free_unmap_vmap_area(va);
11490 -@@ -1616,8 +1641,8 @@ void *__vmalloc_node_range(unsigned long size, unsigned long align,
11491 - if (!size || (size >> PAGE_SHIFT) > totalram_pages)
11492 - return NULL;
11493 -
11494 -- area = __get_vm_area_node(size, align, VM_ALLOC, start, end, node,
11495 -- gfp_mask, caller);
11496 -+ area = __get_vm_area_node(size, align, VM_ALLOC | VM_UNLIST,
11497 -+ start, end, node, gfp_mask, caller);
11498 -
11499 - if (!area)
11500 - return NULL;
11501 -@@ -1625,6 +1650,12 @@ void *__vmalloc_node_range(unsigned long size, unsigned long align,
11502 - addr = __vmalloc_area_node(area, gfp_mask, prot, node, caller);
11503 -
11504 - /*
11505 -+ * In this function, newly allocated vm_struct is not added
11506 -+ * to vmlist at __get_vm_area_node(). so, it is added here.
11507 -+ */
11508 -+ insert_vmalloc_vmlist(area);
11509 -+
11510 -+ /*
11511 - * A ref_count = 3 is needed because the vm_struct and vmap_area
11512 - * structures allocated in the __get_vm_area_node() function contain
11513 - * references to the virtual address of the vmalloc'ed block.
11514 -diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c
11515 -index 32b8f9f..ff3ed60 100644
11516 ---- a/net/bridge/br_device.c
11517 -+++ b/net/bridge/br_device.c
11518 -@@ -91,7 +91,6 @@ static int br_dev_open(struct net_device *dev)
11519 - {
11520 - struct net_bridge *br = netdev_priv(dev);
11521 -
11522 -- netif_carrier_off(dev);
11523 - netdev_update_features(dev);
11524 - netif_start_queue(dev);
11525 - br_stp_enable_bridge(br);
11526 -@@ -108,8 +107,6 @@ static int br_dev_stop(struct net_device *dev)
11527 - {
11528 - struct net_bridge *br = netdev_priv(dev);
11529 -
11530 -- netif_carrier_off(dev);
11531 --
11532 - br_stp_disable_bridge(br);
11533 - br_multicast_stop(br);
11534 -
11535 -diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c
11536 -index 6f156c1..4490873 100644
11537 ---- a/net/bridge/br_if.c
11538 -+++ b/net/bridge/br_if.c
11539 -@@ -161,9 +161,10 @@ static void del_nbp(struct net_bridge_port *p)
11540 - call_rcu(&p->rcu, destroy_nbp_rcu);
11541 - }
11542 -
11543 --/* called with RTNL */
11544 --static void del_br(struct net_bridge *br, struct list_head *head)
11545 -+/* Delete bridge device */
11546 -+void br_dev_delete(struct net_device *dev, struct list_head *head)
11547 - {
11548 -+ struct net_bridge *br = netdev_priv(dev);
11549 - struct net_bridge_port *p, *n;
11550 -
11551 - list_for_each_entry_safe(p, n, &br->port_list, list) {
11552 -@@ -268,7 +269,7 @@ int br_del_bridge(struct net *net, const char *name)
11553 - }
11554 -
11555 - else
11556 -- del_br(netdev_priv(dev), NULL);
11557 -+ br_dev_delete(dev, NULL);
11558 -
11559 - rtnl_unlock();
11560 - return ret;
11561 -@@ -445,7 +446,7 @@ void __net_exit br_net_exit(struct net *net)
11562 - rtnl_lock();
11563 - for_each_netdev(net, dev)
11564 - if (dev->priv_flags & IFF_EBRIDGE)
11565 -- del_br(netdev_priv(dev), &list);
11566 -+ br_dev_delete(dev, &list);
11567 -
11568 - unregister_netdevice_many(&list);
11569 - rtnl_unlock();
11570 -diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c
11571 -index ffb0dc4..2c16055 100644
11572 ---- a/net/bridge/br_netlink.c
11573 -+++ b/net/bridge/br_netlink.c
11574 -@@ -208,6 +208,7 @@ static struct rtnl_link_ops br_link_ops __read_mostly = {
11575 - .priv_size = sizeof(struct net_bridge),
11576 - .setup = br_dev_setup,
11577 - .validate = br_validate,
11578 -+ .dellink = br_dev_delete,
11579 - };
11580 -
11581 - int __init br_netlink_init(void)
11582 -diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
11583 -index 78cc364..857a021 100644
11584 ---- a/net/bridge/br_private.h
11585 -+++ b/net/bridge/br_private.h
11586 -@@ -294,6 +294,7 @@ static inline int br_is_root_bridge(const struct net_bridge *br)
11587 -
11588 - /* br_device.c */
11589 - extern void br_dev_setup(struct net_device *dev);
11590 -+extern void br_dev_delete(struct net_device *dev, struct list_head *list);
11591 - extern netdev_tx_t br_dev_xmit(struct sk_buff *skb,
11592 - struct net_device *dev);
11593 - #ifdef CONFIG_NET_POLL_CONTROLLER
11594 -diff --git a/net/caif/caif_dev.c b/net/caif/caif_dev.c
11595 -index 682c0fe..dbdaa95 100644
11596 ---- a/net/caif/caif_dev.c
11597 -+++ b/net/caif/caif_dev.c
11598 -@@ -209,8 +209,7 @@ static int caif_device_notify(struct notifier_block *me, unsigned long what,
11599 - enum cfcnfg_phy_preference pref;
11600 - enum cfcnfg_phy_type phy_type;
11601 - struct cfcnfg *cfg;
11602 -- struct caif_device_entry_list *caifdevs =
11603 -- caif_device_list(dev_net(dev));
11604 -+ struct caif_device_entry_list *caifdevs;
11605 -
11606 - if (dev->type != ARPHRD_CAIF)
11607 - return 0;
11608 -@@ -219,6 +218,8 @@ static int caif_device_notify(struct notifier_block *me, unsigned long what,
11609 - if (cfg == NULL)
11610 - return 0;
11611 -
11612 -+ caifdevs = caif_device_list(dev_net(dev));
11613 -+
11614 - switch (what) {
11615 - case NETDEV_REGISTER:
11616 - caifd = caif_device_alloc(dev);
11617 -diff --git a/net/can/bcm.c b/net/can/bcm.c
11618 -index 184a657..c6cc66f 100644
11619 ---- a/net/can/bcm.c
11620 -+++ b/net/can/bcm.c
11621 -@@ -343,6 +343,18 @@ static void bcm_send_to_user(struct bcm_op *op, struct bcm_msg_head *head,
11622 - }
11623 - }
11624 -
11625 -+static void bcm_tx_start_timer(struct bcm_op *op)
11626 -+{
11627 -+ if (op->kt_ival1.tv64 && op->count)
11628 -+ hrtimer_start(&op->timer,
11629 -+ ktime_add(ktime_get(), op->kt_ival1),
11630 -+ HRTIMER_MODE_ABS);
11631 -+ else if (op->kt_ival2.tv64)
11632 -+ hrtimer_start(&op->timer,
11633 -+ ktime_add(ktime_get(), op->kt_ival2),
11634 -+ HRTIMER_MODE_ABS);
11635 -+}
11636 -+
11637 - static void bcm_tx_timeout_tsklet(unsigned long data)
11638 - {
11639 - struct bcm_op *op = (struct bcm_op *)data;
11640 -@@ -364,26 +376,12 @@ static void bcm_tx_timeout_tsklet(unsigned long data)
11641 -
11642 - bcm_send_to_user(op, &msg_head, NULL, 0);
11643 - }
11644 -- }
11645 --
11646 -- if (op->kt_ival1.tv64 && (op->count > 0)) {
11647 --
11648 -- /* send (next) frame */
11649 - bcm_can_tx(op);
11650 -- hrtimer_start(&op->timer,
11651 -- ktime_add(ktime_get(), op->kt_ival1),
11652 -- HRTIMER_MODE_ABS);
11653 -
11654 -- } else {
11655 -- if (op->kt_ival2.tv64) {
11656 -+ } else if (op->kt_ival2.tv64)
11657 -+ bcm_can_tx(op);
11658 -
11659 -- /* send (next) frame */
11660 -- bcm_can_tx(op);
11661 -- hrtimer_start(&op->timer,
11662 -- ktime_add(ktime_get(), op->kt_ival2),
11663 -- HRTIMER_MODE_ABS);
11664 -- }
11665 -- }
11666 -+ bcm_tx_start_timer(op);
11667 - }
11668 -
11669 - /*
11670 -@@ -963,23 +961,20 @@ static int bcm_tx_setup(struct bcm_msg_head *msg_head, struct msghdr *msg,
11671 - hrtimer_cancel(&op->timer);
11672 - }
11673 -
11674 -- if ((op->flags & STARTTIMER) &&
11675 -- ((op->kt_ival1.tv64 && op->count) || op->kt_ival2.tv64)) {
11676 --
11677 -+ if (op->flags & STARTTIMER) {
11678 -+ hrtimer_cancel(&op->timer);
11679 - /* spec: send can_frame when starting timer */
11680 - op->flags |= TX_ANNOUNCE;
11681 --
11682 -- if (op->kt_ival1.tv64 && (op->count > 0)) {
11683 -- /* op->count-- is done in bcm_tx_timeout_handler */
11684 -- hrtimer_start(&op->timer, op->kt_ival1,
11685 -- HRTIMER_MODE_REL);
11686 -- } else
11687 -- hrtimer_start(&op->timer, op->kt_ival2,
11688 -- HRTIMER_MODE_REL);
11689 - }
11690 -
11691 -- if (op->flags & TX_ANNOUNCE)
11692 -+ if (op->flags & TX_ANNOUNCE) {
11693 - bcm_can_tx(op);
11694 -+ if (op->count)
11695 -+ op->count--;
11696 -+ }
11697 -+
11698 -+ if (op->flags & STARTTIMER)
11699 -+ bcm_tx_start_timer(op);
11700 -
11701 - return msg_head->nframes * CFSIZ + MHSIZ;
11702 - }
11703 -diff --git a/net/core/dev.c b/net/core/dev.c
11704 -index 9c58c1e..f14f601 100644
11705 ---- a/net/core/dev.c
11706 -+++ b/net/core/dev.c
11707 -@@ -6105,6 +6105,7 @@ int dev_change_net_namespace(struct net_device *dev, struct net *net, const char
11708 - */
11709 - call_netdevice_notifiers(NETDEV_UNREGISTER, dev);
11710 - call_netdevice_notifiers(NETDEV_UNREGISTER_BATCH, dev);
11711 -+ rtmsg_ifinfo(RTM_DELLINK, dev, ~0U);
11712 -
11713 - /*
11714 - * Flush the unicast and multicast chains
11715 -diff --git a/net/core/flow.c b/net/core/flow.c
11716 -index 990703b..a6bda2a 100644
11717 ---- a/net/core/flow.c
11718 -+++ b/net/core/flow.c
11719 -@@ -172,29 +172,26 @@ static void flow_new_hash_rnd(struct flow_cache *fc,
11720 -
11721 - static u32 flow_hash_code(struct flow_cache *fc,
11722 - struct flow_cache_percpu *fcp,
11723 -- const struct flowi *key)
11724 -+ const struct flowi *key,
11725 -+ size_t keysize)
11726 - {
11727 - const u32 *k = (const u32 *) key;
11728 -+ const u32 length = keysize * sizeof(flow_compare_t) / sizeof(u32);
11729 -
11730 -- return jhash2(k, (sizeof(*key) / sizeof(u32)), fcp->hash_rnd)
11731 -+ return jhash2(k, length, fcp->hash_rnd)
11732 - & (flow_cache_hash_size(fc) - 1);
11733 - }
11734 -
11735 --typedef unsigned long flow_compare_t;
11736 --
11737 - /* I hear what you're saying, use memcmp. But memcmp cannot make
11738 -- * important assumptions that we can here, such as alignment and
11739 -- * constant size.
11740 -+ * important assumptions that we can here, such as alignment.
11741 - */
11742 --static int flow_key_compare(const struct flowi *key1, const struct flowi *key2)
11743 -+static int flow_key_compare(const struct flowi *key1, const struct flowi *key2,
11744 -+ size_t keysize)
11745 - {
11746 - const flow_compare_t *k1, *k1_lim, *k2;
11747 -- const int n_elem = sizeof(struct flowi) / sizeof(flow_compare_t);
11748 --
11749 -- BUILD_BUG_ON(sizeof(struct flowi) % sizeof(flow_compare_t));
11750 -
11751 - k1 = (const flow_compare_t *) key1;
11752 -- k1_lim = k1 + n_elem;
11753 -+ k1_lim = k1 + keysize;
11754 -
11755 - k2 = (const flow_compare_t *) key2;
11756 -
11757 -@@ -215,6 +212,7 @@ flow_cache_lookup(struct net *net, const struct flowi *key, u16 family, u8 dir,
11758 - struct flow_cache_entry *fle, *tfle;
11759 - struct hlist_node *entry;
11760 - struct flow_cache_object *flo;
11761 -+ size_t keysize;
11762 - unsigned int hash;
11763 -
11764 - local_bh_disable();
11765 -@@ -222,6 +220,11 @@ flow_cache_lookup(struct net *net, const struct flowi *key, u16 family, u8 dir,
11766 -
11767 - fle = NULL;
11768 - flo = NULL;
11769 -+
11770 -+ keysize = flow_key_size(family);
11771 -+ if (!keysize)
11772 -+ goto nocache;
11773 -+
11774 - /* Packet really early in init? Making flow_cache_init a
11775 - * pre-smp initcall would solve this. --RR */
11776 - if (!fcp->hash_table)
11777 -@@ -230,11 +233,11 @@ flow_cache_lookup(struct net *net, const struct flowi *key, u16 family, u8 dir,
11778 - if (fcp->hash_rnd_recalc)
11779 - flow_new_hash_rnd(fc, fcp);
11780 -
11781 -- hash = flow_hash_code(fc, fcp, key);
11782 -+ hash = flow_hash_code(fc, fcp, key, keysize);
11783 - hlist_for_each_entry(tfle, entry, &fcp->hash_table[hash], u.hlist) {
11784 - if (tfle->family == family &&
11785 - tfle->dir == dir &&
11786 -- flow_key_compare(key, &tfle->key) == 0) {
11787 -+ flow_key_compare(key, &tfle->key, keysize) == 0) {
11788 - fle = tfle;
11789 - break;
11790 - }
11791 -@@ -248,7 +251,7 @@ flow_cache_lookup(struct net *net, const struct flowi *key, u16 family, u8 dir,
11792 - if (fle) {
11793 - fle->family = family;
11794 - fle->dir = dir;
11795 -- memcpy(&fle->key, key, sizeof(*key));
11796 -+ memcpy(&fle->key, key, keysize * sizeof(flow_compare_t));
11797 - fle->object = NULL;
11798 - hlist_add_head(&fle->u.hlist, &fcp->hash_table[hash]);
11799 - fcp->hash_count++;
11800 -diff --git a/net/core/sock.c b/net/core/sock.c
11801 -index 6e81978..aebb419 100644
11802 ---- a/net/core/sock.c
11803 -+++ b/net/core/sock.c
11804 -@@ -1257,6 +1257,7 @@ struct sock *sk_clone(const struct sock *sk, const gfp_t priority)
11805 - /* It is still raw copy of parent, so invalidate
11806 - * destructor and make plain sk_free() */
11807 - newsk->sk_destruct = NULL;
11808 -+ bh_unlock_sock(newsk);
11809 - sk_free(newsk);
11810 - newsk = NULL;
11811 - goto out;
11812 -diff --git a/net/core/timestamping.c b/net/core/timestamping.c
11813 -index 7e7ca37..97d036a 100644
11814 ---- a/net/core/timestamping.c
11815 -+++ b/net/core/timestamping.c
11816 -@@ -57,9 +57,13 @@ void skb_clone_tx_timestamp(struct sk_buff *skb)
11817 - case PTP_CLASS_V2_VLAN:
11818 - phydev = skb->dev->phydev;
11819 - if (likely(phydev->drv->txtstamp)) {
11820 -+ if (!atomic_inc_not_zero(&sk->sk_refcnt))
11821 -+ return;
11822 - clone = skb_clone(skb, GFP_ATOMIC);
11823 -- if (!clone)
11824 -+ if (!clone) {
11825 -+ sock_put(sk);
11826 - return;
11827 -+ }
11828 - clone->sk = sk;
11829 - phydev->drv->txtstamp(phydev, clone, type);
11830 - }
11831 -@@ -76,8 +80,11 @@ void skb_complete_tx_timestamp(struct sk_buff *skb,
11832 - struct sock_exterr_skb *serr;
11833 - int err;
11834 -
11835 -- if (!hwtstamps)
11836 -+ if (!hwtstamps) {
11837 -+ sock_put(sk);
11838 -+ kfree_skb(skb);
11839 - return;
11840 -+ }
11841 -
11842 - *skb_hwtstamps(skb) = *hwtstamps;
11843 - serr = SKB_EXT_ERR(skb);
11844 -@@ -86,6 +93,7 @@ void skb_complete_tx_timestamp(struct sk_buff *skb,
11845 - serr->ee.ee_origin = SO_EE_ORIGIN_TIMESTAMPING;
11846 - skb->sk = NULL;
11847 - err = sock_queue_err_skb(sk, skb);
11848 -+ sock_put(sk);
11849 - if (err)
11850 - kfree_skb(skb);
11851 - }
11852 -diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
11853 -index b6771f9..c68040f 100644
11854 ---- a/net/ipv4/tcp_input.c
11855 -+++ b/net/ipv4/tcp_input.c
11856 -@@ -1380,9 +1380,7 @@ static int tcp_shifted_skb(struct sock *sk, struct sk_buff *skb,
11857 -
11858 - BUG_ON(!pcount);
11859 -
11860 -- /* Tweak before seqno plays */
11861 -- if (!tcp_is_fack(tp) && tcp_is_sack(tp) && tp->lost_skb_hint &&
11862 -- !before(TCP_SKB_CB(tp->lost_skb_hint)->seq, TCP_SKB_CB(skb)->seq))
11863 -+ if (skb == tp->lost_skb_hint)
11864 - tp->lost_cnt_hint += pcount;
11865 -
11866 - TCP_SKB_CB(prev)->end_seq += shifted;
11867 -diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
11868 -index b3e6956..69790aa 100644
11869 ---- a/net/ipv4/tcp_ipv4.c
11870 -+++ b/net/ipv4/tcp_ipv4.c
11871 -@@ -909,18 +909,21 @@ int tcp_v4_md5_do_add(struct sock *sk, __be32 addr,
11872 - }
11873 - sk_nocaps_add(sk, NETIF_F_GSO_MASK);
11874 - }
11875 -- if (tcp_alloc_md5sig_pool(sk) == NULL) {
11876 -+
11877 -+ md5sig = tp->md5sig_info;
11878 -+ if (md5sig->entries4 == 0 &&
11879 -+ tcp_alloc_md5sig_pool(sk) == NULL) {
11880 - kfree(newkey);
11881 - return -ENOMEM;
11882 - }
11883 -- md5sig = tp->md5sig_info;
11884 -
11885 - if (md5sig->alloced4 == md5sig->entries4) {
11886 - keys = kmalloc((sizeof(*keys) *
11887 - (md5sig->entries4 + 1)), GFP_ATOMIC);
11888 - if (!keys) {
11889 - kfree(newkey);
11890 -- tcp_free_md5sig_pool();
11891 -+ if (md5sig->entries4 == 0)
11892 -+ tcp_free_md5sig_pool();
11893 - return -ENOMEM;
11894 - }
11895 -
11896 -@@ -964,6 +967,7 @@ int tcp_v4_md5_do_del(struct sock *sk, __be32 addr)
11897 - kfree(tp->md5sig_info->keys4);
11898 - tp->md5sig_info->keys4 = NULL;
11899 - tp->md5sig_info->alloced4 = 0;
11900 -+ tcp_free_md5sig_pool();
11901 - } else if (tp->md5sig_info->entries4 != i) {
11902 - /* Need to do some manipulation */
11903 - memmove(&tp->md5sig_info->keys4[i],
11904 -@@ -971,7 +975,6 @@ int tcp_v4_md5_do_del(struct sock *sk, __be32 addr)
11905 - (tp->md5sig_info->entries4 - i) *
11906 - sizeof(struct tcp4_md5sig_key));
11907 - }
11908 -- tcp_free_md5sig_pool();
11909 - return 0;
11910 - }
11911 - }
11912 -diff --git a/net/ipv4/xfrm4_policy.c b/net/ipv4/xfrm4_policy.c
11913 -index 981e43e..581fe0a 100644
11914 ---- a/net/ipv4/xfrm4_policy.c
11915 -+++ b/net/ipv4/xfrm4_policy.c
11916 -@@ -79,13 +79,13 @@ static int xfrm4_fill_dst(struct xfrm_dst *xdst, struct net_device *dev,
11917 - struct rtable *rt = (struct rtable *)xdst->route;
11918 - const struct flowi4 *fl4 = &fl->u.ip4;
11919 -
11920 -- rt->rt_key_dst = fl4->daddr;
11921 -- rt->rt_key_src = fl4->saddr;
11922 -- rt->rt_key_tos = fl4->flowi4_tos;
11923 -- rt->rt_route_iif = fl4->flowi4_iif;
11924 -- rt->rt_iif = fl4->flowi4_iif;
11925 -- rt->rt_oif = fl4->flowi4_oif;
11926 -- rt->rt_mark = fl4->flowi4_mark;
11927 -+ xdst->u.rt.rt_key_dst = fl4->daddr;
11928 -+ xdst->u.rt.rt_key_src = fl4->saddr;
11929 -+ xdst->u.rt.rt_key_tos = fl4->flowi4_tos;
11930 -+ xdst->u.rt.rt_route_iif = fl4->flowi4_iif;
11931 -+ xdst->u.rt.rt_iif = fl4->flowi4_iif;
11932 -+ xdst->u.rt.rt_oif = fl4->flowi4_oif;
11933 -+ xdst->u.rt.rt_mark = fl4->flowi4_mark;
11934 -
11935 - xdst->u.dst.dev = dev;
11936 - dev_hold(dev);
11937 -diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
11938 -index 7c43e86..296510a 100644
11939 ---- a/net/ipv6/tcp_ipv6.c
11940 -+++ b/net/ipv6/tcp_ipv6.c
11941 -@@ -605,7 +605,8 @@ static int tcp_v6_md5_do_add(struct sock *sk, const struct in6_addr *peer,
11942 - }
11943 - sk_nocaps_add(sk, NETIF_F_GSO_MASK);
11944 - }
11945 -- if (tcp_alloc_md5sig_pool(sk) == NULL) {
11946 -+ if (tp->md5sig_info->entries6 == 0 &&
11947 -+ tcp_alloc_md5sig_pool(sk) == NULL) {
11948 - kfree(newkey);
11949 - return -ENOMEM;
11950 - }
11951 -@@ -614,8 +615,9 @@ static int tcp_v6_md5_do_add(struct sock *sk, const struct in6_addr *peer,
11952 - (tp->md5sig_info->entries6 + 1)), GFP_ATOMIC);
11953 -
11954 - if (!keys) {
11955 -- tcp_free_md5sig_pool();
11956 - kfree(newkey);
11957 -+ if (tp->md5sig_info->entries6 == 0)
11958 -+ tcp_free_md5sig_pool();
11959 - return -ENOMEM;
11960 - }
11961 -
11962 -@@ -661,6 +663,7 @@ static int tcp_v6_md5_do_del(struct sock *sk, const struct in6_addr *peer)
11963 - kfree(tp->md5sig_info->keys6);
11964 - tp->md5sig_info->keys6 = NULL;
11965 - tp->md5sig_info->alloced6 = 0;
11966 -+ tcp_free_md5sig_pool();
11967 - } else {
11968 - /* shrink the database */
11969 - if (tp->md5sig_info->entries6 != i)
11970 -@@ -669,7 +672,6 @@ static int tcp_v6_md5_do_del(struct sock *sk, const struct in6_addr *peer)
11971 - (tp->md5sig_info->entries6 - i)
11972 - * sizeof (tp->md5sig_info->keys6[0]));
11973 - }
11974 -- tcp_free_md5sig_pool();
11975 - return 0;
11976 - }
11977 - }
11978 -@@ -1407,6 +1409,8 @@ static struct sock * tcp_v6_syn_recv_sock(struct sock *sk, struct sk_buff *skb,
11979 - newtp->af_specific = &tcp_sock_ipv6_mapped_specific;
11980 - #endif
11981 -
11982 -+ newnp->ipv6_ac_list = NULL;
11983 -+ newnp->ipv6_fl_list = NULL;
11984 - newnp->pktoptions = NULL;
11985 - newnp->opt = NULL;
11986 - newnp->mcast_oif = inet6_iif(skb);
11987 -@@ -1471,6 +1475,7 @@ static struct sock * tcp_v6_syn_recv_sock(struct sock *sk, struct sk_buff *skb,
11988 - First: no IPv4 options.
11989 - */
11990 - newinet->inet_opt = NULL;
11991 -+ newnp->ipv6_ac_list = NULL;
11992 - newnp->ipv6_fl_list = NULL;
11993 -
11994 - /* Clone RX bits */
11995 -diff --git a/net/l2tp/l2tp_core.c b/net/l2tp/l2tp_core.c
11996 -index ed8a233..71c292e 100644
11997 ---- a/net/l2tp/l2tp_core.c
11998 -+++ b/net/l2tp/l2tp_core.c
11999 -@@ -1045,8 +1045,10 @@ int l2tp_xmit_skb(struct l2tp_session *session, struct sk_buff *skb, int hdr_len
12000 - headroom = NET_SKB_PAD + sizeof(struct iphdr) +
12001 - uhlen + hdr_len;
12002 - old_headroom = skb_headroom(skb);
12003 -- if (skb_cow_head(skb, headroom))
12004 -+ if (skb_cow_head(skb, headroom)) {
12005 -+ dev_kfree_skb(skb);
12006 - goto abort;
12007 -+ }
12008 -
12009 - new_headroom = skb_headroom(skb);
12010 - skb_orphan(skb);
12011 -diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
12012 -index be70c70..143a006 100644
12013 ---- a/net/mac80211/cfg.c
12014 -+++ b/net/mac80211/cfg.c
12015 -@@ -1798,7 +1798,7 @@ ieee80211_offchan_tx_done(struct ieee80211_work *wk, struct sk_buff *skb)
12016 - * so in that case userspace will have to deal with it.
12017 - */
12018 -
12019 -- if (wk->offchan_tx.wait && wk->offchan_tx.frame)
12020 -+ if (wk->offchan_tx.wait && !wk->offchan_tx.status)
12021 - cfg80211_mgmt_tx_status(wk->sdata->dev,
12022 - (unsigned long) wk->offchan_tx.frame,
12023 - wk->ie, wk->ie_len, false, GFP_KERNEL);
12024 -diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
12025 -index 090b0ec..3fdac77 100644
12026 ---- a/net/mac80211/ieee80211_i.h
12027 -+++ b/net/mac80211/ieee80211_i.h
12028 -@@ -328,6 +328,7 @@ struct ieee80211_work {
12029 - struct {
12030 - struct sk_buff *frame;
12031 - u32 wait;
12032 -+ bool status;
12033 - } offchan_tx;
12034 - };
12035 -
12036 -@@ -372,6 +373,7 @@ struct ieee80211_if_managed {
12037 -
12038 - unsigned long timers_running; /* used for quiesce/restart */
12039 - bool powersave; /* powersave requested for this iface */
12040 -+ bool broken_ap; /* AP is broken -- turn off powersave */
12041 - enum ieee80211_smps_mode req_smps, /* requested smps mode */
12042 - ap_smps, /* smps mode AP thinks we're in */
12043 - driver_smps_mode; /* smps mode request */
12044 -diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
12045 -index 7a334fd..1563250 100644
12046 ---- a/net/mac80211/mlme.c
12047 -+++ b/net/mac80211/mlme.c
12048 -@@ -613,6 +613,9 @@ static bool ieee80211_powersave_allowed(struct ieee80211_sub_if_data *sdata)
12049 - if (!mgd->powersave)
12050 - return false;
12051 -
12052 -+ if (mgd->broken_ap)
12053 -+ return false;
12054 -+
12055 - if (!mgd->associated)
12056 - return false;
12057 -
12058 -@@ -1450,10 +1453,21 @@ static bool ieee80211_assoc_success(struct ieee80211_work *wk,
12059 - capab_info = le16_to_cpu(mgmt->u.assoc_resp.capab_info);
12060 -
12061 - if ((aid & (BIT(15) | BIT(14))) != (BIT(15) | BIT(14)))
12062 -- printk(KERN_DEBUG "%s: invalid aid value %d; bits 15:14 not "
12063 -- "set\n", sdata->name, aid);
12064 -+ printk(KERN_DEBUG
12065 -+ "%s: invalid AID value 0x%x; bits 15:14 not set\n",
12066 -+ sdata->name, aid);
12067 - aid &= ~(BIT(15) | BIT(14));
12068 -
12069 -+ ifmgd->broken_ap = false;
12070 -+
12071 -+ if (aid == 0 || aid > IEEE80211_MAX_AID) {
12072 -+ printk(KERN_DEBUG
12073 -+ "%s: invalid AID value %d (out of range), turn off PS\n",
12074 -+ sdata->name, aid);
12075 -+ aid = 0;
12076 -+ ifmgd->broken_ap = true;
12077 -+ }
12078 -+
12079 - pos = mgmt->u.assoc_resp.variable;
12080 - ieee802_11_parse_elems(pos, len - (pos - (u8 *) mgmt), &elems);
12081 -
12082 -diff --git a/net/mac80211/status.c b/net/mac80211/status.c
12083 -index 1658efa..04cdbaf 100644
12084 ---- a/net/mac80211/status.c
12085 -+++ b/net/mac80211/status.c
12086 -@@ -336,7 +336,7 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb)
12087 - continue;
12088 - if (wk->offchan_tx.frame != skb)
12089 - continue;
12090 -- wk->offchan_tx.frame = NULL;
12091 -+ wk->offchan_tx.status = true;
12092 - break;
12093 - }
12094 - rcu_read_unlock();
12095 -diff --git a/net/mac80211/work.c b/net/mac80211/work.c
12096 -index d2e7f0e..52b758d 100644
12097 ---- a/net/mac80211/work.c
12098 -+++ b/net/mac80211/work.c
12099 -@@ -553,7 +553,7 @@ ieee80211_offchannel_tx(struct ieee80211_work *wk)
12100 - /*
12101 - * After this, offchan_tx.frame remains but now is no
12102 - * longer a valid pointer -- we still need it as the
12103 -- * cookie for canceling this work.
12104 -+ * cookie for canceling this work/status matching.
12105 - */
12106 - ieee80211_tx_skb(wk->sdata, wk->offchan_tx.frame);
12107 -
12108 -@@ -1060,14 +1060,13 @@ static void ieee80211_work_work(struct work_struct *work)
12109 - continue;
12110 - if (wk->chan != local->tmp_channel)
12111 - continue;
12112 -- if (ieee80211_work_ct_coexists(wk->chan_type,
12113 -- local->tmp_channel_type))
12114 -+ if (!ieee80211_work_ct_coexists(wk->chan_type,
12115 -+ local->tmp_channel_type))
12116 - continue;
12117 - remain_off_channel = true;
12118 - }
12119 -
12120 - if (!remain_off_channel && local->tmp_channel) {
12121 -- bool on_oper_chan = ieee80211_cfg_on_oper_channel(local);
12122 - local->tmp_channel = NULL;
12123 - /* If tmp_channel wasn't operating channel, then
12124 - * we need to go back on-channel.
12125 -@@ -1077,7 +1076,7 @@ static void ieee80211_work_work(struct work_struct *work)
12126 - * we still need to do a hardware config. Currently,
12127 - * we cannot be here while scanning, however.
12128 - */
12129 -- if (ieee80211_cfg_on_oper_channel(local) && !on_oper_chan)
12130 -+ if (!ieee80211_cfg_on_oper_channel(local))
12131 - ieee80211_hw_config(local, 0);
12132 -
12133 - /* At the least, we need to disable offchannel_ps,
12134 -diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
12135 -index c0c3cda..fafb968 100644
12136 ---- a/net/packet/af_packet.c
12137 -+++ b/net/packet/af_packet.c
12138 -@@ -654,7 +654,10 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
12139 - return 0;
12140 -
12141 - drop_n_acct:
12142 -- po->stats.tp_drops = atomic_inc_return(&sk->sk_drops);
12143 -+ spin_lock(&sk->sk_receive_queue.lock);
12144 -+ po->stats.tp_drops++;
12145 -+ atomic_inc(&sk->sk_drops);
12146 -+ spin_unlock(&sk->sk_receive_queue.lock);
12147 -
12148 - drop_n_restore:
12149 - if (skb_head != skb->data && skb_shared(skb)) {
12150 -diff --git a/net/sunrpc/auth_unix.c b/net/sunrpc/auth_unix.c
12151 -index 4cb70dc..e50502d 100644
12152 ---- a/net/sunrpc/auth_unix.c
12153 -+++ b/net/sunrpc/auth_unix.c
12154 -@@ -129,6 +129,9 @@ unx_match(struct auth_cred *acred, struct rpc_cred *rcred, int flags)
12155 - for (i = 0; i < groups ; i++)
12156 - if (cred->uc_gids[i] != GROUP_AT(acred->group_info, i))
12157 - return 0;
12158 -+ if (groups < NFS_NGROUPS &&
12159 -+ cred->uc_gids[groups] != NOGROUP)
12160 -+ return 0;
12161 - return 1;
12162 - }
12163 -
12164 -diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c
12165 -index 5fdf10d..b1a3cee 100644
12166 ---- a/scripts/kconfig/menu.c
12167 -+++ b/scripts/kconfig/menu.c
12168 -@@ -596,11 +596,10 @@ void menu_get_ext_help(struct menu *menu, struct gstr *help)
12169 - struct symbol *sym = menu->sym;
12170 -
12171 - if (menu_has_help(menu)) {
12172 -- if (sym->name) {
12173 -+ if (sym->name)
12174 - str_printf(help, "%s%s:\n\n", CONFIG_, sym->name);
12175 -- str_append(help, _(menu_get_help(menu)));
12176 -- str_append(help, "\n");
12177 -- }
12178 -+ str_append(help, _(menu_get_help(menu)));
12179 -+ str_append(help, "\n");
12180 - } else {
12181 - str_append(help, nohelp_text);
12182 - }
12183 -diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
12184 -index cf1fa36..3c2381c 100644
12185 ---- a/sound/pci/hda/patch_conexant.c
12186 -+++ b/sound/pci/hda/patch_conexant.c
12187 -@@ -136,6 +136,7 @@ struct conexant_spec {
12188 - unsigned int thinkpad:1;
12189 - unsigned int hp_laptop:1;
12190 - unsigned int asus:1;
12191 -+ unsigned int single_adc_amp:1;
12192 -
12193 - unsigned int adc_switching:1;
12194 -
12195 -@@ -4205,6 +4206,8 @@ static int cx_auto_add_capture_volume(struct hda_codec *codec, hda_nid_t nid,
12196 - int idx = get_input_connection(codec, adc_nid, nid);
12197 - if (idx < 0)
12198 - continue;
12199 -+ if (spec->single_adc_amp)
12200 -+ idx = 0;
12201 - return cx_auto_add_volume_idx(codec, label, pfx,
12202 - cidx, adc_nid, HDA_INPUT, idx);
12203 - }
12204 -@@ -4245,14 +4248,21 @@ static int cx_auto_build_input_controls(struct hda_codec *codec)
12205 - struct hda_input_mux *imux = &spec->private_imux;
12206 - const char *prev_label;
12207 - int input_conn[HDA_MAX_NUM_INPUTS];
12208 -- int i, err, cidx;
12209 -+ int i, j, err, cidx;
12210 - int multi_connection;
12211 -
12212 -+ if (!imux->num_items)
12213 -+ return 0;
12214 -+
12215 - multi_connection = 0;
12216 - for (i = 0; i < imux->num_items; i++) {
12217 - cidx = get_input_connection(codec, spec->imux_info[i].adc,
12218 - spec->imux_info[i].pin);
12219 -- input_conn[i] = (spec->imux_info[i].adc << 8) | cidx;
12220 -+ if (cidx < 0)
12221 -+ continue;
12222 -+ input_conn[i] = spec->imux_info[i].adc;
12223 -+ if (!spec->single_adc_amp)
12224 -+ input_conn[i] |= cidx << 8;
12225 - if (i > 0 && input_conn[i] != input_conn[0])
12226 - multi_connection = 1;
12227 - }
12228 -@@ -4281,6 +4291,15 @@ static int cx_auto_build_input_controls(struct hda_codec *codec)
12229 - err = cx_auto_add_capture_volume(codec, nid,
12230 - "Capture", "", cidx);
12231 - } else {
12232 -+ bool dup_found = false;
12233 -+ for (j = 0; j < i; j++) {
12234 -+ if (input_conn[j] == input_conn[i]) {
12235 -+ dup_found = true;
12236 -+ break;
12237 -+ }
12238 -+ }
12239 -+ if (dup_found)
12240 -+ continue;
12241 - err = cx_auto_add_capture_volume(codec, nid,
12242 - label, " Capture", cidx);
12243 - }
12244 -@@ -4357,6 +4376,13 @@ static int patch_conexant_auto(struct hda_codec *codec)
12245 - return -ENOMEM;
12246 - codec->spec = spec;
12247 - codec->pin_amp_workaround = 1;
12248 -+
12249 -+ switch (codec->vendor_id) {
12250 -+ case 0x14f15045:
12251 -+ spec->single_adc_amp = 1;
12252 -+ break;
12253 -+ }
12254 -+
12255 - err = cx_auto_search_adcs(codec);
12256 - if (err < 0)
12257 - return err;
12258 -diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
12259 -index 4c7cd6b..e7dc034 100644
12260 ---- a/sound/pci/hda/patch_realtek.c
12261 -+++ b/sound/pci/hda/patch_realtek.c
12262 -@@ -2088,25 +2088,27 @@ static void alc_auto_init_digital(struct hda_codec *codec)
12263 - static void alc_auto_parse_digital(struct hda_codec *codec)
12264 - {
12265 - struct alc_spec *spec = codec->spec;
12266 -- int i, err;
12267 -+ int i, err, nums;
12268 - hda_nid_t dig_nid;
12269 -
12270 - /* support multiple SPDIFs; the secondary is set up as a slave */
12271 -+ nums = 0;
12272 - for (i = 0; i < spec->autocfg.dig_outs; i++) {
12273 - err = snd_hda_get_connections(codec,
12274 - spec->autocfg.dig_out_pins[i],
12275 - &dig_nid, 1);
12276 -- if (err < 0)
12277 -+ if (err <= 0)
12278 - continue;
12279 -- if (!i) {
12280 -+ if (!nums) {
12281 - spec->multiout.dig_out_nid = dig_nid;
12282 - spec->dig_out_type = spec->autocfg.dig_out_type[0];
12283 - } else {
12284 - spec->multiout.slave_dig_outs = spec->slave_dig_outs;
12285 -- if (i >= ARRAY_SIZE(spec->slave_dig_outs) - 1)
12286 -+ if (nums >= ARRAY_SIZE(spec->slave_dig_outs) - 1)
12287 - break;
12288 -- spec->slave_dig_outs[i - 1] = dig_nid;
12289 -+ spec->slave_dig_outs[nums - 1] = dig_nid;
12290 - }
12291 -+ nums++;
12292 - }
12293 -
12294 - if (spec->autocfg.dig_in_pin) {
12295 -@@ -20126,6 +20128,8 @@ static const struct hda_codec_preset snd_hda_preset_realtek[] = {
12296 - .patch = patch_alc882 },
12297 - { .id = 0x10ec0662, .rev = 0x100101, .name = "ALC662 rev1",
12298 - .patch = patch_alc662 },
12299 -+ { .id = 0x10ec0662, .rev = 0x100300, .name = "ALC662 rev3",
12300 -+ .patch = patch_alc662 },
12301 - { .id = 0x10ec0663, .name = "ALC663", .patch = patch_alc662 },
12302 - { .id = 0x10ec0665, .name = "ALC665", .patch = patch_alc662 },
12303 - { .id = 0x10ec0670, .name = "ALC670", .patch = patch_alc662 },
12304 -diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
12305 -index 5c42f3e..5d2e97a 100644
12306 ---- a/sound/pci/hda/patch_sigmatel.c
12307 -+++ b/sound/pci/hda/patch_sigmatel.c
12308 -@@ -5425,9 +5425,7 @@ static void stac92hd8x_fill_auto_spec(struct hda_codec *codec)
12309 - static int patch_stac92hd83xxx(struct hda_codec *codec)
12310 - {
12311 - struct sigmatel_spec *spec;
12312 -- hda_nid_t conn[STAC92HD83_DAC_COUNT + 1];
12313 - int err;
12314 -- int num_dacs;
12315 -
12316 - spec = kzalloc(sizeof(*spec), GFP_KERNEL);
12317 - if (spec == NULL)
12318 -@@ -5467,26 +5465,8 @@ again:
12319 - stac92xx_set_config_regs(codec,
12320 - stac92hd83xxx_brd_tbl[spec->board_config]);
12321 -
12322 -- switch (codec->vendor_id) {
12323 -- case 0x111d76d1:
12324 -- case 0x111d76d9:
12325 -- case 0x111d76df:
12326 -- case 0x111d76e5:
12327 -- case 0x111d7666:
12328 -- case 0x111d7667:
12329 -- case 0x111d7668:
12330 -- case 0x111d7669:
12331 -- case 0x111d76e3:
12332 -- case 0x111d7604:
12333 -- case 0x111d76d4:
12334 -- case 0x111d7605:
12335 -- case 0x111d76d5:
12336 -- case 0x111d76e7:
12337 -- if (spec->board_config == STAC_92HD83XXX_PWR_REF)
12338 -- break;
12339 -+ if (spec->board_config != STAC_92HD83XXX_PWR_REF)
12340 - spec->num_pwrs = 0;
12341 -- break;
12342 -- }
12343 -
12344 - codec->patch_ops = stac92xx_patch_ops;
12345 -
12346 -@@ -5506,7 +5486,11 @@ again:
12347 - }
12348 - #endif
12349 -
12350 -- err = stac92xx_parse_auto_config(codec, 0x1d, 0);
12351 -+ /* 92HD65/66 series has S/PDIF-IN */
12352 -+ if (codec->vendor_id >= 0x111d76e8 && codec->vendor_id <= 0x111d76f3)
12353 -+ err = stac92xx_parse_auto_config(codec, 0x1d, 0x22);
12354 -+ else
12355 -+ err = stac92xx_parse_auto_config(codec, 0x1d, 0);
12356 - if (!err) {
12357 - if (spec->board_config < 0) {
12358 - printk(KERN_WARNING "hda_codec: No auto-config is "
12359 -@@ -5522,22 +5506,6 @@ again:
12360 - return err;
12361 - }
12362 -
12363 -- /* docking output support */
12364 -- num_dacs = snd_hda_get_connections(codec, 0xF,
12365 -- conn, STAC92HD83_DAC_COUNT + 1) - 1;
12366 -- /* skip non-DAC connections */
12367 -- while (num_dacs >= 0 &&
12368 -- (get_wcaps_type(get_wcaps(codec, conn[num_dacs]))
12369 -- != AC_WID_AUD_OUT))
12370 -- num_dacs--;
12371 -- /* set port E and F to select the last DAC */
12372 -- if (num_dacs >= 0) {
12373 -- snd_hda_codec_write_cache(codec, 0xE, 0,
12374 -- AC_VERB_SET_CONNECT_SEL, num_dacs);
12375 -- snd_hda_codec_write_cache(codec, 0xF, 0,
12376 -- AC_VERB_SET_CONNECT_SEL, num_dacs);
12377 -- }
12378 --
12379 - codec->proc_widget_hook = stac92hd_proc_hook;
12380 -
12381 - return 0;
12382 -@@ -6405,6 +6373,18 @@ static const struct hda_codec_preset snd_hda_preset_sigmatel[] = {
12383 - { .id = 0x111d76e3, .name = "92HD98BXX", .patch = patch_stac92hd83xxx},
12384 - { .id = 0x111d76e5, .name = "92HD99BXX", .patch = patch_stac92hd83xxx},
12385 - { .id = 0x111d76e7, .name = "92HD90BXX", .patch = patch_stac92hd83xxx},
12386 -+ { .id = 0x111d76e8, .name = "92HD66B1X5", .patch = patch_stac92hd83xxx},
12387 -+ { .id = 0x111d76e9, .name = "92HD66B2X5", .patch = patch_stac92hd83xxx},
12388 -+ { .id = 0x111d76ea, .name = "92HD66B3X5", .patch = patch_stac92hd83xxx},
12389 -+ { .id = 0x111d76eb, .name = "92HD66C1X5", .patch = patch_stac92hd83xxx},
12390 -+ { .id = 0x111d76ec, .name = "92HD66C2X5", .patch = patch_stac92hd83xxx},
12391 -+ { .id = 0x111d76ed, .name = "92HD66C3X5", .patch = patch_stac92hd83xxx},
12392 -+ { .id = 0x111d76ee, .name = "92HD66B1X3", .patch = patch_stac92hd83xxx},
12393 -+ { .id = 0x111d76ef, .name = "92HD66B2X3", .patch = patch_stac92hd83xxx},
12394 -+ { .id = 0x111d76f0, .name = "92HD66B3X3", .patch = patch_stac92hd83xxx},
12395 -+ { .id = 0x111d76f1, .name = "92HD66C1X3", .patch = patch_stac92hd83xxx},
12396 -+ { .id = 0x111d76f2, .name = "92HD66C2X3", .patch = patch_stac92hd83xxx},
12397 -+ { .id = 0x111d76f3, .name = "92HD66C3/65", .patch = patch_stac92hd83xxx},
12398 - {} /* terminator */
12399 - };
12400 -
12401 -diff --git a/sound/soc/codecs/ak4535.c b/sound/soc/codecs/ak4535.c
12402 -index e1a214e..65abd09 100644
12403 ---- a/sound/soc/codecs/ak4535.c
12404 -+++ b/sound/soc/codecs/ak4535.c
12405 -@@ -40,11 +40,11 @@ struct ak4535_priv {
12406 - /*
12407 - * ak4535 register cache
12408 - */
12409 --static const u16 ak4535_reg[AK4535_CACHEREGNUM] = {
12410 -- 0x0000, 0x0080, 0x0000, 0x0003,
12411 -- 0x0002, 0x0000, 0x0011, 0x0001,
12412 -- 0x0000, 0x0040, 0x0036, 0x0010,
12413 -- 0x0000, 0x0000, 0x0057, 0x0000,
12414 -+static const u8 ak4535_reg[AK4535_CACHEREGNUM] = {
12415 -+ 0x00, 0x80, 0x00, 0x03,
12416 -+ 0x02, 0x00, 0x11, 0x01,
12417 -+ 0x00, 0x40, 0x36, 0x10,
12418 -+ 0x00, 0x00, 0x57, 0x00,
12419 - };
12420 -
12421 - /*
12422 -diff --git a/sound/soc/codecs/ak4642.c b/sound/soc/codecs/ak4642.c
12423 -index 65f4604..79c1b3d 100644
12424 ---- a/sound/soc/codecs/ak4642.c
12425 -+++ b/sound/soc/codecs/ak4642.c
12426 -@@ -162,17 +162,17 @@ struct ak4642_priv {
12427 - /*
12428 - * ak4642 register cache
12429 - */
12430 --static const u16 ak4642_reg[AK4642_CACHEREGNUM] = {
12431 -- 0x0000, 0x0000, 0x0001, 0x0000,
12432 -- 0x0002, 0x0000, 0x0000, 0x0000,
12433 -- 0x00e1, 0x00e1, 0x0018, 0x0000,
12434 -- 0x00e1, 0x0018, 0x0011, 0x0008,
12435 -- 0x0000, 0x0000, 0x0000, 0x0000,
12436 -- 0x0000, 0x0000, 0x0000, 0x0000,
12437 -- 0x0000, 0x0000, 0x0000, 0x0000,
12438 -- 0x0000, 0x0000, 0x0000, 0x0000,
12439 -- 0x0000, 0x0000, 0x0000, 0x0000,
12440 -- 0x0000,
12441 -+static const u8 ak4642_reg[AK4642_CACHEREGNUM] = {
12442 -+ 0x00, 0x00, 0x01, 0x00,
12443 -+ 0x02, 0x00, 0x00, 0x00,
12444 -+ 0xe1, 0xe1, 0x18, 0x00,
12445 -+ 0xe1, 0x18, 0x11, 0x08,
12446 -+ 0x00, 0x00, 0x00, 0x00,
12447 -+ 0x00, 0x00, 0x00, 0x00,
12448 -+ 0x00, 0x00, 0x00, 0x00,
12449 -+ 0x00, 0x00, 0x00, 0x00,
12450 -+ 0x00, 0x00, 0x00, 0x00,
12451 -+ 0x00,
12452 - };
12453 -
12454 - /*
12455 -diff --git a/sound/soc/codecs/wm8711.c b/sound/soc/codecs/wm8711.c
12456 -index a537e4a..1dae5c4 100644
12457 ---- a/sound/soc/codecs/wm8711.c
12458 -+++ b/sound/soc/codecs/wm8711.c
12459 -@@ -150,7 +150,7 @@ static int wm8711_hw_params(struct snd_pcm_substream *substream,
12460 - {
12461 - struct snd_soc_codec *codec = dai->codec;
12462 - struct wm8711_priv *wm8711 = snd_soc_codec_get_drvdata(codec);
12463 -- u16 iface = snd_soc_read(codec, WM8711_IFACE) & 0xfffc;
12464 -+ u16 iface = snd_soc_read(codec, WM8711_IFACE) & 0xfff3;
12465 - int i = get_coeff(wm8711->sysclk, params_rate(params));
12466 - u16 srate = (coeff_div[i].sr << 2) |
12467 - (coeff_div[i].bosr << 1) | coeff_div[i].usb;
12468 -@@ -231,7 +231,7 @@ static int wm8711_set_dai_fmt(struct snd_soc_dai *codec_dai,
12469 - unsigned int fmt)
12470 - {
12471 - struct snd_soc_codec *codec = codec_dai->codec;
12472 -- u16 iface = 0;
12473 -+ u16 iface = snd_soc_read(codec, WM8711_IFACE) & 0x000c;
12474 -
12475 - /* set master/slave audio interface */
12476 - switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
12477 -diff --git a/sound/soc/codecs/wm8741.c b/sound/soc/codecs/wm8741.c
12478 -index 25af901..c173aee 100644
12479 ---- a/sound/soc/codecs/wm8741.c
12480 -+++ b/sound/soc/codecs/wm8741.c
12481 -@@ -337,10 +337,10 @@ static int wm8741_set_dai_fmt(struct snd_soc_dai *codec_dai,
12482 - iface |= 0x0004;
12483 - break;
12484 - case SND_SOC_DAIFMT_DSP_A:
12485 -- iface |= 0x0003;
12486 -+ iface |= 0x000C;
12487 - break;
12488 - case SND_SOC_DAIFMT_DSP_B:
12489 -- iface |= 0x0013;
12490 -+ iface |= 0x001C;
12491 - break;
12492 - default:
12493 - return -EINVAL;
12494 -diff --git a/sound/soc/codecs/wm8904.c b/sound/soc/codecs/wm8904.c
12495 -index 9b3bba4..0fce199 100644
12496 ---- a/sound/soc/codecs/wm8904.c
12497 -+++ b/sound/soc/codecs/wm8904.c
12498 -@@ -868,7 +868,7 @@ SOC_ENUM("Right Capture Mode", rin_mode),
12499 - SOC_DOUBLE_R("Capture Volume", WM8904_ANALOGUE_LEFT_INPUT_0,
12500 - WM8904_ANALOGUE_RIGHT_INPUT_0, 0, 31, 0),
12501 - SOC_DOUBLE_R("Capture Switch", WM8904_ANALOGUE_LEFT_INPUT_0,
12502 -- WM8904_ANALOGUE_RIGHT_INPUT_0, 7, 1, 0),
12503 -+ WM8904_ANALOGUE_RIGHT_INPUT_0, 7, 1, 1),
12504 -
12505 - SOC_SINGLE("High Pass Filter Switch", WM8904_ADC_DIGITAL_0, 4, 1, 0),
12506 - SOC_ENUM("High Pass Filter Mode", hpf_mode),
12507 -diff --git a/sound/soc/codecs/wm8940.c b/sound/soc/codecs/wm8940.c
12508 -index 25580e3..d4ecb3f 100644
12509 ---- a/sound/soc/codecs/wm8940.c
12510 -+++ b/sound/soc/codecs/wm8940.c
12511 -@@ -472,6 +472,8 @@ static int wm8940_set_bias_level(struct snd_soc_codec *codec,
12512 - break;
12513 - }
12514 -
12515 -+ codec->dapm.bias_level = level;
12516 -+
12517 - return ret;
12518 - }
12519 -
12520 -diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c
12521 -index 5e05eed..4a0f666 100644
12522 ---- a/sound/soc/codecs/wm8962.c
12523 -+++ b/sound/soc/codecs/wm8962.c
12524 -@@ -1957,7 +1957,13 @@ static int wm8962_readable_register(struct snd_soc_codec *codec, unsigned int re
12525 -
12526 - static int wm8962_reset(struct snd_soc_codec *codec)
12527 - {
12528 -- return snd_soc_write(codec, WM8962_SOFTWARE_RESET, 0x6243);
12529 -+ int ret;
12530 -+
12531 -+ ret = snd_soc_write(codec, WM8962_SOFTWARE_RESET, 0x6243);
12532 -+ if (ret != 0)
12533 -+ return ret;
12534 -+
12535 -+ return snd_soc_write(codec, WM8962_PLL_SOFTWARE_RESET, 0);
12536 - }
12537 -
12538 - static const DECLARE_TLV_DB_SCALE(inpga_tlv, -2325, 75, 0);
12539 -@@ -2018,7 +2024,6 @@ static int wm8962_put_spk_sw(struct snd_kcontrol *kcontrol,
12540 - struct snd_ctl_elem_value *ucontrol)
12541 - {
12542 - struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
12543 -- u16 *reg_cache = codec->reg_cache;
12544 - int ret;
12545 -
12546 - /* Apply the update (if any) */
12547 -@@ -2027,16 +2032,19 @@ static int wm8962_put_spk_sw(struct snd_kcontrol *kcontrol,
12548 - return 0;
12549 -
12550 - /* If the left PGA is enabled hit that VU bit... */
12551 -- if (reg_cache[WM8962_PWR_MGMT_2] & WM8962_SPKOUTL_PGA_ENA)
12552 -- return snd_soc_write(codec, WM8962_SPKOUTL_VOLUME,
12553 -- reg_cache[WM8962_SPKOUTL_VOLUME]);
12554 -+ ret = snd_soc_read(codec, WM8962_PWR_MGMT_2);
12555 -+ if (ret & WM8962_SPKOUTL_PGA_ENA) {
12556 -+ snd_soc_write(codec, WM8962_SPKOUTL_VOLUME,
12557 -+ snd_soc_read(codec, WM8962_SPKOUTL_VOLUME));
12558 -+ return 1;
12559 -+ }
12560 -
12561 - /* ...otherwise the right. The VU is stereo. */
12562 -- if (reg_cache[WM8962_PWR_MGMT_2] & WM8962_SPKOUTR_PGA_ENA)
12563 -- return snd_soc_write(codec, WM8962_SPKOUTR_VOLUME,
12564 -- reg_cache[WM8962_SPKOUTR_VOLUME]);
12565 -+ if (ret & WM8962_SPKOUTR_PGA_ENA)
12566 -+ snd_soc_write(codec, WM8962_SPKOUTR_VOLUME,
12567 -+ snd_soc_read(codec, WM8962_SPKOUTR_VOLUME));
12568 -
12569 -- return 0;
12570 -+ return 1;
12571 - }
12572 -
12573 - static const char *cap_hpf_mode_text[] = {
12574 -@@ -2336,7 +2344,6 @@ static int out_pga_event(struct snd_soc_dapm_widget *w,
12575 - struct snd_kcontrol *kcontrol, int event)
12576 - {
12577 - struct snd_soc_codec *codec = w->codec;
12578 -- u16 *reg_cache = codec->reg_cache;
12579 - int reg;
12580 -
12581 - switch (w->shift) {
12582 -@@ -2359,7 +2366,7 @@ static int out_pga_event(struct snd_soc_dapm_widget *w,
12583 -
12584 - switch (event) {
12585 - case SND_SOC_DAPM_POST_PMU:
12586 -- return snd_soc_write(codec, reg, reg_cache[reg]);
12587 -+ return snd_soc_write(codec, reg, snd_soc_read(codec, reg));
12588 - default:
12589 - BUG();
12590 - return -EINVAL;
12591 -@@ -3027,9 +3034,9 @@ static int wm8962_set_dai_fmt(struct snd_soc_dai *dai, unsigned int fmt)
12592 - int aif0 = 0;
12593 -
12594 - switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
12595 -- case SND_SOC_DAIFMT_DSP_A:
12596 -- aif0 |= WM8962_LRCLK_INV;
12597 - case SND_SOC_DAIFMT_DSP_B:
12598 -+ aif0 |= WM8962_LRCLK_INV | 3;
12599 -+ case SND_SOC_DAIFMT_DSP_A:
12600 - aif0 |= 3;
12601 -
12602 - switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
12603 -@@ -3822,6 +3829,11 @@ static int wm8962_probe(struct snd_soc_codec *codec)
12604 - */
12605 - snd_soc_update_bits(codec, WM8962_CLOCKING2, WM8962_SYSCLK_ENA, 0);
12606 -
12607 -+ /* Ensure that the oscillator and PLLs are disabled */
12608 -+ snd_soc_update_bits(codec, WM8962_PLL2,
12609 -+ WM8962_OSC_ENA | WM8962_PLL2_ENA | WM8962_PLL3_ENA,
12610 -+ 0);
12611 -+
12612 - regulator_bulk_disable(ARRAY_SIZE(wm8962->supplies), wm8962->supplies);
12613 -
12614 - if (pdata) {
12615 -diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
12616 -index 83014a7..fb9f08a 100644
12617 ---- a/sound/soc/codecs/wm8994.c
12618 -+++ b/sound/soc/codecs/wm8994.c
12619 -@@ -1266,7 +1266,7 @@ SND_SOC_DAPM_MUX("AIF2DAC Mux", SND_SOC_NOPM, 0, 0, &aif2dac_mux),
12620 - SND_SOC_DAPM_MUX("AIF2ADC Mux", SND_SOC_NOPM, 0, 0, &aif2adc_mux),
12621 -
12622 - SND_SOC_DAPM_AIF_IN("AIF3DACDAT", "AIF3 Playback", 0, SND_SOC_NOPM, 0, 0),
12623 --SND_SOC_DAPM_AIF_IN("AIF3ADCDAT", "AIF3 Capture", 0, SND_SOC_NOPM, 0, 0),
12624 -+SND_SOC_DAPM_AIF_OUT("AIF3ADCDAT", "AIF3 Capture", 0, SND_SOC_NOPM, 0, 0),
12625 -
12626 - SND_SOC_DAPM_SUPPLY("TOCLK", WM8994_CLOCKING_1, 4, 0, NULL, 0),
12627 -
12628 -diff --git a/sound/usb/misc/ua101.c b/sound/usb/misc/ua101.c
12629 -index fb5d68f..96c381e 100644
12630 ---- a/sound/usb/misc/ua101.c
12631 -+++ b/sound/usb/misc/ua101.c
12632 -@@ -459,7 +459,8 @@ static void kill_stream_urbs(struct ua101_stream *stream)
12633 - unsigned int i;
12634 -
12635 - for (i = 0; i < stream->queue_length; ++i)
12636 -- usb_kill_urb(&stream->urbs[i]->urb);
12637 -+ if (stream->urbs[i])
12638 -+ usb_kill_urb(&stream->urbs[i]->urb);
12639 - }
12640 -
12641 - static int enable_iso_interface(struct ua101 *ua, unsigned int intf_index)
12642 -@@ -484,6 +485,9 @@ static void disable_iso_interface(struct ua101 *ua, unsigned int intf_index)
12643 - {
12644 - struct usb_host_interface *alts;
12645 -
12646 -+ if (!ua->intf[intf_index])
12647 -+ return;
12648 -+
12649 - alts = ua->intf[intf_index]->cur_altsetting;
12650 - if (alts->desc.bAlternateSetting != 0) {
12651 - int err = usb_set_interface(ua->dev,
12652 -@@ -1144,27 +1148,37 @@ static void free_stream_urbs(struct ua101_stream *stream)
12653 - {
12654 - unsigned int i;
12655 -
12656 -- for (i = 0; i < stream->queue_length; ++i)
12657 -+ for (i = 0; i < stream->queue_length; ++i) {
12658 - kfree(stream->urbs[i]);
12659 -+ stream->urbs[i] = NULL;
12660 -+ }
12661 - }
12662 -
12663 - static void free_usb_related_resources(struct ua101 *ua,
12664 - struct usb_interface *interface)
12665 - {
12666 - unsigned int i;
12667 -+ struct usb_interface *intf;
12668 -
12669 -+ mutex_lock(&ua->mutex);
12670 - free_stream_urbs(&ua->capture);
12671 - free_stream_urbs(&ua->playback);
12672 -+ mutex_unlock(&ua->mutex);
12673 - free_stream_buffers(ua, &ua->capture);
12674 - free_stream_buffers(ua, &ua->playback);
12675 -
12676 -- for (i = 0; i < ARRAY_SIZE(ua->intf); ++i)
12677 -- if (ua->intf[i]) {
12678 -- usb_set_intfdata(ua->intf[i], NULL);
12679 -- if (ua->intf[i] != interface)
12680 -+ for (i = 0; i < ARRAY_SIZE(ua->intf); ++i) {
12681 -+ mutex_lock(&ua->mutex);
12682 -+ intf = ua->intf[i];
12683 -+ ua->intf[i] = NULL;
12684 -+ mutex_unlock(&ua->mutex);
12685 -+ if (intf) {
12686 -+ usb_set_intfdata(intf, NULL);
12687 -+ if (intf != interface)
12688 - usb_driver_release_interface(&ua101_driver,
12689 -- ua->intf[i]);
12690 -+ intf);
12691 - }
12692 -+ }
12693 - }
12694 -
12695 - static void ua101_card_free(struct snd_card *card)
12696 -diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
12697 -index f022316..8c50da8 100644
12698 ---- a/tools/perf/util/probe-event.c
12699 -+++ b/tools/perf/util/probe-event.c
12700 -@@ -1869,8 +1869,10 @@ static int __del_trace_probe_event(int fd, struct str_node *ent)
12701 -
12702 - pr_debug("Writing event: %s\n", buf);
12703 - ret = write(fd, buf, strlen(buf));
12704 -- if (ret < 0)
12705 -+ if (ret < 0) {
12706 -+ ret = -errno;
12707 - goto error;
12708 -+ }
12709 -
12710 - printf("Remove event: %s\n", ent->s);
12711 - return 0;
12712
12713 diff --git a/3.0.9/0000_README b/3.1.1/0000_README
12714 similarity index 89%
12715 rename from 3.0.9/0000_README
12716 rename to 3.1.1/0000_README
12717 index 6fac81e..debad5a 100644
12718 --- a/3.0.9/0000_README
12719 +++ b/3.1.1/0000_README
12720 @@ -3,15 +3,7 @@ README
12721
12722 Individual Patch Descriptions:
12723 -----------------------------------------------------------------------------
12724 -Patch: 1007_linux-3.0.8.patch
12725 -From: http://www.kernel.org
12726 -Desc: Linux 3.0.8
12727 -
12728 -Patch: 1008_linux-3.0.9.patch
12729 -From: http://www.kernel.org
12730 -Desc: Linux 3.0.9
12731 -
12732 -Patch: 4420_grsecurity-2.2.2-3.0.9-201111152003.patch
12733 +Patch: 4420_grsecurity-2.2.2-3.1.1-201111170037.patch
12734 From: http://www.grsecurity.net
12735 Desc: hardened-sources base patch from upstream grsecurity
12736
12737
12738 diff --git a/3.0.9/4420_grsecurity-2.2.2-3.0.9-201111152003.patch b/3.1.1/4420_grsecurity-2.2.2-3.1.1-201111170037.patch
12739 similarity index 84%
12740 rename from 3.0.9/4420_grsecurity-2.2.2-3.0.9-201111152003.patch
12741 rename to 3.1.1/4420_grsecurity-2.2.2-3.1.1-201111170037.patch
12742 index 4d8edda..4c833da 100644
12743 --- a/3.0.9/4420_grsecurity-2.2.2-3.0.9-201111152003.patch
12744 +++ b/3.1.1/4420_grsecurity-2.2.2-3.1.1-201111170037.patch
12745 @@ -1,6 +1,6 @@
12746 -diff -urNp linux-3.0.9/arch/alpha/include/asm/elf.h linux-3.0.9/arch/alpha/include/asm/elf.h
12747 ---- linux-3.0.9/arch/alpha/include/asm/elf.h 2011-11-11 13:12:24.000000000 -0500
12748 -+++ linux-3.0.9/arch/alpha/include/asm/elf.h 2011-11-15 20:02:59.000000000 -0500
12749 +diff -urNp linux-3.1.1/arch/alpha/include/asm/elf.h linux-3.1.1/arch/alpha/include/asm/elf.h
12750 +--- linux-3.1.1/arch/alpha/include/asm/elf.h 2011-11-11 15:19:27.000000000 -0500
12751 ++++ linux-3.1.1/arch/alpha/include/asm/elf.h 2011-11-16 18:39:07.000000000 -0500
12752 @@ -90,6 +90,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_N
12753
12754 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x1000000)
12755 @@ -15,9 +15,9 @@ diff -urNp linux-3.0.9/arch/alpha/include/asm/elf.h linux-3.0.9/arch/alpha/inclu
12756 /* $0 is set by ld.so to a pointer to a function which might be
12757 registered using atexit. This provides a mean for the dynamic
12758 linker to call DT_FINI functions for shared libraries that have
12759 -diff -urNp linux-3.0.9/arch/alpha/include/asm/pgtable.h linux-3.0.9/arch/alpha/include/asm/pgtable.h
12760 ---- linux-3.0.9/arch/alpha/include/asm/pgtable.h 2011-11-11 13:12:24.000000000 -0500
12761 -+++ linux-3.0.9/arch/alpha/include/asm/pgtable.h 2011-11-15 20:02:59.000000000 -0500
12762 +diff -urNp linux-3.1.1/arch/alpha/include/asm/pgtable.h linux-3.1.1/arch/alpha/include/asm/pgtable.h
12763 +--- linux-3.1.1/arch/alpha/include/asm/pgtable.h 2011-11-11 15:19:27.000000000 -0500
12764 ++++ linux-3.1.1/arch/alpha/include/asm/pgtable.h 2011-11-16 18:39:07.000000000 -0500
12765 @@ -101,6 +101,17 @@ struct vm_area_struct;
12766 #define PAGE_SHARED __pgprot(_PAGE_VALID | __ACCESS_BITS)
12767 #define PAGE_COPY __pgprot(_PAGE_VALID | __ACCESS_BITS | _PAGE_FOW)
12768 @@ -36,10 +36,10 @@ diff -urNp linux-3.0.9/arch/alpha/include/asm/pgtable.h linux-3.0.9/arch/alpha/i
12769 #define PAGE_KERNEL __pgprot(_PAGE_VALID | _PAGE_ASM | _PAGE_KRE | _PAGE_KWE)
12770
12771 #define _PAGE_NORMAL(x) __pgprot(_PAGE_VALID | __ACCESS_BITS | (x))
12772 -diff -urNp linux-3.0.9/arch/alpha/kernel/module.c linux-3.0.9/arch/alpha/kernel/module.c
12773 ---- linux-3.0.9/arch/alpha/kernel/module.c 2011-11-11 13:12:24.000000000 -0500
12774 -+++ linux-3.0.9/arch/alpha/kernel/module.c 2011-11-15 20:02:59.000000000 -0500
12775 -@@ -182,7 +182,7 @@ apply_relocate_add(Elf64_Shdr *sechdrs,
12776 +diff -urNp linux-3.1.1/arch/alpha/kernel/module.c linux-3.1.1/arch/alpha/kernel/module.c
12777 +--- linux-3.1.1/arch/alpha/kernel/module.c 2011-11-11 15:19:27.000000000 -0500
12778 ++++ linux-3.1.1/arch/alpha/kernel/module.c 2011-11-16 18:39:07.000000000 -0500
12779 +@@ -160,7 +160,7 @@ apply_relocate_add(Elf64_Shdr *sechdrs,
12780
12781 /* The small sections were sorted to the end of the segment.
12782 The following should definitely cover them. */
12783 @@ -48,10 +48,10 @@ diff -urNp linux-3.0.9/arch/alpha/kernel/module.c linux-3.0.9/arch/alpha/kernel/
12784 got = sechdrs[me->arch.gotsecindex].sh_addr;
12785
12786 for (i = 0; i < n; i++) {
12787 -diff -urNp linux-3.0.9/arch/alpha/kernel/osf_sys.c linux-3.0.9/arch/alpha/kernel/osf_sys.c
12788 ---- linux-3.0.9/arch/alpha/kernel/osf_sys.c 2011-11-11 13:12:24.000000000 -0500
12789 -+++ linux-3.0.9/arch/alpha/kernel/osf_sys.c 2011-11-15 20:02:59.000000000 -0500
12790 -@@ -1145,7 +1145,7 @@ arch_get_unmapped_area_1(unsigned long a
12791 +diff -urNp linux-3.1.1/arch/alpha/kernel/osf_sys.c linux-3.1.1/arch/alpha/kernel/osf_sys.c
12792 +--- linux-3.1.1/arch/alpha/kernel/osf_sys.c 2011-11-11 15:19:27.000000000 -0500
12793 ++++ linux-3.1.1/arch/alpha/kernel/osf_sys.c 2011-11-16 18:39:07.000000000 -0500
12794 +@@ -1147,7 +1147,7 @@ arch_get_unmapped_area_1(unsigned long a
12795 /* At this point: (!vma || addr < vma->vm_end). */
12796 if (limit - len < addr)
12797 return -ENOMEM;
12798 @@ -60,7 +60,7 @@ diff -urNp linux-3.0.9/arch/alpha/kernel/osf_sys.c linux-3.0.9/arch/alpha/kernel
12799 return addr;
12800 addr = vma->vm_end;
12801 vma = vma->vm_next;
12802 -@@ -1181,6 +1181,10 @@ arch_get_unmapped_area(struct file *filp
12803 +@@ -1183,6 +1183,10 @@ arch_get_unmapped_area(struct file *filp
12804 merely specific addresses, but regions of memory -- perhaps
12805 this feature should be incorporated into all ports? */
12806
12807 @@ -71,7 +71,7 @@ diff -urNp linux-3.0.9/arch/alpha/kernel/osf_sys.c linux-3.0.9/arch/alpha/kernel
12808 if (addr) {
12809 addr = arch_get_unmapped_area_1 (PAGE_ALIGN(addr), len, limit);
12810 if (addr != (unsigned long) -ENOMEM)
12811 -@@ -1188,8 +1192,8 @@ arch_get_unmapped_area(struct file *filp
12812 +@@ -1190,8 +1194,8 @@ arch_get_unmapped_area(struct file *filp
12813 }
12814
12815 /* Next, try allocating at TASK_UNMAPPED_BASE. */
12816 @@ -82,9 +82,9 @@ diff -urNp linux-3.0.9/arch/alpha/kernel/osf_sys.c linux-3.0.9/arch/alpha/kernel
12817 if (addr != (unsigned long) -ENOMEM)
12818 return addr;
12819
12820 -diff -urNp linux-3.0.9/arch/alpha/mm/fault.c linux-3.0.9/arch/alpha/mm/fault.c
12821 ---- linux-3.0.9/arch/alpha/mm/fault.c 2011-11-11 13:12:24.000000000 -0500
12822 -+++ linux-3.0.9/arch/alpha/mm/fault.c 2011-11-15 20:02:59.000000000 -0500
12823 +diff -urNp linux-3.1.1/arch/alpha/mm/fault.c linux-3.1.1/arch/alpha/mm/fault.c
12824 +--- linux-3.1.1/arch/alpha/mm/fault.c 2011-11-11 15:19:27.000000000 -0500
12825 ++++ linux-3.1.1/arch/alpha/mm/fault.c 2011-11-16 18:39:07.000000000 -0500
12826 @@ -54,6 +54,124 @@ __load_new_mm_context(struct mm_struct *
12827 __reload_thread(pcb);
12828 }
12829 @@ -192,7 +192,7 @@ diff -urNp linux-3.0.9/arch/alpha/mm/fault.c linux-3.0.9/arch/alpha/mm/fault.c
12830 + return 1;
12831 +}
12832 +
12833 -+void pax_report_insns(void *pc, void *sp)
12834 ++void pax_report_insns(struct pt_regs *regs, void *pc, void *sp)
12835 +{
12836 + unsigned long i;
12837 +
12838 @@ -241,9 +241,9 @@ diff -urNp linux-3.0.9/arch/alpha/mm/fault.c linux-3.0.9/arch/alpha/mm/fault.c
12839 } else if (!cause) {
12840 /* Allow reads even for write-only mappings */
12841 if (!(vma->vm_flags & (VM_READ | VM_WRITE)))
12842 -diff -urNp linux-3.0.9/arch/arm/include/asm/elf.h linux-3.0.9/arch/arm/include/asm/elf.h
12843 ---- linux-3.0.9/arch/arm/include/asm/elf.h 2011-11-11 13:12:24.000000000 -0500
12844 -+++ linux-3.0.9/arch/arm/include/asm/elf.h 2011-11-15 20:02:59.000000000 -0500
12845 +diff -urNp linux-3.1.1/arch/arm/include/asm/elf.h linux-3.1.1/arch/arm/include/asm/elf.h
12846 +--- linux-3.1.1/arch/arm/include/asm/elf.h 2011-11-11 15:19:27.000000000 -0500
12847 ++++ linux-3.1.1/arch/arm/include/asm/elf.h 2011-11-16 18:39:07.000000000 -0500
12848 @@ -116,7 +116,14 @@ int dump_task_regs(struct task_struct *t
12849 the loader. We need to make sure that it is out of the way of the program
12850 that it will "exec", and that there is sufficient room for the brk. */
12851 @@ -271,9 +271,9 @@ diff -urNp linux-3.0.9/arch/arm/include/asm/elf.h linux-3.0.9/arch/arm/include/a
12852 extern int vectors_user_mapping(void);
12853 #define arch_setup_additional_pages(bprm, uses_interp) vectors_user_mapping()
12854 #define ARCH_HAS_SETUP_ADDITIONAL_PAGES
12855 -diff -urNp linux-3.0.9/arch/arm/include/asm/kmap_types.h linux-3.0.9/arch/arm/include/asm/kmap_types.h
12856 ---- linux-3.0.9/arch/arm/include/asm/kmap_types.h 2011-11-11 13:12:24.000000000 -0500
12857 -+++ linux-3.0.9/arch/arm/include/asm/kmap_types.h 2011-11-15 20:02:59.000000000 -0500
12858 +diff -urNp linux-3.1.1/arch/arm/include/asm/kmap_types.h linux-3.1.1/arch/arm/include/asm/kmap_types.h
12859 +--- linux-3.1.1/arch/arm/include/asm/kmap_types.h 2011-11-11 15:19:27.000000000 -0500
12860 ++++ linux-3.1.1/arch/arm/include/asm/kmap_types.h 2011-11-16 18:39:07.000000000 -0500
12861 @@ -21,6 +21,7 @@ enum km_type {
12862 KM_L1_CACHE,
12863 KM_L2_CACHE,
12864 @@ -282,9 +282,9 @@ diff -urNp linux-3.0.9/arch/arm/include/asm/kmap_types.h linux-3.0.9/arch/arm/in
12865 KM_TYPE_NR
12866 };
12867
12868 -diff -urNp linux-3.0.9/arch/arm/include/asm/uaccess.h linux-3.0.9/arch/arm/include/asm/uaccess.h
12869 ---- linux-3.0.9/arch/arm/include/asm/uaccess.h 2011-11-11 13:12:24.000000000 -0500
12870 -+++ linux-3.0.9/arch/arm/include/asm/uaccess.h 2011-11-15 20:02:59.000000000 -0500
12871 +diff -urNp linux-3.1.1/arch/arm/include/asm/uaccess.h linux-3.1.1/arch/arm/include/asm/uaccess.h
12872 +--- linux-3.1.1/arch/arm/include/asm/uaccess.h 2011-11-11 15:19:27.000000000 -0500
12873 ++++ linux-3.1.1/arch/arm/include/asm/uaccess.h 2011-11-16 18:39:07.000000000 -0500
12874 @@ -22,6 +22,8 @@
12875 #define VERIFY_READ 0
12876 #define VERIFY_WRITE 1
12877 @@ -340,9 +340,9 @@ diff -urNp linux-3.0.9/arch/arm/include/asm/uaccess.h linux-3.0.9/arch/arm/inclu
12878 if (access_ok(VERIFY_WRITE, to, n))
12879 n = __copy_to_user(to, from, n);
12880 return n;
12881 -diff -urNp linux-3.0.9/arch/arm/kernel/armksyms.c linux-3.0.9/arch/arm/kernel/armksyms.c
12882 ---- linux-3.0.9/arch/arm/kernel/armksyms.c 2011-11-11 13:12:24.000000000 -0500
12883 -+++ linux-3.0.9/arch/arm/kernel/armksyms.c 2011-11-15 20:02:59.000000000 -0500
12884 +diff -urNp linux-3.1.1/arch/arm/kernel/armksyms.c linux-3.1.1/arch/arm/kernel/armksyms.c
12885 +--- linux-3.1.1/arch/arm/kernel/armksyms.c 2011-11-11 15:19:27.000000000 -0500
12886 ++++ linux-3.1.1/arch/arm/kernel/armksyms.c 2011-11-16 18:39:07.000000000 -0500
12887 @@ -98,8 +98,8 @@ EXPORT_SYMBOL(__strncpy_from_user);
12888 #ifdef CONFIG_MMU
12889 EXPORT_SYMBOL(copy_page);
12890 @@ -354,18 +354,18 @@ diff -urNp linux-3.0.9/arch/arm/kernel/armksyms.c linux-3.0.9/arch/arm/kernel/ar
12891 EXPORT_SYMBOL(__clear_user);
12892
12893 EXPORT_SYMBOL(__get_user_1);
12894 -diff -urNp linux-3.0.9/arch/arm/kernel/process.c linux-3.0.9/arch/arm/kernel/process.c
12895 ---- linux-3.0.9/arch/arm/kernel/process.c 2011-11-11 13:12:24.000000000 -0500
12896 -+++ linux-3.0.9/arch/arm/kernel/process.c 2011-11-15 20:02:59.000000000 -0500
12897 +diff -urNp linux-3.1.1/arch/arm/kernel/process.c linux-3.1.1/arch/arm/kernel/process.c
12898 +--- linux-3.1.1/arch/arm/kernel/process.c 2011-11-11 15:19:27.000000000 -0500
12899 ++++ linux-3.1.1/arch/arm/kernel/process.c 2011-11-16 18:39:07.000000000 -0500
12900 @@ -28,7 +28,6 @@
12901 #include <linux/tick.h>
12902 #include <linux/utsname.h>
12903 #include <linux/uaccess.h>
12904 -#include <linux/random.h>
12905 #include <linux/hw_breakpoint.h>
12906 + #include <linux/cpuidle.h>
12907
12908 - #include <asm/cacheflush.h>
12909 -@@ -479,12 +478,6 @@ unsigned long get_wchan(struct task_stru
12910 +@@ -481,12 +480,6 @@ unsigned long get_wchan(struct task_stru
12911 return 0;
12912 }
12913
12914 @@ -378,9 +378,9 @@ diff -urNp linux-3.0.9/arch/arm/kernel/process.c linux-3.0.9/arch/arm/kernel/pro
12915 #ifdef CONFIG_MMU
12916 /*
12917 * The vectors page is always readable from user space for the
12918 -diff -urNp linux-3.0.9/arch/arm/kernel/traps.c linux-3.0.9/arch/arm/kernel/traps.c
12919 ---- linux-3.0.9/arch/arm/kernel/traps.c 2011-11-11 13:12:24.000000000 -0500
12920 -+++ linux-3.0.9/arch/arm/kernel/traps.c 2011-11-15 20:02:59.000000000 -0500
12921 +diff -urNp linux-3.1.1/arch/arm/kernel/traps.c linux-3.1.1/arch/arm/kernel/traps.c
12922 +--- linux-3.1.1/arch/arm/kernel/traps.c 2011-11-11 15:19:27.000000000 -0500
12923 ++++ linux-3.1.1/arch/arm/kernel/traps.c 2011-11-16 18:40:08.000000000 -0500
12924 @@ -257,6 +257,8 @@ static int __die(const char *str, int er
12925
12926 static DEFINE_SPINLOCK(die_lock);
12927 @@ -400,9 +400,9 @@ diff -urNp linux-3.0.9/arch/arm/kernel/traps.c linux-3.0.9/arch/arm/kernel/traps
12928 if (ret != NOTIFY_STOP)
12929 do_exit(SIGSEGV);
12930 }
12931 -diff -urNp linux-3.0.9/arch/arm/lib/copy_from_user.S linux-3.0.9/arch/arm/lib/copy_from_user.S
12932 ---- linux-3.0.9/arch/arm/lib/copy_from_user.S 2011-11-11 13:12:24.000000000 -0500
12933 -+++ linux-3.0.9/arch/arm/lib/copy_from_user.S 2011-11-15 20:02:59.000000000 -0500
12934 +diff -urNp linux-3.1.1/arch/arm/lib/copy_from_user.S linux-3.1.1/arch/arm/lib/copy_from_user.S
12935 +--- linux-3.1.1/arch/arm/lib/copy_from_user.S 2011-11-11 15:19:27.000000000 -0500
12936 ++++ linux-3.1.1/arch/arm/lib/copy_from_user.S 2011-11-16 18:39:07.000000000 -0500
12937 @@ -16,7 +16,7 @@
12938 /*
12939 * Prototype:
12940 @@ -426,9 +426,9 @@ diff -urNp linux-3.0.9/arch/arm/lib/copy_from_user.S linux-3.0.9/arch/arm/lib/co
12941
12942 .pushsection .fixup,"ax"
12943 .align 0
12944 -diff -urNp linux-3.0.9/arch/arm/lib/copy_to_user.S linux-3.0.9/arch/arm/lib/copy_to_user.S
12945 ---- linux-3.0.9/arch/arm/lib/copy_to_user.S 2011-11-11 13:12:24.000000000 -0500
12946 -+++ linux-3.0.9/arch/arm/lib/copy_to_user.S 2011-11-15 20:02:59.000000000 -0500
12947 +diff -urNp linux-3.1.1/arch/arm/lib/copy_to_user.S linux-3.1.1/arch/arm/lib/copy_to_user.S
12948 +--- linux-3.1.1/arch/arm/lib/copy_to_user.S 2011-11-11 15:19:27.000000000 -0500
12949 ++++ linux-3.1.1/arch/arm/lib/copy_to_user.S 2011-11-16 18:39:07.000000000 -0500
12950 @@ -16,7 +16,7 @@
12951 /*
12952 * Prototype:
12953 @@ -452,9 +452,9 @@ diff -urNp linux-3.0.9/arch/arm/lib/copy_to_user.S linux-3.0.9/arch/arm/lib/copy
12954 ENDPROC(__copy_to_user_std)
12955
12956 .pushsection .fixup,"ax"
12957 -diff -urNp linux-3.0.9/arch/arm/lib/uaccess.S linux-3.0.9/arch/arm/lib/uaccess.S
12958 ---- linux-3.0.9/arch/arm/lib/uaccess.S 2011-11-11 13:12:24.000000000 -0500
12959 -+++ linux-3.0.9/arch/arm/lib/uaccess.S 2011-11-15 20:02:59.000000000 -0500
12960 +diff -urNp linux-3.1.1/arch/arm/lib/uaccess.S linux-3.1.1/arch/arm/lib/uaccess.S
12961 +--- linux-3.1.1/arch/arm/lib/uaccess.S 2011-11-11 15:19:27.000000000 -0500
12962 ++++ linux-3.1.1/arch/arm/lib/uaccess.S 2011-11-16 18:39:07.000000000 -0500
12963 @@ -20,7 +20,7 @@
12964
12965 #define PAGE_SHIFT 12
12966 @@ -508,9 +508,9 @@ diff -urNp linux-3.0.9/arch/arm/lib/uaccess.S linux-3.0.9/arch/arm/lib/uaccess.S
12967
12968 .pushsection .fixup,"ax"
12969 .align 0
12970 -diff -urNp linux-3.0.9/arch/arm/lib/uaccess_with_memcpy.c linux-3.0.9/arch/arm/lib/uaccess_with_memcpy.c
12971 ---- linux-3.0.9/arch/arm/lib/uaccess_with_memcpy.c 2011-11-11 13:12:24.000000000 -0500
12972 -+++ linux-3.0.9/arch/arm/lib/uaccess_with_memcpy.c 2011-11-15 20:02:59.000000000 -0500
12973 +diff -urNp linux-3.1.1/arch/arm/lib/uaccess_with_memcpy.c linux-3.1.1/arch/arm/lib/uaccess_with_memcpy.c
12974 +--- linux-3.1.1/arch/arm/lib/uaccess_with_memcpy.c 2011-11-11 15:19:27.000000000 -0500
12975 ++++ linux-3.1.1/arch/arm/lib/uaccess_with_memcpy.c 2011-11-16 18:39:07.000000000 -0500
12976 @@ -103,7 +103,7 @@ out:
12977 }
12978
12979 @@ -520,9 +520,9 @@ diff -urNp linux-3.0.9/arch/arm/lib/uaccess_with_memcpy.c linux-3.0.9/arch/arm/l
12980 {
12981 /*
12982 * This test is stubbed out of the main function above to keep
12983 -diff -urNp linux-3.0.9/arch/arm/mach-ux500/mbox-db5500.c linux-3.0.9/arch/arm/mach-ux500/mbox-db5500.c
12984 ---- linux-3.0.9/arch/arm/mach-ux500/mbox-db5500.c 2011-11-11 13:12:24.000000000 -0500
12985 -+++ linux-3.0.9/arch/arm/mach-ux500/mbox-db5500.c 2011-11-15 20:02:59.000000000 -0500
12986 +diff -urNp linux-3.1.1/arch/arm/mach-ux500/mbox-db5500.c linux-3.1.1/arch/arm/mach-ux500/mbox-db5500.c
12987 +--- linux-3.1.1/arch/arm/mach-ux500/mbox-db5500.c 2011-11-11 15:19:27.000000000 -0500
12988 ++++ linux-3.1.1/arch/arm/mach-ux500/mbox-db5500.c 2011-11-16 18:40:08.000000000 -0500
12989 @@ -168,7 +168,7 @@ static ssize_t mbox_read_fifo(struct dev
12990 return sprintf(buf, "0x%X\n", mbox_value);
12991 }
12992 @@ -532,9 +532,9 @@ diff -urNp linux-3.0.9/arch/arm/mach-ux500/mbox-db5500.c linux-3.0.9/arch/arm/ma
12993
12994 static int mbox_show(struct seq_file *s, void *data)
12995 {
12996 -diff -urNp linux-3.0.9/arch/arm/mm/fault.c linux-3.0.9/arch/arm/mm/fault.c
12997 ---- linux-3.0.9/arch/arm/mm/fault.c 2011-11-11 13:12:24.000000000 -0500
12998 -+++ linux-3.0.9/arch/arm/mm/fault.c 2011-11-15 20:02:59.000000000 -0500
12999 +diff -urNp linux-3.1.1/arch/arm/mm/fault.c linux-3.1.1/arch/arm/mm/fault.c
13000 +--- linux-3.1.1/arch/arm/mm/fault.c 2011-11-11 15:19:27.000000000 -0500
13001 ++++ linux-3.1.1/arch/arm/mm/fault.c 2011-11-16 18:39:07.000000000 -0500
13002 @@ -182,6 +182,13 @@ __do_user_fault(struct task_struct *tsk,
13003 }
13004 #endif
13005 @@ -549,12 +549,12 @@ diff -urNp linux-3.0.9/arch/arm/mm/fault.c linux-3.0.9/arch/arm/mm/fault.c
13006 tsk->thread.address = addr;
13007 tsk->thread.error_code = fsr;
13008 tsk->thread.trap_no = 14;
13009 -@@ -379,6 +386,33 @@ do_page_fault(unsigned long addr, unsign
13010 +@@ -383,6 +390,33 @@ do_page_fault(unsigned long addr, unsign
13011 }
13012 #endif /* CONFIG_MMU */
13013
13014 +#ifdef CONFIG_PAX_PAGEEXEC
13015 -+void pax_report_insns(void *pc, void *sp)
13016 ++void pax_report_insns(struct pt_regs *regs, void *pc, void *sp)
13017 +{
13018 + long i;
13019 +
13020 @@ -583,9 +583,9 @@ diff -urNp linux-3.0.9/arch/arm/mm/fault.c linux-3.0.9/arch/arm/mm/fault.c
13021 /*
13022 * First Level Translation Fault Handler
13023 *
13024 -diff -urNp linux-3.0.9/arch/arm/mm/mmap.c linux-3.0.9/arch/arm/mm/mmap.c
13025 ---- linux-3.0.9/arch/arm/mm/mmap.c 2011-11-11 13:12:24.000000000 -0500
13026 -+++ linux-3.0.9/arch/arm/mm/mmap.c 2011-11-15 20:02:59.000000000 -0500
13027 +diff -urNp linux-3.1.1/arch/arm/mm/mmap.c linux-3.1.1/arch/arm/mm/mmap.c
13028 +--- linux-3.1.1/arch/arm/mm/mmap.c 2011-11-11 15:19:27.000000000 -0500
13029 ++++ linux-3.1.1/arch/arm/mm/mmap.c 2011-11-16 18:39:07.000000000 -0500
13030 @@ -65,6 +65,10 @@ arch_get_unmapped_area(struct file *filp
13031 if (len > TASK_SIZE)
13032 return -ENOMEM;
13033 @@ -635,9 +635,9 @@ diff -urNp linux-3.0.9/arch/arm/mm/mmap.c linux-3.0.9/arch/arm/mm/mmap.c
13034 /*
13035 * Remember the place where we stopped the search:
13036 */
13037 -diff -urNp linux-3.0.9/arch/avr32/include/asm/elf.h linux-3.0.9/arch/avr32/include/asm/elf.h
13038 ---- linux-3.0.9/arch/avr32/include/asm/elf.h 2011-11-11 13:12:24.000000000 -0500
13039 -+++ linux-3.0.9/arch/avr32/include/asm/elf.h 2011-11-15 20:02:59.000000000 -0500
13040 +diff -urNp linux-3.1.1/arch/avr32/include/asm/elf.h linux-3.1.1/arch/avr32/include/asm/elf.h
13041 +--- linux-3.1.1/arch/avr32/include/asm/elf.h 2011-11-11 15:19:27.000000000 -0500
13042 ++++ linux-3.1.1/arch/avr32/include/asm/elf.h 2011-11-16 18:39:07.000000000 -0500
13043 @@ -84,8 +84,14 @@ typedef struct user_fpu_struct elf_fpreg
13044 the loader. We need to make sure that it is out of the way of the program
13045 that it will "exec", and that there is sufficient room for the brk. */
13046 @@ -654,9 +654,9 @@ diff -urNp linux-3.0.9/arch/avr32/include/asm/elf.h linux-3.0.9/arch/avr32/inclu
13047
13048 /* This yields a mask that user programs can use to figure out what
13049 instruction set this CPU supports. This could be done in user space,
13050 -diff -urNp linux-3.0.9/arch/avr32/include/asm/kmap_types.h linux-3.0.9/arch/avr32/include/asm/kmap_types.h
13051 ---- linux-3.0.9/arch/avr32/include/asm/kmap_types.h 2011-11-11 13:12:24.000000000 -0500
13052 -+++ linux-3.0.9/arch/avr32/include/asm/kmap_types.h 2011-11-15 20:02:59.000000000 -0500
13053 +diff -urNp linux-3.1.1/arch/avr32/include/asm/kmap_types.h linux-3.1.1/arch/avr32/include/asm/kmap_types.h
13054 +--- linux-3.1.1/arch/avr32/include/asm/kmap_types.h 2011-11-11 15:19:27.000000000 -0500
13055 ++++ linux-3.1.1/arch/avr32/include/asm/kmap_types.h 2011-11-16 18:39:07.000000000 -0500
13056 @@ -22,7 +22,8 @@ D(10) KM_IRQ0,
13057 D(11) KM_IRQ1,
13058 D(12) KM_SOFTIRQ0,
13059 @@ -667,15 +667,15 @@ diff -urNp linux-3.0.9/arch/avr32/include/asm/kmap_types.h linux-3.0.9/arch/avr3
13060 };
13061
13062 #undef D
13063 -diff -urNp linux-3.0.9/arch/avr32/mm/fault.c linux-3.0.9/arch/avr32/mm/fault.c
13064 ---- linux-3.0.9/arch/avr32/mm/fault.c 2011-11-11 13:12:24.000000000 -0500
13065 -+++ linux-3.0.9/arch/avr32/mm/fault.c 2011-11-15 20:02:59.000000000 -0500
13066 +diff -urNp linux-3.1.1/arch/avr32/mm/fault.c linux-3.1.1/arch/avr32/mm/fault.c
13067 +--- linux-3.1.1/arch/avr32/mm/fault.c 2011-11-11 15:19:27.000000000 -0500
13068 ++++ linux-3.1.1/arch/avr32/mm/fault.c 2011-11-16 18:39:07.000000000 -0500
13069 @@ -41,6 +41,23 @@ static inline int notify_page_fault(stru
13070
13071 int exception_trace = 1;
13072
13073 +#ifdef CONFIG_PAX_PAGEEXEC
13074 -+void pax_report_insns(void *pc, void *sp)
13075 ++void pax_report_insns(struct pt_regs *regs, void *pc, void *sp)
13076 +{
13077 + unsigned long i;
13078 +
13079 @@ -711,9 +711,9 @@ diff -urNp linux-3.0.9/arch/avr32/mm/fault.c linux-3.0.9/arch/avr32/mm/fault.c
13080 if (exception_trace && printk_ratelimit())
13081 printk("%s%s[%d]: segfault at %08lx pc %08lx "
13082 "sp %08lx ecr %lu\n",
13083 -diff -urNp linux-3.0.9/arch/frv/include/asm/kmap_types.h linux-3.0.9/arch/frv/include/asm/kmap_types.h
13084 ---- linux-3.0.9/arch/frv/include/asm/kmap_types.h 2011-11-11 13:12:24.000000000 -0500
13085 -+++ linux-3.0.9/arch/frv/include/asm/kmap_types.h 2011-11-15 20:02:59.000000000 -0500
13086 +diff -urNp linux-3.1.1/arch/frv/include/asm/kmap_types.h linux-3.1.1/arch/frv/include/asm/kmap_types.h
13087 +--- linux-3.1.1/arch/frv/include/asm/kmap_types.h 2011-11-11 15:19:27.000000000 -0500
13088 ++++ linux-3.1.1/arch/frv/include/asm/kmap_types.h 2011-11-16 18:39:07.000000000 -0500
13089 @@ -23,6 +23,7 @@ enum km_type {
13090 KM_IRQ1,
13091 KM_SOFTIRQ0,
13092 @@ -722,9 +722,9 @@ diff -urNp linux-3.0.9/arch/frv/include/asm/kmap_types.h linux-3.0.9/arch/frv/in
13093 KM_TYPE_NR
13094 };
13095
13096 -diff -urNp linux-3.0.9/arch/frv/mm/elf-fdpic.c linux-3.0.9/arch/frv/mm/elf-fdpic.c
13097 ---- linux-3.0.9/arch/frv/mm/elf-fdpic.c 2011-11-11 13:12:24.000000000 -0500
13098 -+++ linux-3.0.9/arch/frv/mm/elf-fdpic.c 2011-11-15 20:02:59.000000000 -0500
13099 +diff -urNp linux-3.1.1/arch/frv/mm/elf-fdpic.c linux-3.1.1/arch/frv/mm/elf-fdpic.c
13100 +--- linux-3.1.1/arch/frv/mm/elf-fdpic.c 2011-11-11 15:19:27.000000000 -0500
13101 ++++ linux-3.1.1/arch/frv/mm/elf-fdpic.c 2011-11-16 18:39:07.000000000 -0500
13102 @@ -73,8 +73,7 @@ unsigned long arch_get_unmapped_area(str
13103 if (addr) {
13104 addr = PAGE_ALIGN(addr);
13105 @@ -753,9 +753,9 @@ diff -urNp linux-3.0.9/arch/frv/mm/elf-fdpic.c linux-3.0.9/arch/frv/mm/elf-fdpic
13106 goto success;
13107 addr = vma->vm_end;
13108 }
13109 -diff -urNp linux-3.0.9/arch/ia64/include/asm/elf.h linux-3.0.9/arch/ia64/include/asm/elf.h
13110 ---- linux-3.0.9/arch/ia64/include/asm/elf.h 2011-11-11 13:12:24.000000000 -0500
13111 -+++ linux-3.0.9/arch/ia64/include/asm/elf.h 2011-11-15 20:02:59.000000000 -0500
13112 +diff -urNp linux-3.1.1/arch/ia64/include/asm/elf.h linux-3.1.1/arch/ia64/include/asm/elf.h
13113 +--- linux-3.1.1/arch/ia64/include/asm/elf.h 2011-11-11 15:19:27.000000000 -0500
13114 ++++ linux-3.1.1/arch/ia64/include/asm/elf.h 2011-11-16 18:39:07.000000000 -0500
13115 @@ -42,6 +42,13 @@
13116 */
13117 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x800000000UL)
13118 @@ -770,9 +770,9 @@ diff -urNp linux-3.0.9/arch/ia64/include/asm/elf.h linux-3.0.9/arch/ia64/include
13119 #define PT_IA_64_UNWIND 0x70000001
13120
13121 /* IA-64 relocations: */
13122 -diff -urNp linux-3.0.9/arch/ia64/include/asm/pgtable.h linux-3.0.9/arch/ia64/include/asm/pgtable.h
13123 ---- linux-3.0.9/arch/ia64/include/asm/pgtable.h 2011-11-11 13:12:24.000000000 -0500
13124 -+++ linux-3.0.9/arch/ia64/include/asm/pgtable.h 2011-11-15 20:02:59.000000000 -0500
13125 +diff -urNp linux-3.1.1/arch/ia64/include/asm/pgtable.h linux-3.1.1/arch/ia64/include/asm/pgtable.h
13126 +--- linux-3.1.1/arch/ia64/include/asm/pgtable.h 2011-11-11 15:19:27.000000000 -0500
13127 ++++ linux-3.1.1/arch/ia64/include/asm/pgtable.h 2011-11-16 18:39:07.000000000 -0500
13128 @@ -12,7 +12,7 @@
13129 * David Mosberger-Tang <davidm@××××××.com>
13130 */
13131 @@ -800,9 +800,9 @@ diff -urNp linux-3.0.9/arch/ia64/include/asm/pgtable.h linux-3.0.9/arch/ia64/inc
13132 #define PAGE_GATE __pgprot(__ACCESS_BITS | _PAGE_PL_0 | _PAGE_AR_X_RX)
13133 #define PAGE_KERNEL __pgprot(__DIRTY_BITS | _PAGE_PL_0 | _PAGE_AR_RWX)
13134 #define PAGE_KERNELRX __pgprot(__ACCESS_BITS | _PAGE_PL_0 | _PAGE_AR_RX)
13135 -diff -urNp linux-3.0.9/arch/ia64/include/asm/spinlock.h linux-3.0.9/arch/ia64/include/asm/spinlock.h
13136 ---- linux-3.0.9/arch/ia64/include/asm/spinlock.h 2011-11-11 13:12:24.000000000 -0500
13137 -+++ linux-3.0.9/arch/ia64/include/asm/spinlock.h 2011-11-15 20:02:59.000000000 -0500
13138 +diff -urNp linux-3.1.1/arch/ia64/include/asm/spinlock.h linux-3.1.1/arch/ia64/include/asm/spinlock.h
13139 +--- linux-3.1.1/arch/ia64/include/asm/spinlock.h 2011-11-11 15:19:27.000000000 -0500
13140 ++++ linux-3.1.1/arch/ia64/include/asm/spinlock.h 2011-11-16 18:39:07.000000000 -0500
13141 @@ -72,7 +72,7 @@ static __always_inline void __ticket_spi
13142 unsigned short *p = (unsigned short *)&lock->lock + 1, tmp;
13143
13144 @@ -812,9 +812,9 @@ diff -urNp linux-3.0.9/arch/ia64/include/asm/spinlock.h linux-3.0.9/arch/ia64/in
13145 }
13146
13147 static __always_inline void __ticket_spin_unlock_wait(arch_spinlock_t *lock)
13148 -diff -urNp linux-3.0.9/arch/ia64/include/asm/uaccess.h linux-3.0.9/arch/ia64/include/asm/uaccess.h
13149 ---- linux-3.0.9/arch/ia64/include/asm/uaccess.h 2011-11-11 13:12:24.000000000 -0500
13150 -+++ linux-3.0.9/arch/ia64/include/asm/uaccess.h 2011-11-15 20:02:59.000000000 -0500
13151 +diff -urNp linux-3.1.1/arch/ia64/include/asm/uaccess.h linux-3.1.1/arch/ia64/include/asm/uaccess.h
13152 +--- linux-3.1.1/arch/ia64/include/asm/uaccess.h 2011-11-11 15:19:27.000000000 -0500
13153 ++++ linux-3.1.1/arch/ia64/include/asm/uaccess.h 2011-11-16 18:39:07.000000000 -0500
13154 @@ -257,7 +257,7 @@ __copy_from_user (void *to, const void _
13155 const void *__cu_from = (from); \
13156 long __cu_len = (n); \
13157 @@ -833,10 +833,10 @@ diff -urNp linux-3.0.9/arch/ia64/include/asm/uaccess.h linux-3.0.9/arch/ia64/inc
13158 __cu_len = __copy_user((__force void __user *) __cu_to, __cu_from, __cu_len); \
13159 __cu_len; \
13160 })
13161 -diff -urNp linux-3.0.9/arch/ia64/kernel/module.c linux-3.0.9/arch/ia64/kernel/module.c
13162 ---- linux-3.0.9/arch/ia64/kernel/module.c 2011-11-11 13:12:24.000000000 -0500
13163 -+++ linux-3.0.9/arch/ia64/kernel/module.c 2011-11-15 20:02:59.000000000 -0500
13164 -@@ -315,8 +315,7 @@ module_alloc (unsigned long size)
13165 +diff -urNp linux-3.1.1/arch/ia64/kernel/module.c linux-3.1.1/arch/ia64/kernel/module.c
13166 +--- linux-3.1.1/arch/ia64/kernel/module.c 2011-11-11 15:19:27.000000000 -0500
13167 ++++ linux-3.1.1/arch/ia64/kernel/module.c 2011-11-16 18:39:07.000000000 -0500
13168 +@@ -307,8 +307,7 @@ plt_target (struct plt_entry *plt)
13169 void
13170 module_free (struct module *mod, void *module_region)
13171 {
13172 @@ -846,7 +846,7 @@ diff -urNp linux-3.0.9/arch/ia64/kernel/module.c linux-3.0.9/arch/ia64/kernel/mo
13173 unw_remove_unwind_table(mod->arch.init_unw_table);
13174 mod->arch.init_unw_table = NULL;
13175 }
13176 -@@ -502,15 +501,39 @@ module_frob_arch_sections (Elf_Ehdr *ehd
13177 +@@ -494,15 +493,39 @@ module_frob_arch_sections (Elf_Ehdr *ehd
13178 }
13179
13180 static inline int
13181 @@ -888,7 +888,7 @@ diff -urNp linux-3.0.9/arch/ia64/kernel/module.c linux-3.0.9/arch/ia64/kernel/mo
13182 }
13183
13184 static inline int
13185 -@@ -693,7 +716,14 @@ do_reloc (struct module *mod, uint8_t r_
13186 +@@ -685,7 +708,14 @@ do_reloc (struct module *mod, uint8_t r_
13187 break;
13188
13189 case RV_BDREL:
13190 @@ -904,7 +904,7 @@ diff -urNp linux-3.0.9/arch/ia64/kernel/module.c linux-3.0.9/arch/ia64/kernel/mo
13191 break;
13192
13193 case RV_LTV:
13194 -@@ -828,15 +858,15 @@ apply_relocate_add (Elf64_Shdr *sechdrs,
13195 +@@ -820,15 +850,15 @@ apply_relocate_add (Elf64_Shdr *sechdrs,
13196 * addresses have been selected...
13197 */
13198 uint64_t gp;
13199 @@ -924,9 +924,9 @@ diff -urNp linux-3.0.9/arch/ia64/kernel/module.c linux-3.0.9/arch/ia64/kernel/mo
13200 mod->arch.gp = gp;
13201 DEBUGP("%s: placing gp at 0x%lx\n", __func__, gp);
13202 }
13203 -diff -urNp linux-3.0.9/arch/ia64/kernel/sys_ia64.c linux-3.0.9/arch/ia64/kernel/sys_ia64.c
13204 ---- linux-3.0.9/arch/ia64/kernel/sys_ia64.c 2011-11-11 13:12:24.000000000 -0500
13205 -+++ linux-3.0.9/arch/ia64/kernel/sys_ia64.c 2011-11-15 20:02:59.000000000 -0500
13206 +diff -urNp linux-3.1.1/arch/ia64/kernel/sys_ia64.c linux-3.1.1/arch/ia64/kernel/sys_ia64.c
13207 +--- linux-3.1.1/arch/ia64/kernel/sys_ia64.c 2011-11-11 15:19:27.000000000 -0500
13208 ++++ linux-3.1.1/arch/ia64/kernel/sys_ia64.c 2011-11-16 18:39:07.000000000 -0500
13209 @@ -43,6 +43,13 @@ arch_get_unmapped_area (struct file *fil
13210 if (REGION_NUMBER(addr) == RGN_HPAGE)
13211 addr = 0;
13212 @@ -959,9 +959,9 @@ diff -urNp linux-3.0.9/arch/ia64/kernel/sys_ia64.c linux-3.0.9/arch/ia64/kernel/
13213 /* Remember the address where we stopped this search: */
13214 mm->free_area_cache = addr + len;
13215 return addr;
13216 -diff -urNp linux-3.0.9/arch/ia64/kernel/vmlinux.lds.S linux-3.0.9/arch/ia64/kernel/vmlinux.lds.S
13217 ---- linux-3.0.9/arch/ia64/kernel/vmlinux.lds.S 2011-11-11 13:12:24.000000000 -0500
13218 -+++ linux-3.0.9/arch/ia64/kernel/vmlinux.lds.S 2011-11-15 20:02:59.000000000 -0500
13219 +diff -urNp linux-3.1.1/arch/ia64/kernel/vmlinux.lds.S linux-3.1.1/arch/ia64/kernel/vmlinux.lds.S
13220 +--- linux-3.1.1/arch/ia64/kernel/vmlinux.lds.S 2011-11-11 15:19:27.000000000 -0500
13221 ++++ linux-3.1.1/arch/ia64/kernel/vmlinux.lds.S 2011-11-16 18:39:07.000000000 -0500
13222 @@ -199,7 +199,7 @@ SECTIONS {
13223 /* Per-cpu data: */
13224 . = ALIGN(PERCPU_PAGE_SIZE);
13225 @@ -971,15 +971,15 @@ diff -urNp linux-3.0.9/arch/ia64/kernel/vmlinux.lds.S linux-3.0.9/arch/ia64/kern
13226 /*
13227 * ensure percpu data fits
13228 * into percpu page size
13229 -diff -urNp linux-3.0.9/arch/ia64/mm/fault.c linux-3.0.9/arch/ia64/mm/fault.c
13230 ---- linux-3.0.9/arch/ia64/mm/fault.c 2011-11-11 13:12:24.000000000 -0500
13231 -+++ linux-3.0.9/arch/ia64/mm/fault.c 2011-11-15 20:02:59.000000000 -0500
13232 +diff -urNp linux-3.1.1/arch/ia64/mm/fault.c linux-3.1.1/arch/ia64/mm/fault.c
13233 +--- linux-3.1.1/arch/ia64/mm/fault.c 2011-11-11 15:19:27.000000000 -0500
13234 ++++ linux-3.1.1/arch/ia64/mm/fault.c 2011-11-16 18:39:07.000000000 -0500
13235 @@ -73,6 +73,23 @@ mapped_kernel_page_is_present (unsigned
13236 return pte_present(pte);
13237 }
13238
13239 +#ifdef CONFIG_PAX_PAGEEXEC
13240 -+void pax_report_insns(void *pc, void *sp)
13241 ++void pax_report_insns(struct pt_regs *regs, void *pc, void *sp)
13242 +{
13243 + unsigned long i;
13244 +
13245 @@ -1023,9 +1023,9 @@ diff -urNp linux-3.0.9/arch/ia64/mm/fault.c linux-3.0.9/arch/ia64/mm/fault.c
13246 /*
13247 * If for any reason at all we couldn't handle the fault, make
13248 * sure we exit gracefully rather than endlessly redo the
13249 -diff -urNp linux-3.0.9/arch/ia64/mm/hugetlbpage.c linux-3.0.9/arch/ia64/mm/hugetlbpage.c
13250 ---- linux-3.0.9/arch/ia64/mm/hugetlbpage.c 2011-11-11 13:12:24.000000000 -0500
13251 -+++ linux-3.0.9/arch/ia64/mm/hugetlbpage.c 2011-11-15 20:02:59.000000000 -0500
13252 +diff -urNp linux-3.1.1/arch/ia64/mm/hugetlbpage.c linux-3.1.1/arch/ia64/mm/hugetlbpage.c
13253 +--- linux-3.1.1/arch/ia64/mm/hugetlbpage.c 2011-11-11 15:19:27.000000000 -0500
13254 ++++ linux-3.1.1/arch/ia64/mm/hugetlbpage.c 2011-11-16 18:39:07.000000000 -0500
13255 @@ -171,7 +171,7 @@ unsigned long hugetlb_get_unmapped_area(
13256 /* At this point: (!vmm || addr < vmm->vm_end). */
13257 if (REGION_OFFSET(addr) + len > RGN_MAP_LIMIT)
13258 @@ -1035,9 +1035,9 @@ diff -urNp linux-3.0.9/arch/ia64/mm/hugetlbpage.c linux-3.0.9/arch/ia64/mm/huget
13259 return addr;
13260 addr = ALIGN(vmm->vm_end, HPAGE_SIZE);
13261 }
13262 -diff -urNp linux-3.0.9/arch/ia64/mm/init.c linux-3.0.9/arch/ia64/mm/init.c
13263 ---- linux-3.0.9/arch/ia64/mm/init.c 2011-11-11 13:12:24.000000000 -0500
13264 -+++ linux-3.0.9/arch/ia64/mm/init.c 2011-11-15 20:02:59.000000000 -0500
13265 +diff -urNp linux-3.1.1/arch/ia64/mm/init.c linux-3.1.1/arch/ia64/mm/init.c
13266 +--- linux-3.1.1/arch/ia64/mm/init.c 2011-11-11 15:19:27.000000000 -0500
13267 ++++ linux-3.1.1/arch/ia64/mm/init.c 2011-11-16 18:39:07.000000000 -0500
13268 @@ -120,6 +120,19 @@ ia64_init_addr_space (void)
13269 vma->vm_start = current->thread.rbs_bot & PAGE_MASK;
13270 vma->vm_end = vma->vm_start + PAGE_SIZE;
13271 @@ -1058,9 +1058,9 @@ diff -urNp linux-3.0.9/arch/ia64/mm/init.c linux-3.0.9/arch/ia64/mm/init.c
13272 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
13273 down_write(&current->mm->mmap_sem);
13274 if (insert_vm_struct(current->mm, vma)) {
13275 -diff -urNp linux-3.0.9/arch/m32r/lib/usercopy.c linux-3.0.9/arch/m32r/lib/usercopy.c
13276 ---- linux-3.0.9/arch/m32r/lib/usercopy.c 2011-11-11 13:12:24.000000000 -0500
13277 -+++ linux-3.0.9/arch/m32r/lib/usercopy.c 2011-11-15 20:02:59.000000000 -0500
13278 +diff -urNp linux-3.1.1/arch/m32r/lib/usercopy.c linux-3.1.1/arch/m32r/lib/usercopy.c
13279 +--- linux-3.1.1/arch/m32r/lib/usercopy.c 2011-11-11 15:19:27.000000000 -0500
13280 ++++ linux-3.1.1/arch/m32r/lib/usercopy.c 2011-11-16 18:39:07.000000000 -0500
13281 @@ -14,6 +14,9 @@
13282 unsigned long
13283 __generic_copy_to_user(void __user *to, const void *from, unsigned long n)
13284 @@ -1081,9 +1081,9 @@ diff -urNp linux-3.0.9/arch/m32r/lib/usercopy.c linux-3.0.9/arch/m32r/lib/userco
13285 prefetchw(to);
13286 if (access_ok(VERIFY_READ, from, n))
13287 __copy_user_zeroing(to,from,n);
13288 -diff -urNp linux-3.0.9/arch/mips/include/asm/elf.h linux-3.0.9/arch/mips/include/asm/elf.h
13289 ---- linux-3.0.9/arch/mips/include/asm/elf.h 2011-11-11 13:12:24.000000000 -0500
13290 -+++ linux-3.0.9/arch/mips/include/asm/elf.h 2011-11-15 20:02:59.000000000 -0500
13291 +diff -urNp linux-3.1.1/arch/mips/include/asm/elf.h linux-3.1.1/arch/mips/include/asm/elf.h
13292 +--- linux-3.1.1/arch/mips/include/asm/elf.h 2011-11-11 15:19:27.000000000 -0500
13293 ++++ linux-3.1.1/arch/mips/include/asm/elf.h 2011-11-16 18:39:07.000000000 -0500
13294 @@ -372,13 +372,16 @@ extern const char *__elf_platform;
13295 #define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2)
13296 #endif
13297 @@ -1105,9 +1105,9 @@ diff -urNp linux-3.0.9/arch/mips/include/asm/elf.h linux-3.0.9/arch/mips/include
13298 -#define arch_randomize_brk arch_randomize_brk
13299 -
13300 #endif /* _ASM_ELF_H */
13301 -diff -urNp linux-3.0.9/arch/mips/include/asm/page.h linux-3.0.9/arch/mips/include/asm/page.h
13302 ---- linux-3.0.9/arch/mips/include/asm/page.h 2011-11-11 13:12:24.000000000 -0500
13303 -+++ linux-3.0.9/arch/mips/include/asm/page.h 2011-11-15 20:02:59.000000000 -0500
13304 +diff -urNp linux-3.1.1/arch/mips/include/asm/page.h linux-3.1.1/arch/mips/include/asm/page.h
13305 +--- linux-3.1.1/arch/mips/include/asm/page.h 2011-11-11 15:19:27.000000000 -0500
13306 ++++ linux-3.1.1/arch/mips/include/asm/page.h 2011-11-16 18:39:07.000000000 -0500
13307 @@ -93,7 +93,7 @@ extern void copy_user_highpage(struct pa
13308 #ifdef CONFIG_CPU_MIPS32
13309 typedef struct { unsigned long pte_low, pte_high; } pte_t;
13310 @@ -1117,9 +1117,9 @@ diff -urNp linux-3.0.9/arch/mips/include/asm/page.h linux-3.0.9/arch/mips/includ
13311 #else
13312 typedef struct { unsigned long long pte; } pte_t;
13313 #define pte_val(x) ((x).pte)
13314 -diff -urNp linux-3.0.9/arch/mips/include/asm/system.h linux-3.0.9/arch/mips/include/asm/system.h
13315 ---- linux-3.0.9/arch/mips/include/asm/system.h 2011-11-11 13:12:24.000000000 -0500
13316 -+++ linux-3.0.9/arch/mips/include/asm/system.h 2011-11-15 20:02:59.000000000 -0500
13317 +diff -urNp linux-3.1.1/arch/mips/include/asm/system.h linux-3.1.1/arch/mips/include/asm/system.h
13318 +--- linux-3.1.1/arch/mips/include/asm/system.h 2011-11-11 15:19:27.000000000 -0500
13319 ++++ linux-3.1.1/arch/mips/include/asm/system.h 2011-11-16 18:39:07.000000000 -0500
13320 @@ -230,6 +230,6 @@ extern void per_cpu_trap_init(void);
13321 */
13322 #define __ARCH_WANT_UNLOCKED_CTXSW
13323 @@ -1128,9 +1128,9 @@ diff -urNp linux-3.0.9/arch/mips/include/asm/system.h linux-3.0.9/arch/mips/incl
13324 +#define arch_align_stack(x) ((x) & ~0xfUL)
13325
13326 #endif /* _ASM_SYSTEM_H */
13327 -diff -urNp linux-3.0.9/arch/mips/kernel/binfmt_elfn32.c linux-3.0.9/arch/mips/kernel/binfmt_elfn32.c
13328 ---- linux-3.0.9/arch/mips/kernel/binfmt_elfn32.c 2011-11-11 13:12:24.000000000 -0500
13329 -+++ linux-3.0.9/arch/mips/kernel/binfmt_elfn32.c 2011-11-15 20:02:59.000000000 -0500
13330 +diff -urNp linux-3.1.1/arch/mips/kernel/binfmt_elfn32.c linux-3.1.1/arch/mips/kernel/binfmt_elfn32.c
13331 +--- linux-3.1.1/arch/mips/kernel/binfmt_elfn32.c 2011-11-11 15:19:27.000000000 -0500
13332 ++++ linux-3.1.1/arch/mips/kernel/binfmt_elfn32.c 2011-11-16 18:39:07.000000000 -0500
13333 @@ -50,6 +50,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_N
13334 #undef ELF_ET_DYN_BASE
13335 #define ELF_ET_DYN_BASE (TASK32_SIZE / 3 * 2)
13336 @@ -1145,9 +1145,9 @@ diff -urNp linux-3.0.9/arch/mips/kernel/binfmt_elfn32.c linux-3.0.9/arch/mips/ke
13337 #include <asm/processor.h>
13338 #include <linux/module.h>
13339 #include <linux/elfcore.h>
13340 -diff -urNp linux-3.0.9/arch/mips/kernel/binfmt_elfo32.c linux-3.0.9/arch/mips/kernel/binfmt_elfo32.c
13341 ---- linux-3.0.9/arch/mips/kernel/binfmt_elfo32.c 2011-11-11 13:12:24.000000000 -0500
13342 -+++ linux-3.0.9/arch/mips/kernel/binfmt_elfo32.c 2011-11-15 20:02:59.000000000 -0500
13343 +diff -urNp linux-3.1.1/arch/mips/kernel/binfmt_elfo32.c linux-3.1.1/arch/mips/kernel/binfmt_elfo32.c
13344 +--- linux-3.1.1/arch/mips/kernel/binfmt_elfo32.c 2011-11-11 15:19:27.000000000 -0500
13345 ++++ linux-3.1.1/arch/mips/kernel/binfmt_elfo32.c 2011-11-16 18:39:07.000000000 -0500
13346 @@ -52,6 +52,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_N
13347 #undef ELF_ET_DYN_BASE
13348 #define ELF_ET_DYN_BASE (TASK32_SIZE / 3 * 2)
13349 @@ -1162,10 +1162,10 @@ diff -urNp linux-3.0.9/arch/mips/kernel/binfmt_elfo32.c linux-3.0.9/arch/mips/ke
13350 #include <asm/processor.h>
13351
13352 /*
13353 -diff -urNp linux-3.0.9/arch/mips/kernel/process.c linux-3.0.9/arch/mips/kernel/process.c
13354 ---- linux-3.0.9/arch/mips/kernel/process.c 2011-11-11 13:12:24.000000000 -0500
13355 -+++ linux-3.0.9/arch/mips/kernel/process.c 2011-11-15 20:02:59.000000000 -0500
13356 -@@ -473,15 +473,3 @@ unsigned long get_wchan(struct task_stru
13357 +diff -urNp linux-3.1.1/arch/mips/kernel/process.c linux-3.1.1/arch/mips/kernel/process.c
13358 +--- linux-3.1.1/arch/mips/kernel/process.c 2011-11-11 15:19:27.000000000 -0500
13359 ++++ linux-3.1.1/arch/mips/kernel/process.c 2011-11-16 18:39:07.000000000 -0500
13360 +@@ -481,15 +481,3 @@ unsigned long get_wchan(struct task_stru
13361 out:
13362 return pc;
13363 }
13364 @@ -1181,15 +1181,15 @@ diff -urNp linux-3.0.9/arch/mips/kernel/process.c linux-3.0.9/arch/mips/kernel/p
13365 -
13366 - return sp & ALMASK;
13367 -}
13368 -diff -urNp linux-3.0.9/arch/mips/mm/fault.c linux-3.0.9/arch/mips/mm/fault.c
13369 ---- linux-3.0.9/arch/mips/mm/fault.c 2011-11-11 13:12:24.000000000 -0500
13370 -+++ linux-3.0.9/arch/mips/mm/fault.c 2011-11-15 20:02:59.000000000 -0500
13371 +diff -urNp linux-3.1.1/arch/mips/mm/fault.c linux-3.1.1/arch/mips/mm/fault.c
13372 +--- linux-3.1.1/arch/mips/mm/fault.c 2011-11-11 15:19:27.000000000 -0500
13373 ++++ linux-3.1.1/arch/mips/mm/fault.c 2011-11-16 18:39:07.000000000 -0500
13374 @@ -28,6 +28,23 @@
13375 #include <asm/highmem.h> /* For VMALLOC_END */
13376 #include <linux/kdebug.h>
13377
13378 +#ifdef CONFIG_PAX_PAGEEXEC
13379 -+void pax_report_insns(void *pc, void *sp)
13380 ++void pax_report_insns(struct pt_regs *regs, void *pc, void *sp)
13381 +{
13382 + unsigned long i;
13383 +
13384 @@ -1208,13 +1208,13 @@ diff -urNp linux-3.0.9/arch/mips/mm/fault.c linux-3.0.9/arch/mips/mm/fault.c
13385 /*
13386 * This routine handles page faults. It determines the address,
13387 * and the problem, and then passes it off to one of the appropriate
13388 -diff -urNp linux-3.0.9/arch/mips/mm/mmap.c linux-3.0.9/arch/mips/mm/mmap.c
13389 ---- linux-3.0.9/arch/mips/mm/mmap.c 2011-11-11 13:12:24.000000000 -0500
13390 -+++ linux-3.0.9/arch/mips/mm/mmap.c 2011-11-15 20:02:59.000000000 -0500
13391 -@@ -48,14 +48,18 @@ unsigned long arch_get_unmapped_area(str
13392 - do_color_align = 0;
13393 - if (filp || (flags & MAP_SHARED))
13394 +diff -urNp linux-3.1.1/arch/mips/mm/mmap.c linux-3.1.1/arch/mips/mm/mmap.c
13395 +--- linux-3.1.1/arch/mips/mm/mmap.c 2011-11-11 15:19:27.000000000 -0500
13396 ++++ linux-3.1.1/arch/mips/mm/mmap.c 2011-11-16 18:39:07.000000000 -0500
13397 +@@ -95,6 +95,11 @@ static unsigned long arch_get_unmapped_a
13398 do_color_align = 1;
13399 +
13400 + /* requesting a specific address */
13401 +
13402 +#ifdef CONFIG_PAX_RANDMMAP
13403 + if (!(current->mm->pax_flags & MF_PAX_RANDMMAP))
13404 @@ -1223,27 +1223,46 @@ diff -urNp linux-3.0.9/arch/mips/mm/mmap.c linux-3.0.9/arch/mips/mm/mmap.c
13405 if (addr) {
13406 if (do_color_align)
13407 addr = COLOUR_ALIGN(addr, pgoff);
13408 - else
13409 +@@ -102,8 +107,7 @@ static unsigned long arch_get_unmapped_a
13410 addr = PAGE_ALIGN(addr);
13411 - vmm = find_vma(current->mm, addr);
13412 +
13413 + vma = find_vma(mm, addr);
13414 - if (TASK_SIZE - len >= addr &&
13415 -- (!vmm || addr + len <= vmm->vm_start))
13416 +- (!vma || addr + len <= vma->vm_start))
13417 + if (TASK_SIZE - len >= addr && check_heap_stack_gap(vmm, addr, len))
13418 return addr;
13419 }
13420 - addr = current->mm->mmap_base;
13421 -@@ -68,7 +72,7 @@ unsigned long arch_get_unmapped_area(str
13422 - /* At this point: (!vmm || addr < vmm->vm_end). */
13423 - if (TASK_SIZE - len < addr)
13424 - return -ENOMEM;
13425 -- if (!vmm || addr + len <= vmm->vm_start)
13426 -+ if (check_heap_stack_gap(vmm, addr, len))
13427 - return addr;
13428 - addr = vmm->vm_end;
13429 - if (do_color_align)
13430 -@@ -93,30 +97,3 @@ void arch_pick_mmap_layout(struct mm_str
13431 - mm->get_unmapped_area = arch_get_unmapped_area;
13432 - mm->unmap_area = arch_unmap_area;
13433 +
13434 +@@ -118,7 +122,7 @@ static unsigned long arch_get_unmapped_a
13435 + /* At this point: (!vma || addr < vma->vm_end). */
13436 + if (TASK_SIZE - len < addr)
13437 + return -ENOMEM;
13438 +- if (!vma || addr + len <= vma->vm_start)
13439 ++ if (check_heap_stack_gap(vmm, addr, len))
13440 + return addr;
13441 + addr = vma->vm_end;
13442 + if (do_color_align)
13443 +@@ -145,7 +149,7 @@ static unsigned long arch_get_unmapped_a
13444 + /* make sure it can fit in the remaining address space */
13445 + if (likely(addr > len)) {
13446 + vma = find_vma(mm, addr - len);
13447 +- if (!vma || addr <= vma->vm_start) {
13448 ++ if (check_heap_stack_gap(vmm, addr - len, len))
13449 + /* cache the address as a hint for next time */
13450 + return mm->free_area_cache = addr - len;
13451 + }
13452 +@@ -165,7 +169,7 @@ static unsigned long arch_get_unmapped_a
13453 + * return with success:
13454 + */
13455 + vma = find_vma(mm, addr);
13456 +- if (likely(!vma || addr + len <= vma->vm_start)) {
13457 ++ if (check_heap_stack_gap(vmm, addr, len)) {
13458 + /* cache the address as a hint for next time */
13459 + return mm->free_area_cache = addr;
13460 + }
13461 +@@ -242,30 +246,3 @@ void arch_pick_mmap_layout(struct mm_str
13462 + mm->unmap_area = arch_unmap_area_topdown;
13463 + }
13464 }
13465 -
13466 -static inline unsigned long brk_rnd(void)
13467 @@ -1272,9 +1291,9 @@ diff -urNp linux-3.0.9/arch/mips/mm/mmap.c linux-3.0.9/arch/mips/mm/mmap.c
13468 -
13469 - return ret;
13470 -}
13471 -diff -urNp linux-3.0.9/arch/parisc/include/asm/elf.h linux-3.0.9/arch/parisc/include/asm/elf.h
13472 ---- linux-3.0.9/arch/parisc/include/asm/elf.h 2011-11-11 13:12:24.000000000 -0500
13473 -+++ linux-3.0.9/arch/parisc/include/asm/elf.h 2011-11-15 20:02:59.000000000 -0500
13474 +diff -urNp linux-3.1.1/arch/parisc/include/asm/elf.h linux-3.1.1/arch/parisc/include/asm/elf.h
13475 +--- linux-3.1.1/arch/parisc/include/asm/elf.h 2011-11-11 15:19:27.000000000 -0500
13476 ++++ linux-3.1.1/arch/parisc/include/asm/elf.h 2011-11-16 18:39:07.000000000 -0500
13477 @@ -342,6 +342,13 @@ struct pt_regs; /* forward declaration..
13478
13479 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x01000000)
13480 @@ -1289,9 +1308,9 @@ diff -urNp linux-3.0.9/arch/parisc/include/asm/elf.h linux-3.0.9/arch/parisc/inc
13481 /* This yields a mask that user programs can use to figure out what
13482 instruction set this CPU supports. This could be done in user space,
13483 but it's not easy, and we've already done it here. */
13484 -diff -urNp linux-3.0.9/arch/parisc/include/asm/pgtable.h linux-3.0.9/arch/parisc/include/asm/pgtable.h
13485 ---- linux-3.0.9/arch/parisc/include/asm/pgtable.h 2011-11-11 13:12:24.000000000 -0500
13486 -+++ linux-3.0.9/arch/parisc/include/asm/pgtable.h 2011-11-15 20:02:59.000000000 -0500
13487 +diff -urNp linux-3.1.1/arch/parisc/include/asm/pgtable.h linux-3.1.1/arch/parisc/include/asm/pgtable.h
13488 +--- linux-3.1.1/arch/parisc/include/asm/pgtable.h 2011-11-11 15:19:27.000000000 -0500
13489 ++++ linux-3.1.1/arch/parisc/include/asm/pgtable.h 2011-11-16 18:39:07.000000000 -0500
13490 @@ -210,6 +210,17 @@ struct vm_area_struct;
13491 #define PAGE_EXECREAD __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_READ | _PAGE_EXEC |_PAGE_ACCESSED)
13492 #define PAGE_COPY PAGE_EXECREAD
13493 @@ -1310,9 +1329,9 @@ diff -urNp linux-3.0.9/arch/parisc/include/asm/pgtable.h linux-3.0.9/arch/parisc
13494 #define PAGE_KERNEL __pgprot(_PAGE_KERNEL)
13495 #define PAGE_KERNEL_EXEC __pgprot(_PAGE_KERNEL_EXEC)
13496 #define PAGE_KERNEL_RWX __pgprot(_PAGE_KERNEL_RWX)
13497 -diff -urNp linux-3.0.9/arch/parisc/kernel/module.c linux-3.0.9/arch/parisc/kernel/module.c
13498 ---- linux-3.0.9/arch/parisc/kernel/module.c 2011-11-11 13:12:24.000000000 -0500
13499 -+++ linux-3.0.9/arch/parisc/kernel/module.c 2011-11-15 20:02:59.000000000 -0500
13500 +diff -urNp linux-3.1.1/arch/parisc/kernel/module.c linux-3.1.1/arch/parisc/kernel/module.c
13501 +--- linux-3.1.1/arch/parisc/kernel/module.c 2011-11-11 15:19:27.000000000 -0500
13502 ++++ linux-3.1.1/arch/parisc/kernel/module.c 2011-11-16 18:39:07.000000000 -0500
13503 @@ -98,16 +98,38 @@
13504
13505 /* three functions to determine where in the module core
13506 @@ -1404,7 +1423,7 @@ diff -urNp linux-3.0.9/arch/parisc/kernel/module.c linux-3.0.9/arch/parisc/kerne
13507 return (Elf_Addr)fdesc;
13508 }
13509 #endif /* CONFIG_64BIT */
13510 -@@ -857,7 +879,7 @@ register_unwind_table(struct module *me,
13511 +@@ -845,7 +867,7 @@ register_unwind_table(struct module *me,
13512
13513 table = (unsigned char *)sechdrs[me->arch.unwind_section].sh_addr;
13514 end = table + sechdrs[me->arch.unwind_section].sh_size;
13515 @@ -1413,9 +1432,9 @@ diff -urNp linux-3.0.9/arch/parisc/kernel/module.c linux-3.0.9/arch/parisc/kerne
13516
13517 DEBUGP("register_unwind_table(), sect = %d at 0x%p - 0x%p (gp=0x%lx)\n",
13518 me->arch.unwind_section, table, end, gp);
13519 -diff -urNp linux-3.0.9/arch/parisc/kernel/sys_parisc.c linux-3.0.9/arch/parisc/kernel/sys_parisc.c
13520 ---- linux-3.0.9/arch/parisc/kernel/sys_parisc.c 2011-11-11 13:12:24.000000000 -0500
13521 -+++ linux-3.0.9/arch/parisc/kernel/sys_parisc.c 2011-11-15 20:02:59.000000000 -0500
13522 +diff -urNp linux-3.1.1/arch/parisc/kernel/sys_parisc.c linux-3.1.1/arch/parisc/kernel/sys_parisc.c
13523 +--- linux-3.1.1/arch/parisc/kernel/sys_parisc.c 2011-11-11 15:19:27.000000000 -0500
13524 ++++ linux-3.1.1/arch/parisc/kernel/sys_parisc.c 2011-11-16 18:39:07.000000000 -0500
13525 @@ -43,7 +43,7 @@ static unsigned long get_unshared_area(u
13526 /* At this point: (!vma || addr < vma->vm_end). */
13527 if (TASK_SIZE - len < addr)
13528 @@ -1443,9 +1462,9 @@ diff -urNp linux-3.0.9/arch/parisc/kernel/sys_parisc.c linux-3.0.9/arch/parisc/k
13529
13530 if (filp) {
13531 addr = get_shared_area(filp->f_mapping, addr, len, pgoff);
13532 -diff -urNp linux-3.0.9/arch/parisc/kernel/traps.c linux-3.0.9/arch/parisc/kernel/traps.c
13533 ---- linux-3.0.9/arch/parisc/kernel/traps.c 2011-11-11 13:12:24.000000000 -0500
13534 -+++ linux-3.0.9/arch/parisc/kernel/traps.c 2011-11-15 20:02:59.000000000 -0500
13535 +diff -urNp linux-3.1.1/arch/parisc/kernel/traps.c linux-3.1.1/arch/parisc/kernel/traps.c
13536 +--- linux-3.1.1/arch/parisc/kernel/traps.c 2011-11-11 15:19:27.000000000 -0500
13537 ++++ linux-3.1.1/arch/parisc/kernel/traps.c 2011-11-16 18:39:07.000000000 -0500
13538 @@ -733,9 +733,7 @@ void notrace handle_interruption(int cod
13539
13540 down_read(&current->mm->mmap_sem);
13541 @@ -1457,9 +1476,9 @@ diff -urNp linux-3.0.9/arch/parisc/kernel/traps.c linux-3.0.9/arch/parisc/kernel
13542 fault_address = regs->iaoq[0];
13543 fault_space = regs->iasq[0];
13544
13545 -diff -urNp linux-3.0.9/arch/parisc/mm/fault.c linux-3.0.9/arch/parisc/mm/fault.c
13546 ---- linux-3.0.9/arch/parisc/mm/fault.c 2011-11-11 13:12:24.000000000 -0500
13547 -+++ linux-3.0.9/arch/parisc/mm/fault.c 2011-11-15 20:02:59.000000000 -0500
13548 +diff -urNp linux-3.1.1/arch/parisc/mm/fault.c linux-3.1.1/arch/parisc/mm/fault.c
13549 +--- linux-3.1.1/arch/parisc/mm/fault.c 2011-11-11 15:19:27.000000000 -0500
13550 ++++ linux-3.1.1/arch/parisc/mm/fault.c 2011-11-16 18:39:07.000000000 -0500
13551 @@ -15,6 +15,7 @@
13552 #include <linux/sched.h>
13553 #include <linux/interrupt.h>
13554 @@ -1575,7 +1594,7 @@ diff -urNp linux-3.0.9/arch/parisc/mm/fault.c linux-3.0.9/arch/parisc/mm/fault.c
13555 + return 1;
13556 +}
13557 +
13558 -+void pax_report_insns(void *pc, void *sp)
13559 ++void pax_report_insns(struct pt_regs *regs, void *pc, void *sp)
13560 +{
13561 + unsigned long i;
13562 +
13563 @@ -1629,9 +1648,9 @@ diff -urNp linux-3.0.9/arch/parisc/mm/fault.c linux-3.0.9/arch/parisc/mm/fault.c
13564
13565 /*
13566 * If for any reason at all we couldn't handle the fault, make
13567 -diff -urNp linux-3.0.9/arch/powerpc/include/asm/elf.h linux-3.0.9/arch/powerpc/include/asm/elf.h
13568 ---- linux-3.0.9/arch/powerpc/include/asm/elf.h 2011-11-11 13:12:24.000000000 -0500
13569 -+++ linux-3.0.9/arch/powerpc/include/asm/elf.h 2011-11-15 20:02:59.000000000 -0500
13570 +diff -urNp linux-3.1.1/arch/powerpc/include/asm/elf.h linux-3.1.1/arch/powerpc/include/asm/elf.h
13571 +--- linux-3.1.1/arch/powerpc/include/asm/elf.h 2011-11-11 15:19:27.000000000 -0500
13572 ++++ linux-3.1.1/arch/powerpc/include/asm/elf.h 2011-11-16 18:39:07.000000000 -0500
13573 @@ -178,8 +178,19 @@ typedef elf_fpreg_t elf_vsrreghalf_t32[E
13574 the loader. We need to make sure that it is out of the way of the program
13575 that it will "exec", and that there is sufficient room for the brk. */
13576 @@ -1664,9 +1683,9 @@ diff -urNp linux-3.0.9/arch/powerpc/include/asm/elf.h linux-3.0.9/arch/powerpc/i
13577 #endif /* __KERNEL__ */
13578
13579 /*
13580 -diff -urNp linux-3.0.9/arch/powerpc/include/asm/kmap_types.h linux-3.0.9/arch/powerpc/include/asm/kmap_types.h
13581 ---- linux-3.0.9/arch/powerpc/include/asm/kmap_types.h 2011-11-11 13:12:24.000000000 -0500
13582 -+++ linux-3.0.9/arch/powerpc/include/asm/kmap_types.h 2011-11-15 20:02:59.000000000 -0500
13583 +diff -urNp linux-3.1.1/arch/powerpc/include/asm/kmap_types.h linux-3.1.1/arch/powerpc/include/asm/kmap_types.h
13584 +--- linux-3.1.1/arch/powerpc/include/asm/kmap_types.h 2011-11-11 15:19:27.000000000 -0500
13585 ++++ linux-3.1.1/arch/powerpc/include/asm/kmap_types.h 2011-11-16 18:39:07.000000000 -0500
13586 @@ -27,6 +27,7 @@ enum km_type {
13587 KM_PPC_SYNC_PAGE,
13588 KM_PPC_SYNC_ICACHE,
13589 @@ -1675,9 +1694,9 @@ diff -urNp linux-3.0.9/arch/powerpc/include/asm/kmap_types.h linux-3.0.9/arch/po
13590 KM_TYPE_NR
13591 };
13592
13593 -diff -urNp linux-3.0.9/arch/powerpc/include/asm/mman.h linux-3.0.9/arch/powerpc/include/asm/mman.h
13594 ---- linux-3.0.9/arch/powerpc/include/asm/mman.h 2011-11-11 13:12:24.000000000 -0500
13595 -+++ linux-3.0.9/arch/powerpc/include/asm/mman.h 2011-11-15 20:02:59.000000000 -0500
13596 +diff -urNp linux-3.1.1/arch/powerpc/include/asm/mman.h linux-3.1.1/arch/powerpc/include/asm/mman.h
13597 +--- linux-3.1.1/arch/powerpc/include/asm/mman.h 2011-11-11 15:19:27.000000000 -0500
13598 ++++ linux-3.1.1/arch/powerpc/include/asm/mman.h 2011-11-16 18:39:07.000000000 -0500
13599 @@ -44,7 +44,7 @@ static inline unsigned long arch_calc_vm
13600 }
13601 #define arch_calc_vm_prot_bits(prot) arch_calc_vm_prot_bits(prot)
13602 @@ -1687,9 +1706,9 @@ diff -urNp linux-3.0.9/arch/powerpc/include/asm/mman.h linux-3.0.9/arch/powerpc/
13603 {
13604 return (vm_flags & VM_SAO) ? __pgprot(_PAGE_SAO) : __pgprot(0);
13605 }
13606 -diff -urNp linux-3.0.9/arch/powerpc/include/asm/page_64.h linux-3.0.9/arch/powerpc/include/asm/page_64.h
13607 ---- linux-3.0.9/arch/powerpc/include/asm/page_64.h 2011-11-11 13:12:24.000000000 -0500
13608 -+++ linux-3.0.9/arch/powerpc/include/asm/page_64.h 2011-11-15 20:02:59.000000000 -0500
13609 +diff -urNp linux-3.1.1/arch/powerpc/include/asm/page_64.h linux-3.1.1/arch/powerpc/include/asm/page_64.h
13610 +--- linux-3.1.1/arch/powerpc/include/asm/page_64.h 2011-11-11 15:19:27.000000000 -0500
13611 ++++ linux-3.1.1/arch/powerpc/include/asm/page_64.h 2011-11-16 18:39:07.000000000 -0500
13612 @@ -155,15 +155,18 @@ do { \
13613 * stack by default, so in the absence of a PT_GNU_STACK program header
13614 * we turn execute permission off.
13615 @@ -1711,9 +1730,9 @@ diff -urNp linux-3.0.9/arch/powerpc/include/asm/page_64.h linux-3.0.9/arch/power
13616
13617 #include <asm-generic/getorder.h>
13618
13619 -diff -urNp linux-3.0.9/arch/powerpc/include/asm/page.h linux-3.0.9/arch/powerpc/include/asm/page.h
13620 ---- linux-3.0.9/arch/powerpc/include/asm/page.h 2011-11-11 13:12:24.000000000 -0500
13621 -+++ linux-3.0.9/arch/powerpc/include/asm/page.h 2011-11-15 20:02:59.000000000 -0500
13622 +diff -urNp linux-3.1.1/arch/powerpc/include/asm/page.h linux-3.1.1/arch/powerpc/include/asm/page.h
13623 +--- linux-3.1.1/arch/powerpc/include/asm/page.h 2011-11-11 15:19:27.000000000 -0500
13624 ++++ linux-3.1.1/arch/powerpc/include/asm/page.h 2011-11-16 18:39:07.000000000 -0500
13625 @@ -129,8 +129,9 @@ extern phys_addr_t kernstart_addr;
13626 * and needs to be executable. This means the whole heap ends
13627 * up being executable.
13628 @@ -1736,9 +1755,9 @@ diff -urNp linux-3.0.9/arch/powerpc/include/asm/page.h linux-3.0.9/arch/powerpc/
13629 #ifndef __ASSEMBLY__
13630
13631 #undef STRICT_MM_TYPECHECKS
13632 -diff -urNp linux-3.0.9/arch/powerpc/include/asm/pgtable.h linux-3.0.9/arch/powerpc/include/asm/pgtable.h
13633 ---- linux-3.0.9/arch/powerpc/include/asm/pgtable.h 2011-11-11 13:12:24.000000000 -0500
13634 -+++ linux-3.0.9/arch/powerpc/include/asm/pgtable.h 2011-11-15 20:02:59.000000000 -0500
13635 +diff -urNp linux-3.1.1/arch/powerpc/include/asm/pgtable.h linux-3.1.1/arch/powerpc/include/asm/pgtable.h
13636 +--- linux-3.1.1/arch/powerpc/include/asm/pgtable.h 2011-11-11 15:19:27.000000000 -0500
13637 ++++ linux-3.1.1/arch/powerpc/include/asm/pgtable.h 2011-11-16 18:39:07.000000000 -0500
13638 @@ -2,6 +2,7 @@
13639 #define _ASM_POWERPC_PGTABLE_H
13640 #ifdef __KERNEL__
13641 @@ -1747,9 +1766,9 @@ diff -urNp linux-3.0.9/arch/powerpc/include/asm/pgtable.h linux-3.0.9/arch/power
13642 #ifndef __ASSEMBLY__
13643 #include <asm/processor.h> /* For TASK_SIZE */
13644 #include <asm/mmu.h>
13645 -diff -urNp linux-3.0.9/arch/powerpc/include/asm/pte-hash32.h linux-3.0.9/arch/powerpc/include/asm/pte-hash32.h
13646 ---- linux-3.0.9/arch/powerpc/include/asm/pte-hash32.h 2011-11-11 13:12:24.000000000 -0500
13647 -+++ linux-3.0.9/arch/powerpc/include/asm/pte-hash32.h 2011-11-15 20:02:59.000000000 -0500
13648 +diff -urNp linux-3.1.1/arch/powerpc/include/asm/pte-hash32.h linux-3.1.1/arch/powerpc/include/asm/pte-hash32.h
13649 +--- linux-3.1.1/arch/powerpc/include/asm/pte-hash32.h 2011-11-11 15:19:27.000000000 -0500
13650 ++++ linux-3.1.1/arch/powerpc/include/asm/pte-hash32.h 2011-11-16 18:39:07.000000000 -0500
13651 @@ -21,6 +21,7 @@
13652 #define _PAGE_FILE 0x004 /* when !present: nonlinear file mapping */
13653 #define _PAGE_USER 0x004 /* usermode access allowed */
13654 @@ -1758,10 +1777,10 @@ diff -urNp linux-3.0.9/arch/powerpc/include/asm/pte-hash32.h linux-3.0.9/arch/po
13655 #define _PAGE_COHERENT 0x010 /* M: enforce memory coherence (SMP systems) */
13656 #define _PAGE_NO_CACHE 0x020 /* I: cache inhibit */
13657 #define _PAGE_WRITETHRU 0x040 /* W: cache write-through */
13658 -diff -urNp linux-3.0.9/arch/powerpc/include/asm/reg.h linux-3.0.9/arch/powerpc/include/asm/reg.h
13659 ---- linux-3.0.9/arch/powerpc/include/asm/reg.h 2011-11-11 13:12:24.000000000 -0500
13660 -+++ linux-3.0.9/arch/powerpc/include/asm/reg.h 2011-11-15 20:02:59.000000000 -0500
13661 -@@ -209,6 +209,7 @@
13662 +diff -urNp linux-3.1.1/arch/powerpc/include/asm/reg.h linux-3.1.1/arch/powerpc/include/asm/reg.h
13663 +--- linux-3.1.1/arch/powerpc/include/asm/reg.h 2011-11-11 15:19:27.000000000 -0500
13664 ++++ linux-3.1.1/arch/powerpc/include/asm/reg.h 2011-11-16 18:39:07.000000000 -0500
13665 +@@ -212,6 +212,7 @@
13666 #define SPRN_DBCR 0x136 /* e300 Data Breakpoint Control Reg */
13667 #define SPRN_DSISR 0x012 /* Data Storage Interrupt Status Register */
13668 #define DSISR_NOHPTE 0x40000000 /* no translation found */
13669 @@ -1769,10 +1788,10 @@ diff -urNp linux-3.0.9/arch/powerpc/include/asm/reg.h linux-3.0.9/arch/powerpc/i
13670 #define DSISR_PROTFAULT 0x08000000 /* protection fault */
13671 #define DSISR_ISSTORE 0x02000000 /* access was a store */
13672 #define DSISR_DABRMATCH 0x00400000 /* hit data breakpoint */
13673 -diff -urNp linux-3.0.9/arch/powerpc/include/asm/system.h linux-3.0.9/arch/powerpc/include/asm/system.h
13674 ---- linux-3.0.9/arch/powerpc/include/asm/system.h 2011-11-11 13:12:24.000000000 -0500
13675 -+++ linux-3.0.9/arch/powerpc/include/asm/system.h 2011-11-15 20:02:59.000000000 -0500
13676 -@@ -531,7 +531,7 @@ __cmpxchg_local(volatile void *ptr, unsi
13677 +diff -urNp linux-3.1.1/arch/powerpc/include/asm/system.h linux-3.1.1/arch/powerpc/include/asm/system.h
13678 +--- linux-3.1.1/arch/powerpc/include/asm/system.h 2011-11-11 15:19:27.000000000 -0500
13679 ++++ linux-3.1.1/arch/powerpc/include/asm/system.h 2011-11-16 18:39:07.000000000 -0500
13680 +@@ -530,7 +530,7 @@ __cmpxchg_local(volatile void *ptr, unsi
13681 #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n))
13682 #endif
13683
13684 @@ -1781,9 +1800,9 @@ diff -urNp linux-3.0.9/arch/powerpc/include/asm/system.h linux-3.0.9/arch/powerp
13685
13686 /* Used in very early kernel initialization. */
13687 extern unsigned long reloc_offset(void);
13688 -diff -urNp linux-3.0.9/arch/powerpc/include/asm/uaccess.h linux-3.0.9/arch/powerpc/include/asm/uaccess.h
13689 ---- linux-3.0.9/arch/powerpc/include/asm/uaccess.h 2011-11-11 13:12:24.000000000 -0500
13690 -+++ linux-3.0.9/arch/powerpc/include/asm/uaccess.h 2011-11-15 20:02:59.000000000 -0500
13691 +diff -urNp linux-3.1.1/arch/powerpc/include/asm/uaccess.h linux-3.1.1/arch/powerpc/include/asm/uaccess.h
13692 +--- linux-3.1.1/arch/powerpc/include/asm/uaccess.h 2011-11-11 15:19:27.000000000 -0500
13693 ++++ linux-3.1.1/arch/powerpc/include/asm/uaccess.h 2011-11-16 18:39:07.000000000 -0500
13694 @@ -13,6 +13,8 @@
13695 #define VERIFY_READ 0
13696 #define VERIFY_WRITE 1
13697 @@ -1961,10 +1980,10 @@ diff -urNp linux-3.0.9/arch/powerpc/include/asm/uaccess.h linux-3.0.9/arch/power
13698 extern unsigned long __clear_user(void __user *addr, unsigned long size);
13699
13700 static inline unsigned long clear_user(void __user *addr, unsigned long size)
13701 -diff -urNp linux-3.0.9/arch/powerpc/kernel/exceptions-64e.S linux-3.0.9/arch/powerpc/kernel/exceptions-64e.S
13702 ---- linux-3.0.9/arch/powerpc/kernel/exceptions-64e.S 2011-11-11 13:12:24.000000000 -0500
13703 -+++ linux-3.0.9/arch/powerpc/kernel/exceptions-64e.S 2011-11-15 20:02:59.000000000 -0500
13704 -@@ -567,6 +567,7 @@ storage_fault_common:
13705 +diff -urNp linux-3.1.1/arch/powerpc/kernel/exceptions-64e.S linux-3.1.1/arch/powerpc/kernel/exceptions-64e.S
13706 +--- linux-3.1.1/arch/powerpc/kernel/exceptions-64e.S 2011-11-11 15:19:27.000000000 -0500
13707 ++++ linux-3.1.1/arch/powerpc/kernel/exceptions-64e.S 2011-11-16 18:39:07.000000000 -0500
13708 +@@ -587,6 +587,7 @@ storage_fault_common:
13709 std r14,_DAR(r1)
13710 std r15,_DSISR(r1)
13711 addi r3,r1,STACK_FRAME_OVERHEAD
13712 @@ -1972,7 +1991,7 @@ diff -urNp linux-3.0.9/arch/powerpc/kernel/exceptions-64e.S linux-3.0.9/arch/pow
13713 mr r4,r14
13714 mr r5,r15
13715 ld r14,PACA_EXGEN+EX_R14(r13)
13716 -@@ -576,8 +577,7 @@ storage_fault_common:
13717 +@@ -596,8 +597,7 @@ storage_fault_common:
13718 cmpdi r3,0
13719 bne- 1f
13720 b .ret_from_except_lite
13721 @@ -1982,10 +2001,10 @@ diff -urNp linux-3.0.9/arch/powerpc/kernel/exceptions-64e.S linux-3.0.9/arch/pow
13722 addi r3,r1,STACK_FRAME_OVERHEAD
13723 ld r4,_DAR(r1)
13724 bl .bad_page_fault
13725 -diff -urNp linux-3.0.9/arch/powerpc/kernel/exceptions-64s.S linux-3.0.9/arch/powerpc/kernel/exceptions-64s.S
13726 ---- linux-3.0.9/arch/powerpc/kernel/exceptions-64s.S 2011-11-11 13:12:24.000000000 -0500
13727 -+++ linux-3.0.9/arch/powerpc/kernel/exceptions-64s.S 2011-11-15 20:02:59.000000000 -0500
13728 -@@ -956,10 +956,10 @@ handle_page_fault:
13729 +diff -urNp linux-3.1.1/arch/powerpc/kernel/exceptions-64s.S linux-3.1.1/arch/powerpc/kernel/exceptions-64s.S
13730 +--- linux-3.1.1/arch/powerpc/kernel/exceptions-64s.S 2011-11-11 15:19:27.000000000 -0500
13731 ++++ linux-3.1.1/arch/powerpc/kernel/exceptions-64s.S 2011-11-16 18:39:07.000000000 -0500
13732 +@@ -1014,10 +1014,10 @@ handle_page_fault:
13733 11: ld r4,_DAR(r1)
13734 ld r5,_DSISR(r1)
13735 addi r3,r1,STACK_FRAME_OVERHEAD
13736 @@ -1997,9 +2016,9 @@ diff -urNp linux-3.0.9/arch/powerpc/kernel/exceptions-64s.S linux-3.0.9/arch/pow
13737 mr r5,r3
13738 addi r3,r1,STACK_FRAME_OVERHEAD
13739 lwz r4,_DAR(r1)
13740 -diff -urNp linux-3.0.9/arch/powerpc/kernel/module_32.c linux-3.0.9/arch/powerpc/kernel/module_32.c
13741 ---- linux-3.0.9/arch/powerpc/kernel/module_32.c 2011-11-11 13:12:24.000000000 -0500
13742 -+++ linux-3.0.9/arch/powerpc/kernel/module_32.c 2011-11-15 20:02:59.000000000 -0500
13743 +diff -urNp linux-3.1.1/arch/powerpc/kernel/module_32.c linux-3.1.1/arch/powerpc/kernel/module_32.c
13744 +--- linux-3.1.1/arch/powerpc/kernel/module_32.c 2011-11-11 15:19:27.000000000 -0500
13745 ++++ linux-3.1.1/arch/powerpc/kernel/module_32.c 2011-11-16 18:39:07.000000000 -0500
13746 @@ -162,7 +162,7 @@ int module_frob_arch_sections(Elf32_Ehdr
13747 me->arch.core_plt_section = i;
13748 }
13749 @@ -2009,7 +2028,7 @@ diff -urNp linux-3.0.9/arch/powerpc/kernel/module_32.c linux-3.0.9/arch/powerpc/
13750 return -ENOEXEC;
13751 }
13752
13753 -@@ -203,11 +203,16 @@ static uint32_t do_plt_call(void *locati
13754 +@@ -192,11 +192,16 @@ static uint32_t do_plt_call(void *locati
13755
13756 DEBUGP("Doing plt for call to 0x%x at 0x%x\n", val, (unsigned int)location);
13757 /* Init, or core PLT? */
13758 @@ -2029,52 +2048,10 @@ diff -urNp linux-3.0.9/arch/powerpc/kernel/module_32.c linux-3.0.9/arch/powerpc/
13759
13760 /* Find this entry, or if that fails, the next avail. entry */
13761 while (entry->jump[0]) {
13762 -diff -urNp linux-3.0.9/arch/powerpc/kernel/module.c linux-3.0.9/arch/powerpc/kernel/module.c
13763 ---- linux-3.0.9/arch/powerpc/kernel/module.c 2011-11-11 13:12:24.000000000 -0500
13764 -+++ linux-3.0.9/arch/powerpc/kernel/module.c 2011-11-15 20:02:59.000000000 -0500
13765 -@@ -31,11 +31,24 @@
13766 -
13767 - LIST_HEAD(module_bug_list);
13768 -
13769 -+#ifdef CONFIG_PAX_KERNEXEC
13770 - void *module_alloc(unsigned long size)
13771 - {
13772 - if (size == 0)
13773 - return NULL;
13774 -
13775 -+ return vmalloc(size);
13776 -+}
13777 -+
13778 -+void *module_alloc_exec(unsigned long size)
13779 -+#else
13780 -+void *module_alloc(unsigned long size)
13781 -+#endif
13782 -+
13783 -+{
13784 -+ if (size == 0)
13785 -+ return NULL;
13786 -+
13787 - return vmalloc_exec(size);
13788 - }
13789 -
13790 -@@ -45,6 +58,13 @@ void module_free(struct module *mod, voi
13791 - vfree(module_region);
13792 - }
13793 -
13794 -+#ifdef CONFIG_PAX_KERNEXEC
13795 -+void module_free_exec(struct module *mod, void *module_region)
13796 -+{
13797 -+ module_free(mod, module_region);
13798 -+}
13799 -+#endif
13800 -+
13801 - static const Elf_Shdr *find_section(const Elf_Ehdr *hdr,
13802 - const Elf_Shdr *sechdrs,
13803 - const char *name)
13804 -diff -urNp linux-3.0.9/arch/powerpc/kernel/process.c linux-3.0.9/arch/powerpc/kernel/process.c
13805 ---- linux-3.0.9/arch/powerpc/kernel/process.c 2011-11-11 13:12:24.000000000 -0500
13806 -+++ linux-3.0.9/arch/powerpc/kernel/process.c 2011-11-15 20:02:59.000000000 -0500
13807 -@@ -676,8 +676,8 @@ void show_regs(struct pt_regs * regs)
13808 +diff -urNp linux-3.1.1/arch/powerpc/kernel/process.c linux-3.1.1/arch/powerpc/kernel/process.c
13809 +--- linux-3.1.1/arch/powerpc/kernel/process.c 2011-11-11 15:19:27.000000000 -0500
13810 ++++ linux-3.1.1/arch/powerpc/kernel/process.c 2011-11-16 18:40:08.000000000 -0500
13811 +@@ -682,8 +682,8 @@ void show_regs(struct pt_regs * regs)
13812 * Lookup NIP late so we have the best change of getting the
13813 * above info out without failing
13814 */
13815 @@ -2085,7 +2062,7 @@ diff -urNp linux-3.0.9/arch/powerpc/kernel/process.c linux-3.0.9/arch/powerpc/ke
13816 #endif
13817 show_stack(current, (unsigned long *) regs->gpr[1]);
13818 if (!user_mode(regs))
13819 -@@ -1183,10 +1183,10 @@ void show_stack(struct task_struct *tsk,
13820 +@@ -1187,10 +1187,10 @@ void show_stack(struct task_struct *tsk,
13821 newsp = stack[0];
13822 ip = stack[STACK_FRAME_LR_SAVE];
13823 if (!firstframe || ip != lr) {
13824 @@ -2098,7 +2075,7 @@ diff -urNp linux-3.0.9/arch/powerpc/kernel/process.c linux-3.0.9/arch/powerpc/ke
13825 (void *)current->ret_stack[curr_frame].ret);
13826 curr_frame--;
13827 }
13828 -@@ -1206,7 +1206,7 @@ void show_stack(struct task_struct *tsk,
13829 +@@ -1210,7 +1210,7 @@ void show_stack(struct task_struct *tsk,
13830 struct pt_regs *regs = (struct pt_regs *)
13831 (sp + STACK_FRAME_OVERHEAD);
13832 lr = regs->link;
13833 @@ -2107,7 +2084,7 @@ diff -urNp linux-3.0.9/arch/powerpc/kernel/process.c linux-3.0.9/arch/powerpc/ke
13834 regs->trap, (void *)regs->nip, (void *)lr);
13835 firstframe = 1;
13836 }
13837 -@@ -1281,58 +1281,3 @@ void thread_info_cache_init(void)
13838 +@@ -1285,58 +1285,3 @@ void thread_info_cache_init(void)
13839 }
13840
13841 #endif /* THREAD_SHIFT < PAGE_SHIFT */
13842 @@ -2166,9 +2143,9 @@ diff -urNp linux-3.0.9/arch/powerpc/kernel/process.c linux-3.0.9/arch/powerpc/ke
13843 -
13844 - return ret;
13845 -}
13846 -diff -urNp linux-3.0.9/arch/powerpc/kernel/signal_32.c linux-3.0.9/arch/powerpc/kernel/signal_32.c
13847 ---- linux-3.0.9/arch/powerpc/kernel/signal_32.c 2011-11-11 13:12:24.000000000 -0500
13848 -+++ linux-3.0.9/arch/powerpc/kernel/signal_32.c 2011-11-15 20:02:59.000000000 -0500
13849 +diff -urNp linux-3.1.1/arch/powerpc/kernel/signal_32.c linux-3.1.1/arch/powerpc/kernel/signal_32.c
13850 +--- linux-3.1.1/arch/powerpc/kernel/signal_32.c 2011-11-11 15:19:27.000000000 -0500
13851 ++++ linux-3.1.1/arch/powerpc/kernel/signal_32.c 2011-11-16 18:39:07.000000000 -0500
13852 @@ -859,7 +859,7 @@ int handle_rt_signal32(unsigned long sig
13853 /* Save user registers on the stack */
13854 frame = &rt_sf->uc.uc_mcontext;
13855 @@ -2178,9 +2155,9 @@ diff -urNp linux-3.0.9/arch/powerpc/kernel/signal_32.c linux-3.0.9/arch/powerpc/
13856 if (save_user_regs(regs, frame, 0, 1))
13857 goto badframe;
13858 regs->link = current->mm->context.vdso_base + vdso32_rt_sigtramp;
13859 -diff -urNp linux-3.0.9/arch/powerpc/kernel/signal_64.c linux-3.0.9/arch/powerpc/kernel/signal_64.c
13860 ---- linux-3.0.9/arch/powerpc/kernel/signal_64.c 2011-11-11 13:12:24.000000000 -0500
13861 -+++ linux-3.0.9/arch/powerpc/kernel/signal_64.c 2011-11-15 20:02:59.000000000 -0500
13862 +diff -urNp linux-3.1.1/arch/powerpc/kernel/signal_64.c linux-3.1.1/arch/powerpc/kernel/signal_64.c
13863 +--- linux-3.1.1/arch/powerpc/kernel/signal_64.c 2011-11-11 15:19:27.000000000 -0500
13864 ++++ linux-3.1.1/arch/powerpc/kernel/signal_64.c 2011-11-16 18:39:07.000000000 -0500
13865 @@ -430,7 +430,7 @@ int handle_rt_signal64(int signr, struct
13866 current->thread.fpscr.val = 0;
13867
13868 @@ -2190,9 +2167,9 @@ diff -urNp linux-3.0.9/arch/powerpc/kernel/signal_64.c linux-3.0.9/arch/powerpc/
13869 regs->link = current->mm->context.vdso_base + vdso64_rt_sigtramp;
13870 } else {
13871 err |= setup_trampoline(__NR_rt_sigreturn, &frame->tramp[0]);
13872 -diff -urNp linux-3.0.9/arch/powerpc/kernel/traps.c linux-3.0.9/arch/powerpc/kernel/traps.c
13873 ---- linux-3.0.9/arch/powerpc/kernel/traps.c 2011-11-11 13:12:24.000000000 -0500
13874 -+++ linux-3.0.9/arch/powerpc/kernel/traps.c 2011-11-15 20:02:59.000000000 -0500
13875 +diff -urNp linux-3.1.1/arch/powerpc/kernel/traps.c linux-3.1.1/arch/powerpc/kernel/traps.c
13876 +--- linux-3.1.1/arch/powerpc/kernel/traps.c 2011-11-11 15:19:27.000000000 -0500
13877 ++++ linux-3.1.1/arch/powerpc/kernel/traps.c 2011-11-16 18:40:08.000000000 -0500
13878 @@ -98,6 +98,8 @@ static void pmac_backlight_unblank(void)
13879 static inline void pmac_backlight_unblank(void) { }
13880 #endif
13881 @@ -2211,9 +2188,9 @@ diff -urNp linux-3.0.9/arch/powerpc/kernel/traps.c linux-3.0.9/arch/powerpc/kern
13882 oops_exit();
13883 do_exit(err);
13884
13885 -diff -urNp linux-3.0.9/arch/powerpc/kernel/vdso.c linux-3.0.9/arch/powerpc/kernel/vdso.c
13886 ---- linux-3.0.9/arch/powerpc/kernel/vdso.c 2011-11-11 13:12:24.000000000 -0500
13887 -+++ linux-3.0.9/arch/powerpc/kernel/vdso.c 2011-11-15 20:02:59.000000000 -0500
13888 +diff -urNp linux-3.1.1/arch/powerpc/kernel/vdso.c linux-3.1.1/arch/powerpc/kernel/vdso.c
13889 +--- linux-3.1.1/arch/powerpc/kernel/vdso.c 2011-11-11 15:19:27.000000000 -0500
13890 ++++ linux-3.1.1/arch/powerpc/kernel/vdso.c 2011-11-16 18:39:07.000000000 -0500
13891 @@ -36,6 +36,7 @@
13892 #include <asm/firmware.h>
13893 #include <asm/vdso.h>
13894 @@ -2240,9 +2217,9 @@ diff -urNp linux-3.0.9/arch/powerpc/kernel/vdso.c linux-3.0.9/arch/powerpc/kerne
13895 if (IS_ERR_VALUE(vdso_base)) {
13896 rc = vdso_base;
13897 goto fail_mmapsem;
13898 -diff -urNp linux-3.0.9/arch/powerpc/lib/usercopy_64.c linux-3.0.9/arch/powerpc/lib/usercopy_64.c
13899 ---- linux-3.0.9/arch/powerpc/lib/usercopy_64.c 2011-11-11 13:12:24.000000000 -0500
13900 -+++ linux-3.0.9/arch/powerpc/lib/usercopy_64.c 2011-11-15 20:02:59.000000000 -0500
13901 +diff -urNp linux-3.1.1/arch/powerpc/lib/usercopy_64.c linux-3.1.1/arch/powerpc/lib/usercopy_64.c
13902 +--- linux-3.1.1/arch/powerpc/lib/usercopy_64.c 2011-11-11 15:19:27.000000000 -0500
13903 ++++ linux-3.1.1/arch/powerpc/lib/usercopy_64.c 2011-11-16 18:39:07.000000000 -0500
13904 @@ -9,22 +9,6 @@
13905 #include <linux/module.h>
13906 #include <asm/uaccess.h>
13907 @@ -2274,9 +2251,9 @@ diff -urNp linux-3.0.9/arch/powerpc/lib/usercopy_64.c linux-3.0.9/arch/powerpc/l
13908 -EXPORT_SYMBOL(copy_to_user);
13909 EXPORT_SYMBOL(copy_in_user);
13910
13911 -diff -urNp linux-3.0.9/arch/powerpc/mm/fault.c linux-3.0.9/arch/powerpc/mm/fault.c
13912 ---- linux-3.0.9/arch/powerpc/mm/fault.c 2011-11-11 13:12:24.000000000 -0500
13913 -+++ linux-3.0.9/arch/powerpc/mm/fault.c 2011-11-15 20:02:59.000000000 -0500
13914 +diff -urNp linux-3.1.1/arch/powerpc/mm/fault.c linux-3.1.1/arch/powerpc/mm/fault.c
13915 +--- linux-3.1.1/arch/powerpc/mm/fault.c 2011-11-11 15:19:27.000000000 -0500
13916 ++++ linux-3.1.1/arch/powerpc/mm/fault.c 2011-11-16 18:39:07.000000000 -0500
13917 @@ -32,6 +32,10 @@
13918 #include <linux/perf_event.h>
13919 #include <linux/magic.h>
13920 @@ -2311,7 +2288,7 @@ diff -urNp linux-3.0.9/arch/powerpc/mm/fault.c linux-3.0.9/arch/powerpc/mm/fault
13921 + return 1;
13922 +}
13923 +
13924 -+void pax_report_insns(void *pc, void *sp)
13925 ++void pax_report_insns(struct pt_regs *regs, void *pc, void *sp)
13926 +{
13927 + unsigned long i;
13928 +
13929 @@ -2381,9 +2358,9 @@ diff -urNp linux-3.0.9/arch/powerpc/mm/fault.c linux-3.0.9/arch/powerpc/mm/fault
13930 _exception(SIGSEGV, regs, code, address);
13931 return 0;
13932 }
13933 -diff -urNp linux-3.0.9/arch/powerpc/mm/mmap_64.c linux-3.0.9/arch/powerpc/mm/mmap_64.c
13934 ---- linux-3.0.9/arch/powerpc/mm/mmap_64.c 2011-11-11 13:12:24.000000000 -0500
13935 -+++ linux-3.0.9/arch/powerpc/mm/mmap_64.c 2011-11-15 20:02:59.000000000 -0500
13936 +diff -urNp linux-3.1.1/arch/powerpc/mm/mmap_64.c linux-3.1.1/arch/powerpc/mm/mmap_64.c
13937 +--- linux-3.1.1/arch/powerpc/mm/mmap_64.c 2011-11-11 15:19:27.000000000 -0500
13938 ++++ linux-3.1.1/arch/powerpc/mm/mmap_64.c 2011-11-16 18:39:07.000000000 -0500
13939 @@ -99,10 +99,22 @@ void arch_pick_mmap_layout(struct mm_str
13940 */
13941 if (mmap_is_legacy()) {
13942 @@ -2407,9 +2384,9 @@ diff -urNp linux-3.0.9/arch/powerpc/mm/mmap_64.c linux-3.0.9/arch/powerpc/mm/mma
13943 mm->get_unmapped_area = arch_get_unmapped_area_topdown;
13944 mm->unmap_area = arch_unmap_area_topdown;
13945 }
13946 -diff -urNp linux-3.0.9/arch/powerpc/mm/slice.c linux-3.0.9/arch/powerpc/mm/slice.c
13947 ---- linux-3.0.9/arch/powerpc/mm/slice.c 2011-11-11 13:12:24.000000000 -0500
13948 -+++ linux-3.0.9/arch/powerpc/mm/slice.c 2011-11-15 20:02:59.000000000 -0500
13949 +diff -urNp linux-3.1.1/arch/powerpc/mm/slice.c linux-3.1.1/arch/powerpc/mm/slice.c
13950 +--- linux-3.1.1/arch/powerpc/mm/slice.c 2011-11-11 15:19:27.000000000 -0500
13951 ++++ linux-3.1.1/arch/powerpc/mm/slice.c 2011-11-16 18:39:07.000000000 -0500
13952 @@ -98,7 +98,7 @@ static int slice_area_is_free(struct mm_
13953 if ((mm->task_size - len) < addr)
13954 return 0;
13955 @@ -2476,9 +2453,9 @@ diff -urNp linux-3.0.9/arch/powerpc/mm/slice.c linux-3.0.9/arch/powerpc/mm/slice
13956 /* If hint, make sure it matches our alignment restrictions */
13957 if (!fixed && addr) {
13958 addr = _ALIGN_UP(addr, 1ul << pshift);
13959 -diff -urNp linux-3.0.9/arch/s390/include/asm/elf.h linux-3.0.9/arch/s390/include/asm/elf.h
13960 ---- linux-3.0.9/arch/s390/include/asm/elf.h 2011-11-11 13:12:24.000000000 -0500
13961 -+++ linux-3.0.9/arch/s390/include/asm/elf.h 2011-11-15 20:02:59.000000000 -0500
13962 +diff -urNp linux-3.1.1/arch/s390/include/asm/elf.h linux-3.1.1/arch/s390/include/asm/elf.h
13963 +--- linux-3.1.1/arch/s390/include/asm/elf.h 2011-11-11 15:19:27.000000000 -0500
13964 ++++ linux-3.1.1/arch/s390/include/asm/elf.h 2011-11-16 18:39:07.000000000 -0500
13965 @@ -162,8 +162,14 @@ extern unsigned int vdso_enabled;
13966 the loader. We need to make sure that it is out of the way of the program
13967 that it will "exec", and that there is sufficient room for the brk. */
13968 @@ -2496,7 +2473,7 @@ diff -urNp linux-3.0.9/arch/s390/include/asm/elf.h linux-3.0.9/arch/s390/include
13969
13970 /* This yields a mask that user programs can use to figure out what
13971 instruction set this CPU supports. */
13972 -@@ -210,7 +216,4 @@ struct linux_binprm;
13973 +@@ -211,7 +217,4 @@ struct linux_binprm;
13974 #define ARCH_HAS_SETUP_ADDITIONAL_PAGES 1
13975 int arch_setup_additional_pages(struct linux_binprm *, int);
13976
13977 @@ -2504,10 +2481,10 @@ diff -urNp linux-3.0.9/arch/s390/include/asm/elf.h linux-3.0.9/arch/s390/include
13978 -#define arch_randomize_brk arch_randomize_brk
13979 -
13980 #endif
13981 -diff -urNp linux-3.0.9/arch/s390/include/asm/system.h linux-3.0.9/arch/s390/include/asm/system.h
13982 ---- linux-3.0.9/arch/s390/include/asm/system.h 2011-11-11 13:12:24.000000000 -0500
13983 -+++ linux-3.0.9/arch/s390/include/asm/system.h 2011-11-15 20:02:59.000000000 -0500
13984 -@@ -255,7 +255,7 @@ extern void (*_machine_restart)(char *co
13985 +diff -urNp linux-3.1.1/arch/s390/include/asm/system.h linux-3.1.1/arch/s390/include/asm/system.h
13986 +--- linux-3.1.1/arch/s390/include/asm/system.h 2011-11-11 15:19:27.000000000 -0500
13987 ++++ linux-3.1.1/arch/s390/include/asm/system.h 2011-11-16 18:39:07.000000000 -0500
13988 +@@ -256,7 +256,7 @@ extern void (*_machine_restart)(char *co
13989 extern void (*_machine_halt)(void);
13990 extern void (*_machine_power_off)(void);
13991
13992 @@ -2516,9 +2493,9 @@ diff -urNp linux-3.0.9/arch/s390/include/asm/system.h linux-3.0.9/arch/s390/incl
13993
13994 static inline int tprot(unsigned long addr)
13995 {
13996 -diff -urNp linux-3.0.9/arch/s390/include/asm/uaccess.h linux-3.0.9/arch/s390/include/asm/uaccess.h
13997 ---- linux-3.0.9/arch/s390/include/asm/uaccess.h 2011-11-11 13:12:24.000000000 -0500
13998 -+++ linux-3.0.9/arch/s390/include/asm/uaccess.h 2011-11-15 20:02:59.000000000 -0500
13999 +diff -urNp linux-3.1.1/arch/s390/include/asm/uaccess.h linux-3.1.1/arch/s390/include/asm/uaccess.h
14000 +--- linux-3.1.1/arch/s390/include/asm/uaccess.h 2011-11-11 15:19:27.000000000 -0500
14001 ++++ linux-3.1.1/arch/s390/include/asm/uaccess.h 2011-11-16 18:39:07.000000000 -0500
14002 @@ -235,6 +235,10 @@ static inline unsigned long __must_check
14003 copy_to_user(void __user *to, const void *from, unsigned long n)
14004 {
14005 @@ -2551,10 +2528,10 @@ diff -urNp linux-3.0.9/arch/s390/include/asm/uaccess.h linux-3.0.9/arch/s390/inc
14006 if (unlikely(sz != -1 && sz < n)) {
14007 copy_from_user_overflow();
14008 return n;
14009 -diff -urNp linux-3.0.9/arch/s390/kernel/module.c linux-3.0.9/arch/s390/kernel/module.c
14010 ---- linux-3.0.9/arch/s390/kernel/module.c 2011-11-11 13:12:24.000000000 -0500
14011 -+++ linux-3.0.9/arch/s390/kernel/module.c 2011-11-15 20:02:59.000000000 -0500
14012 -@@ -168,11 +168,11 @@ module_frob_arch_sections(Elf_Ehdr *hdr,
14013 +diff -urNp linux-3.1.1/arch/s390/kernel/module.c linux-3.1.1/arch/s390/kernel/module.c
14014 +--- linux-3.1.1/arch/s390/kernel/module.c 2011-11-11 15:19:27.000000000 -0500
14015 ++++ linux-3.1.1/arch/s390/kernel/module.c 2011-11-16 18:39:07.000000000 -0500
14016 +@@ -161,11 +161,11 @@ module_frob_arch_sections(Elf_Ehdr *hdr,
14017
14018 /* Increase core size by size of got & plt and set start
14019 offsets for got and plt. */
14020 @@ -2571,7 +2548,7 @@ diff -urNp linux-3.0.9/arch/s390/kernel/module.c linux-3.0.9/arch/s390/kernel/mo
14021 return 0;
14022 }
14023
14024 -@@ -258,7 +258,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
14025 +@@ -242,7 +242,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
14026 if (info->got_initialized == 0) {
14027 Elf_Addr *gotent;
14028
14029 @@ -2580,7 +2557,7 @@ diff -urNp linux-3.0.9/arch/s390/kernel/module.c linux-3.0.9/arch/s390/kernel/mo
14030 info->got_offset;
14031 *gotent = val;
14032 info->got_initialized = 1;
14033 -@@ -282,7 +282,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
14034 +@@ -266,7 +266,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
14035 else if (r_type == R_390_GOTENT ||
14036 r_type == R_390_GOTPLTENT)
14037 *(unsigned int *) loc =
14038 @@ -2589,7 +2566,7 @@ diff -urNp linux-3.0.9/arch/s390/kernel/module.c linux-3.0.9/arch/s390/kernel/mo
14039 else if (r_type == R_390_GOT64 ||
14040 r_type == R_390_GOTPLT64)
14041 *(unsigned long *) loc = val;
14042 -@@ -296,7 +296,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
14043 +@@ -280,7 +280,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
14044 case R_390_PLTOFF64: /* 16 bit offset from GOT to PLT. */
14045 if (info->plt_initialized == 0) {
14046 unsigned int *ip;
14047 @@ -2598,7 +2575,7 @@ diff -urNp linux-3.0.9/arch/s390/kernel/module.c linux-3.0.9/arch/s390/kernel/mo
14048 info->plt_offset;
14049 #ifndef CONFIG_64BIT
14050 ip[0] = 0x0d105810; /* basr 1,0; l 1,6(1); br 1 */
14051 -@@ -321,7 +321,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
14052 +@@ -305,7 +305,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
14053 val - loc + 0xffffUL < 0x1ffffeUL) ||
14054 (r_type == R_390_PLT32DBL &&
14055 val - loc + 0xffffffffULL < 0x1fffffffeULL)))
14056 @@ -2607,7 +2584,7 @@ diff -urNp linux-3.0.9/arch/s390/kernel/module.c linux-3.0.9/arch/s390/kernel/mo
14057 me->arch.plt_offset +
14058 info->plt_offset;
14059 val += rela->r_addend - loc;
14060 -@@ -343,7 +343,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
14061 +@@ -327,7 +327,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
14062 case R_390_GOTOFF32: /* 32 bit offset to GOT. */
14063 case R_390_GOTOFF64: /* 64 bit offset to GOT. */
14064 val = val + rela->r_addend -
14065 @@ -2616,7 +2593,7 @@ diff -urNp linux-3.0.9/arch/s390/kernel/module.c linux-3.0.9/arch/s390/kernel/mo
14066 if (r_type == R_390_GOTOFF16)
14067 *(unsigned short *) loc = val;
14068 else if (r_type == R_390_GOTOFF32)
14069 -@@ -353,7 +353,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
14070 +@@ -337,7 +337,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
14071 break;
14072 case R_390_GOTPC: /* 32 bit PC relative offset to GOT. */
14073 case R_390_GOTPCDBL: /* 32 bit PC rel. off. to GOT shifted by 1. */
14074 @@ -2625,9 +2602,9 @@ diff -urNp linux-3.0.9/arch/s390/kernel/module.c linux-3.0.9/arch/s390/kernel/mo
14075 rela->r_addend - loc;
14076 if (r_type == R_390_GOTPC)
14077 *(unsigned int *) loc = val;
14078 -diff -urNp linux-3.0.9/arch/s390/kernel/process.c linux-3.0.9/arch/s390/kernel/process.c
14079 ---- linux-3.0.9/arch/s390/kernel/process.c 2011-11-11 13:12:24.000000000 -0500
14080 -+++ linux-3.0.9/arch/s390/kernel/process.c 2011-11-15 20:02:59.000000000 -0500
14081 +diff -urNp linux-3.1.1/arch/s390/kernel/process.c linux-3.1.1/arch/s390/kernel/process.c
14082 +--- linux-3.1.1/arch/s390/kernel/process.c 2011-11-11 15:19:27.000000000 -0500
14083 ++++ linux-3.1.1/arch/s390/kernel/process.c 2011-11-16 18:39:07.000000000 -0500
14084 @@ -319,39 +319,3 @@ unsigned long get_wchan(struct task_stru
14085 }
14086 return 0;
14087 @@ -2668,9 +2645,9 @@ diff -urNp linux-3.0.9/arch/s390/kernel/process.c linux-3.0.9/arch/s390/kernel/p
14088 - return base;
14089 - return ret;
14090 -}
14091 -diff -urNp linux-3.0.9/arch/s390/kernel/setup.c linux-3.0.9/arch/s390/kernel/setup.c
14092 ---- linux-3.0.9/arch/s390/kernel/setup.c 2011-11-11 13:12:24.000000000 -0500
14093 -+++ linux-3.0.9/arch/s390/kernel/setup.c 2011-11-15 20:02:59.000000000 -0500
14094 +diff -urNp linux-3.1.1/arch/s390/kernel/setup.c linux-3.1.1/arch/s390/kernel/setup.c
14095 +--- linux-3.1.1/arch/s390/kernel/setup.c 2011-11-11 15:19:27.000000000 -0500
14096 ++++ linux-3.1.1/arch/s390/kernel/setup.c 2011-11-16 18:39:07.000000000 -0500
14097 @@ -271,7 +271,7 @@ static int __init early_parse_mem(char *
14098 }
14099 early_param("mem", early_parse_mem);
14100 @@ -2680,9 +2657,9 @@ diff -urNp linux-3.0.9/arch/s390/kernel/setup.c linux-3.0.9/arch/s390/kernel/set
14101 EXPORT_SYMBOL_GPL(user_mode);
14102
14103 static int set_amode_and_uaccess(unsigned long user_amode,
14104 -diff -urNp linux-3.0.9/arch/s390/mm/mmap.c linux-3.0.9/arch/s390/mm/mmap.c
14105 ---- linux-3.0.9/arch/s390/mm/mmap.c 2011-11-11 13:12:24.000000000 -0500
14106 -+++ linux-3.0.9/arch/s390/mm/mmap.c 2011-11-15 20:02:59.000000000 -0500
14107 +diff -urNp linux-3.1.1/arch/s390/mm/mmap.c linux-3.1.1/arch/s390/mm/mmap.c
14108 +--- linux-3.1.1/arch/s390/mm/mmap.c 2011-11-11 15:19:27.000000000 -0500
14109 ++++ linux-3.1.1/arch/s390/mm/mmap.c 2011-11-16 18:39:07.000000000 -0500
14110 @@ -91,10 +91,22 @@ void arch_pick_mmap_layout(struct mm_str
14111 */
14112 if (mmap_is_legacy()) {
14113 @@ -2729,9 +2706,9 @@ diff -urNp linux-3.0.9/arch/s390/mm/mmap.c linux-3.0.9/arch/s390/mm/mmap.c
14114 mm->get_unmapped_area = s390_get_unmapped_area_topdown;
14115 mm->unmap_area = arch_unmap_area_topdown;
14116 }
14117 -diff -urNp linux-3.0.9/arch/score/include/asm/system.h linux-3.0.9/arch/score/include/asm/system.h
14118 ---- linux-3.0.9/arch/score/include/asm/system.h 2011-11-11 13:12:24.000000000 -0500
14119 -+++ linux-3.0.9/arch/score/include/asm/system.h 2011-11-15 20:02:59.000000000 -0500
14120 +diff -urNp linux-3.1.1/arch/score/include/asm/system.h linux-3.1.1/arch/score/include/asm/system.h
14121 +--- linux-3.1.1/arch/score/include/asm/system.h 2011-11-11 15:19:27.000000000 -0500
14122 ++++ linux-3.1.1/arch/score/include/asm/system.h 2011-11-16 18:39:07.000000000 -0500
14123 @@ -17,7 +17,7 @@ do { \
14124 #define finish_arch_switch(prev) do {} while (0)
14125
14126 @@ -2741,9 +2718,9 @@ diff -urNp linux-3.0.9/arch/score/include/asm/system.h linux-3.0.9/arch/score/in
14127
14128 #define mb() barrier()
14129 #define rmb() barrier()
14130 -diff -urNp linux-3.0.9/arch/score/kernel/process.c linux-3.0.9/arch/score/kernel/process.c
14131 ---- linux-3.0.9/arch/score/kernel/process.c 2011-11-11 13:12:24.000000000 -0500
14132 -+++ linux-3.0.9/arch/score/kernel/process.c 2011-11-15 20:02:59.000000000 -0500
14133 +diff -urNp linux-3.1.1/arch/score/kernel/process.c linux-3.1.1/arch/score/kernel/process.c
14134 +--- linux-3.1.1/arch/score/kernel/process.c 2011-11-11 15:19:27.000000000 -0500
14135 ++++ linux-3.1.1/arch/score/kernel/process.c 2011-11-16 18:39:07.000000000 -0500
14136 @@ -161,8 +161,3 @@ unsigned long get_wchan(struct task_stru
14137
14138 return task_pt_regs(task)->cp0_epc;
14139 @@ -2753,9 +2730,9 @@ diff -urNp linux-3.0.9/arch/score/kernel/process.c linux-3.0.9/arch/score/kernel
14140 -{
14141 - return sp;
14142 -}
14143 -diff -urNp linux-3.0.9/arch/sh/mm/mmap.c linux-3.0.9/arch/sh/mm/mmap.c
14144 ---- linux-3.0.9/arch/sh/mm/mmap.c 2011-11-11 13:12:24.000000000 -0500
14145 -+++ linux-3.0.9/arch/sh/mm/mmap.c 2011-11-15 20:02:59.000000000 -0500
14146 +diff -urNp linux-3.1.1/arch/sh/mm/mmap.c linux-3.1.1/arch/sh/mm/mmap.c
14147 +--- linux-3.1.1/arch/sh/mm/mmap.c 2011-11-11 15:19:27.000000000 -0500
14148 ++++ linux-3.1.1/arch/sh/mm/mmap.c 2011-11-16 18:39:07.000000000 -0500
14149 @@ -74,8 +74,7 @@ unsigned long arch_get_unmapped_area(str
14150 addr = PAGE_ALIGN(addr);
14151
14152 @@ -2830,9 +2807,9 @@ diff -urNp linux-3.0.9/arch/sh/mm/mmap.c linux-3.0.9/arch/sh/mm/mmap.c
14153
14154 bottomup:
14155 /*
14156 -diff -urNp linux-3.0.9/arch/sparc/include/asm/atomic_64.h linux-3.0.9/arch/sparc/include/asm/atomic_64.h
14157 ---- linux-3.0.9/arch/sparc/include/asm/atomic_64.h 2011-11-11 13:12:24.000000000 -0500
14158 -+++ linux-3.0.9/arch/sparc/include/asm/atomic_64.h 2011-11-15 20:02:59.000000000 -0500
14159 +diff -urNp linux-3.1.1/arch/sparc/include/asm/atomic_64.h linux-3.1.1/arch/sparc/include/asm/atomic_64.h
14160 +--- linux-3.1.1/arch/sparc/include/asm/atomic_64.h 2011-11-11 15:19:27.000000000 -0500
14161 ++++ linux-3.1.1/arch/sparc/include/asm/atomic_64.h 2011-11-16 18:39:07.000000000 -0500
14162 @@ -14,18 +14,40 @@
14163 #define ATOMIC64_INIT(i) { (i) }
14164
14165 @@ -2915,7 +2892,7 @@ diff -urNp linux-3.0.9/arch/sparc/include/asm/atomic_64.h linux-3.0.9/arch/sparc
14166 #define atomic64_inc_and_test(v) (atomic64_inc_return(v) == 0)
14167
14168 #define atomic_sub_and_test(i, v) (atomic_sub_ret(i, v) == 0)
14169 -@@ -59,30 +101,65 @@ extern long atomic64_sub_ret(long, atomi
14170 +@@ -59,25 +101,60 @@ extern long atomic64_sub_ret(long, atomi
14171 #define atomic64_dec_and_test(v) (atomic64_sub_ret(1, v) == 0)
14172
14173 #define atomic_inc(v) atomic_add(1, v)
14174 @@ -2954,7 +2931,7 @@ diff -urNp linux-3.0.9/arch/sparc/include/asm/atomic_64.h linux-3.0.9/arch/sparc
14175 + return xchg(&v->counter, new);
14176 +}
14177
14178 - static inline int atomic_add_unless(atomic_t *v, int a, int u)
14179 + static inline int __atomic_add_unless(atomic_t *v, int a, int u)
14180 {
14181 - int c, old;
14182 + int c, old, new;
14183 @@ -2979,13 +2956,7 @@ diff -urNp linux-3.0.9/arch/sparc/include/asm/atomic_64.h linux-3.0.9/arch/sparc
14184 if (likely(old == c))
14185 break;
14186 c = old;
14187 - }
14188 -- return c != (u);
14189 -+ return c != u;
14190 - }
14191 -
14192 - #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
14193 -@@ -90,20 +167,35 @@ static inline int atomic_add_unless(atom
14194 +@@ -89,20 +166,35 @@ static inline int __atomic_add_unless(at
14195 #define atomic64_cmpxchg(v, o, n) \
14196 ((__typeof__((v)->counter))cmpxchg(&((v)->counter), (o), (n)))
14197 #define atomic64_xchg(v, new) (xchg(&((v)->counter), new))
14198 @@ -3025,9 +2996,9 @@ diff -urNp linux-3.0.9/arch/sparc/include/asm/atomic_64.h linux-3.0.9/arch/sparc
14199 }
14200
14201 #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
14202 -diff -urNp linux-3.0.9/arch/sparc/include/asm/cache.h linux-3.0.9/arch/sparc/include/asm/cache.h
14203 ---- linux-3.0.9/arch/sparc/include/asm/cache.h 2011-11-11 13:12:24.000000000 -0500
14204 -+++ linux-3.0.9/arch/sparc/include/asm/cache.h 2011-11-15 20:02:59.000000000 -0500
14205 +diff -urNp linux-3.1.1/arch/sparc/include/asm/cache.h linux-3.1.1/arch/sparc/include/asm/cache.h
14206 +--- linux-3.1.1/arch/sparc/include/asm/cache.h 2011-11-11 15:19:27.000000000 -0500
14207 ++++ linux-3.1.1/arch/sparc/include/asm/cache.h 2011-11-16 18:39:07.000000000 -0500
14208 @@ -10,7 +10,7 @@
14209 #define ARCH_SLAB_MINALIGN __alignof__(unsigned long long)
14210
14211 @@ -3037,9 +3008,9 @@ diff -urNp linux-3.0.9/arch/sparc/include/asm/cache.h linux-3.0.9/arch/sparc/inc
14212
14213 #ifdef CONFIG_SPARC32
14214 #define SMP_CACHE_BYTES_SHIFT 5
14215 -diff -urNp linux-3.0.9/arch/sparc/include/asm/elf_32.h linux-3.0.9/arch/sparc/include/asm/elf_32.h
14216 ---- linux-3.0.9/arch/sparc/include/asm/elf_32.h 2011-11-11 13:12:24.000000000 -0500
14217 -+++ linux-3.0.9/arch/sparc/include/asm/elf_32.h 2011-11-15 20:02:59.000000000 -0500
14218 +diff -urNp linux-3.1.1/arch/sparc/include/asm/elf_32.h linux-3.1.1/arch/sparc/include/asm/elf_32.h
14219 +--- linux-3.1.1/arch/sparc/include/asm/elf_32.h 2011-11-11 15:19:27.000000000 -0500
14220 ++++ linux-3.1.1/arch/sparc/include/asm/elf_32.h 2011-11-16 18:39:07.000000000 -0500
14221 @@ -114,6 +114,13 @@ typedef struct {
14222
14223 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE)
14224 @@ -3054,9 +3025,9 @@ diff -urNp linux-3.0.9/arch/sparc/include/asm/elf_32.h linux-3.0.9/arch/sparc/in
14225 /* This yields a mask that user programs can use to figure out what
14226 instruction set this cpu supports. This can NOT be done in userspace
14227 on Sparc. */
14228 -diff -urNp linux-3.0.9/arch/sparc/include/asm/elf_64.h linux-3.0.9/arch/sparc/include/asm/elf_64.h
14229 ---- linux-3.0.9/arch/sparc/include/asm/elf_64.h 2011-11-11 13:12:24.000000000 -0500
14230 -+++ linux-3.0.9/arch/sparc/include/asm/elf_64.h 2011-11-15 20:02:59.000000000 -0500
14231 +diff -urNp linux-3.1.1/arch/sparc/include/asm/elf_64.h linux-3.1.1/arch/sparc/include/asm/elf_64.h
14232 +--- linux-3.1.1/arch/sparc/include/asm/elf_64.h 2011-11-11 15:19:27.000000000 -0500
14233 ++++ linux-3.1.1/arch/sparc/include/asm/elf_64.h 2011-11-16 18:39:07.000000000 -0500
14234 @@ -180,6 +180,13 @@ typedef struct {
14235 #define ELF_ET_DYN_BASE 0x0000010000000000UL
14236 #define COMPAT_ELF_ET_DYN_BASE 0x0000000070000000UL
14237 @@ -3071,9 +3042,9 @@ diff -urNp linux-3.0.9/arch/sparc/include/asm/elf_64.h linux-3.0.9/arch/sparc/in
14238 extern unsigned long sparc64_elf_hwcap;
14239 #define ELF_HWCAP sparc64_elf_hwcap
14240
14241 -diff -urNp linux-3.0.9/arch/sparc/include/asm/pgtable_32.h linux-3.0.9/arch/sparc/include/asm/pgtable_32.h
14242 ---- linux-3.0.9/arch/sparc/include/asm/pgtable_32.h 2011-11-11 13:12:24.000000000 -0500
14243 -+++ linux-3.0.9/arch/sparc/include/asm/pgtable_32.h 2011-11-15 20:02:59.000000000 -0500
14244 +diff -urNp linux-3.1.1/arch/sparc/include/asm/pgtable_32.h linux-3.1.1/arch/sparc/include/asm/pgtable_32.h
14245 +--- linux-3.1.1/arch/sparc/include/asm/pgtable_32.h 2011-11-11 15:19:27.000000000 -0500
14246 ++++ linux-3.1.1/arch/sparc/include/asm/pgtable_32.h 2011-11-16 18:39:07.000000000 -0500
14247 @@ -45,6 +45,13 @@ BTFIXUPDEF_SIMM13(user_ptrs_per_pgd)
14248 BTFIXUPDEF_INT(page_none)
14249 BTFIXUPDEF_INT(page_copy)
14250 @@ -3105,9 +3076,9 @@ diff -urNp linux-3.0.9/arch/sparc/include/asm/pgtable_32.h linux-3.0.9/arch/spar
14251 extern unsigned long page_kernel;
14252
14253 #ifdef MODULE
14254 -diff -urNp linux-3.0.9/arch/sparc/include/asm/pgtsrmmu.h linux-3.0.9/arch/sparc/include/asm/pgtsrmmu.h
14255 ---- linux-3.0.9/arch/sparc/include/asm/pgtsrmmu.h 2011-11-11 13:12:24.000000000 -0500
14256 -+++ linux-3.0.9/arch/sparc/include/asm/pgtsrmmu.h 2011-11-15 20:02:59.000000000 -0500
14257 +diff -urNp linux-3.1.1/arch/sparc/include/asm/pgtsrmmu.h linux-3.1.1/arch/sparc/include/asm/pgtsrmmu.h
14258 +--- linux-3.1.1/arch/sparc/include/asm/pgtsrmmu.h 2011-11-11 15:19:27.000000000 -0500
14259 ++++ linux-3.1.1/arch/sparc/include/asm/pgtsrmmu.h 2011-11-16 18:39:07.000000000 -0500
14260 @@ -115,6 +115,13 @@
14261 SRMMU_EXEC | SRMMU_REF)
14262 #define SRMMU_PAGE_RDONLY __pgprot(SRMMU_VALID | SRMMU_CACHE | \
14263 @@ -3122,9 +3093,9 @@ diff -urNp linux-3.0.9/arch/sparc/include/asm/pgtsrmmu.h linux-3.0.9/arch/sparc/
14264 #define SRMMU_PAGE_KERNEL __pgprot(SRMMU_VALID | SRMMU_CACHE | SRMMU_PRIV | \
14265 SRMMU_DIRTY | SRMMU_REF)
14266
14267 -diff -urNp linux-3.0.9/arch/sparc/include/asm/spinlock_64.h linux-3.0.9/arch/sparc/include/asm/spinlock_64.h
14268 ---- linux-3.0.9/arch/sparc/include/asm/spinlock_64.h 2011-11-11 13:12:24.000000000 -0500
14269 -+++ linux-3.0.9/arch/sparc/include/asm/spinlock_64.h 2011-11-15 20:02:59.000000000 -0500
14270 +diff -urNp linux-3.1.1/arch/sparc/include/asm/spinlock_64.h linux-3.1.1/arch/sparc/include/asm/spinlock_64.h
14271 +--- linux-3.1.1/arch/sparc/include/asm/spinlock_64.h 2011-11-11 15:19:27.000000000 -0500
14272 ++++ linux-3.1.1/arch/sparc/include/asm/spinlock_64.h 2011-11-16 18:39:07.000000000 -0500
14273 @@ -92,14 +92,19 @@ static inline void arch_spin_lock_flags(
14274
14275 /* Multi-reader locks, these are much saner than the 32-bit Sparc ones... */
14276 @@ -3222,9 +3193,9 @@ diff -urNp linux-3.0.9/arch/sparc/include/asm/spinlock_64.h linux-3.0.9/arch/spa
14277 {
14278 unsigned long mask, tmp1, tmp2, result;
14279
14280 -diff -urNp linux-3.0.9/arch/sparc/include/asm/thread_info_32.h linux-3.0.9/arch/sparc/include/asm/thread_info_32.h
14281 ---- linux-3.0.9/arch/sparc/include/asm/thread_info_32.h 2011-11-11 13:12:24.000000000 -0500
14282 -+++ linux-3.0.9/arch/sparc/include/asm/thread_info_32.h 2011-11-15 20:02:59.000000000 -0500
14283 +diff -urNp linux-3.1.1/arch/sparc/include/asm/thread_info_32.h linux-3.1.1/arch/sparc/include/asm/thread_info_32.h
14284 +--- linux-3.1.1/arch/sparc/include/asm/thread_info_32.h 2011-11-11 15:19:27.000000000 -0500
14285 ++++ linux-3.1.1/arch/sparc/include/asm/thread_info_32.h 2011-11-16 18:39:07.000000000 -0500
14286 @@ -50,6 +50,8 @@ struct thread_info {
14287 unsigned long w_saved;
14288
14289 @@ -3234,9 +3205,9 @@ diff -urNp linux-3.0.9/arch/sparc/include/asm/thread_info_32.h linux-3.0.9/arch/
14290 };
14291
14292 /*
14293 -diff -urNp linux-3.0.9/arch/sparc/include/asm/thread_info_64.h linux-3.0.9/arch/sparc/include/asm/thread_info_64.h
14294 ---- linux-3.0.9/arch/sparc/include/asm/thread_info_64.h 2011-11-11 13:12:24.000000000 -0500
14295 -+++ linux-3.0.9/arch/sparc/include/asm/thread_info_64.h 2011-11-15 20:02:59.000000000 -0500
14296 +diff -urNp linux-3.1.1/arch/sparc/include/asm/thread_info_64.h linux-3.1.1/arch/sparc/include/asm/thread_info_64.h
14297 +--- linux-3.1.1/arch/sparc/include/asm/thread_info_64.h 2011-11-11 15:19:27.000000000 -0500
14298 ++++ linux-3.1.1/arch/sparc/include/asm/thread_info_64.h 2011-11-16 18:39:07.000000000 -0500
14299 @@ -63,6 +63,8 @@ struct thread_info {
14300 struct pt_regs *kern_una_regs;
14301 unsigned int kern_una_insn;
14302 @@ -3246,9 +3217,9 @@ diff -urNp linux-3.0.9/arch/sparc/include/asm/thread_info_64.h linux-3.0.9/arch/
14303 unsigned long fpregs[0] __attribute__ ((aligned(64)));
14304 };
14305
14306 -diff -urNp linux-3.0.9/arch/sparc/include/asm/uaccess_32.h linux-3.0.9/arch/sparc/include/asm/uaccess_32.h
14307 ---- linux-3.0.9/arch/sparc/include/asm/uaccess_32.h 2011-11-11 13:12:24.000000000 -0500
14308 -+++ linux-3.0.9/arch/sparc/include/asm/uaccess_32.h 2011-11-15 20:02:59.000000000 -0500
14309 +diff -urNp linux-3.1.1/arch/sparc/include/asm/uaccess_32.h linux-3.1.1/arch/sparc/include/asm/uaccess_32.h
14310 +--- linux-3.1.1/arch/sparc/include/asm/uaccess_32.h 2011-11-11 15:19:27.000000000 -0500
14311 ++++ linux-3.1.1/arch/sparc/include/asm/uaccess_32.h 2011-11-16 18:39:07.000000000 -0500
14312 @@ -249,27 +249,46 @@ extern unsigned long __copy_user(void __
14313
14314 static inline unsigned long copy_to_user(void __user *to, const void *from, unsigned long n)
14315 @@ -3300,9 +3271,9 @@ diff -urNp linux-3.0.9/arch/sparc/include/asm/uaccess_32.h linux-3.0.9/arch/spar
14316 return __copy_user((__force void __user *) to, from, n);
14317 }
14318
14319 -diff -urNp linux-3.0.9/arch/sparc/include/asm/uaccess_64.h linux-3.0.9/arch/sparc/include/asm/uaccess_64.h
14320 ---- linux-3.0.9/arch/sparc/include/asm/uaccess_64.h 2011-11-11 13:12:24.000000000 -0500
14321 -+++ linux-3.0.9/arch/sparc/include/asm/uaccess_64.h 2011-11-15 20:02:59.000000000 -0500
14322 +diff -urNp linux-3.1.1/arch/sparc/include/asm/uaccess_64.h linux-3.1.1/arch/sparc/include/asm/uaccess_64.h
14323 +--- linux-3.1.1/arch/sparc/include/asm/uaccess_64.h 2011-11-11 15:19:27.000000000 -0500
14324 ++++ linux-3.1.1/arch/sparc/include/asm/uaccess_64.h 2011-11-16 18:39:07.000000000 -0500
14325 @@ -10,6 +10,7 @@
14326 #include <linux/compiler.h>
14327 #include <linux/string.h>
14328 @@ -3345,9 +3316,9 @@ diff -urNp linux-3.0.9/arch/sparc/include/asm/uaccess_64.h linux-3.0.9/arch/spar
14329 if (unlikely(ret))
14330 ret = copy_to_user_fixup(to, from, size);
14331 return ret;
14332 -diff -urNp linux-3.0.9/arch/sparc/include/asm/uaccess.h linux-3.0.9/arch/sparc/include/asm/uaccess.h
14333 ---- linux-3.0.9/arch/sparc/include/asm/uaccess.h 2011-11-11 13:12:24.000000000 -0500
14334 -+++ linux-3.0.9/arch/sparc/include/asm/uaccess.h 2011-11-15 20:02:59.000000000 -0500
14335 +diff -urNp linux-3.1.1/arch/sparc/include/asm/uaccess.h linux-3.1.1/arch/sparc/include/asm/uaccess.h
14336 +--- linux-3.1.1/arch/sparc/include/asm/uaccess.h 2011-11-11 15:19:27.000000000 -0500
14337 ++++ linux-3.1.1/arch/sparc/include/asm/uaccess.h 2011-11-16 18:39:07.000000000 -0500
14338 @@ -1,5 +1,13 @@
14339 #ifndef ___ASM_SPARC_UACCESS_H
14340 #define ___ASM_SPARC_UACCESS_H
14341 @@ -3362,9 +3333,9 @@ diff -urNp linux-3.0.9/arch/sparc/include/asm/uaccess.h linux-3.0.9/arch/sparc/i
14342 #if defined(__sparc__) && defined(__arch64__)
14343 #include <asm/uaccess_64.h>
14344 #else
14345 -diff -urNp linux-3.0.9/arch/sparc/kernel/Makefile linux-3.0.9/arch/sparc/kernel/Makefile
14346 ---- linux-3.0.9/arch/sparc/kernel/Makefile 2011-11-11 13:12:24.000000000 -0500
14347 -+++ linux-3.0.9/arch/sparc/kernel/Makefile 2011-11-15 20:02:59.000000000 -0500
14348 +diff -urNp linux-3.1.1/arch/sparc/kernel/Makefile linux-3.1.1/arch/sparc/kernel/Makefile
14349 +--- linux-3.1.1/arch/sparc/kernel/Makefile 2011-11-11 15:19:27.000000000 -0500
14350 ++++ linux-3.1.1/arch/sparc/kernel/Makefile 2011-11-16 18:39:07.000000000 -0500
14351 @@ -3,7 +3,7 @@
14352 #
14353
14354 @@ -3374,9 +3345,9 @@ diff -urNp linux-3.0.9/arch/sparc/kernel/Makefile linux-3.0.9/arch/sparc/kernel/
14355
14356 extra-y := head_$(BITS).o
14357 extra-y += init_task.o
14358 -diff -urNp linux-3.0.9/arch/sparc/kernel/process_32.c linux-3.0.9/arch/sparc/kernel/process_32.c
14359 ---- linux-3.0.9/arch/sparc/kernel/process_32.c 2011-11-11 13:12:24.000000000 -0500
14360 -+++ linux-3.0.9/arch/sparc/kernel/process_32.c 2011-11-15 20:02:59.000000000 -0500
14361 +diff -urNp linux-3.1.1/arch/sparc/kernel/process_32.c linux-3.1.1/arch/sparc/kernel/process_32.c
14362 +--- linux-3.1.1/arch/sparc/kernel/process_32.c 2011-11-11 15:19:27.000000000 -0500
14363 ++++ linux-3.1.1/arch/sparc/kernel/process_32.c 2011-11-16 18:40:08.000000000 -0500
14364 @@ -204,7 +204,7 @@ void __show_backtrace(unsigned long fp)
14365 rw->ins[4], rw->ins[5],
14366 rw->ins[6],
14367 @@ -3412,9 +3383,9 @@ diff -urNp linux-3.0.9/arch/sparc/kernel/process_32.c linux-3.0.9/arch/sparc/ker
14368 fp = rw->ins[6];
14369 } while (++count < 16);
14370 printk("\n");
14371 -diff -urNp linux-3.0.9/arch/sparc/kernel/process_64.c linux-3.0.9/arch/sparc/kernel/process_64.c
14372 ---- linux-3.0.9/arch/sparc/kernel/process_64.c 2011-11-11 13:12:24.000000000 -0500
14373 -+++ linux-3.0.9/arch/sparc/kernel/process_64.c 2011-11-15 20:02:59.000000000 -0500
14374 +diff -urNp linux-3.1.1/arch/sparc/kernel/process_64.c linux-3.1.1/arch/sparc/kernel/process_64.c
14375 +--- linux-3.1.1/arch/sparc/kernel/process_64.c 2011-11-11 15:19:27.000000000 -0500
14376 ++++ linux-3.1.1/arch/sparc/kernel/process_64.c 2011-11-16 18:40:08.000000000 -0500
14377 @@ -180,14 +180,14 @@ static void show_regwindow(struct pt_reg
14378 printk("i4: %016lx i5: %016lx i6: %016lx i7: %016lx\n",
14379 rwk->ins[4], rwk->ins[5], rwk->ins[6], rwk->ins[7]);
14380 @@ -3450,9 +3421,9 @@ diff -urNp linux-3.0.9/arch/sparc/kernel/process_64.c linux-3.0.9/arch/sparc/ker
14381 (void *) gp->tpc,
14382 (void *) gp->o7,
14383 (void *) gp->i7,
14384 -diff -urNp linux-3.0.9/arch/sparc/kernel/sys_sparc_32.c linux-3.0.9/arch/sparc/kernel/sys_sparc_32.c
14385 ---- linux-3.0.9/arch/sparc/kernel/sys_sparc_32.c 2011-11-11 13:12:24.000000000 -0500
14386 -+++ linux-3.0.9/arch/sparc/kernel/sys_sparc_32.c 2011-11-15 20:02:59.000000000 -0500
14387 +diff -urNp linux-3.1.1/arch/sparc/kernel/sys_sparc_32.c linux-3.1.1/arch/sparc/kernel/sys_sparc_32.c
14388 +--- linux-3.1.1/arch/sparc/kernel/sys_sparc_32.c 2011-11-11 15:19:27.000000000 -0500
14389 ++++ linux-3.1.1/arch/sparc/kernel/sys_sparc_32.c 2011-11-16 18:39:07.000000000 -0500
14390 @@ -56,7 +56,7 @@ unsigned long arch_get_unmapped_area(str
14391 if (ARCH_SUN4C && len > 0x20000000)
14392 return -ENOMEM;
14393 @@ -3471,9 +3442,9 @@ diff -urNp linux-3.0.9/arch/sparc/kernel/sys_sparc_32.c linux-3.0.9/arch/sparc/k
14394 return addr;
14395 addr = vmm->vm_end;
14396 if (flags & MAP_SHARED)
14397 -diff -urNp linux-3.0.9/arch/sparc/kernel/sys_sparc_64.c linux-3.0.9/arch/sparc/kernel/sys_sparc_64.c
14398 ---- linux-3.0.9/arch/sparc/kernel/sys_sparc_64.c 2011-11-11 13:12:24.000000000 -0500
14399 -+++ linux-3.0.9/arch/sparc/kernel/sys_sparc_64.c 2011-11-15 20:02:59.000000000 -0500
14400 +diff -urNp linux-3.1.1/arch/sparc/kernel/sys_sparc_64.c linux-3.1.1/arch/sparc/kernel/sys_sparc_64.c
14401 +--- linux-3.1.1/arch/sparc/kernel/sys_sparc_64.c 2011-11-11 15:19:27.000000000 -0500
14402 ++++ linux-3.1.1/arch/sparc/kernel/sys_sparc_64.c 2011-11-16 18:39:07.000000000 -0500
14403 @@ -124,7 +124,7 @@ unsigned long arch_get_unmapped_area(str
14404 /* We do not accept a shared mapping if it would violate
14405 * cache aliasing constraints.
14406 @@ -3621,9 +3592,9 @@ diff -urNp linux-3.0.9/arch/sparc/kernel/sys_sparc_64.c linux-3.0.9/arch/sparc/k
14407 mm->get_unmapped_area = arch_get_unmapped_area_topdown;
14408 mm->unmap_area = arch_unmap_area_topdown;
14409 }
14410 -diff -urNp linux-3.0.9/arch/sparc/kernel/traps_32.c linux-3.0.9/arch/sparc/kernel/traps_32.c
14411 ---- linux-3.0.9/arch/sparc/kernel/traps_32.c 2011-11-11 13:12:24.000000000 -0500
14412 -+++ linux-3.0.9/arch/sparc/kernel/traps_32.c 2011-11-15 20:02:59.000000000 -0500
14413 +diff -urNp linux-3.1.1/arch/sparc/kernel/traps_32.c linux-3.1.1/arch/sparc/kernel/traps_32.c
14414 +--- linux-3.1.1/arch/sparc/kernel/traps_32.c 2011-11-11 15:19:27.000000000 -0500
14415 ++++ linux-3.1.1/arch/sparc/kernel/traps_32.c 2011-11-16 18:40:08.000000000 -0500
14416 @@ -44,6 +44,8 @@ static void instruction_dump(unsigned lo
14417 #define __SAVE __asm__ __volatile__("save %sp, -0x40, %sp\n\t")
14418 #define __RESTORE __asm__ __volatile__("restore %g0, %g0, %g0\n\t")
14419 @@ -3653,9 +3624,9 @@ diff -urNp linux-3.0.9/arch/sparc/kernel/traps_32.c linux-3.0.9/arch/sparc/kerne
14420 do_exit(SIGSEGV);
14421 }
14422
14423 -diff -urNp linux-3.0.9/arch/sparc/kernel/traps_64.c linux-3.0.9/arch/sparc/kernel/traps_64.c
14424 ---- linux-3.0.9/arch/sparc/kernel/traps_64.c 2011-11-11 13:12:24.000000000 -0500
14425 -+++ linux-3.0.9/arch/sparc/kernel/traps_64.c 2011-11-15 20:02:59.000000000 -0500
14426 +diff -urNp linux-3.1.1/arch/sparc/kernel/traps_64.c linux-3.1.1/arch/sparc/kernel/traps_64.c
14427 +--- linux-3.1.1/arch/sparc/kernel/traps_64.c 2011-11-11 15:19:27.000000000 -0500
14428 ++++ linux-3.1.1/arch/sparc/kernel/traps_64.c 2011-11-16 18:40:08.000000000 -0500
14429 @@ -75,7 +75,7 @@ static void dump_tl1_traplog(struct tl1_
14430 i + 1,
14431 p->trapstack[i].tstate, p->trapstack[i].tpc,
14432 @@ -3793,9 +3764,9 @@ diff -urNp linux-3.0.9/arch/sparc/kernel/traps_64.c linux-3.0.9/arch/sparc/kerne
14433 do_exit(SIGSEGV);
14434 }
14435 EXPORT_SYMBOL(die_if_kernel);
14436 -diff -urNp linux-3.0.9/arch/sparc/kernel/unaligned_64.c linux-3.0.9/arch/sparc/kernel/unaligned_64.c
14437 ---- linux-3.0.9/arch/sparc/kernel/unaligned_64.c 2011-11-11 13:12:24.000000000 -0500
14438 -+++ linux-3.0.9/arch/sparc/kernel/unaligned_64.c 2011-11-15 20:02:59.000000000 -0500
14439 +diff -urNp linux-3.1.1/arch/sparc/kernel/unaligned_64.c linux-3.1.1/arch/sparc/kernel/unaligned_64.c
14440 +--- linux-3.1.1/arch/sparc/kernel/unaligned_64.c 2011-11-11 15:19:27.000000000 -0500
14441 ++++ linux-3.1.1/arch/sparc/kernel/unaligned_64.c 2011-11-16 18:40:08.000000000 -0500
14442 @@ -279,7 +279,7 @@ static void log_unaligned(struct pt_regs
14443 static DEFINE_RATELIMIT_STATE(ratelimit, 5 * HZ, 5);
14444
14445 @@ -3805,9 +3776,9 @@ diff -urNp linux-3.0.9/arch/sparc/kernel/unaligned_64.c linux-3.0.9/arch/sparc/k
14446 regs->tpc, (void *) regs->tpc);
14447 }
14448 }
14449 -diff -urNp linux-3.0.9/arch/sparc/lib/atomic_64.S linux-3.0.9/arch/sparc/lib/atomic_64.S
14450 ---- linux-3.0.9/arch/sparc/lib/atomic_64.S 2011-11-11 13:12:24.000000000 -0500
14451 -+++ linux-3.0.9/arch/sparc/lib/atomic_64.S 2011-11-15 20:02:59.000000000 -0500
14452 +diff -urNp linux-3.1.1/arch/sparc/lib/atomic_64.S linux-3.1.1/arch/sparc/lib/atomic_64.S
14453 +--- linux-3.1.1/arch/sparc/lib/atomic_64.S 2011-11-11 15:19:27.000000000 -0500
14454 ++++ linux-3.1.1/arch/sparc/lib/atomic_64.S 2011-11-16 18:39:07.000000000 -0500
14455 @@ -18,7 +18,12 @@
14456 atomic_add: /* %o0 = increment, %o1 = atomic_ptr */
14457 BACKOFF_SETUP(%o2)
14458 @@ -4042,9 +4013,9 @@ diff -urNp linux-3.0.9/arch/sparc/lib/atomic_64.S linux-3.0.9/arch/sparc/lib/ato
14459 casx [%o1], %g1, %g7
14460 cmp %g1, %g7
14461 bne,pn %xcc, BACKOFF_LABEL(2f, 1b)
14462 -diff -urNp linux-3.0.9/arch/sparc/lib/ksyms.c linux-3.0.9/arch/sparc/lib/ksyms.c
14463 ---- linux-3.0.9/arch/sparc/lib/ksyms.c 2011-11-11 13:12:24.000000000 -0500
14464 -+++ linux-3.0.9/arch/sparc/lib/ksyms.c 2011-11-15 20:02:59.000000000 -0500
14465 +diff -urNp linux-3.1.1/arch/sparc/lib/ksyms.c linux-3.1.1/arch/sparc/lib/ksyms.c
14466 +--- linux-3.1.1/arch/sparc/lib/ksyms.c 2011-11-11 15:19:27.000000000 -0500
14467 ++++ linux-3.1.1/arch/sparc/lib/ksyms.c 2011-11-16 18:39:07.000000000 -0500
14468 @@ -142,12 +142,18 @@ EXPORT_SYMBOL(__downgrade_write);
14469
14470 /* Atomic counter implementation. */
14471 @@ -4064,9 +4035,9 @@ diff -urNp linux-3.0.9/arch/sparc/lib/ksyms.c linux-3.0.9/arch/sparc/lib/ksyms.c
14472 EXPORT_SYMBOL(atomic64_sub_ret);
14473
14474 /* Atomic bit operations. */
14475 -diff -urNp linux-3.0.9/arch/sparc/lib/Makefile linux-3.0.9/arch/sparc/lib/Makefile
14476 ---- linux-3.0.9/arch/sparc/lib/Makefile 2011-11-11 13:12:24.000000000 -0500
14477 -+++ linux-3.0.9/arch/sparc/lib/Makefile 2011-11-15 20:02:59.000000000 -0500
14478 +diff -urNp linux-3.1.1/arch/sparc/lib/Makefile linux-3.1.1/arch/sparc/lib/Makefile
14479 +--- linux-3.1.1/arch/sparc/lib/Makefile 2011-11-11 15:19:27.000000000 -0500
14480 ++++ linux-3.1.1/arch/sparc/lib/Makefile 2011-11-16 18:39:07.000000000 -0500
14481 @@ -2,7 +2,7 @@
14482 #
14483
14484 @@ -4076,9 +4047,9 @@ diff -urNp linux-3.0.9/arch/sparc/lib/Makefile linux-3.0.9/arch/sparc/lib/Makefi
14485
14486 lib-$(CONFIG_SPARC32) += mul.o rem.o sdiv.o udiv.o umul.o urem.o ashrdi3.o
14487 lib-$(CONFIG_SPARC32) += memcpy.o memset.o
14488 -diff -urNp linux-3.0.9/arch/sparc/Makefile linux-3.0.9/arch/sparc/Makefile
14489 ---- linux-3.0.9/arch/sparc/Makefile 2011-11-11 13:12:24.000000000 -0500
14490 -+++ linux-3.0.9/arch/sparc/Makefile 2011-11-15 20:02:59.000000000 -0500
14491 +diff -urNp linux-3.1.1/arch/sparc/Makefile linux-3.1.1/arch/sparc/Makefile
14492 +--- linux-3.1.1/arch/sparc/Makefile 2011-11-11 15:19:27.000000000 -0500
14493 ++++ linux-3.1.1/arch/sparc/Makefile 2011-11-16 18:40:08.000000000 -0500
14494 @@ -75,7 +75,7 @@ drivers-$(CONFIG_OPROFILE) += arch/sparc
14495 # Export what is needed by arch/sparc/boot/Makefile
14496 export VMLINUX_INIT VMLINUX_MAIN
14497 @@ -4088,9 +4059,9 @@ diff -urNp linux-3.0.9/arch/sparc/Makefile linux-3.0.9/arch/sparc/Makefile
14498 VMLINUX_MAIN += $(patsubst %/, %/lib.a, $(libs-y)) $(libs-y)
14499 VMLINUX_MAIN += $(drivers-y) $(net-y)
14500
14501 -diff -urNp linux-3.0.9/arch/sparc/mm/fault_32.c linux-3.0.9/arch/sparc/mm/fault_32.c
14502 ---- linux-3.0.9/arch/sparc/mm/fault_32.c 2011-11-11 13:12:24.000000000 -0500
14503 -+++ linux-3.0.9/arch/sparc/mm/fault_32.c 2011-11-15 20:02:59.000000000 -0500
14504 +diff -urNp linux-3.1.1/arch/sparc/mm/fault_32.c linux-3.1.1/arch/sparc/mm/fault_32.c
14505 +--- linux-3.1.1/arch/sparc/mm/fault_32.c 2011-11-11 15:19:27.000000000 -0500
14506 ++++ linux-3.1.1/arch/sparc/mm/fault_32.c 2011-11-16 18:39:07.000000000 -0500
14507 @@ -22,6 +22,9 @@
14508 #include <linux/interrupt.h>
14509 #include <linux/module.h>
14510 @@ -4351,7 +4322,7 @@ diff -urNp linux-3.0.9/arch/sparc/mm/fault_32.c linux-3.0.9/arch/sparc/mm/fault_
14511 + return 1;
14512 +}
14513 +
14514 -+void pax_report_insns(void *pc, void *sp)
14515 ++void pax_report_insns(struct pt_regs *regs, void *pc, void *sp)
14516 +{
14517 + unsigned long i;
14518 +
14519 @@ -4395,9 +4366,9 @@ diff -urNp linux-3.0.9/arch/sparc/mm/fault_32.c linux-3.0.9/arch/sparc/mm/fault_
14520 /* Allow reads even for write-only mappings */
14521 if(!(vma->vm_flags & (VM_READ | VM_EXEC)))
14522 goto bad_area;
14523 -diff -urNp linux-3.0.9/arch/sparc/mm/fault_64.c linux-3.0.9/arch/sparc/mm/fault_64.c
14524 ---- linux-3.0.9/arch/sparc/mm/fault_64.c 2011-11-11 13:12:24.000000000 -0500
14525 -+++ linux-3.0.9/arch/sparc/mm/fault_64.c 2011-11-15 20:02:59.000000000 -0500
14526 +diff -urNp linux-3.1.1/arch/sparc/mm/fault_64.c linux-3.1.1/arch/sparc/mm/fault_64.c
14527 +--- linux-3.1.1/arch/sparc/mm/fault_64.c 2011-11-11 15:19:27.000000000 -0500
14528 ++++ linux-3.1.1/arch/sparc/mm/fault_64.c 2011-11-16 18:40:08.000000000 -0500
14529 @@ -21,6 +21,9 @@
14530 #include <linux/kprobes.h>
14531 #include <linux/kdebug.h>
14532 @@ -4856,7 +4827,7 @@ diff -urNp linux-3.0.9/arch/sparc/mm/fault_64.c linux-3.0.9/arch/sparc/mm/fault_
14533 + return 1;
14534 +}
14535 +
14536 -+void pax_report_insns(void *pc, void *sp)
14537 ++void pax_report_insns(struct pt_regs *regs, void *pc, void *sp)
14538 +{
14539 + unsigned long i;
14540 +
14541 @@ -4905,9 +4876,9 @@ diff -urNp linux-3.0.9/arch/sparc/mm/fault_64.c linux-3.0.9/arch/sparc/mm/fault_
14542 /* Pure DTLB misses do not tell us whether the fault causing
14543 * load/store/atomic was a write or not, it only says that there
14544 * was no match. So in such a case we (carefully) read the
14545 -diff -urNp linux-3.0.9/arch/sparc/mm/hugetlbpage.c linux-3.0.9/arch/sparc/mm/hugetlbpage.c
14546 ---- linux-3.0.9/arch/sparc/mm/hugetlbpage.c 2011-11-11 13:12:24.000000000 -0500
14547 -+++ linux-3.0.9/arch/sparc/mm/hugetlbpage.c 2011-11-15 20:02:59.000000000 -0500
14548 +diff -urNp linux-3.1.1/arch/sparc/mm/hugetlbpage.c linux-3.1.1/arch/sparc/mm/hugetlbpage.c
14549 +--- linux-3.1.1/arch/sparc/mm/hugetlbpage.c 2011-11-11 15:19:27.000000000 -0500
14550 ++++ linux-3.1.1/arch/sparc/mm/hugetlbpage.c 2011-11-16 18:39:07.000000000 -0500
14551 @@ -68,7 +68,7 @@ full_search:
14552 }
14553 return -ENOMEM;
14554 @@ -4967,9 +4938,9 @@ diff -urNp linux-3.0.9/arch/sparc/mm/hugetlbpage.c linux-3.0.9/arch/sparc/mm/hug
14555 return addr;
14556 }
14557 if (mm->get_unmapped_area == arch_get_unmapped_area)
14558 -diff -urNp linux-3.0.9/arch/sparc/mm/init_32.c linux-3.0.9/arch/sparc/mm/init_32.c
14559 ---- linux-3.0.9/arch/sparc/mm/init_32.c 2011-11-11 13:12:24.000000000 -0500
14560 -+++ linux-3.0.9/arch/sparc/mm/init_32.c 2011-11-15 20:02:59.000000000 -0500
14561 +diff -urNp linux-3.1.1/arch/sparc/mm/init_32.c linux-3.1.1/arch/sparc/mm/init_32.c
14562 +--- linux-3.1.1/arch/sparc/mm/init_32.c 2011-11-11 15:19:27.000000000 -0500
14563 ++++ linux-3.1.1/arch/sparc/mm/init_32.c 2011-11-16 18:39:07.000000000 -0500
14564 @@ -316,6 +316,9 @@ extern void device_scan(void);
14565 pgprot_t PAGE_SHARED __read_mostly;
14566 EXPORT_SYMBOL(PAGE_SHARED);
14567 @@ -5004,9 +4975,9 @@ diff -urNp linux-3.0.9/arch/sparc/mm/init_32.c linux-3.0.9/arch/sparc/mm/init_32
14568 protection_map[12] = PAGE_READONLY;
14569 protection_map[13] = PAGE_READONLY;
14570 protection_map[14] = PAGE_SHARED;
14571 -diff -urNp linux-3.0.9/arch/sparc/mm/Makefile linux-3.0.9/arch/sparc/mm/Makefile
14572 ---- linux-3.0.9/arch/sparc/mm/Makefile 2011-11-11 13:12:24.000000000 -0500
14573 -+++ linux-3.0.9/arch/sparc/mm/Makefile 2011-11-15 20:02:59.000000000 -0500
14574 +diff -urNp linux-3.1.1/arch/sparc/mm/Makefile linux-3.1.1/arch/sparc/mm/Makefile
14575 +--- linux-3.1.1/arch/sparc/mm/Makefile 2011-11-11 15:19:27.000000000 -0500
14576 ++++ linux-3.1.1/arch/sparc/mm/Makefile 2011-11-16 18:39:07.000000000 -0500
14577 @@ -2,7 +2,7 @@
14578 #
14579
14580 @@ -5014,11 +4985,11 @@ diff -urNp linux-3.0.9/arch/sparc/mm/Makefile linux-3.0.9/arch/sparc/mm/Makefile
14581 -ccflags-y := -Werror
14582 +#ccflags-y := -Werror
14583
14584 - obj-$(CONFIG_SPARC64) += ultra.o tlb.o tsb.o
14585 + obj-$(CONFIG_SPARC64) += ultra.o tlb.o tsb.o gup.o
14586 obj-y += fault_$(BITS).o
14587 -diff -urNp linux-3.0.9/arch/sparc/mm/srmmu.c linux-3.0.9/arch/sparc/mm/srmmu.c
14588 ---- linux-3.0.9/arch/sparc/mm/srmmu.c 2011-11-11 13:12:24.000000000 -0500
14589 -+++ linux-3.0.9/arch/sparc/mm/srmmu.c 2011-11-15 20:02:59.000000000 -0500
14590 +diff -urNp linux-3.1.1/arch/sparc/mm/srmmu.c linux-3.1.1/arch/sparc/mm/srmmu.c
14591 +--- linux-3.1.1/arch/sparc/mm/srmmu.c 2011-11-11 15:19:27.000000000 -0500
14592 ++++ linux-3.1.1/arch/sparc/mm/srmmu.c 2011-11-16 18:39:07.000000000 -0500
14593 @@ -2200,6 +2200,13 @@ void __init ld_mmu_srmmu(void)
14594 PAGE_SHARED = pgprot_val(SRMMU_PAGE_SHARED);
14595 BTFIXUPSET_INT(page_copy, pgprot_val(SRMMU_PAGE_COPY));
14596 @@ -5033,9 +5004,9 @@ diff -urNp linux-3.0.9/arch/sparc/mm/srmmu.c linux-3.0.9/arch/sparc/mm/srmmu.c
14597 BTFIXUPSET_INT(page_kernel, pgprot_val(SRMMU_PAGE_KERNEL));
14598 page_kernel = pgprot_val(SRMMU_PAGE_KERNEL);
14599
14600 -diff -urNp linux-3.0.9/arch/um/include/asm/kmap_types.h linux-3.0.9/arch/um/include/asm/kmap_types.h
14601 ---- linux-3.0.9/arch/um/include/asm/kmap_types.h 2011-11-11 13:12:24.000000000 -0500
14602 -+++ linux-3.0.9/arch/um/include/asm/kmap_types.h 2011-11-15 20:02:59.000000000 -0500
14603 +diff -urNp linux-3.1.1/arch/um/include/asm/kmap_types.h linux-3.1.1/arch/um/include/asm/kmap_types.h
14604 +--- linux-3.1.1/arch/um/include/asm/kmap_types.h 2011-11-11 15:19:27.000000000 -0500
14605 ++++ linux-3.1.1/arch/um/include/asm/kmap_types.h 2011-11-16 18:39:07.000000000 -0500
14606 @@ -23,6 +23,7 @@ enum km_type {
14607 KM_IRQ1,
14608 KM_SOFTIRQ0,
14609 @@ -5044,9 +5015,9 @@ diff -urNp linux-3.0.9/arch/um/include/asm/kmap_types.h linux-3.0.9/arch/um/incl
14610 KM_TYPE_NR
14611 };
14612
14613 -diff -urNp linux-3.0.9/arch/um/include/asm/page.h linux-3.0.9/arch/um/include/asm/page.h
14614 ---- linux-3.0.9/arch/um/include/asm/page.h 2011-11-11 13:12:24.000000000 -0500
14615 -+++ linux-3.0.9/arch/um/include/asm/page.h 2011-11-15 20:02:59.000000000 -0500
14616 +diff -urNp linux-3.1.1/arch/um/include/asm/page.h linux-3.1.1/arch/um/include/asm/page.h
14617 +--- linux-3.1.1/arch/um/include/asm/page.h 2011-11-11 15:19:27.000000000 -0500
14618 ++++ linux-3.1.1/arch/um/include/asm/page.h 2011-11-16 18:39:07.000000000 -0500
14619 @@ -14,6 +14,9 @@
14620 #define PAGE_SIZE (_AC(1, UL) << PAGE_SHIFT)
14621 #define PAGE_MASK (~(PAGE_SIZE-1))
14622 @@ -5057,9 +5028,9 @@ diff -urNp linux-3.0.9/arch/um/include/asm/page.h linux-3.0.9/arch/um/include/as
14623 #ifndef __ASSEMBLY__
14624
14625 struct page;
14626 -diff -urNp linux-3.0.9/arch/um/kernel/process.c linux-3.0.9/arch/um/kernel/process.c
14627 ---- linux-3.0.9/arch/um/kernel/process.c 2011-11-11 13:12:24.000000000 -0500
14628 -+++ linux-3.0.9/arch/um/kernel/process.c 2011-11-15 20:02:59.000000000 -0500
14629 +diff -urNp linux-3.1.1/arch/um/kernel/process.c linux-3.1.1/arch/um/kernel/process.c
14630 +--- linux-3.1.1/arch/um/kernel/process.c 2011-11-11 15:19:27.000000000 -0500
14631 ++++ linux-3.1.1/arch/um/kernel/process.c 2011-11-16 18:39:07.000000000 -0500
14632 @@ -404,22 +404,6 @@ int singlestepping(void * t)
14633 return 2;
14634 }
14635 @@ -5083,9 +5054,9 @@ diff -urNp linux-3.0.9/arch/um/kernel/process.c linux-3.0.9/arch/um/kernel/proce
14636 unsigned long get_wchan(struct task_struct *p)
14637 {
14638 unsigned long stack_page, sp, ip;
14639 -diff -urNp linux-3.0.9/arch/um/Makefile linux-3.0.9/arch/um/Makefile
14640 ---- linux-3.0.9/arch/um/Makefile 2011-11-11 13:12:24.000000000 -0500
14641 -+++ linux-3.0.9/arch/um/Makefile 2011-11-15 20:02:59.000000000 -0500
14642 +diff -urNp linux-3.1.1/arch/um/Makefile linux-3.1.1/arch/um/Makefile
14643 +--- linux-3.1.1/arch/um/Makefile 2011-11-11 15:19:27.000000000 -0500
14644 ++++ linux-3.1.1/arch/um/Makefile 2011-11-16 18:39:07.000000000 -0500
14645 @@ -49,6 +49,10 @@ USER_CFLAGS = $(patsubst $(KERNEL_DEFINE
14646 $(patsubst -I%,,$(KBUILD_CFLAGS)))) $(ARCH_INCLUDE) $(MODE_INCLUDE) \
14647 $(filter -I%,$(CFLAGS)) -D_FILE_OFFSET_BITS=64
14648 @@ -5097,9 +5068,9 @@ diff -urNp linux-3.0.9/arch/um/Makefile linux-3.0.9/arch/um/Makefile
14649 include $(srctree)/$(ARCH_DIR)/Makefile-$(SUBARCH)
14650
14651 #This will adjust *FLAGS accordingly to the platform.
14652 -diff -urNp linux-3.0.9/arch/um/sys-i386/shared/sysdep/system.h linux-3.0.9/arch/um/sys-i386/shared/sysdep/system.h
14653 ---- linux-3.0.9/arch/um/sys-i386/shared/sysdep/system.h 2011-11-11 13:12:24.000000000 -0500
14654 -+++ linux-3.0.9/arch/um/sys-i386/shared/sysdep/system.h 2011-11-15 20:02:59.000000000 -0500
14655 +diff -urNp linux-3.1.1/arch/um/sys-i386/shared/sysdep/system.h linux-3.1.1/arch/um/sys-i386/shared/sysdep/system.h
14656 +--- linux-3.1.1/arch/um/sys-i386/shared/sysdep/system.h 2011-11-11 15:19:27.000000000 -0500
14657 ++++ linux-3.1.1/arch/um/sys-i386/shared/sysdep/system.h 2011-11-16 18:39:07.000000000 -0500
14658 @@ -17,7 +17,7 @@
14659 # define AT_VECTOR_SIZE_ARCH 1
14660 #endif
14661 @@ -5109,9 +5080,9 @@ diff -urNp linux-3.0.9/arch/um/sys-i386/shared/sysdep/system.h linux-3.0.9/arch/
14662
14663 void default_idle(void);
14664
14665 -diff -urNp linux-3.0.9/arch/um/sys-i386/syscalls.c linux-3.0.9/arch/um/sys-i386/syscalls.c
14666 ---- linux-3.0.9/arch/um/sys-i386/syscalls.c 2011-11-11 13:12:24.000000000 -0500
14667 -+++ linux-3.0.9/arch/um/sys-i386/syscalls.c 2011-11-15 20:02:59.000000000 -0500
14668 +diff -urNp linux-3.1.1/arch/um/sys-i386/syscalls.c linux-3.1.1/arch/um/sys-i386/syscalls.c
14669 +--- linux-3.1.1/arch/um/sys-i386/syscalls.c 2011-11-11 15:19:27.000000000 -0500
14670 ++++ linux-3.1.1/arch/um/sys-i386/syscalls.c 2011-11-16 18:39:07.000000000 -0500
14671 @@ -11,6 +11,21 @@
14672 #include "asm/uaccess.h"
14673 #include "asm/unistd.h"
14674 @@ -5134,9 +5105,9 @@ diff -urNp linux-3.0.9/arch/um/sys-i386/syscalls.c linux-3.0.9/arch/um/sys-i386/
14675 /*
14676 * The prototype on i386 is:
14677 *
14678 -diff -urNp linux-3.0.9/arch/um/sys-x86_64/shared/sysdep/system.h linux-3.0.9/arch/um/sys-x86_64/shared/sysdep/system.h
14679 ---- linux-3.0.9/arch/um/sys-x86_64/shared/sysdep/system.h 2011-11-11 13:12:24.000000000 -0500
14680 -+++ linux-3.0.9/arch/um/sys-x86_64/shared/sysdep/system.h 2011-11-15 20:02:59.000000000 -0500
14681 +diff -urNp linux-3.1.1/arch/um/sys-x86_64/shared/sysdep/system.h linux-3.1.1/arch/um/sys-x86_64/shared/sysdep/system.h
14682 +--- linux-3.1.1/arch/um/sys-x86_64/shared/sysdep/system.h 2011-11-11 15:19:27.000000000 -0500
14683 ++++ linux-3.1.1/arch/um/sys-x86_64/shared/sysdep/system.h 2011-11-16 18:39:07.000000000 -0500
14684 @@ -17,7 +17,7 @@
14685 # define AT_VECTOR_SIZE_ARCH 1
14686 #endif
14687 @@ -5146,9 +5117,9 @@ diff -urNp linux-3.0.9/arch/um/sys-x86_64/shared/sysdep/system.h linux-3.0.9/arc
14688
14689 void default_idle(void);
14690
14691 -diff -urNp linux-3.0.9/arch/x86/boot/bitops.h linux-3.0.9/arch/x86/boot/bitops.h
14692 ---- linux-3.0.9/arch/x86/boot/bitops.h 2011-11-11 13:12:24.000000000 -0500
14693 -+++ linux-3.0.9/arch/x86/boot/bitops.h 2011-11-15 20:02:59.000000000 -0500
14694 +diff -urNp linux-3.1.1/arch/x86/boot/bitops.h linux-3.1.1/arch/x86/boot/bitops.h
14695 +--- linux-3.1.1/arch/x86/boot/bitops.h 2011-11-11 15:19:27.000000000 -0500
14696 ++++ linux-3.1.1/arch/x86/boot/bitops.h 2011-11-16 18:39:07.000000000 -0500
14697 @@ -26,7 +26,7 @@ static inline int variable_test_bit(int
14698 u8 v;
14699 const u32 *p = (const u32 *)addr;
14700 @@ -5167,9 +5138,9 @@ diff -urNp linux-3.0.9/arch/x86/boot/bitops.h linux-3.0.9/arch/x86/boot/bitops.h
14701 }
14702
14703 #endif /* BOOT_BITOPS_H */
14704 -diff -urNp linux-3.0.9/arch/x86/boot/boot.h linux-3.0.9/arch/x86/boot/boot.h
14705 ---- linux-3.0.9/arch/x86/boot/boot.h 2011-11-11 13:12:24.000000000 -0500
14706 -+++ linux-3.0.9/arch/x86/boot/boot.h 2011-11-15 20:02:59.000000000 -0500
14707 +diff -urNp linux-3.1.1/arch/x86/boot/boot.h linux-3.1.1/arch/x86/boot/boot.h
14708 +--- linux-3.1.1/arch/x86/boot/boot.h 2011-11-11 15:19:27.000000000 -0500
14709 ++++ linux-3.1.1/arch/x86/boot/boot.h 2011-11-16 18:39:07.000000000 -0500
14710 @@ -85,7 +85,7 @@ static inline void io_delay(void)
14711 static inline u16 ds(void)
14712 {
14713 @@ -5188,9 +5159,9 @@ diff -urNp linux-3.0.9/arch/x86/boot/boot.h linux-3.0.9/arch/x86/boot/boot.h
14714 : "=qm" (diff), "+D" (s1), "+S" (s2), "+c" (len));
14715 return diff;
14716 }
14717 -diff -urNp linux-3.0.9/arch/x86/boot/compressed/head_32.S linux-3.0.9/arch/x86/boot/compressed/head_32.S
14718 ---- linux-3.0.9/arch/x86/boot/compressed/head_32.S 2011-11-11 13:12:24.000000000 -0500
14719 -+++ linux-3.0.9/arch/x86/boot/compressed/head_32.S 2011-11-15 20:02:59.000000000 -0500
14720 +diff -urNp linux-3.1.1/arch/x86/boot/compressed/head_32.S linux-3.1.1/arch/x86/boot/compressed/head_32.S
14721 +--- linux-3.1.1/arch/x86/boot/compressed/head_32.S 2011-11-11 15:19:27.000000000 -0500
14722 ++++ linux-3.1.1/arch/x86/boot/compressed/head_32.S 2011-11-16 18:39:07.000000000 -0500
14723 @@ -76,7 +76,7 @@ ENTRY(startup_32)
14724 notl %eax
14725 andl %eax, %ebx
14726 @@ -5219,9 +5190,9 @@ diff -urNp linux-3.0.9/arch/x86/boot/compressed/head_32.S linux-3.0.9/arch/x86/b
14727 addl %ebx, -__PAGE_OFFSET(%ebx, %ecx)
14728 jmp 1b
14729 2:
14730 -diff -urNp linux-3.0.9/arch/x86/boot/compressed/head_64.S linux-3.0.9/arch/x86/boot/compressed/head_64.S
14731 ---- linux-3.0.9/arch/x86/boot/compressed/head_64.S 2011-11-11 13:12:24.000000000 -0500
14732 -+++ linux-3.0.9/arch/x86/boot/compressed/head_64.S 2011-11-15 20:02:59.000000000 -0500
14733 +diff -urNp linux-3.1.1/arch/x86/boot/compressed/head_64.S linux-3.1.1/arch/x86/boot/compressed/head_64.S
14734 +--- linux-3.1.1/arch/x86/boot/compressed/head_64.S 2011-11-11 15:19:27.000000000 -0500
14735 ++++ linux-3.1.1/arch/x86/boot/compressed/head_64.S 2011-11-16 18:39:07.000000000 -0500
14736 @@ -91,7 +91,7 @@ ENTRY(startup_32)
14737 notl %eax
14738 andl %eax, %ebx
14739 @@ -5240,9 +5211,9 @@ diff -urNp linux-3.0.9/arch/x86/boot/compressed/head_64.S linux-3.0.9/arch/x86/b
14740 #endif
14741
14742 /* Target address to relocate to for decompression */
14743 -diff -urNp linux-3.0.9/arch/x86/boot/compressed/Makefile linux-3.0.9/arch/x86/boot/compressed/Makefile
14744 ---- linux-3.0.9/arch/x86/boot/compressed/Makefile 2011-11-11 13:12:24.000000000 -0500
14745 -+++ linux-3.0.9/arch/x86/boot/compressed/Makefile 2011-11-15 20:02:59.000000000 -0500
14746 +diff -urNp linux-3.1.1/arch/x86/boot/compressed/Makefile linux-3.1.1/arch/x86/boot/compressed/Makefile
14747 +--- linux-3.1.1/arch/x86/boot/compressed/Makefile 2011-11-11 15:19:27.000000000 -0500
14748 ++++ linux-3.1.1/arch/x86/boot/compressed/Makefile 2011-11-16 18:39:07.000000000 -0500
14749 @@ -14,6 +14,9 @@ cflags-$(CONFIG_X86_64) := -mcmodel=smal
14750 KBUILD_CFLAGS += $(cflags-y)
14751 KBUILD_CFLAGS += $(call cc-option,-ffreestanding)
14752 @@ -5253,9 +5224,9 @@ diff -urNp linux-3.0.9/arch/x86/boot/compressed/Makefile linux-3.0.9/arch/x86/bo
14753
14754 KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
14755 GCOV_PROFILE := n
14756 -diff -urNp linux-3.0.9/arch/x86/boot/compressed/misc.c linux-3.0.9/arch/x86/boot/compressed/misc.c
14757 ---- linux-3.0.9/arch/x86/boot/compressed/misc.c 2011-11-11 13:12:24.000000000 -0500
14758 -+++ linux-3.0.9/arch/x86/boot/compressed/misc.c 2011-11-15 20:02:59.000000000 -0500
14759 +diff -urNp linux-3.1.1/arch/x86/boot/compressed/misc.c linux-3.1.1/arch/x86/boot/compressed/misc.c
14760 +--- linux-3.1.1/arch/x86/boot/compressed/misc.c 2011-11-11 15:19:27.000000000 -0500
14761 ++++ linux-3.1.1/arch/x86/boot/compressed/misc.c 2011-11-16 18:39:07.000000000 -0500
14762 @@ -310,7 +310,7 @@ static void parse_elf(void *output)
14763 case PT_LOAD:
14764 #ifdef CONFIG_RELOCATABLE
14765 @@ -5274,9 +5245,9 @@ diff -urNp linux-3.0.9/arch/x86/boot/compressed/misc.c linux-3.0.9/arch/x86/boot
14766 error("Wrong destination address");
14767 #endif
14768
14769 -diff -urNp linux-3.0.9/arch/x86/boot/compressed/relocs.c linux-3.0.9/arch/x86/boot/compressed/relocs.c
14770 ---- linux-3.0.9/arch/x86/boot/compressed/relocs.c 2011-11-11 13:12:24.000000000 -0500
14771 -+++ linux-3.0.9/arch/x86/boot/compressed/relocs.c 2011-11-15 20:02:59.000000000 -0500
14772 +diff -urNp linux-3.1.1/arch/x86/boot/compressed/relocs.c linux-3.1.1/arch/x86/boot/compressed/relocs.c
14773 +--- linux-3.1.1/arch/x86/boot/compressed/relocs.c 2011-11-11 15:19:27.000000000 -0500
14774 ++++ linux-3.1.1/arch/x86/boot/compressed/relocs.c 2011-11-16 18:39:07.000000000 -0500
14775 @@ -13,8 +13,11 @@
14776
14777 static void die(char *fmt, ...);
14778 @@ -5469,9 +5440,9 @@ diff -urNp linux-3.0.9/arch/x86/boot/compressed/relocs.c linux-3.0.9/arch/x86/bo
14779 read_shdrs(fp);
14780 read_strtabs(fp);
14781 read_symtabs(fp);
14782 -diff -urNp linux-3.0.9/arch/x86/boot/cpucheck.c linux-3.0.9/arch/x86/boot/cpucheck.c
14783 ---- linux-3.0.9/arch/x86/boot/cpucheck.c 2011-11-11 13:12:24.000000000 -0500
14784 -+++ linux-3.0.9/arch/x86/boot/cpucheck.c 2011-11-15 20:02:59.000000000 -0500
14785 +diff -urNp linux-3.1.1/arch/x86/boot/cpucheck.c linux-3.1.1/arch/x86/boot/cpucheck.c
14786 +--- linux-3.1.1/arch/x86/boot/cpucheck.c 2011-11-11 15:19:27.000000000 -0500
14787 ++++ linux-3.1.1/arch/x86/boot/cpucheck.c 2011-11-16 18:39:07.000000000 -0500
14788 @@ -74,7 +74,7 @@ static int has_fpu(void)
14789 u16 fcw = -1, fsw = -1;
14790 u32 cr0;
14791 @@ -5567,9 +5538,9 @@ diff -urNp linux-3.0.9/arch/x86/boot/cpucheck.c linux-3.0.9/arch/x86/boot/cpuche
14792
14793 err = check_flags();
14794 }
14795 -diff -urNp linux-3.0.9/arch/x86/boot/header.S linux-3.0.9/arch/x86/boot/header.S
14796 ---- linux-3.0.9/arch/x86/boot/header.S 2011-11-11 13:12:24.000000000 -0500
14797 -+++ linux-3.0.9/arch/x86/boot/header.S 2011-11-15 20:02:59.000000000 -0500
14798 +diff -urNp linux-3.1.1/arch/x86/boot/header.S linux-3.1.1/arch/x86/boot/header.S
14799 +--- linux-3.1.1/arch/x86/boot/header.S 2011-11-11 15:19:27.000000000 -0500
14800 ++++ linux-3.1.1/arch/x86/boot/header.S 2011-11-16 18:39:07.000000000 -0500
14801 @@ -224,7 +224,7 @@ setup_data: .quad 0 # 64-bit physical
14802 # single linked list of
14803 # struct setup_data
14804 @@ -5579,10 +5550,10 @@ diff -urNp linux-3.0.9/arch/x86/boot/header.S linux-3.0.9/arch/x86/boot/header.S
14805
14806 #define ZO_INIT_SIZE (ZO__end - ZO_startup_32 + ZO_z_extract_offset)
14807 #define VO_INIT_SIZE (VO__end - VO__text)
14808 -diff -urNp linux-3.0.9/arch/x86/boot/Makefile linux-3.0.9/arch/x86/boot/Makefile
14809 ---- linux-3.0.9/arch/x86/boot/Makefile 2011-11-11 13:12:24.000000000 -0500
14810 -+++ linux-3.0.9/arch/x86/boot/Makefile 2011-11-15 20:02:59.000000000 -0500
14811 -@@ -69,6 +69,9 @@ KBUILD_CFLAGS := $(LINUXINCLUDE) -g -Os
14812 +diff -urNp linux-3.1.1/arch/x86/boot/Makefile linux-3.1.1/arch/x86/boot/Makefile
14813 +--- linux-3.1.1/arch/x86/boot/Makefile 2011-11-11 15:19:27.000000000 -0500
14814 ++++ linux-3.1.1/arch/x86/boot/Makefile 2011-11-16 18:39:07.000000000 -0500
14815 +@@ -63,6 +63,9 @@ KBUILD_CFLAGS := $(LINUXINCLUDE) -g -Os
14816 $(call cc-option, -fno-stack-protector) \
14817 $(call cc-option, -mpreferred-stack-boundary=2)
14818 KBUILD_CFLAGS += $(call cc-option, -m32)
14819 @@ -5592,9 +5563,9 @@ diff -urNp linux-3.0.9/arch/x86/boot/Makefile linux-3.0.9/arch/x86/boot/Makefile
14820 KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
14821 GCOV_PROFILE := n
14822
14823 -diff -urNp linux-3.0.9/arch/x86/boot/memory.c linux-3.0.9/arch/x86/boot/memory.c
14824 ---- linux-3.0.9/arch/x86/boot/memory.c 2011-11-11 13:12:24.000000000 -0500
14825 -+++ linux-3.0.9/arch/x86/boot/memory.c 2011-11-15 20:02:59.000000000 -0500
14826 +diff -urNp linux-3.1.1/arch/x86/boot/memory.c linux-3.1.1/arch/x86/boot/memory.c
14827 +--- linux-3.1.1/arch/x86/boot/memory.c 2011-11-11 15:19:27.000000000 -0500
14828 ++++ linux-3.1.1/arch/x86/boot/memory.c 2011-11-16 18:39:07.000000000 -0500
14829 @@ -19,7 +19,7 @@
14830
14831 static int detect_memory_e820(void)
14832 @@ -5604,9 +5575,9 @@ diff -urNp linux-3.0.9/arch/x86/boot/memory.c linux-3.0.9/arch/x86/boot/memory.c
14833 struct biosregs ireg, oreg;
14834 struct e820entry *desc = boot_params.e820_map;
14835 static struct e820entry buf; /* static so it is zeroed */
14836 -diff -urNp linux-3.0.9/arch/x86/boot/video.c linux-3.0.9/arch/x86/boot/video.c
14837 ---- linux-3.0.9/arch/x86/boot/video.c 2011-11-11 13:12:24.000000000 -0500
14838 -+++ linux-3.0.9/arch/x86/boot/video.c 2011-11-15 20:02:59.000000000 -0500
14839 +diff -urNp linux-3.1.1/arch/x86/boot/video.c linux-3.1.1/arch/x86/boot/video.c
14840 +--- linux-3.1.1/arch/x86/boot/video.c 2011-11-11 15:19:27.000000000 -0500
14841 ++++ linux-3.1.1/arch/x86/boot/video.c 2011-11-16 18:39:07.000000000 -0500
14842 @@ -96,7 +96,7 @@ static void store_mode_params(void)
14843 static unsigned int get_entry(void)
14844 {
14845 @@ -5616,9 +5587,9 @@ diff -urNp linux-3.0.9/arch/x86/boot/video.c linux-3.0.9/arch/x86/boot/video.c
14846 int key;
14847 unsigned int v;
14848
14849 -diff -urNp linux-3.0.9/arch/x86/boot/video-vesa.c linux-3.0.9/arch/x86/boot/video-vesa.c
14850 ---- linux-3.0.9/arch/x86/boot/video-vesa.c 2011-11-11 13:12:24.000000000 -0500
14851 -+++ linux-3.0.9/arch/x86/boot/video-vesa.c 2011-11-15 20:02:59.000000000 -0500
14852 +diff -urNp linux-3.1.1/arch/x86/boot/video-vesa.c linux-3.1.1/arch/x86/boot/video-vesa.c
14853 +--- linux-3.1.1/arch/x86/boot/video-vesa.c 2011-11-11 15:19:27.000000000 -0500
14854 ++++ linux-3.1.1/arch/x86/boot/video-vesa.c 2011-11-16 18:39:07.000000000 -0500
14855 @@ -200,6 +200,7 @@ static void vesa_store_pm_info(void)
14856
14857 boot_params.screen_info.vesapm_seg = oreg.es;
14858 @@ -5627,9 +5598,9 @@ diff -urNp linux-3.0.9/arch/x86/boot/video-vesa.c linux-3.0.9/arch/x86/boot/vide
14859 }
14860
14861 /*
14862 -diff -urNp linux-3.0.9/arch/x86/crypto/aes-x86_64-asm_64.S linux-3.0.9/arch/x86/crypto/aes-x86_64-asm_64.S
14863 ---- linux-3.0.9/arch/x86/crypto/aes-x86_64-asm_64.S 2011-11-11 13:12:24.000000000 -0500
14864 -+++ linux-3.0.9/arch/x86/crypto/aes-x86_64-asm_64.S 2011-11-15 20:02:59.000000000 -0500
14865 +diff -urNp linux-3.1.1/arch/x86/crypto/aes-x86_64-asm_64.S linux-3.1.1/arch/x86/crypto/aes-x86_64-asm_64.S
14866 +--- linux-3.1.1/arch/x86/crypto/aes-x86_64-asm_64.S 2011-11-11 15:19:27.000000000 -0500
14867 ++++ linux-3.1.1/arch/x86/crypto/aes-x86_64-asm_64.S 2011-11-16 18:39:07.000000000 -0500
14868 @@ -8,6 +8,8 @@
14869 * including this sentence is retained in full.
14870 */
14871 @@ -5648,9 +5619,9 @@ diff -urNp linux-3.0.9/arch/x86/crypto/aes-x86_64-asm_64.S linux-3.0.9/arch/x86/
14872 #define epilogue(r1,r2,r3,r4,r5,r6,r7,r8,r9) \
14873 movq r1,r2; \
14874 movq r3,r4; \
14875 -diff -urNp linux-3.0.9/arch/x86/crypto/salsa20-x86_64-asm_64.S linux-3.0.9/arch/x86/crypto/salsa20-x86_64-asm_64.S
14876 ---- linux-3.0.9/arch/x86/crypto/salsa20-x86_64-asm_64.S 2011-11-11 13:12:24.000000000 -0500
14877 -+++ linux-3.0.9/arch/x86/crypto/salsa20-x86_64-asm_64.S 2011-11-15 20:02:59.000000000 -0500
14878 +diff -urNp linux-3.1.1/arch/x86/crypto/salsa20-x86_64-asm_64.S linux-3.1.1/arch/x86/crypto/salsa20-x86_64-asm_64.S
14879 +--- linux-3.1.1/arch/x86/crypto/salsa20-x86_64-asm_64.S 2011-11-11 15:19:27.000000000 -0500
14880 ++++ linux-3.1.1/arch/x86/crypto/salsa20-x86_64-asm_64.S 2011-11-16 18:39:07.000000000 -0500
14881 @@ -1,3 +1,5 @@
14882 +#include <asm/alternative-asm.h>
14883 +
14884 @@ -5679,9 +5650,9 @@ diff -urNp linux-3.0.9/arch/x86/crypto/salsa20-x86_64-asm_64.S linux-3.0.9/arch/
14885 mov %rsi,%rdx
14886 + pax_force_retaddr
14887 ret
14888 -diff -urNp linux-3.0.9/arch/x86/crypto/twofish-x86_64-asm_64.S linux-3.0.9/arch/x86/crypto/twofish-x86_64-asm_64.S
14889 ---- linux-3.0.9/arch/x86/crypto/twofish-x86_64-asm_64.S 2011-11-11 13:12:24.000000000 -0500
14890 -+++ linux-3.0.9/arch/x86/crypto/twofish-x86_64-asm_64.S 2011-11-15 20:02:59.000000000 -0500
14891 +diff -urNp linux-3.1.1/arch/x86/crypto/twofish-x86_64-asm_64.S linux-3.1.1/arch/x86/crypto/twofish-x86_64-asm_64.S
14892 +--- linux-3.1.1/arch/x86/crypto/twofish-x86_64-asm_64.S 2011-11-11 15:19:27.000000000 -0500
14893 ++++ linux-3.1.1/arch/x86/crypto/twofish-x86_64-asm_64.S 2011-11-16 18:39:07.000000000 -0500
14894 @@ -21,6 +21,7 @@
14895 .text
14896
14897 @@ -5704,9 +5675,9 @@ diff -urNp linux-3.0.9/arch/x86/crypto/twofish-x86_64-asm_64.S linux-3.0.9/arch/
14898 movq $1,%rax
14899 + pax_force_retaddr
14900 ret
14901 -diff -urNp linux-3.0.9/arch/x86/ia32/ia32_aout.c linux-3.0.9/arch/x86/ia32/ia32_aout.c
14902 ---- linux-3.0.9/arch/x86/ia32/ia32_aout.c 2011-11-11 13:12:24.000000000 -0500
14903 -+++ linux-3.0.9/arch/x86/ia32/ia32_aout.c 2011-11-15 20:02:59.000000000 -0500
14904 +diff -urNp linux-3.1.1/arch/x86/ia32/ia32_aout.c linux-3.1.1/arch/x86/ia32/ia32_aout.c
14905 +--- linux-3.1.1/arch/x86/ia32/ia32_aout.c 2011-11-11 15:19:27.000000000 -0500
14906 ++++ linux-3.1.1/arch/x86/ia32/ia32_aout.c 2011-11-16 18:40:08.000000000 -0500
14907 @@ -162,6 +162,8 @@ static int aout_core_dump(long signr, st
14908 unsigned long dump_start, dump_size;
14909 struct user32 dump;
14910 @@ -5716,9 +5687,9 @@ diff -urNp linux-3.0.9/arch/x86/ia32/ia32_aout.c linux-3.0.9/arch/x86/ia32/ia32_
14911 fs = get_fs();
14912 set_fs(KERNEL_DS);
14913 has_dumped = 1;
14914 -diff -urNp linux-3.0.9/arch/x86/ia32/ia32entry.S linux-3.0.9/arch/x86/ia32/ia32entry.S
14915 ---- linux-3.0.9/arch/x86/ia32/ia32entry.S 2011-11-11 13:12:24.000000000 -0500
14916 -+++ linux-3.0.9/arch/x86/ia32/ia32entry.S 2011-11-15 20:02:59.000000000 -0500
14917 +diff -urNp linux-3.1.1/arch/x86/ia32/ia32entry.S linux-3.1.1/arch/x86/ia32/ia32entry.S
14918 +--- linux-3.1.1/arch/x86/ia32/ia32entry.S 2011-11-11 15:19:27.000000000 -0500
14919 ++++ linux-3.1.1/arch/x86/ia32/ia32entry.S 2011-11-16 18:40:08.000000000 -0500
14920 @@ -13,7 +13,9 @@
14921 #include <asm/thread_info.h>
14922 #include <asm/segment.h>
14923 @@ -5779,7 +5750,7 @@ diff -urNp linux-3.0.9/arch/x86/ia32/ia32entry.S linux-3.0.9/arch/x86/ia32/ia32e
14924 pushq_cfi $__USER32_CS
14925 /*CFI_REL_OFFSET cs,0*/
14926 @@ -146,6 +172,12 @@ ENTRY(ia32_sysenter_target)
14927 - SAVE_ARGS 0,0,1
14928 + SAVE_ARGS 0,1,0
14929 /* no need to do an access_ok check here because rbp has been
14930 32bit zero extended */
14931 +
14932 @@ -5842,8 +5813,8 @@ diff -urNp linux-3.0.9/arch/x86/ia32/ia32entry.S linux-3.0.9/arch/x86/ia32/ia32e
14933 * disabled irqs and here we enable it straight after entry:
14934 */
14935 ENABLE_INTERRUPTS(CLBR_NONE)
14936 -- SAVE_ARGS 8,1,1
14937 -+ SAVE_ARGS 8*6,1,1
14938 +- SAVE_ARGS 8,0,0
14939 ++ SAVE_ARGS 8*6,0,0
14940 movl %eax,%eax /* zero extension */
14941 movq %rax,ORIG_RAX-ARGOFFSET(%rsp)
14942 movq %rcx,RIP-ARGOFFSET(%rsp)
14943 @@ -5867,7 +5838,7 @@ diff -urNp linux-3.0.9/arch/x86/ia32/ia32entry.S linux-3.0.9/arch/x86/ia32/ia32e
14944 + pax_exit_kernel_user
14945 + pax_erase_kstack
14946 andl $~TS_COMPAT,TI_status(%r10)
14947 - RESTORE_ARGS 1,-ARG_SKIP,1,1,1
14948 + RESTORE_ARGS 0,-ARG_SKIP,0,0,0
14949 movl RIP-ARGOFFSET(%rsp),%ecx
14950 @@ -364,6 +417,9 @@ cstar_tracesys:
14951 movq $-ENOSYS,RAX(%rsp) /* ptrace can change this for a bad syscall */
14952 @@ -5905,10 +5876,10 @@ diff -urNp linux-3.0.9/arch/x86/ia32/ia32entry.S linux-3.0.9/arch/x86/ia32/ia32e
14953 ret
14954 CFI_ENDPROC
14955
14956 -diff -urNp linux-3.0.9/arch/x86/ia32/ia32_signal.c linux-3.0.9/arch/x86/ia32/ia32_signal.c
14957 ---- linux-3.0.9/arch/x86/ia32/ia32_signal.c 2011-11-11 13:12:24.000000000 -0500
14958 -+++ linux-3.0.9/arch/x86/ia32/ia32_signal.c 2011-11-15 20:02:59.000000000 -0500
14959 -@@ -167,7 +167,7 @@ asmlinkage long sys32_sigaltstack(const
14960 +diff -urNp linux-3.1.1/arch/x86/ia32/ia32_signal.c linux-3.1.1/arch/x86/ia32/ia32_signal.c
14961 +--- linux-3.1.1/arch/x86/ia32/ia32_signal.c 2011-11-11 15:19:27.000000000 -0500
14962 ++++ linux-3.1.1/arch/x86/ia32/ia32_signal.c 2011-11-16 18:39:07.000000000 -0500
14963 +@@ -169,7 +169,7 @@ asmlinkage long sys32_sigaltstack(const
14964 }
14965 seg = get_fs();
14966 set_fs(KERNEL_DS);
14967 @@ -5917,7 +5888,7 @@ diff -urNp linux-3.0.9/arch/x86/ia32/ia32_signal.c linux-3.0.9/arch/x86/ia32/ia3
14968 set_fs(seg);
14969 if (ret >= 0 && uoss_ptr) {
14970 if (!access_ok(VERIFY_WRITE, uoss_ptr, sizeof(stack_ia32_t)))
14971 -@@ -374,7 +374,7 @@ static int ia32_setup_sigcontext(struct
14972 +@@ -370,7 +370,7 @@ static int ia32_setup_sigcontext(struct
14973 */
14974 static void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
14975 size_t frame_size,
14976 @@ -5926,7 +5897,7 @@ diff -urNp linux-3.0.9/arch/x86/ia32/ia32_signal.c linux-3.0.9/arch/x86/ia32/ia3
14977 {
14978 unsigned long sp;
14979
14980 -@@ -395,7 +395,7 @@ static void __user *get_sigframe(struct
14981 +@@ -391,7 +391,7 @@ static void __user *get_sigframe(struct
14982
14983 if (used_math()) {
14984 sp = sp - sig_xstate_ia32_size;
14985 @@ -5935,7 +5906,7 @@ diff -urNp linux-3.0.9/arch/x86/ia32/ia32_signal.c linux-3.0.9/arch/x86/ia32/ia3
14986 if (save_i387_xstate_ia32(*fpstate) < 0)
14987 return (void __user *) -1L;
14988 }
14989 -@@ -403,7 +403,7 @@ static void __user *get_sigframe(struct
14990 +@@ -399,7 +399,7 @@ static void __user *get_sigframe(struct
14991 sp -= frame_size;
14992 /* Align the stack pointer according to the i386 ABI,
14993 * i.e. so that on function entry ((sp + 4) & 15) == 0. */
14994 @@ -5944,7 +5915,7 @@ diff -urNp linux-3.0.9/arch/x86/ia32/ia32_signal.c linux-3.0.9/arch/x86/ia32/ia3
14995 return (void __user *) sp;
14996 }
14997
14998 -@@ -461,7 +461,7 @@ int ia32_setup_frame(int sig, struct k_s
14999 +@@ -457,7 +457,7 @@ int ia32_setup_frame(int sig, struct k_s
15000 * These are actually not used anymore, but left because some
15001 * gdb versions depend on them as a marker.
15002 */
15003 @@ -5953,7 +5924,7 @@ diff -urNp linux-3.0.9/arch/x86/ia32/ia32_signal.c linux-3.0.9/arch/x86/ia32/ia3
15004 } put_user_catch(err);
15005
15006 if (err)
15007 -@@ -503,7 +503,7 @@ int ia32_setup_rt_frame(int sig, struct
15008 +@@ -499,7 +499,7 @@ int ia32_setup_rt_frame(int sig, struct
15009 0xb8,
15010 __NR_ia32_rt_sigreturn,
15011 0x80cd,
15012 @@ -5962,7 +5933,7 @@ diff -urNp linux-3.0.9/arch/x86/ia32/ia32_signal.c linux-3.0.9/arch/x86/ia32/ia3
15013 };
15014
15015 frame = get_sigframe(ka, regs, sizeof(*frame), &fpstate);
15016 -@@ -533,16 +533,18 @@ int ia32_setup_rt_frame(int sig, struct
15017 +@@ -529,16 +529,18 @@ int ia32_setup_rt_frame(int sig, struct
15018
15019 if (ka->sa.sa_flags & SA_RESTORER)
15020 restorer = ka->sa.sa_restorer;
15021 @@ -5984,9 +5955,9 @@ diff -urNp linux-3.0.9/arch/x86/ia32/ia32_signal.c linux-3.0.9/arch/x86/ia32/ia3
15022 } put_user_catch(err);
15023
15024 if (err)
15025 -diff -urNp linux-3.0.9/arch/x86/ia32/sys_ia32.c linux-3.0.9/arch/x86/ia32/sys_ia32.c
15026 ---- linux-3.0.9/arch/x86/ia32/sys_ia32.c 2011-11-11 13:12:24.000000000 -0500
15027 -+++ linux-3.0.9/arch/x86/ia32/sys_ia32.c 2011-11-15 20:02:59.000000000 -0500
15028 +diff -urNp linux-3.1.1/arch/x86/ia32/sys_ia32.c linux-3.1.1/arch/x86/ia32/sys_ia32.c
15029 +--- linux-3.1.1/arch/x86/ia32/sys_ia32.c 2011-11-11 15:19:27.000000000 -0500
15030 ++++ linux-3.1.1/arch/x86/ia32/sys_ia32.c 2011-11-16 18:39:07.000000000 -0500
15031 @@ -69,8 +69,8 @@ asmlinkage long sys32_ftruncate64(unsign
15032 */
15033 static int cp_stat64(struct stat64 __user *ubuf, struct kstat *stat)
15034 @@ -6054,9 +6025,9 @@ diff -urNp linux-3.0.9/arch/x86/ia32/sys_ia32.c linux-3.0.9/arch/x86/ia32/sys_ia
15035 count);
15036 set_fs(old_fs);
15037
15038 -diff -urNp linux-3.0.9/arch/x86/include/asm/alternative-asm.h linux-3.0.9/arch/x86/include/asm/alternative-asm.h
15039 ---- linux-3.0.9/arch/x86/include/asm/alternative-asm.h 2011-11-11 13:12:24.000000000 -0500
15040 -+++ linux-3.0.9/arch/x86/include/asm/alternative-asm.h 2011-11-15 20:02:59.000000000 -0500
15041 +diff -urNp linux-3.1.1/arch/x86/include/asm/alternative-asm.h linux-3.1.1/arch/x86/include/asm/alternative-asm.h
15042 +--- linux-3.1.1/arch/x86/include/asm/alternative-asm.h 2011-11-11 15:19:27.000000000 -0500
15043 ++++ linux-3.1.1/arch/x86/include/asm/alternative-asm.h 2011-11-16 18:39:07.000000000 -0500
15044 @@ -15,6 +15,20 @@
15045 .endm
15046 #endif
15047 @@ -6076,12 +6047,12 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/alternative-asm.h linux-3.0.9/arch/x
15048 +#endif
15049 +
15050 .macro altinstruction_entry orig alt feature orig_len alt_len
15051 - .align 8
15052 - .quad \orig
15053 -diff -urNp linux-3.0.9/arch/x86/include/asm/alternative.h linux-3.0.9/arch/x86/include/asm/alternative.h
15054 ---- linux-3.0.9/arch/x86/include/asm/alternative.h 2011-11-11 13:12:24.000000000 -0500
15055 -+++ linux-3.0.9/arch/x86/include/asm/alternative.h 2011-11-15 20:02:59.000000000 -0500
15056 -@@ -93,7 +93,7 @@ static inline int alternatives_text_rese
15057 + .long \orig - .
15058 + .long \alt - .
15059 +diff -urNp linux-3.1.1/arch/x86/include/asm/alternative.h linux-3.1.1/arch/x86/include/asm/alternative.h
15060 +--- linux-3.1.1/arch/x86/include/asm/alternative.h 2011-11-11 15:19:27.000000000 -0500
15061 ++++ linux-3.1.1/arch/x86/include/asm/alternative.h 2011-11-16 18:39:07.000000000 -0500
15062 +@@ -89,7 +89,7 @@ static inline int alternatives_text_rese
15063 ".section .discard,\"aw\",@progbits\n" \
15064 " .byte 0xff + (664f-663f) - (662b-661b)\n" /* rlen <= slen */ \
15065 ".previous\n" \
15066 @@ -6090,9 +6061,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/alternative.h linux-3.0.9/arch/x86/i
15067 "663:\n\t" newinstr "\n664:\n" /* replacement */ \
15068 ".previous"
15069
15070 -diff -urNp linux-3.0.9/arch/x86/include/asm/apic.h linux-3.0.9/arch/x86/include/asm/apic.h
15071 ---- linux-3.0.9/arch/x86/include/asm/apic.h 2011-11-11 13:12:24.000000000 -0500
15072 -+++ linux-3.0.9/arch/x86/include/asm/apic.h 2011-11-15 20:02:59.000000000 -0500
15073 +diff -urNp linux-3.1.1/arch/x86/include/asm/apic.h linux-3.1.1/arch/x86/include/asm/apic.h
15074 +--- linux-3.1.1/arch/x86/include/asm/apic.h 2011-11-11 15:19:27.000000000 -0500
15075 ++++ linux-3.1.1/arch/x86/include/asm/apic.h 2011-11-16 18:39:07.000000000 -0500
15076 @@ -45,7 +45,7 @@ static inline void generic_apic_probe(vo
15077
15078 #ifdef CONFIG_X86_LOCAL_APIC
15079 @@ -6102,9 +6073,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/apic.h linux-3.0.9/arch/x86/include/
15080 extern int local_apic_timer_c2_ok;
15081
15082 extern int disable_apic;
15083 -diff -urNp linux-3.0.9/arch/x86/include/asm/apm.h linux-3.0.9/arch/x86/include/asm/apm.h
15084 ---- linux-3.0.9/arch/x86/include/asm/apm.h 2011-11-11 13:12:24.000000000 -0500
15085 -+++ linux-3.0.9/arch/x86/include/asm/apm.h 2011-11-15 20:02:59.000000000 -0500
15086 +diff -urNp linux-3.1.1/arch/x86/include/asm/apm.h linux-3.1.1/arch/x86/include/asm/apm.h
15087 +--- linux-3.1.1/arch/x86/include/asm/apm.h 2011-11-11 15:19:27.000000000 -0500
15088 ++++ linux-3.1.1/arch/x86/include/asm/apm.h 2011-11-16 18:39:07.000000000 -0500
15089 @@ -34,7 +34,7 @@ static inline void apm_bios_call_asm(u32
15090 __asm__ __volatile__(APM_DO_ZERO_SEGS
15091 "pushl %%edi\n\t"
15092 @@ -6123,9 +6094,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/apm.h linux-3.0.9/arch/x86/include/a
15093 "setc %%bl\n\t"
15094 "popl %%ebp\n\t"
15095 "popl %%edi\n\t"
15096 -diff -urNp linux-3.0.9/arch/x86/include/asm/atomic64_32.h linux-3.0.9/arch/x86/include/asm/atomic64_32.h
15097 ---- linux-3.0.9/arch/x86/include/asm/atomic64_32.h 2011-11-11 13:12:24.000000000 -0500
15098 -+++ linux-3.0.9/arch/x86/include/asm/atomic64_32.h 2011-11-15 20:02:59.000000000 -0500
15099 +diff -urNp linux-3.1.1/arch/x86/include/asm/atomic64_32.h linux-3.1.1/arch/x86/include/asm/atomic64_32.h
15100 +--- linux-3.1.1/arch/x86/include/asm/atomic64_32.h 2011-11-11 15:19:27.000000000 -0500
15101 ++++ linux-3.1.1/arch/x86/include/asm/atomic64_32.h 2011-11-16 18:39:07.000000000 -0500
15102 @@ -12,6 +12,14 @@ typedef struct {
15103 u64 __aligned(8) counter;
15104 } atomic64_t;
15105 @@ -6275,9 +6246,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/atomic64_32.h linux-3.0.9/arch/x86/i
15106 * atomic64_sub - subtract the atomic64 variable
15107 * @i: integer value to subtract
15108 * @v: pointer to type atomic64_t
15109 -diff -urNp linux-3.0.9/arch/x86/include/asm/atomic64_64.h linux-3.0.9/arch/x86/include/asm/atomic64_64.h
15110 ---- linux-3.0.9/arch/x86/include/asm/atomic64_64.h 2011-11-11 13:12:24.000000000 -0500
15111 -+++ linux-3.0.9/arch/x86/include/asm/atomic64_64.h 2011-11-15 20:02:59.000000000 -0500
15112 +diff -urNp linux-3.1.1/arch/x86/include/asm/atomic64_64.h linux-3.1.1/arch/x86/include/asm/atomic64_64.h
15113 +--- linux-3.1.1/arch/x86/include/asm/atomic64_64.h 2011-11-11 15:19:27.000000000 -0500
15114 ++++ linux-3.1.1/arch/x86/include/asm/atomic64_64.h 2011-11-16 18:39:07.000000000 -0500
15115 @@ -18,7 +18,19 @@
15116 */
15117 static inline long atomic64_read(const atomic64_t *v)
15118 @@ -6599,9 +6570,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/atomic64_64.h linux-3.0.9/arch/x86/i
15119 }
15120
15121 #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
15122 -diff -urNp linux-3.0.9/arch/x86/include/asm/atomic.h linux-3.0.9/arch/x86/include/asm/atomic.h
15123 ---- linux-3.0.9/arch/x86/include/asm/atomic.h 2011-11-11 13:12:24.000000000 -0500
15124 -+++ linux-3.0.9/arch/x86/include/asm/atomic.h 2011-11-15 20:02:59.000000000 -0500
15125 +diff -urNp linux-3.1.1/arch/x86/include/asm/atomic.h linux-3.1.1/arch/x86/include/asm/atomic.h
15126 +--- linux-3.1.1/arch/x86/include/asm/atomic.h 2011-11-11 15:19:27.000000000 -0500
15127 ++++ linux-3.1.1/arch/x86/include/asm/atomic.h 2011-11-16 18:39:07.000000000 -0500
15128 @@ -22,7 +22,18 @@
15129 */
15130 static inline int atomic_read(const atomic_t *v)
15131 @@ -6930,11 +6901,11 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/atomic.h linux-3.0.9/arch/x86/includ
15132 +}
15133 +
15134 /**
15135 - * atomic_add_unless - add unless the number is already a given value
15136 + * __atomic_add_unless - add unless the number is already a given value
15137 * @v: pointer of type atomic_t
15138 -@@ -231,21 +447,77 @@ static inline int atomic_xchg(atomic_t *
15139 +@@ -231,12 +447,25 @@ static inline int atomic_xchg(atomic_t *
15140 */
15141 - static inline int atomic_add_unless(atomic_t *v, int a, int u)
15142 + static inline int __atomic_add_unless(atomic_t *v, int a, int u)
15143 {
15144 - int c, old;
15145 + int c, old, new;
15146 @@ -6961,13 +6932,10 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/atomic.h linux-3.0.9/arch/x86/includ
15147 if (likely(old == c))
15148 break;
15149 c = old;
15150 - }
15151 -- return c != (u);
15152 -+ return c != u;
15153 +@@ -244,6 +473,48 @@ static inline int __atomic_add_unless(at
15154 + return c;
15155 }
15156
15157 - #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
15158 -
15159 +/**
15160 + * atomic_inc_not_zero_hint - increment if not null
15161 + * @v: pointer of type atomic_t
15162 @@ -6987,7 +6955,7 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/atomic.h linux-3.0.9/arch/x86/includ
15163 +
15164 + /* sanity test, should be removed by compiler if hint is a constant */
15165 + if (!hint)
15166 -+ return atomic_inc_not_zero(v);
15167 ++ return __atomic_add_unless(v, 1, 0);
15168 +
15169 + do {
15170 + asm volatile("incl %0\n"
15171 @@ -7010,13 +6978,12 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/atomic.h linux-3.0.9/arch/x86/includ
15172 +
15173 + return 0;
15174 +}
15175 -+
15176 +
15177 /*
15178 * atomic_dec_if_positive - decrement by 1 if old value positive
15179 - * @v: pointer of type atomic_t
15180 -diff -urNp linux-3.0.9/arch/x86/include/asm/bitops.h linux-3.0.9/arch/x86/include/asm/bitops.h
15181 ---- linux-3.0.9/arch/x86/include/asm/bitops.h 2011-11-11 13:12:24.000000000 -0500
15182 -+++ linux-3.0.9/arch/x86/include/asm/bitops.h 2011-11-15 20:02:59.000000000 -0500
15183 +diff -urNp linux-3.1.1/arch/x86/include/asm/bitops.h linux-3.1.1/arch/x86/include/asm/bitops.h
15184 +--- linux-3.1.1/arch/x86/include/asm/bitops.h 2011-11-11 15:19:27.000000000 -0500
15185 ++++ linux-3.1.1/arch/x86/include/asm/bitops.h 2011-11-16 18:39:07.000000000 -0500
15186 @@ -38,7 +38,7 @@
15187 * a mask operation on a byte.
15188 */
15189 @@ -7026,9 +6993,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/bitops.h linux-3.0.9/arch/x86/includ
15190 #define CONST_MASK(nr) (1 << ((nr) & 7))
15191
15192 /**
15193 -diff -urNp linux-3.0.9/arch/x86/include/asm/boot.h linux-3.0.9/arch/x86/include/asm/boot.h
15194 ---- linux-3.0.9/arch/x86/include/asm/boot.h 2011-11-11 13:12:24.000000000 -0500
15195 -+++ linux-3.0.9/arch/x86/include/asm/boot.h 2011-11-15 20:02:59.000000000 -0500
15196 +diff -urNp linux-3.1.1/arch/x86/include/asm/boot.h linux-3.1.1/arch/x86/include/asm/boot.h
15197 +--- linux-3.1.1/arch/x86/include/asm/boot.h 2011-11-11 15:19:27.000000000 -0500
15198 ++++ linux-3.1.1/arch/x86/include/asm/boot.h 2011-11-16 18:39:07.000000000 -0500
15199 @@ -11,10 +11,15 @@
15200 #include <asm/pgtable_types.h>
15201
15202 @@ -7046,9 +7013,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/boot.h linux-3.0.9/arch/x86/include/
15203 /* Minimum kernel alignment, as a power of two */
15204 #ifdef CONFIG_X86_64
15205 #define MIN_KERNEL_ALIGN_LG2 PMD_SHIFT
15206 -diff -urNp linux-3.0.9/arch/x86/include/asm/cacheflush.h linux-3.0.9/arch/x86/include/asm/cacheflush.h
15207 ---- linux-3.0.9/arch/x86/include/asm/cacheflush.h 2011-11-11 13:12:24.000000000 -0500
15208 -+++ linux-3.0.9/arch/x86/include/asm/cacheflush.h 2011-11-15 20:02:59.000000000 -0500
15209 +diff -urNp linux-3.1.1/arch/x86/include/asm/cacheflush.h linux-3.1.1/arch/x86/include/asm/cacheflush.h
15210 +--- linux-3.1.1/arch/x86/include/asm/cacheflush.h 2011-11-11 15:19:27.000000000 -0500
15211 ++++ linux-3.1.1/arch/x86/include/asm/cacheflush.h 2011-11-16 18:39:07.000000000 -0500
15212 @@ -26,7 +26,7 @@ static inline unsigned long get_page_mem
15213 unsigned long pg_flags = pg->flags & _PGMT_MASK;
15214
15215 @@ -7058,9 +7025,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/cacheflush.h linux-3.0.9/arch/x86/in
15216 else if (pg_flags == _PGMT_WC)
15217 return _PAGE_CACHE_WC;
15218 else if (pg_flags == _PGMT_UC_MINUS)
15219 -diff -urNp linux-3.0.9/arch/x86/include/asm/cache.h linux-3.0.9/arch/x86/include/asm/cache.h
15220 ---- linux-3.0.9/arch/x86/include/asm/cache.h 2011-11-11 13:12:24.000000000 -0500
15221 -+++ linux-3.0.9/arch/x86/include/asm/cache.h 2011-11-15 20:02:59.000000000 -0500
15222 +diff -urNp linux-3.1.1/arch/x86/include/asm/cache.h linux-3.1.1/arch/x86/include/asm/cache.h
15223 +--- linux-3.1.1/arch/x86/include/asm/cache.h 2011-11-11 15:19:27.000000000 -0500
15224 ++++ linux-3.1.1/arch/x86/include/asm/cache.h 2011-11-16 18:39:07.000000000 -0500
15225 @@ -5,12 +5,13 @@
15226
15227 /* L1 cache line size */
15228 @@ -7077,9 +7044,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/cache.h linux-3.0.9/arch/x86/include
15229
15230 #ifdef CONFIG_X86_VSMP
15231 #ifdef CONFIG_SMP
15232 -diff -urNp linux-3.0.9/arch/x86/include/asm/checksum_32.h linux-3.0.9/arch/x86/include/asm/checksum_32.h
15233 ---- linux-3.0.9/arch/x86/include/asm/checksum_32.h 2011-11-11 13:12:24.000000000 -0500
15234 -+++ linux-3.0.9/arch/x86/include/asm/checksum_32.h 2011-11-15 20:02:59.000000000 -0500
15235 +diff -urNp linux-3.1.1/arch/x86/include/asm/checksum_32.h linux-3.1.1/arch/x86/include/asm/checksum_32.h
15236 +--- linux-3.1.1/arch/x86/include/asm/checksum_32.h 2011-11-11 15:19:27.000000000 -0500
15237 ++++ linux-3.1.1/arch/x86/include/asm/checksum_32.h 2011-11-16 18:39:07.000000000 -0500
15238 @@ -31,6 +31,14 @@ asmlinkage __wsum csum_partial_copy_gene
15239 int len, __wsum sum,
15240 int *src_err_ptr, int *dst_err_ptr);
15241 @@ -7113,9 +7080,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/checksum_32.h linux-3.0.9/arch/x86/i
15242 len, sum, NULL, err_ptr);
15243
15244 if (len)
15245 -diff -urNp linux-3.0.9/arch/x86/include/asm/cpufeature.h linux-3.0.9/arch/x86/include/asm/cpufeature.h
15246 ---- linux-3.0.9/arch/x86/include/asm/cpufeature.h 2011-11-11 13:12:24.000000000 -0500
15247 -+++ linux-3.0.9/arch/x86/include/asm/cpufeature.h 2011-11-15 20:02:59.000000000 -0500
15248 +diff -urNp linux-3.1.1/arch/x86/include/asm/cpufeature.h linux-3.1.1/arch/x86/include/asm/cpufeature.h
15249 +--- linux-3.1.1/arch/x86/include/asm/cpufeature.h 2011-11-11 15:19:27.000000000 -0500
15250 ++++ linux-3.1.1/arch/x86/include/asm/cpufeature.h 2011-11-16 18:39:07.000000000 -0500
15251 @@ -358,7 +358,7 @@ static __always_inline __pure bool __sta
15252 ".section .discard,\"aw\",@progbits\n"
15253 " .byte 0xff + (4f-3f) - (2b-1b)\n" /* size check */
15254 @@ -7125,9 +7092,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/cpufeature.h linux-3.0.9/arch/x86/in
15255 "3: movb $1,%0\n"
15256 "4:\n"
15257 ".previous\n"
15258 -diff -urNp linux-3.0.9/arch/x86/include/asm/desc_defs.h linux-3.0.9/arch/x86/include/asm/desc_defs.h
15259 ---- linux-3.0.9/arch/x86/include/asm/desc_defs.h 2011-11-11 13:12:24.000000000 -0500
15260 -+++ linux-3.0.9/arch/x86/include/asm/desc_defs.h 2011-11-15 20:02:59.000000000 -0500
15261 +diff -urNp linux-3.1.1/arch/x86/include/asm/desc_defs.h linux-3.1.1/arch/x86/include/asm/desc_defs.h
15262 +--- linux-3.1.1/arch/x86/include/asm/desc_defs.h 2011-11-11 15:19:27.000000000 -0500
15263 ++++ linux-3.1.1/arch/x86/include/asm/desc_defs.h 2011-11-16 18:39:07.000000000 -0500
15264 @@ -31,6 +31,12 @@ struct desc_struct {
15265 unsigned base1: 8, type: 4, s: 1, dpl: 2, p: 1;
15266 unsigned limit: 4, avl: 1, l: 1, d: 1, g: 1, base2: 8;
15267 @@ -7141,9 +7108,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/desc_defs.h linux-3.0.9/arch/x86/inc
15268 };
15269 } __attribute__((packed));
15270
15271 -diff -urNp linux-3.0.9/arch/x86/include/asm/desc.h linux-3.0.9/arch/x86/include/asm/desc.h
15272 ---- linux-3.0.9/arch/x86/include/asm/desc.h 2011-11-11 13:12:24.000000000 -0500
15273 -+++ linux-3.0.9/arch/x86/include/asm/desc.h 2011-11-15 20:02:59.000000000 -0500
15274 +diff -urNp linux-3.1.1/arch/x86/include/asm/desc.h linux-3.1.1/arch/x86/include/asm/desc.h
15275 +--- linux-3.1.1/arch/x86/include/asm/desc.h 2011-11-11 15:19:27.000000000 -0500
15276 ++++ linux-3.1.1/arch/x86/include/asm/desc.h 2011-11-16 18:39:07.000000000 -0500
15277 @@ -4,6 +4,7 @@
15278 #include <asm/desc_defs.h>
15279 #include <asm/ldt.h>
15280 @@ -7322,9 +7289,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/desc.h linux-3.0.9/arch/x86/include/
15281 +#endif
15282 +
15283 #endif /* _ASM_X86_DESC_H */
15284 -diff -urNp linux-3.0.9/arch/x86/include/asm/e820.h linux-3.0.9/arch/x86/include/asm/e820.h
15285 ---- linux-3.0.9/arch/x86/include/asm/e820.h 2011-11-11 13:12:24.000000000 -0500
15286 -+++ linux-3.0.9/arch/x86/include/asm/e820.h 2011-11-15 20:02:59.000000000 -0500
15287 +diff -urNp linux-3.1.1/arch/x86/include/asm/e820.h linux-3.1.1/arch/x86/include/asm/e820.h
15288 +--- linux-3.1.1/arch/x86/include/asm/e820.h 2011-11-11 15:19:27.000000000 -0500
15289 ++++ linux-3.1.1/arch/x86/include/asm/e820.h 2011-11-16 18:39:07.000000000 -0500
15290 @@ -69,7 +69,7 @@ struct e820map {
15291 #define ISA_START_ADDRESS 0xa0000
15292 #define ISA_END_ADDRESS 0x100000
15293 @@ -7334,9 +7301,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/e820.h linux-3.0.9/arch/x86/include/
15294 #define BIOS_END 0x00100000
15295
15296 #define BIOS_ROM_BASE 0xffe00000
15297 -diff -urNp linux-3.0.9/arch/x86/include/asm/elf.h linux-3.0.9/arch/x86/include/asm/elf.h
15298 ---- linux-3.0.9/arch/x86/include/asm/elf.h 2011-11-11 13:12:24.000000000 -0500
15299 -+++ linux-3.0.9/arch/x86/include/asm/elf.h 2011-11-15 20:02:59.000000000 -0500
15300 +diff -urNp linux-3.1.1/arch/x86/include/asm/elf.h linux-3.1.1/arch/x86/include/asm/elf.h
15301 +--- linux-3.1.1/arch/x86/include/asm/elf.h 2011-11-11 15:19:27.000000000 -0500
15302 ++++ linux-3.1.1/arch/x86/include/asm/elf.h 2011-11-16 18:39:07.000000000 -0500
15303 @@ -237,7 +237,25 @@ extern int force_personality32;
15304 the loader. We need to make sure that it is out of the way of the program
15305 that it will "exec", and that there is sufficient room for the brk. */
15306 @@ -7391,9 +7358,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/elf.h linux-3.0.9/arch/x86/include/a
15307 -#define arch_randomize_brk arch_randomize_brk
15308 -
15309 #endif /* _ASM_X86_ELF_H */
15310 -diff -urNp linux-3.0.9/arch/x86/include/asm/emergency-restart.h linux-3.0.9/arch/x86/include/asm/emergency-restart.h
15311 ---- linux-3.0.9/arch/x86/include/asm/emergency-restart.h 2011-11-11 13:12:24.000000000 -0500
15312 -+++ linux-3.0.9/arch/x86/include/asm/emergency-restart.h 2011-11-15 20:02:59.000000000 -0500
15313 +diff -urNp linux-3.1.1/arch/x86/include/asm/emergency-restart.h linux-3.1.1/arch/x86/include/asm/emergency-restart.h
15314 +--- linux-3.1.1/arch/x86/include/asm/emergency-restart.h 2011-11-11 15:19:27.000000000 -0500
15315 ++++ linux-3.1.1/arch/x86/include/asm/emergency-restart.h 2011-11-16 18:39:07.000000000 -0500
15316 @@ -15,6 +15,6 @@ enum reboot_type {
15317
15318 extern enum reboot_type reboot_type;
15319 @@ -7402,9 +7369,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/emergency-restart.h linux-3.0.9/arch
15320 +extern void machine_emergency_restart(void) __noreturn;
15321
15322 #endif /* _ASM_X86_EMERGENCY_RESTART_H */
15323 -diff -urNp linux-3.0.9/arch/x86/include/asm/futex.h linux-3.0.9/arch/x86/include/asm/futex.h
15324 ---- linux-3.0.9/arch/x86/include/asm/futex.h 2011-11-11 13:12:24.000000000 -0500
15325 -+++ linux-3.0.9/arch/x86/include/asm/futex.h 2011-11-15 20:02:59.000000000 -0500
15326 +diff -urNp linux-3.1.1/arch/x86/include/asm/futex.h linux-3.1.1/arch/x86/include/asm/futex.h
15327 +--- linux-3.1.1/arch/x86/include/asm/futex.h 2011-11-11 15:19:27.000000000 -0500
15328 ++++ linux-3.1.1/arch/x86/include/asm/futex.h 2011-11-16 18:39:07.000000000 -0500
15329 @@ -12,16 +12,18 @@
15330 #include <asm/system.h>
15331
15332 @@ -7463,10 +7430,10 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/futex.h linux-3.0.9/arch/x86/include
15333 : "i" (-EFAULT), "r" (newval), "1" (oldval)
15334 : "memory"
15335 );
15336 -diff -urNp linux-3.0.9/arch/x86/include/asm/hw_irq.h linux-3.0.9/arch/x86/include/asm/hw_irq.h
15337 ---- linux-3.0.9/arch/x86/include/asm/hw_irq.h 2011-11-11 13:12:24.000000000 -0500
15338 -+++ linux-3.0.9/arch/x86/include/asm/hw_irq.h 2011-11-15 20:02:59.000000000 -0500
15339 -@@ -137,8 +137,8 @@ extern void setup_ioapic_dest(void);
15340 +diff -urNp linux-3.1.1/arch/x86/include/asm/hw_irq.h linux-3.1.1/arch/x86/include/asm/hw_irq.h
15341 +--- linux-3.1.1/arch/x86/include/asm/hw_irq.h 2011-11-11 15:19:27.000000000 -0500
15342 ++++ linux-3.1.1/arch/x86/include/asm/hw_irq.h 2011-11-16 18:39:07.000000000 -0500
15343 +@@ -136,8 +136,8 @@ extern void setup_ioapic_dest(void);
15344 extern void enable_IO_APIC(void);
15345
15346 /* Statistics */
15347 @@ -7477,9 +7444,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/hw_irq.h linux-3.0.9/arch/x86/includ
15348
15349 /* EISA */
15350 extern void eisa_set_level_irq(unsigned int irq);
15351 -diff -urNp linux-3.0.9/arch/x86/include/asm/i387.h linux-3.0.9/arch/x86/include/asm/i387.h
15352 ---- linux-3.0.9/arch/x86/include/asm/i387.h 2011-11-11 13:12:24.000000000 -0500
15353 -+++ linux-3.0.9/arch/x86/include/asm/i387.h 2011-11-15 20:02:59.000000000 -0500
15354 +diff -urNp linux-3.1.1/arch/x86/include/asm/i387.h linux-3.1.1/arch/x86/include/asm/i387.h
15355 +--- linux-3.1.1/arch/x86/include/asm/i387.h 2011-11-11 15:19:27.000000000 -0500
15356 ++++ linux-3.1.1/arch/x86/include/asm/i387.h 2011-11-16 18:39:07.000000000 -0500
15357 @@ -92,6 +92,11 @@ static inline int fxrstor_checking(struc
15358 {
15359 int err;
15360 @@ -7529,10 +7496,10 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/i387.h linux-3.0.9/arch/x86/include/
15361 else
15362 clts();
15363 }
15364 -diff -urNp linux-3.0.9/arch/x86/include/asm/io.h linux-3.0.9/arch/x86/include/asm/io.h
15365 ---- linux-3.0.9/arch/x86/include/asm/io.h 2011-11-11 13:12:24.000000000 -0500
15366 -+++ linux-3.0.9/arch/x86/include/asm/io.h 2011-11-15 20:02:59.000000000 -0500
15367 -@@ -196,6 +196,17 @@ extern void set_iounmap_nonlazy(void);
15368 +diff -urNp linux-3.1.1/arch/x86/include/asm/io.h linux-3.1.1/arch/x86/include/asm/io.h
15369 +--- linux-3.1.1/arch/x86/include/asm/io.h 2011-11-11 15:19:27.000000000 -0500
15370 ++++ linux-3.1.1/arch/x86/include/asm/io.h 2011-11-16 18:39:07.000000000 -0500
15371 +@@ -194,6 +194,17 @@ extern void set_iounmap_nonlazy(void);
15372
15373 #include <linux/vmalloc.h>
15374
15375 @@ -7550,10 +7517,10 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/io.h linux-3.0.9/arch/x86/include/as
15376 /*
15377 * Convert a virtual cached pointer to an uncached pointer
15378 */
15379 -diff -urNp linux-3.0.9/arch/x86/include/asm/irqflags.h linux-3.0.9/arch/x86/include/asm/irqflags.h
15380 ---- linux-3.0.9/arch/x86/include/asm/irqflags.h 2011-11-11 13:12:24.000000000 -0500
15381 -+++ linux-3.0.9/arch/x86/include/asm/irqflags.h 2011-11-15 20:02:59.000000000 -0500
15382 -@@ -140,6 +140,11 @@ static inline unsigned long arch_local_i
15383 +diff -urNp linux-3.1.1/arch/x86/include/asm/irqflags.h linux-3.1.1/arch/x86/include/asm/irqflags.h
15384 +--- linux-3.1.1/arch/x86/include/asm/irqflags.h 2011-11-11 15:19:27.000000000 -0500
15385 ++++ linux-3.1.1/arch/x86/include/asm/irqflags.h 2011-11-16 18:39:07.000000000 -0500
15386 +@@ -141,6 +141,11 @@ static inline notrace unsigned long arch
15387 sti; \
15388 sysexit
15389
15390 @@ -7565,9 +7532,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/irqflags.h linux-3.0.9/arch/x86/incl
15391 #else
15392 #define INTERRUPT_RETURN iret
15393 #define ENABLE_INTERRUPTS_SYSEXIT sti; sysexit
15394 -diff -urNp linux-3.0.9/arch/x86/include/asm/kprobes.h linux-3.0.9/arch/x86/include/asm/kprobes.h
15395 ---- linux-3.0.9/arch/x86/include/asm/kprobes.h 2011-11-11 13:12:24.000000000 -0500
15396 -+++ linux-3.0.9/arch/x86/include/asm/kprobes.h 2011-11-15 20:02:59.000000000 -0500
15397 +diff -urNp linux-3.1.1/arch/x86/include/asm/kprobes.h linux-3.1.1/arch/x86/include/asm/kprobes.h
15398 +--- linux-3.1.1/arch/x86/include/asm/kprobes.h 2011-11-11 15:19:27.000000000 -0500
15399 ++++ linux-3.1.1/arch/x86/include/asm/kprobes.h 2011-11-16 18:39:07.000000000 -0500
15400 @@ -37,13 +37,8 @@ typedef u8 kprobe_opcode_t;
15401 #define RELATIVEJUMP_SIZE 5
15402 #define RELATIVECALL_OPCODE 0xe8
15403 @@ -7584,19 +7551,19 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/kprobes.h linux-3.0.9/arch/x86/inclu
15404
15405 #define flush_insn_slot(p) do { } while (0)
15406
15407 -diff -urNp linux-3.0.9/arch/x86/include/asm/kvm_host.h linux-3.0.9/arch/x86/include/asm/kvm_host.h
15408 ---- linux-3.0.9/arch/x86/include/asm/kvm_host.h 2011-11-11 13:12:24.000000000 -0500
15409 -+++ linux-3.0.9/arch/x86/include/asm/kvm_host.h 2011-11-15 20:02:59.000000000 -0500
15410 -@@ -441,7 +441,7 @@ struct kvm_arch {
15411 - unsigned int n_used_mmu_pages;
15412 +diff -urNp linux-3.1.1/arch/x86/include/asm/kvm_host.h linux-3.1.1/arch/x86/include/asm/kvm_host.h
15413 +--- linux-3.1.1/arch/x86/include/asm/kvm_host.h 2011-11-11 15:19:27.000000000 -0500
15414 ++++ linux-3.1.1/arch/x86/include/asm/kvm_host.h 2011-11-16 18:39:07.000000000 -0500
15415 +@@ -456,7 +456,7 @@ struct kvm_arch {
15416 unsigned int n_requested_mmu_pages;
15417 unsigned int n_max_mmu_pages;
15418 + unsigned int indirect_shadow_pages;
15419 - atomic_t invlpg_counter;
15420 + atomic_unchecked_t invlpg_counter;
15421 struct hlist_head mmu_page_hash[KVM_NUM_MMU_PAGES];
15422 /*
15423 * Hash table of struct kvm_mmu_page.
15424 -@@ -619,7 +619,7 @@ struct kvm_x86_ops {
15425 +@@ -636,7 +636,7 @@ struct kvm_x86_ops {
15426 enum x86_intercept_stage stage);
15427
15428 const struct trace_print_flags *exit_reasons_str;
15429 @@ -7605,9 +7572,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/kvm_host.h linux-3.0.9/arch/x86/incl
15430
15431 struct kvm_arch_async_pf {
15432 u32 token;
15433 -diff -urNp linux-3.0.9/arch/x86/include/asm/local.h linux-3.0.9/arch/x86/include/asm/local.h
15434 ---- linux-3.0.9/arch/x86/include/asm/local.h 2011-11-11 13:12:24.000000000 -0500
15435 -+++ linux-3.0.9/arch/x86/include/asm/local.h 2011-11-15 20:02:59.000000000 -0500
15436 +diff -urNp linux-3.1.1/arch/x86/include/asm/local.h linux-3.1.1/arch/x86/include/asm/local.h
15437 +--- linux-3.1.1/arch/x86/include/asm/local.h 2011-11-11 15:19:27.000000000 -0500
15438 ++++ linux-3.1.1/arch/x86/include/asm/local.h 2011-11-16 18:39:07.000000000 -0500
15439 @@ -18,26 +18,58 @@ typedef struct {
15440
15441 static inline void local_inc(local_t *l)
15442 @@ -7760,9 +7727,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/local.h linux-3.0.9/arch/x86/include
15443 : "+r" (i), "+m" (l->a.counter)
15444 : : "memory");
15445 return i + __i;
15446 -diff -urNp linux-3.0.9/arch/x86/include/asm/mman.h linux-3.0.9/arch/x86/include/asm/mman.h
15447 ---- linux-3.0.9/arch/x86/include/asm/mman.h 2011-11-11 13:12:24.000000000 -0500
15448 -+++ linux-3.0.9/arch/x86/include/asm/mman.h 2011-11-15 20:02:59.000000000 -0500
15449 +diff -urNp linux-3.1.1/arch/x86/include/asm/mman.h linux-3.1.1/arch/x86/include/asm/mman.h
15450 +--- linux-3.1.1/arch/x86/include/asm/mman.h 2011-11-11 15:19:27.000000000 -0500
15451 ++++ linux-3.1.1/arch/x86/include/asm/mman.h 2011-11-16 18:39:07.000000000 -0500
15452 @@ -5,4 +5,14 @@
15453
15454 #include <asm-generic/mman.h>
15455 @@ -7778,9 +7745,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/mman.h linux-3.0.9/arch/x86/include/
15456 +#endif
15457 +
15458 #endif /* _ASM_X86_MMAN_H */
15459 -diff -urNp linux-3.0.9/arch/x86/include/asm/mmu_context.h linux-3.0.9/arch/x86/include/asm/mmu_context.h
15460 ---- linux-3.0.9/arch/x86/include/asm/mmu_context.h 2011-11-11 13:12:24.000000000 -0500
15461 -+++ linux-3.0.9/arch/x86/include/asm/mmu_context.h 2011-11-15 20:02:59.000000000 -0500
15462 +diff -urNp linux-3.1.1/arch/x86/include/asm/mmu_context.h linux-3.1.1/arch/x86/include/asm/mmu_context.h
15463 +--- linux-3.1.1/arch/x86/include/asm/mmu_context.h 2011-11-11 15:19:27.000000000 -0500
15464 ++++ linux-3.1.1/arch/x86/include/asm/mmu_context.h 2011-11-16 18:39:07.000000000 -0500
15465 @@ -24,6 +24,18 @@ void destroy_context(struct mm_struct *m
15466
15467 static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
15468 @@ -7901,9 +7868,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/mmu_context.h linux-3.0.9/arch/x86/i
15469 }
15470
15471 #define activate_mm(prev, next) \
15472 -diff -urNp linux-3.0.9/arch/x86/include/asm/mmu.h linux-3.0.9/arch/x86/include/asm/mmu.h
15473 ---- linux-3.0.9/arch/x86/include/asm/mmu.h 2011-11-11 13:12:24.000000000 -0500
15474 -+++ linux-3.0.9/arch/x86/include/asm/mmu.h 2011-11-15 20:02:59.000000000 -0500
15475 +diff -urNp linux-3.1.1/arch/x86/include/asm/mmu.h linux-3.1.1/arch/x86/include/asm/mmu.h
15476 +--- linux-3.1.1/arch/x86/include/asm/mmu.h 2011-11-11 15:19:27.000000000 -0500
15477 ++++ linux-3.1.1/arch/x86/include/asm/mmu.h 2011-11-16 18:39:07.000000000 -0500
15478 @@ -9,7 +9,7 @@
15479 * we put the segment information here.
15480 */
15481 @@ -7934,9 +7901,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/mmu.h linux-3.0.9/arch/x86/include/a
15482 } mm_context_t;
15483
15484 #ifdef CONFIG_SMP
15485 -diff -urNp linux-3.0.9/arch/x86/include/asm/module.h linux-3.0.9/arch/x86/include/asm/module.h
15486 ---- linux-3.0.9/arch/x86/include/asm/module.h 2011-11-11 13:12:24.000000000 -0500
15487 -+++ linux-3.0.9/arch/x86/include/asm/module.h 2011-11-15 20:02:59.000000000 -0500
15488 +diff -urNp linux-3.1.1/arch/x86/include/asm/module.h linux-3.1.1/arch/x86/include/asm/module.h
15489 +--- linux-3.1.1/arch/x86/include/asm/module.h 2011-11-11 15:19:27.000000000 -0500
15490 ++++ linux-3.1.1/arch/x86/include/asm/module.h 2011-11-16 18:39:07.000000000 -0500
15491 @@ -5,6 +5,7 @@
15492
15493 #ifdef CONFIG_X86_64
15494 @@ -7966,9 +7933,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/module.h linux-3.0.9/arch/x86/includ
15495 +#define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY MODULE_PAX_KERNEXEC MODULE_PAX_UDEREF
15496 +
15497 #endif /* _ASM_X86_MODULE_H */
15498 -diff -urNp linux-3.0.9/arch/x86/include/asm/page_64_types.h linux-3.0.9/arch/x86/include/asm/page_64_types.h
15499 ---- linux-3.0.9/arch/x86/include/asm/page_64_types.h 2011-11-11 13:12:24.000000000 -0500
15500 -+++ linux-3.0.9/arch/x86/include/asm/page_64_types.h 2011-11-15 20:02:59.000000000 -0500
15501 +diff -urNp linux-3.1.1/arch/x86/include/asm/page_64_types.h linux-3.1.1/arch/x86/include/asm/page_64_types.h
15502 +--- linux-3.1.1/arch/x86/include/asm/page_64_types.h 2011-11-11 15:19:27.000000000 -0500
15503 ++++ linux-3.1.1/arch/x86/include/asm/page_64_types.h 2011-11-16 18:39:07.000000000 -0500
15504 @@ -56,7 +56,7 @@ void copy_page(void *to, void *from);
15505
15506 /* duplicated to the one in bootmem.h */
15507 @@ -7978,10 +7945,10 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/page_64_types.h linux-3.0.9/arch/x86
15508
15509 extern unsigned long __phys_addr(unsigned long);
15510 #define __phys_reloc_hide(x) (x)
15511 -diff -urNp linux-3.0.9/arch/x86/include/asm/paravirt.h linux-3.0.9/arch/x86/include/asm/paravirt.h
15512 ---- linux-3.0.9/arch/x86/include/asm/paravirt.h 2011-11-11 13:12:24.000000000 -0500
15513 -+++ linux-3.0.9/arch/x86/include/asm/paravirt.h 2011-11-15 20:02:59.000000000 -0500
15514 -@@ -658,6 +658,18 @@ static inline void set_pgd(pgd_t *pgdp,
15515 +diff -urNp linux-3.1.1/arch/x86/include/asm/paravirt.h linux-3.1.1/arch/x86/include/asm/paravirt.h
15516 +--- linux-3.1.1/arch/x86/include/asm/paravirt.h 2011-11-11 15:19:27.000000000 -0500
15517 ++++ linux-3.1.1/arch/x86/include/asm/paravirt.h 2011-11-16 18:39:07.000000000 -0500
15518 +@@ -667,6 +667,18 @@ static inline void set_pgd(pgd_t *pgdp,
15519 val);
15520 }
15521
15522 @@ -8000,7 +7967,7 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/paravirt.h linux-3.0.9/arch/x86/incl
15523 static inline void pgd_clear(pgd_t *pgdp)
15524 {
15525 set_pgd(pgdp, __pgd(0));
15526 -@@ -739,6 +751,21 @@ static inline void __set_fixmap(unsigned
15527 +@@ -748,6 +760,21 @@ static inline void __set_fixmap(unsigned
15528 pv_mmu_ops.set_fixmap(idx, phys, flags);
15529 }
15530
15531 @@ -8022,7 +7989,7 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/paravirt.h linux-3.0.9/arch/x86/incl
15532 #if defined(CONFIG_SMP) && defined(CONFIG_PARAVIRT_SPINLOCKS)
15533
15534 static inline int arch_spin_is_locked(struct arch_spinlock *lock)
15535 -@@ -955,7 +982,7 @@ extern void default_banner(void);
15536 +@@ -964,7 +991,7 @@ extern void default_banner(void);
15537
15538 #define PARA_PATCH(struct, off) ((PARAVIRT_PATCH_##struct + (off)) / 4)
15539 #define PARA_SITE(ptype, clobbers, ops) _PVSITE(ptype, clobbers, ops, .long, 4)
15540 @@ -8031,7 +7998,7 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/paravirt.h linux-3.0.9/arch/x86/incl
15541 #endif
15542
15543 #define INTERRUPT_RETURN \
15544 -@@ -1032,6 +1059,21 @@ extern void default_banner(void);
15545 +@@ -1041,6 +1068,21 @@ extern void default_banner(void);
15546 PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_irq_enable_sysexit), \
15547 CLBR_NONE, \
15548 jmp PARA_INDIRECT(pv_cpu_ops+PV_CPU_irq_enable_sysexit))
15549 @@ -8053,10 +8020,10 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/paravirt.h linux-3.0.9/arch/x86/incl
15550 #endif /* CONFIG_X86_32 */
15551
15552 #endif /* __ASSEMBLY__ */
15553 -diff -urNp linux-3.0.9/arch/x86/include/asm/paravirt_types.h linux-3.0.9/arch/x86/include/asm/paravirt_types.h
15554 ---- linux-3.0.9/arch/x86/include/asm/paravirt_types.h 2011-11-11 13:12:24.000000000 -0500
15555 -+++ linux-3.0.9/arch/x86/include/asm/paravirt_types.h 2011-11-15 20:02:59.000000000 -0500
15556 -@@ -78,19 +78,19 @@ struct pv_init_ops {
15557 +diff -urNp linux-3.1.1/arch/x86/include/asm/paravirt_types.h linux-3.1.1/arch/x86/include/asm/paravirt_types.h
15558 +--- linux-3.1.1/arch/x86/include/asm/paravirt_types.h 2011-11-11 15:19:27.000000000 -0500
15559 ++++ linux-3.1.1/arch/x86/include/asm/paravirt_types.h 2011-11-16 18:39:07.000000000 -0500
15560 +@@ -84,20 +84,20 @@ struct pv_init_ops {
15561 */
15562 unsigned (*patch)(u8 type, u16 clobber, void *insnbuf,
15563 unsigned long addr, unsigned len);
15564 @@ -8073,13 +8040,14 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/paravirt_types.h linux-3.0.9/arch/x8
15565
15566 struct pv_time_ops {
15567 unsigned long long (*sched_clock)(void);
15568 + unsigned long long (*steal_clock)(int cpu);
15569 unsigned long (*get_tsc_khz)(void);
15570 -};
15571 +} __no_const;
15572
15573 struct pv_cpu_ops {
15574 /* hooks for various privileged instructions */
15575 -@@ -186,7 +186,7 @@ struct pv_cpu_ops {
15576 +@@ -193,7 +193,7 @@ struct pv_cpu_ops {
15577
15578 void (*start_context_switch)(struct task_struct *prev);
15579 void (*end_context_switch)(struct task_struct *next);
15580 @@ -8088,7 +8056,7 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/paravirt_types.h linux-3.0.9/arch/x8
15581
15582 struct pv_irq_ops {
15583 /*
15584 -@@ -217,7 +217,7 @@ struct pv_apic_ops {
15585 +@@ -224,7 +224,7 @@ struct pv_apic_ops {
15586 unsigned long start_eip,
15587 unsigned long start_esp);
15588 #endif
15589 @@ -8097,7 +8065,7 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/paravirt_types.h linux-3.0.9/arch/x8
15590
15591 struct pv_mmu_ops {
15592 unsigned long (*read_cr2)(void);
15593 -@@ -306,6 +306,7 @@ struct pv_mmu_ops {
15594 +@@ -313,6 +313,7 @@ struct pv_mmu_ops {
15595 struct paravirt_callee_save make_pud;
15596
15597 void (*set_pgd)(pgd_t *pudp, pgd_t pgdval);
15598 @@ -8105,7 +8073,7 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/paravirt_types.h linux-3.0.9/arch/x8
15599 #endif /* PAGETABLE_LEVELS == 4 */
15600 #endif /* PAGETABLE_LEVELS >= 3 */
15601
15602 -@@ -317,6 +318,12 @@ struct pv_mmu_ops {
15603 +@@ -324,6 +325,12 @@ struct pv_mmu_ops {
15604 an mfn. We can tell which is which from the index. */
15605 void (*set_fixmap)(unsigned /* enum fixed_addresses */ idx,
15606 phys_addr_t phys, pgprot_t flags);
15607 @@ -8118,7 +8086,7 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/paravirt_types.h linux-3.0.9/arch/x8
15608 };
15609
15610 struct arch_spinlock;
15611 -@@ -327,7 +334,7 @@ struct pv_lock_ops {
15612 +@@ -334,7 +341,7 @@ struct pv_lock_ops {
15613 void (*spin_lock_flags)(struct arch_spinlock *lock, unsigned long flags);
15614 int (*spin_trylock)(struct arch_spinlock *lock);
15615 void (*spin_unlock)(struct arch_spinlock *lock);
15616 @@ -8127,9 +8095,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/paravirt_types.h linux-3.0.9/arch/x8
15617
15618 /* This contains all the paravirt structures: we get a convenient
15619 * number for each function using the offset which we use to indicate
15620 -diff -urNp linux-3.0.9/arch/x86/include/asm/pgalloc.h linux-3.0.9/arch/x86/include/asm/pgalloc.h
15621 ---- linux-3.0.9/arch/x86/include/asm/pgalloc.h 2011-11-11 13:12:24.000000000 -0500
15622 -+++ linux-3.0.9/arch/x86/include/asm/pgalloc.h 2011-11-15 20:02:59.000000000 -0500
15623 +diff -urNp linux-3.1.1/arch/x86/include/asm/pgalloc.h linux-3.1.1/arch/x86/include/asm/pgalloc.h
15624 +--- linux-3.1.1/arch/x86/include/asm/pgalloc.h 2011-11-11 15:19:27.000000000 -0500
15625 ++++ linux-3.1.1/arch/x86/include/asm/pgalloc.h 2011-11-16 18:39:07.000000000 -0500
15626 @@ -63,6 +63,13 @@ static inline void pmd_populate_kernel(s
15627 pmd_t *pmd, pte_t *pte)
15628 {
15629 @@ -8144,9 +8112,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/pgalloc.h linux-3.0.9/arch/x86/inclu
15630 set_pmd(pmd, __pmd(__pa(pte) | _PAGE_TABLE));
15631 }
15632
15633 -diff -urNp linux-3.0.9/arch/x86/include/asm/pgtable-2level.h linux-3.0.9/arch/x86/include/asm/pgtable-2level.h
15634 ---- linux-3.0.9/arch/x86/include/asm/pgtable-2level.h 2011-11-11 13:12:24.000000000 -0500
15635 -+++ linux-3.0.9/arch/x86/include/asm/pgtable-2level.h 2011-11-15 20:02:59.000000000 -0500
15636 +diff -urNp linux-3.1.1/arch/x86/include/asm/pgtable-2level.h linux-3.1.1/arch/x86/include/asm/pgtable-2level.h
15637 +--- linux-3.1.1/arch/x86/include/asm/pgtable-2level.h 2011-11-11 15:19:27.000000000 -0500
15638 ++++ linux-3.1.1/arch/x86/include/asm/pgtable-2level.h 2011-11-16 18:39:07.000000000 -0500
15639 @@ -18,7 +18,9 @@ static inline void native_set_pte(pte_t
15640
15641 static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
15642 @@ -8157,9 +8125,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/pgtable-2level.h linux-3.0.9/arch/x8
15643 }
15644
15645 static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte)
15646 -diff -urNp linux-3.0.9/arch/x86/include/asm/pgtable_32.h linux-3.0.9/arch/x86/include/asm/pgtable_32.h
15647 ---- linux-3.0.9/arch/x86/include/asm/pgtable_32.h 2011-11-11 13:12:24.000000000 -0500
15648 -+++ linux-3.0.9/arch/x86/include/asm/pgtable_32.h 2011-11-15 20:02:59.000000000 -0500
15649 +diff -urNp linux-3.1.1/arch/x86/include/asm/pgtable_32.h linux-3.1.1/arch/x86/include/asm/pgtable_32.h
15650 +--- linux-3.1.1/arch/x86/include/asm/pgtable_32.h 2011-11-11 15:19:27.000000000 -0500
15651 ++++ linux-3.1.1/arch/x86/include/asm/pgtable_32.h 2011-11-16 18:39:07.000000000 -0500
15652 @@ -25,9 +25,6 @@
15653 struct mm_struct;
15654 struct vm_area_struct;
15655 @@ -8203,9 +8171,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/pgtable_32.h linux-3.0.9/arch/x86/in
15656 /*
15657 * kern_addr_valid() is (1) for FLATMEM and (0) for
15658 * SPARSEMEM and DISCONTIGMEM
15659 -diff -urNp linux-3.0.9/arch/x86/include/asm/pgtable_32_types.h linux-3.0.9/arch/x86/include/asm/pgtable_32_types.h
15660 ---- linux-3.0.9/arch/x86/include/asm/pgtable_32_types.h 2011-11-11 13:12:24.000000000 -0500
15661 -+++ linux-3.0.9/arch/x86/include/asm/pgtable_32_types.h 2011-11-15 20:02:59.000000000 -0500
15662 +diff -urNp linux-3.1.1/arch/x86/include/asm/pgtable_32_types.h linux-3.1.1/arch/x86/include/asm/pgtable_32_types.h
15663 +--- linux-3.1.1/arch/x86/include/asm/pgtable_32_types.h 2011-11-11 15:19:27.000000000 -0500
15664 ++++ linux-3.1.1/arch/x86/include/asm/pgtable_32_types.h 2011-11-16 18:39:07.000000000 -0500
15665 @@ -8,7 +8,7 @@
15666 */
15667 #ifdef CONFIG_X86_PAE
15668 @@ -8235,9 +8203,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/pgtable_32_types.h linux-3.0.9/arch/
15669 #define MODULES_VADDR VMALLOC_START
15670 #define MODULES_END VMALLOC_END
15671 #define MODULES_LEN (MODULES_VADDR - MODULES_END)
15672 -diff -urNp linux-3.0.9/arch/x86/include/asm/pgtable-3level.h linux-3.0.9/arch/x86/include/asm/pgtable-3level.h
15673 ---- linux-3.0.9/arch/x86/include/asm/pgtable-3level.h 2011-11-11 13:12:24.000000000 -0500
15674 -+++ linux-3.0.9/arch/x86/include/asm/pgtable-3level.h 2011-11-15 20:02:59.000000000 -0500
15675 +diff -urNp linux-3.1.1/arch/x86/include/asm/pgtable-3level.h linux-3.1.1/arch/x86/include/asm/pgtable-3level.h
15676 +--- linux-3.1.1/arch/x86/include/asm/pgtable-3level.h 2011-11-11 15:19:27.000000000 -0500
15677 ++++ linux-3.1.1/arch/x86/include/asm/pgtable-3level.h 2011-11-16 18:39:07.000000000 -0500
15678 @@ -38,12 +38,16 @@ static inline void native_set_pte_atomic
15679
15680 static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
15681 @@ -8255,9 +8223,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/pgtable-3level.h linux-3.0.9/arch/x8
15682 }
15683
15684 /*
15685 -diff -urNp linux-3.0.9/arch/x86/include/asm/pgtable_64.h linux-3.0.9/arch/x86/include/asm/pgtable_64.h
15686 ---- linux-3.0.9/arch/x86/include/asm/pgtable_64.h 2011-11-11 13:12:24.000000000 -0500
15687 -+++ linux-3.0.9/arch/x86/include/asm/pgtable_64.h 2011-11-15 20:02:59.000000000 -0500
15688 +diff -urNp linux-3.1.1/arch/x86/include/asm/pgtable_64.h linux-3.1.1/arch/x86/include/asm/pgtable_64.h
15689 +--- linux-3.1.1/arch/x86/include/asm/pgtable_64.h 2011-11-11 15:19:27.000000000 -0500
15690 ++++ linux-3.1.1/arch/x86/include/asm/pgtable_64.h 2011-11-16 18:39:07.000000000 -0500
15691 @@ -16,10 +16,13 @@
15692
15693 extern pud_t level3_kernel_pgt[512];
15694 @@ -8298,9 +8266,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/pgtable_64.h linux-3.0.9/arch/x86/in
15695 *pgdp = pgd;
15696 }
15697
15698 -diff -urNp linux-3.0.9/arch/x86/include/asm/pgtable_64_types.h linux-3.0.9/arch/x86/include/asm/pgtable_64_types.h
15699 ---- linux-3.0.9/arch/x86/include/asm/pgtable_64_types.h 2011-11-11 13:12:24.000000000 -0500
15700 -+++ linux-3.0.9/arch/x86/include/asm/pgtable_64_types.h 2011-11-15 20:02:59.000000000 -0500
15701 +diff -urNp linux-3.1.1/arch/x86/include/asm/pgtable_64_types.h linux-3.1.1/arch/x86/include/asm/pgtable_64_types.h
15702 +--- linux-3.1.1/arch/x86/include/asm/pgtable_64_types.h 2011-11-11 15:19:27.000000000 -0500
15703 ++++ linux-3.1.1/arch/x86/include/asm/pgtable_64_types.h 2011-11-16 18:39:07.000000000 -0500
15704 @@ -59,5 +59,10 @@ typedef struct { pteval_t pte; } pte_t;
15705 #define MODULES_VADDR _AC(0xffffffffa0000000, UL)
15706 #define MODULES_END _AC(0xffffffffff000000, UL)
15707 @@ -8312,9 +8280,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/pgtable_64_types.h linux-3.0.9/arch/
15708 +#define ktva_ktla(addr) (addr)
15709
15710 #endif /* _ASM_X86_PGTABLE_64_DEFS_H */
15711 -diff -urNp linux-3.0.9/arch/x86/include/asm/pgtable.h linux-3.0.9/arch/x86/include/asm/pgtable.h
15712 ---- linux-3.0.9/arch/x86/include/asm/pgtable.h 2011-11-11 13:12:24.000000000 -0500
15713 -+++ linux-3.0.9/arch/x86/include/asm/pgtable.h 2011-11-15 20:02:59.000000000 -0500
15714 +diff -urNp linux-3.1.1/arch/x86/include/asm/pgtable.h linux-3.1.1/arch/x86/include/asm/pgtable.h
15715 +--- linux-3.1.1/arch/x86/include/asm/pgtable.h 2011-11-11 15:19:27.000000000 -0500
15716 ++++ linux-3.1.1/arch/x86/include/asm/pgtable.h 2011-11-16 18:39:07.000000000 -0500
15717 @@ -44,6 +44,7 @@ extern struct mm_struct *pgd_page_get_mm
15718
15719 #ifndef __PAGETABLE_PUD_FOLDED
15720 @@ -8492,9 +8460,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/pgtable.h linux-3.0.9/arch/x86/inclu
15721
15722 #include <asm-generic/pgtable.h>
15723 #endif /* __ASSEMBLY__ */
15724 -diff -urNp linux-3.0.9/arch/x86/include/asm/pgtable_types.h linux-3.0.9/arch/x86/include/asm/pgtable_types.h
15725 ---- linux-3.0.9/arch/x86/include/asm/pgtable_types.h 2011-11-11 13:12:24.000000000 -0500
15726 -+++ linux-3.0.9/arch/x86/include/asm/pgtable_types.h 2011-11-15 20:02:59.000000000 -0500
15727 +diff -urNp linux-3.1.1/arch/x86/include/asm/pgtable_types.h linux-3.1.1/arch/x86/include/asm/pgtable_types.h
15728 +--- linux-3.1.1/arch/x86/include/asm/pgtable_types.h 2011-11-11 15:19:27.000000000 -0500
15729 ++++ linux-3.1.1/arch/x86/include/asm/pgtable_types.h 2011-11-16 18:39:07.000000000 -0500
15730 @@ -16,13 +16,12 @@
15731 #define _PAGE_BIT_PSE 7 /* 4 MB (or 2MB) page */
15732 #define _PAGE_BIT_PAT 7 /* on 4KB pages */
15733 @@ -8542,18 +8510,16 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/pgtable_types.h linux-3.0.9/arch/x86
15734 #define __PAGE_KERNEL_EXEC \
15735 (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
15736 #define __PAGE_KERNEL (__PAGE_KERNEL_EXEC | _PAGE_NX)
15737 -@@ -106,8 +109,8 @@
15738 +@@ -106,7 +109,7 @@
15739 #define __PAGE_KERNEL_WC (__PAGE_KERNEL | _PAGE_CACHE_WC)
15740 #define __PAGE_KERNEL_NOCACHE (__PAGE_KERNEL | _PAGE_PCD | _PAGE_PWT)
15741 #define __PAGE_KERNEL_UC_MINUS (__PAGE_KERNEL | _PAGE_PCD)
15742 -#define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RX | _PAGE_USER)
15743 --#define __PAGE_KERNEL_VSYSCALL_NOCACHE (__PAGE_KERNEL_VSYSCALL | _PAGE_PCD | _PAGE_PWT)
15744 +#define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RO | _PAGE_USER)
15745 -+#define __PAGE_KERNEL_VSYSCALL_NOCACHE (__PAGE_KERNEL_RO | _PAGE_PCD | _PAGE_PWT | _PAGE_USER)
15746 + #define __PAGE_KERNEL_VVAR (__PAGE_KERNEL_RO | _PAGE_USER)
15747 + #define __PAGE_KERNEL_VVAR_NOCACHE (__PAGE_KERNEL_VVAR | _PAGE_PCD | _PAGE_PWT)
15748 #define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE)
15749 - #define __PAGE_KERNEL_LARGE_NOCACHE (__PAGE_KERNEL | _PAGE_CACHE_UC | _PAGE_PSE)
15750 - #define __PAGE_KERNEL_LARGE_EXEC (__PAGE_KERNEL_EXEC | _PAGE_PSE)
15751 -@@ -166,8 +169,8 @@
15752 +@@ -168,8 +171,8 @@
15753 * bits are combined, this will alow user to access the high address mapped
15754 * VDSO in the presence of CONFIG_COMPAT_VDSO
15755 */
15756 @@ -8564,7 +8530,7 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/pgtable_types.h linux-3.0.9/arch/x86
15757 #define PGD_IDENT_ATTR 0x001 /* PRESENT (no other attributes) */
15758 #endif
15759
15760 -@@ -205,7 +208,17 @@ static inline pgdval_t pgd_flags(pgd_t p
15761 +@@ -207,7 +210,17 @@ static inline pgdval_t pgd_flags(pgd_t p
15762 {
15763 return native_pgd_val(pgd) & PTE_FLAGS_MASK;
15764 }
15765 @@ -8582,7 +8548,7 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/pgtable_types.h linux-3.0.9/arch/x86
15766 #if PAGETABLE_LEVELS > 3
15767 typedef struct { pudval_t pud; } pud_t;
15768
15769 -@@ -219,8 +232,6 @@ static inline pudval_t native_pud_val(pu
15770 +@@ -221,8 +234,6 @@ static inline pudval_t native_pud_val(pu
15771 return pud.pud;
15772 }
15773 #else
15774 @@ -8591,7 +8557,7 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/pgtable_types.h linux-3.0.9/arch/x86
15775 static inline pudval_t native_pud_val(pud_t pud)
15776 {
15777 return native_pgd_val(pud.pgd);
15778 -@@ -240,8 +251,6 @@ static inline pmdval_t native_pmd_val(pm
15779 +@@ -242,8 +253,6 @@ static inline pmdval_t native_pmd_val(pm
15780 return pmd.pmd;
15781 }
15782 #else
15783 @@ -8600,7 +8566,7 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/pgtable_types.h linux-3.0.9/arch/x86
15784 static inline pmdval_t native_pmd_val(pmd_t pmd)
15785 {
15786 return native_pgd_val(pmd.pud.pgd);
15787 -@@ -281,7 +290,6 @@ typedef struct page *pgtable_t;
15788 +@@ -283,7 +292,6 @@ typedef struct page *pgtable_t;
15789
15790 extern pteval_t __supported_pte_mask;
15791 extern void set_nx(void);
15792 @@ -8608,9 +8574,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/pgtable_types.h linux-3.0.9/arch/x86
15793
15794 #define pgprot_writecombine pgprot_writecombine
15795 extern pgprot_t pgprot_writecombine(pgprot_t prot);
15796 -diff -urNp linux-3.0.9/arch/x86/include/asm/processor.h linux-3.0.9/arch/x86/include/asm/processor.h
15797 ---- linux-3.0.9/arch/x86/include/asm/processor.h 2011-11-11 13:12:24.000000000 -0500
15798 -+++ linux-3.0.9/arch/x86/include/asm/processor.h 2011-11-15 20:02:59.000000000 -0500
15799 +diff -urNp linux-3.1.1/arch/x86/include/asm/processor.h linux-3.1.1/arch/x86/include/asm/processor.h
15800 +--- linux-3.1.1/arch/x86/include/asm/processor.h 2011-11-11 15:19:27.000000000 -0500
15801 ++++ linux-3.1.1/arch/x86/include/asm/processor.h 2011-11-16 18:39:07.000000000 -0500
15802 @@ -266,7 +266,7 @@ struct tss_struct {
15803
15804 } ____cacheline_aligned;
15805 @@ -8620,7 +8586,7 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/processor.h linux-3.0.9/arch/x86/inc
15806
15807 /*
15808 * Save the original ist values for checking stack pointers during debugging
15809 -@@ -860,11 +860,18 @@ static inline void spin_lock_prefetch(co
15810 +@@ -858,11 +858,18 @@ static inline void spin_lock_prefetch(co
15811 */
15812 #define TASK_SIZE PAGE_OFFSET
15813 #define TASK_SIZE_MAX TASK_SIZE
15814 @@ -8641,7 +8607,7 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/processor.h linux-3.0.9/arch/x86/inc
15815 .vm86_info = NULL, \
15816 .sysenter_cs = __KERNEL_CS, \
15817 .io_bitmap_ptr = NULL, \
15818 -@@ -878,7 +885,7 @@ static inline void spin_lock_prefetch(co
15819 +@@ -876,7 +883,7 @@ static inline void spin_lock_prefetch(co
15820 */
15821 #define INIT_TSS { \
15822 .x86_tss = { \
15823 @@ -8650,7 +8616,7 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/processor.h linux-3.0.9/arch/x86/inc
15824 .ss0 = __KERNEL_DS, \
15825 .ss1 = __KERNEL_CS, \
15826 .io_bitmap_base = INVALID_IO_BITMAP_OFFSET, \
15827 -@@ -889,11 +896,7 @@ static inline void spin_lock_prefetch(co
15828 +@@ -887,11 +894,7 @@ static inline void spin_lock_prefetch(co
15829 extern unsigned long thread_saved_pc(struct task_struct *tsk);
15830
15831 #define THREAD_SIZE_LONGS (THREAD_SIZE/sizeof(unsigned long))
15832 @@ -8663,7 +8629,7 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/processor.h linux-3.0.9/arch/x86/inc
15833
15834 /*
15835 * The below -8 is to reserve 8 bytes on top of the ring0 stack.
15836 -@@ -908,7 +911,7 @@ extern unsigned long thread_saved_pc(str
15837 +@@ -906,7 +909,7 @@ extern unsigned long thread_saved_pc(str
15838 #define task_pt_regs(task) \
15839 ({ \
15840 struct pt_regs *__regs__; \
15841 @@ -8672,7 +8638,7 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/processor.h linux-3.0.9/arch/x86/inc
15842 __regs__ - 1; \
15843 })
15844
15845 -@@ -918,13 +921,13 @@ extern unsigned long thread_saved_pc(str
15846 +@@ -916,13 +919,13 @@ extern unsigned long thread_saved_pc(str
15847 /*
15848 * User space process size. 47bits minus one guard page.
15849 */
15850 @@ -8688,7 +8654,7 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/processor.h linux-3.0.9/arch/x86/inc
15851
15852 #define TASK_SIZE (test_thread_flag(TIF_IA32) ? \
15853 IA32_PAGE_OFFSET : TASK_SIZE_MAX)
15854 -@@ -935,11 +938,11 @@ extern unsigned long thread_saved_pc(str
15855 +@@ -933,11 +936,11 @@ extern unsigned long thread_saved_pc(str
15856 #define STACK_TOP_MAX TASK_SIZE_MAX
15857
15858 #define INIT_THREAD { \
15859 @@ -8702,7 +8668,7 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/processor.h linux-3.0.9/arch/x86/inc
15860 }
15861
15862 /*
15863 -@@ -961,6 +964,10 @@ extern void start_thread(struct pt_regs
15864 +@@ -959,6 +962,10 @@ extern void start_thread(struct pt_regs
15865 */
15866 #define TASK_UNMAPPED_BASE (PAGE_ALIGN(TASK_SIZE / 3))
15867
15868 @@ -8713,10 +8679,10 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/processor.h linux-3.0.9/arch/x86/inc
15869 #define KSTK_EIP(task) (task_pt_regs(task)->ip)
15870
15871 /* Get/set a process' ability to use the timestamp counter instruction */
15872 -diff -urNp linux-3.0.9/arch/x86/include/asm/ptrace.h linux-3.0.9/arch/x86/include/asm/ptrace.h
15873 ---- linux-3.0.9/arch/x86/include/asm/ptrace.h 2011-11-11 13:12:24.000000000 -0500
15874 -+++ linux-3.0.9/arch/x86/include/asm/ptrace.h 2011-11-15 20:02:59.000000000 -0500
15875 -@@ -153,28 +153,29 @@ static inline unsigned long regs_return_
15876 +diff -urNp linux-3.1.1/arch/x86/include/asm/ptrace.h linux-3.1.1/arch/x86/include/asm/ptrace.h
15877 +--- linux-3.1.1/arch/x86/include/asm/ptrace.h 2011-11-11 15:19:27.000000000 -0500
15878 ++++ linux-3.1.1/arch/x86/include/asm/ptrace.h 2011-11-16 18:39:07.000000000 -0500
15879 +@@ -156,28 +156,29 @@ static inline unsigned long regs_return_
15880 }
15881
15882 /*
15883 @@ -8752,9 +8718,28 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/ptrace.h linux-3.0.9/arch/x86/includ
15884 #endif
15885 }
15886
15887 -diff -urNp linux-3.0.9/arch/x86/include/asm/reboot.h linux-3.0.9/arch/x86/include/asm/reboot.h
15888 ---- linux-3.0.9/arch/x86/include/asm/reboot.h 2011-11-11 13:12:24.000000000 -0500
15889 -+++ linux-3.0.9/arch/x86/include/asm/reboot.h 2011-11-15 20:02:59.000000000 -0500
15890 +@@ -193,15 +194,16 @@ static inline int v8086_mode(struct pt_r
15891 + #ifdef CONFIG_X86_64
15892 + static inline bool user_64bit_mode(struct pt_regs *regs)
15893 + {
15894 ++ unsigned long cs = regs->cs & 0xffff;
15895 + #ifndef CONFIG_PARAVIRT
15896 + /*
15897 + * On non-paravirt systems, this is the only long mode CPL 3
15898 + * selector. We do not allow long mode selectors in the LDT.
15899 + */
15900 +- return regs->cs == __USER_CS;
15901 ++ return cs == __USER_CS;
15902 + #else
15903 + /* Headers are too twisted for this to go in paravirt.h. */
15904 +- return regs->cs == __USER_CS || regs->cs == pv_info.extra_user_64bit_cs;
15905 ++ return cs == __USER_CS || cs == pv_info.extra_user_64bit_cs;
15906 + #endif
15907 + }
15908 + #endif
15909 +diff -urNp linux-3.1.1/arch/x86/include/asm/reboot.h linux-3.1.1/arch/x86/include/asm/reboot.h
15910 +--- linux-3.1.1/arch/x86/include/asm/reboot.h 2011-11-11 15:19:27.000000000 -0500
15911 ++++ linux-3.1.1/arch/x86/include/asm/reboot.h 2011-11-16 18:39:07.000000000 -0500
15912 @@ -6,19 +6,19 @@
15913 struct pt_regs;
15914
15915 @@ -8781,9 +8766,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/reboot.h linux-3.0.9/arch/x86/includ
15916 /* These must match dispatch_table in reboot_32.S */
15917 #define MRR_BIOS 0
15918 #define MRR_APM 1
15919 -diff -urNp linux-3.0.9/arch/x86/include/asm/rwsem.h linux-3.0.9/arch/x86/include/asm/rwsem.h
15920 ---- linux-3.0.9/arch/x86/include/asm/rwsem.h 2011-11-11 13:12:24.000000000 -0500
15921 -+++ linux-3.0.9/arch/x86/include/asm/rwsem.h 2011-11-15 20:02:59.000000000 -0500
15922 +diff -urNp linux-3.1.1/arch/x86/include/asm/rwsem.h linux-3.1.1/arch/x86/include/asm/rwsem.h
15923 +--- linux-3.1.1/arch/x86/include/asm/rwsem.h 2011-11-11 15:19:27.000000000 -0500
15924 ++++ linux-3.1.1/arch/x86/include/asm/rwsem.h 2011-11-16 18:39:07.000000000 -0500
15925 @@ -64,6 +64,14 @@ static inline void __down_read(struct rw
15926 {
15927 asm volatile("# beginning down_read\n\t"
15928 @@ -8908,9 +8893,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/rwsem.h linux-3.0.9/arch/x86/include
15929 : "+r" (tmp), "+m" (sem->count)
15930 : : "memory");
15931
15932 -diff -urNp linux-3.0.9/arch/x86/include/asm/segment.h linux-3.0.9/arch/x86/include/asm/segment.h
15933 ---- linux-3.0.9/arch/x86/include/asm/segment.h 2011-11-11 13:12:24.000000000 -0500
15934 -+++ linux-3.0.9/arch/x86/include/asm/segment.h 2011-11-15 20:02:59.000000000 -0500
15935 +diff -urNp linux-3.1.1/arch/x86/include/asm/segment.h linux-3.1.1/arch/x86/include/asm/segment.h
15936 +--- linux-3.1.1/arch/x86/include/asm/segment.h 2011-11-11 15:19:27.000000000 -0500
15937 ++++ linux-3.1.1/arch/x86/include/asm/segment.h 2011-11-16 18:39:07.000000000 -0500
15938 @@ -64,10 +64,15 @@
15939 * 26 - ESPFIX small SS
15940 * 27 - per-cpu [ offset to per-cpu data area ]
15941 @@ -8961,7 +8946,7 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/segment.h linux-3.0.9/arch/x86/inclu
15942
15943 #else
15944 @@ -165,6 +178,8 @@
15945 - #define __USER32_CS (GDT_ENTRY_DEFAULT_USER32_CS * 8 + 3)
15946 + #define __USER32_CS (GDT_ENTRY_DEFAULT_USER32_CS*8+3)
15947 #define __USER32_DS __USER_DS
15948
15949 +#define GDT_ENTRY_KERNEXEC_KERNEL_CS 7
15950 @@ -8977,9 +8962,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/segment.h linux-3.0.9/arch/x86/inclu
15951 #define __KERNEL_DS (GDT_ENTRY_KERNEL_DS*8)
15952 #define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS*8+3)
15953 #define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS*8+3)
15954 -diff -urNp linux-3.0.9/arch/x86/include/asm/smp.h linux-3.0.9/arch/x86/include/asm/smp.h
15955 ---- linux-3.0.9/arch/x86/include/asm/smp.h 2011-11-11 13:12:24.000000000 -0500
15956 -+++ linux-3.0.9/arch/x86/include/asm/smp.h 2011-11-15 20:02:59.000000000 -0500
15957 +diff -urNp linux-3.1.1/arch/x86/include/asm/smp.h linux-3.1.1/arch/x86/include/asm/smp.h
15958 +--- linux-3.1.1/arch/x86/include/asm/smp.h 2011-11-11 15:19:27.000000000 -0500
15959 ++++ linux-3.1.1/arch/x86/include/asm/smp.h 2011-11-16 18:39:07.000000000 -0500
15960 @@ -36,7 +36,7 @@ DECLARE_PER_CPU(cpumask_var_t, cpu_core_
15961 /* cpus sharing the last level cache: */
15962 DECLARE_PER_CPU(cpumask_var_t, cpu_llc_shared_map);
15963 @@ -9015,17 +9000,17 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/smp.h linux-3.0.9/arch/x86/include/a
15964 #define safe_smp_processor_id() smp_processor_id()
15965
15966 #endif
15967 -diff -urNp linux-3.0.9/arch/x86/include/asm/spinlock.h linux-3.0.9/arch/x86/include/asm/spinlock.h
15968 ---- linux-3.0.9/arch/x86/include/asm/spinlock.h 2011-11-11 13:12:24.000000000 -0500
15969 -+++ linux-3.0.9/arch/x86/include/asm/spinlock.h 2011-11-15 20:02:59.000000000 -0500
15970 -@@ -249,6 +249,14 @@ static inline int arch_write_can_lock(ar
15971 +diff -urNp linux-3.1.1/arch/x86/include/asm/spinlock.h linux-3.1.1/arch/x86/include/asm/spinlock.h
15972 +--- linux-3.1.1/arch/x86/include/asm/spinlock.h 2011-11-11 15:19:27.000000000 -0500
15973 ++++ linux-3.1.1/arch/x86/include/asm/spinlock.h 2011-11-16 18:39:07.000000000 -0500
15974 +@@ -248,6 +248,14 @@ static inline int arch_write_can_lock(ar
15975 static inline void arch_read_lock(arch_rwlock_t *rw)
15976 {
15977 - asm volatile(LOCK_PREFIX " subl $1,(%0)\n\t"
15978 + asm volatile(LOCK_PREFIX READ_LOCK_SIZE(dec) " (%0)\n\t"
15979 +
15980 +#ifdef CONFIG_PAX_REFCOUNT
15981 + "jno 0f\n"
15982 -+ LOCK_PREFIX " addl $1,(%0)\n"
15983 ++ LOCK_PREFIX READ_LOCK_SIZE(inc) " (%0)\n"
15984 + "int $4\n0:\n"
15985 + _ASM_EXTABLE(0b, 0b)
15986 +#endif
15987 @@ -9033,14 +9018,14 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/spinlock.h linux-3.0.9/arch/x86/incl
15988 "jns 1f\n"
15989 "call __read_lock_failed\n\t"
15990 "1:\n"
15991 -@@ -258,6 +266,14 @@ static inline void arch_read_lock(arch_r
15992 +@@ -257,6 +265,14 @@ static inline void arch_read_lock(arch_r
15993 static inline void arch_write_lock(arch_rwlock_t *rw)
15994 {
15995 - asm volatile(LOCK_PREFIX " subl %1,(%0)\n\t"
15996 + asm volatile(LOCK_PREFIX WRITE_LOCK_SUB(%1) "(%0)\n\t"
15997 +
15998 +#ifdef CONFIG_PAX_REFCOUNT
15999 + "jno 0f\n"
16000 -+ LOCK_PREFIX " addl %1,(%0)\n"
16001 ++ LOCK_PREFIX WRITE_LOCK_ADD(%1) "(%0)\n"
16002 + "int $4\n0:\n"
16003 + _ASM_EXTABLE(0b, 0b)
16004 +#endif
16005 @@ -9048,41 +9033,41 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/spinlock.h linux-3.0.9/arch/x86/incl
16006 "jz 1f\n"
16007 "call __write_lock_failed\n\t"
16008 "1:\n"
16009 -@@ -286,12 +302,29 @@ static inline int arch_write_trylock(arc
16010 +@@ -286,13 +302,29 @@ static inline int arch_write_trylock(arc
16011
16012 static inline void arch_read_unlock(arch_rwlock_t *rw)
16013 {
16014 -- asm volatile(LOCK_PREFIX "incl %0" :"+m" (rw->lock) : : "memory");
16015 -+ asm volatile(LOCK_PREFIX "incl %0\n"
16016 +- asm volatile(LOCK_PREFIX READ_LOCK_SIZE(inc) " %0"
16017 ++ asm volatile(LOCK_PREFIX READ_LOCK_SIZE(inc) " %0\n"
16018 +
16019 +#ifdef CONFIG_PAX_REFCOUNT
16020 + "jno 0f\n"
16021 -+ LOCK_PREFIX "decl %0\n"
16022 ++ LOCK_PREFIX READ_LOCK_SIZE(dec) " %0\n"
16023 + "int $4\n0:\n"
16024 + _ASM_EXTABLE(0b, 0b)
16025 +#endif
16026 +
16027 -+ :"+m" (rw->lock) : : "memory");
16028 + :"+m" (rw->lock) : : "memory");
16029 }
16030
16031 static inline void arch_write_unlock(arch_rwlock_t *rw)
16032 {
16033 -- asm volatile(LOCK_PREFIX "addl %1, %0"
16034 -+ asm volatile(LOCK_PREFIX "addl %1, %0\n"
16035 +- asm volatile(LOCK_PREFIX WRITE_LOCK_ADD(%1) "%0"
16036 ++ asm volatile(LOCK_PREFIX WRITE_LOCK_ADD(%1) "%0\n"
16037 +
16038 +#ifdef CONFIG_PAX_REFCOUNT
16039 + "jno 0f\n"
16040 -+ LOCK_PREFIX "subl %1, %0\n"
16041 ++ LOCK_PREFIX WRITE_LOCK_SUB(%1) "%0\n"
16042 + "int $4\n0:\n"
16043 + _ASM_EXTABLE(0b, 0b)
16044 +#endif
16045 +
16046 - : "+m" (rw->lock) : "i" (RW_LOCK_BIAS) : "memory");
16047 + : "+m" (rw->write) : "i" (RW_LOCK_BIAS) : "memory");
16048 }
16049
16050 -diff -urNp linux-3.0.9/arch/x86/include/asm/stackprotector.h linux-3.0.9/arch/x86/include/asm/stackprotector.h
16051 ---- linux-3.0.9/arch/x86/include/asm/stackprotector.h 2011-11-11 13:12:24.000000000 -0500
16052 -+++ linux-3.0.9/arch/x86/include/asm/stackprotector.h 2011-11-15 20:02:59.000000000 -0500
16053 +diff -urNp linux-3.1.1/arch/x86/include/asm/stackprotector.h linux-3.1.1/arch/x86/include/asm/stackprotector.h
16054 +--- linux-3.1.1/arch/x86/include/asm/stackprotector.h 2011-11-11 15:19:27.000000000 -0500
16055 ++++ linux-3.1.1/arch/x86/include/asm/stackprotector.h 2011-11-16 18:39:07.000000000 -0500
16056 @@ -48,7 +48,7 @@
16057 * head_32 for boot CPU and setup_per_cpu_areas() for others.
16058 */
16059 @@ -9101,9 +9086,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/stackprotector.h linux-3.0.9/arch/x8
16060 asm volatile ("mov %0, %%gs" : : "r" (0));
16061 #endif
16062 }
16063 -diff -urNp linux-3.0.9/arch/x86/include/asm/stacktrace.h linux-3.0.9/arch/x86/include/asm/stacktrace.h
16064 ---- linux-3.0.9/arch/x86/include/asm/stacktrace.h 2011-11-11 13:12:24.000000000 -0500
16065 -+++ linux-3.0.9/arch/x86/include/asm/stacktrace.h 2011-11-15 20:02:59.000000000 -0500
16066 +diff -urNp linux-3.1.1/arch/x86/include/asm/stacktrace.h linux-3.1.1/arch/x86/include/asm/stacktrace.h
16067 +--- linux-3.1.1/arch/x86/include/asm/stacktrace.h 2011-11-11 15:19:27.000000000 -0500
16068 ++++ linux-3.1.1/arch/x86/include/asm/stacktrace.h 2011-11-16 18:39:07.000000000 -0500
16069 @@ -11,28 +11,20 @@
16070
16071 extern int kstack_depth_to_print;
16072 @@ -9154,9 +9139,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/stacktrace.h linux-3.0.9/arch/x86/in
16073 };
16074
16075 void dump_trace(struct task_struct *tsk, struct pt_regs *regs,
16076 -diff -urNp linux-3.0.9/arch/x86/include/asm/sys_ia32.h linux-3.0.9/arch/x86/include/asm/sys_ia32.h
16077 ---- linux-3.0.9/arch/x86/include/asm/sys_ia32.h 2011-11-11 13:12:24.000000000 -0500
16078 -+++ linux-3.0.9/arch/x86/include/asm/sys_ia32.h 2011-11-15 20:02:59.000000000 -0500
16079 +diff -urNp linux-3.1.1/arch/x86/include/asm/sys_ia32.h linux-3.1.1/arch/x86/include/asm/sys_ia32.h
16080 +--- linux-3.1.1/arch/x86/include/asm/sys_ia32.h 2011-11-11 15:19:27.000000000 -0500
16081 ++++ linux-3.1.1/arch/x86/include/asm/sys_ia32.h 2011-11-16 18:39:07.000000000 -0500
16082 @@ -40,7 +40,7 @@ asmlinkage long sys32_rt_sigprocmask(int
16083 compat_sigset_t __user *, unsigned int);
16084 asmlinkage long sys32_alarm(unsigned int);
16085 @@ -9166,9 +9151,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/sys_ia32.h linux-3.0.9/arch/x86/incl
16086 asmlinkage long sys32_sysfs(int, u32, u32);
16087
16088 asmlinkage long sys32_sched_rr_get_interval(compat_pid_t,
16089 -diff -urNp linux-3.0.9/arch/x86/include/asm/system.h linux-3.0.9/arch/x86/include/asm/system.h
16090 ---- linux-3.0.9/arch/x86/include/asm/system.h 2011-11-11 13:12:24.000000000 -0500
16091 -+++ linux-3.0.9/arch/x86/include/asm/system.h 2011-11-15 20:02:59.000000000 -0500
16092 +diff -urNp linux-3.1.1/arch/x86/include/asm/system.h linux-3.1.1/arch/x86/include/asm/system.h
16093 +--- linux-3.1.1/arch/x86/include/asm/system.h 2011-11-11 15:19:27.000000000 -0500
16094 ++++ linux-3.1.1/arch/x86/include/asm/system.h 2011-11-16 18:39:07.000000000 -0500
16095 @@ -129,7 +129,7 @@ do { \
16096 "call __switch_to\n\t" \
16097 "movq "__percpu_arg([current_task])",%%rsi\n\t" \
16098 @@ -9211,9 +9196,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/system.h linux-3.0.9/arch/x86/includ
16099
16100 /*
16101 * Force strict CPU ordering.
16102 -diff -urNp linux-3.0.9/arch/x86/include/asm/thread_info.h linux-3.0.9/arch/x86/include/asm/thread_info.h
16103 ---- linux-3.0.9/arch/x86/include/asm/thread_info.h 2011-11-11 13:12:24.000000000 -0500
16104 -+++ linux-3.0.9/arch/x86/include/asm/thread_info.h 2011-11-15 20:02:59.000000000 -0500
16105 +diff -urNp linux-3.1.1/arch/x86/include/asm/thread_info.h linux-3.1.1/arch/x86/include/asm/thread_info.h
16106 +--- linux-3.1.1/arch/x86/include/asm/thread_info.h 2011-11-11 15:19:27.000000000 -0500
16107 ++++ linux-3.1.1/arch/x86/include/asm/thread_info.h 2011-11-16 18:39:07.000000000 -0500
16108 @@ -10,6 +10,7 @@
16109 #include <linux/compiler.h>
16110 #include <asm/page.h>
16111 @@ -9223,7 +9208,7 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/thread_info.h linux-3.0.9/arch/x86/i
16112 /*
16113 * low level task data that entry.S needs immediate access to
16114 @@ -24,7 +25,6 @@ struct exec_domain;
16115 - #include <asm/atomic.h>
16116 + #include <linux/atomic.h>
16117
16118 struct thread_info {
16119 - struct task_struct *task; /* main task structure */
16120 @@ -9361,9 +9346,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/thread_info.h linux-3.0.9/arch/x86/i
16121 +
16122 #endif
16123 #endif /* _ASM_X86_THREAD_INFO_H */
16124 -diff -urNp linux-3.0.9/arch/x86/include/asm/uaccess_32.h linux-3.0.9/arch/x86/include/asm/uaccess_32.h
16125 ---- linux-3.0.9/arch/x86/include/asm/uaccess_32.h 2011-11-11 13:12:24.000000000 -0500
16126 -+++ linux-3.0.9/arch/x86/include/asm/uaccess_32.h 2011-11-15 20:02:59.000000000 -0500
16127 +diff -urNp linux-3.1.1/arch/x86/include/asm/uaccess_32.h linux-3.1.1/arch/x86/include/asm/uaccess_32.h
16128 +--- linux-3.1.1/arch/x86/include/asm/uaccess_32.h 2011-11-11 15:19:27.000000000 -0500
16129 ++++ linux-3.1.1/arch/x86/include/asm/uaccess_32.h 2011-11-16 18:40:08.000000000 -0500
16130 @@ -43,6 +43,11 @@ unsigned long __must_check __copy_from_u
16131 static __always_inline unsigned long __must_check
16132 __copy_to_user_inatomic(void __user *to, const void *from, unsigned long n)
16133 @@ -9531,9 +9516,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/uaccess_32.h linux-3.0.9/arch/x86/in
16134 return n;
16135 }
16136
16137 -diff -urNp linux-3.0.9/arch/x86/include/asm/uaccess_64.h linux-3.0.9/arch/x86/include/asm/uaccess_64.h
16138 ---- linux-3.0.9/arch/x86/include/asm/uaccess_64.h 2011-11-11 13:12:24.000000000 -0500
16139 -+++ linux-3.0.9/arch/x86/include/asm/uaccess_64.h 2011-11-15 20:02:59.000000000 -0500
16140 +diff -urNp linux-3.1.1/arch/x86/include/asm/uaccess_64.h linux-3.1.1/arch/x86/include/asm/uaccess_64.h
16141 +--- linux-3.1.1/arch/x86/include/asm/uaccess_64.h 2011-11-11 15:19:27.000000000 -0500
16142 ++++ linux-3.1.1/arch/x86/include/asm/uaccess_64.h 2011-11-16 18:40:08.000000000 -0500
16143 @@ -10,6 +10,9 @@
16144 #include <asm/alternative.h>
16145 #include <asm/cpufeature.h>
16146 @@ -9945,9 +9930,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/uaccess_64.h linux-3.0.9/arch/x86/in
16147 +copy_user_handle_tail(char __user *to, char __user *from, unsigned len, unsigned zerorest);
16148
16149 #endif /* _ASM_X86_UACCESS_64_H */
16150 -diff -urNp linux-3.0.9/arch/x86/include/asm/uaccess.h linux-3.0.9/arch/x86/include/asm/uaccess.h
16151 ---- linux-3.0.9/arch/x86/include/asm/uaccess.h 2011-11-11 13:12:24.000000000 -0500
16152 -+++ linux-3.0.9/arch/x86/include/asm/uaccess.h 2011-11-15 20:02:59.000000000 -0500
16153 +diff -urNp linux-3.1.1/arch/x86/include/asm/uaccess.h linux-3.1.1/arch/x86/include/asm/uaccess.h
16154 +--- linux-3.1.1/arch/x86/include/asm/uaccess.h 2011-11-11 15:19:27.000000000 -0500
16155 ++++ linux-3.1.1/arch/x86/include/asm/uaccess.h 2011-11-16 18:39:07.000000000 -0500
16156 @@ -7,12 +7,15 @@
16157 #include <linux/compiler.h>
16158 #include <linux/thread_info.h>
16159 @@ -10167,9 +10152,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/uaccess.h linux-3.0.9/arch/x86/inclu
16160 } while (0)
16161
16162 #ifdef CONFIG_X86_WP_WORKS_OK
16163 -diff -urNp linux-3.0.9/arch/x86/include/asm/vdso.h linux-3.0.9/arch/x86/include/asm/vdso.h
16164 ---- linux-3.0.9/arch/x86/include/asm/vdso.h 2011-11-11 13:12:24.000000000 -0500
16165 -+++ linux-3.0.9/arch/x86/include/asm/vdso.h 2011-11-15 20:02:59.000000000 -0500
16166 +diff -urNp linux-3.1.1/arch/x86/include/asm/vdso.h linux-3.1.1/arch/x86/include/asm/vdso.h
16167 +--- linux-3.1.1/arch/x86/include/asm/vdso.h 2011-11-11 15:19:27.000000000 -0500
16168 ++++ linux-3.1.1/arch/x86/include/asm/vdso.h 2011-11-16 18:39:07.000000000 -0500
16169 @@ -11,7 +11,7 @@ extern const char VDSO32_PRELINK[];
16170 #define VDSO32_SYMBOL(base, name) \
16171 ({ \
16172 @@ -10179,9 +10164,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/vdso.h linux-3.0.9/arch/x86/include/
16173 })
16174 #endif
16175
16176 -diff -urNp linux-3.0.9/arch/x86/include/asm/x86_init.h linux-3.0.9/arch/x86/include/asm/x86_init.h
16177 ---- linux-3.0.9/arch/x86/include/asm/x86_init.h 2011-11-11 13:12:24.000000000 -0500
16178 -+++ linux-3.0.9/arch/x86/include/asm/x86_init.h 2011-11-15 20:02:59.000000000 -0500
16179 +diff -urNp linux-3.1.1/arch/x86/include/asm/x86_init.h linux-3.1.1/arch/x86/include/asm/x86_init.h
16180 +--- linux-3.1.1/arch/x86/include/asm/x86_init.h 2011-11-11 15:19:27.000000000 -0500
16181 ++++ linux-3.1.1/arch/x86/include/asm/x86_init.h 2011-11-16 18:39:07.000000000 -0500
16182 @@ -28,7 +28,7 @@ struct x86_init_mpparse {
16183 void (*mpc_oem_bus_info)(struct mpc_bus *m, char *name);
16184 void (*find_smp_config)(void);
16185 @@ -10299,9 +10284,9 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/x86_init.h linux-3.0.9/arch/x86/incl
16186
16187 extern struct x86_init_ops x86_init;
16188 extern struct x86_cpuinit_ops x86_cpuinit;
16189 -diff -urNp linux-3.0.9/arch/x86/include/asm/xsave.h linux-3.0.9/arch/x86/include/asm/xsave.h
16190 ---- linux-3.0.9/arch/x86/include/asm/xsave.h 2011-11-11 13:12:24.000000000 -0500
16191 -+++ linux-3.0.9/arch/x86/include/asm/xsave.h 2011-11-15 20:02:59.000000000 -0500
16192 +diff -urNp linux-3.1.1/arch/x86/include/asm/xsave.h linux-3.1.1/arch/x86/include/asm/xsave.h
16193 +--- linux-3.1.1/arch/x86/include/asm/xsave.h 2011-11-11 15:19:27.000000000 -0500
16194 ++++ linux-3.1.1/arch/x86/include/asm/xsave.h 2011-11-16 18:39:07.000000000 -0500
16195 @@ -65,6 +65,11 @@ static inline int xsave_user(struct xsav
16196 {
16197 int err;
16198 @@ -10331,10 +10316,10 @@ diff -urNp linux-3.0.9/arch/x86/include/asm/xsave.h linux-3.0.9/arch/x86/include
16199 __asm__ __volatile__("1: .byte " REX_PREFIX "0x0f,0xae,0x2f\n"
16200 "2:\n"
16201 ".section .fixup,\"ax\"\n"
16202 -diff -urNp linux-3.0.9/arch/x86/Kconfig linux-3.0.9/arch/x86/Kconfig
16203 ---- linux-3.0.9/arch/x86/Kconfig 2011-11-11 13:12:24.000000000 -0500
16204 -+++ linux-3.0.9/arch/x86/Kconfig 2011-11-15 20:02:59.000000000 -0500
16205 -@@ -229,7 +229,7 @@ config X86_HT
16206 +diff -urNp linux-3.1.1/arch/x86/Kconfig linux-3.1.1/arch/x86/Kconfig
16207 +--- linux-3.1.1/arch/x86/Kconfig 2011-11-11 15:19:27.000000000 -0500
16208 ++++ linux-3.1.1/arch/x86/Kconfig 2011-11-16 18:40:08.000000000 -0500
16209 +@@ -236,7 +236,7 @@ config X86_HT
16210
16211 config X86_32_LAZY_GS
16212 def_bool y
16213 @@ -10343,7 +10328,7 @@ diff -urNp linux-3.0.9/arch/x86/Kconfig linux-3.0.9/arch/x86/Kconfig
16214
16215 config ARCH_HWEIGHT_CFLAGS
16216 string
16217 -@@ -1018,7 +1018,7 @@ choice
16218 +@@ -1019,7 +1019,7 @@ choice
16219
16220 config NOHIGHMEM
16221 bool "off"
16222 @@ -10352,7 +10337,7 @@ diff -urNp linux-3.0.9/arch/x86/Kconfig linux-3.0.9/arch/x86/Kconfig
16223 ---help---
16224 Linux can use up to 64 Gigabytes of physical memory on x86 systems.
16225 However, the address space of 32-bit x86 processors is only 4
16226 -@@ -1055,7 +1055,7 @@ config NOHIGHMEM
16227 +@@ -1056,7 +1056,7 @@ config NOHIGHMEM
16228
16229 config HIGHMEM4G
16230 bool "4GB"
16231 @@ -10361,7 +10346,7 @@ diff -urNp linux-3.0.9/arch/x86/Kconfig linux-3.0.9/arch/x86/Kconfig
16232 ---help---
16233 Select this if you have a 32-bit processor and between 1 and 4
16234 gigabytes of physical RAM.
16235 -@@ -1109,7 +1109,7 @@ config PAGE_OFFSET
16236 +@@ -1110,7 +1110,7 @@ config PAGE_OFFSET
16237 hex
16238 default 0xB0000000 if VMSPLIT_3G_OPT
16239 default 0x80000000 if VMSPLIT_2G
16240 @@ -10370,7 +10355,7 @@ diff -urNp linux-3.0.9/arch/x86/Kconfig linux-3.0.9/arch/x86/Kconfig
16241 default 0x40000000 if VMSPLIT_1G
16242 default 0xC0000000
16243 depends on X86_32
16244 -@@ -1483,6 +1483,7 @@ config SECCOMP
16245 +@@ -1484,6 +1484,7 @@ config SECCOMP
16246
16247 config CC_STACKPROTECTOR
16248 bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)"
16249 @@ -10378,7 +10363,7 @@ diff -urNp linux-3.0.9/arch/x86/Kconfig linux-3.0.9/arch/x86/Kconfig
16250 ---help---
16251 This option turns on the -fstack-protector GCC feature. This
16252 feature puts, at the beginning of functions, a canary value on
16253 -@@ -1540,6 +1541,7 @@ config KEXEC_JUMP
16254 +@@ -1541,6 +1542,7 @@ config KEXEC_JUMP
16255 config PHYSICAL_START
16256 hex "Physical address where the kernel is loaded" if (EXPERT || CRASH_DUMP)
16257 default "0x1000000"
16258 @@ -10386,7 +10371,7 @@ diff -urNp linux-3.0.9/arch/x86/Kconfig linux-3.0.9/arch/x86/Kconfig
16259 ---help---
16260 This gives the physical address where the kernel is loaded.
16261
16262 -@@ -1603,6 +1605,7 @@ config X86_NEED_RELOCS
16263 +@@ -1604,6 +1606,7 @@ config X86_NEED_RELOCS
16264 config PHYSICAL_ALIGN
16265 hex "Alignment value to which kernel should be aligned" if X86_32
16266 default "0x1000000"
16267 @@ -10394,7 +10379,7 @@ diff -urNp linux-3.0.9/arch/x86/Kconfig linux-3.0.9/arch/x86/Kconfig
16268 range 0x2000 0x1000000
16269 ---help---
16270 This value puts the alignment restrictions on physical address
16271 -@@ -1634,9 +1637,10 @@ config HOTPLUG_CPU
16272 +@@ -1635,9 +1638,10 @@ config HOTPLUG_CPU
16273 Say N if you want to disable CPU hotplug.
16274
16275 config COMPAT_VDSO
16276 @@ -10406,10 +10391,10 @@ diff -urNp linux-3.0.9/arch/x86/Kconfig linux-3.0.9/arch/x86/Kconfig
16277 ---help---
16278 Map the 32-bit VDSO to the predictable old-style address too.
16279
16280 -diff -urNp linux-3.0.9/arch/x86/Kconfig.cpu linux-3.0.9/arch/x86/Kconfig.cpu
16281 ---- linux-3.0.9/arch/x86/Kconfig.cpu 2011-11-11 13:12:24.000000000 -0500
16282 -+++ linux-3.0.9/arch/x86/Kconfig.cpu 2011-11-15 20:02:59.000000000 -0500
16283 -@@ -338,7 +338,7 @@ config X86_PPRO_FENCE
16284 +diff -urNp linux-3.1.1/arch/x86/Kconfig.cpu linux-3.1.1/arch/x86/Kconfig.cpu
16285 +--- linux-3.1.1/arch/x86/Kconfig.cpu 2011-11-11 15:19:27.000000000 -0500
16286 ++++ linux-3.1.1/arch/x86/Kconfig.cpu 2011-11-16 18:39:07.000000000 -0500
16287 +@@ -341,7 +341,7 @@ config X86_PPRO_FENCE
16288
16289 config X86_F00F_BUG
16290 def_bool y
16291 @@ -10418,7 +10403,7 @@ diff -urNp linux-3.0.9/arch/x86/Kconfig.cpu linux-3.0.9/arch/x86/Kconfig.cpu
16292
16293 config X86_INVD_BUG
16294 def_bool y
16295 -@@ -362,7 +362,7 @@ config X86_POPAD_OK
16296 +@@ -365,7 +365,7 @@ config X86_POPAD_OK
16297
16298 config X86_ALIGNMENT_16
16299 def_bool y
16300 @@ -10427,7 +10412,7 @@ diff -urNp linux-3.0.9/arch/x86/Kconfig.cpu linux-3.0.9/arch/x86/Kconfig.cpu
16301
16302 config X86_INTEL_USERCOPY
16303 def_bool y
16304 -@@ -408,7 +408,7 @@ config X86_CMPXCHG64
16305 +@@ -411,7 +411,7 @@ config X86_CMPXCHG64
16306 # generates cmov.
16307 config X86_CMOV
16308 def_bool y
16309 @@ -10436,9 +10421,9 @@ diff -urNp linux-3.0.9/arch/x86/Kconfig.cpu linux-3.0.9/arch/x86/Kconfig.cpu
16310
16311 config X86_MINIMUM_CPU_FAMILY
16312 int
16313 -diff -urNp linux-3.0.9/arch/x86/Kconfig.debug linux-3.0.9/arch/x86/Kconfig.debug
16314 ---- linux-3.0.9/arch/x86/Kconfig.debug 2011-11-11 13:12:24.000000000 -0500
16315 -+++ linux-3.0.9/arch/x86/Kconfig.debug 2011-11-15 20:02:59.000000000 -0500
16316 +diff -urNp linux-3.1.1/arch/x86/Kconfig.debug linux-3.1.1/arch/x86/Kconfig.debug
16317 +--- linux-3.1.1/arch/x86/Kconfig.debug 2011-11-11 15:19:27.000000000 -0500
16318 ++++ linux-3.1.1/arch/x86/Kconfig.debug 2011-11-16 18:39:07.000000000 -0500
16319 @@ -81,7 +81,7 @@ config X86_PTDUMP
16320 config DEBUG_RODATA
16321 bool "Write protect kernel read-only data structures"
16322 @@ -10457,9 +10442,9 @@ diff -urNp linux-3.0.9/arch/x86/Kconfig.debug linux-3.0.9/arch/x86/Kconfig.debug
16323 ---help---
16324 This option helps catch unintended modifications to loadable
16325 kernel module's text and read-only data. It also prevents execution
16326 -diff -urNp linux-3.0.9/arch/x86/kernel/acpi/realmode/Makefile linux-3.0.9/arch/x86/kernel/acpi/realmode/Makefile
16327 ---- linux-3.0.9/arch/x86/kernel/acpi/realmode/Makefile 2011-11-11 13:12:24.000000000 -0500
16328 -+++ linux-3.0.9/arch/x86/kernel/acpi/realmode/Makefile 2011-11-15 20:02:59.000000000 -0500
16329 +diff -urNp linux-3.1.1/arch/x86/kernel/acpi/realmode/Makefile linux-3.1.1/arch/x86/kernel/acpi/realmode/Makefile
16330 +--- linux-3.1.1/arch/x86/kernel/acpi/realmode/Makefile 2011-11-11 15:19:27.000000000 -0500
16331 ++++ linux-3.1.1/arch/x86/kernel/acpi/realmode/Makefile 2011-11-16 18:39:07.000000000 -0500
16332 @@ -41,6 +41,9 @@ KBUILD_CFLAGS := $(LINUXINCLUDE) -g -Os
16333 $(call cc-option, -fno-stack-protector) \
16334 $(call cc-option, -mpreferred-stack-boundary=2)
16335 @@ -10470,9 +10455,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/acpi/realmode/Makefile linux-3.0.9/arch/x
16336 KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
16337 GCOV_PROFILE := n
16338
16339 -diff -urNp linux-3.0.9/arch/x86/kernel/acpi/realmode/wakeup.S linux-3.0.9/arch/x86/kernel/acpi/realmode/wakeup.S
16340 ---- linux-3.0.9/arch/x86/kernel/acpi/realmode/wakeup.S 2011-11-11 13:12:24.000000000 -0500
16341 -+++ linux-3.0.9/arch/x86/kernel/acpi/realmode/wakeup.S 2011-11-15 20:02:59.000000000 -0500
16342 +diff -urNp linux-3.1.1/arch/x86/kernel/acpi/realmode/wakeup.S linux-3.1.1/arch/x86/kernel/acpi/realmode/wakeup.S
16343 +--- linux-3.1.1/arch/x86/kernel/acpi/realmode/wakeup.S 2011-11-11 15:19:27.000000000 -0500
16344 ++++ linux-3.1.1/arch/x86/kernel/acpi/realmode/wakeup.S 2011-11-16 18:40:08.000000000 -0500
16345 @@ -108,6 +108,9 @@ wakeup_code:
16346 /* Do any other stuff... */
16347
16348 @@ -10491,9 +10476,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/acpi/realmode/wakeup.S linux-3.0.9/arch/x
16349 #else
16350 pushw $0
16351 pushw trampoline_segment
16352 -diff -urNp linux-3.0.9/arch/x86/kernel/acpi/sleep.c linux-3.0.9/arch/x86/kernel/acpi/sleep.c
16353 ---- linux-3.0.9/arch/x86/kernel/acpi/sleep.c 2011-11-11 13:12:24.000000000 -0500
16354 -+++ linux-3.0.9/arch/x86/kernel/acpi/sleep.c 2011-11-15 20:02:59.000000000 -0500
16355 +diff -urNp linux-3.1.1/arch/x86/kernel/acpi/sleep.c linux-3.1.1/arch/x86/kernel/acpi/sleep.c
16356 +--- linux-3.1.1/arch/x86/kernel/acpi/sleep.c 2011-11-11 15:19:27.000000000 -0500
16357 ++++ linux-3.1.1/arch/x86/kernel/acpi/sleep.c 2011-11-16 18:39:07.000000000 -0500
16358 @@ -94,8 +94,12 @@ int acpi_suspend_lowlevel(void)
16359 header->trampoline_segment = trampoline_address() >> 4;
16360 #ifdef CONFIG_SMP
16361 @@ -10507,9 +10492,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/acpi/sleep.c linux-3.0.9/arch/x86/kernel/
16362 initial_gs = per_cpu_offset(smp_processor_id());
16363 #endif
16364 initial_code = (unsigned long)wakeup_long64;
16365 -diff -urNp linux-3.0.9/arch/x86/kernel/acpi/wakeup_32.S linux-3.0.9/arch/x86/kernel/acpi/wakeup_32.S
16366 ---- linux-3.0.9/arch/x86/kernel/acpi/wakeup_32.S 2011-11-11 13:12:24.000000000 -0500
16367 -+++ linux-3.0.9/arch/x86/kernel/acpi/wakeup_32.S 2011-11-15 20:02:59.000000000 -0500
16368 +diff -urNp linux-3.1.1/arch/x86/kernel/acpi/wakeup_32.S linux-3.1.1/arch/x86/kernel/acpi/wakeup_32.S
16369 +--- linux-3.1.1/arch/x86/kernel/acpi/wakeup_32.S 2011-11-11 15:19:27.000000000 -0500
16370 ++++ linux-3.1.1/arch/x86/kernel/acpi/wakeup_32.S 2011-11-16 18:39:07.000000000 -0500
16371 @@ -30,13 +30,11 @@ wakeup_pmode_return:
16372 # and restore the stack ... but you need gdt for this to work
16373 movl saved_context_esp, %esp
16374 @@ -10526,10 +10511,33 @@ diff -urNp linux-3.0.9/arch/x86/kernel/acpi/wakeup_32.S linux-3.0.9/arch/x86/ker
16375
16376 bogus_magic:
16377 jmp bogus_magic
16378 -diff -urNp linux-3.0.9/arch/x86/kernel/alternative.c linux-3.0.9/arch/x86/kernel/alternative.c
16379 ---- linux-3.0.9/arch/x86/kernel/alternative.c 2011-11-11 13:12:24.000000000 -0500
16380 -+++ linux-3.0.9/arch/x86/kernel/alternative.c 2011-11-15 20:02:59.000000000 -0500
16381 -@@ -313,7 +313,7 @@ static void alternatives_smp_lock(const
16382 +diff -urNp linux-3.1.1/arch/x86/kernel/alternative.c linux-3.1.1/arch/x86/kernel/alternative.c
16383 +--- linux-3.1.1/arch/x86/kernel/alternative.c 2011-11-11 15:19:27.000000000 -0500
16384 ++++ linux-3.1.1/arch/x86/kernel/alternative.c 2011-11-16 18:39:07.000000000 -0500
16385 +@@ -276,6 +276,13 @@ void __init_or_module apply_alternatives
16386 + */
16387 + for (a = start; a < end; a++) {
16388 + instr = (u8 *)&a->instr_offset + a->instr_offset;
16389 ++
16390 ++#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
16391 ++ instr += ____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR;
16392 ++ if (instr < (u8 *)_text || (u8 *)_einittext <= instr)
16393 ++ instr -= ____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR;
16394 ++#endif
16395 ++
16396 + replacement = (u8 *)&a->repl_offset + a->repl_offset;
16397 + BUG_ON(a->replacementlen > a->instrlen);
16398 + BUG_ON(a->instrlen > sizeof(insnbuf));
16399 +@@ -307,10 +314,16 @@ static void alternatives_smp_lock(const
16400 + for (poff = start; poff < end; poff++) {
16401 + u8 *ptr = (u8 *)poff + *poff;
16402 +
16403 ++#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
16404 ++ ptr += ____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR;
16405 ++ if (ptr < (u8 *)_text || (u8 *)_einittext <= ptr)
16406 ++ ptr -= ____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR;
16407 ++#endif
16408 ++
16409 if (!*poff || ptr < text || ptr >= text_end)
16410 continue;
16411 /* turn DS segment override prefix into lock prefix */
16412 @@ -10538,7 +10546,16 @@ diff -urNp linux-3.0.9/arch/x86/kernel/alternative.c linux-3.0.9/arch/x86/kernel
16413 text_poke(ptr, ((unsigned char []){0xf0}), 1);
16414 };
16415 mutex_unlock(&text_mutex);
16416 -@@ -334,7 +334,7 @@ static void alternatives_smp_unlock(cons
16417 +@@ -328,10 +341,16 @@ static void alternatives_smp_unlock(cons
16418 + for (poff = start; poff < end; poff++) {
16419 + u8 *ptr = (u8 *)poff + *poff;
16420 +
16421 ++#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
16422 ++ ptr += ____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR;
16423 ++ if (ptr < (u8 *)_text || (u8 *)_einittext <= ptr)
16424 ++ ptr -= ____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR;
16425 ++#endif
16426 ++
16427 if (!*poff || ptr < text || ptr >= text_end)
16428 continue;
16429 /* turn lock prefix into DS segment override prefix */
16430 @@ -10547,7 +10564,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/alternative.c linux-3.0.9/arch/x86/kernel
16431 text_poke(ptr, ((unsigned char []){0x3E}), 1);
16432 };
16433 mutex_unlock(&text_mutex);
16434 -@@ -503,7 +503,7 @@ void __init_or_module apply_paravirt(str
16435 +@@ -500,7 +519,7 @@ void __init_or_module apply_paravirt(str
16436
16437 BUG_ON(p->len > MAX_PATCH_LEN);
16438 /* prep the buffer with the original instructions */
16439 @@ -10556,7 +10573,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/alternative.c linux-3.0.9/arch/x86/kernel
16440 used = pv_init_ops.patch(p->instrtype, p->clobbers, insnbuf,
16441 (unsigned long)p->instr, p->len);
16442
16443 -@@ -571,7 +571,7 @@ void __init alternative_instructions(voi
16444 +@@ -568,7 +587,7 @@ void __init alternative_instructions(voi
16445 if (smp_alt_once)
16446 free_init_pages("SMP alternatives",
16447 (unsigned long)__smp_locks,
16448 @@ -10565,7 +10582,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/alternative.c linux-3.0.9/arch/x86/kernel
16449
16450 restart_nmi();
16451 }
16452 -@@ -588,13 +588,17 @@ void __init alternative_instructions(voi
16453 +@@ -585,13 +604,17 @@ void __init alternative_instructions(voi
16454 * instructions. And on the local CPU you need to be protected again NMI or MCE
16455 * handlers seeing an inconsistent instruction while you patch.
16456 */
16457 @@ -10585,7 +10602,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/alternative.c linux-3.0.9/arch/x86/kernel
16458 local_irq_restore(flags);
16459 /* Could also do a CLFLUSH here to speed up CPU recovery; but
16460 that causes hangs on some VIA CPUs. */
16461 -@@ -616,36 +620,22 @@ void *__init_or_module text_poke_early(v
16462 +@@ -613,36 +636,22 @@ void *__init_or_module text_poke_early(v
16463 */
16464 void *__kprobes text_poke(void *addr, const void *opcode, size_t len)
16465 {
16466 @@ -10630,10 +10647,10 @@ diff -urNp linux-3.0.9/arch/x86/kernel/alternative.c linux-3.0.9/arch/x86/kernel
16467 return addr;
16468 }
16469
16470 -diff -urNp linux-3.0.9/arch/x86/kernel/apic/apic.c linux-3.0.9/arch/x86/kernel/apic/apic.c
16471 ---- linux-3.0.9/arch/x86/kernel/apic/apic.c 2011-11-11 13:12:24.000000000 -0500
16472 -+++ linux-3.0.9/arch/x86/kernel/apic/apic.c 2011-11-15 20:02:59.000000000 -0500
16473 -@@ -173,7 +173,7 @@ int first_system_vector = 0xfe;
16474 +diff -urNp linux-3.1.1/arch/x86/kernel/apic/apic.c linux-3.1.1/arch/x86/kernel/apic/apic.c
16475 +--- linux-3.1.1/arch/x86/kernel/apic/apic.c 2011-11-11 15:19:27.000000000 -0500
16476 ++++ linux-3.1.1/arch/x86/kernel/apic/apic.c 2011-11-16 18:40:08.000000000 -0500
16477 +@@ -174,7 +174,7 @@ int first_system_vector = 0xfe;
16478 /*
16479 * Debug level, exported for io_apic.c
16480 */
16481 @@ -10642,7 +10659,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/apic/apic.c linux-3.0.9/arch/x86/kernel/a
16482
16483 int pic_mode;
16484
16485 -@@ -1834,7 +1834,7 @@ void smp_error_interrupt(struct pt_regs
16486 +@@ -1835,7 +1835,7 @@ void smp_error_interrupt(struct pt_regs
16487 apic_write(APIC_ESR, 0);
16488 v1 = apic_read(APIC_ESR);
16489 ack_APIC_irq();
16490 @@ -10651,7 +10668,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/apic/apic.c linux-3.0.9/arch/x86/kernel/a
16491
16492 apic_printk(APIC_DEBUG, KERN_DEBUG "APIC error on CPU%d: %02x(%02x)",
16493 smp_processor_id(), v0 , v1);
16494 -@@ -2190,6 +2190,8 @@ static int __cpuinit apic_cluster_num(vo
16495 +@@ -2209,6 +2209,8 @@ static int __cpuinit apic_cluster_num(vo
16496 u16 *bios_cpu_apicid;
16497 DECLARE_BITMAP(clustermap, NUM_APIC_CLUSTERS);
16498
16499 @@ -10660,9 +10677,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/apic/apic.c linux-3.0.9/arch/x86/kernel/a
16500 bios_cpu_apicid = early_per_cpu_ptr(x86_bios_cpu_apicid);
16501 bitmap_zero(clustermap, NUM_APIC_CLUSTERS);
16502
16503 -diff -urNp linux-3.0.9/arch/x86/kernel/apic/io_apic.c linux-3.0.9/arch/x86/kernel/apic/io_apic.c
16504 ---- linux-3.0.9/arch/x86/kernel/apic/io_apic.c 2011-11-11 13:12:24.000000000 -0500
16505 -+++ linux-3.0.9/arch/x86/kernel/apic/io_apic.c 2011-11-15 20:02:59.000000000 -0500
16506 +diff -urNp linux-3.1.1/arch/x86/kernel/apic/io_apic.c linux-3.1.1/arch/x86/kernel/apic/io_apic.c
16507 +--- linux-3.1.1/arch/x86/kernel/apic/io_apic.c 2011-11-11 15:19:27.000000000 -0500
16508 ++++ linux-3.1.1/arch/x86/kernel/apic/io_apic.c 2011-11-16 18:39:07.000000000 -0500
16509 @@ -1028,7 +1028,7 @@ int IO_APIC_get_PCI_irq_vector(int bus,
16510 }
16511 EXPORT_SYMBOL(IO_APIC_get_PCI_irq_vector);
16512 @@ -10681,7 +10698,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/apic/io_apic.c linux-3.0.9/arch/x86/kerne
16513 {
16514 raw_spin_unlock(&vector_lock);
16515 }
16516 -@@ -2364,7 +2364,7 @@ static void ack_apic_edge(struct irq_dat
16517 +@@ -2405,7 +2405,7 @@ static void ack_apic_edge(struct irq_dat
16518 ack_APIC_irq();
16519 }
16520
16521 @@ -10690,7 +10707,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/apic/io_apic.c linux-3.0.9/arch/x86/kerne
16522
16523 /*
16524 * IO-APIC versions below 0x20 don't support EOI register.
16525 -@@ -2472,7 +2472,7 @@ static void ack_apic_level(struct irq_da
16526 +@@ -2513,7 +2513,7 @@ static void ack_apic_level(struct irq_da
16527 * at the cpu.
16528 */
16529 if (!(v & (1 << (i & 0x1f)))) {
16530 @@ -10699,9 +10716,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/apic/io_apic.c linux-3.0.9/arch/x86/kerne
16531
16532 eoi_ioapic_irq(irq, cfg);
16533 }
16534 -diff -urNp linux-3.0.9/arch/x86/kernel/apm_32.c linux-3.0.9/arch/x86/kernel/apm_32.c
16535 ---- linux-3.0.9/arch/x86/kernel/apm_32.c 2011-11-11 13:12:24.000000000 -0500
16536 -+++ linux-3.0.9/arch/x86/kernel/apm_32.c 2011-11-15 20:02:59.000000000 -0500
16537 +diff -urNp linux-3.1.1/arch/x86/kernel/apm_32.c linux-3.1.1/arch/x86/kernel/apm_32.c
16538 +--- linux-3.1.1/arch/x86/kernel/apm_32.c 2011-11-11 15:19:27.000000000 -0500
16539 ++++ linux-3.1.1/arch/x86/kernel/apm_32.c 2011-11-16 18:39:07.000000000 -0500
16540 @@ -413,7 +413,7 @@ static DEFINE_MUTEX(apm_mutex);
16541 * This is for buggy BIOS's that refer to (real mode) segment 0x40
16542 * even though they are called in protected mode.
16543 @@ -10773,9 +10790,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/apm_32.c linux-3.0.9/arch/x86/kernel/apm_
16544
16545 proc_create("apm", 0, NULL, &apm_file_ops);
16546
16547 -diff -urNp linux-3.0.9/arch/x86/kernel/asm-offsets_64.c linux-3.0.9/arch/x86/kernel/asm-offsets_64.c
16548 ---- linux-3.0.9/arch/x86/kernel/asm-offsets_64.c 2011-11-11 13:12:24.000000000 -0500
16549 -+++ linux-3.0.9/arch/x86/kernel/asm-offsets_64.c 2011-11-15 20:02:59.000000000 -0500
16550 +diff -urNp linux-3.1.1/arch/x86/kernel/asm-offsets_64.c linux-3.1.1/arch/x86/kernel/asm-offsets_64.c
16551 +--- linux-3.1.1/arch/x86/kernel/asm-offsets_64.c 2011-11-11 15:19:27.000000000 -0500
16552 ++++ linux-3.1.1/arch/x86/kernel/asm-offsets_64.c 2011-11-16 18:39:07.000000000 -0500
16553 @@ -69,6 +69,7 @@ int main(void)
16554 BLANK();
16555 #undef ENTRY
16556 @@ -10784,9 +10801,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/asm-offsets_64.c linux-3.0.9/arch/x86/ker
16557 OFFSET(TSS_ist, tss_struct, x86_tss.ist);
16558 BLANK();
16559
16560 -diff -urNp linux-3.0.9/arch/x86/kernel/asm-offsets.c linux-3.0.9/arch/x86/kernel/asm-offsets.c
16561 ---- linux-3.0.9/arch/x86/kernel/asm-offsets.c 2011-11-11 13:12:24.000000000 -0500
16562 -+++ linux-3.0.9/arch/x86/kernel/asm-offsets.c 2011-11-15 20:02:59.000000000 -0500
16563 +diff -urNp linux-3.1.1/arch/x86/kernel/asm-offsets.c linux-3.1.1/arch/x86/kernel/asm-offsets.c
16564 +--- linux-3.1.1/arch/x86/kernel/asm-offsets.c 2011-11-11 15:19:27.000000000 -0500
16565 ++++ linux-3.1.1/arch/x86/kernel/asm-offsets.c 2011-11-16 18:39:07.000000000 -0500
16566 @@ -33,6 +33,8 @@ void common(void) {
16567 OFFSET(TI_status, thread_info, status);
16568 OFFSET(TI_addr_limit, thread_info, addr_limit);
16569 @@ -10823,9 +10840,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/asm-offsets.c linux-3.0.9/arch/x86/kernel
16570 #ifdef CONFIG_XEN
16571 BLANK();
16572 OFFSET(XEN_vcpu_info_mask, vcpu_info, evtchn_upcall_mask);
16573 -diff -urNp linux-3.0.9/arch/x86/kernel/cpu/amd.c linux-3.0.9/arch/x86/kernel/cpu/amd.c
16574 ---- linux-3.0.9/arch/x86/kernel/cpu/amd.c 2011-11-11 13:12:24.000000000 -0500
16575 -+++ linux-3.0.9/arch/x86/kernel/cpu/amd.c 2011-11-15 20:02:59.000000000 -0500
16576 +diff -urNp linux-3.1.1/arch/x86/kernel/cpu/amd.c linux-3.1.1/arch/x86/kernel/cpu/amd.c
16577 +--- linux-3.1.1/arch/x86/kernel/cpu/amd.c 2011-11-11 15:19:27.000000000 -0500
16578 ++++ linux-3.1.1/arch/x86/kernel/cpu/amd.c 2011-11-16 18:39:07.000000000 -0500
16579 @@ -647,7 +647,7 @@ static unsigned int __cpuinit amd_size_c
16580 unsigned int size)
16581 {
16582 @@ -10835,9 +10852,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/cpu/amd.c linux-3.0.9/arch/x86/kernel/cpu
16583 /* Duron Rev A0 */
16584 if (c->x86_model == 3 && c->x86_mask == 0)
16585 size = 64;
16586 -diff -urNp linux-3.0.9/arch/x86/kernel/cpu/common.c linux-3.0.9/arch/x86/kernel/cpu/common.c
16587 ---- linux-3.0.9/arch/x86/kernel/cpu/common.c 2011-11-11 13:12:24.000000000 -0500
16588 -+++ linux-3.0.9/arch/x86/kernel/cpu/common.c 2011-11-15 20:02:59.000000000 -0500
16589 +diff -urNp linux-3.1.1/arch/x86/kernel/cpu/common.c linux-3.1.1/arch/x86/kernel/cpu/common.c
16590 +--- linux-3.1.1/arch/x86/kernel/cpu/common.c 2011-11-11 15:19:27.000000000 -0500
16591 ++++ linux-3.1.1/arch/x86/kernel/cpu/common.c 2011-11-16 18:39:07.000000000 -0500
16592 @@ -83,60 +83,6 @@ static const struct cpu_dev __cpuinitcon
16593
16594 static const struct cpu_dev *this_cpu __cpuinitdata = &default_cpu;
16595 @@ -10982,9 +10999,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/cpu/common.c linux-3.0.9/arch/x86/kernel/
16596 struct thread_struct *thread = &curr->thread;
16597
16598 if (cpumask_test_and_set_cpu(cpu, cpu_initialized_mask)) {
16599 -diff -urNp linux-3.0.9/arch/x86/kernel/cpu/intel.c linux-3.0.9/arch/x86/kernel/cpu/intel.c
16600 ---- linux-3.0.9/arch/x86/kernel/cpu/intel.c 2011-11-11 13:12:24.000000000 -0500
16601 -+++ linux-3.0.9/arch/x86/kernel/cpu/intel.c 2011-11-15 20:02:59.000000000 -0500
16602 +diff -urNp linux-3.1.1/arch/x86/kernel/cpu/intel.c linux-3.1.1/arch/x86/kernel/cpu/intel.c
16603 +--- linux-3.1.1/arch/x86/kernel/cpu/intel.c 2011-11-11 15:19:27.000000000 -0500
16604 ++++ linux-3.1.1/arch/x86/kernel/cpu/intel.c 2011-11-16 18:39:07.000000000 -0500
16605 @@ -172,7 +172,7 @@ static void __cpuinit trap_init_f00f_bug
16606 * Update the IDT descriptor and reload the IDT so that
16607 * it uses the read-only mapped virtual address.
16608 @@ -10994,9 +11011,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/cpu/intel.c linux-3.0.9/arch/x86/kernel/c
16609 load_idt(&idt_descr);
16610 }
16611 #endif
16612 -diff -urNp linux-3.0.9/arch/x86/kernel/cpu/Makefile linux-3.0.9/arch/x86/kernel/cpu/Makefile
16613 ---- linux-3.0.9/arch/x86/kernel/cpu/Makefile 2011-11-11 13:12:24.000000000 -0500
16614 -+++ linux-3.0.9/arch/x86/kernel/cpu/Makefile 2011-11-15 20:02:59.000000000 -0500
16615 +diff -urNp linux-3.1.1/arch/x86/kernel/cpu/Makefile linux-3.1.1/arch/x86/kernel/cpu/Makefile
16616 +--- linux-3.1.1/arch/x86/kernel/cpu/Makefile 2011-11-11 15:19:27.000000000 -0500
16617 ++++ linux-3.1.1/arch/x86/kernel/cpu/Makefile 2011-11-16 18:39:07.000000000 -0500
16618 @@ -8,10 +8,6 @@ CFLAGS_REMOVE_common.o = -pg
16619 CFLAGS_REMOVE_perf_event.o = -pg
16620 endif
16621 @@ -11008,18 +11025,18 @@ diff -urNp linux-3.0.9/arch/x86/kernel/cpu/Makefile linux-3.0.9/arch/x86/kernel/
16622 obj-y := intel_cacheinfo.o scattered.o topology.o
16623 obj-y += proc.o capflags.o powerflags.o common.o
16624 obj-y += vmware.o hypervisor.o sched.o mshyperv.o
16625 -diff -urNp linux-3.0.9/arch/x86/kernel/cpu/mcheck/mce.c linux-3.0.9/arch/x86/kernel/cpu/mcheck/mce.c
16626 ---- linux-3.0.9/arch/x86/kernel/cpu/mcheck/mce.c 2011-11-11 13:12:24.000000000 -0500
16627 -+++ linux-3.0.9/arch/x86/kernel/cpu/mcheck/mce.c 2011-11-15 20:02:59.000000000 -0500
16628 -@@ -46,6 +46,7 @@
16629 - #include <asm/ipi.h>
16630 +diff -urNp linux-3.1.1/arch/x86/kernel/cpu/mcheck/mce.c linux-3.1.1/arch/x86/kernel/cpu/mcheck/mce.c
16631 +--- linux-3.1.1/arch/x86/kernel/cpu/mcheck/mce.c 2011-11-11 15:19:27.000000000 -0500
16632 ++++ linux-3.1.1/arch/x86/kernel/cpu/mcheck/mce.c 2011-11-16 18:39:07.000000000 -0500
16633 +@@ -42,6 +42,7 @@
16634 + #include <asm/processor.h>
16635 #include <asm/mce.h>
16636 #include <asm/msr.h>
16637 +#include <asm/local.h>
16638
16639 #include "mce-internal.h"
16640
16641 -@@ -208,7 +209,7 @@ static void print_mce(struct mce *m)
16642 +@@ -205,7 +206,7 @@ static void print_mce(struct mce *m)
16643 !(m->mcgstatus & MCG_STATUS_EIPV) ? " !INEXACT!" : "",
16644 m->cs, m->ip);
16645
16646 @@ -11028,7 +11045,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/cpu/mcheck/mce.c linux-3.0.9/arch/x86/ker
16647 print_symbol("{%s}", m->ip);
16648 pr_cont("\n");
16649 }
16650 -@@ -236,10 +237,10 @@ static void print_mce(struct mce *m)
16651 +@@ -233,10 +234,10 @@ static void print_mce(struct mce *m)
16652
16653 #define PANIC_TIMEOUT 5 /* 5 seconds */
16654
16655 @@ -11041,7 +11058,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/cpu/mcheck/mce.c linux-3.0.9/arch/x86/ker
16656
16657 /* Panic in progress. Enable interrupts and wait for final IPI */
16658 static void wait_for_panic(void)
16659 -@@ -263,7 +264,7 @@ static void mce_panic(char *msg, struct
16660 +@@ -260,7 +261,7 @@ static void mce_panic(char *msg, struct
16661 /*
16662 * Make sure only one CPU runs in machine check panic
16663 */
16664 @@ -11050,7 +11067,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/cpu/mcheck/mce.c linux-3.0.9/arch/x86/ker
16665 wait_for_panic();
16666 barrier();
16667
16668 -@@ -271,7 +272,7 @@ static void mce_panic(char *msg, struct
16669 +@@ -268,7 +269,7 @@ static void mce_panic(char *msg, struct
16670 console_verbose();
16671 } else {
16672 /* Don't log too much for fake panic */
16673 @@ -11059,7 +11076,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/cpu/mcheck/mce.c linux-3.0.9/arch/x86/ker
16674 return;
16675 }
16676 /* First print corrected ones that are still unlogged */
16677 -@@ -638,7 +639,7 @@ static int mce_timed_out(u64 *t)
16678 +@@ -610,7 +611,7 @@ static int mce_timed_out(u64 *t)
16679 * might have been modified by someone else.
16680 */
16681 rmb();
16682 @@ -11068,42 +11085,43 @@ diff -urNp linux-3.0.9/arch/x86/kernel/cpu/mcheck/mce.c linux-3.0.9/arch/x86/ker
16683 wait_for_panic();
16684 if (!monarch_timeout)
16685 goto out;
16686 -@@ -1452,14 +1453,14 @@ void __cpuinit mcheck_cpu_init(struct cp
16687 +@@ -1429,7 +1430,7 @@ void __cpuinit mcheck_cpu_init(struct cp
16688 */
16689
16690 - static DEFINE_SPINLOCK(mce_state_lock);
16691 --static int open_count; /* #times opened */
16692 -+static local_t open_count; /* #times opened */
16693 - static int open_exclu; /* already open exclusive? */
16694 + static DEFINE_SPINLOCK(mce_chrdev_state_lock);
16695 +-static int mce_chrdev_open_count; /* #times opened */
16696 ++static local_t mce_chrdev_open_count; /* #times opened */
16697 + static int mce_chrdev_open_exclu; /* already open exclusive? */
16698
16699 - static int mce_open(struct inode *inode, struct file *file)
16700 - {
16701 - spin_lock(&mce_state_lock);
16702 + static int mce_chrdev_open(struct inode *inode, struct file *file)
16703 +@@ -1437,7 +1438,7 @@ static int mce_chrdev_open(struct inode
16704 + spin_lock(&mce_chrdev_state_lock);
16705
16706 -- if (open_exclu || (open_count && (file->f_flags & O_EXCL))) {
16707 -+ if (open_exclu || (local_read(&open_count) && (file->f_flags & O_EXCL))) {
16708 - spin_unlock(&mce_state_lock);
16709 + if (mce_chrdev_open_exclu ||
16710 +- (mce_chrdev_open_count && (file->f_flags & O_EXCL))) {
16711 ++ (local_read(&mce_chrdev_open_count) && (file->f_flags & O_EXCL))) {
16712 + spin_unlock(&mce_chrdev_state_lock);
16713
16714 return -EBUSY;
16715 -@@ -1467,7 +1468,7 @@ static int mce_open(struct inode *inode,
16716 +@@ -1445,7 +1446,7 @@ static int mce_chrdev_open(struct inode
16717
16718 if (file->f_flags & O_EXCL)
16719 - open_exclu = 1;
16720 -- open_count++;
16721 -+ local_inc(&open_count);
16722 + mce_chrdev_open_exclu = 1;
16723 +- mce_chrdev_open_count++;
16724 ++ local_inc(&mce_chrdev_open_count);
16725
16726 - spin_unlock(&mce_state_lock);
16727 + spin_unlock(&mce_chrdev_state_lock);
16728
16729 -@@ -1478,7 +1479,7 @@ static int mce_release(struct inode *ino
16730 +@@ -1456,7 +1457,7 @@ static int mce_chrdev_release(struct ino
16731 {
16732 - spin_lock(&mce_state_lock);
16733 + spin_lock(&mce_chrdev_state_lock);
16734
16735 -- open_count--;
16736 -+ local_dec(&open_count);
16737 - open_exclu = 0;
16738 +- mce_chrdev_open_count--;
16739 ++ local_dec(&mce_chrdev_open_count);
16740 + mce_chrdev_open_exclu = 0;
16741
16742 - spin_unlock(&mce_state_lock);
16743 -@@ -2163,7 +2164,7 @@ struct dentry *mce_get_debugfs_dir(void)
16744 + spin_unlock(&mce_chrdev_state_lock);
16745 +@@ -2147,7 +2148,7 @@ struct dentry *mce_get_debugfs_dir(void)
16746 static void mce_reset(void)
16747 {
16748 cpu_missing = 0;
16749 @@ -11112,9 +11130,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/cpu/mcheck/mce.c linux-3.0.9/arch/x86/ker
16750 atomic_set(&mce_executing, 0);
16751 atomic_set(&mce_callin, 0);
16752 atomic_set(&global_nwo, 0);
16753 -diff -urNp linux-3.0.9/arch/x86/kernel/cpu/mcheck/mce-inject.c linux-3.0.9/arch/x86/kernel/cpu/mcheck/mce-inject.c
16754 ---- linux-3.0.9/arch/x86/kernel/cpu/mcheck/mce-inject.c 2011-11-11 13:12:24.000000000 -0500
16755 -+++ linux-3.0.9/arch/x86/kernel/cpu/mcheck/mce-inject.c 2011-11-15 20:02:59.000000000 -0500
16756 +diff -urNp linux-3.1.1/arch/x86/kernel/cpu/mcheck/mce-inject.c linux-3.1.1/arch/x86/kernel/cpu/mcheck/mce-inject.c
16757 +--- linux-3.1.1/arch/x86/kernel/cpu/mcheck/mce-inject.c 2011-11-11 15:19:27.000000000 -0500
16758 ++++ linux-3.1.1/arch/x86/kernel/cpu/mcheck/mce-inject.c 2011-11-16 18:39:07.000000000 -0500
16759 @@ -215,7 +215,9 @@ static int inject_init(void)
16760 if (!alloc_cpumask_var(&mce_inject_cpumask, GFP_KERNEL))
16761 return -ENOMEM;
16762 @@ -11126,9 +11144,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/cpu/mcheck/mce-inject.c linux-3.0.9/arch/
16763 register_die_notifier(&mce_raise_nb);
16764 return 0;
16765 }
16766 -diff -urNp linux-3.0.9/arch/x86/kernel/cpu/mtrr/main.c linux-3.0.9/arch/x86/kernel/cpu/mtrr/main.c
16767 ---- linux-3.0.9/arch/x86/kernel/cpu/mtrr/main.c 2011-11-11 13:12:24.000000000 -0500
16768 -+++ linux-3.0.9/arch/x86/kernel/cpu/mtrr/main.c 2011-11-15 20:02:59.000000000 -0500
16769 +diff -urNp linux-3.1.1/arch/x86/kernel/cpu/mtrr/main.c linux-3.1.1/arch/x86/kernel/cpu/mtrr/main.c
16770 +--- linux-3.1.1/arch/x86/kernel/cpu/mtrr/main.c 2011-11-11 15:19:27.000000000 -0500
16771 ++++ linux-3.1.1/arch/x86/kernel/cpu/mtrr/main.c 2011-11-16 18:39:07.000000000 -0500
16772 @@ -62,7 +62,7 @@ static DEFINE_MUTEX(mtrr_mutex);
16773 u64 size_or_mask, size_and_mask;
16774 static bool mtrr_aps_delayed_init;
16775 @@ -11138,9 +11156,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/cpu/mtrr/main.c linux-3.0.9/arch/x86/kern
16776
16777 const struct mtrr_ops *mtrr_if;
16778
16779 -diff -urNp linux-3.0.9/arch/x86/kernel/cpu/mtrr/mtrr.h linux-3.0.9/arch/x86/kernel/cpu/mtrr/mtrr.h
16780 ---- linux-3.0.9/arch/x86/kernel/cpu/mtrr/mtrr.h 2011-11-11 13:12:24.000000000 -0500
16781 -+++ linux-3.0.9/arch/x86/kernel/cpu/mtrr/mtrr.h 2011-11-15 20:02:59.000000000 -0500
16782 +diff -urNp linux-3.1.1/arch/x86/kernel/cpu/mtrr/mtrr.h linux-3.1.1/arch/x86/kernel/cpu/mtrr/mtrr.h
16783 +--- linux-3.1.1/arch/x86/kernel/cpu/mtrr/mtrr.h 2011-11-11 15:19:27.000000000 -0500
16784 ++++ linux-3.1.1/arch/x86/kernel/cpu/mtrr/mtrr.h 2011-11-16 18:39:07.000000000 -0500
16785 @@ -25,7 +25,7 @@ struct mtrr_ops {
16786 int (*validate_add_page)(unsigned long base, unsigned long size,
16787 unsigned int type);
16788 @@ -11150,10 +11168,10 @@ diff -urNp linux-3.0.9/arch/x86/kernel/cpu/mtrr/mtrr.h linux-3.0.9/arch/x86/kern
16789
16790 extern int generic_get_free_region(unsigned long base, unsigned long size,
16791 int replace_reg);
16792 -diff -urNp linux-3.0.9/arch/x86/kernel/cpu/perf_event.c linux-3.0.9/arch/x86/kernel/cpu/perf_event.c
16793 ---- linux-3.0.9/arch/x86/kernel/cpu/perf_event.c 2011-11-11 13:12:24.000000000 -0500
16794 -+++ linux-3.0.9/arch/x86/kernel/cpu/perf_event.c 2011-11-15 20:02:59.000000000 -0500
16795 -@@ -781,6 +781,8 @@ static int x86_schedule_events(struct cp
16796 +diff -urNp linux-3.1.1/arch/x86/kernel/cpu/perf_event.c linux-3.1.1/arch/x86/kernel/cpu/perf_event.c
16797 +--- linux-3.1.1/arch/x86/kernel/cpu/perf_event.c 2011-11-11 15:19:27.000000000 -0500
16798 ++++ linux-3.1.1/arch/x86/kernel/cpu/perf_event.c 2011-11-16 18:40:08.000000000 -0500
16799 +@@ -795,6 +795,8 @@ static int x86_schedule_events(struct cp
16800 int i, j, w, wmax, num = 0;
16801 struct hw_perf_event *hwc;
16802
16803 @@ -11162,7 +11180,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/cpu/perf_event.c linux-3.0.9/arch/x86/ker
16804 bitmap_zero(used_mask, X86_PMC_IDX_MAX);
16805
16806 for (i = 0; i < n; i++) {
16807 -@@ -1875,7 +1877,7 @@ perf_callchain_user(struct perf_callchai
16808 +@@ -1919,7 +1921,7 @@ perf_callchain_user(struct perf_callchai
16809 break;
16810
16811 perf_callchain_store(entry, frame.return_address);
16812 @@ -11171,9 +11189,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/cpu/perf_event.c linux-3.0.9/arch/x86/ker
16813 }
16814 }
16815
16816 -diff -urNp linux-3.0.9/arch/x86/kernel/crash.c linux-3.0.9/arch/x86/kernel/crash.c
16817 ---- linux-3.0.9/arch/x86/kernel/crash.c 2011-11-11 13:12:24.000000000 -0500
16818 -+++ linux-3.0.9/arch/x86/kernel/crash.c 2011-11-15 20:02:59.000000000 -0500
16819 +diff -urNp linux-3.1.1/arch/x86/kernel/crash.c linux-3.1.1/arch/x86/kernel/crash.c
16820 +--- linux-3.1.1/arch/x86/kernel/crash.c 2011-11-11 15:19:27.000000000 -0500
16821 ++++ linux-3.1.1/arch/x86/kernel/crash.c 2011-11-16 18:39:07.000000000 -0500
16822 @@ -42,7 +42,7 @@ static void kdump_nmi_callback(int cpu,
16823 regs = args->regs;
16824
16825 @@ -11183,9 +11201,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/crash.c linux-3.0.9/arch/x86/kernel/crash
16826 crash_fixup_ss_esp(&fixed_regs, regs);
16827 regs = &fixed_regs;
16828 }
16829 -diff -urNp linux-3.0.9/arch/x86/kernel/doublefault_32.c linux-3.0.9/arch/x86/kernel/doublefault_32.c
16830 ---- linux-3.0.9/arch/x86/kernel/doublefault_32.c 2011-11-11 13:12:24.000000000 -0500
16831 -+++ linux-3.0.9/arch/x86/kernel/doublefault_32.c 2011-11-15 20:02:59.000000000 -0500
16832 +diff -urNp linux-3.1.1/arch/x86/kernel/doublefault_32.c linux-3.1.1/arch/x86/kernel/doublefault_32.c
16833 +--- linux-3.1.1/arch/x86/kernel/doublefault_32.c 2011-11-11 15:19:27.000000000 -0500
16834 ++++ linux-3.1.1/arch/x86/kernel/doublefault_32.c 2011-11-16 18:39:07.000000000 -0500
16835 @@ -11,7 +11,7 @@
16836
16837 #define DOUBLEFAULT_STACKSIZE (1024)
16838 @@ -11217,9 +11235,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/doublefault_32.c linux-3.0.9/arch/x86/ker
16839 .fs = __KERNEL_PERCPU,
16840
16841 .__cr3 = __pa_nodebug(swapper_pg_dir),
16842 -diff -urNp linux-3.0.9/arch/x86/kernel/dumpstack_32.c linux-3.0.9/arch/x86/kernel/dumpstack_32.c
16843 ---- linux-3.0.9/arch/x86/kernel/dumpstack_32.c 2011-11-11 13:12:24.000000000 -0500
16844 -+++ linux-3.0.9/arch/x86/kernel/dumpstack_32.c 2011-11-15 20:02:59.000000000 -0500
16845 +diff -urNp linux-3.1.1/arch/x86/kernel/dumpstack_32.c linux-3.1.1/arch/x86/kernel/dumpstack_32.c
16846 +--- linux-3.1.1/arch/x86/kernel/dumpstack_32.c 2011-11-11 15:19:27.000000000 -0500
16847 ++++ linux-3.1.1/arch/x86/kernel/dumpstack_32.c 2011-11-16 18:39:07.000000000 -0500
16848 @@ -38,15 +38,13 @@ void dump_trace(struct task_struct *task
16849 bp = stack_frame(task, regs);
16850
16851 @@ -11283,10 +11301,26 @@ diff -urNp linux-3.0.9/arch/x86/kernel/dumpstack_32.c linux-3.0.9/arch/x86/kerne
16852 if (ip < PAGE_OFFSET)
16853 return 0;
16854 if (probe_kernel_address((unsigned short *)ip, ud2))
16855 -diff -urNp linux-3.0.9/arch/x86/kernel/dumpstack_64.c linux-3.0.9/arch/x86/kernel/dumpstack_64.c
16856 ---- linux-3.0.9/arch/x86/kernel/dumpstack_64.c 2011-11-11 13:12:24.000000000 -0500
16857 -+++ linux-3.0.9/arch/x86/kernel/dumpstack_64.c 2011-11-15 20:02:59.000000000 -0500
16858 -@@ -147,9 +147,9 @@ void dump_trace(struct task_struct *task
16859 +@@ -139,3 +139,15 @@ int is_valid_bugaddr(unsigned long ip)
16860 +
16861 + return ud2 == 0x0b0f;
16862 + }
16863 ++
16864 ++#ifdef CONFIG_PAX_MEMORY_STACKLEAK
16865 ++void pax_check_alloca(unsigned long size)
16866 ++{
16867 ++ unsigned long sp = (unsigned long)&sp, stack_left;
16868 ++
16869 ++ /* all kernel stacks are of the same size */
16870 ++ stack_left = sp & (THREAD_SIZE - 1);
16871 ++ BUG_ON(stack_left < 256 || size >= stack_left - 256);
16872 ++}
16873 ++EXPORT_SYMBOL(pax_check_alloca);
16874 ++#endif
16875 +diff -urNp linux-3.1.1/arch/x86/kernel/dumpstack_64.c linux-3.1.1/arch/x86/kernel/dumpstack_64.c
16876 +--- linux-3.1.1/arch/x86/kernel/dumpstack_64.c 2011-11-11 15:19:27.000000000 -0500
16877 ++++ linux-3.1.1/arch/x86/kernel/dumpstack_64.c 2011-11-16 18:39:07.000000000 -0500
16878 +@@ -119,9 +119,9 @@ void dump_trace(struct task_struct *task
16879 unsigned long *irq_stack_end =
16880 (unsigned long *)per_cpu(irq_stack_ptr, cpu);
16881 unsigned used = 0;
16882 @@ -11297,7 +11331,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/dumpstack_64.c linux-3.0.9/arch/x86/kerne
16883
16884 if (!task)
16885 task = current;
16886 -@@ -167,10 +167,10 @@ void dump_trace(struct task_struct *task
16887 +@@ -142,10 +142,10 @@ void dump_trace(struct task_struct *task
16888 * current stack address. If the stacks consist of nested
16889 * exceptions
16890 */
16891 @@ -11309,7 +11343,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/dumpstack_64.c linux-3.0.9/arch/x86/kerne
16892 estack_end = in_exception_stack(cpu, (unsigned long)stack,
16893 &used, &id);
16894
16895 -@@ -178,7 +178,7 @@ void dump_trace(struct task_struct *task
16896 +@@ -153,7 +153,7 @@ void dump_trace(struct task_struct *task
16897 if (ops->stack(data, id) < 0)
16898 break;
16899
16900 @@ -11318,7 +11352,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/dumpstack_64.c linux-3.0.9/arch/x86/kerne
16901 data, estack_end, &graph);
16902 ops->stack(data, "<EOE>");
16903 /*
16904 -@@ -197,7 +197,7 @@ void dump_trace(struct task_struct *task
16905 +@@ -172,7 +172,7 @@ void dump_trace(struct task_struct *task
16906 if (in_irq_stack(stack, irq_stack, irq_stack_end)) {
16907 if (ops->stack(data, "IRQ") < 0)
16908 break;
16909 @@ -11327,7 +11361,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/dumpstack_64.c linux-3.0.9/arch/x86/kerne
16910 ops, data, irq_stack_end, &graph);
16911 /*
16912 * We link to the next stack (which would be
16913 -@@ -218,7 +218,8 @@ void dump_trace(struct task_struct *task
16914 +@@ -191,7 +191,8 @@ void dump_trace(struct task_struct *task
16915 /*
16916 * This handles the process stack:
16917 */
16918 @@ -11337,9 +11371,60 @@ diff -urNp linux-3.0.9/arch/x86/kernel/dumpstack_64.c linux-3.0.9/arch/x86/kerne
16919 put_cpu();
16920 }
16921 EXPORT_SYMBOL(dump_trace);
16922 -diff -urNp linux-3.0.9/arch/x86/kernel/dumpstack.c linux-3.0.9/arch/x86/kernel/dumpstack.c
16923 ---- linux-3.0.9/arch/x86/kernel/dumpstack.c 2011-11-11 13:12:24.000000000 -0500
16924 -+++ linux-3.0.9/arch/x86/kernel/dumpstack.c 2011-11-15 20:02:59.000000000 -0500
16925 +@@ -305,3 +306,50 @@ int is_valid_bugaddr(unsigned long ip)
16926 +
16927 + return ud2 == 0x0b0f;
16928 + }
16929 ++
16930 ++#ifdef CONFIG_PAX_MEMORY_STACKLEAK
16931 ++void pax_check_alloca(unsigned long size)
16932 ++{
16933 ++ unsigned long sp = (unsigned long)&sp, stack_start, stack_end;
16934 ++ unsigned cpu, used;
16935 ++ char *id;
16936 ++
16937 ++ /* check the process stack first */
16938 ++ stack_start = (unsigned long)task_stack_page(current);
16939 ++ stack_end = stack_start + THREAD_SIZE;
16940 ++ if (likely(stack_start <= sp && sp < stack_end)) {
16941 ++ unsigned long stack_left = sp & (THREAD_SIZE - 1);
16942 ++ BUG_ON(stack_left < 256 || size >= stack_left - 256);
16943 ++ return;
16944 ++ }
16945 ++
16946 ++ cpu = get_cpu();
16947 ++
16948 ++ /* check the irq stacks */
16949 ++ stack_end = (unsigned long)per_cpu(irq_stack_ptr, cpu);
16950 ++ stack_start = stack_end - IRQ_STACK_SIZE;
16951 ++ if (stack_start <= sp && sp < stack_end) {
16952 ++ unsigned long stack_left = sp & (IRQ_STACK_SIZE - 1);
16953 ++ put_cpu();
16954 ++ BUG_ON(stack_left < 256 || size >= stack_left - 256);
16955 ++ return;
16956 ++ }
16957 ++
16958 ++ /* check the exception stacks */
16959 ++ used = 0;
16960 ++ stack_end = (unsigned long)in_exception_stack(cpu, sp, &used, &id);
16961 ++ stack_start = stack_end - EXCEPTION_STKSZ;
16962 ++ if (stack_end && stack_start <= sp && sp < stack_end) {
16963 ++ unsigned long stack_left = sp & (EXCEPTION_STKSZ - 1);
16964 ++ put_cpu();
16965 ++ BUG_ON(stack_left < 256 || size >= stack_left - 256);
16966 ++ return;
16967 ++ }
16968 ++
16969 ++ put_cpu();
16970 ++
16971 ++ /* unknown stack */
16972 ++ BUG();
16973 ++}
16974 ++EXPORT_SYMBOL(pax_check_alloca);
16975 ++#endif
16976 +diff -urNp linux-3.1.1/arch/x86/kernel/dumpstack.c linux-3.1.1/arch/x86/kernel/dumpstack.c
16977 +--- linux-3.1.1/arch/x86/kernel/dumpstack.c 2011-11-11 15:19:27.000000000 -0500
16978 ++++ linux-3.1.1/arch/x86/kernel/dumpstack.c 2011-11-16 18:40:08.000000000 -0500
16979 @@ -2,6 +2,9 @@
16980 * Copyright (C) 1991, 1992 Linus Torvalds
16981 * Copyright (C) 2000, 2001, 2002 Andi Kleen, SuSE Labs
16982 @@ -11483,9 +11568,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/dumpstack.c linux-3.0.9/arch/x86/kernel/d
16983 report_bug(regs->ip, regs);
16984
16985 if (__die(str, regs, err))
16986 -diff -urNp linux-3.0.9/arch/x86/kernel/early_printk.c linux-3.0.9/arch/x86/kernel/early_printk.c
16987 ---- linux-3.0.9/arch/x86/kernel/early_printk.c 2011-11-11 13:12:24.000000000 -0500
16988 -+++ linux-3.0.9/arch/x86/kernel/early_printk.c 2011-11-15 20:02:59.000000000 -0500
16989 +diff -urNp linux-3.1.1/arch/x86/kernel/early_printk.c linux-3.1.1/arch/x86/kernel/early_printk.c
16990 +--- linux-3.1.1/arch/x86/kernel/early_printk.c 2011-11-11 15:19:27.000000000 -0500
16991 ++++ linux-3.1.1/arch/x86/kernel/early_printk.c 2011-11-16 18:40:08.000000000 -0500
16992 @@ -7,6 +7,7 @@
16993 #include <linux/pci_regs.h>
16994 #include <linux/pci_ids.h>
16995 @@ -11503,10 +11588,10 @@ diff -urNp linux-3.0.9/arch/x86/kernel/early_printk.c linux-3.0.9/arch/x86/kerne
16996 va_start(ap, fmt);
16997 n = vscnprintf(buf, sizeof(buf), fmt, ap);
16998 early_console->write(early_console, buf, n);
16999 -diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/entry_32.S
17000 ---- linux-3.0.9/arch/x86/kernel/entry_32.S 2011-11-11 13:12:24.000000000 -0500
17001 -+++ linux-3.0.9/arch/x86/kernel/entry_32.S 2011-11-15 20:02:59.000000000 -0500
17002 -@@ -185,13 +185,146 @@
17003 +diff -urNp linux-3.1.1/arch/x86/kernel/entry_32.S linux-3.1.1/arch/x86/kernel/entry_32.S
17004 +--- linux-3.1.1/arch/x86/kernel/entry_32.S 2011-11-11 15:19:27.000000000 -0500
17005 ++++ linux-3.1.1/arch/x86/kernel/entry_32.S 2011-11-16 18:40:08.000000000 -0500
17006 +@@ -186,13 +186,146 @@
17007 /*CFI_REL_OFFSET gs, PT_GS*/
17008 .endm
17009 .macro SET_KERNEL_GS reg
17010 @@ -11654,7 +11739,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17011 cld
17012 PUSH_GS
17013 pushl_cfi %fs
17014 -@@ -214,7 +347,7 @@
17015 +@@ -215,7 +348,7 @@
17016 CFI_REL_OFFSET ecx, 0
17017 pushl_cfi %ebx
17018 CFI_REL_OFFSET ebx, 0
17019 @@ -11663,7 +11748,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17020 movl %edx, %ds
17021 movl %edx, %es
17022 movl $(__KERNEL_PERCPU), %edx
17023 -@@ -222,6 +355,15 @@
17024 +@@ -223,6 +356,15 @@
17025 SET_KERNEL_GS %edx
17026 .endm
17027
17028 @@ -11679,7 +11764,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17029 .macro RESTORE_INT_REGS
17030 popl_cfi %ebx
17031 CFI_RESTORE ebx
17032 -@@ -307,7 +449,7 @@ ENTRY(ret_from_fork)
17033 +@@ -308,7 +450,7 @@ ENTRY(ret_from_fork)
17034 popfl_cfi
17035 jmp syscall_exit
17036 CFI_ENDPROC
17037 @@ -11688,7 +11773,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17038
17039 /*
17040 * Interrupt exit functions should be protected against kprobes
17041 -@@ -332,7 +474,15 @@ check_userspace:
17042 +@@ -333,7 +475,15 @@ check_userspace:
17043 movb PT_CS(%esp), %al
17044 andl $(X86_EFLAGS_VM | SEGMENT_RPL_MASK), %eax
17045 cmpl $USER_RPL, %eax
17046 @@ -11704,7 +11789,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17047
17048 ENTRY(resume_userspace)
17049 LOCKDEP_SYS_EXIT
17050 -@@ -344,8 +494,8 @@ ENTRY(resume_userspace)
17051 +@@ -345,8 +495,8 @@ ENTRY(resume_userspace)
17052 andl $_TIF_WORK_MASK, %ecx # is there any work to be done on
17053 # int/exception return?
17054 jne work_pending
17055 @@ -11715,7 +11800,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17056
17057 #ifdef CONFIG_PREEMPT
17058 ENTRY(resume_kernel)
17059 -@@ -360,7 +510,7 @@ need_resched:
17060 +@@ -361,7 +511,7 @@ need_resched:
17061 jz restore_all
17062 call preempt_schedule_irq
17063 jmp need_resched
17064 @@ -11724,7 +11809,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17065 #endif
17066 CFI_ENDPROC
17067 /*
17068 -@@ -394,23 +544,34 @@ sysenter_past_esp:
17069 +@@ -395,23 +545,34 @@ sysenter_past_esp:
17070 /*CFI_REL_OFFSET cs, 0*/
17071 /*
17072 * Push current_thread_info()->sysenter_return to the stack.
17073 @@ -11762,7 +11847,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17074 movl %ebp,PT_EBP(%esp)
17075 .section __ex_table,"a"
17076 .align 4
17077 -@@ -433,12 +594,24 @@ sysenter_do_call:
17078 +@@ -434,12 +595,24 @@ sysenter_do_call:
17079 testl $_TIF_ALLWORK_MASK, %ecx
17080 jne sysexit_audit
17081 sysenter_exit:
17082 @@ -11787,7 +11872,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17083 PTGS_TO_GS
17084 ENABLE_INTERRUPTS_SYSEXIT
17085
17086 -@@ -455,6 +628,9 @@ sysenter_audit:
17087 +@@ -456,6 +629,9 @@ sysenter_audit:
17088 movl %eax,%edx /* 2nd arg: syscall number */
17089 movl $AUDIT_ARCH_I386,%eax /* 1st arg: audit arch */
17090 call audit_syscall_entry
17091 @@ -11797,7 +11882,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17092 pushl_cfi %ebx
17093 movl PT_EAX(%esp),%eax /* reload syscall number */
17094 jmp sysenter_do_call
17095 -@@ -481,11 +657,17 @@ sysexit_audit:
17096 +@@ -482,11 +658,17 @@ sysexit_audit:
17097
17098 CFI_ENDPROC
17099 .pushsection .fixup,"ax"
17100 @@ -11817,7 +11902,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17101 .popsection
17102 PTGS_TO_GS_EX
17103 ENDPROC(ia32_sysenter_target)
17104 -@@ -518,6 +700,15 @@ syscall_exit:
17105 +@@ -519,6 +701,15 @@ syscall_exit:
17106 testl $_TIF_ALLWORK_MASK, %ecx # current->work
17107 jne syscall_exit_work
17108
17109 @@ -11833,7 +11918,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17110 restore_all:
17111 TRACE_IRQS_IRET
17112 restore_all_notrace:
17113 -@@ -577,14 +768,34 @@ ldt_ss:
17114 +@@ -578,14 +769,34 @@ ldt_ss:
17115 * compensating for the offset by changing to the ESPFIX segment with
17116 * a base address that matches for the difference.
17117 */
17118 @@ -11871,7 +11956,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17119 pushl_cfi $__ESPFIX_SS
17120 pushl_cfi %eax /* new kernel esp */
17121 /* Disable interrupts, but do not irqtrace this section: we
17122 -@@ -613,34 +824,28 @@ work_resched:
17123 +@@ -614,34 +825,28 @@ work_resched:
17124 movl TI_flags(%ebp), %ecx
17125 andl $_TIF_WORK_MASK, %ecx # is there any work to be done other
17126 # than syscall tracing?
17127 @@ -11911,7 +11996,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17128
17129 # perform syscall exit tracing
17130 ALIGN
17131 -@@ -648,11 +853,14 @@ syscall_trace_entry:
17132 +@@ -649,11 +854,14 @@ syscall_trace_entry:
17133 movl $-ENOSYS,PT_EAX(%esp)
17134 movl %esp, %eax
17135 call syscall_trace_enter
17136 @@ -11927,7 +12012,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17137
17138 # perform syscall exit tracing
17139 ALIGN
17140 -@@ -665,20 +873,24 @@ syscall_exit_work:
17141 +@@ -666,20 +874,24 @@ syscall_exit_work:
17142 movl %esp, %eax
17143 call syscall_trace_leave
17144 jmp resume_userspace
17145 @@ -11955,7 +12040,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17146 CFI_ENDPROC
17147 /*
17148 * End of kprobes section
17149 -@@ -752,6 +964,36 @@ ptregs_clone:
17150 +@@ -753,6 +965,36 @@ ptregs_clone:
17151 CFI_ENDPROC
17152 ENDPROC(ptregs_clone)
17153
17154 @@ -11992,7 +12077,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17155 .macro FIXUP_ESPFIX_STACK
17156 /*
17157 * Switch back for ESPFIX stack to the normal zerobased stack
17158 -@@ -761,8 +1003,15 @@ ENDPROC(ptregs_clone)
17159 +@@ -762,8 +1004,15 @@ ENDPROC(ptregs_clone)
17160 * normal stack and adjusts ESP with the matching offset.
17161 */
17162 /* fixup the stack */
17163 @@ -12010,7 +12095,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17164 shl $16, %eax
17165 addl %esp, %eax /* the adjusted stack pointer */
17166 pushl_cfi $__KERNEL_DS
17167 -@@ -815,7 +1064,7 @@ vector=vector+1
17168 +@@ -816,7 +1065,7 @@ vector=vector+1
17169 .endr
17170 2: jmp common_interrupt
17171 .endr
17172 @@ -12019,7 +12104,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17173
17174 .previous
17175 END(interrupt)
17176 -@@ -863,7 +1112,7 @@ ENTRY(coprocessor_error)
17177 +@@ -864,7 +1113,7 @@ ENTRY(coprocessor_error)
17178 pushl_cfi $do_coprocessor_error
17179 jmp error_code
17180 CFI_ENDPROC
17181 @@ -12028,7 +12113,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17182
17183 ENTRY(simd_coprocessor_error)
17184 RING0_INT_FRAME
17185 -@@ -889,7 +1138,7 @@ ENTRY(simd_coprocessor_error)
17186 +@@ -885,7 +1134,7 @@ ENTRY(simd_coprocessor_error)
17187 #endif
17188 jmp error_code
17189 CFI_ENDPROC
17190 @@ -12037,7 +12122,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17191
17192 ENTRY(device_not_available)
17193 RING0_INT_FRAME
17194 -@@ -897,7 +1146,7 @@ ENTRY(device_not_available)
17195 +@@ -893,7 +1142,7 @@ ENTRY(device_not_available)
17196 pushl_cfi $do_device_not_available
17197 jmp error_code
17198 CFI_ENDPROC
17199 @@ -12046,7 +12131,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17200
17201 #ifdef CONFIG_PARAVIRT
17202 ENTRY(native_iret)
17203 -@@ -906,12 +1155,12 @@ ENTRY(native_iret)
17204 +@@ -902,12 +1151,12 @@ ENTRY(native_iret)
17205 .align 4
17206 .long native_iret, iret_exc
17207 .previous
17208 @@ -12061,7 +12146,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17209 #endif
17210
17211 ENTRY(overflow)
17212 -@@ -920,7 +1169,7 @@ ENTRY(overflow)
17213 +@@ -916,7 +1165,7 @@ ENTRY(overflow)
17214 pushl_cfi $do_overflow
17215 jmp error_code
17216 CFI_ENDPROC
17217 @@ -12070,7 +12155,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17218
17219 ENTRY(bounds)
17220 RING0_INT_FRAME
17221 -@@ -928,7 +1177,7 @@ ENTRY(bounds)
17222 +@@ -924,7 +1173,7 @@ ENTRY(bounds)
17223 pushl_cfi $do_bounds
17224 jmp error_code
17225 CFI_ENDPROC
17226 @@ -12079,7 +12164,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17227
17228 ENTRY(invalid_op)
17229 RING0_INT_FRAME
17230 -@@ -936,7 +1185,7 @@ ENTRY(invalid_op)
17231 +@@ -932,7 +1181,7 @@ ENTRY(invalid_op)
17232 pushl_cfi $do_invalid_op
17233 jmp error_code
17234 CFI_ENDPROC
17235 @@ -12088,7 +12173,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17236
17237 ENTRY(coprocessor_segment_overrun)
17238 RING0_INT_FRAME
17239 -@@ -944,35 +1193,35 @@ ENTRY(coprocessor_segment_overrun)
17240 +@@ -940,35 +1189,35 @@ ENTRY(coprocessor_segment_overrun)
17241 pushl_cfi $do_coprocessor_segment_overrun
17242 jmp error_code
17243 CFI_ENDPROC
17244 @@ -12129,7 +12214,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17245
17246 ENTRY(divide_error)
17247 RING0_INT_FRAME
17248 -@@ -980,7 +1229,7 @@ ENTRY(divide_error)
17249 +@@ -976,7 +1225,7 @@ ENTRY(divide_error)
17250 pushl_cfi $do_divide_error
17251 jmp error_code
17252 CFI_ENDPROC
17253 @@ -12138,7 +12223,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17254
17255 #ifdef CONFIG_X86_MCE
17256 ENTRY(machine_check)
17257 -@@ -989,7 +1238,7 @@ ENTRY(machine_check)
17258 +@@ -985,7 +1234,7 @@ ENTRY(machine_check)
17259 pushl_cfi machine_check_vector
17260 jmp error_code
17261 CFI_ENDPROC
17262 @@ -12147,7 +12232,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17263 #endif
17264
17265 ENTRY(spurious_interrupt_bug)
17266 -@@ -998,7 +1247,7 @@ ENTRY(spurious_interrupt_bug)
17267 +@@ -994,7 +1243,7 @@ ENTRY(spurious_interrupt_bug)
17268 pushl_cfi $do_spurious_interrupt_bug
17269 jmp error_code
17270 CFI_ENDPROC
17271 @@ -12156,7 +12241,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17272 /*
17273 * End of kprobes section
17274 */
17275 -@@ -1113,7 +1362,7 @@ BUILD_INTERRUPT3(xen_hvm_callback_vector
17276 +@@ -1109,7 +1358,7 @@ BUILD_INTERRUPT3(xen_hvm_callback_vector
17277
17278 ENTRY(mcount)
17279 ret
17280 @@ -12165,7 +12250,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17281
17282 ENTRY(ftrace_caller)
17283 cmpl $0, function_trace_stop
17284 -@@ -1142,7 +1391,7 @@ ftrace_graph_call:
17285 +@@ -1138,7 +1387,7 @@ ftrace_graph_call:
17286 .globl ftrace_stub
17287 ftrace_stub:
17288 ret
17289 @@ -12174,7 +12259,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17290
17291 #else /* ! CONFIG_DYNAMIC_FTRACE */
17292
17293 -@@ -1178,7 +1427,7 @@ trace:
17294 +@@ -1174,7 +1423,7 @@ trace:
17295 popl %ecx
17296 popl %eax
17297 jmp ftrace_stub
17298 @@ -12183,7 +12268,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17299 #endif /* CONFIG_DYNAMIC_FTRACE */
17300 #endif /* CONFIG_FUNCTION_TRACER */
17301
17302 -@@ -1199,7 +1448,7 @@ ENTRY(ftrace_graph_caller)
17303 +@@ -1195,7 +1444,7 @@ ENTRY(ftrace_graph_caller)
17304 popl %ecx
17305 popl %eax
17306 ret
17307 @@ -12192,7 +12277,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17308
17309 .globl return_to_handler
17310 return_to_handler:
17311 -@@ -1213,7 +1462,6 @@ return_to_handler:
17312 +@@ -1209,7 +1458,6 @@ return_to_handler:
17313 jmp *%ecx
17314 #endif
17315
17316 @@ -12200,7 +12285,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17317 #include "syscall_table_32.S"
17318
17319 syscall_table_size=(.-sys_call_table)
17320 -@@ -1259,15 +1507,18 @@ error_code:
17321 +@@ -1255,15 +1503,18 @@ error_code:
17322 movl $-1, PT_ORIG_EAX(%esp) # no syscall to restart
17323 REG_TO_PTGS %ecx
17324 SET_KERNEL_GS %ecx
17325 @@ -12221,7 +12306,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17326
17327 /*
17328 * Debug traps and NMI can happen at the one SYSENTER instruction
17329 -@@ -1309,7 +1560,7 @@ debug_stack_correct:
17330 +@@ -1305,7 +1556,7 @@ debug_stack_correct:
17331 call do_debug
17332 jmp ret_from_exception
17333 CFI_ENDPROC
17334 @@ -12230,7 +12315,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17335
17336 /*
17337 * NMI is doubly nasty. It can happen _while_ we're handling
17338 -@@ -1346,6 +1597,9 @@ nmi_stack_correct:
17339 +@@ -1342,6 +1593,9 @@ nmi_stack_correct:
17340 xorl %edx,%edx # zero error code
17341 movl %esp,%eax # pt_regs pointer
17342 call do_nmi
17343 @@ -12240,7 +12325,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17344 jmp restore_all_notrace
17345 CFI_ENDPROC
17346
17347 -@@ -1382,12 +1636,15 @@ nmi_espfix_stack:
17348 +@@ -1378,12 +1632,15 @@ nmi_espfix_stack:
17349 FIXUP_ESPFIX_STACK # %eax == %esp
17350 xorl %edx,%edx # zero error code
17351 call do_nmi
17352 @@ -12257,7 +12342,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17353
17354 ENTRY(int3)
17355 RING0_INT_FRAME
17356 -@@ -1399,14 +1656,14 @@ ENTRY(int3)
17357 +@@ -1395,14 +1652,14 @@ ENTRY(int3)
17358 call do_int3
17359 jmp ret_from_exception
17360 CFI_ENDPROC
17361 @@ -12274,7 +12359,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17362
17363 #ifdef CONFIG_KVM_GUEST
17364 ENTRY(async_page_fault)
17365 -@@ -1414,7 +1671,7 @@ ENTRY(async_page_fault)
17366 +@@ -1410,7 +1667,7 @@ ENTRY(async_page_fault)
17367 pushl_cfi $do_async_page_fault
17368 jmp error_code
17369 CFI_ENDPROC
17370 @@ -12283,10 +12368,10 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_32.S linux-3.0.9/arch/x86/kernel/en
17371 #endif
17372
17373 /*
17374 -diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/entry_64.S
17375 ---- linux-3.0.9/arch/x86/kernel/entry_64.S 2011-11-11 13:12:24.000000000 -0500
17376 -+++ linux-3.0.9/arch/x86/kernel/entry_64.S 2011-11-15 20:02:59.000000000 -0500
17377 -@@ -53,6 +53,8 @@
17378 +diff -urNp linux-3.1.1/arch/x86/kernel/entry_64.S linux-3.1.1/arch/x86/kernel/entry_64.S
17379 +--- linux-3.1.1/arch/x86/kernel/entry_64.S 2011-11-11 15:19:27.000000000 -0500
17380 ++++ linux-3.1.1/arch/x86/kernel/entry_64.S 2011-11-16 18:40:08.000000000 -0500
17381 +@@ -55,6 +55,8 @@
17382 #include <asm/paravirt.h>
17383 #include <asm/ftrace.h>
17384 #include <asm/percpu.h>
17385 @@ -12295,7 +12380,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17386
17387 /* Avoid __ASSEMBLER__'ifying <linux/audit.h> just for this. */
17388 #include <linux/elf-em.h>
17389 -@@ -66,8 +68,9 @@
17390 +@@ -68,8 +70,9 @@
17391 #ifdef CONFIG_FUNCTION_TRACER
17392 #ifdef CONFIG_DYNAMIC_FTRACE
17393 ENTRY(mcount)
17394 @@ -12306,7 +12391,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17395
17396 ENTRY(ftrace_caller)
17397 cmpl $0, function_trace_stop
17398 -@@ -90,8 +93,9 @@ GLOBAL(ftrace_graph_call)
17399 +@@ -92,8 +95,9 @@ GLOBAL(ftrace_graph_call)
17400 #endif
17401
17402 GLOBAL(ftrace_stub)
17403 @@ -12317,7 +12402,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17404
17405 #else /* ! CONFIG_DYNAMIC_FTRACE */
17406 ENTRY(mcount)
17407 -@@ -110,6 +114,7 @@ ENTRY(mcount)
17408 +@@ -112,6 +116,7 @@ ENTRY(mcount)
17409 #endif
17410
17411 GLOBAL(ftrace_stub)
17412 @@ -12325,7 +12410,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17413 retq
17414
17415 trace:
17416 -@@ -119,12 +124,13 @@ trace:
17417 +@@ -121,12 +126,13 @@ trace:
17418 movq 8(%rbp), %rsi
17419 subq $MCOUNT_INSN_SIZE, %rdi
17420
17421 @@ -12340,7 +12425,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17422 #endif /* CONFIG_DYNAMIC_FTRACE */
17423 #endif /* CONFIG_FUNCTION_TRACER */
17424
17425 -@@ -144,8 +150,9 @@ ENTRY(ftrace_graph_caller)
17426 +@@ -146,8 +152,9 @@ ENTRY(ftrace_graph_caller)
17427
17428 MCOUNT_RESTORE_FRAME
17429
17430 @@ -12351,7 +12436,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17431
17432 GLOBAL(return_to_handler)
17433 subq $24, %rsp
17434 -@@ -161,6 +168,7 @@ GLOBAL(return_to_handler)
17435 +@@ -163,6 +170,7 @@ GLOBAL(return_to_handler)
17436 movq 8(%rsp), %rdx
17437 movq (%rsp), %rax
17438 addq $24, %rsp
17439 @@ -12359,7 +12444,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17440 jmp *%rdi
17441 #endif
17442
17443 -@@ -176,6 +184,269 @@ ENTRY(native_usergs_sysret64)
17444 +@@ -178,6 +186,269 @@ ENTRY(native_usergs_sysret64)
17445 ENDPROC(native_usergs_sysret64)
17446 #endif /* CONFIG_PARAVIRT */
17447
17448 @@ -12629,28 +12714,16 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17449
17450 .macro TRACE_IRQS_IRETQ offset=ARGOFFSET
17451 #ifdef CONFIG_TRACE_IRQFLAGS
17452 -@@ -318,7 +589,7 @@ ENTRY(save_args)
17453 - leaq -RBP+8(%rsp),%rdi /* arg1 for handler */
17454 - movq_cfi rbp, 8 /* push %rbp */
17455 - leaq 8(%rsp), %rbp /* mov %rsp, %ebp */
17456 +@@ -319,7 +590,7 @@ ENDPROC(native_usergs_sysret64)
17457 + movq %rsp, %rsi
17458 +
17459 + leaq -RBP(%rsp),%rdi /* arg1 for handler */
17460 - testl $3, CS(%rdi)
17461 + testb $3, CS(%rdi)
17462 je 1f
17463 SWAPGS
17464 /*
17465 -@@ -338,9 +609,10 @@ ENTRY(save_args)
17466 - * We entered an interrupt context - irqs are off:
17467 - */
17468 - 2: TRACE_IRQS_OFF
17469 -+ pax_force_retaddr
17470 - ret
17471 - CFI_ENDPROC
17472 --END(save_args)
17473 -+ENDPROC(save_args)
17474 - .popsection
17475 -
17476 - ENTRY(save_rest)
17477 -@@ -354,9 +626,10 @@ ENTRY(save_rest)
17478 +@@ -350,9 +621,10 @@ ENTRY(save_rest)
17479 movq_cfi r15, R15+16
17480 movq %r11, 8(%rsp) /* return address */
17481 FIXUP_TOP_OF_STACK %r11, 16
17482 @@ -12662,7 +12735,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17483
17484 /* save complete stack frame */
17485 .pushsection .kprobes.text, "ax"
17486 -@@ -385,9 +658,10 @@ ENTRY(save_paranoid)
17487 +@@ -381,9 +653,10 @@ ENTRY(save_paranoid)
17488 js 1f /* negative -> in kernel */
17489 SWAPGS
17490 xorl %ebx,%ebx
17491 @@ -12675,7 +12748,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17492 .popsection
17493
17494 /*
17495 -@@ -409,7 +683,7 @@ ENTRY(ret_from_fork)
17496 +@@ -405,7 +678,7 @@ ENTRY(ret_from_fork)
17497
17498 RESTORE_REST
17499
17500 @@ -12684,7 +12757,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17501 je int_ret_from_sys_call
17502
17503 testl $_TIF_IA32, TI_flags(%rcx) # 32-bit compat task needs IRET
17504 -@@ -419,7 +693,7 @@ ENTRY(ret_from_fork)
17505 +@@ -415,7 +688,7 @@ ENTRY(ret_from_fork)
17506 jmp ret_from_sys_call # go to the SYSRET fastpath
17507
17508 CFI_ENDPROC
17509 @@ -12693,7 +12766,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17510
17511 /*
17512 * System call entry. Up to 6 arguments in registers are supported.
17513 -@@ -455,7 +729,7 @@ END(ret_from_fork)
17514 +@@ -451,7 +724,7 @@ END(ret_from_fork)
17515 ENTRY(system_call)
17516 CFI_STARTPROC simple
17517 CFI_SIGNAL_FRAME
17518 @@ -12702,7 +12775,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17519 CFI_REGISTER rip,rcx
17520 /*CFI_REGISTER rflags,r11*/
17521 SWAPGS_UNSAFE_STACK
17522 -@@ -468,12 +742,13 @@ ENTRY(system_call_after_swapgs)
17523 +@@ -464,12 +737,13 @@ ENTRY(system_call_after_swapgs)
17524
17525 movq %rsp,PER_CPU_VAR(old_rsp)
17526 movq PER_CPU_VAR(kernel_stack),%rsp
17527 @@ -12712,12 +12785,12 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17528 * and short:
17529 */
17530 ENABLE_INTERRUPTS(CLBR_NONE)
17531 -- SAVE_ARGS 8,1
17532 -+ SAVE_ARGS 8*6,1
17533 +- SAVE_ARGS 8,0
17534 ++ SAVE_ARGS 8*6,0
17535 movq %rax,ORIG_RAX-ARGOFFSET(%rsp)
17536 movq %rcx,RIP-ARGOFFSET(%rsp)
17537 CFI_REL_OFFSET rip,RIP-ARGOFFSET
17538 -@@ -502,6 +777,8 @@ sysret_check:
17539 +@@ -498,6 +772,8 @@ sysret_check:
17540 andl %edi,%edx
17541 jnz sysret_careful
17542 CFI_REMEMBER_STATE
17543 @@ -12726,7 +12799,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17544 /*
17545 * sysretq will re-enable interrupts:
17546 */
17547 -@@ -560,6 +837,9 @@ auditsys:
17548 +@@ -556,6 +832,9 @@ auditsys:
17549 movq %rax,%rsi /* 2nd arg: syscall number */
17550 movl $AUDIT_ARCH_X86_64,%edi /* 1st arg: audit arch */
17551 call audit_syscall_entry
17552 @@ -12736,7 +12809,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17553 LOAD_ARGS 0 /* reload call-clobbered registers */
17554 jmp system_call_fastpath
17555
17556 -@@ -590,6 +870,9 @@ tracesys:
17557 +@@ -586,6 +865,9 @@ tracesys:
17558 FIXUP_TOP_OF_STACK %rdi
17559 movq %rsp,%rdi
17560 call syscall_trace_enter
17561 @@ -12746,7 +12819,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17562 /*
17563 * Reload arg registers from stack in case ptrace changed them.
17564 * We don't reload %rax because syscall_trace_enter() returned
17565 -@@ -611,7 +894,7 @@ tracesys:
17566 +@@ -607,7 +889,7 @@ tracesys:
17567 GLOBAL(int_ret_from_sys_call)
17568 DISABLE_INTERRUPTS(CLBR_NONE)
17569 TRACE_IRQS_OFF
17570 @@ -12755,7 +12828,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17571 je retint_restore_args
17572 movl $_TIF_ALLWORK_MASK,%edi
17573 /* edi: mask to check */
17574 -@@ -668,7 +951,7 @@ int_restore_rest:
17575 +@@ -664,7 +946,7 @@ int_restore_rest:
17576 TRACE_IRQS_OFF
17577 jmp int_with_check
17578 CFI_ENDPROC
17579 @@ -12764,7 +12837,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17580
17581 /*
17582 * Certain special system calls that need to save a complete full stack frame.
17583 -@@ -684,7 +967,7 @@ ENTRY(\label)
17584 +@@ -680,7 +962,7 @@ ENTRY(\label)
17585 call \func
17586 jmp ptregscall_common
17587 CFI_ENDPROC
17588 @@ -12773,7 +12846,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17589 .endm
17590
17591 PTREGSCALL stub_clone, sys_clone, %r8
17592 -@@ -702,9 +985,10 @@ ENTRY(ptregscall_common)
17593 +@@ -698,9 +980,10 @@ ENTRY(ptregscall_common)
17594 movq_cfi_restore R12+8, r12
17595 movq_cfi_restore RBP+8, rbp
17596 movq_cfi_restore RBX+8, rbx
17597 @@ -12785,7 +12858,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17598
17599 ENTRY(stub_execve)
17600 CFI_STARTPROC
17601 -@@ -719,7 +1003,7 @@ ENTRY(stub_execve)
17602 +@@ -715,7 +998,7 @@ ENTRY(stub_execve)
17603 RESTORE_REST
17604 jmp int_ret_from_sys_call
17605 CFI_ENDPROC
17606 @@ -12794,7 +12867,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17607
17608 /*
17609 * sigreturn is special because it needs to restore all registers on return.
17610 -@@ -737,7 +1021,7 @@ ENTRY(stub_rt_sigreturn)
17611 +@@ -733,7 +1016,7 @@ ENTRY(stub_rt_sigreturn)
17612 RESTORE_REST
17613 jmp int_ret_from_sys_call
17614 CFI_ENDPROC
17615 @@ -12803,7 +12876,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17616
17617 /*
17618 * Build the entry stubs and pointer table with some assembler magic.
17619 -@@ -772,7 +1056,7 @@ vector=vector+1
17620 +@@ -768,7 +1051,7 @@ vector=vector+1
17621 2: jmp common_interrupt
17622 .endr
17623 CFI_ENDPROC
17624 @@ -12812,9 +12885,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17625
17626 .previous
17627 END(interrupt)
17628 -@@ -793,6 +1077,16 @@ END(interrupt)
17629 +@@ -789,6 +1072,16 @@ END(interrupt)
17630 CFI_ADJUST_CFA_OFFSET ORIG_RAX-RBP
17631 - call save_args
17632 + SAVE_ARGS_IRQ
17633 PARTIAL_FRAME 0
17634 +#ifdef CONFIG_PAX_MEMORY_UDEREF
17635 + testb $3, CS(%rdi)
17636 @@ -12829,8 +12902,8 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17637 call \func
17638 .endm
17639
17640 -@@ -825,7 +1119,7 @@ ret_from_intr:
17641 - CFI_ADJUST_CFA_OFFSET -8
17642 +@@ -820,7 +1113,7 @@ ret_from_intr:
17643 +
17644 exit_intr:
17645 GET_THREAD_INFO(%rcx)
17646 - testl $3,CS-ARGOFFSET(%rsp)
17647 @@ -12838,7 +12911,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17648 je retint_kernel
17649
17650 /* Interrupt came from user space */
17651 -@@ -847,12 +1141,16 @@ retint_swapgs: /* return to user-space
17652 +@@ -842,12 +1135,16 @@ retint_swapgs: /* return to user-space
17653 * The iretq could re-enable interrupts:
17654 */
17655 DISABLE_INTERRUPTS(CLBR_ANY)
17656 @@ -12855,7 +12928,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17657 /*
17658 * The iretq could re-enable interrupts:
17659 */
17660 -@@ -941,7 +1239,7 @@ ENTRY(retint_kernel)
17661 +@@ -936,7 +1233,7 @@ ENTRY(retint_kernel)
17662 #endif
17663
17664 CFI_ENDPROC
17665 @@ -12864,7 +12937,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17666 /*
17667 * End of kprobes section
17668 */
17669 -@@ -957,7 +1255,7 @@ ENTRY(\sym)
17670 +@@ -952,7 +1249,7 @@ ENTRY(\sym)
17671 interrupt \do_sym
17672 jmp ret_from_intr
17673 CFI_ENDPROC
17674 @@ -12873,7 +12946,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17675 .endm
17676
17677 #ifdef CONFIG_SMP
17678 -@@ -1027,12 +1325,22 @@ ENTRY(\sym)
17679 +@@ -1017,12 +1314,22 @@ ENTRY(\sym)
17680 CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
17681 call error_entry
17682 DEFAULT_FRAME 0
17683 @@ -12897,7 +12970,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17684 .endm
17685
17686 .macro paranoidzeroentry sym do_sym
17687 -@@ -1044,15 +1352,25 @@ ENTRY(\sym)
17688 +@@ -1034,15 +1341,25 @@ ENTRY(\sym)
17689 CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
17690 call save_paranoid
17691 TRACE_IRQS_OFF
17692 @@ -12925,7 +12998,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17693 .macro paranoidzeroentry_ist sym do_sym ist
17694 ENTRY(\sym)
17695 INTR_FRAME
17696 -@@ -1062,14 +1380,30 @@ ENTRY(\sym)
17697 +@@ -1052,14 +1369,30 @@ ENTRY(\sym)
17698 CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
17699 call save_paranoid
17700 TRACE_IRQS_OFF
17701 @@ -12957,7 +13030,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17702 .endm
17703
17704 .macro errorentry sym do_sym
17705 -@@ -1080,13 +1414,23 @@ ENTRY(\sym)
17706 +@@ -1070,13 +1403,23 @@ ENTRY(\sym)
17707 CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
17708 call error_entry
17709 DEFAULT_FRAME 0
17710 @@ -12982,7 +13055,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17711 .endm
17712
17713 /* error code is on the stack already */
17714 -@@ -1099,13 +1443,23 @@ ENTRY(\sym)
17715 +@@ -1089,13 +1432,23 @@ ENTRY(\sym)
17716 call save_paranoid
17717 DEFAULT_FRAME 0
17718 TRACE_IRQS_OFF
17719 @@ -13007,7 +13080,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17720 .endm
17721
17722 zeroentry divide_error do_divide_error
17723 -@@ -1134,9 +1488,10 @@ gs_change:
17724 +@@ -1125,9 +1478,10 @@ gs_change:
17725 2: mfence /* workaround */
17726 SWAPGS
17727 popfq_cfi
17728 @@ -13019,7 +13092,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17729
17730 .section __ex_table,"a"
17731 .align 8
17732 -@@ -1158,13 +1513,14 @@ ENTRY(kernel_thread_helper)
17733 +@@ -1149,13 +1503,14 @@ ENTRY(kernel_thread_helper)
17734 * Here we are in the child and the registers are set as they were
17735 * at kernel_thread() invocation in the parent.
17736 */
17737 @@ -13035,7 +13108,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17738
17739 /*
17740 * execve(). This function needs to use IRET, not SYSRET, to set up all state properly.
17741 -@@ -1193,9 +1549,10 @@ ENTRY(kernel_execve)
17742 +@@ -1184,9 +1539,10 @@ ENTRY(kernel_execve)
17743 je int_ret_from_sys_call
17744 RESTORE_ARGS
17745 UNFAKE_STACK_FRAME
17746 @@ -13047,7 +13120,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17747
17748 /* Call softirq on interrupt stack. Interrupts are off. */
17749 ENTRY(call_softirq)
17750 -@@ -1213,9 +1570,10 @@ ENTRY(call_softirq)
17751 +@@ -1204,9 +1560,10 @@ ENTRY(call_softirq)
17752 CFI_DEF_CFA_REGISTER rsp
17753 CFI_ADJUST_CFA_OFFSET -8
17754 decl PER_CPU_VAR(irq_count)
17755 @@ -13059,7 +13132,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17756
17757 #ifdef CONFIG_XEN
17758 zeroentry xen_hypervisor_callback xen_do_hypervisor_callback
17759 -@@ -1253,7 +1611,7 @@ ENTRY(xen_do_hypervisor_callback) # do
17760 +@@ -1244,7 +1601,7 @@ ENTRY(xen_do_hypervisor_callback) # do
17761 decl PER_CPU_VAR(irq_count)
17762 jmp error_exit
17763 CFI_ENDPROC
17764 @@ -13068,7 +13141,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17765
17766 /*
17767 * Hypervisor uses this for application faults while it executes.
17768 -@@ -1312,7 +1670,7 @@ ENTRY(xen_failsafe_callback)
17769 +@@ -1303,7 +1660,7 @@ ENTRY(xen_failsafe_callback)
17770 SAVE_ALL
17771 jmp error_exit
17772 CFI_ENDPROC
17773 @@ -13077,7 +13150,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17774
17775 apicinterrupt XEN_HVM_EVTCHN_CALLBACK \
17776 xen_hvm_callback_vector xen_evtchn_do_upcall
17777 -@@ -1361,16 +1719,31 @@ ENTRY(paranoid_exit)
17778 +@@ -1352,16 +1709,31 @@ ENTRY(paranoid_exit)
17779 TRACE_IRQS_OFF
17780 testl %ebx,%ebx /* swapgs needed? */
17781 jnz paranoid_restore
17782 @@ -13110,7 +13183,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17783 jmp irq_return
17784 paranoid_userspace:
17785 GET_THREAD_INFO(%rcx)
17786 -@@ -1399,7 +1772,7 @@ paranoid_schedule:
17787 +@@ -1390,7 +1762,7 @@ paranoid_schedule:
17788 TRACE_IRQS_OFF
17789 jmp paranoid_userspace
17790 CFI_ENDPROC
17791 @@ -13119,7 +13192,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17792
17793 /*
17794 * Exception entry point. This expects an error code/orig_rax on the stack.
17795 -@@ -1426,12 +1799,13 @@ ENTRY(error_entry)
17796 +@@ -1417,12 +1789,13 @@ ENTRY(error_entry)
17797 movq_cfi r14, R14+8
17798 movq_cfi r15, R15+8
17799 xorl %ebx,%ebx
17800 @@ -13134,7 +13207,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17801 ret
17802
17803 /*
17804 -@@ -1458,7 +1832,7 @@ bstep_iret:
17805 +@@ -1449,7 +1822,7 @@ bstep_iret:
17806 movq %rcx,RIP+8(%rsp)
17807 jmp error_swapgs
17808 CFI_ENDPROC
17809 @@ -13143,7 +13216,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17810
17811
17812 /* ebx: no swapgs flag (1: don't need swapgs, 0: need it) */
17813 -@@ -1478,7 +1852,7 @@ ENTRY(error_exit)
17814 +@@ -1469,7 +1842,7 @@ ENTRY(error_exit)
17815 jnz retint_careful
17816 jmp retint_swapgs
17817 CFI_ENDPROC
17818 @@ -13152,7 +13225,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17819
17820
17821 /* runs on exception stack */
17822 -@@ -1490,6 +1864,16 @@ ENTRY(nmi)
17823 +@@ -1481,6 +1854,16 @@ ENTRY(nmi)
17824 CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
17825 call save_paranoid
17826 DEFAULT_FRAME 0
17827 @@ -13169,7 +13242,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17828 /* paranoidentry do_nmi, 0; without TRACE_IRQS_OFF */
17829 movq %rsp,%rdi
17830 movq $-1,%rsi
17831 -@@ -1500,12 +1884,28 @@ ENTRY(nmi)
17832 +@@ -1491,12 +1874,28 @@ ENTRY(nmi)
17833 DISABLE_INTERRUPTS(CLBR_NONE)
17834 testl %ebx,%ebx /* swapgs needed? */
17835 jnz nmi_restore
17836 @@ -13199,7 +13272,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17837 jmp irq_return
17838 nmi_userspace:
17839 GET_THREAD_INFO(%rcx)
17840 -@@ -1534,14 +1934,14 @@ nmi_schedule:
17841 +@@ -1525,14 +1924,14 @@ nmi_schedule:
17842 jmp paranoid_exit
17843 CFI_ENDPROC
17844 #endif
17845 @@ -13216,9 +13289,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/entry_64.S linux-3.0.9/arch/x86/kernel/en
17846
17847 /*
17848 * End of kprobes section
17849 -diff -urNp linux-3.0.9/arch/x86/kernel/ftrace.c linux-3.0.9/arch/x86/kernel/ftrace.c
17850 ---- linux-3.0.9/arch/x86/kernel/ftrace.c 2011-11-11 13:12:24.000000000 -0500
17851 -+++ linux-3.0.9/arch/x86/kernel/ftrace.c 2011-11-15 20:02:59.000000000 -0500
17852 +diff -urNp linux-3.1.1/arch/x86/kernel/ftrace.c linux-3.1.1/arch/x86/kernel/ftrace.c
17853 +--- linux-3.1.1/arch/x86/kernel/ftrace.c 2011-11-11 15:19:27.000000000 -0500
17854 ++++ linux-3.1.1/arch/x86/kernel/ftrace.c 2011-11-16 18:39:07.000000000 -0500
17855 @@ -126,7 +126,7 @@ static void *mod_code_ip; /* holds the
17856 static const void *mod_code_newcode; /* holds the text to write to the IP */
17857
17858 @@ -13276,9 +13349,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/ftrace.c linux-3.0.9/arch/x86/kernel/ftra
17859 if (probe_kernel_read(code, (void *)ip, MCOUNT_INSN_SIZE))
17860 return -EFAULT;
17861
17862 -diff -urNp linux-3.0.9/arch/x86/kernel/head32.c linux-3.0.9/arch/x86/kernel/head32.c
17863 ---- linux-3.0.9/arch/x86/kernel/head32.c 2011-11-11 13:12:24.000000000 -0500
17864 -+++ linux-3.0.9/arch/x86/kernel/head32.c 2011-11-15 20:02:59.000000000 -0500
17865 +diff -urNp linux-3.1.1/arch/x86/kernel/head32.c linux-3.1.1/arch/x86/kernel/head32.c
17866 +--- linux-3.1.1/arch/x86/kernel/head32.c 2011-11-11 15:19:27.000000000 -0500
17867 ++++ linux-3.1.1/arch/x86/kernel/head32.c 2011-11-16 18:39:07.000000000 -0500
17868 @@ -19,6 +19,7 @@
17869 #include <asm/io_apic.h>
17870 #include <asm/bios_ebda.h>
17871 @@ -13296,9 +13369,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/head32.c linux-3.0.9/arch/x86/kernel/head
17872
17873 #ifdef CONFIG_BLK_DEV_INITRD
17874 /* Reserve INITRD */
17875 -diff -urNp linux-3.0.9/arch/x86/kernel/head_32.S linux-3.0.9/arch/x86/kernel/head_32.S
17876 ---- linux-3.0.9/arch/x86/kernel/head_32.S 2011-11-11 13:12:24.000000000 -0500
17877 -+++ linux-3.0.9/arch/x86/kernel/head_32.S 2011-11-15 20:02:59.000000000 -0500
17878 +diff -urNp linux-3.1.1/arch/x86/kernel/head_32.S linux-3.1.1/arch/x86/kernel/head_32.S
17879 +--- linux-3.1.1/arch/x86/kernel/head_32.S 2011-11-11 15:19:27.000000000 -0500
17880 ++++ linux-3.1.1/arch/x86/kernel/head_32.S 2011-11-16 18:39:07.000000000 -0500
17881 @@ -25,6 +25,12 @@
17882 /* Physical address */
17883 #define pa(X) ((X) - __PAGE_OFFSET)
17884 @@ -13733,9 +13806,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/head_32.S linux-3.0.9/arch/x86/kernel/hea
17885 + /* Be sure this is zeroed to avoid false validations in Xen */
17886 + .fill PAGE_SIZE_asm - GDT_SIZE,1,0
17887 + .endr
17888 -diff -urNp linux-3.0.9/arch/x86/kernel/head_64.S linux-3.0.9/arch/x86/kernel/head_64.S
17889 ---- linux-3.0.9/arch/x86/kernel/head_64.S 2011-11-11 13:12:24.000000000 -0500
17890 -+++ linux-3.0.9/arch/x86/kernel/head_64.S 2011-11-15 20:02:59.000000000 -0500
17891 +diff -urNp linux-3.1.1/arch/x86/kernel/head_64.S linux-3.1.1/arch/x86/kernel/head_64.S
17892 +--- linux-3.1.1/arch/x86/kernel/head_64.S 2011-11-11 15:19:27.000000000 -0500
17893 ++++ linux-3.1.1/arch/x86/kernel/head_64.S 2011-11-16 18:39:07.000000000 -0500
17894 @@ -19,6 +19,7 @@
17895 #include <asm/cache.h>
17896 #include <asm/processor-flags.h>
17897 @@ -14005,9 +14078,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/head_64.S linux-3.0.9/arch/x86/kernel/hea
17898
17899 __PAGE_ALIGNED_BSS
17900 .align PAGE_SIZE
17901 -diff -urNp linux-3.0.9/arch/x86/kernel/i386_ksyms_32.c linux-3.0.9/arch/x86/kernel/i386_ksyms_32.c
17902 ---- linux-3.0.9/arch/x86/kernel/i386_ksyms_32.c 2011-11-11 13:12:24.000000000 -0500
17903 -+++ linux-3.0.9/arch/x86/kernel/i386_ksyms_32.c 2011-11-15 20:02:59.000000000 -0500
17904 +diff -urNp linux-3.1.1/arch/x86/kernel/i386_ksyms_32.c linux-3.1.1/arch/x86/kernel/i386_ksyms_32.c
17905 +--- linux-3.1.1/arch/x86/kernel/i386_ksyms_32.c 2011-11-11 15:19:27.000000000 -0500
17906 ++++ linux-3.1.1/arch/x86/kernel/i386_ksyms_32.c 2011-11-16 18:39:07.000000000 -0500
17907 @@ -20,8 +20,12 @@ extern void cmpxchg8b_emu(void);
17908 EXPORT_SYMBOL(cmpxchg8b_emu);
17909 #endif
17910 @@ -14029,9 +14102,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/i386_ksyms_32.c linux-3.0.9/arch/x86/kern
17911 +#ifdef CONFIG_PAX_KERNEXEC
17912 +EXPORT_SYMBOL(__LOAD_PHYSICAL_ADDR);
17913 +#endif
17914 -diff -urNp linux-3.0.9/arch/x86/kernel/i8259.c linux-3.0.9/arch/x86/kernel/i8259.c
17915 ---- linux-3.0.9/arch/x86/kernel/i8259.c 2011-11-11 13:12:24.000000000 -0500
17916 -+++ linux-3.0.9/arch/x86/kernel/i8259.c 2011-11-15 20:02:59.000000000 -0500
17917 +diff -urNp linux-3.1.1/arch/x86/kernel/i8259.c linux-3.1.1/arch/x86/kernel/i8259.c
17918 +--- linux-3.1.1/arch/x86/kernel/i8259.c 2011-11-11 15:19:27.000000000 -0500
17919 ++++ linux-3.1.1/arch/x86/kernel/i8259.c 2011-11-16 18:39:07.000000000 -0500
17920 @@ -210,7 +210,7 @@ spurious_8259A_irq:
17921 "spurious 8259A interrupt: IRQ%d.\n", irq);
17922 spurious_irq_mask |= irqmask;
17923 @@ -14041,9 +14114,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/i8259.c linux-3.0.9/arch/x86/kernel/i8259
17924 /*
17925 * Theoretically we do not have to handle this IRQ,
17926 * but in Linux this does not cause problems and is
17927 -diff -urNp linux-3.0.9/arch/x86/kernel/init_task.c linux-3.0.9/arch/x86/kernel/init_task.c
17928 ---- linux-3.0.9/arch/x86/kernel/init_task.c 2011-11-11 13:12:24.000000000 -0500
17929 -+++ linux-3.0.9/arch/x86/kernel/init_task.c 2011-11-15 20:02:59.000000000 -0500
17930 +diff -urNp linux-3.1.1/arch/x86/kernel/init_task.c linux-3.1.1/arch/x86/kernel/init_task.c
17931 +--- linux-3.1.1/arch/x86/kernel/init_task.c 2011-11-11 15:19:27.000000000 -0500
17932 ++++ linux-3.1.1/arch/x86/kernel/init_task.c 2011-11-16 18:39:07.000000000 -0500
17933 @@ -20,8 +20,7 @@ static struct sighand_struct init_sighan
17934 * way process stacks are handled. This is done by having a special
17935 * "init_task" linker map entry..
17936 @@ -14062,9 +14135,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/init_task.c linux-3.0.9/arch/x86/kernel/i
17937 -
17938 +struct tss_struct init_tss[NR_CPUS] ____cacheline_internodealigned_in_smp = { [0 ... NR_CPUS-1] = INIT_TSS };
17939 +EXPORT_SYMBOL(init_tss);
17940 -diff -urNp linux-3.0.9/arch/x86/kernel/ioport.c linux-3.0.9/arch/x86/kernel/ioport.c
17941 ---- linux-3.0.9/arch/x86/kernel/ioport.c 2011-11-11 13:12:24.000000000 -0500
17942 -+++ linux-3.0.9/arch/x86/kernel/ioport.c 2011-11-15 20:02:59.000000000 -0500
17943 +diff -urNp linux-3.1.1/arch/x86/kernel/ioport.c linux-3.1.1/arch/x86/kernel/ioport.c
17944 +--- linux-3.1.1/arch/x86/kernel/ioport.c 2011-11-11 15:19:27.000000000 -0500
17945 ++++ linux-3.1.1/arch/x86/kernel/ioport.c 2011-11-16 18:40:08.000000000 -0500
17946 @@ -6,6 +6,7 @@
17947 #include <linux/sched.h>
17948 #include <linux/kernel.h>
17949 @@ -14108,9 +14181,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/ioport.c linux-3.0.9/arch/x86/kernel/iopo
17950 if (!capable(CAP_SYS_RAWIO))
17951 return -EPERM;
17952 }
17953 -diff -urNp linux-3.0.9/arch/x86/kernel/irq_32.c linux-3.0.9/arch/x86/kernel/irq_32.c
17954 ---- linux-3.0.9/arch/x86/kernel/irq_32.c 2011-11-11 13:12:24.000000000 -0500
17955 -+++ linux-3.0.9/arch/x86/kernel/irq_32.c 2011-11-15 20:02:59.000000000 -0500
17956 +diff -urNp linux-3.1.1/arch/x86/kernel/irq_32.c linux-3.1.1/arch/x86/kernel/irq_32.c
17957 +--- linux-3.1.1/arch/x86/kernel/irq_32.c 2011-11-11 15:19:27.000000000 -0500
17958 ++++ linux-3.1.1/arch/x86/kernel/irq_32.c 2011-11-16 18:39:07.000000000 -0500
17959 @@ -36,7 +36,7 @@ static int check_stack_overflow(void)
17960 __asm__ __volatile__("andl %%esp,%0" :
17961 "=r" (sp) : "0" (THREAD_SIZE - 1));
17962 @@ -14250,9 +14323,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/irq_32.c linux-3.0.9/arch/x86/kernel/irq_
17963 /*
17964 * Shouldn't happen, we returned above if in_interrupt():
17965 */
17966 -diff -urNp linux-3.0.9/arch/x86/kernel/irq.c linux-3.0.9/arch/x86/kernel/irq.c
17967 ---- linux-3.0.9/arch/x86/kernel/irq.c 2011-11-11 13:12:24.000000000 -0500
17968 -+++ linux-3.0.9/arch/x86/kernel/irq.c 2011-11-15 20:02:59.000000000 -0500
17969 +diff -urNp linux-3.1.1/arch/x86/kernel/irq.c linux-3.1.1/arch/x86/kernel/irq.c
17970 +--- linux-3.1.1/arch/x86/kernel/irq.c 2011-11-11 15:19:27.000000000 -0500
17971 ++++ linux-3.1.1/arch/x86/kernel/irq.c 2011-11-16 18:39:07.000000000 -0500
17972 @@ -17,7 +17,7 @@
17973 #include <asm/mce.h>
17974 #include <asm/hw_irq.h>
17975 @@ -14287,9 +14360,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/irq.c linux-3.0.9/arch/x86/kernel/irq.c
17976 #endif
17977 return sum;
17978 }
17979 -diff -urNp linux-3.0.9/arch/x86/kernel/kgdb.c linux-3.0.9/arch/x86/kernel/kgdb.c
17980 ---- linux-3.0.9/arch/x86/kernel/kgdb.c 2011-11-11 13:12:24.000000000 -0500
17981 -+++ linux-3.0.9/arch/x86/kernel/kgdb.c 2011-11-15 20:02:59.000000000 -0500
17982 +diff -urNp linux-3.1.1/arch/x86/kernel/kgdb.c linux-3.1.1/arch/x86/kernel/kgdb.c
17983 +--- linux-3.1.1/arch/x86/kernel/kgdb.c 2011-11-11 15:19:27.000000000 -0500
17984 ++++ linux-3.1.1/arch/x86/kernel/kgdb.c 2011-11-16 18:39:07.000000000 -0500
17985 @@ -124,11 +124,11 @@ char *dbg_get_reg(int regno, void *mem,
17986 #ifdef CONFIG_X86_32
17987 switch (regno) {
17988 @@ -14328,9 +14401,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/kgdb.c linux-3.0.9/arch/x86/kernel/kgdb.c
17989 if (user_mode(regs))
17990 return single_step_cont(regs, args);
17991 break;
17992 -diff -urNp linux-3.0.9/arch/x86/kernel/kprobes.c linux-3.0.9/arch/x86/kernel/kprobes.c
17993 ---- linux-3.0.9/arch/x86/kernel/kprobes.c 2011-11-11 13:12:24.000000000 -0500
17994 -+++ linux-3.0.9/arch/x86/kernel/kprobes.c 2011-11-15 20:02:59.000000000 -0500
17995 +diff -urNp linux-3.1.1/arch/x86/kernel/kprobes.c linux-3.1.1/arch/x86/kernel/kprobes.c
17996 +--- linux-3.1.1/arch/x86/kernel/kprobes.c 2011-11-11 15:19:27.000000000 -0500
17997 ++++ linux-3.1.1/arch/x86/kernel/kprobes.c 2011-11-16 18:39:07.000000000 -0500
17998 @@ -117,8 +117,11 @@ static void __kprobes __synthesize_relat
17999 } __attribute__((packed)) *insn;
18000
18001 @@ -14474,10 +14547,10 @@ diff -urNp linux-3.0.9/arch/x86/kernel/kprobes.c linux-3.0.9/arch/x86/kernel/kpr
18002 RELATIVE_ADDR_SIZE);
18003
18004 insn_buf[0] = RELATIVEJUMP_OPCODE;
18005 -diff -urNp linux-3.0.9/arch/x86/kernel/kvm.c linux-3.0.9/arch/x86/kernel/kvm.c
18006 ---- linux-3.0.9/arch/x86/kernel/kvm.c 2011-11-11 13:12:24.000000000 -0500
18007 -+++ linux-3.0.9/arch/x86/kernel/kvm.c 2011-11-15 20:02:59.000000000 -0500
18008 -@@ -426,6 +426,7 @@ static void __init paravirt_ops_setup(vo
18009 +diff -urNp linux-3.1.1/arch/x86/kernel/kvm.c linux-3.1.1/arch/x86/kernel/kvm.c
18010 +--- linux-3.1.1/arch/x86/kernel/kvm.c 2011-11-11 15:19:27.000000000 -0500
18011 ++++ linux-3.1.1/arch/x86/kernel/kvm.c 2011-11-16 18:39:07.000000000 -0500
18012 +@@ -437,6 +437,7 @@ static void __init paravirt_ops_setup(vo
18013 pv_mmu_ops.set_pud = kvm_set_pud;
18014 #if PAGETABLE_LEVELS == 4
18015 pv_mmu_ops.set_pgd = kvm_set_pgd;
18016 @@ -14485,9 +14558,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/kvm.c linux-3.0.9/arch/x86/kernel/kvm.c
18017 #endif
18018 #endif
18019 pv_mmu_ops.flush_tlb_user = kvm_flush_tlb;
18020 -diff -urNp linux-3.0.9/arch/x86/kernel/ldt.c linux-3.0.9/arch/x86/kernel/ldt.c
18021 ---- linux-3.0.9/arch/x86/kernel/ldt.c 2011-11-11 13:12:24.000000000 -0500
18022 -+++ linux-3.0.9/arch/x86/kernel/ldt.c 2011-11-15 20:02:59.000000000 -0500
18023 +diff -urNp linux-3.1.1/arch/x86/kernel/ldt.c linux-3.1.1/arch/x86/kernel/ldt.c
18024 +--- linux-3.1.1/arch/x86/kernel/ldt.c 2011-11-11 15:19:27.000000000 -0500
18025 ++++ linux-3.1.1/arch/x86/kernel/ldt.c 2011-11-16 18:39:07.000000000 -0500
18026 @@ -67,13 +67,13 @@ static int alloc_ldt(mm_context_t *pc, i
18027 if (reload) {
18028 #ifdef CONFIG_SMP
18029 @@ -14552,9 +14625,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/ldt.c linux-3.0.9/arch/x86/kernel/ldt.c
18030 fill_ldt(&ldt, &ldt_info);
18031 if (oldmode)
18032 ldt.avl = 0;
18033 -diff -urNp linux-3.0.9/arch/x86/kernel/machine_kexec_32.c linux-3.0.9/arch/x86/kernel/machine_kexec_32.c
18034 ---- linux-3.0.9/arch/x86/kernel/machine_kexec_32.c 2011-11-11 13:12:24.000000000 -0500
18035 -+++ linux-3.0.9/arch/x86/kernel/machine_kexec_32.c 2011-11-15 20:02:59.000000000 -0500
18036 +diff -urNp linux-3.1.1/arch/x86/kernel/machine_kexec_32.c linux-3.1.1/arch/x86/kernel/machine_kexec_32.c
18037 +--- linux-3.1.1/arch/x86/kernel/machine_kexec_32.c 2011-11-11 15:19:27.000000000 -0500
18038 ++++ linux-3.1.1/arch/x86/kernel/machine_kexec_32.c 2011-11-16 18:39:07.000000000 -0500
18039 @@ -27,7 +27,7 @@
18040 #include <asm/cacheflush.h>
18041 #include <asm/debugreg.h>
18042 @@ -14582,9 +14655,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/machine_kexec_32.c linux-3.0.9/arch/x86/k
18043
18044 relocate_kernel_ptr = control_page;
18045 page_list[PA_CONTROL_PAGE] = __pa(control_page);
18046 -diff -urNp linux-3.0.9/arch/x86/kernel/microcode_intel.c linux-3.0.9/arch/x86/kernel/microcode_intel.c
18047 ---- linux-3.0.9/arch/x86/kernel/microcode_intel.c 2011-11-11 13:12:24.000000000 -0500
18048 -+++ linux-3.0.9/arch/x86/kernel/microcode_intel.c 2011-11-15 20:02:59.000000000 -0500
18049 +diff -urNp linux-3.1.1/arch/x86/kernel/microcode_intel.c linux-3.1.1/arch/x86/kernel/microcode_intel.c
18050 +--- linux-3.1.1/arch/x86/kernel/microcode_intel.c 2011-11-11 15:19:27.000000000 -0500
18051 ++++ linux-3.1.1/arch/x86/kernel/microcode_intel.c 2011-11-16 18:39:07.000000000 -0500
18052 @@ -440,13 +440,13 @@ static enum ucode_state request_microcod
18053
18054 static int get_ucode_user(void *to, const void *from, size_t n)
18055 @@ -14601,10 +14674,10 @@ diff -urNp linux-3.0.9/arch/x86/kernel/microcode_intel.c linux-3.0.9/arch/x86/ke
18056 }
18057
18058 static void microcode_fini_cpu(int cpu)
18059 -diff -urNp linux-3.0.9/arch/x86/kernel/module.c linux-3.0.9/arch/x86/kernel/module.c
18060 ---- linux-3.0.9/arch/x86/kernel/module.c 2011-11-11 13:12:24.000000000 -0500
18061 -+++ linux-3.0.9/arch/x86/kernel/module.c 2011-11-15 20:02:59.000000000 -0500
18062 -@@ -36,21 +36,66 @@
18063 +diff -urNp linux-3.1.1/arch/x86/kernel/module.c linux-3.1.1/arch/x86/kernel/module.c
18064 +--- linux-3.1.1/arch/x86/kernel/module.c 2011-11-11 15:19:27.000000000 -0500
18065 ++++ linux-3.1.1/arch/x86/kernel/module.c 2011-11-16 18:39:07.000000000 -0500
18066 +@@ -36,15 +36,60 @@
18067 #define DEBUGP(fmt...)
18068 #endif
18069
18070 @@ -14630,12 +14703,6 @@ diff -urNp linux-3.0.9/arch/x86/kernel/module.c linux-3.0.9/arch/x86/kernel/modu
18071 +
18072 +}
18073 +
18074 - /* Free memory returned from module_alloc */
18075 - void module_free(struct module *mod, void *module_region)
18076 - {
18077 - vfree(module_region);
18078 - }
18079 -
18080 +#ifdef CONFIG_PAX_KERNEXEC
18081 +#ifdef CONFIG_X86_32
18082 +void *module_alloc_exec(unsigned long size)
18083 @@ -14670,10 +14737,10 @@ diff -urNp linux-3.0.9/arch/x86/kernel/module.c linux-3.0.9/arch/x86/kernel/modu
18084 +#endif
18085 +#endif
18086 +
18087 - /* We don't need anything special. */
18088 - int module_frob_arch_sections(Elf_Ehdr *hdr,
18089 - Elf_Shdr *sechdrs,
18090 -@@ -70,14 +115,16 @@ int apply_relocate(Elf32_Shdr *sechdrs,
18091 + #ifdef CONFIG_X86_32
18092 + int apply_relocate(Elf32_Shdr *sechdrs,
18093 + const char *strtab,
18094 +@@ -55,14 +100,16 @@ int apply_relocate(Elf32_Shdr *sechdrs,
18095 unsigned int i;
18096 Elf32_Rel *rel = (void *)sechdrs[relsec].sh_addr;
18097 Elf32_Sym *sym;
18098 @@ -14693,7 +14760,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/module.c linux-3.0.9/arch/x86/kernel/modu
18099 /* This is the symbol it is referring to. Note that all
18100 undefined symbols have been resolved. */
18101 sym = (Elf32_Sym *)sechdrs[symindex].sh_addr
18102 -@@ -86,11 +133,15 @@ int apply_relocate(Elf32_Shdr *sechdrs,
18103 +@@ -71,11 +118,15 @@ int apply_relocate(Elf32_Shdr *sechdrs,
18104 switch (ELF32_R_TYPE(rel[i].r_info)) {
18105 case R_386_32:
18106 /* We add the value into the location given */
18107 @@ -14711,7 +14778,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/module.c linux-3.0.9/arch/x86/kernel/modu
18108 break;
18109 default:
18110 printk(KERN_ERR "module %s: Unknown relocation: %u\n",
18111 -@@ -146,21 +197,30 @@ int apply_relocate_add(Elf64_Shdr *sechd
18112 +@@ -120,21 +171,30 @@ int apply_relocate_add(Elf64_Shdr *sechd
18113 case R_X86_64_NONE:
18114 break;
18115 case R_X86_64_64:
18116 @@ -14742,9 +14809,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/module.c linux-3.0.9/arch/x86/kernel/modu
18117 #if 0
18118 if ((s64)val != *(s32 *)loc)
18119 goto overflow;
18120 -diff -urNp linux-3.0.9/arch/x86/kernel/paravirt.c linux-3.0.9/arch/x86/kernel/paravirt.c
18121 ---- linux-3.0.9/arch/x86/kernel/paravirt.c 2011-11-11 13:12:24.000000000 -0500
18122 -+++ linux-3.0.9/arch/x86/kernel/paravirt.c 2011-11-15 20:02:59.000000000 -0500
18123 +diff -urNp linux-3.1.1/arch/x86/kernel/paravirt.c linux-3.1.1/arch/x86/kernel/paravirt.c
18124 +--- linux-3.1.1/arch/x86/kernel/paravirt.c 2011-11-11 15:19:27.000000000 -0500
18125 ++++ linux-3.1.1/arch/x86/kernel/paravirt.c 2011-11-16 18:40:08.000000000 -0500
18126 @@ -53,6 +53,9 @@ u64 _paravirt_ident_64(u64 x)
18127 {
18128 return x;
18129 @@ -14806,7 +14873,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/paravirt.c linux-3.0.9/arch/x86/kernel/pa
18130
18131 return insn_len;
18132 }
18133 -@@ -294,22 +304,22 @@ void arch_flush_lazy_mmu_mode(void)
18134 +@@ -302,7 +312,7 @@ void arch_flush_lazy_mmu_mode(void)
18135 preempt_enable();
18136 }
18137
18138 @@ -14815,7 +14882,8 @@ diff -urNp linux-3.0.9/arch/x86/kernel/paravirt.c linux-3.0.9/arch/x86/kernel/pa
18139 .name = "bare hardware",
18140 .paravirt_enabled = 0,
18141 .kernel_rpl = 0,
18142 - .shared_kernel_pmd = 1, /* Only used when CONFIG_X86_PAE is set */
18143 +@@ -313,16 +323,16 @@ struct pv_info pv_info = {
18144 + #endif
18145 };
18146
18147 -struct pv_init_ops pv_init_ops = {
18148 @@ -14826,6 +14894,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/paravirt.c linux-3.0.9/arch/x86/kernel/pa
18149 -struct pv_time_ops pv_time_ops = {
18150 +struct pv_time_ops pv_time_ops __read_only = {
18151 .sched_clock = native_sched_clock,
18152 + .steal_clock = native_steal_clock,
18153 };
18154
18155 -struct pv_irq_ops pv_irq_ops = {
18156 @@ -14833,7 +14902,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/paravirt.c linux-3.0.9/arch/x86/kernel/pa
18157 .save_fl = __PV_IS_CALLEE_SAVE(native_save_fl),
18158 .restore_fl = __PV_IS_CALLEE_SAVE(native_restore_fl),
18159 .irq_disable = __PV_IS_CALLEE_SAVE(native_irq_disable),
18160 -@@ -321,7 +331,7 @@ struct pv_irq_ops pv_irq_ops = {
18161 +@@ -334,7 +344,7 @@ struct pv_irq_ops pv_irq_ops = {
18162 #endif
18163 };
18164
18165 @@ -14842,7 +14911,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/paravirt.c linux-3.0.9/arch/x86/kernel/pa
18166 .cpuid = native_cpuid,
18167 .get_debugreg = native_get_debugreg,
18168 .set_debugreg = native_set_debugreg,
18169 -@@ -382,21 +392,26 @@ struct pv_cpu_ops pv_cpu_ops = {
18170 +@@ -395,21 +405,26 @@ struct pv_cpu_ops pv_cpu_ops = {
18171 .end_context_switch = paravirt_nop,
18172 };
18173
18174 @@ -14872,7 +14941,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/paravirt.c linux-3.0.9/arch/x86/kernel/pa
18175
18176 .read_cr2 = native_read_cr2,
18177 .write_cr2 = native_write_cr2,
18178 -@@ -446,6 +461,7 @@ struct pv_mmu_ops pv_mmu_ops = {
18179 +@@ -459,6 +474,7 @@ struct pv_mmu_ops pv_mmu_ops = {
18180 .make_pud = PTE_IDENT,
18181
18182 .set_pgd = native_set_pgd,
18183 @@ -14880,7 +14949,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/paravirt.c linux-3.0.9/arch/x86/kernel/pa
18184 #endif
18185 #endif /* PAGETABLE_LEVELS >= 3 */
18186
18187 -@@ -465,6 +481,12 @@ struct pv_mmu_ops pv_mmu_ops = {
18188 +@@ -478,6 +494,12 @@ struct pv_mmu_ops pv_mmu_ops = {
18189 },
18190
18191 .set_fixmap = native_set_fixmap,
18192 @@ -14893,9 +14962,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/paravirt.c linux-3.0.9/arch/x86/kernel/pa
18193 };
18194
18195 EXPORT_SYMBOL_GPL(pv_time_ops);
18196 -diff -urNp linux-3.0.9/arch/x86/kernel/paravirt-spinlocks.c linux-3.0.9/arch/x86/kernel/paravirt-spinlocks.c
18197 ---- linux-3.0.9/arch/x86/kernel/paravirt-spinlocks.c 2011-11-11 13:12:24.000000000 -0500
18198 -+++ linux-3.0.9/arch/x86/kernel/paravirt-spinlocks.c 2011-11-15 20:02:59.000000000 -0500
18199 +diff -urNp linux-3.1.1/arch/x86/kernel/paravirt-spinlocks.c linux-3.1.1/arch/x86/kernel/paravirt-spinlocks.c
18200 +--- linux-3.1.1/arch/x86/kernel/paravirt-spinlocks.c 2011-11-11 15:19:27.000000000 -0500
18201 ++++ linux-3.1.1/arch/x86/kernel/paravirt-spinlocks.c 2011-11-16 18:39:07.000000000 -0500
18202 @@ -13,7 +13,7 @@ default_spin_lock_flags(arch_spinlock_t
18203 arch_spin_lock(lock);
18204 }
18205 @@ -14905,9 +14974,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/paravirt-spinlocks.c linux-3.0.9/arch/x86
18206 #ifdef CONFIG_SMP
18207 .spin_is_locked = __ticket_spin_is_locked,
18208 .spin_is_contended = __ticket_spin_is_contended,
18209 -diff -urNp linux-3.0.9/arch/x86/kernel/pci-iommu_table.c linux-3.0.9/arch/x86/kernel/pci-iommu_table.c
18210 ---- linux-3.0.9/arch/x86/kernel/pci-iommu_table.c 2011-11-11 13:12:24.000000000 -0500
18211 -+++ linux-3.0.9/arch/x86/kernel/pci-iommu_table.c 2011-11-15 20:02:59.000000000 -0500
18212 +diff -urNp linux-3.1.1/arch/x86/kernel/pci-iommu_table.c linux-3.1.1/arch/x86/kernel/pci-iommu_table.c
18213 +--- linux-3.1.1/arch/x86/kernel/pci-iommu_table.c 2011-11-11 15:19:27.000000000 -0500
18214 ++++ linux-3.1.1/arch/x86/kernel/pci-iommu_table.c 2011-11-16 18:40:08.000000000 -0500
18215 @@ -2,7 +2,7 @@
18216 #include <asm/iommu_table.h>
18217 #include <linux/string.h>
18218 @@ -14926,10 +14995,10 @@ diff -urNp linux-3.0.9/arch/x86/kernel/pci-iommu_table.c linux-3.0.9/arch/x86/ke
18219 /* Simple cyclic dependency checker. */
18220 for (p = start; p < finish; p++) {
18221 q = find_dependents_of(start, finish, p);
18222 -diff -urNp linux-3.0.9/arch/x86/kernel/process_32.c linux-3.0.9/arch/x86/kernel/process_32.c
18223 ---- linux-3.0.9/arch/x86/kernel/process_32.c 2011-11-11 13:12:24.000000000 -0500
18224 -+++ linux-3.0.9/arch/x86/kernel/process_32.c 2011-11-15 20:02:59.000000000 -0500
18225 -@@ -65,6 +65,7 @@ asmlinkage void ret_from_fork(void) __as
18226 +diff -urNp linux-3.1.1/arch/x86/kernel/process_32.c linux-3.1.1/arch/x86/kernel/process_32.c
18227 +--- linux-3.1.1/arch/x86/kernel/process_32.c 2011-11-11 15:19:27.000000000 -0500
18228 ++++ linux-3.1.1/arch/x86/kernel/process_32.c 2011-11-16 18:39:07.000000000 -0500
18229 +@@ -66,6 +66,7 @@ asmlinkage void ret_from_fork(void) __as
18230 unsigned long thread_saved_pc(struct task_struct *tsk)
18231 {
18232 return ((unsigned long *)tsk->thread.sp)[3];
18233 @@ -14937,7 +15006,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/process_32.c linux-3.0.9/arch/x86/kernel/
18234 }
18235
18236 #ifndef CONFIG_SMP
18237 -@@ -126,15 +127,14 @@ void __show_regs(struct pt_regs *regs, i
18238 +@@ -128,15 +129,14 @@ void __show_regs(struct pt_regs *regs, i
18239 unsigned long sp;
18240 unsigned short ss, gs;
18241
18242 @@ -14955,7 +15024,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/process_32.c linux-3.0.9/arch/x86/kernel/
18243
18244 show_regs_common();
18245
18246 -@@ -196,13 +196,14 @@ int copy_thread(unsigned long clone_flag
18247 +@@ -198,13 +198,14 @@ int copy_thread(unsigned long clone_flag
18248 struct task_struct *tsk;
18249 int err;
18250
18251 @@ -14971,7 +15040,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/process_32.c linux-3.0.9/arch/x86/kernel/
18252
18253 p->thread.ip = (unsigned long) ret_from_fork;
18254
18255 -@@ -292,7 +293,7 @@ __switch_to(struct task_struct *prev_p,
18256 +@@ -294,7 +295,7 @@ __switch_to(struct task_struct *prev_p,
18257 struct thread_struct *prev = &prev_p->thread,
18258 *next = &next_p->thread;
18259 int cpu = smp_processor_id();
18260 @@ -14980,7 +15049,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/process_32.c linux-3.0.9/arch/x86/kernel/
18261 bool preload_fpu;
18262
18263 /* never put a printk in __switch_to... printk() calls wake_up*() indirectly */
18264 -@@ -327,6 +328,10 @@ __switch_to(struct task_struct *prev_p,
18265 +@@ -329,6 +330,10 @@ __switch_to(struct task_struct *prev_p,
18266 */
18267 lazy_save_gs(prev->gs);
18268
18269 @@ -14991,7 +15060,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/process_32.c linux-3.0.9/arch/x86/kernel/
18270 /*
18271 * Load the per-thread Thread-Local Storage descriptor.
18272 */
18273 -@@ -362,6 +367,9 @@ __switch_to(struct task_struct *prev_p,
18274 +@@ -364,6 +369,9 @@ __switch_to(struct task_struct *prev_p,
18275 */
18276 arch_end_context_switch(next_p);
18277
18278 @@ -15001,7 +15070,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/process_32.c linux-3.0.9/arch/x86/kernel/
18279 if (preload_fpu)
18280 __math_state_restore();
18281
18282 -@@ -371,8 +379,6 @@ __switch_to(struct task_struct *prev_p,
18283 +@@ -373,8 +381,6 @@ __switch_to(struct task_struct *prev_p,
18284 if (prev->gs | next->gs)
18285 lazy_load_gs(next->gs);
18286
18287 @@ -15010,15 +15079,15 @@ diff -urNp linux-3.0.9/arch/x86/kernel/process_32.c linux-3.0.9/arch/x86/kernel/
18288 return prev_p;
18289 }
18290
18291 -@@ -402,4 +408,3 @@ unsigned long get_wchan(struct task_stru
18292 +@@ -404,4 +410,3 @@ unsigned long get_wchan(struct task_stru
18293 } while (count++ < 16);
18294 return 0;
18295 }
18296 -
18297 -diff -urNp linux-3.0.9/arch/x86/kernel/process_64.c linux-3.0.9/arch/x86/kernel/process_64.c
18298 ---- linux-3.0.9/arch/x86/kernel/process_64.c 2011-11-11 13:12:24.000000000 -0500
18299 -+++ linux-3.0.9/arch/x86/kernel/process_64.c 2011-11-15 20:02:59.000000000 -0500
18300 -@@ -87,7 +87,7 @@ static void __exit_idle(void)
18301 +diff -urNp linux-3.1.1/arch/x86/kernel/process_64.c linux-3.1.1/arch/x86/kernel/process_64.c
18302 +--- linux-3.1.1/arch/x86/kernel/process_64.c 2011-11-11 15:19:27.000000000 -0500
18303 ++++ linux-3.1.1/arch/x86/kernel/process_64.c 2011-11-16 18:39:07.000000000 -0500
18304 +@@ -88,7 +88,7 @@ static void __exit_idle(void)
18305 void exit_idle(void)
18306 {
18307 /* idle loop has pid 0 */
18308 @@ -15027,7 +15096,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/process_64.c linux-3.0.9/arch/x86/kernel/
18309 return;
18310 __exit_idle();
18311 }
18312 -@@ -260,8 +260,7 @@ int copy_thread(unsigned long clone_flag
18313 +@@ -262,8 +262,7 @@ int copy_thread(unsigned long clone_flag
18314 struct pt_regs *childregs;
18315 struct task_struct *me = current;
18316
18317 @@ -15037,7 +15106,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/process_64.c linux-3.0.9/arch/x86/kernel/
18318 *childregs = *regs;
18319
18320 childregs->ax = 0;
18321 -@@ -273,6 +272,7 @@ int copy_thread(unsigned long clone_flag
18322 +@@ -275,6 +274,7 @@ int copy_thread(unsigned long clone_flag
18323 p->thread.sp = (unsigned long) childregs;
18324 p->thread.sp0 = (unsigned long) (childregs+1);
18325 p->thread.usersp = me->thread.usersp;
18326 @@ -15045,7 +15114,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/process_64.c linux-3.0.9/arch/x86/kernel/
18327
18328 set_tsk_thread_flag(p, TIF_FORK);
18329
18330 -@@ -375,7 +375,7 @@ __switch_to(struct task_struct *prev_p,
18331 +@@ -377,7 +377,7 @@ __switch_to(struct task_struct *prev_p,
18332 struct thread_struct *prev = &prev_p->thread;
18333 struct thread_struct *next = &next_p->thread;
18334 int cpu = smp_processor_id();
18335 @@ -15054,7 +15123,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/process_64.c linux-3.0.9/arch/x86/kernel/
18336 unsigned fsindex, gsindex;
18337 bool preload_fpu;
18338
18339 -@@ -471,10 +471,9 @@ __switch_to(struct task_struct *prev_p,
18340 +@@ -473,10 +473,9 @@ __switch_to(struct task_struct *prev_p,
18341 prev->usersp = percpu_read(old_rsp);
18342 percpu_write(old_rsp, next->usersp);
18343 percpu_write(current_task, next_p);
18344 @@ -15067,7 +15136,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/process_64.c linux-3.0.9/arch/x86/kernel/
18345
18346 /*
18347 * Now maybe reload the debug registers and handle I/O bitmaps
18348 -@@ -536,12 +535,11 @@ unsigned long get_wchan(struct task_stru
18349 +@@ -538,12 +537,11 @@ unsigned long get_wchan(struct task_stru
18350 if (!p || p == current || p->state == TASK_RUNNING)
18351 return 0;
18352 stack = (unsigned long)task_stack_page(p);
18353 @@ -15082,9 +15151,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/process_64.c linux-3.0.9/arch/x86/kernel/
18354 return 0;
18355 ip = *(u64 *)(fp+8);
18356 if (!in_sched_functions(ip))
18357 -diff -urNp linux-3.0.9/arch/x86/kernel/process.c linux-3.0.9/arch/x86/kernel/process.c
18358 ---- linux-3.0.9/arch/x86/kernel/process.c 2011-11-11 13:12:24.000000000 -0500
18359 -+++ linux-3.0.9/arch/x86/kernel/process.c 2011-11-15 20:02:59.000000000 -0500
18360 +diff -urNp linux-3.1.1/arch/x86/kernel/process.c linux-3.1.1/arch/x86/kernel/process.c
18361 +--- linux-3.1.1/arch/x86/kernel/process.c 2011-11-11 15:19:27.000000000 -0500
18362 ++++ linux-3.1.1/arch/x86/kernel/process.c 2011-11-16 18:39:07.000000000 -0500
18363 @@ -48,16 +48,33 @@ void free_thread_xstate(struct task_stru
18364
18365 void free_thread_info(struct thread_info *ti)
18366 @@ -15174,7 +15243,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/process.c linux-3.0.9/arch/x86/kernel/pro
18367 {
18368 local_irq_disable();
18369 /*
18370 -@@ -668,16 +688,37 @@ static int __init idle_setup(char *str)
18371 +@@ -645,16 +665,37 @@ static int __init idle_setup(char *str)
18372 }
18373 early_param("idle", idle_setup);
18374
18375 @@ -15222,10 +15291,10 @@ diff -urNp linux-3.0.9/arch/x86/kernel/process.c linux-3.0.9/arch/x86/kernel/pro
18376 +#endif
18377 +}
18378 +#endif
18379 -diff -urNp linux-3.0.9/arch/x86/kernel/ptrace.c linux-3.0.9/arch/x86/kernel/ptrace.c
18380 ---- linux-3.0.9/arch/x86/kernel/ptrace.c 2011-11-11 13:12:24.000000000 -0500
18381 -+++ linux-3.0.9/arch/x86/kernel/ptrace.c 2011-11-15 20:02:59.000000000 -0500
18382 -@@ -821,7 +821,7 @@ long arch_ptrace(struct task_struct *chi
18383 +diff -urNp linux-3.1.1/arch/x86/kernel/ptrace.c linux-3.1.1/arch/x86/kernel/ptrace.c
18384 +--- linux-3.1.1/arch/x86/kernel/ptrace.c 2011-11-11 15:19:27.000000000 -0500
18385 ++++ linux-3.1.1/arch/x86/kernel/ptrace.c 2011-11-16 18:39:07.000000000 -0500
18386 +@@ -822,7 +822,7 @@ long arch_ptrace(struct task_struct *chi
18387 unsigned long addr, unsigned long data)
18388 {
18389 int ret;
18390 @@ -15234,7 +15303,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/ptrace.c linux-3.0.9/arch/x86/kernel/ptra
18391
18392 switch (request) {
18393 /* read the word at location addr in the USER area. */
18394 -@@ -906,14 +906,14 @@ long arch_ptrace(struct task_struct *chi
18395 +@@ -907,14 +907,14 @@ long arch_ptrace(struct task_struct *chi
18396 if ((int) addr < 0)
18397 return -EIO;
18398 ret = do_get_thread_area(child, addr,
18399 @@ -15251,7 +15320,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/ptrace.c linux-3.0.9/arch/x86/kernel/ptra
18400 break;
18401 #endif
18402
18403 -@@ -1330,7 +1330,7 @@ static void fill_sigtrap_info(struct tas
18404 +@@ -1331,7 +1331,7 @@ static void fill_sigtrap_info(struct tas
18405 memset(info, 0, sizeof(*info));
18406 info->si_signo = SIGTRAP;
18407 info->si_code = si_code;
18408 @@ -15260,9 +15329,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/ptrace.c linux-3.0.9/arch/x86/kernel/ptra
18409 }
18410
18411 void user_single_step_siginfo(struct task_struct *tsk,
18412 -diff -urNp linux-3.0.9/arch/x86/kernel/pvclock.c linux-3.0.9/arch/x86/kernel/pvclock.c
18413 ---- linux-3.0.9/arch/x86/kernel/pvclock.c 2011-11-11 13:12:24.000000000 -0500
18414 -+++ linux-3.0.9/arch/x86/kernel/pvclock.c 2011-11-15 20:02:59.000000000 -0500
18415 +diff -urNp linux-3.1.1/arch/x86/kernel/pvclock.c linux-3.1.1/arch/x86/kernel/pvclock.c
18416 +--- linux-3.1.1/arch/x86/kernel/pvclock.c 2011-11-11 15:19:27.000000000 -0500
18417 ++++ linux-3.1.1/arch/x86/kernel/pvclock.c 2011-11-16 18:39:07.000000000 -0500
18418 @@ -81,11 +81,11 @@ unsigned long pvclock_tsc_khz(struct pvc
18419 return pv_tsc_khz;
18420 }
18421 @@ -15291,9 +15360,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/pvclock.c linux-3.0.9/arch/x86/kernel/pvc
18422 } while (unlikely(last != ret));
18423
18424 return ret;
18425 -diff -urNp linux-3.0.9/arch/x86/kernel/reboot.c linux-3.0.9/arch/x86/kernel/reboot.c
18426 ---- linux-3.0.9/arch/x86/kernel/reboot.c 2011-11-11 13:12:24.000000000 -0500
18427 -+++ linux-3.0.9/arch/x86/kernel/reboot.c 2011-11-15 20:02:59.000000000 -0500
18428 +diff -urNp linux-3.1.1/arch/x86/kernel/reboot.c linux-3.1.1/arch/x86/kernel/reboot.c
18429 +--- linux-3.1.1/arch/x86/kernel/reboot.c 2011-11-11 15:19:27.000000000 -0500
18430 ++++ linux-3.1.1/arch/x86/kernel/reboot.c 2011-11-16 18:39:07.000000000 -0500
18431 @@ -35,7 +35,7 @@ void (*pm_power_off)(void);
18432 EXPORT_SYMBOL(pm_power_off);
18433
18434 @@ -15425,9 +15494,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/reboot.c linux-3.0.9/arch/x86/kernel/rebo
18435 }
18436
18437 struct machine_ops machine_ops = {
18438 -diff -urNp linux-3.0.9/arch/x86/kernel/setup.c linux-3.0.9/arch/x86/kernel/setup.c
18439 ---- linux-3.0.9/arch/x86/kernel/setup.c 2011-11-11 13:12:24.000000000 -0500
18440 -+++ linux-3.0.9/arch/x86/kernel/setup.c 2011-11-15 20:02:59.000000000 -0500
18441 +diff -urNp linux-3.1.1/arch/x86/kernel/setup.c linux-3.1.1/arch/x86/kernel/setup.c
18442 +--- linux-3.1.1/arch/x86/kernel/setup.c 2011-11-11 15:19:27.000000000 -0500
18443 ++++ linux-3.1.1/arch/x86/kernel/setup.c 2011-11-16 18:39:07.000000000 -0500
18444 @@ -447,7 +447,7 @@ static void __init parse_setup_data(void
18445
18446 switch (data->type) {
18447 @@ -15466,9 +15535,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/setup.c linux-3.0.9/arch/x86/kernel/setup
18448 data_resource.end = virt_to_phys(_edata)-1;
18449 bss_resource.start = virt_to_phys(&__bss_start);
18450 bss_resource.end = virt_to_phys(&__bss_stop)-1;
18451 -diff -urNp linux-3.0.9/arch/x86/kernel/setup_percpu.c linux-3.0.9/arch/x86/kernel/setup_percpu.c
18452 ---- linux-3.0.9/arch/x86/kernel/setup_percpu.c 2011-11-11 13:12:24.000000000 -0500
18453 -+++ linux-3.0.9/arch/x86/kernel/setup_percpu.c 2011-11-15 20:02:59.000000000 -0500
18454 +diff -urNp linux-3.1.1/arch/x86/kernel/setup_percpu.c linux-3.1.1/arch/x86/kernel/setup_percpu.c
18455 +--- linux-3.1.1/arch/x86/kernel/setup_percpu.c 2011-11-11 15:19:27.000000000 -0500
18456 ++++ linux-3.1.1/arch/x86/kernel/setup_percpu.c 2011-11-16 18:39:07.000000000 -0500
18457 @@ -21,19 +21,17 @@
18458 #include <asm/cpu.h>
18459 #include <asm/stackprotector.h>
18460 @@ -15532,9 +15601,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/setup_percpu.c linux-3.0.9/arch/x86/kerne
18461 /*
18462 * Up to this point, the boot CPU has been using .init.data
18463 * area. Reload any changed state for the boot CPU.
18464 -diff -urNp linux-3.0.9/arch/x86/kernel/signal.c linux-3.0.9/arch/x86/kernel/signal.c
18465 ---- linux-3.0.9/arch/x86/kernel/signal.c 2011-11-11 13:12:24.000000000 -0500
18466 -+++ linux-3.0.9/arch/x86/kernel/signal.c 2011-11-15 20:02:59.000000000 -0500
18467 +diff -urNp linux-3.1.1/arch/x86/kernel/signal.c linux-3.1.1/arch/x86/kernel/signal.c
18468 +--- linux-3.1.1/arch/x86/kernel/signal.c 2011-11-11 15:19:27.000000000 -0500
18469 ++++ linux-3.1.1/arch/x86/kernel/signal.c 2011-11-16 19:39:49.000000000 -0500
18470 @@ -198,7 +198,7 @@ static unsigned long align_sigframe(unsi
18471 * Align the stack pointer according to the i386 ABI,
18472 * i.e. so that on function entry ((sp + 4) & 15) == 0.
18473 @@ -15600,16 +15669,16 @@ diff -urNp linux-3.0.9/arch/x86/kernel/signal.c linux-3.0.9/arch/x86/kernel/sign
18474 } put_user_catch(err);
18475
18476 if (err)
18477 -@@ -769,6 +772,8 @@ static void do_signal(struct pt_regs *re
18478 +@@ -762,6 +765,8 @@ static void do_signal(struct pt_regs *re
18479 + siginfo_t info;
18480 int signr;
18481 - sigset_t *oldset;
18482
18483 + pax_track_stack();
18484 +
18485 /*
18486 * We want the common case to go fast, which is why we may in certain
18487 * cases get here from kernel mode. Just return without doing anything
18488 -@@ -776,7 +781,7 @@ static void do_signal(struct pt_regs *re
18489 +@@ -769,7 +774,7 @@ static void do_signal(struct pt_regs *re
18490 * X86_32: vm86 regs switched out by assembly code before reaching
18491 * here, so testing against kernel CS suffices.
18492 */
18493 @@ -15617,10 +15686,10 @@ diff -urNp linux-3.0.9/arch/x86/kernel/signal.c linux-3.0.9/arch/x86/kernel/sign
18494 + if (!user_mode_novm(regs))
18495 return;
18496
18497 - if (current_thread_info()->status & TS_RESTORE_SIGMASK)
18498 -diff -urNp linux-3.0.9/arch/x86/kernel/smpboot.c linux-3.0.9/arch/x86/kernel/smpboot.c
18499 ---- linux-3.0.9/arch/x86/kernel/smpboot.c 2011-11-11 13:12:24.000000000 -0500
18500 -+++ linux-3.0.9/arch/x86/kernel/smpboot.c 2011-11-15 20:02:59.000000000 -0500
18501 + signr = get_signal_to_deliver(&info, &ka, regs, NULL);
18502 +diff -urNp linux-3.1.1/arch/x86/kernel/smpboot.c linux-3.1.1/arch/x86/kernel/smpboot.c
18503 +--- linux-3.1.1/arch/x86/kernel/smpboot.c 2011-11-11 15:19:27.000000000 -0500
18504 ++++ linux-3.1.1/arch/x86/kernel/smpboot.c 2011-11-16 18:39:07.000000000 -0500
18505 @@ -709,17 +709,20 @@ static int __cpuinit do_boot_cpu(int api
18506 set_idle_for_cpu(cpu, c_idle.idle);
18507 do_rest:
18508 @@ -15658,9 +15727,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/smpboot.c linux-3.0.9/arch/x86/kernel/smp
18509 err = do_boot_cpu(apicid, cpu);
18510 if (err) {
18511 pr_debug("do_boot_cpu failed %d\n", err);
18512 -diff -urNp linux-3.0.9/arch/x86/kernel/step.c linux-3.0.9/arch/x86/kernel/step.c
18513 ---- linux-3.0.9/arch/x86/kernel/step.c 2011-11-11 13:12:24.000000000 -0500
18514 -+++ linux-3.0.9/arch/x86/kernel/step.c 2011-11-15 20:02:59.000000000 -0500
18515 +diff -urNp linux-3.1.1/arch/x86/kernel/step.c linux-3.1.1/arch/x86/kernel/step.c
18516 +--- linux-3.1.1/arch/x86/kernel/step.c 2011-11-11 15:19:27.000000000 -0500
18517 ++++ linux-3.1.1/arch/x86/kernel/step.c 2011-11-16 18:39:07.000000000 -0500
18518 @@ -27,10 +27,10 @@ unsigned long convert_ip_to_linear(struc
18519 struct desc_struct *desc;
18520 unsigned long base;
18521 @@ -15694,26 +15763,17 @@ diff -urNp linux-3.0.9/arch/x86/kernel/step.c linux-3.0.9/arch/x86/kernel/step.c
18522 copied = access_process_vm(child, addr, opcode, sizeof(opcode), 0);
18523 for (i = 0; i < copied; i++) {
18524 switch (opcode[i]) {
18525 -@@ -74,7 +78,7 @@ static int is_setting_trap_flag(struct t
18526 -
18527 - #ifdef CONFIG_X86_64
18528 - case 0x40 ... 0x4f:
18529 -- if (regs->cs != __USER_CS)
18530 -+ if ((regs->cs & 0xffff) != __USER_CS)
18531 - /* 32-bit mode: register increment */
18532 - return 0;
18533 - /* 64-bit mode: REX prefix */
18534 -diff -urNp linux-3.0.9/arch/x86/kernel/syscall_table_32.S linux-3.0.9/arch/x86/kernel/syscall_table_32.S
18535 ---- linux-3.0.9/arch/x86/kernel/syscall_table_32.S 2011-11-11 13:12:24.000000000 -0500
18536 -+++ linux-3.0.9/arch/x86/kernel/syscall_table_32.S 2011-11-15 20:02:59.000000000 -0500
18537 +diff -urNp linux-3.1.1/arch/x86/kernel/syscall_table_32.S linux-3.1.1/arch/x86/kernel/syscall_table_32.S
18538 +--- linux-3.1.1/arch/x86/kernel/syscall_table_32.S 2011-11-11 15:19:27.000000000 -0500
18539 ++++ linux-3.1.1/arch/x86/kernel/syscall_table_32.S 2011-11-16 18:39:07.000000000 -0500
18540 @@ -1,3 +1,4 @@
18541 +.section .rodata,"a",@progbits
18542 ENTRY(sys_call_table)
18543 .long sys_restart_syscall /* 0 - old "setup()" system call, used for restarting */
18544 .long sys_exit
18545 -diff -urNp linux-3.0.9/arch/x86/kernel/sys_i386_32.c linux-3.0.9/arch/x86/kernel/sys_i386_32.c
18546 ---- linux-3.0.9/arch/x86/kernel/sys_i386_32.c 2011-11-11 13:12:24.000000000 -0500
18547 -+++ linux-3.0.9/arch/x86/kernel/sys_i386_32.c 2011-11-15 20:02:59.000000000 -0500
18548 +diff -urNp linux-3.1.1/arch/x86/kernel/sys_i386_32.c linux-3.1.1/arch/x86/kernel/sys_i386_32.c
18549 +--- linux-3.1.1/arch/x86/kernel/sys_i386_32.c 2011-11-11 15:19:27.000000000 -0500
18550 ++++ linux-3.1.1/arch/x86/kernel/sys_i386_32.c 2011-11-16 18:39:07.000000000 -0500
18551 @@ -24,17 +24,224 @@
18552
18553 #include <asm/syscalls.h>
18554 @@ -15951,9 +16011,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/sys_i386_32.c linux-3.0.9/arch/x86/kernel
18555 +
18556 + return addr;
18557 }
18558 -diff -urNp linux-3.0.9/arch/x86/kernel/sys_x86_64.c linux-3.0.9/arch/x86/kernel/sys_x86_64.c
18559 ---- linux-3.0.9/arch/x86/kernel/sys_x86_64.c 2011-11-11 13:12:24.000000000 -0500
18560 -+++ linux-3.0.9/arch/x86/kernel/sys_x86_64.c 2011-11-15 20:02:59.000000000 -0500
18561 +diff -urNp linux-3.1.1/arch/x86/kernel/sys_x86_64.c linux-3.1.1/arch/x86/kernel/sys_x86_64.c
18562 +--- linux-3.1.1/arch/x86/kernel/sys_x86_64.c 2011-11-11 15:19:27.000000000 -0500
18563 ++++ linux-3.1.1/arch/x86/kernel/sys_x86_64.c 2011-11-16 18:39:07.000000000 -0500
18564 @@ -32,8 +32,8 @@ out:
18565 return error;
18566 }
18567 @@ -16091,10 +16151,10 @@ diff -urNp linux-3.0.9/arch/x86/kernel/sys_x86_64.c linux-3.0.9/arch/x86/kernel/
18568 mm->cached_hole_size = ~0UL;
18569
18570 return addr;
18571 -diff -urNp linux-3.0.9/arch/x86/kernel/tboot.c linux-3.0.9/arch/x86/kernel/tboot.c
18572 ---- linux-3.0.9/arch/x86/kernel/tboot.c 2011-11-11 13:12:24.000000000 -0500
18573 -+++ linux-3.0.9/arch/x86/kernel/tboot.c 2011-11-15 20:02:59.000000000 -0500
18574 -@@ -217,7 +217,7 @@ static int tboot_setup_sleep(void)
18575 +diff -urNp linux-3.1.1/arch/x86/kernel/tboot.c linux-3.1.1/arch/x86/kernel/tboot.c
18576 +--- linux-3.1.1/arch/x86/kernel/tboot.c 2011-11-11 15:19:27.000000000 -0500
18577 ++++ linux-3.1.1/arch/x86/kernel/tboot.c 2011-11-16 18:39:07.000000000 -0500
18578 +@@ -218,7 +218,7 @@ static int tboot_setup_sleep(void)
18579
18580 void tboot_shutdown(u32 shutdown_type)
18581 {
18582 @@ -16103,7 +16163,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/tboot.c linux-3.0.9/arch/x86/kernel/tboot
18583
18584 if (!tboot_enabled())
18585 return;
18586 -@@ -239,7 +239,7 @@ void tboot_shutdown(u32 shutdown_type)
18587 +@@ -240,7 +240,7 @@ void tboot_shutdown(u32 shutdown_type)
18588
18589 switch_to_tboot_pt();
18590
18591 @@ -16112,7 +16172,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/tboot.c linux-3.0.9/arch/x86/kernel/tboot
18592 shutdown();
18593
18594 /* should not reach here */
18595 -@@ -296,7 +296,7 @@ void tboot_sleep(u8 sleep_state, u32 pm1
18596 +@@ -297,7 +297,7 @@ void tboot_sleep(u8 sleep_state, u32 pm1
18597 tboot_shutdown(acpi_shutdown_map[sleep_state]);
18598 }
18599
18600 @@ -16121,7 +16181,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/tboot.c linux-3.0.9/arch/x86/kernel/tboot
18601
18602 static int tboot_wait_for_aps(int num_aps)
18603 {
18604 -@@ -320,9 +320,9 @@ static int __cpuinit tboot_cpu_callback(
18605 +@@ -321,9 +321,9 @@ static int __cpuinit tboot_cpu_callback(
18606 {
18607 switch (action) {
18608 case CPU_DYING:
18609 @@ -16133,7 +16193,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/tboot.c linux-3.0.9/arch/x86/kernel/tboot
18610 return NOTIFY_BAD;
18611 break;
18612 }
18613 -@@ -341,7 +341,7 @@ static __init int tboot_late_init(void)
18614 +@@ -342,7 +342,7 @@ static __init int tboot_late_init(void)
18615
18616 tboot_create_trampoline();
18617
18618 @@ -16142,9 +16202,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/tboot.c linux-3.0.9/arch/x86/kernel/tboot
18619 register_hotcpu_notifier(&tboot_cpu_notifier);
18620 return 0;
18621 }
18622 -diff -urNp linux-3.0.9/arch/x86/kernel/time.c linux-3.0.9/arch/x86/kernel/time.c
18623 ---- linux-3.0.9/arch/x86/kernel/time.c 2011-11-11 13:12:24.000000000 -0500
18624 -+++ linux-3.0.9/arch/x86/kernel/time.c 2011-11-15 20:02:59.000000000 -0500
18625 +diff -urNp linux-3.1.1/arch/x86/kernel/time.c linux-3.1.1/arch/x86/kernel/time.c
18626 +--- linux-3.1.1/arch/x86/kernel/time.c 2011-11-11 15:19:27.000000000 -0500
18627 ++++ linux-3.1.1/arch/x86/kernel/time.c 2011-11-16 18:39:07.000000000 -0500
18628 @@ -30,9 +30,9 @@ unsigned long profile_pc(struct pt_regs
18629 {
18630 unsigned long pc = instruction_pointer(regs);
18631 @@ -16175,9 +16235,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/time.c linux-3.0.9/arch/x86/kernel/time.c
18632 }
18633 return pc;
18634 }
18635 -diff -urNp linux-3.0.9/arch/x86/kernel/tls.c linux-3.0.9/arch/x86/kernel/tls.c
18636 ---- linux-3.0.9/arch/x86/kernel/tls.c 2011-11-11 13:12:24.000000000 -0500
18637 -+++ linux-3.0.9/arch/x86/kernel/tls.c 2011-11-15 20:02:59.000000000 -0500
18638 +diff -urNp linux-3.1.1/arch/x86/kernel/tls.c linux-3.1.1/arch/x86/kernel/tls.c
18639 +--- linux-3.1.1/arch/x86/kernel/tls.c 2011-11-11 15:19:27.000000000 -0500
18640 ++++ linux-3.1.1/arch/x86/kernel/tls.c 2011-11-16 18:39:07.000000000 -0500
18641 @@ -85,6 +85,11 @@ int do_set_thread_area(struct task_struc
18642 if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX)
18643 return -EINVAL;
18644 @@ -16190,9 +16250,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/tls.c linux-3.0.9/arch/x86/kernel/tls.c
18645 set_tls_desc(p, idx, &info, 1);
18646
18647 return 0;
18648 -diff -urNp linux-3.0.9/arch/x86/kernel/trampoline_32.S linux-3.0.9/arch/x86/kernel/trampoline_32.S
18649 ---- linux-3.0.9/arch/x86/kernel/trampoline_32.S 2011-11-11 13:12:24.000000000 -0500
18650 -+++ linux-3.0.9/arch/x86/kernel/trampoline_32.S 2011-11-15 20:02:59.000000000 -0500
18651 +diff -urNp linux-3.1.1/arch/x86/kernel/trampoline_32.S linux-3.1.1/arch/x86/kernel/trampoline_32.S
18652 +--- linux-3.1.1/arch/x86/kernel/trampoline_32.S 2011-11-11 15:19:27.000000000 -0500
18653 ++++ linux-3.1.1/arch/x86/kernel/trampoline_32.S 2011-11-16 18:39:07.000000000 -0500
18654 @@ -32,6 +32,12 @@
18655 #include <asm/segment.h>
18656 #include <asm/page_types.h>
18657 @@ -16215,9 +16275,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/trampoline_32.S linux-3.0.9/arch/x86/kern
18658
18659 # These need to be in the same 64K segment as the above;
18660 # hence we don't use the boot_gdt_descr defined in head.S
18661 -diff -urNp linux-3.0.9/arch/x86/kernel/trampoline_64.S linux-3.0.9/arch/x86/kernel/trampoline_64.S
18662 ---- linux-3.0.9/arch/x86/kernel/trampoline_64.S 2011-11-11 13:12:24.000000000 -0500
18663 -+++ linux-3.0.9/arch/x86/kernel/trampoline_64.S 2011-11-15 20:02:59.000000000 -0500
18664 +diff -urNp linux-3.1.1/arch/x86/kernel/trampoline_64.S linux-3.1.1/arch/x86/kernel/trampoline_64.S
18665 +--- linux-3.1.1/arch/x86/kernel/trampoline_64.S 2011-11-11 15:19:27.000000000 -0500
18666 ++++ linux-3.1.1/arch/x86/kernel/trampoline_64.S 2011-11-16 18:39:07.000000000 -0500
18667 @@ -90,7 +90,7 @@ startup_32:
18668 movl $__KERNEL_DS, %eax # Initialize the %ds segment register
18669 movl %eax, %ds
18670 @@ -16236,9 +16296,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/trampoline_64.S linux-3.0.9/arch/x86/kern
18671 .long tgdt - r_base
18672 .short 0
18673 .quad 0x00cf9b000000ffff # __KERNEL32_CS
18674 -diff -urNp linux-3.0.9/arch/x86/kernel/traps.c linux-3.0.9/arch/x86/kernel/traps.c
18675 ---- linux-3.0.9/arch/x86/kernel/traps.c 2011-11-11 13:12:24.000000000 -0500
18676 -+++ linux-3.0.9/arch/x86/kernel/traps.c 2011-11-15 20:02:59.000000000 -0500
18677 +diff -urNp linux-3.1.1/arch/x86/kernel/traps.c linux-3.1.1/arch/x86/kernel/traps.c
18678 +--- linux-3.1.1/arch/x86/kernel/traps.c 2011-11-11 15:19:27.000000000 -0500
18679 ++++ linux-3.1.1/arch/x86/kernel/traps.c 2011-11-16 18:39:07.000000000 -0500
18680 @@ -70,12 +70,6 @@ asmlinkage int system_call(void);
18681
18682 /* Do we ignore FPU interrupts ? */
18683 @@ -16418,9 +16478,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/traps.c linux-3.0.9/arch/x86/kernel/traps
18684
18685 if (!tsk_used_math(tsk)) {
18686 local_irq_enable();
18687 -diff -urNp linux-3.0.9/arch/x86/kernel/verify_cpu.S linux-3.0.9/arch/x86/kernel/verify_cpu.S
18688 ---- linux-3.0.9/arch/x86/kernel/verify_cpu.S 2011-11-11 13:12:24.000000000 -0500
18689 -+++ linux-3.0.9/arch/x86/kernel/verify_cpu.S 2011-11-15 20:02:59.000000000 -0500
18690 +diff -urNp linux-3.1.1/arch/x86/kernel/verify_cpu.S linux-3.1.1/arch/x86/kernel/verify_cpu.S
18691 +--- linux-3.1.1/arch/x86/kernel/verify_cpu.S 2011-11-11 15:19:27.000000000 -0500
18692 ++++ linux-3.1.1/arch/x86/kernel/verify_cpu.S 2011-11-16 18:40:08.000000000 -0500
18693 @@ -20,6 +20,7 @@
18694 * arch/x86/boot/compressed/head_64.S: Boot cpu verification
18695 * arch/x86/kernel/trampoline_64.S: secondary processor verification
18696 @@ -16429,9 +16489,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/verify_cpu.S linux-3.0.9/arch/x86/kernel/
18697 *
18698 * verify_cpu, returns the status of longmode and SSE in register %eax.
18699 * 0: Success 1: Failure
18700 -diff -urNp linux-3.0.9/arch/x86/kernel/vm86_32.c linux-3.0.9/arch/x86/kernel/vm86_32.c
18701 ---- linux-3.0.9/arch/x86/kernel/vm86_32.c 2011-11-11 13:12:24.000000000 -0500
18702 -+++ linux-3.0.9/arch/x86/kernel/vm86_32.c 2011-11-15 20:02:59.000000000 -0500
18703 +diff -urNp linux-3.1.1/arch/x86/kernel/vm86_32.c linux-3.1.1/arch/x86/kernel/vm86_32.c
18704 +--- linux-3.1.1/arch/x86/kernel/vm86_32.c 2011-11-11 15:19:27.000000000 -0500
18705 ++++ linux-3.1.1/arch/x86/kernel/vm86_32.c 2011-11-16 18:40:08.000000000 -0500
18706 @@ -41,6 +41,7 @@
18707 #include <linux/ptrace.h>
18708 #include <linux/audit.h>
18709 @@ -16496,9 +16556,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/vm86_32.c linux-3.0.9/arch/x86/kernel/vm8
18710 if (get_user(segoffs, intr_ptr))
18711 goto cannot_handle;
18712 if ((segoffs >> 16) == BIOSSEG)
18713 -diff -urNp linux-3.0.9/arch/x86/kernel/vmlinux.lds.S linux-3.0.9/arch/x86/kernel/vmlinux.lds.S
18714 ---- linux-3.0.9/arch/x86/kernel/vmlinux.lds.S 2011-11-11 13:12:24.000000000 -0500
18715 -+++ linux-3.0.9/arch/x86/kernel/vmlinux.lds.S 2011-11-15 20:02:59.000000000 -0500
18716 +diff -urNp linux-3.1.1/arch/x86/kernel/vmlinux.lds.S linux-3.1.1/arch/x86/kernel/vmlinux.lds.S
18717 +--- linux-3.1.1/arch/x86/kernel/vmlinux.lds.S 2011-11-11 15:19:27.000000000 -0500
18718 ++++ linux-3.1.1/arch/x86/kernel/vmlinux.lds.S 2011-11-16 18:39:07.000000000 -0500
18719 @@ -26,6 +26,13 @@
18720 #include <asm/page_types.h>
18721 #include <asm/cache.h>
18722 @@ -16513,7 +16573,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/vmlinux.lds.S linux-3.0.9/arch/x86/kernel
18723
18724 #undef i386 /* in case the preprocessor is a 32bit one */
18725
18726 -@@ -69,31 +76,46 @@ jiffies_64 = jiffies;
18727 +@@ -69,30 +76,43 @@ jiffies_64 = jiffies;
18728
18729 PHDRS {
18730 text PT_LOAD FLAGS(5); /* R_E */
18731 @@ -16526,9 +16586,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/vmlinux.lds.S linux-3.0.9/arch/x86/kernel
18732 + rodata PT_LOAD FLAGS(4); /* R__ */
18733 +#endif
18734 data PT_LOAD FLAGS(6); /* RW_ */
18735 - #ifdef CONFIG_X86_64
18736 - user PT_LOAD FLAGS(5); /* R_E */
18737 -+#endif
18738 +-#ifdef CONFIG_X86_64
18739 + init.begin PT_LOAD FLAGS(6); /* RW_ */
18740 #ifdef CONFIG_SMP
18741 percpu PT_LOAD FLAGS(6); /* RW_ */
18742 @@ -16567,7 +16625,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/vmlinux.lds.S linux-3.0.9/arch/x86/kernel
18743 HEAD_TEXT
18744 #ifdef CONFIG_X86_32
18745 . = ALIGN(PAGE_SIZE);
18746 -@@ -109,13 +131,47 @@ SECTIONS
18747 +@@ -108,13 +128,47 @@ SECTIONS
18748 IRQENTRY_TEXT
18749 *(.fixup)
18750 *(.gnu.warning)
18751 @@ -16619,7 +16677,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/vmlinux.lds.S linux-3.0.9/arch/x86/kernel
18752
18753 #if defined(CONFIG_DEBUG_RODATA)
18754 /* .text should occupy whole number of pages */
18755 -@@ -127,16 +183,20 @@ SECTIONS
18756 +@@ -126,16 +180,20 @@ SECTIONS
18757
18758 /* Data */
18759 .data : AT(ADDR(.data) - LOAD_OFFSET) {
18760 @@ -16643,7 +16701,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/vmlinux.lds.S linux-3.0.9/arch/x86/kernel
18761
18762 PAGE_ALIGNED_DATA(PAGE_SIZE)
18763
18764 -@@ -208,12 +268,19 @@ SECTIONS
18765 +@@ -176,12 +234,19 @@ SECTIONS
18766 #endif /* CONFIG_X86_64 */
18767
18768 /* Init code and data - will be freed after init */
18769 @@ -16666,7 +16724,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/vmlinux.lds.S linux-3.0.9/arch/x86/kernel
18770 /*
18771 * percpu offsets are zero-based on SMP. PERCPU_VADDR() changes the
18772 * output PHDR, so the next output section - .init.text - should
18773 -@@ -222,12 +289,27 @@ SECTIONS
18774 +@@ -190,12 +255,27 @@ SECTIONS
18775 PERCPU_VADDR(INTERNODE_CACHE_BYTES, 0, :percpu)
18776 #endif
18777
18778 @@ -16699,7 +16757,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/vmlinux.lds.S linux-3.0.9/arch/x86/kernel
18779
18780 /*
18781 * Code and data for a variety of lowlevel trampolines, to be
18782 -@@ -301,19 +383,12 @@ SECTIONS
18783 +@@ -269,19 +349,12 @@ SECTIONS
18784 }
18785
18786 . = ALIGN(8);
18787 @@ -16720,7 +16778,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/vmlinux.lds.S linux-3.0.9/arch/x86/kernel
18788 PERCPU_SECTION(INTERNODE_CACHE_BYTES)
18789 #endif
18790
18791 -@@ -332,16 +407,10 @@ SECTIONS
18792 +@@ -300,16 +373,10 @@ SECTIONS
18793 .smp_locks : AT(ADDR(.smp_locks) - LOAD_OFFSET) {
18794 __smp_locks = .;
18795 *(.smp_locks)
18796 @@ -16738,7 +16796,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/vmlinux.lds.S linux-3.0.9/arch/x86/kernel
18797 /* BSS */
18798 . = ALIGN(PAGE_SIZE);
18799 .bss : AT(ADDR(.bss) - LOAD_OFFSET) {
18800 -@@ -357,6 +426,7 @@ SECTIONS
18801 +@@ -325,6 +392,7 @@ SECTIONS
18802 __brk_base = .;
18803 . += 64 * 1024; /* 64k alignment slop space */
18804 *(.brk_reservation) /* areas brk users have reserved */
18805 @@ -16746,7 +16804,7 @@ diff -urNp linux-3.0.9/arch/x86/kernel/vmlinux.lds.S linux-3.0.9/arch/x86/kernel
18806 __brk_limit = .;
18807 }
18808
18809 -@@ -383,13 +453,12 @@ SECTIONS
18810 +@@ -351,13 +419,12 @@ SECTIONS
18811 * for the boot processor.
18812 */
18813 #define INIT_PER_CPU(x) init_per_cpu__##x = x + __per_cpu_load
18814 @@ -16761,30 +16819,60 @@ diff -urNp linux-3.0.9/arch/x86/kernel/vmlinux.lds.S linux-3.0.9/arch/x86/kernel
18815 "kernel image bigger than KERNEL_IMAGE_SIZE");
18816
18817 #ifdef CONFIG_SMP
18818 -diff -urNp linux-3.0.9/arch/x86/kernel/vsyscall_64.c linux-3.0.9/arch/x86/kernel/vsyscall_64.c
18819 ---- linux-3.0.9/arch/x86/kernel/vsyscall_64.c 2011-11-11 13:12:24.000000000 -0500
18820 -+++ linux-3.0.9/arch/x86/kernel/vsyscall_64.c 2011-11-15 20:02:59.000000000 -0500
18821 -@@ -53,7 +53,7 @@ DEFINE_VVAR(int, vgetcpu_mode);
18822 - DEFINE_VVAR(struct vsyscall_gtod_data, vsyscall_gtod_data) =
18823 - {
18824 +diff -urNp linux-3.1.1/arch/x86/kernel/vsyscall_64.c linux-3.1.1/arch/x86/kernel/vsyscall_64.c
18825 +--- linux-3.1.1/arch/x86/kernel/vsyscall_64.c 2011-11-11 15:19:27.000000000 -0500
18826 ++++ linux-3.1.1/arch/x86/kernel/vsyscall_64.c 2011-11-16 18:39:07.000000000 -0500
18827 +@@ -56,15 +56,13 @@ DEFINE_VVAR(struct vsyscall_gtod_data, v
18828 .lock = __SEQLOCK_UNLOCKED(__vsyscall_gtod_data.lock),
18829 -- .sysctl_enabled = 1,
18830 -+ .sysctl_enabled = 0,
18831 };
18832
18833 - void update_vsyscall_tz(void)
18834 -@@ -231,7 +231,7 @@ static long __vsyscall(3) venosys_1(void
18835 - static ctl_table kernel_table2[] = {
18836 - { .procname = "vsyscall64",
18837 - .data = &vsyscall_gtod_data.sysctl_enabled, .maxlen = sizeof(int),
18838 -- .mode = 0644,
18839 -+ .mode = 0444,
18840 - .proc_handler = proc_dointvec },
18841 - {}
18842 - };
18843 -diff -urNp linux-3.0.9/arch/x86/kernel/x8664_ksyms_64.c linux-3.0.9/arch/x86/kernel/x8664_ksyms_64.c
18844 ---- linux-3.0.9/arch/x86/kernel/x8664_ksyms_64.c 2011-11-11 13:12:24.000000000 -0500
18845 -+++ linux-3.0.9/arch/x86/kernel/x8664_ksyms_64.c 2011-11-15 20:02:59.000000000 -0500
18846 +-static enum { EMULATE, NATIVE, NONE } vsyscall_mode = NATIVE;
18847 ++static enum { EMULATE, NONE } vsyscall_mode = EMULATE;
18848 +
18849 + static int __init vsyscall_setup(char *str)
18850 + {
18851 + if (str) {
18852 + if (!strcmp("emulate", str))
18853 + vsyscall_mode = EMULATE;
18854 +- else if (!strcmp("native", str))
18855 +- vsyscall_mode = NATIVE;
18856 + else if (!strcmp("none", str))
18857 + vsyscall_mode = NONE;
18858 + else
18859 +@@ -177,7 +175,7 @@ bool emulate_vsyscall(struct pt_regs *re
18860 +
18861 + tsk = current;
18862 + if (seccomp_mode(&tsk->seccomp))
18863 +- do_exit(SIGKILL);
18864 ++ do_group_exit(SIGKILL);
18865 +
18866 + switch (vsyscall_nr) {
18867 + case 0:
18868 +@@ -219,8 +217,7 @@ bool emulate_vsyscall(struct pt_regs *re
18869 + return true;
18870 +
18871 + sigsegv:
18872 +- force_sig(SIGSEGV, current);
18873 +- return true;
18874 ++ do_group_exit(SIGKILL);
18875 + }
18876 +
18877 + /*
18878 +@@ -273,10 +270,7 @@ void __init map_vsyscall(void)
18879 + extern char __vvar_page;
18880 + unsigned long physaddr_vvar_page = __pa_symbol(&__vvar_page);
18881 +
18882 +- __set_fixmap(VSYSCALL_FIRST_PAGE, physaddr_vsyscall,
18883 +- vsyscall_mode == NATIVE
18884 +- ? PAGE_KERNEL_VSYSCALL
18885 +- : PAGE_KERNEL_VVAR);
18886 ++ __set_fixmap(VSYSCALL_FIRST_PAGE, physaddr_vsyscall, PAGE_KERNEL_VVAR);
18887 + BUILD_BUG_ON((unsigned long)__fix_to_virt(VSYSCALL_FIRST_PAGE) !=
18888 + (unsigned long)VSYSCALL_START);
18889 +
18890 +diff -urNp linux-3.1.1/arch/x86/kernel/x8664_ksyms_64.c linux-3.1.1/arch/x86/kernel/x8664_ksyms_64.c
18891 +--- linux-3.1.1/arch/x86/kernel/x8664_ksyms_64.c 2011-11-11 15:19:27.000000000 -0500
18892 ++++ linux-3.1.1/arch/x86/kernel/x8664_ksyms_64.c 2011-11-16 18:39:07.000000000 -0500
18893 @@ -29,8 +29,6 @@ EXPORT_SYMBOL(__put_user_8);
18894 EXPORT_SYMBOL(copy_user_generic_string);
18895 EXPORT_SYMBOL(copy_user_generic_unrolled);
18896 @@ -16794,9 +16882,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/x8664_ksyms_64.c linux-3.0.9/arch/x86/ker
18897
18898 EXPORT_SYMBOL(copy_page);
18899 EXPORT_SYMBOL(clear_page);
18900 -diff -urNp linux-3.0.9/arch/x86/kernel/xsave.c linux-3.0.9/arch/x86/kernel/xsave.c
18901 ---- linux-3.0.9/arch/x86/kernel/xsave.c 2011-11-11 13:12:24.000000000 -0500
18902 -+++ linux-3.0.9/arch/x86/kernel/xsave.c 2011-11-15 20:02:59.000000000 -0500
18903 +diff -urNp linux-3.1.1/arch/x86/kernel/xsave.c linux-3.1.1/arch/x86/kernel/xsave.c
18904 +--- linux-3.1.1/arch/x86/kernel/xsave.c 2011-11-11 15:19:27.000000000 -0500
18905 ++++ linux-3.1.1/arch/x86/kernel/xsave.c 2011-11-16 18:39:07.000000000 -0500
18906 @@ -130,7 +130,7 @@ int check_for_xstate(struct i387_fxsave_
18907 fx_sw_user->xstate_size > fx_sw_user->extended_size)
18908 return -EINVAL;
18909 @@ -16824,9 +16912,9 @@ diff -urNp linux-3.0.9/arch/x86/kernel/xsave.c linux-3.0.9/arch/x86/kernel/xsave
18910 buf);
18911 if (unlikely(err)) {
18912 /*
18913 -diff -urNp linux-3.0.9/arch/x86/kvm/emulate.c linux-3.0.9/arch/x86/kvm/emulate.c
18914 ---- linux-3.0.9/arch/x86/kvm/emulate.c 2011-11-11 13:12:24.000000000 -0500
18915 -+++ linux-3.0.9/arch/x86/kvm/emulate.c 2011-11-15 20:02:59.000000000 -0500
18916 +diff -urNp linux-3.1.1/arch/x86/kvm/emulate.c linux-3.1.1/arch/x86/kvm/emulate.c
18917 +--- linux-3.1.1/arch/x86/kvm/emulate.c 2011-11-11 15:19:27.000000000 -0500
18918 ++++ linux-3.1.1/arch/x86/kvm/emulate.c 2011-11-16 18:39:07.000000000 -0500
18919 @@ -96,7 +96,7 @@
18920 #define Src2ImmByte (2<<29)
18921 #define Src2One (3<<29)
18922 @@ -16861,9 +16949,9 @@ diff -urNp linux-3.0.9/arch/x86/kvm/emulate.c linux-3.0.9/arch/x86/kvm/emulate.c
18923 switch ((_dst).bytes) { \
18924 case 1: \
18925 ____emulate_2op(_op,_src,_dst,_eflags,_bx,_by,"b",u8); \
18926 -diff -urNp linux-3.0.9/arch/x86/kvm/lapic.c linux-3.0.9/arch/x86/kvm/lapic.c
18927 ---- linux-3.0.9/arch/x86/kvm/lapic.c 2011-11-11 13:12:24.000000000 -0500
18928 -+++ linux-3.0.9/arch/x86/kvm/lapic.c 2011-11-15 20:02:59.000000000 -0500
18929 +diff -urNp linux-3.1.1/arch/x86/kvm/lapic.c linux-3.1.1/arch/x86/kvm/lapic.c
18930 +--- linux-3.1.1/arch/x86/kvm/lapic.c 2011-11-11 15:19:27.000000000 -0500
18931 ++++ linux-3.1.1/arch/x86/kvm/lapic.c 2011-11-16 18:39:07.000000000 -0500
18932 @@ -53,7 +53,7 @@
18933 #define APIC_BUS_CYCLE_NS 1
18934
18935 @@ -16873,10 +16961,10 @@ diff -urNp linux-3.0.9/arch/x86/kvm/lapic.c linux-3.0.9/arch/x86/kvm/lapic.c
18936
18937 #define APIC_LVT_NUM 6
18938 /* 14 is the version for Xeon and Pentium 8.4.8*/
18939 -diff -urNp linux-3.0.9/arch/x86/kvm/mmu.c linux-3.0.9/arch/x86/kvm/mmu.c
18940 ---- linux-3.0.9/arch/x86/kvm/mmu.c 2011-11-11 13:12:24.000000000 -0500
18941 -+++ linux-3.0.9/arch/x86/kvm/mmu.c 2011-11-15 20:02:59.000000000 -0500
18942 -@@ -3238,7 +3238,7 @@ void kvm_mmu_pte_write(struct kvm_vcpu *
18943 +diff -urNp linux-3.1.1/arch/x86/kvm/mmu.c linux-3.1.1/arch/x86/kvm/mmu.c
18944 +--- linux-3.1.1/arch/x86/kvm/mmu.c 2011-11-11 15:19:27.000000000 -0500
18945 ++++ linux-3.1.1/arch/x86/kvm/mmu.c 2011-11-16 18:39:07.000000000 -0500
18946 +@@ -3552,7 +3552,7 @@ void kvm_mmu_pte_write(struct kvm_vcpu *
18947
18948 pgprintk("%s: gpa %llx bytes %d\n", __func__, gpa, bytes);
18949
18950 @@ -16885,7 +16973,7 @@ diff -urNp linux-3.0.9/arch/x86/kvm/mmu.c linux-3.0.9/arch/x86/kvm/mmu.c
18951
18952 /*
18953 * Assume that the pte write on a page table of the same type
18954 -@@ -3270,7 +3270,7 @@ void kvm_mmu_pte_write(struct kvm_vcpu *
18955 +@@ -3584,7 +3584,7 @@ void kvm_mmu_pte_write(struct kvm_vcpu *
18956 }
18957
18958 spin_lock(&vcpu->kvm->mmu_lock);
18959 @@ -16894,19 +16982,19 @@ diff -urNp linux-3.0.9/arch/x86/kvm/mmu.c linux-3.0.9/arch/x86/kvm/mmu.c
18960 gentry = 0;
18961 kvm_mmu_free_some_pages(vcpu);
18962 ++vcpu->kvm->stat.mmu_pte_write;
18963 -diff -urNp linux-3.0.9/arch/x86/kvm/paging_tmpl.h linux-3.0.9/arch/x86/kvm/paging_tmpl.h
18964 ---- linux-3.0.9/arch/x86/kvm/paging_tmpl.h 2011-11-11 13:12:24.000000000 -0500
18965 -+++ linux-3.0.9/arch/x86/kvm/paging_tmpl.h 2011-11-15 20:02:59.000000000 -0500
18966 -@@ -182,7 +182,7 @@ walk:
18967 - break;
18968 - }
18969 +diff -urNp linux-3.1.1/arch/x86/kvm/paging_tmpl.h linux-3.1.1/arch/x86/kvm/paging_tmpl.h
18970 +--- linux-3.1.1/arch/x86/kvm/paging_tmpl.h 2011-11-11 15:19:27.000000000 -0500
18971 ++++ linux-3.1.1/arch/x86/kvm/paging_tmpl.h 2011-11-16 19:40:44.000000000 -0500
18972 +@@ -197,7 +197,7 @@ retry_walk:
18973 + if (unlikely(kvm_is_error_hva(host_addr)))
18974 + goto error;
18975
18976 - ptep_user = (pt_element_t __user *)((void *)host_addr + offset);
18977 + ptep_user = (pt_element_t __force_user *)((void *)host_addr + offset);
18978 - if (unlikely(__copy_from_user(&pte, ptep_user, sizeof(pte)))) {
18979 - present = false;
18980 - break;
18981 -@@ -583,6 +583,8 @@ static int FNAME(page_fault)(struct kvm_
18982 + if (unlikely(__copy_from_user(&pte, ptep_user, sizeof(pte))))
18983 + goto error;
18984 +
18985 +@@ -575,6 +575,8 @@ static int FNAME(page_fault)(struct kvm_
18986 unsigned long mmu_seq;
18987 bool map_writable;
18988
18989 @@ -16914,8 +17002,8 @@ diff -urNp linux-3.0.9/arch/x86/kvm/paging_tmpl.h linux-3.0.9/arch/x86/kvm/pagin
18990 +
18991 pgprintk("%s: addr %lx err %x\n", __func__, addr, error_code);
18992
18993 - r = mmu_topup_memory_caches(vcpu);
18994 -@@ -703,7 +705,7 @@ static void FNAME(invlpg)(struct kvm_vcp
18995 + if (unlikely(error_code & PFERR_RSVD_MASK))
18996 +@@ -701,7 +703,7 @@ static void FNAME(invlpg)(struct kvm_vcp
18997 if (need_flush)
18998 kvm_flush_remote_tlbs(vcpu->kvm);
18999
19000 @@ -16924,10 +17012,10 @@ diff -urNp linux-3.0.9/arch/x86/kvm/paging_tmpl.h linux-3.0.9/arch/x86/kvm/pagin
19001
19002 spin_unlock(&vcpu->kvm->mmu_lock);
19003
19004 -diff -urNp linux-3.0.9/arch/x86/kvm/svm.c linux-3.0.9/arch/x86/kvm/svm.c
19005 ---- linux-3.0.9/arch/x86/kvm/svm.c 2011-11-11 13:12:24.000000000 -0500
19006 -+++ linux-3.0.9/arch/x86/kvm/svm.c 2011-11-15 20:02:59.000000000 -0500
19007 -@@ -3377,7 +3377,11 @@ static void reload_tss(struct kvm_vcpu *
19008 +diff -urNp linux-3.1.1/arch/x86/kvm/svm.c linux-3.1.1/arch/x86/kvm/svm.c
19009 +--- linux-3.1.1/arch/x86/kvm/svm.c 2011-11-11 15:19:27.000000000 -0500
19010 ++++ linux-3.1.1/arch/x86/kvm/svm.c 2011-11-16 18:39:07.000000000 -0500
19011 +@@ -3381,7 +3381,11 @@ static void reload_tss(struct kvm_vcpu *
19012 int cpu = raw_smp_processor_id();
19013
19014 struct svm_cpu_data *sd = per_cpu(svm_data, cpu);
19015 @@ -16939,7 +17027,7 @@ diff -urNp linux-3.0.9/arch/x86/kvm/svm.c linux-3.0.9/arch/x86/kvm/svm.c
19016 load_TR_desc();
19017 }
19018
19019 -@@ -3755,6 +3759,10 @@ static void svm_vcpu_run(struct kvm_vcpu
19020 +@@ -3759,6 +3763,10 @@ static void svm_vcpu_run(struct kvm_vcpu
19021 #endif
19022 #endif
19023
19024 @@ -16950,10 +17038,10 @@ diff -urNp linux-3.0.9/arch/x86/kvm/svm.c linux-3.0.9/arch/x86/kvm/svm.c
19025 reload_tss(vcpu);
19026
19027 local_irq_disable();
19028 -diff -urNp linux-3.0.9/arch/x86/kvm/vmx.c linux-3.0.9/arch/x86/kvm/vmx.c
19029 ---- linux-3.0.9/arch/x86/kvm/vmx.c 2011-11-11 13:12:24.000000000 -0500
19030 -+++ linux-3.0.9/arch/x86/kvm/vmx.c 2011-11-15 20:02:59.000000000 -0500
19031 -@@ -797,7 +797,11 @@ static void reload_tss(void)
19032 +diff -urNp linux-3.1.1/arch/x86/kvm/vmx.c linux-3.1.1/arch/x86/kvm/vmx.c
19033 +--- linux-3.1.1/arch/x86/kvm/vmx.c 2011-11-11 15:19:27.000000000 -0500
19034 ++++ linux-3.1.1/arch/x86/kvm/vmx.c 2011-11-16 18:39:07.000000000 -0500
19035 +@@ -1251,7 +1251,11 @@ static void reload_tss(void)
19036 struct desc_struct *descs;
19037
19038 descs = (void *)gdt->address;
19039 @@ -16965,7 +17053,7 @@ diff -urNp linux-3.0.9/arch/x86/kvm/vmx.c linux-3.0.9/arch/x86/kvm/vmx.c
19040 load_TR_desc();
19041 }
19042
19043 -@@ -1747,8 +1751,11 @@ static __init int hardware_setup(void)
19044 +@@ -2520,8 +2524,11 @@ static __init int hardware_setup(void)
19045 if (!cpu_has_vmx_flexpriority())
19046 flexpriority_enabled = 0;
19047
19048 @@ -16979,16 +17067,16 @@ diff -urNp linux-3.0.9/arch/x86/kvm/vmx.c linux-3.0.9/arch/x86/kvm/vmx.c
19049
19050 if (enable_ept && !cpu_has_vmx_ept_2m_page())
19051 kvm_disable_largepages();
19052 -@@ -2814,7 +2821,7 @@ static int vmx_vcpu_setup(struct vcpu_vm
19053 +@@ -3535,7 +3542,7 @@ static void vmx_set_constant_host_state(
19054 vmcs_writel(HOST_IDTR_BASE, dt.address); /* 22.2.4 */
19055
19056 - asm("mov $.Lkvm_vmx_return, %0" : "=r"(kvm_vmx_return));
19057 -- vmcs_writel(HOST_RIP, kvm_vmx_return); /* 22.2.5 */
19058 -+ vmcs_writel(HOST_RIP, ktla_ktva(kvm_vmx_return)); /* 22.2.5 */
19059 - vmcs_write32(VM_EXIT_MSR_STORE_COUNT, 0);
19060 - vmcs_write32(VM_EXIT_MSR_LOAD_COUNT, 0);
19061 - vmcs_write64(VM_EXIT_MSR_LOAD_ADDR, __pa(vmx->msr_autoload.host));
19062 -@@ -4211,6 +4218,12 @@ static void __noclone vmx_vcpu_run(struc
19063 + asm("mov $.Lkvm_vmx_return, %0" : "=r"(tmpl));
19064 +- vmcs_writel(HOST_RIP, tmpl); /* 22.2.5 */
19065 ++ vmcs_writel(HOST_RIP, ktla_ktva(tmpl)); /* 22.2.5 */
19066 +
19067 + rdmsr(MSR_IA32_SYSENTER_CS, low32, high32);
19068 + vmcs_write32(HOST_IA32_SYSENTER_CS, low32);
19069 +@@ -6021,6 +6028,12 @@ static void __noclone vmx_vcpu_run(struc
19070 "jmp .Lkvm_vmx_return \n\t"
19071 ".Llaunched: " __ex(ASM_VMX_VMRESUME) "\n\t"
19072 ".Lkvm_vmx_return: "
19073 @@ -17001,7 +17089,7 @@ diff -urNp linux-3.0.9/arch/x86/kvm/vmx.c linux-3.0.9/arch/x86/kvm/vmx.c
19074 /* Save guest registers, load host registers, keep flags */
19075 "mov %0, %c[wordsize](%%"R"sp) \n\t"
19076 "pop %0 \n\t"
19077 -@@ -4259,6 +4272,11 @@ static void __noclone vmx_vcpu_run(struc
19078 +@@ -6069,6 +6082,11 @@ static void __noclone vmx_vcpu_run(struc
19079 #endif
19080 [cr2]"i"(offsetof(struct vcpu_vmx, vcpu.arch.cr2)),
19081 [wordsize]"i"(sizeof(ulong))
19082 @@ -17013,9 +17101,9 @@ diff -urNp linux-3.0.9/arch/x86/kvm/vmx.c linux-3.0.9/arch/x86/kvm/vmx.c
19083 : "cc", "memory"
19084 , R"ax", R"bx", R"di", R"si"
19085 #ifdef CONFIG_X86_64
19086 -@@ -4276,7 +4294,16 @@ static void __noclone vmx_vcpu_run(struc
19087 -
19088 - vmx->idt_vectoring_info = vmcs_read32(IDT_VECTORING_INFO_FIELD);
19089 +@@ -6097,7 +6115,16 @@ static void __noclone vmx_vcpu_run(struc
19090 + }
19091 + }
19092
19093 - asm("mov %0, %%ds; mov %0, %%es" : : "r"(__USER_DS));
19094 + asm("mov %0, %%ds; mov %0, %%es; mov %0, %%ss" : : "r"(__KERNEL_DS));
19095 @@ -17028,13 +17116,13 @@ diff -urNp linux-3.0.9/arch/x86/kvm/vmx.c linux-3.0.9/arch/x86/kvm/vmx.c
19096 + __set_fs(current_thread_info()->addr_limit);
19097 +#endif
19098 +
19099 - vmx->launched = 1;
19100 + vmx->loaded_vmcs->launched = 1;
19101
19102 vmx->exit_reason = vmcs_read32(VM_EXIT_REASON);
19103 -diff -urNp linux-3.0.9/arch/x86/kvm/x86.c linux-3.0.9/arch/x86/kvm/x86.c
19104 ---- linux-3.0.9/arch/x86/kvm/x86.c 2011-11-11 13:12:24.000000000 -0500
19105 -+++ linux-3.0.9/arch/x86/kvm/x86.c 2011-11-15 20:02:59.000000000 -0500
19106 -@@ -1313,8 +1313,8 @@ static int xen_hvm_config(struct kvm_vcp
19107 +diff -urNp linux-3.1.1/arch/x86/kvm/x86.c linux-3.1.1/arch/x86/kvm/x86.c
19108 +--- linux-3.1.1/arch/x86/kvm/x86.c 2011-11-11 15:19:27.000000000 -0500
19109 ++++ linux-3.1.1/arch/x86/kvm/x86.c 2011-11-16 18:39:07.000000000 -0500
19110 +@@ -1334,8 +1334,8 @@ static int xen_hvm_config(struct kvm_vcp
19111 {
19112 struct kvm *kvm = vcpu->kvm;
19113 int lm = is_long_mode(vcpu);
19114 @@ -17045,7 +17133,7 @@ diff -urNp linux-3.0.9/arch/x86/kvm/x86.c linux-3.0.9/arch/x86/kvm/x86.c
19115 u8 blob_size = lm ? kvm->arch.xen_hvm_config.blob_size_64
19116 : kvm->arch.xen_hvm_config.blob_size_32;
19117 u32 page_num = data & ~PAGE_MASK;
19118 -@@ -2057,6 +2057,8 @@ long kvm_arch_dev_ioctl(struct file *fil
19119 +@@ -2137,6 +2137,8 @@ long kvm_arch_dev_ioctl(struct file *fil
19120 if (n < msr_list.nmsrs)
19121 goto out;
19122 r = -EFAULT;
19123 @@ -17054,7 +17142,7 @@ diff -urNp linux-3.0.9/arch/x86/kvm/x86.c linux-3.0.9/arch/x86/kvm/x86.c
19124 if (copy_to_user(user_msr_list->indices, &msrs_to_save,
19125 num_msrs_to_save * sizeof(u32)))
19126 goto out;
19127 -@@ -2229,15 +2231,20 @@ static int kvm_vcpu_ioctl_set_cpuid2(str
19128 +@@ -2312,15 +2314,20 @@ static int kvm_vcpu_ioctl_set_cpuid2(str
19129 struct kvm_cpuid2 *cpuid,
19130 struct kvm_cpuid_entry2 __user *entries)
19131 {
19132 @@ -17078,7 +17166,7 @@ diff -urNp linux-3.0.9/arch/x86/kvm/x86.c linux-3.0.9/arch/x86/kvm/x86.c
19133 vcpu->arch.cpuid_nent = cpuid->nent;
19134 kvm_apic_set_version(vcpu);
19135 kvm_x86_ops->cpuid_update(vcpu);
19136 -@@ -2252,15 +2259,19 @@ static int kvm_vcpu_ioctl_get_cpuid2(str
19137 +@@ -2335,15 +2342,19 @@ static int kvm_vcpu_ioctl_get_cpuid2(str
19138 struct kvm_cpuid2 *cpuid,
19139 struct kvm_cpuid_entry2 __user *entries)
19140 {
19141 @@ -17101,7 +17189,7 @@ diff -urNp linux-3.0.9/arch/x86/kvm/x86.c linux-3.0.9/arch/x86/kvm/x86.c
19142 return 0;
19143
19144 out:
19145 -@@ -2579,7 +2590,7 @@ static int kvm_vcpu_ioctl_set_lapic(stru
19146 +@@ -2718,7 +2729,7 @@ static int kvm_vcpu_ioctl_set_lapic(stru
19147 static int kvm_vcpu_ioctl_interrupt(struct kvm_vcpu *vcpu,
19148 struct kvm_interrupt *irq)
19149 {
19150 @@ -17110,19 +17198,19 @@ diff -urNp linux-3.0.9/arch/x86/kvm/x86.c linux-3.0.9/arch/x86/kvm/x86.c
19151 return -EINVAL;
19152 if (irqchip_in_kernel(vcpu->kvm))
19153 return -ENXIO;
19154 -@@ -4878,7 +4889,7 @@ void kvm_after_handle_nmi(struct kvm_vcp
19155 +@@ -5089,7 +5100,7 @@ static void kvm_set_mmio_spte_mask(void)
19156 + kvm_mmu_set_mmio_spte_mask(mask);
19157 }
19158 - EXPORT_SYMBOL_GPL(kvm_after_handle_nmi);
19159
19160 -int kvm_arch_init(void *opaque)
19161 +int kvm_arch_init(const void *opaque)
19162 {
19163 int r;
19164 struct kvm_x86_ops *ops = (struct kvm_x86_ops *)opaque;
19165 -diff -urNp linux-3.0.9/arch/x86/lguest/boot.c linux-3.0.9/arch/x86/lguest/boot.c
19166 ---- linux-3.0.9/arch/x86/lguest/boot.c 2011-11-11 13:12:24.000000000 -0500
19167 -+++ linux-3.0.9/arch/x86/lguest/boot.c 2011-11-15 20:02:59.000000000 -0500
19168 -@@ -1176,9 +1176,10 @@ static __init int early_put_chars(u32 vt
19169 +diff -urNp linux-3.1.1/arch/x86/lguest/boot.c linux-3.1.1/arch/x86/lguest/boot.c
19170 +--- linux-3.1.1/arch/x86/lguest/boot.c 2011-11-11 15:19:27.000000000 -0500
19171 ++++ linux-3.1.1/arch/x86/lguest/boot.c 2011-11-16 18:39:07.000000000 -0500
19172 +@@ -1184,9 +1184,10 @@ static __init int early_put_chars(u32 vt
19173 * Rebooting also tells the Host we're finished, but the RESTART flag tells the
19174 * Launcher to reboot us.
19175 */
19176 @@ -17134,9 +17222,9 @@ diff -urNp linux-3.0.9/arch/x86/lguest/boot.c linux-3.0.9/arch/x86/lguest/boot.c
19177 }
19178
19179 /*G:050
19180 -diff -urNp linux-3.0.9/arch/x86/lib/atomic64_32.c linux-3.0.9/arch/x86/lib/atomic64_32.c
19181 ---- linux-3.0.9/arch/x86/lib/atomic64_32.c 2011-11-11 13:12:24.000000000 -0500
19182 -+++ linux-3.0.9/arch/x86/lib/atomic64_32.c 2011-11-15 20:02:59.000000000 -0500
19183 +diff -urNp linux-3.1.1/arch/x86/lib/atomic64_32.c linux-3.1.1/arch/x86/lib/atomic64_32.c
19184 +--- linux-3.1.1/arch/x86/lib/atomic64_32.c 2011-11-11 15:19:27.000000000 -0500
19185 ++++ linux-3.1.1/arch/x86/lib/atomic64_32.c 2011-11-16 18:39:07.000000000 -0500
19186 @@ -8,18 +8,30 @@
19187
19188 long long atomic64_read_cx8(long long, const atomic64_t *v);
19189 @@ -17215,9 +17303,9 @@ diff -urNp linux-3.0.9/arch/x86/lib/atomic64_32.c linux-3.0.9/arch/x86/lib/atomi
19190 long long atomic64_dec_if_positive_386(atomic64_t *v);
19191 EXPORT_SYMBOL(atomic64_dec_if_positive_386);
19192 int atomic64_inc_not_zero_386(atomic64_t *v);
19193 -diff -urNp linux-3.0.9/arch/x86/lib/atomic64_386_32.S linux-3.0.9/arch/x86/lib/atomic64_386_32.S
19194 ---- linux-3.0.9/arch/x86/lib/atomic64_386_32.S 2011-11-11 13:12:24.000000000 -0500
19195 -+++ linux-3.0.9/arch/x86/lib/atomic64_386_32.S 2011-11-15 20:02:59.000000000 -0500
19196 +diff -urNp linux-3.1.1/arch/x86/lib/atomic64_386_32.S linux-3.1.1/arch/x86/lib/atomic64_386_32.S
19197 +--- linux-3.1.1/arch/x86/lib/atomic64_386_32.S 2011-11-11 15:19:27.000000000 -0500
19198 ++++ linux-3.1.1/arch/x86/lib/atomic64_386_32.S 2011-11-16 18:39:07.000000000 -0500
19199 @@ -48,6 +48,10 @@ BEGIN(read)
19200 movl (v), %eax
19201 movl 4(v), %edx
19202 @@ -17473,9 +17561,9 @@ diff -urNp linux-3.0.9/arch/x86/lib/atomic64_386_32.S linux-3.0.9/arch/x86/lib/a
19203 js 1f
19204 movl %eax, (v)
19205 movl %edx, 4(v)
19206 -diff -urNp linux-3.0.9/arch/x86/lib/atomic64_cx8_32.S linux-3.0.9/arch/x86/lib/atomic64_cx8_32.S
19207 ---- linux-3.0.9/arch/x86/lib/atomic64_cx8_32.S 2011-11-11 13:12:24.000000000 -0500
19208 -+++ linux-3.0.9/arch/x86/lib/atomic64_cx8_32.S 2011-11-15 20:02:59.000000000 -0500
19209 +diff -urNp linux-3.1.1/arch/x86/lib/atomic64_cx8_32.S linux-3.1.1/arch/x86/lib/atomic64_cx8_32.S
19210 +--- linux-3.1.1/arch/x86/lib/atomic64_cx8_32.S 2011-11-11 15:19:27.000000000 -0500
19211 ++++ linux-3.1.1/arch/x86/lib/atomic64_cx8_32.S 2011-11-16 18:39:07.000000000 -0500
19212 @@ -35,10 +35,20 @@ ENTRY(atomic64_read_cx8)
19213 CFI_STARTPROC
19214
19215 @@ -17697,9 +17785,9 @@ diff -urNp linux-3.0.9/arch/x86/lib/atomic64_cx8_32.S linux-3.0.9/arch/x86/lib/a
19216 ret
19217 4:
19218 testl %edx, %edx
19219 -diff -urNp linux-3.0.9/arch/x86/lib/checksum_32.S linux-3.0.9/arch/x86/lib/checksum_32.S
19220 ---- linux-3.0.9/arch/x86/lib/checksum_32.S 2011-11-11 13:12:24.000000000 -0500
19221 -+++ linux-3.0.9/arch/x86/lib/checksum_32.S 2011-11-15 20:02:59.000000000 -0500
19222 +diff -urNp linux-3.1.1/arch/x86/lib/checksum_32.S linux-3.1.1/arch/x86/lib/checksum_32.S
19223 +--- linux-3.1.1/arch/x86/lib/checksum_32.S 2011-11-11 15:19:27.000000000 -0500
19224 ++++ linux-3.1.1/arch/x86/lib/checksum_32.S 2011-11-16 18:39:07.000000000 -0500
19225 @@ -28,7 +28,8 @@
19226 #include <linux/linkage.h>
19227 #include <asm/dwarf2.h>
19228 @@ -17944,9 +18032,9 @@ diff -urNp linux-3.0.9/arch/x86/lib/checksum_32.S linux-3.0.9/arch/x86/lib/check
19229
19230 #undef ROUND
19231 #undef ROUND1
19232 -diff -urNp linux-3.0.9/arch/x86/lib/clear_page_64.S linux-3.0.9/arch/x86/lib/clear_page_64.S
19233 ---- linux-3.0.9/arch/x86/lib/clear_page_64.S 2011-11-11 13:12:24.000000000 -0500
19234 -+++ linux-3.0.9/arch/x86/lib/clear_page_64.S 2011-11-15 20:02:59.000000000 -0500
19235 +diff -urNp linux-3.1.1/arch/x86/lib/clear_page_64.S linux-3.1.1/arch/x86/lib/clear_page_64.S
19236 +--- linux-3.1.1/arch/x86/lib/clear_page_64.S 2011-11-11 15:19:27.000000000 -0500
19237 ++++ linux-3.1.1/arch/x86/lib/clear_page_64.S 2011-11-16 18:39:07.000000000 -0500
19238 @@ -11,6 +11,7 @@ ENTRY(clear_page_c)
19239 movl $4096/8,%ecx
19240 xorl %eax,%eax
19241 @@ -17980,9 +18068,9 @@ diff -urNp linux-3.0.9/arch/x86/lib/clear_page_64.S linux-3.0.9/arch/x86/lib/cle
19242 1: .byte 0xeb /* jmp <disp8> */
19243 .byte (clear_page_c - clear_page) - (2f - 1b) /* offset */
19244 2: .byte 0xeb /* jmp <disp8> */
19245 -diff -urNp linux-3.0.9/arch/x86/lib/cmpxchg16b_emu.S linux-3.0.9/arch/x86/lib/cmpxchg16b_emu.S
19246 ---- linux-3.0.9/arch/x86/lib/cmpxchg16b_emu.S 2011-11-11 13:12:24.000000000 -0500
19247 -+++ linux-3.0.9/arch/x86/lib/cmpxchg16b_emu.S 2011-11-15 20:02:59.000000000 -0500
19248 +diff -urNp linux-3.1.1/arch/x86/lib/cmpxchg16b_emu.S linux-3.1.1/arch/x86/lib/cmpxchg16b_emu.S
19249 +--- linux-3.1.1/arch/x86/lib/cmpxchg16b_emu.S 2011-11-11 15:19:27.000000000 -0500
19250 ++++ linux-3.1.1/arch/x86/lib/cmpxchg16b_emu.S 2011-11-16 18:39:07.000000000 -0500
19251 @@ -53,11 +53,13 @@ this_cpu_cmpxchg16b_emu:
19252
19253 popf
19254 @@ -17997,17 +18085,10 @@ diff -urNp linux-3.0.9/arch/x86/lib/cmpxchg16b_emu.S linux-3.0.9/arch/x86/lib/cm
19255 ret
19256
19257 CFI_ENDPROC
19258 -diff -urNp linux-3.0.9/arch/x86/lib/copy_page_64.S linux-3.0.9/arch/x86/lib/copy_page_64.S
19259 ---- linux-3.0.9/arch/x86/lib/copy_page_64.S 2011-11-11 13:12:24.000000000 -0500
19260 -+++ linux-3.0.9/arch/x86/lib/copy_page_64.S 2011-11-15 20:02:59.000000000 -0500
19261 -@@ -2,12 +2,14 @@
19262 -
19263 - #include <linux/linkage.h>
19264 - #include <asm/dwarf2.h>
19265 -+#include <asm/alternative-asm.h>
19266 -
19267 - ALIGN
19268 - copy_page_c:
19269 +diff -urNp linux-3.1.1/arch/x86/lib/copy_page_64.S linux-3.1.1/arch/x86/lib/copy_page_64.S
19270 +--- linux-3.1.1/arch/x86/lib/copy_page_64.S 2011-11-11 15:19:27.000000000 -0500
19271 ++++ linux-3.1.1/arch/x86/lib/copy_page_64.S 2011-11-16 18:39:07.000000000 -0500
19272 +@@ -9,6 +9,7 @@ copy_page_c:
19273 CFI_STARTPROC
19274 movl $4096/8,%ecx
19275 rep movsq
19276 @@ -18015,7 +18096,7 @@ diff -urNp linux-3.0.9/arch/x86/lib/copy_page_64.S linux-3.0.9/arch/x86/lib/copy
19277 ret
19278 CFI_ENDPROC
19279 ENDPROC(copy_page_c)
19280 -@@ -94,6 +96,7 @@ ENTRY(copy_page)
19281 +@@ -95,6 +96,7 @@ ENTRY(copy_page)
19282 CFI_RESTORE r13
19283 addq $3*8,%rsp
19284 CFI_ADJUST_CFA_OFFSET -3*8
19285 @@ -18023,7 +18104,7 @@ diff -urNp linux-3.0.9/arch/x86/lib/copy_page_64.S linux-3.0.9/arch/x86/lib/copy
19286 ret
19287 .Lcopy_page_end:
19288 CFI_ENDPROC
19289 -@@ -104,7 +107,7 @@ ENDPROC(copy_page)
19290 +@@ -105,7 +107,7 @@ ENDPROC(copy_page)
19291
19292 #include <asm/cpufeature.h>
19293
19294 @@ -18032,9 +18113,9 @@ diff -urNp linux-3.0.9/arch/x86/lib/copy_page_64.S linux-3.0.9/arch/x86/lib/copy
19295 1: .byte 0xeb /* jmp <disp8> */
19296 .byte (copy_page_c - copy_page) - (2f - 1b) /* offset */
19297 2:
19298 -diff -urNp linux-3.0.9/arch/x86/lib/copy_user_64.S linux-3.0.9/arch/x86/lib/copy_user_64.S
19299 ---- linux-3.0.9/arch/x86/lib/copy_user_64.S 2011-11-11 13:12:24.000000000 -0500
19300 -+++ linux-3.0.9/arch/x86/lib/copy_user_64.S 2011-11-15 20:02:59.000000000 -0500
19301 +diff -urNp linux-3.1.1/arch/x86/lib/copy_user_64.S linux-3.1.1/arch/x86/lib/copy_user_64.S
19302 +--- linux-3.1.1/arch/x86/lib/copy_user_64.S 2011-11-11 15:19:27.000000000 -0500
19303 ++++ linux-3.1.1/arch/x86/lib/copy_user_64.S 2011-11-16 18:39:07.000000000 -0500
19304 @@ -16,6 +16,7 @@
19305 #include <asm/thread_info.h>
19306 #include <asm/cpufeature.h>
19307 @@ -18127,9 +18208,9 @@ diff -urNp linux-3.0.9/arch/x86/lib/copy_user_64.S linux-3.0.9/arch/x86/lib/copy
19308 ret
19309
19310 .section .fixup,"ax"
19311 -diff -urNp linux-3.0.9/arch/x86/lib/copy_user_nocache_64.S linux-3.0.9/arch/x86/lib/copy_user_nocache_64.S
19312 ---- linux-3.0.9/arch/x86/lib/copy_user_nocache_64.S 2011-11-11 13:12:24.000000000 -0500
19313 -+++ linux-3.0.9/arch/x86/lib/copy_user_nocache_64.S 2011-11-15 20:02:59.000000000 -0500
19314 +diff -urNp linux-3.1.1/arch/x86/lib/copy_user_nocache_64.S linux-3.1.1/arch/x86/lib/copy_user_nocache_64.S
19315 +--- linux-3.1.1/arch/x86/lib/copy_user_nocache_64.S 2011-11-11 15:19:27.000000000 -0500
19316 ++++ linux-3.1.1/arch/x86/lib/copy_user_nocache_64.S 2011-11-16 18:39:07.000000000 -0500
19317 @@ -8,12 +8,14 @@
19318
19319 #include <linux/linkage.h>
19320 @@ -18169,9 +18250,9 @@ diff -urNp linux-3.0.9/arch/x86/lib/copy_user_nocache_64.S linux-3.0.9/arch/x86/
19321 ret
19322
19323 .section .fixup,"ax"
19324 -diff -urNp linux-3.0.9/arch/x86/lib/csum-copy_64.S linux-3.0.9/arch/x86/lib/csum-copy_64.S
19325 ---- linux-3.0.9/arch/x86/lib/csum-copy_64.S 2011-11-11 13:12:24.000000000 -0500
19326 -+++ linux-3.0.9/arch/x86/lib/csum-copy_64.S 2011-11-15 20:02:59.000000000 -0500
19327 +diff -urNp linux-3.1.1/arch/x86/lib/csum-copy_64.S linux-3.1.1/arch/x86/lib/csum-copy_64.S
19328 +--- linux-3.1.1/arch/x86/lib/csum-copy_64.S 2011-11-11 15:19:27.000000000 -0500
19329 ++++ linux-3.1.1/arch/x86/lib/csum-copy_64.S 2011-11-16 18:39:07.000000000 -0500
19330 @@ -8,6 +8,7 @@
19331 #include <linux/linkage.h>
19332 #include <asm/dwarf2.h>
19333 @@ -18188,9 +18269,9 @@ diff -urNp linux-3.0.9/arch/x86/lib/csum-copy_64.S linux-3.0.9/arch/x86/lib/csum
19334 ret
19335 CFI_RESTORE_STATE
19336
19337 -diff -urNp linux-3.0.9/arch/x86/lib/csum-wrappers_64.c linux-3.0.9/arch/x86/lib/csum-wrappers_64.c
19338 ---- linux-3.0.9/arch/x86/lib/csum-wrappers_64.c 2011-11-11 13:12:24.000000000 -0500
19339 -+++ linux-3.0.9/arch/x86/lib/csum-wrappers_64.c 2011-11-15 20:02:59.000000000 -0500
19340 +diff -urNp linux-3.1.1/arch/x86/lib/csum-wrappers_64.c linux-3.1.1/arch/x86/lib/csum-wrappers_64.c
19341 +--- linux-3.1.1/arch/x86/lib/csum-wrappers_64.c 2011-11-11 15:19:27.000000000 -0500
19342 ++++ linux-3.1.1/arch/x86/lib/csum-wrappers_64.c 2011-11-16 18:39:07.000000000 -0500
19343 @@ -52,7 +52,13 @@ csum_partial_copy_from_user(const void _
19344 len -= 2;
19345 }
19346 @@ -18221,9 +18302,9 @@ diff -urNp linux-3.0.9/arch/x86/lib/csum-wrappers_64.c linux-3.0.9/arch/x86/lib/
19347 len, isum, NULL, errp);
19348 }
19349 EXPORT_SYMBOL(csum_partial_copy_to_user);
19350 -diff -urNp linux-3.0.9/arch/x86/lib/getuser.S linux-3.0.9/arch/x86/lib/getuser.S
19351 ---- linux-3.0.9/arch/x86/lib/getuser.S 2011-11-11 13:12:24.000000000 -0500
19352 -+++ linux-3.0.9/arch/x86/lib/getuser.S 2011-11-15 20:02:59.000000000 -0500
19353 +diff -urNp linux-3.1.1/arch/x86/lib/getuser.S linux-3.1.1/arch/x86/lib/getuser.S
19354 +--- linux-3.1.1/arch/x86/lib/getuser.S 2011-11-11 15:19:27.000000000 -0500
19355 ++++ linux-3.1.1/arch/x86/lib/getuser.S 2011-11-16 18:39:07.000000000 -0500
19356 @@ -33,15 +33,38 @@
19357 #include <asm/asm-offsets.h>
19358 #include <asm/thread_info.h>
19359 @@ -18347,9 +18428,9 @@ diff -urNp linux-3.0.9/arch/x86/lib/getuser.S linux-3.0.9/arch/x86/lib/getuser.S
19360 ret
19361 CFI_ENDPROC
19362 END(bad_get_user)
19363 -diff -urNp linux-3.0.9/arch/x86/lib/insn.c linux-3.0.9/arch/x86/lib/insn.c
19364 ---- linux-3.0.9/arch/x86/lib/insn.c 2011-11-11 13:12:24.000000000 -0500
19365 -+++ linux-3.0.9/arch/x86/lib/insn.c 2011-11-15 20:02:59.000000000 -0500
19366 +diff -urNp linux-3.1.1/arch/x86/lib/insn.c linux-3.1.1/arch/x86/lib/insn.c
19367 +--- linux-3.1.1/arch/x86/lib/insn.c 2011-11-11 15:19:27.000000000 -0500
19368 ++++ linux-3.1.1/arch/x86/lib/insn.c 2011-11-16 18:39:07.000000000 -0500
19369 @@ -21,6 +21,11 @@
19370 #include <linux/string.h>
19371 #include <asm/inat.h>
19372 @@ -18373,9 +18454,9 @@ diff -urNp linux-3.0.9/arch/x86/lib/insn.c linux-3.0.9/arch/x86/lib/insn.c
19373 insn->x86_64 = x86_64 ? 1 : 0;
19374 insn->opnd_bytes = 4;
19375 if (x86_64)
19376 -diff -urNp linux-3.0.9/arch/x86/lib/iomap_copy_64.S linux-3.0.9/arch/x86/lib/iomap_copy_64.S
19377 ---- linux-3.0.9/arch/x86/lib/iomap_copy_64.S 2011-11-11 13:12:24.000000000 -0500
19378 -+++ linux-3.0.9/arch/x86/lib/iomap_copy_64.S 2011-11-15 20:02:59.000000000 -0500
19379 +diff -urNp linux-3.1.1/arch/x86/lib/iomap_copy_64.S linux-3.1.1/arch/x86/lib/iomap_copy_64.S
19380 +--- linux-3.1.1/arch/x86/lib/iomap_copy_64.S 2011-11-11 15:19:27.000000000 -0500
19381 ++++ linux-3.1.1/arch/x86/lib/iomap_copy_64.S 2011-11-16 18:39:07.000000000 -0500
19382 @@ -17,6 +17,7 @@
19383
19384 #include <linux/linkage.h>
19385 @@ -18392,9 +18473,9 @@ diff -urNp linux-3.0.9/arch/x86/lib/iomap_copy_64.S linux-3.0.9/arch/x86/lib/iom
19386 ret
19387 CFI_ENDPROC
19388 ENDPROC(__iowrite32_copy)
19389 -diff -urNp linux-3.0.9/arch/x86/lib/memcpy_64.S linux-3.0.9/arch/x86/lib/memcpy_64.S
19390 ---- linux-3.0.9/arch/x86/lib/memcpy_64.S 2011-11-11 13:12:24.000000000 -0500
19391 -+++ linux-3.0.9/arch/x86/lib/memcpy_64.S 2011-11-15 20:02:59.000000000 -0500
19392 +diff -urNp linux-3.1.1/arch/x86/lib/memcpy_64.S linux-3.1.1/arch/x86/lib/memcpy_64.S
19393 +--- linux-3.1.1/arch/x86/lib/memcpy_64.S 2011-11-11 15:19:27.000000000 -0500
19394 ++++ linux-3.1.1/arch/x86/lib/memcpy_64.S 2011-11-16 18:39:07.000000000 -0500
19395 @@ -34,6 +34,7 @@
19396 rep movsq
19397 movl %edx, %ecx
19398 @@ -18443,18 +18524,10 @@ diff -urNp linux-3.0.9/arch/x86/lib/memcpy_64.S linux-3.0.9/arch/x86/lib/memcpy_
19399 retq
19400 CFI_ENDPROC
19401 ENDPROC(memcpy)
19402 -diff -urNp linux-3.0.9/arch/x86/lib/memmove_64.S linux-3.0.9/arch/x86/lib/memmove_64.S
19403 ---- linux-3.0.9/arch/x86/lib/memmove_64.S 2011-11-11 13:12:24.000000000 -0500
19404 -+++ linux-3.0.9/arch/x86/lib/memmove_64.S 2011-11-15 20:02:59.000000000 -0500
19405 -@@ -9,6 +9,7 @@
19406 - #include <linux/linkage.h>
19407 - #include <asm/dwarf2.h>
19408 - #include <asm/cpufeature.h>
19409 -+#include <asm/alternative-asm.h>
19410 -
19411 - #undef memmove
19412 -
19413 -@@ -201,6 +202,7 @@ ENTRY(memmove)
19414 +diff -urNp linux-3.1.1/arch/x86/lib/memmove_64.S linux-3.1.1/arch/x86/lib/memmove_64.S
19415 +--- linux-3.1.1/arch/x86/lib/memmove_64.S 2011-11-11 15:19:27.000000000 -0500
19416 ++++ linux-3.1.1/arch/x86/lib/memmove_64.S 2011-11-16 18:39:07.000000000 -0500
19417 +@@ -202,6 +202,7 @@ ENTRY(memmove)
19418 movb (%rsi), %r11b
19419 movb %r11b, (%rdi)
19420 13:
19421 @@ -18462,7 +18535,7 @@ diff -urNp linux-3.0.9/arch/x86/lib/memmove_64.S linux-3.0.9/arch/x86/lib/memmov
19422 retq
19423 CFI_ENDPROC
19424
19425 -@@ -209,6 +211,7 @@ ENTRY(memmove)
19426 +@@ -210,6 +211,7 @@ ENTRY(memmove)
19427 /* Forward moving data. */
19428 movq %rdx, %rcx
19429 rep movsb
19430 @@ -18470,9 +18543,9 @@ diff -urNp linux-3.0.9/arch/x86/lib/memmove_64.S linux-3.0.9/arch/x86/lib/memmov
19431 retq
19432 .Lmemmove_end_forward_efs:
19433 .previous
19434 -diff -urNp linux-3.0.9/arch/x86/lib/memset_64.S linux-3.0.9/arch/x86/lib/memset_64.S
19435 ---- linux-3.0.9/arch/x86/lib/memset_64.S 2011-11-11 13:12:24.000000000 -0500
19436 -+++ linux-3.0.9/arch/x86/lib/memset_64.S 2011-11-15 20:02:59.000000000 -0500
19437 +diff -urNp linux-3.1.1/arch/x86/lib/memset_64.S linux-3.1.1/arch/x86/lib/memset_64.S
19438 +--- linux-3.1.1/arch/x86/lib/memset_64.S 2011-11-11 15:19:27.000000000 -0500
19439 ++++ linux-3.1.1/arch/x86/lib/memset_64.S 2011-11-16 18:39:07.000000000 -0500
19440 @@ -31,6 +31,7 @@
19441 movl %r8d,%ecx
19442 rep stosb
19443 @@ -18497,9 +18570,9 @@ diff -urNp linux-3.0.9/arch/x86/lib/memset_64.S linux-3.0.9/arch/x86/lib/memset_
19444 ret
19445
19446 CFI_RESTORE_STATE
19447 -diff -urNp linux-3.0.9/arch/x86/lib/mmx_32.c linux-3.0.9/arch/x86/lib/mmx_32.c
19448 ---- linux-3.0.9/arch/x86/lib/mmx_32.c 2011-11-11 13:12:24.000000000 -0500
19449 -+++ linux-3.0.9/arch/x86/lib/mmx_32.c 2011-11-15 20:02:59.000000000 -0500
19450 +diff -urNp linux-3.1.1/arch/x86/lib/mmx_32.c linux-3.1.1/arch/x86/lib/mmx_32.c
19451 +--- linux-3.1.1/arch/x86/lib/mmx_32.c 2011-11-11 15:19:27.000000000 -0500
19452 ++++ linux-3.1.1/arch/x86/lib/mmx_32.c 2011-11-16 18:39:07.000000000 -0500
19453 @@ -29,6 +29,7 @@ void *_mmx_memcpy(void *to, const void *
19454 {
19455 void *p;
19456 @@ -18815,9 +18888,9 @@ diff -urNp linux-3.0.9/arch/x86/lib/mmx_32.c linux-3.0.9/arch/x86/lib/mmx_32.c
19457
19458 from += 64;
19459 to += 64;
19460 -diff -urNp linux-3.0.9/arch/x86/lib/msr-reg.S linux-3.0.9/arch/x86/lib/msr-reg.S
19461 ---- linux-3.0.9/arch/x86/lib/msr-reg.S 2011-11-11 13:12:24.000000000 -0500
19462 -+++ linux-3.0.9/arch/x86/lib/msr-reg.S 2011-11-15 20:02:59.000000000 -0500
19463 +diff -urNp linux-3.1.1/arch/x86/lib/msr-reg.S linux-3.1.1/arch/x86/lib/msr-reg.S
19464 +--- linux-3.1.1/arch/x86/lib/msr-reg.S 2011-11-11 15:19:27.000000000 -0500
19465 ++++ linux-3.1.1/arch/x86/lib/msr-reg.S 2011-11-16 18:39:07.000000000 -0500
19466 @@ -3,6 +3,7 @@
19467 #include <asm/dwarf2.h>
19468 #include <asm/asm.h>
19469 @@ -18834,9 +18907,9 @@ diff -urNp linux-3.0.9/arch/x86/lib/msr-reg.S linux-3.0.9/arch/x86/lib/msr-reg.S
19470 ret
19471 3:
19472 CFI_RESTORE_STATE
19473 -diff -urNp linux-3.0.9/arch/x86/lib/putuser.S linux-3.0.9/arch/x86/lib/putuser.S
19474 ---- linux-3.0.9/arch/x86/lib/putuser.S 2011-11-11 13:12:24.000000000 -0500
19475 -+++ linux-3.0.9/arch/x86/lib/putuser.S 2011-11-15 20:02:59.000000000 -0500
19476 +diff -urNp linux-3.1.1/arch/x86/lib/putuser.S linux-3.1.1/arch/x86/lib/putuser.S
19477 +--- linux-3.1.1/arch/x86/lib/putuser.S 2011-11-11 15:19:27.000000000 -0500
19478 ++++ linux-3.1.1/arch/x86/lib/putuser.S 2011-11-16 18:39:07.000000000 -0500
19479 @@ -15,7 +15,9 @@
19480 #include <asm/thread_info.h>
19481 #include <asm/errno.h>
19482 @@ -18976,37 +19049,37 @@ diff -urNp linux-3.0.9/arch/x86/lib/putuser.S linux-3.0.9/arch/x86/lib/putuser.S
19483 #endif
19484 xor %eax,%eax
19485 EXIT
19486 -diff -urNp linux-3.0.9/arch/x86/lib/rwlock_64.S linux-3.0.9/arch/x86/lib/rwlock_64.S
19487 ---- linux-3.0.9/arch/x86/lib/rwlock_64.S 2011-11-11 13:12:24.000000000 -0500
19488 -+++ linux-3.0.9/arch/x86/lib/rwlock_64.S 2011-11-15 20:02:59.000000000 -0500
19489 -@@ -17,6 +17,7 @@ ENTRY(__write_lock_failed)
19490 - LOCK_PREFIX
19491 - subl $RW_LOCK_BIAS,(%rdi)
19492 - jnz __write_lock_failed
19493 +diff -urNp linux-3.1.1/arch/x86/lib/rwlock.S linux-3.1.1/arch/x86/lib/rwlock.S
19494 +--- linux-3.1.1/arch/x86/lib/rwlock.S 2011-11-11 15:19:27.000000000 -0500
19495 ++++ linux-3.1.1/arch/x86/lib/rwlock.S 2011-11-16 18:39:07.000000000 -0500
19496 +@@ -23,6 +23,7 @@ ENTRY(__write_lock_failed)
19497 + WRITE_LOCK_SUB($RW_LOCK_BIAS) (%__lock_ptr)
19498 + jnz 0b
19499 + ENDFRAME
19500 + pax_force_retaddr
19501 ret
19502 CFI_ENDPROC
19503 END(__write_lock_failed)
19504 -@@ -33,6 +34,7 @@ ENTRY(__read_lock_failed)
19505 - LOCK_PREFIX
19506 - decl (%rdi)
19507 - js __read_lock_failed
19508 +@@ -39,6 +40,7 @@ ENTRY(__read_lock_failed)
19509 + READ_LOCK_SIZE(dec) (%__lock_ptr)
19510 + js 0b
19511 + ENDFRAME
19512 + pax_force_retaddr
19513 ret
19514 CFI_ENDPROC
19515 END(__read_lock_failed)
19516 -diff -urNp linux-3.0.9/arch/x86/lib/rwsem_64.S linux-3.0.9/arch/x86/lib/rwsem_64.S
19517 ---- linux-3.0.9/arch/x86/lib/rwsem_64.S 2011-11-11 13:12:24.000000000 -0500
19518 -+++ linux-3.0.9/arch/x86/lib/rwsem_64.S 2011-11-15 20:02:59.000000000 -0500
19519 -@@ -51,6 +51,7 @@ ENTRY(call_rwsem_down_read_failed)
19520 - popq_cfi %rdx
19521 - CFI_RESTORE rdx
19522 +diff -urNp linux-3.1.1/arch/x86/lib/rwsem.S linux-3.1.1/arch/x86/lib/rwsem.S
19523 +--- linux-3.1.1/arch/x86/lib/rwsem.S 2011-11-11 15:19:27.000000000 -0500
19524 ++++ linux-3.1.1/arch/x86/lib/rwsem.S 2011-11-16 18:39:07.000000000 -0500
19525 +@@ -94,6 +94,7 @@ ENTRY(call_rwsem_down_read_failed)
19526 + __ASM_SIZE(pop,_cfi) %__ASM_REG(dx)
19527 + CFI_RESTORE __ASM_REG(dx)
19528 restore_common_regs
19529 + pax_force_retaddr
19530 ret
19531 CFI_ENDPROC
19532 ENDPROC(call_rwsem_down_read_failed)
19533 -@@ -61,6 +62,7 @@ ENTRY(call_rwsem_down_write_failed)
19534 +@@ -104,6 +105,7 @@ ENTRY(call_rwsem_down_write_failed)
19535 movq %rax,%rdi
19536 call rwsem_down_write_failed
19537 restore_common_regs
19538 @@ -19014,7 +19087,7 @@ diff -urNp linux-3.0.9/arch/x86/lib/rwsem_64.S linux-3.0.9/arch/x86/lib/rwsem_64
19539 ret
19540 CFI_ENDPROC
19541 ENDPROC(call_rwsem_down_write_failed)
19542 -@@ -73,7 +75,8 @@ ENTRY(call_rwsem_wake)
19543 +@@ -117,7 +119,8 @@ ENTRY(call_rwsem_wake)
19544 movq %rax,%rdi
19545 call rwsem_wake
19546 restore_common_regs
19547 @@ -19024,38 +19097,35 @@ diff -urNp linux-3.0.9/arch/x86/lib/rwsem_64.S linux-3.0.9/arch/x86/lib/rwsem_64
19548 CFI_ENDPROC
19549 ENDPROC(call_rwsem_wake)
19550
19551 -@@ -88,6 +91,7 @@ ENTRY(call_rwsem_downgrade_wake)
19552 - popq_cfi %rdx
19553 - CFI_RESTORE rdx
19554 +@@ -131,6 +134,7 @@ ENTRY(call_rwsem_downgrade_wake)
19555 + __ASM_SIZE(pop,_cfi) %__ASM_REG(dx)
19556 + CFI_RESTORE __ASM_REG(dx)
19557 restore_common_regs
19558 + pax_force_retaddr
19559 ret
19560 CFI_ENDPROC
19561 ENDPROC(call_rwsem_downgrade_wake)
19562 -diff -urNp linux-3.0.9/arch/x86/lib/thunk_64.S linux-3.0.9/arch/x86/lib/thunk_64.S
19563 ---- linux-3.0.9/arch/x86/lib/thunk_64.S 2011-11-11 13:12:24.000000000 -0500
19564 -+++ linux-3.0.9/arch/x86/lib/thunk_64.S 2011-11-15 20:02:59.000000000 -0500
19565 -@@ -10,7 +10,8 @@
19566 - #include <asm/dwarf2.h>
19567 - #include <asm/calling.h>
19568 - #include <asm/rwlock.h>
19569 --
19570 -+ #include <asm/alternative-asm.h>
19571 -+
19572 - /* rdi: arg1 ... normal C conventions. rax is saved/restored. */
19573 - .macro thunk name,func
19574 - .globl \name
19575 -@@ -50,5 +51,6 @@
19576 +diff -urNp linux-3.1.1/arch/x86/lib/thunk_64.S linux-3.1.1/arch/x86/lib/thunk_64.S
19577 +--- linux-3.1.1/arch/x86/lib/thunk_64.S 2011-11-11 15:19:27.000000000 -0500
19578 ++++ linux-3.1.1/arch/x86/lib/thunk_64.S 2011-11-16 18:39:07.000000000 -0500
19579 +@@ -8,6 +8,7 @@
19580 + #include <linux/linkage.h>
19581 + #include <asm/dwarf2.h>
19582 + #include <asm/calling.h>
19583 ++#include <asm/alternative-asm.h>
19584 +
19585 + /* rdi: arg1 ... normal C conventions. rax is saved/restored. */
19586 + .macro THUNK name, func, put_ret_addr_in_rdi=0
19587 +@@ -41,5 +42,6 @@
19588 SAVE_ARGS
19589 restore:
19590 RESTORE_ARGS
19591 -- ret
19592 + pax_force_retaddr
19593 -+ ret
19594 + ret
19595 CFI_ENDPROC
19596 -diff -urNp linux-3.0.9/arch/x86/lib/usercopy_32.c linux-3.0.9/arch/x86/lib/usercopy_32.c
19597 ---- linux-3.0.9/arch/x86/lib/usercopy_32.c 2011-11-11 13:12:24.000000000 -0500
19598 -+++ linux-3.0.9/arch/x86/lib/usercopy_32.c 2011-11-15 20:02:59.000000000 -0500
19599 +diff -urNp linux-3.1.1/arch/x86/lib/usercopy_32.c linux-3.1.1/arch/x86/lib/usercopy_32.c
19600 +--- linux-3.1.1/arch/x86/lib/usercopy_32.c 2011-11-11 15:19:27.000000000 -0500
19601 ++++ linux-3.1.1/arch/x86/lib/usercopy_32.c 2011-11-16 18:39:07.000000000 -0500
19602 @@ -43,7 +43,7 @@ do { \
19603 __asm__ __volatile__( \
19604 " testl %1,%1\n" \
19605 @@ -19676,9 +19746,9 @@ diff -urNp linux-3.0.9/arch/x86/lib/usercopy_32.c linux-3.0.9/arch/x86/lib/userc
19606 +}
19607 +EXPORT_SYMBOL(set_fs);
19608 +#endif
19609 -diff -urNp linux-3.0.9/arch/x86/lib/usercopy_64.c linux-3.0.9/arch/x86/lib/usercopy_64.c
19610 ---- linux-3.0.9/arch/x86/lib/usercopy_64.c 2011-11-11 13:12:24.000000000 -0500
19611 -+++ linux-3.0.9/arch/x86/lib/usercopy_64.c 2011-11-15 20:02:59.000000000 -0500
19612 +diff -urNp linux-3.1.1/arch/x86/lib/usercopy_64.c linux-3.1.1/arch/x86/lib/usercopy_64.c
19613 +--- linux-3.1.1/arch/x86/lib/usercopy_64.c 2011-11-11 15:19:27.000000000 -0500
19614 ++++ linux-3.1.1/arch/x86/lib/usercopy_64.c 2011-11-16 18:39:07.000000000 -0500
19615 @@ -42,6 +42,12 @@ long
19616 __strncpy_from_user(char *dst, const char __user *src, long count)
19617 {
19618 @@ -19737,9 +19807,9 @@ diff -urNp linux-3.0.9/arch/x86/lib/usercopy_64.c linux-3.0.9/arch/x86/lib/userc
19619 {
19620 char c;
19621 unsigned zero_len;
19622 -diff -urNp linux-3.0.9/arch/x86/Makefile linux-3.0.9/arch/x86/Makefile
19623 ---- linux-3.0.9/arch/x86/Makefile 2011-11-11 13:12:24.000000000 -0500
19624 -+++ linux-3.0.9/arch/x86/Makefile 2011-11-15 20:02:59.000000000 -0500
19625 +diff -urNp linux-3.1.1/arch/x86/Makefile linux-3.1.1/arch/x86/Makefile
19626 +--- linux-3.1.1/arch/x86/Makefile 2011-11-11 15:19:27.000000000 -0500
19627 ++++ linux-3.1.1/arch/x86/Makefile 2011-11-16 18:40:08.000000000 -0500
19628 @@ -44,6 +44,7 @@ ifeq ($(CONFIG_X86_32),y)
19629 else
19630 BITS := 64
19631 @@ -19761,9 +19831,9 @@ diff -urNp linux-3.0.9/arch/x86/Makefile linux-3.0.9/arch/x86/Makefile
19632 +
19633 +archprepare:
19634 + $(if $(LDFLAGS_BUILD_ID),,$(error $(OLD_LD)))
19635 -diff -urNp linux-3.0.9/arch/x86/mm/extable.c linux-3.0.9/arch/x86/mm/extable.c
19636 ---- linux-3.0.9/arch/x86/mm/extable.c 2011-11-11 13:12:24.000000000 -0500
19637 -+++ linux-3.0.9/arch/x86/mm/extable.c 2011-11-15 20:02:59.000000000 -0500
19638 +diff -urNp linux-3.1.1/arch/x86/mm/extable.c linux-3.1.1/arch/x86/mm/extable.c
19639 +--- linux-3.1.1/arch/x86/mm/extable.c 2011-11-11 15:19:27.000000000 -0500
19640 ++++ linux-3.1.1/arch/x86/mm/extable.c 2011-11-16 18:39:07.000000000 -0500
19641 @@ -8,7 +8,7 @@ int fixup_exception(struct pt_regs *regs
19642 const struct exception_table_entry *fixup;
19643
19644 @@ -19773,10 +19843,10 @@ diff -urNp linux-3.0.9/arch/x86/mm/extable.c linux-3.0.9/arch/x86/mm/extable.c
19645 extern u32 pnp_bios_fault_eip, pnp_bios_fault_esp;
19646 extern u32 pnp_bios_is_utter_crap;
19647 pnp_bios_is_utter_crap = 1;
19648 -diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19649 ---- linux-3.0.9/arch/x86/mm/fault.c 2011-11-11 13:12:24.000000000 -0500
19650 -+++ linux-3.0.9/arch/x86/mm/fault.c 2011-11-15 20:02:59.000000000 -0500
19651 -@@ -13,10 +13,18 @@
19652 +diff -urNp linux-3.1.1/arch/x86/mm/fault.c linux-3.1.1/arch/x86/mm/fault.c
19653 +--- linux-3.1.1/arch/x86/mm/fault.c 2011-11-11 15:19:27.000000000 -0500
19654 ++++ linux-3.1.1/arch/x86/mm/fault.c 2011-11-16 20:43:50.000000000 -0500
19655 +@@ -13,11 +13,18 @@
19656 #include <linux/perf_event.h> /* perf_sw_event */
19657 #include <linux/hugetlb.h> /* hstate_index_to_shift */
19658 #include <linux/prefetch.h> /* prefetchw */
19659 @@ -19786,7 +19856,7 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19660 #include <asm/traps.h> /* dotraplinkage, ... */
19661 #include <asm/pgalloc.h> /* pgd_*(), ... */
19662 #include <asm/kmemcheck.h> /* kmemcheck_*(), ... */
19663 -+#include <asm/vsyscall.h>
19664 + #include <asm/vsyscall.h>
19665 +#include <asm/tlbflush.h>
19666 +
19667 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
19668 @@ -19795,7 +19865,7 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19669
19670 /*
19671 * Page fault error code bits:
19672 -@@ -54,7 +62,7 @@ static inline int __kprobes notify_page_
19673 +@@ -55,7 +62,7 @@ static inline int __kprobes notify_page_
19674 int ret = 0;
19675
19676 /* kprobe_running() needs smp_processor_id() */
19677 @@ -19804,7 +19874,7 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19678 preempt_disable();
19679 if (kprobe_running() && kprobe_fault_handler(regs, 14))
19680 ret = 1;
19681 -@@ -115,7 +123,10 @@ check_prefetch_opcode(struct pt_regs *re
19682 +@@ -116,7 +123,10 @@ check_prefetch_opcode(struct pt_regs *re
19683 return !instr_lo || (instr_lo>>1) == 1;
19684 case 0x00:
19685 /* Prefetch instruction is 0x0F0D or 0x0F18 */
19686 @@ -19816,7 +19886,7 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19687 return 0;
19688
19689 *prefetch = (instr_lo == 0xF) &&
19690 -@@ -149,7 +160,10 @@ is_prefetch(struct pt_regs *regs, unsign
19691 +@@ -150,7 +160,10 @@ is_prefetch(struct pt_regs *regs, unsign
19692 while (instr < max_instr) {
19693 unsigned char opcode;
19694
19695 @@ -19828,10 +19898,14 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19696 break;
19697
19698 instr++;
19699 -@@ -180,6 +194,30 @@ force_sig_info_fault(int si_signo, int s
19700 +@@ -181,6 +194,34 @@ force_sig_info_fault(int si_signo, int s
19701 force_sig_info(si_signo, &info, tsk);
19702 }
19703
19704 ++#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
19705 ++static bool pax_is_fetch_fault(struct pt_regs *regs, unsigned long error_code, unsigned long address);
19706 ++#endif
19707 ++
19708 +#ifdef CONFIG_PAX_EMUTRAMP
19709 +static int pax_handle_fetch_fault(struct pt_regs *regs);
19710 +#endif
19711 @@ -19859,7 +19933,7 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19712 DEFINE_SPINLOCK(pgd_lock);
19713 LIST_HEAD(pgd_list);
19714
19715 -@@ -230,10 +268,22 @@ void vmalloc_sync_all(void)
19716 +@@ -231,10 +272,22 @@ void vmalloc_sync_all(void)
19717 for (address = VMALLOC_START & PMD_MASK;
19718 address >= TASK_SIZE && address < FIXADDR_TOP;
19719 address += PMD_SIZE) {
19720 @@ -19882,7 +19956,7 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19721 spinlock_t *pgt_lock;
19722 pmd_t *ret;
19723
19724 -@@ -241,8 +291,13 @@ void vmalloc_sync_all(void)
19725 +@@ -242,8 +295,13 @@ void vmalloc_sync_all(void)
19726 pgt_lock = &pgd_page_get_mm(page)->page_table_lock;
19727
19728 spin_lock(pgt_lock);
19729 @@ -19897,7 +19971,7 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19730
19731 if (!ret)
19732 break;
19733 -@@ -276,6 +331,11 @@ static noinline __kprobes int vmalloc_fa
19734 +@@ -277,6 +335,11 @@ static noinline __kprobes int vmalloc_fa
19735 * an interrupt in the middle of a task switch..
19736 */
19737 pgd_paddr = read_cr3();
19738 @@ -19909,7 +19983,7 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19739 pmd_k = vmalloc_sync_one(__va(pgd_paddr), address);
19740 if (!pmd_k)
19741 return -1;
19742 -@@ -371,7 +431,14 @@ static noinline __kprobes int vmalloc_fa
19743 +@@ -372,7 +435,14 @@ static noinline __kprobes int vmalloc_fa
19744 * happen within a race in page table update. In the later
19745 * case just flush:
19746 */
19747 @@ -19924,7 +19998,7 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19748 pgd_ref = pgd_offset_k(address);
19749 if (pgd_none(*pgd_ref))
19750 return -1;
19751 -@@ -533,7 +600,7 @@ static int is_errata93(struct pt_regs *r
19752 +@@ -534,7 +604,7 @@ static int is_errata93(struct pt_regs *r
19753 static int is_errata100(struct pt_regs *regs, unsigned long address)
19754 {
19755 #ifdef CONFIG_X86_64
19756 @@ -19933,7 +20007,7 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19757 return 1;
19758 #endif
19759 return 0;
19760 -@@ -560,7 +627,7 @@ static int is_f00f_bug(struct pt_regs *r
19761 +@@ -561,7 +631,7 @@ static int is_f00f_bug(struct pt_regs *r
19762 }
19763
19764 static const char nx_warning[] = KERN_CRIT
19765 @@ -19942,7 +20016,7 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19766
19767 static void
19768 show_fault_oops(struct pt_regs *regs, unsigned long error_code,
19769 -@@ -569,14 +636,25 @@ show_fault_oops(struct pt_regs *regs, un
19770 +@@ -570,14 +640,25 @@ show_fault_oops(struct pt_regs *regs, un
19771 if (!oops_may_print())
19772 return;
19773
19774 @@ -19970,40 +20044,12 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19775
19776 printk(KERN_ALERT "BUG: unable to handle kernel ");
19777 if (address < PAGE_SIZE)
19778 -@@ -702,6 +780,66 @@ __bad_area_nosemaphore(struct pt_regs *r
19779 - unsigned long address, int si_code)
19780 - {
19781 - struct task_struct *tsk = current;
19782 -+#if defined(CONFIG_X86_64) || defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
19783 -+ struct mm_struct *mm = tsk->mm;
19784 -+#endif
19785 -+
19786 -+#ifdef CONFIG_X86_64
19787 -+ if (mm && (error_code & PF_INSTR) && mm->context.vdso) {
19788 -+ if (regs->ip == VSYSCALL_ADDR(__NR_vgettimeofday) ||
19789 -+ regs->ip == VSYSCALL_ADDR(__NR_vtime) ||
19790 -+ regs->ip == VSYSCALL_ADDR(__NR_vgetcpu)) {
19791 -+ regs->ip += mm->context.vdso - PAGE_SIZE - VSYSCALL_START;
19792 -+ return;
19793 -+ }
19794 -+ }
19795 -+#endif
19796 -+
19797 +@@ -733,6 +814,21 @@ __bad_area_nosemaphore(struct pt_regs *r
19798 + }
19799 + #endif
19800 +
19801 +#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
19802 -+ if (mm && (error_code & PF_USER)) {
19803 -+ unsigned long ip = regs->ip;
19804 -+
19805 -+ if (v8086_mode(regs))
19806 -+ ip = ((regs->cs & 0xffff) << 4) + (ip & 0xffff);
19807 -+
19808 -+ /*
19809 -+ * It's possible to have interrupts off here:
19810 -+ */
19811 -+ local_irq_enable();
19812 -+
19813 -+#ifdef CONFIG_PAX_PAGEEXEC
19814 -+ if ((mm->pax_flags & MF_PAX_PAGEEXEC) &&
19815 -+ (((__supported_pte_mask & _PAGE_NX) && (error_code & PF_INSTR)) || (!(error_code & (PF_PROT | PF_WRITE)) && ip == address))) {
19816 ++ if (pax_is_fetch_fault(regs, error_code, address)) {
19817 +
19818 +#ifdef CONFIG_PAX_EMUTRAMP
19819 + switch (pax_handle_fetch_fault(regs)) {
19820 @@ -20012,32 +20058,24 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19821 + }
19822 +#endif
19823 +
19824 -+ pax_report_fault(regs, (void *)ip, (void *)regs->sp);
19825 ++ pax_report_fault(regs, (void *)regs->ip, (void *)regs->sp);
19826 + do_group_exit(SIGKILL);
19827 + }
19828 +#endif
19829 +
19830 -+#ifdef CONFIG_PAX_SEGMEXEC
19831 -+ if ((mm->pax_flags & MF_PAX_SEGMEXEC) && !(error_code & (PF_PROT | PF_WRITE)) && (ip + SEGMEXEC_TASK_SIZE == address)) {
19832 -+
19833 -+#ifdef CONFIG_PAX_EMUTRAMP
19834 -+ switch (pax_handle_fetch_fault(regs)) {
19835 -+ case 2:
19836 -+ return;
19837 -+ }
19838 -+#endif
19839 -+
19840 -+ pax_report_fault(regs, (void *)ip, (void *)regs->sp);
19841 -+ do_group_exit(SIGKILL);
19842 -+ }
19843 -+#endif
19844 -+
19845 -+ }
19846 -+#endif
19847 + if (unlikely(show_unhandled_signals))
19848 + show_signal_msg(regs, error_code, address, tsk);
19849
19850 - /* User mode accesses just cause a SIGSEGV */
19851 - if (error_code & PF_USER) {
19852 -@@ -871,6 +1009,99 @@ static int spurious_fault_check(unsigned
19853 +@@ -829,7 +925,7 @@ do_sigbus(struct pt_regs *regs, unsigned
19854 + if (fault & (VM_FAULT_HWPOISON|VM_FAULT_HWPOISON_LARGE)) {
19855 + printk(KERN_ERR
19856 + "MCE: Killing %s:%d due to hardware memory corruption fault at %lx\n",
19857 +- tsk->comm, tsk->pid, address);
19858 ++ tsk->comm, task_pid_nr(tsk), address);
19859 + code = BUS_MCEERR_AR;
19860 + }
19861 + #endif
19862 +@@ -884,6 +980,99 @@ static int spurious_fault_check(unsigned
19863 return 1;
19864 }
19865
19866 @@ -20137,7 +20175,7 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19867 /*
19868 * Handle a spurious fault caused by a stale TLB entry.
19869 *
19870 -@@ -943,6 +1174,9 @@ int show_unhandled_signals = 1;
19871 +@@ -956,6 +1145,9 @@ int show_unhandled_signals = 1;
19872 static inline int
19873 access_error(unsigned long error_code, struct vm_area_struct *vma)
19874 {
19875 @@ -20147,7 +20185,7 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19876 if (error_code & PF_WRITE) {
19877 /* write, present and write, not present: */
19878 if (unlikely(!(vma->vm_flags & VM_WRITE)))
19879 -@@ -976,19 +1210,33 @@ do_page_fault(struct pt_regs *regs, unsi
19880 +@@ -989,19 +1181,33 @@ do_page_fault(struct pt_regs *regs, unsi
19881 {
19882 struct vm_area_struct *vma;
19883 struct task_struct *tsk;
19884 @@ -20169,7 +20207,7 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19885 + }
19886 + if (address < PAX_USER_SHADOW_BASE) {
19887 + printk(KERN_ERR "PAX: please report this to pageexec@××××××××.hu\n");
19888 -+ printk(KERN_ERR "PAX: faulting IP: %pA\n", (void *)regs->ip);
19889 ++ printk(KERN_ERR "PAX: faulting IP: %pS\n", (void *)regs->ip);
19890 + show_trace_log_lvl(NULL, NULL, (void *)regs->sp, regs->bp, KERN_ERR);
19891 + } else
19892 + address -= PAX_USER_SHADOW_BASE;
19893 @@ -20185,7 +20223,7 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19894 /*
19895 * Detect and handle instructions that would cause a page fault for
19896 * both a tracked kernel page and a userspace page.
19897 -@@ -1048,7 +1296,7 @@ do_page_fault(struct pt_regs *regs, unsi
19898 +@@ -1061,7 +1267,7 @@ do_page_fault(struct pt_regs *regs, unsi
19899 * User-mode registers count as a user access even for any
19900 * potential system fault or CPU buglet:
19901 */
19902 @@ -20194,7 +20232,7 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19903 local_irq_enable();
19904 error_code |= PF_USER;
19905 } else {
19906 -@@ -1103,6 +1351,11 @@ retry:
19907 +@@ -1116,6 +1322,11 @@ retry:
19908 might_sleep();
19909 }
19910
19911 @@ -20206,7 +20244,7 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19912 vma = find_vma(mm, address);
19913 if (unlikely(!vma)) {
19914 bad_area(regs, error_code, address);
19915 -@@ -1114,18 +1367,24 @@ retry:
19916 +@@ -1127,18 +1338,24 @@ retry:
19917 bad_area(regs, error_code, address);
19918 return;
19919 }
19920 @@ -20242,11 +20280,42 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19921 if (unlikely(expand_stack(vma, address))) {
19922 bad_area(regs, error_code, address);
19923 return;
19924 -@@ -1180,3 +1439,199 @@ good_area:
19925 +@@ -1193,3 +1410,240 @@ good_area:
19926
19927 up_read(&mm->mmap_sem);
19928 }
19929 +
19930 ++#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
19931 ++static bool pax_is_fetch_fault(struct pt_regs *regs, unsigned long error_code, unsigned long address)
19932 ++{
19933 ++ struct mm_struct *mm = current->mm;
19934 ++ unsigned long ip = regs->ip;
19935 ++
19936 ++ if (v8086_mode(regs))
19937 ++ ip = ((regs->cs & 0xffff) << 4) + (ip & 0xffff);
19938 ++
19939 ++#ifdef CONFIG_PAX_PAGEEXEC
19940 ++ if (mm->pax_flags & MF_PAX_PAGEEXEC) {
19941 ++ if ((__supported_pte_mask & _PAGE_NX) && (error_code & PF_INSTR))
19942 ++ return true;
19943 ++ if (!(error_code & (PF_PROT | PF_WRITE)) && ip == address)
19944 ++ return true;
19945 ++ return false;
19946 ++ }
19947 ++#endif
19948 ++
19949 ++#ifdef CONFIG_PAX_SEGMEXEC
19950 ++ if (mm->pax_flags & MF_PAX_SEGMEXEC) {
19951 ++ if (!(error_code & (PF_PROT | PF_WRITE)) && (ip + SEGMEXEC_TASK_SIZE == address))
19952 ++ return true;
19953 ++ return false;
19954 ++ }
19955 ++#endif
19956 ++
19957 ++ return false;
19958 ++}
19959 ++#endif
19960 ++
19961 +#ifdef CONFIG_PAX_EMUTRAMP
19962 +static int pax_handle_fetch_fault_32(struct pt_regs *regs)
19963 +{
19964 @@ -20388,7 +20457,7 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19965 +#endif
19966 +
19967 +#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
19968 -+void pax_report_insns(void *pc, void *sp)
19969 ++void pax_report_insns(struct pt_regs *regs, void *pc, void *sp)
19970 +{
19971 + long i;
19972 +
19973 @@ -20405,14 +20474,24 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
19974 + printk(KERN_ERR "PAX: bytes at SP-%lu: ", (unsigned long)sizeof(long));
19975 + for (i = -1; i < 80 / (long)sizeof(long); i++) {
19976 + unsigned long c;
19977 -+ if (get_user(c, (unsigned long __force_user *)sp+i))
19978 ++ if (get_user(c, (unsigned long __force_user *)sp+i)) {
19979 +#ifdef CONFIG_X86_32
19980 + printk(KERN_CONT "???????? ");
19981 +#else
19982 -+ printk(KERN_CONT "???????????????? ");
19983 ++ if ((regs->cs == __USER32_CS || (regs->cs & SEGMENT_LDT)))
19984 ++ printk(KERN_CONT "???????? ???????? ");
19985 ++ else
19986 ++ printk(KERN_CONT "???????????????? ");
19987 +#endif
19988 -+ else
19989 -+ printk(KERN_CONT "%0*lx ", 2 * (int)sizeof(long), c);
19990 ++ } else {
19991 ++#ifdef CONFIG_X86_64
19992 ++ if ((regs->cs == __USER32_CS || (regs->cs & SEGMENT_LDT))) {
19993 ++ printk(KERN_CONT "%08x ", (unsigned int)c);
19994 ++ printk(KERN_CONT "%08x ", (unsigned int)(c >> 32));
19995 ++ } else
19996 ++#endif
19997 ++ printk(KERN_CONT "%0*lx ", 2 * (int)sizeof(long), c);
19998 ++ }
19999 + }
20000 + printk("\n");
20001 +}
20002 @@ -20442,9 +20521,9 @@ diff -urNp linux-3.0.9/arch/x86/mm/fault.c linux-3.0.9/arch/x86/mm/fault.c
20003 +
20004 + return ret ? -EFAULT : 0;
20005 +}
20006 -diff -urNp linux-3.0.9/arch/x86/mm/gup.c linux-3.0.9/arch/x86/mm/gup.c
20007 ---- linux-3.0.9/arch/x86/mm/gup.c 2011-11-11 13:12:24.000000000 -0500
20008 -+++ linux-3.0.9/arch/x86/mm/gup.c 2011-11-15 20:02:59.000000000 -0500
20009 +diff -urNp linux-3.1.1/arch/x86/mm/gup.c linux-3.1.1/arch/x86/mm/gup.c
20010 +--- linux-3.1.1/arch/x86/mm/gup.c 2011-11-11 15:19:27.000000000 -0500
20011 ++++ linux-3.1.1/arch/x86/mm/gup.c 2011-11-16 18:39:07.000000000 -0500
20012 @@ -253,7 +253,7 @@ int __get_user_pages_fast(unsigned long
20013 addr = start;
20014 len = (unsigned long) nr_pages << PAGE_SHIFT;
20015 @@ -20454,9 +20533,9 @@ diff -urNp linux-3.0.9/arch/x86/mm/gup.c linux-3.0.9/arch/x86/mm/gup.c
20016 (void __user *)start, len)))
20017 return 0;
20018
20019 -diff -urNp linux-3.0.9/arch/x86/mm/highmem_32.c linux-3.0.9/arch/x86/mm/highmem_32.c
20020 ---- linux-3.0.9/arch/x86/mm/highmem_32.c 2011-11-11 13:12:24.000000000 -0500
20021 -+++ linux-3.0.9/arch/x86/mm/highmem_32.c 2011-11-15 20:02:59.000000000 -0500
20022 +diff -urNp linux-3.1.1/arch/x86/mm/highmem_32.c linux-3.1.1/arch/x86/mm/highmem_32.c
20023 +--- linux-3.1.1/arch/x86/mm/highmem_32.c 2011-11-11 15:19:27.000000000 -0500
20024 ++++ linux-3.1.1/arch/x86/mm/highmem_32.c 2011-11-16 18:39:07.000000000 -0500
20025 @@ -44,7 +44,10 @@ void *kmap_atomic_prot(struct page *page
20026 idx = type + KM_TYPE_NR*smp_processor_id();
20027 vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
20028 @@ -20468,9 +20547,9 @@ diff -urNp linux-3.0.9/arch/x86/mm/highmem_32.c linux-3.0.9/arch/x86/mm/highmem_
20029
20030 return (void *)vaddr;
20031 }
20032 -diff -urNp linux-3.0.9/arch/x86/mm/hugetlbpage.c linux-3.0.9/arch/x86/mm/hugetlbpage.c
20033 ---- linux-3.0.9/arch/x86/mm/hugetlbpage.c 2011-11-11 13:12:24.000000000 -0500
20034 -+++ linux-3.0.9/arch/x86/mm/hugetlbpage.c 2011-11-15 20:02:59.000000000 -0500
20035 +diff -urNp linux-3.1.1/arch/x86/mm/hugetlbpage.c linux-3.1.1/arch/x86/mm/hugetlbpage.c
20036 +--- linux-3.1.1/arch/x86/mm/hugetlbpage.c 2011-11-11 15:19:27.000000000 -0500
20037 ++++ linux-3.1.1/arch/x86/mm/hugetlbpage.c 2011-11-16 18:39:07.000000000 -0500
20038 @@ -266,13 +266,20 @@ static unsigned long hugetlb_get_unmappe
20039 struct hstate *h = hstate_file(file);
20040 struct mm_struct *mm = current->mm;
20041 @@ -20678,9 +20757,9 @@ diff -urNp linux-3.0.9/arch/x86/mm/hugetlbpage.c linux-3.0.9/arch/x86/mm/hugetlb
20042 return addr;
20043 }
20044 if (mm->get_unmapped_area == arch_get_unmapped_area)
20045 -diff -urNp linux-3.0.9/arch/x86/mm/init_32.c linux-3.0.9/arch/x86/mm/init_32.c
20046 ---- linux-3.0.9/arch/x86/mm/init_32.c 2011-11-11 13:12:24.000000000 -0500
20047 -+++ linux-3.0.9/arch/x86/mm/init_32.c 2011-11-15 20:02:59.000000000 -0500
20048 +diff -urNp linux-3.1.1/arch/x86/mm/init_32.c linux-3.1.1/arch/x86/mm/init_32.c
20049 +--- linux-3.1.1/arch/x86/mm/init_32.c 2011-11-11 15:19:27.000000000 -0500
20050 ++++ linux-3.1.1/arch/x86/mm/init_32.c 2011-11-16 18:39:07.000000000 -0500
20051 @@ -74,36 +74,6 @@ static __init void *alloc_low_page(void)
20052 }
20053
20054 @@ -20955,9 +21034,9 @@ diff -urNp linux-3.0.9/arch/x86/mm/init_32.c linux-3.0.9/arch/x86/mm/init_32.c
20055 set_pages_ro(virt_to_page(start), size >> PAGE_SHIFT);
20056 printk(KERN_INFO "Write protecting the kernel text: %luk\n",
20057 size >> 10);
20058 -diff -urNp linux-3.0.9/arch/x86/mm/init_64.c linux-3.0.9/arch/x86/mm/init_64.c
20059 ---- linux-3.0.9/arch/x86/mm/init_64.c 2011-11-11 13:12:24.000000000 -0500
20060 -+++ linux-3.0.9/arch/x86/mm/init_64.c 2011-11-15 20:02:59.000000000 -0500
20061 +diff -urNp linux-3.1.1/arch/x86/mm/init_64.c linux-3.1.1/arch/x86/mm/init_64.c
20062 +--- linux-3.1.1/arch/x86/mm/init_64.c 2011-11-11 15:19:27.000000000 -0500
20063 ++++ linux-3.1.1/arch/x86/mm/init_64.c 2011-11-16 18:39:07.000000000 -0500
20064 @@ -75,7 +75,7 @@ early_param("gbpages", parse_direct_gbpa
20065 * around without checking the pgd every time.
20066 */
20067 @@ -21087,9 +21166,9 @@ diff -urNp linux-3.0.9/arch/x86/mm/init_64.c linux-3.0.9/arch/x86/mm/init_64.c
20068 return "[vdso]";
20069 if (vma == &gate_vma)
20070 return "[vsyscall]";
20071 -diff -urNp linux-3.0.9/arch/x86/mm/init.c linux-3.0.9/arch/x86/mm/init.c
20072 ---- linux-3.0.9/arch/x86/mm/init.c 2011-11-11 13:12:24.000000000 -0500
20073 -+++ linux-3.0.9/arch/x86/mm/init.c 2011-11-15 20:02:59.000000000 -0500
20074 +diff -urNp linux-3.1.1/arch/x86/mm/init.c linux-3.1.1/arch/x86/mm/init.c
20075 +--- linux-3.1.1/arch/x86/mm/init.c 2011-11-11 15:19:27.000000000 -0500
20076 ++++ linux-3.1.1/arch/x86/mm/init.c 2011-11-16 18:40:08.000000000 -0500
20077 @@ -31,7 +31,7 @@ int direct_gbpages
20078 static void __init find_early_table_space(unsigned long end, int use_pse,
20079 int use_gbpages)
20080 @@ -21222,9 +21301,9 @@ diff -urNp linux-3.0.9/arch/x86/mm/init.c linux-3.0.9/arch/x86/mm/init.c
20081 free_init_pages("unused kernel memory",
20082 (unsigned long)(&__init_begin),
20083 (unsigned long)(&__init_end));
20084 -diff -urNp linux-3.0.9/arch/x86/mm/iomap_32.c linux-3.0.9/arch/x86/mm/iomap_32.c
20085 ---- linux-3.0.9/arch/x86/mm/iomap_32.c 2011-11-11 13:12:24.000000000 -0500
20086 -+++ linux-3.0.9/arch/x86/mm/iomap_32.c 2011-11-15 20:02:59.000000000 -0500
20087 +diff -urNp linux-3.1.1/arch/x86/mm/iomap_32.c linux-3.1.1/arch/x86/mm/iomap_32.c
20088 +--- linux-3.1.1/arch/x86/mm/iomap_32.c 2011-11-11 15:19:27.000000000 -0500
20089 ++++ linux-3.1.1/arch/x86/mm/iomap_32.c 2011-11-16 18:39:07.000000000 -0500
20090 @@ -64,7 +64,11 @@ void *kmap_atomic_prot_pfn(unsigned long
20091 type = kmap_atomic_idx_push();
20092 idx = type + KM_TYPE_NR * smp_processor_id();
20093 @@ -21237,9 +21316,9 @@ diff -urNp linux-3.0.9/arch/x86/mm/iomap_32.c linux-3.0.9/arch/x86/mm/iomap_32.c
20094 arch_flush_lazy_mmu_mode();
20095
20096 return (void *)vaddr;
20097 -diff -urNp linux-3.0.9/arch/x86/mm/ioremap.c linux-3.0.9/arch/x86/mm/ioremap.c
20098 ---- linux-3.0.9/arch/x86/mm/ioremap.c 2011-11-11 13:12:24.000000000 -0500
20099 -+++ linux-3.0.9/arch/x86/mm/ioremap.c 2011-11-15 20:02:59.000000000 -0500
20100 +diff -urNp linux-3.1.1/arch/x86/mm/ioremap.c linux-3.1.1/arch/x86/mm/ioremap.c
20101 +--- linux-3.1.1/arch/x86/mm/ioremap.c 2011-11-11 15:19:27.000000000 -0500
20102 ++++ linux-3.1.1/arch/x86/mm/ioremap.c 2011-11-16 18:39:07.000000000 -0500
20103 @@ -97,7 +97,7 @@ static void __iomem *__ioremap_caller(re
20104 for (pfn = phys_addr >> PAGE_SHIFT; pfn <= last_pfn; pfn++) {
20105 int is_ram = page_is_ram(pfn);
20106 @@ -21268,9 +21347,9 @@ diff -urNp linux-3.0.9/arch/x86/mm/ioremap.c linux-3.0.9/arch/x86/mm/ioremap.c
20107
20108 /*
20109 * The boot-ioremap range spans multiple pmds, for which
20110 -diff -urNp linux-3.0.9/arch/x86/mm/kmemcheck/kmemcheck.c linux-3.0.9/arch/x86/mm/kmemcheck/kmemcheck.c
20111 ---- linux-3.0.9/arch/x86/mm/kmemcheck/kmemcheck.c 2011-11-11 13:12:24.000000000 -0500
20112 -+++ linux-3.0.9/arch/x86/mm/kmemcheck/kmemcheck.c 2011-11-15 20:02:59.000000000 -0500
20113 +diff -urNp linux-3.1.1/arch/x86/mm/kmemcheck/kmemcheck.c linux-3.1.1/arch/x86/mm/kmemcheck/kmemcheck.c
20114 +--- linux-3.1.1/arch/x86/mm/kmemcheck/kmemcheck.c 2011-11-11 15:19:27.000000000 -0500
20115 ++++ linux-3.1.1/arch/x86/mm/kmemcheck/kmemcheck.c 2011-11-16 18:39:07.000000000 -0500
20116 @@ -622,9 +622,9 @@ bool kmemcheck_fault(struct pt_regs *reg
20117 * memory (e.g. tracked pages)? For now, we need this to avoid
20118 * invoking kmemcheck for PnP BIOS calls.
20119 @@ -21283,9 +21362,9 @@ diff -urNp linux-3.0.9/arch/x86/mm/kmemcheck/kmemcheck.c linux-3.0.9/arch/x86/mm
20120 return false;
20121
20122 pte = kmemcheck_pte_lookup(address);
20123 -diff -urNp linux-3.0.9/arch/x86/mm/mmap.c linux-3.0.9/arch/x86/mm/mmap.c
20124 ---- linux-3.0.9/arch/x86/mm/mmap.c 2011-11-11 13:12:24.000000000 -0500
20125 -+++ linux-3.0.9/arch/x86/mm/mmap.c 2011-11-15 20:02:59.000000000 -0500
20126 +diff -urNp linux-3.1.1/arch/x86/mm/mmap.c linux-3.1.1/arch/x86/mm/mmap.c
20127 +--- linux-3.1.1/arch/x86/mm/mmap.c 2011-11-11 15:19:27.000000000 -0500
20128 ++++ linux-3.1.1/arch/x86/mm/mmap.c 2011-11-16 18:39:07.000000000 -0500
20129 @@ -49,7 +49,7 @@ static unsigned int stack_maxrandom_size
20130 * Leave an at least ~128 MB hole with possible stack randomization.
20131 */
20132 @@ -21367,9 +21446,9 @@ diff -urNp linux-3.0.9/arch/x86/mm/mmap.c linux-3.0.9/arch/x86/mm/mmap.c
20133 mm->get_unmapped_area = arch_get_unmapped_area_topdown;
20134 mm->unmap_area = arch_unmap_area_topdown;
20135 }
20136 -diff -urNp linux-3.0.9/arch/x86/mm/mmio-mod.c linux-3.0.9/arch/x86/mm/mmio-mod.c
20137 ---- linux-3.0.9/arch/x86/mm/mmio-mod.c 2011-11-11 13:12:24.000000000 -0500
20138 -+++ linux-3.0.9/arch/x86/mm/mmio-mod.c 2011-11-15 20:02:59.000000000 -0500
20139 +diff -urNp linux-3.1.1/arch/x86/mm/mmio-mod.c linux-3.1.1/arch/x86/mm/mmio-mod.c
20140 +--- linux-3.1.1/arch/x86/mm/mmio-mod.c 2011-11-11 15:19:27.000000000 -0500
20141 ++++ linux-3.1.1/arch/x86/mm/mmio-mod.c 2011-11-16 18:39:07.000000000 -0500
20142 @@ -195,7 +195,7 @@ static void pre(struct kmmio_probe *p, s
20143 break;
20144 default:
20145 @@ -21397,9 +21476,9 @@ diff -urNp linux-3.0.9/arch/x86/mm/mmio-mod.c linux-3.0.9/arch/x86/mm/mmio-mod.c
20146 };
20147 map.map_id = trace->id;
20148
20149 -diff -urNp linux-3.0.9/arch/x86/mm/pageattr.c linux-3.0.9/arch/x86/mm/pageattr.c
20150 ---- linux-3.0.9/arch/x86/mm/pageattr.c 2011-11-11 13:12:24.000000000 -0500
20151 -+++ linux-3.0.9/arch/x86/mm/pageattr.c 2011-11-15 20:02:59.000000000 -0500
20152 +diff -urNp linux-3.1.1/arch/x86/mm/pageattr.c linux-3.1.1/arch/x86/mm/pageattr.c
20153 +--- linux-3.1.1/arch/x86/mm/pageattr.c 2011-11-11 15:19:27.000000000 -0500
20154 ++++ linux-3.1.1/arch/x86/mm/pageattr.c 2011-11-16 18:39:07.000000000 -0500
20155 @@ -261,7 +261,7 @@ static inline pgprot_t static_protection
20156 */
20157 #ifdef CONFIG_PCI_BIOS
20158 @@ -21484,9 +21563,9 @@ diff -urNp linux-3.0.9/arch/x86/mm/pageattr.c linux-3.0.9/arch/x86/mm/pageattr.c
20159 }
20160
20161 static int
20162 -diff -urNp linux-3.0.9/arch/x86/mm/pageattr-test.c linux-3.0.9/arch/x86/mm/pageattr-test.c
20163 ---- linux-3.0.9/arch/x86/mm/pageattr-test.c 2011-11-11 13:12:24.000000000 -0500
20164 -+++ linux-3.0.9/arch/x86/mm/pageattr-test.c 2011-11-15 20:02:59.000000000 -0500
20165 +diff -urNp linux-3.1.1/arch/x86/mm/pageattr-test.c linux-3.1.1/arch/x86/mm/pageattr-test.c
20166 +--- linux-3.1.1/arch/x86/mm/pageattr-test.c 2011-11-11 15:19:27.000000000 -0500
20167 ++++ linux-3.1.1/arch/x86/mm/pageattr-test.c 2011-11-16 18:39:07.000000000 -0500
20168 @@ -36,7 +36,7 @@ enum {
20169
20170 static int pte_testbit(pte_t pte)
20171 @@ -21496,9 +21575,9 @@ diff -urNp linux-3.0.9/arch/x86/mm/pageattr-test.c linux-3.0.9/arch/x86/mm/pagea
20172 }
20173
20174 struct split_state {
20175 -diff -urNp linux-3.0.9/arch/x86/mm/pat.c linux-3.0.9/arch/x86/mm/pat.c
20176 ---- linux-3.0.9/arch/x86/mm/pat.c 2011-11-11 13:12:24.000000000 -0500
20177 -+++ linux-3.0.9/arch/x86/mm/pat.c 2011-11-15 20:02:59.000000000 -0500
20178 +diff -urNp linux-3.1.1/arch/x86/mm/pat.c linux-3.1.1/arch/x86/mm/pat.c
20179 +--- linux-3.1.1/arch/x86/mm/pat.c 2011-11-11 15:19:27.000000000 -0500
20180 ++++ linux-3.1.1/arch/x86/mm/pat.c 2011-11-16 18:39:07.000000000 -0500
20181 @@ -361,7 +361,7 @@ int free_memtype(u64 start, u64 end)
20182
20183 if (!entry) {
20184 @@ -21546,9 +21625,9 @@ diff -urNp linux-3.0.9/arch/x86/mm/pat.c linux-3.0.9/arch/x86/mm/pat.c
20185 cattr_name(want_flags),
20186 (unsigned long long)paddr,
20187 (unsigned long long)(paddr + size),
20188 -diff -urNp linux-3.0.9/arch/x86/mm/pf_in.c linux-3.0.9/arch/x86/mm/pf_in.c
20189 ---- linux-3.0.9/arch/x86/mm/pf_in.c 2011-11-11 13:12:24.000000000 -0500
20190 -+++ linux-3.0.9/arch/x86/mm/pf_in.c 2011-11-15 20:02:59.000000000 -0500
20191 +diff -urNp linux-3.1.1/arch/x86/mm/pf_in.c linux-3.1.1/arch/x86/mm/pf_in.c
20192 +--- linux-3.1.1/arch/x86/mm/pf_in.c 2011-11-11 15:19:27.000000000 -0500
20193 ++++ linux-3.1.1/arch/x86/mm/pf_in.c 2011-11-16 18:39:07.000000000 -0500
20194 @@ -148,7 +148,7 @@ enum reason_type get_ins_type(unsigned l
20195 int i;
20196 enum reason_type rv = OTHERS;
20197 @@ -21594,9 +21673,9 @@ diff -urNp linux-3.0.9/arch/x86/mm/pf_in.c linux-3.0.9/arch/x86/mm/pf_in.c
20198 p += skip_prefix(p, &prf);
20199 p += get_opcode(p, &opcode);
20200 for (i = 0; i < ARRAY_SIZE(imm_wop); i++)
20201 -diff -urNp linux-3.0.9/arch/x86/mm/pgtable_32.c linux-3.0.9/arch/x86/mm/pgtable_32.c
20202 ---- linux-3.0.9/arch/x86/mm/pgtable_32.c 2011-11-11 13:12:24.000000000 -0500
20203 -+++ linux-3.0.9/arch/x86/mm/pgtable_32.c 2011-11-15 20:02:59.000000000 -0500
20204 +diff -urNp linux-3.1.1/arch/x86/mm/pgtable_32.c linux-3.1.1/arch/x86/mm/pgtable_32.c
20205 +--- linux-3.1.1/arch/x86/mm/pgtable_32.c 2011-11-11 15:19:27.000000000 -0500
20206 ++++ linux-3.1.1/arch/x86/mm/pgtable_32.c 2011-11-16 18:39:07.000000000 -0500
20207 @@ -48,10 +48,13 @@ void set_pte_vaddr(unsigned long vaddr,
20208 return;
20209 }
20210 @@ -21611,9 +21690,9 @@ diff -urNp linux-3.0.9/arch/x86/mm/pgtable_32.c linux-3.0.9/arch/x86/mm/pgtable_
20211
20212 /*
20213 * It's enough to flush this one mapping.
20214 -diff -urNp linux-3.0.9/arch/x86/mm/pgtable.c linux-3.0.9/arch/x86/mm/pgtable.c
20215 ---- linux-3.0.9/arch/x86/mm/pgtable.c 2011-11-11 13:12:24.000000000 -0500
20216 -+++ linux-3.0.9/arch/x86/mm/pgtable.c 2011-11-15 20:02:59.000000000 -0500
20217 +diff -urNp linux-3.1.1/arch/x86/mm/pgtable.c linux-3.1.1/arch/x86/mm/pgtable.c
20218 +--- linux-3.1.1/arch/x86/mm/pgtable.c 2011-11-11 15:19:27.000000000 -0500
20219 ++++ linux-3.1.1/arch/x86/mm/pgtable.c 2011-11-16 18:39:07.000000000 -0500
20220 @@ -84,10 +84,52 @@ static inline void pgd_list_del(pgd_t *p
20221 list_del(&page->lru);
20222 }
20223 @@ -21859,9 +21938,9 @@ diff -urNp linux-3.0.9/arch/x86/mm/pgtable.c linux-3.0.9/arch/x86/mm/pgtable.c
20224 pgd_dtor(pgd);
20225 paravirt_pgd_free(mm, pgd);
20226 free_page((unsigned long)pgd);
20227 -diff -urNp linux-3.0.9/arch/x86/mm/setup_nx.c linux-3.0.9/arch/x86/mm/setup_nx.c
20228 ---- linux-3.0.9/arch/x86/mm/setup_nx.c 2011-11-11 13:12:24.000000000 -0500
20229 -+++ linux-3.0.9/arch/x86/mm/setup_nx.c 2011-11-15 20:02:59.000000000 -0500
20230 +diff -urNp linux-3.1.1/arch/x86/mm/setup_nx.c linux-3.1.1/arch/x86/mm/setup_nx.c
20231 +--- linux-3.1.1/arch/x86/mm/setup_nx.c 2011-11-11 15:19:27.000000000 -0500
20232 ++++ linux-3.1.1/arch/x86/mm/setup_nx.c 2011-11-16 18:39:07.000000000 -0500
20233 @@ -5,8 +5,10 @@
20234 #include <asm/pgtable.h>
20235 #include <asm/proto.h>
20236 @@ -21891,9 +21970,9 @@ diff -urNp linux-3.0.9/arch/x86/mm/setup_nx.c linux-3.0.9/arch/x86/mm/setup_nx.c
20237 __supported_pte_mask &= ~_PAGE_NX;
20238 }
20239
20240 -diff -urNp linux-3.0.9/arch/x86/mm/tlb.c linux-3.0.9/arch/x86/mm/tlb.c
20241 ---- linux-3.0.9/arch/x86/mm/tlb.c 2011-11-11 13:12:24.000000000 -0500
20242 -+++ linux-3.0.9/arch/x86/mm/tlb.c 2011-11-15 20:02:59.000000000 -0500
20243 +diff -urNp linux-3.1.1/arch/x86/mm/tlb.c linux-3.1.1/arch/x86/mm/tlb.c
20244 +--- linux-3.1.1/arch/x86/mm/tlb.c 2011-11-11 15:19:27.000000000 -0500
20245 ++++ linux-3.1.1/arch/x86/mm/tlb.c 2011-11-16 18:39:07.000000000 -0500
20246 @@ -65,7 +65,11 @@ void leave_mm(int cpu)
20247 BUG();
20248 cpumask_clear_cpu(cpu,
20249 @@ -21906,9 +21985,9 @@ diff -urNp linux-3.0.9/arch/x86/mm/tlb.c linux-3.0.9/arch/x86/mm/tlb.c
20250 }
20251 EXPORT_SYMBOL_GPL(leave_mm);
20252
20253 -diff -urNp linux-3.0.9/arch/x86/net/bpf_jit_comp.c linux-3.0.9/arch/x86/net/bpf_jit_comp.c
20254 ---- linux-3.0.9/arch/x86/net/bpf_jit_comp.c 2011-11-11 13:12:24.000000000 -0500
20255 -+++ linux-3.0.9/arch/x86/net/bpf_jit_comp.c 2011-11-15 20:02:59.000000000 -0500
20256 +diff -urNp linux-3.1.1/arch/x86/net/bpf_jit_comp.c linux-3.1.1/arch/x86/net/bpf_jit_comp.c
20257 +--- linux-3.1.1/arch/x86/net/bpf_jit_comp.c 2011-11-11 15:19:27.000000000 -0500
20258 ++++ linux-3.1.1/arch/x86/net/bpf_jit_comp.c 2011-11-16 18:39:07.000000000 -0500
20259 @@ -589,7 +589,9 @@ cond_branch: f_offset = addrs[i + filt
20260 module_free(NULL, image);
20261 return;
20262 @@ -21928,9 +22007,9 @@ diff -urNp linux-3.0.9/arch/x86/net/bpf_jit_comp.c linux-3.0.9/arch/x86/net/bpf_
20263 proglen,
20264 sizeof(struct work_struct)));
20265 if (!image)
20266 -diff -urNp linux-3.0.9/arch/x86/net/bpf_jit.S linux-3.0.9/arch/x86/net/bpf_jit.S
20267 ---- linux-3.0.9/arch/x86/net/bpf_jit.S 2011-11-11 13:12:24.000000000 -0500
20268 -+++ linux-3.0.9/arch/x86/net/bpf_jit.S 2011-11-15 20:02:59.000000000 -0500
20269 +diff -urNp linux-3.1.1/arch/x86/net/bpf_jit.S linux-3.1.1/arch/x86/net/bpf_jit.S
20270 +--- linux-3.1.1/arch/x86/net/bpf_jit.S 2011-11-11 15:19:27.000000000 -0500
20271 ++++ linux-3.1.1/arch/x86/net/bpf_jit.S 2011-11-16 18:39:07.000000000 -0500
20272 @@ -9,6 +9,7 @@
20273 */
20274 #include <linux/linkage.h>
20275 @@ -22008,10 +22087,10 @@ diff -urNp linux-3.0.9/arch/x86/net/bpf_jit.S linux-3.0.9/arch/x86/net/bpf_jit.S
20276 xchg %eax,%ebx
20277 + pax_force_retaddr
20278 ret
20279 -diff -urNp linux-3.0.9/arch/x86/oprofile/backtrace.c linux-3.0.9/arch/x86/oprofile/backtrace.c
20280 ---- linux-3.0.9/arch/x86/oprofile/backtrace.c 2011-11-11 13:12:24.000000000 -0500
20281 -+++ linux-3.0.9/arch/x86/oprofile/backtrace.c 2011-11-15 20:02:59.000000000 -0500
20282 -@@ -83,11 +83,11 @@ dump_user_backtrace_32(struct stack_fram
20283 +diff -urNp linux-3.1.1/arch/x86/oprofile/backtrace.c linux-3.1.1/arch/x86/oprofile/backtrace.c
20284 +--- linux-3.1.1/arch/x86/oprofile/backtrace.c 2011-11-11 15:19:27.000000000 -0500
20285 ++++ linux-3.1.1/arch/x86/oprofile/backtrace.c 2011-11-16 18:39:07.000000000 -0500
20286 +@@ -46,11 +46,11 @@ dump_user_backtrace_32(struct stack_fram
20287 struct stack_frame_ia32 *fp;
20288 unsigned long bytes;
20289
20290 @@ -22025,7 +22104,7 @@ diff -urNp linux-3.0.9/arch/x86/oprofile/backtrace.c linux-3.0.9/arch/x86/oprofi
20291
20292 oprofile_add_trace(bufhead[0].return_address);
20293
20294 -@@ -129,7 +129,7 @@ static struct stack_frame *dump_user_bac
20295 +@@ -92,7 +92,7 @@ static struct stack_frame *dump_user_bac
20296 struct stack_frame bufhead[2];
20297 unsigned long bytes;
20298
20299 @@ -22034,7 +22113,7 @@ diff -urNp linux-3.0.9/arch/x86/oprofile/backtrace.c linux-3.0.9/arch/x86/oprofi
20300 if (bytes != sizeof(bufhead))
20301 return NULL;
20302
20303 -@@ -148,7 +148,7 @@ x86_backtrace(struct pt_regs * const reg
20304 +@@ -111,7 +111,7 @@ x86_backtrace(struct pt_regs * const reg
20305 {
20306 struct stack_frame *head = (struct stack_frame *)frame_pointer(regs);
20307
20308 @@ -22043,9 +22122,9 @@ diff -urNp linux-3.0.9/arch/x86/oprofile/backtrace.c linux-3.0.9/arch/x86/oprofi
20309 unsigned long stack = kernel_stack_pointer(regs);
20310 if (depth)
20311 dump_trace(NULL, regs, (unsigned long *)stack, 0,
20312 -diff -urNp linux-3.0.9/arch/x86/pci/mrst.c linux-3.0.9/arch/x86/pci/mrst.c
20313 ---- linux-3.0.9/arch/x86/pci/mrst.c 2011-11-11 13:12:24.000000000 -0500
20314 -+++ linux-3.0.9/arch/x86/pci/mrst.c 2011-11-15 20:02:59.000000000 -0500
20315 +diff -urNp linux-3.1.1/arch/x86/pci/mrst.c linux-3.1.1/arch/x86/pci/mrst.c
20316 +--- linux-3.1.1/arch/x86/pci/mrst.c 2011-11-11 15:19:27.000000000 -0500
20317 ++++ linux-3.1.1/arch/x86/pci/mrst.c 2011-11-16 18:39:07.000000000 -0500
20318 @@ -234,7 +234,9 @@ int __init pci_mrst_init(void)
20319 printk(KERN_INFO "Moorestown platform detected, using MRST PCI ops\n");
20320 pci_mmcfg_late_init();
20321 @@ -22057,9 +22136,9 @@ diff -urNp linux-3.0.9/arch/x86/pci/mrst.c linux-3.0.9/arch/x86/pci/mrst.c
20322 /* Continue with standard init */
20323 return 1;
20324 }
20325 -diff -urNp linux-3.0.9/arch/x86/pci/pcbios.c linux-3.0.9/arch/x86/pci/pcbios.c
20326 ---- linux-3.0.9/arch/x86/pci/pcbios.c 2011-11-11 13:12:24.000000000 -0500
20327 -+++ linux-3.0.9/arch/x86/pci/pcbios.c 2011-11-15 20:02:59.000000000 -0500
20328 +diff -urNp linux-3.1.1/arch/x86/pci/pcbios.c linux-3.1.1/arch/x86/pci/pcbios.c
20329 +--- linux-3.1.1/arch/x86/pci/pcbios.c 2011-11-11 15:19:27.000000000 -0500
20330 ++++ linux-3.1.1/arch/x86/pci/pcbios.c 2011-11-16 18:39:07.000000000 -0500
20331 @@ -79,50 +79,93 @@ union bios32 {
20332 static struct {
20333 unsigned long address;
20334 @@ -22195,7 +22274,7 @@ diff -urNp linux-3.0.9/arch/x86/pci/pcbios.c linux-3.0.9/arch/x86/pci/pcbios.c
20335 : "memory");
20336 local_irq_restore(flags);
20337
20338 -@@ -188,7 +234,10 @@ static int pci_bios_read(unsigned int se
20339 +@@ -189,7 +235,10 @@ static int pci_bios_read(unsigned int se
20340
20341 switch (len) {
20342 case 1:
20343 @@ -22207,7 +22286,7 @@ diff -urNp linux-3.0.9/arch/x86/pci/pcbios.c linux-3.0.9/arch/x86/pci/pcbios.c
20344 "jc 1f\n\t"
20345 "xor %%ah, %%ah\n"
20346 "1:"
20347 -@@ -197,7 +246,8 @@ static int pci_bios_read(unsigned int se
20348 +@@ -198,7 +247,8 @@ static int pci_bios_read(unsigned int se
20349 : "1" (PCIBIOS_READ_CONFIG_BYTE),
20350 "b" (bx),
20351 "D" ((long)reg),
20352 @@ -22217,7 +22296,7 @@ diff -urNp linux-3.0.9/arch/x86/pci/pcbios.c linux-3.0.9/arch/x86/pci/pcbios.c
20353 /*
20354 * Zero-extend the result beyond 8 bits, do not trust the
20355 * BIOS having done it:
20356 -@@ -205,7 +255,10 @@ static int pci_bios_read(unsigned int se
20357 +@@ -206,7 +256,10 @@ static int pci_bios_read(unsigned int se
20358 *value &= 0xff;
20359 break;
20360 case 2:
20361 @@ -22229,7 +22308,7 @@ diff -urNp linux-3.0.9/arch/x86/pci/pcbios.c linux-3.0.9/arch/x86/pci/pcbios.c
20362 "jc 1f\n\t"
20363 "xor %%ah, %%ah\n"
20364 "1:"
20365 -@@ -214,7 +267,8 @@ static int pci_bios_read(unsigned int se
20366 +@@ -215,7 +268,8 @@ static int pci_bios_read(unsigned int se
20367 : "1" (PCIBIOS_READ_CONFIG_WORD),
20368 "b" (bx),
20369 "D" ((long)reg),
20370 @@ -22239,7 +22318,7 @@ diff -urNp linux-3.0.9/arch/x86/pci/pcbios.c linux-3.0.9/arch/x86/pci/pcbios.c
20371 /*
20372 * Zero-extend the result beyond 16 bits, do not trust the
20373 * BIOS having done it:
20374 -@@ -222,7 +276,10 @@ static int pci_bios_read(unsigned int se
20375 +@@ -223,7 +277,10 @@ static int pci_bios_read(unsigned int se
20376 *value &= 0xffff;
20377 break;
20378 case 4:
20379 @@ -22251,7 +22330,7 @@ diff -urNp linux-3.0.9/arch/x86/pci/pcbios.c linux-3.0.9/arch/x86/pci/pcbios.c
20380 "jc 1f\n\t"
20381 "xor %%ah, %%ah\n"
20382 "1:"
20383 -@@ -231,7 +288,8 @@ static int pci_bios_read(unsigned int se
20384 +@@ -232,7 +289,8 @@ static int pci_bios_read(unsigned int se
20385 : "1" (PCIBIOS_READ_CONFIG_DWORD),
20386 "b" (bx),
20387 "D" ((long)reg),
20388 @@ -22261,7 +22340,7 @@ diff -urNp linux-3.0.9/arch/x86/pci/pcbios.c linux-3.0.9/arch/x86/pci/pcbios.c
20389 break;
20390 }
20391
20392 -@@ -254,7 +312,10 @@ static int pci_bios_write(unsigned int s
20393 +@@ -256,7 +314,10 @@ static int pci_bios_write(unsigned int s
20394
20395 switch (len) {
20396 case 1:
20397 @@ -22273,7 +22352,7 @@ diff -urNp linux-3.0.9/arch/x86/pci/pcbios.c linux-3.0.9/arch/x86/pci/pcbios.c
20398 "jc 1f\n\t"
20399 "xor %%ah, %%ah\n"
20400 "1:"
20401 -@@ -263,10 +324,14 @@ static int pci_bios_write(unsigned int s
20402 +@@ -265,10 +326,14 @@ static int pci_bios_write(unsigned int s
20403 "c" (value),
20404 "b" (bx),
20405 "D" ((long)reg),
20406 @@ -22290,7 +22369,7 @@ diff -urNp linux-3.0.9/arch/x86/pci/pcbios.c linux-3.0.9/arch/x86/pci/pcbios.c
20407 "jc 1f\n\t"
20408 "xor %%ah, %%ah\n"
20409 "1:"
20410 -@@ -275,10 +340,14 @@ static int pci_bios_write(unsigned int s
20411 +@@ -277,10 +342,14 @@ static int pci_bios_write(unsigned int s
20412 "c" (value),
20413 "b" (bx),
20414 "D" ((long)reg),
20415 @@ -22307,7 +22386,7 @@ diff -urNp linux-3.0.9/arch/x86/pci/pcbios.c linux-3.0.9/arch/x86/pci/pcbios.c
20416 "jc 1f\n\t"
20417 "xor %%ah, %%ah\n"
20418 "1:"
20419 -@@ -287,7 +356,8 @@ static int pci_bios_write(unsigned int s
20420 +@@ -289,7 +358,8 @@ static int pci_bios_write(unsigned int s
20421 "c" (value),
20422 "b" (bx),
20423 "D" ((long)reg),
20424 @@ -22317,7 +22396,7 @@ diff -urNp linux-3.0.9/arch/x86/pci/pcbios.c linux-3.0.9/arch/x86/pci/pcbios.c
20425 break;
20426 }
20427
20428 -@@ -392,10 +462,13 @@ struct irq_routing_table * pcibios_get_i
20429 +@@ -394,10 +464,13 @@ struct irq_routing_table * pcibios_get_i
20430
20431 DBG("PCI: Fetching IRQ routing table... ");
20432 __asm__("push %%es\n\t"
20433 @@ -22332,7 +22411,7 @@ diff -urNp linux-3.0.9/arch/x86/pci/pcbios.c linux-3.0.9/arch/x86/pci/pcbios.c
20434 "jc 1f\n\t"
20435 "xor %%ah, %%ah\n"
20436 "1:"
20437 -@@ -406,7 +479,8 @@ struct irq_routing_table * pcibios_get_i
20438 +@@ -408,7 +481,8 @@ struct irq_routing_table * pcibios_get_i
20439 "1" (0),
20440 "D" ((long) &opt),
20441 "S" (&pci_indirect),
20442 @@ -22342,7 +22421,7 @@ diff -urNp linux-3.0.9/arch/x86/pci/pcbios.c linux-3.0.9/arch/x86/pci/pcbios.c
20443 : "memory");
20444 DBG("OK ret=%d, size=%d, map=%x\n", ret, opt.size, map);
20445 if (ret & 0xff00)
20446 -@@ -430,7 +504,10 @@ int pcibios_set_irq_routing(struct pci_d
20447 +@@ -432,7 +506,10 @@ int pcibios_set_irq_routing(struct pci_d
20448 {
20449 int ret;
20450
20451 @@ -22354,7 +22433,7 @@ diff -urNp linux-3.0.9/arch/x86/pci/pcbios.c linux-3.0.9/arch/x86/pci/pcbios.c
20452 "jc 1f\n\t"
20453 "xor %%ah, %%ah\n"
20454 "1:"
20455 -@@ -438,7 +515,8 @@ int pcibios_set_irq_routing(struct pci_d
20456 +@@ -440,7 +517,8 @@ int pcibios_set_irq_routing(struct pci_d
20457 : "0" (PCIBIOS_SET_PCI_HW_INT),
20458 "b" ((dev->bus->number << 8) | dev->devfn),
20459 "c" ((irq << 8) | (pin + 10)),
20460 @@ -22364,9 +22443,9 @@ diff -urNp linux-3.0.9/arch/x86/pci/pcbios.c linux-3.0.9/arch/x86/pci/pcbios.c
20461 return !(ret & 0xff00);
20462 }
20463 EXPORT_SYMBOL(pcibios_set_irq_routing);
20464 -diff -urNp linux-3.0.9/arch/x86/platform/efi/efi_32.c linux-3.0.9/arch/x86/platform/efi/efi_32.c
20465 ---- linux-3.0.9/arch/x86/platform/efi/efi_32.c 2011-11-11 13:12:24.000000000 -0500
20466 -+++ linux-3.0.9/arch/x86/platform/efi/efi_32.c 2011-11-15 20:02:59.000000000 -0500
20467 +diff -urNp linux-3.1.1/arch/x86/platform/efi/efi_32.c linux-3.1.1/arch/x86/platform/efi/efi_32.c
20468 +--- linux-3.1.1/arch/x86/platform/efi/efi_32.c 2011-11-11 15:19:27.000000000 -0500
20469 ++++ linux-3.1.1/arch/x86/platform/efi/efi_32.c 2011-11-16 18:39:07.000000000 -0500
20470 @@ -38,70 +38,56 @@
20471 */
20472
20473 @@ -22464,9 +22543,9 @@ diff -urNp linux-3.0.9/arch/x86/platform/efi/efi_32.c linux-3.0.9/arch/x86/platf
20474
20475 /*
20476 * After the lock is released, the original page table is restored.
20477 -diff -urNp linux-3.0.9/arch/x86/platform/efi/efi_stub_32.S linux-3.0.9/arch/x86/platform/efi/efi_stub_32.S
20478 ---- linux-3.0.9/arch/x86/platform/efi/efi_stub_32.S 2011-11-11 13:12:24.000000000 -0500
20479 -+++ linux-3.0.9/arch/x86/platform/efi/efi_stub_32.S 2011-11-15 20:02:59.000000000 -0500
20480 +diff -urNp linux-3.1.1/arch/x86/platform/efi/efi_stub_32.S linux-3.1.1/arch/x86/platform/efi/efi_stub_32.S
20481 +--- linux-3.1.1/arch/x86/platform/efi/efi_stub_32.S 2011-11-11 15:19:27.000000000 -0500
20482 ++++ linux-3.1.1/arch/x86/platform/efi/efi_stub_32.S 2011-11-16 18:39:07.000000000 -0500
20483 @@ -6,7 +6,9 @@
20484 */
20485
20486 @@ -22575,9 +22654,9 @@ diff -urNp linux-3.0.9/arch/x86/platform/efi/efi_stub_32.S linux-3.0.9/arch/x86/
20487 saved_return_addr:
20488 .long 0
20489 efi_rt_function_ptr:
20490 -diff -urNp linux-3.0.9/arch/x86/platform/efi/efi_stub_64.S linux-3.0.9/arch/x86/platform/efi/efi_stub_64.S
20491 ---- linux-3.0.9/arch/x86/platform/efi/efi_stub_64.S 2011-11-11 13:12:24.000000000 -0500
20492 -+++ linux-3.0.9/arch/x86/platform/efi/efi_stub_64.S 2011-11-15 20:02:59.000000000 -0500
20493 +diff -urNp linux-3.1.1/arch/x86/platform/efi/efi_stub_64.S linux-3.1.1/arch/x86/platform/efi/efi_stub_64.S
20494 +--- linux-3.1.1/arch/x86/platform/efi/efi_stub_64.S 2011-11-11 15:19:27.000000000 -0500
20495 ++++ linux-3.1.1/arch/x86/platform/efi/efi_stub_64.S 2011-11-16 18:39:07.000000000 -0500
20496 @@ -7,6 +7,7 @@
20497 */
20498
20499 @@ -22641,9 +22720,9 @@ diff -urNp linux-3.0.9/arch/x86/platform/efi/efi_stub_64.S linux-3.0.9/arch/x86/
20500 + pax_force_retaddr
20501 ret
20502 ENDPROC(efi_call6)
20503 -diff -urNp linux-3.0.9/arch/x86/platform/mrst/mrst.c linux-3.0.9/arch/x86/platform/mrst/mrst.c
20504 ---- linux-3.0.9/arch/x86/platform/mrst/mrst.c 2011-11-11 13:12:24.000000000 -0500
20505 -+++ linux-3.0.9/arch/x86/platform/mrst/mrst.c 2011-11-15 20:02:59.000000000 -0500
20506 +diff -urNp linux-3.1.1/arch/x86/platform/mrst/mrst.c linux-3.1.1/arch/x86/platform/mrst/mrst.c
20507 +--- linux-3.1.1/arch/x86/platform/mrst/mrst.c 2011-11-11 15:19:27.000000000 -0500
20508 ++++ linux-3.1.1/arch/x86/platform/mrst/mrst.c 2011-11-16 18:39:07.000000000 -0500
20509 @@ -239,14 +239,16 @@ static int mrst_i8042_detect(void)
20510 }
20511
20512 @@ -22663,21 +22742,21 @@ diff -urNp linux-3.0.9/arch/x86/platform/mrst/mrst.c linux-3.0.9/arch/x86/platfo
20513 }
20514
20515 /*
20516 -diff -urNp linux-3.0.9/arch/x86/platform/uv/tlb_uv.c linux-3.0.9/arch/x86/platform/uv/tlb_uv.c
20517 ---- linux-3.0.9/arch/x86/platform/uv/tlb_uv.c 2011-11-11 13:12:24.000000000 -0500
20518 -+++ linux-3.0.9/arch/x86/platform/uv/tlb_uv.c 2011-11-15 20:02:59.000000000 -0500
20519 -@@ -370,6 +370,8 @@ static void reset_with_ipi(struct bau_ta
20520 - cpumask_t mask;
20521 +diff -urNp linux-3.1.1/arch/x86/platform/uv/tlb_uv.c linux-3.1.1/arch/x86/platform/uv/tlb_uv.c
20522 +--- linux-3.1.1/arch/x86/platform/uv/tlb_uv.c 2011-11-11 15:19:27.000000000 -0500
20523 ++++ linux-3.1.1/arch/x86/platform/uv/tlb_uv.c 2011-11-16 19:39:11.000000000 -0500
20524 +@@ -377,6 +377,8 @@ static void reset_with_ipi(struct pnmask
20525 + struct bau_control *smaster = bcp->socket_master;
20526 struct reset_args reset_args;
20527
20528 + pax_track_stack();
20529 +
20530 reset_args.sender = sender;
20531 - cpus_clear(mask);
20532 + cpus_clear(*mask);
20533 /* find a single cpu for each uvhub in this distribution mask */
20534 -diff -urNp linux-3.0.9/arch/x86/power/cpu.c linux-3.0.9/arch/x86/power/cpu.c
20535 ---- linux-3.0.9/arch/x86/power/cpu.c 2011-11-11 13:12:24.000000000 -0500
20536 -+++ linux-3.0.9/arch/x86/power/cpu.c 2011-11-15 20:02:59.000000000 -0500
20537 +diff -urNp linux-3.1.1/arch/x86/power/cpu.c linux-3.1.1/arch/x86/power/cpu.c
20538 +--- linux-3.1.1/arch/x86/power/cpu.c 2011-11-11 15:19:27.000000000 -0500
20539 ++++ linux-3.1.1/arch/x86/power/cpu.c 2011-11-16 18:39:07.000000000 -0500
20540 @@ -130,7 +130,7 @@ static void do_fpu_end(void)
20541 static void fix_processor_context(void)
20542 {
20543 @@ -22697,10 +22776,10 @@ diff -urNp linux-3.0.9/arch/x86/power/cpu.c linux-3.0.9/arch/x86/power/cpu.c
20544
20545 syscall_init(); /* This sets MSR_*STAR and related */
20546 #endif
20547 -diff -urNp linux-3.0.9/arch/x86/vdso/Makefile linux-3.0.9/arch/x86/vdso/Makefile
20548 ---- linux-3.0.9/arch/x86/vdso/Makefile 2011-11-11 13:12:24.000000000 -0500
20549 -+++ linux-3.0.9/arch/x86/vdso/Makefile 2011-11-15 20:02:59.000000000 -0500
20550 -@@ -136,7 +136,7 @@ quiet_cmd_vdso = VDSO $@
20551 +diff -urNp linux-3.1.1/arch/x86/vdso/Makefile linux-3.1.1/arch/x86/vdso/Makefile
20552 +--- linux-3.1.1/arch/x86/vdso/Makefile 2011-11-11 15:19:27.000000000 -0500
20553 ++++ linux-3.1.1/arch/x86/vdso/Makefile 2011-11-16 18:39:07.000000000 -0500
20554 +@@ -137,7 +137,7 @@ quiet_cmd_vdso = VDSO $@
20555 -Wl,-T,$(filter %.lds,$^) $(filter %.o,$^) && \
20556 sh $(srctree)/$(src)/checkundef.sh '$(NM)' '$@'
20557
20558 @@ -22709,9 +22788,9 @@ diff -urNp linux-3.0.9/arch/x86/vdso/Makefile linux-3.0.9/arch/x86/vdso/Makefile
20559 GCOV_PROFILE := n
20560
20561 #
20562 -diff -urNp linux-3.0.9/arch/x86/vdso/vdso32-setup.c linux-3.0.9/arch/x86/vdso/vdso32-setup.c
20563 ---- linux-3.0.9/arch/x86/vdso/vdso32-setup.c 2011-11-11 13:12:24.000000000 -0500
20564 -+++ linux-3.0.9/arch/x86/vdso/vdso32-setup.c 2011-11-15 20:02:59.000000000 -0500
20565 +diff -urNp linux-3.1.1/arch/x86/vdso/vdso32-setup.c linux-3.1.1/arch/x86/vdso/vdso32-setup.c
20566 +--- linux-3.1.1/arch/x86/vdso/vdso32-setup.c 2011-11-11 15:19:27.000000000 -0500
20567 ++++ linux-3.1.1/arch/x86/vdso/vdso32-setup.c 2011-11-16 18:39:07.000000000 -0500
20568 @@ -25,6 +25,7 @@
20569 #include <asm/tlbflush.h>
20570 #include <asm/vdso.h>
20571 @@ -22794,100 +22873,58 @@ diff -urNp linux-3.0.9/arch/x86/vdso/vdso32-setup.c linux-3.0.9/arch/x86/vdso/vd
20572 return &gate_vma;
20573 return NULL;
20574 }
20575 -diff -urNp linux-3.0.9/arch/x86/vdso/vma.c linux-3.0.9/arch/x86/vdso/vma.c
20576 ---- linux-3.0.9/arch/x86/vdso/vma.c 2011-11-11 13:12:24.000000000 -0500
20577 -+++ linux-3.0.9/arch/x86/vdso/vma.c 2011-11-15 20:02:59.000000000 -0500
20578 -@@ -15,18 +15,19 @@
20579 - #include <asm/proto.h>
20580 +diff -urNp linux-3.1.1/arch/x86/vdso/vma.c linux-3.1.1/arch/x86/vdso/vma.c
20581 +--- linux-3.1.1/arch/x86/vdso/vma.c 2011-11-11 15:19:27.000000000 -0500
20582 ++++ linux-3.1.1/arch/x86/vdso/vma.c 2011-11-16 18:39:07.000000000 -0500
20583 +@@ -16,8 +16,6 @@
20584 #include <asm/vdso.h>
20585 + #include <asm/page.h>
20586
20587 -unsigned int __read_mostly vdso_enabled = 1;
20588 -
20589 extern char vdso_start[], vdso_end[];
20590 extern unsigned short vdso_sync_cpuid;
20591 -+extern char __vsyscall_0;
20592 -
20593 - static struct page **vdso_pages;
20594 -+static struct page *vsyscall_page;
20595 - static unsigned vdso_size;
20596
20597 - static int __init init_vdso_vars(void)
20598 +@@ -97,13 +95,15 @@ static unsigned long vdso_addr(unsigned
20599 + int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
20600 {
20601 -- int npages = (vdso_end - vdso_start + PAGE_SIZE - 1) / PAGE_SIZE;
20602 -- int i;
20603 -+ size_t nbytes = vdso_end - vdso_start;
20604 -+ size_t npages = (nbytes + PAGE_SIZE - 1) / PAGE_SIZE;
20605 -+ size_t i;
20606 -
20607 - vdso_size = npages << PAGE_SHIFT;
20608 - vdso_pages = kmalloc(sizeof(struct page *) * npages, GFP_KERNEL);
20609 -@@ -34,19 +35,19 @@ static int __init init_vdso_vars(void)
20610 - goto oom;
20611 - for (i = 0; i < npages; i++) {
20612 - struct page *p;
20613 -- p = alloc_page(GFP_KERNEL);
20614 -+ p = alloc_page(GFP_KERNEL | __GFP_ZERO);
20615 - if (!p)
20616 - goto oom;
20617 - vdso_pages[i] = p;
20618 -- copy_page(page_address(p), vdso_start + i*PAGE_SIZE);
20619 -+ memcpy(page_address(p), vdso_start + i*PAGE_SIZE, nbytes > PAGE_SIZE ? PAGE_SIZE : nbytes);
20620 -+ nbytes -= PAGE_SIZE;
20621 - }
20622 -+ vsyscall_page = pfn_to_page((__pa_symbol(&__vsyscall_0)) >> PAGE_SHIFT);
20623 -
20624 - return 0;
20625 -
20626 - oom:
20627 -- printk("Cannot allocate vdso\n");
20628 -- vdso_enabled = 0;
20629 -- return -ENOMEM;
20630 -+ panic("Cannot allocate vdso\n");
20631 - }
20632 - subsys_initcall(init_vdso_vars);
20633 -
20634 -@@ -80,37 +81,35 @@ int arch_setup_additional_pages(struct l
20635 - unsigned long addr;
20636 + struct mm_struct *mm = current->mm;
20637 +- unsigned long addr;
20638 ++ unsigned long addr = 0;
20639 int ret;
20640
20641 - if (!vdso_enabled)
20642 - return 0;
20643 -
20644 down_write(&mm->mmap_sem);
20645 -- addr = vdso_addr(mm->start_stack, vdso_size);
20646 -- addr = get_unmapped_area(NULL, addr, vdso_size, 0, 0);
20647 -+ addr = vdso_addr(mm->start_stack, vdso_size + PAGE_SIZE);
20648 -+ addr = get_unmapped_area(NULL, addr, vdso_size + PAGE_SIZE, 0, 0);
20649 ++
20650 ++#ifdef CONFIG_PAX_RANDMMAP
20651 ++ if (!(mm->pax_flags & MF_PAX_RANDMMAP))
20652 ++#endif
20653 ++
20654 + addr = vdso_addr(mm->start_stack, vdso_size);
20655 + addr = get_unmapped_area(NULL, addr, vdso_size, 0, 0);
20656 if (IS_ERR_VALUE(addr)) {
20657 - ret = addr;
20658 +@@ -111,26 +111,18 @@ int arch_setup_additional_pages(struct l
20659 goto up_fail;
20660 }
20661
20662 - current->mm->context.vdso = (void *)addr;
20663 -+ mm->context.vdso = addr + PAGE_SIZE;
20664 ++ mm->context.vdso = addr;
20665
20666 -- ret = install_special_mapping(mm, addr, vdso_size,
20667 -+ ret = install_special_mapping(mm, addr, PAGE_SIZE,
20668 + ret = install_special_mapping(mm, addr, vdso_size,
20669 VM_READ|VM_EXEC|
20670 -- VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC|
20671 -+ VM_MAYREAD|VM_MAYEXEC|
20672 + VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC|
20673 VM_ALWAYSDUMP,
20674 -- vdso_pages);
20675 -+ &vsyscall_page);
20676 - if (ret) {
20677 + vdso_pages);
20678 +- if (ret) {
20679 - current->mm->context.vdso = NULL;
20680 -+ mm->context.vdso = 0;
20681 - goto up_fail;
20682 - }
20683 -
20684 -+ ret = install_special_mapping(mm, addr + PAGE_SIZE, vdso_size,
20685 -+ VM_READ|VM_EXEC|
20686 -+ VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC|
20687 -+ VM_ALWAYSDUMP,
20688 -+ vdso_pages);
20689 +- goto up_fail;
20690 +- }
20691 ++
20692 + if (ret)
20693 + mm->context.vdso = 0;
20694 -+
20695 +
20696 up_fail:
20697 up_write(&mm->mmap_sem);
20698 return ret;
20699 @@ -22899,9 +22936,9 @@ diff -urNp linux-3.0.9/arch/x86/vdso/vma.c linux-3.0.9/arch/x86/vdso/vma.c
20700 - return 0;
20701 -}
20702 -__setup("vdso=", vdso_setup);
20703 -diff -urNp linux-3.0.9/arch/x86/xen/enlighten.c linux-3.0.9/arch/x86/xen/enlighten.c
20704 ---- linux-3.0.9/arch/x86/xen/enlighten.c 2011-11-11 13:12:24.000000000 -0500
20705 -+++ linux-3.0.9/arch/x86/xen/enlighten.c 2011-11-15 20:02:59.000000000 -0500
20706 +diff -urNp linux-3.1.1/arch/x86/xen/enlighten.c linux-3.1.1/arch/x86/xen/enlighten.c
20707 +--- linux-3.1.1/arch/x86/xen/enlighten.c 2011-11-11 15:19:27.000000000 -0500
20708 ++++ linux-3.1.1/arch/x86/xen/enlighten.c 2011-11-16 18:39:07.000000000 -0500
20709 @@ -85,8 +85,6 @@ EXPORT_SYMBOL_GPL(xen_start_info);
20710
20711 struct shared_info xen_dummy_shared_info;
20712 @@ -22911,7 +22948,7 @@ diff -urNp linux-3.0.9/arch/x86/xen/enlighten.c linux-3.0.9/arch/x86/xen/enlight
20713 RESERVE_BRK(shared_info_page_brk, PAGE_SIZE);
20714 __read_mostly int xen_have_vector_callback;
20715 EXPORT_SYMBOL_GPL(xen_have_vector_callback);
20716 -@@ -1010,7 +1008,7 @@ static const struct pv_apic_ops xen_apic
20717 +@@ -1028,7 +1026,7 @@ static const struct pv_apic_ops xen_apic
20718 #endif
20719 };
20720
20721 @@ -22920,7 +22957,7 @@ diff -urNp linux-3.0.9/arch/x86/xen/enlighten.c linux-3.0.9/arch/x86/xen/enlight
20722 {
20723 struct sched_shutdown r = { .reason = reason };
20724
20725 -@@ -1018,17 +1016,17 @@ static void xen_reboot(int reason)
20726 +@@ -1036,17 +1034,17 @@ static void xen_reboot(int reason)
20727 BUG();
20728 }
20729
20730 @@ -22941,7 +22978,7 @@ diff -urNp linux-3.0.9/arch/x86/xen/enlighten.c linux-3.0.9/arch/x86/xen/enlight
20731 {
20732 xen_reboot(SHUTDOWN_poweroff);
20733 }
20734 -@@ -1134,7 +1132,17 @@ asmlinkage void __init xen_start_kernel(
20735 +@@ -1152,7 +1150,17 @@ asmlinkage void __init xen_start_kernel(
20736 __userpte_alloc_gfp &= ~__GFP_HIGHMEM;
20737
20738 /* Work out if we support NX */
20739 @@ -22960,7 +22997,7 @@ diff -urNp linux-3.0.9/arch/x86/xen/enlighten.c linux-3.0.9/arch/x86/xen/enlight
20740
20741 xen_setup_features();
20742
20743 -@@ -1165,13 +1173,6 @@ asmlinkage void __init xen_start_kernel(
20744 +@@ -1183,13 +1191,6 @@ asmlinkage void __init xen_start_kernel(
20745
20746 machine_ops = xen_machine_ops;
20747
20748 @@ -22974,10 +23011,10 @@ diff -urNp linux-3.0.9/arch/x86/xen/enlighten.c linux-3.0.9/arch/x86/xen/enlight
20749 xen_smp_init();
20750
20751 #ifdef CONFIG_ACPI_NUMA
20752 -diff -urNp linux-3.0.9/arch/x86/xen/mmu.c linux-3.0.9/arch/x86/xen/mmu.c
20753 ---- linux-3.0.9/arch/x86/xen/mmu.c 2011-11-11 13:12:24.000000000 -0500
20754 -+++ linux-3.0.9/arch/x86/xen/mmu.c 2011-11-15 20:02:59.000000000 -0500
20755 -@@ -1683,6 +1683,8 @@ pgd_t * __init xen_setup_kernel_pagetabl
20756 +diff -urNp linux-3.1.1/arch/x86/xen/mmu.c linux-3.1.1/arch/x86/xen/mmu.c
20757 +--- linux-3.1.1/arch/x86/xen/mmu.c 2011-11-11 15:19:27.000000000 -0500
20758 ++++ linux-3.1.1/arch/x86/xen/mmu.c 2011-11-16 18:39:07.000000000 -0500
20759 +@@ -1768,6 +1768,8 @@ pgd_t * __init xen_setup_kernel_pagetabl
20760 convert_pfn_mfn(init_level4_pgt);
20761 convert_pfn_mfn(level3_ident_pgt);
20762 convert_pfn_mfn(level3_kernel_pgt);
20763 @@ -22986,7 +23023,7 @@ diff -urNp linux-3.0.9/arch/x86/xen/mmu.c linux-3.0.9/arch/x86/xen/mmu.c
20764
20765 l3 = m2v(pgd[pgd_index(__START_KERNEL_map)].pgd);
20766 l2 = m2v(l3[pud_index(__START_KERNEL_map)].pud);
20767 -@@ -1701,7 +1703,10 @@ pgd_t * __init xen_setup_kernel_pagetabl
20768 +@@ -1786,7 +1788,10 @@ pgd_t * __init xen_setup_kernel_pagetabl
20769 set_page_prot(init_level4_pgt, PAGE_KERNEL_RO);
20770 set_page_prot(level3_ident_pgt, PAGE_KERNEL_RO);
20771 set_page_prot(level3_kernel_pgt, PAGE_KERNEL_RO);
20772 @@ -22997,7 +23034,7 @@ diff -urNp linux-3.0.9/arch/x86/xen/mmu.c linux-3.0.9/arch/x86/xen/mmu.c
20773 set_page_prot(level2_kernel_pgt, PAGE_KERNEL_RO);
20774 set_page_prot(level2_fixmap_pgt, PAGE_KERNEL_RO);
20775
20776 -@@ -1913,6 +1918,7 @@ static void __init xen_post_allocator_in
20777 +@@ -2000,6 +2005,7 @@ static void __init xen_post_allocator_in
20778 pv_mmu_ops.set_pud = xen_set_pud;
20779 #if PAGETABLE_LEVELS == 4
20780 pv_mmu_ops.set_pgd = xen_set_pgd;
20781 @@ -23005,7 +23042,7 @@ diff -urNp linux-3.0.9/arch/x86/xen/mmu.c linux-3.0.9/arch/x86/xen/mmu.c
20782 #endif
20783
20784 /* This will work as long as patching hasn't happened yet
20785 -@@ -1994,6 +2000,7 @@ static const struct pv_mmu_ops xen_mmu_o
20786 +@@ -2081,6 +2087,7 @@ static const struct pv_mmu_ops xen_mmu_o
20787 .pud_val = PV_CALLEE_SAVE(xen_pud_val),
20788 .make_pud = PV_CALLEE_SAVE(xen_make_pud),
20789 .set_pgd = xen_set_pgd_hyper,
20790 @@ -23013,9 +23050,9 @@ diff -urNp linux-3.0.9/arch/x86/xen/mmu.c linux-3.0.9/arch/x86/xen/mmu.c
20791
20792 .alloc_pud = xen_alloc_pmd_init,
20793 .release_pud = xen_release_pmd_init,
20794 -diff -urNp linux-3.0.9/arch/x86/xen/smp.c linux-3.0.9/arch/x86/xen/smp.c
20795 ---- linux-3.0.9/arch/x86/xen/smp.c 2011-11-11 13:12:24.000000000 -0500
20796 -+++ linux-3.0.9/arch/x86/xen/smp.c 2011-11-15 20:02:59.000000000 -0500
20797 +diff -urNp linux-3.1.1/arch/x86/xen/smp.c linux-3.1.1/arch/x86/xen/smp.c
20798 +--- linux-3.1.1/arch/x86/xen/smp.c 2011-11-11 15:19:27.000000000 -0500
20799 ++++ linux-3.1.1/arch/x86/xen/smp.c 2011-11-16 18:39:07.000000000 -0500
20800 @@ -194,11 +194,6 @@ static void __init xen_smp_prepare_boot_
20801 {
20802 BUG_ON(smp_processor_id() != 0);
20803 @@ -23060,9 +23097,9 @@ diff -urNp linux-3.0.9/arch/x86/xen/smp.c linux-3.0.9/arch/x86/xen/smp.c
20804 #endif
20805 xen_setup_runstate_info(cpu);
20806 xen_setup_timer(cpu);
20807 -diff -urNp linux-3.0.9/arch/x86/xen/xen-asm_32.S linux-3.0.9/arch/x86/xen/xen-asm_32.S
20808 ---- linux-3.0.9/arch/x86/xen/xen-asm_32.S 2011-11-11 13:12:24.000000000 -0500
20809 -+++ linux-3.0.9/arch/x86/xen/xen-asm_32.S 2011-11-15 20:02:59.000000000 -0500
20810 +diff -urNp linux-3.1.1/arch/x86/xen/xen-asm_32.S linux-3.1.1/arch/x86/xen/xen-asm_32.S
20811 +--- linux-3.1.1/arch/x86/xen/xen-asm_32.S 2011-11-11 15:19:27.000000000 -0500
20812 ++++ linux-3.1.1/arch/x86/xen/xen-asm_32.S 2011-11-16 18:39:07.000000000 -0500
20813 @@ -83,14 +83,14 @@ ENTRY(xen_iret)
20814 ESP_OFFSET=4 # bytes pushed onto stack
20815
20816 @@ -23084,9 +23121,9 @@ diff -urNp linux-3.0.9/arch/x86/xen/xen-asm_32.S linux-3.0.9/arch/x86/xen/xen-as
20817 #else
20818 movl xen_vcpu, %eax
20819 #endif
20820 -diff -urNp linux-3.0.9/arch/x86/xen/xen-head.S linux-3.0.9/arch/x86/xen/xen-head.S
20821 ---- linux-3.0.9/arch/x86/xen/xen-head.S 2011-11-11 13:12:24.000000000 -0500
20822 -+++ linux-3.0.9/arch/x86/xen/xen-head.S 2011-11-15 20:02:59.000000000 -0500
20823 +diff -urNp linux-3.1.1/arch/x86/xen/xen-head.S linux-3.1.1/arch/x86/xen/xen-head.S
20824 +--- linux-3.1.1/arch/x86/xen/xen-head.S 2011-11-11 15:19:27.000000000 -0500
20825 ++++ linux-3.1.1/arch/x86/xen/xen-head.S 2011-11-16 18:39:07.000000000 -0500
20826 @@ -19,6 +19,17 @@ ENTRY(startup_xen)
20827 #ifdef CONFIG_X86_32
20828 mov %esi,xen_start_info
20829 @@ -23105,9 +23142,9 @@ diff -urNp linux-3.0.9/arch/x86/xen/xen-head.S linux-3.0.9/arch/x86/xen/xen-head
20830 #else
20831 mov %rsi,xen_start_info
20832 mov $init_thread_union+THREAD_SIZE,%rsp
20833 -diff -urNp linux-3.0.9/arch/x86/xen/xen-ops.h linux-3.0.9/arch/x86/xen/xen-ops.h
20834 ---- linux-3.0.9/arch/x86/xen/xen-ops.h 2011-11-11 13:12:24.000000000 -0500
20835 -+++ linux-3.0.9/arch/x86/xen/xen-ops.h 2011-11-15 20:02:59.000000000 -0500
20836 +diff -urNp linux-3.1.1/arch/x86/xen/xen-ops.h linux-3.1.1/arch/x86/xen/xen-ops.h
20837 +--- linux-3.1.1/arch/x86/xen/xen-ops.h 2011-11-11 15:19:27.000000000 -0500
20838 ++++ linux-3.1.1/arch/x86/xen/xen-ops.h 2011-11-16 18:39:07.000000000 -0500
20839 @@ -10,8 +10,6 @@
20840 extern const char xen_hypervisor_callback[];
20841 extern const char xen_failsafe_callback[];
20842 @@ -23117,9 +23154,9 @@ diff -urNp linux-3.0.9/arch/x86/xen/xen-ops.h linux-3.0.9/arch/x86/xen/xen-ops.h
20843 struct trap_info;
20844 void xen_copy_trap_info(struct trap_info *traps);
20845
20846 -diff -urNp linux-3.0.9/block/blk-iopoll.c linux-3.0.9/block/blk-iopoll.c
20847 ---- linux-3.0.9/block/blk-iopoll.c 2011-11-11 13:12:24.000000000 -0500
20848 -+++ linux-3.0.9/block/blk-iopoll.c 2011-11-15 20:02:59.000000000 -0500
20849 +diff -urNp linux-3.1.1/block/blk-iopoll.c linux-3.1.1/block/blk-iopoll.c
20850 +--- linux-3.1.1/block/blk-iopoll.c 2011-11-11 15:19:27.000000000 -0500
20851 ++++ linux-3.1.1/block/blk-iopoll.c 2011-11-16 18:39:07.000000000 -0500
20852 @@ -77,7 +77,7 @@ void blk_iopoll_complete(struct blk_iopo
20853 }
20854 EXPORT_SYMBOL(blk_iopoll_complete);
20855 @@ -23129,9 +23166,9 @@ diff -urNp linux-3.0.9/block/blk-iopoll.c linux-3.0.9/block/blk-iopoll.c
20856 {
20857 struct list_head *list = &__get_cpu_var(blk_cpu_iopoll);
20858 int rearm = 0, budget = blk_iopoll_budget;
20859 -diff -urNp linux-3.0.9/block/blk-map.c linux-3.0.9/block/blk-map.c
20860 ---- linux-3.0.9/block/blk-map.c 2011-11-11 13:12:24.000000000 -0500
20861 -+++ linux-3.0.9/block/blk-map.c 2011-11-15 20:02:59.000000000 -0500
20862 +diff -urNp linux-3.1.1/block/blk-map.c linux-3.1.1/block/blk-map.c
20863 +--- linux-3.1.1/block/blk-map.c 2011-11-11 15:19:27.000000000 -0500
20864 ++++ linux-3.1.1/block/blk-map.c 2011-11-16 18:39:07.000000000 -0500
20865 @@ -301,7 +301,7 @@ int blk_rq_map_kern(struct request_queue
20866 if (!len || !kbuf)
20867 return -EINVAL;
20868 @@ -23141,9 +23178,9 @@ diff -urNp linux-3.0.9/block/blk-map.c linux-3.0.9/block/blk-map.c
20869 if (do_copy)
20870 bio = bio_copy_kern(q, kbuf, len, gfp_mask, reading);
20871 else
20872 -diff -urNp linux-3.0.9/block/blk-softirq.c linux-3.0.9/block/blk-softirq.c
20873 ---- linux-3.0.9/block/blk-softirq.c 2011-11-11 13:12:24.000000000 -0500
20874 -+++ linux-3.0.9/block/blk-softirq.c 2011-11-15 20:02:59.000000000 -0500
20875 +diff -urNp linux-3.1.1/block/blk-softirq.c linux-3.1.1/block/blk-softirq.c
20876 +--- linux-3.1.1/block/blk-softirq.c 2011-11-11 15:19:27.000000000 -0500
20877 ++++ linux-3.1.1/block/blk-softirq.c 2011-11-16 18:39:07.000000000 -0500
20878 @@ -17,7 +17,7 @@ static DEFINE_PER_CPU(struct list_head,
20879 * Softirq action handler - move entries to local list and loop over them
20880 * while passing them to the queue registered handler.
20881 @@ -23153,9 +23190,9 @@ diff -urNp linux-3.0.9/block/blk-softirq.c linux-3.0.9/block/blk-softirq.c
20882 {
20883 struct list_head *cpu_list, local_list;
20884
20885 -diff -urNp linux-3.0.9/block/bsg.c linux-3.0.9/block/bsg.c
20886 ---- linux-3.0.9/block/bsg.c 2011-11-11 13:12:24.000000000 -0500
20887 -+++ linux-3.0.9/block/bsg.c 2011-11-15 20:02:59.000000000 -0500
20888 +diff -urNp linux-3.1.1/block/bsg.c linux-3.1.1/block/bsg.c
20889 +--- linux-3.1.1/block/bsg.c 2011-11-11 15:19:27.000000000 -0500
20890 ++++ linux-3.1.1/block/bsg.c 2011-11-16 18:39:07.000000000 -0500
20891 @@ -176,16 +176,24 @@ static int blk_fill_sgv4_hdr_rq(struct r
20892 struct sg_io_v4 *hdr, struct bsg_device *bd,
20893 fmode_t has_write_perm)
20894 @@ -23172,7 +23209,7 @@ diff -urNp linux-3.0.9/block/bsg.c linux-3.0.9/block/bsg.c
20895 + } else
20896 + cmdptr = tmpcmd;
20897
20898 -- if (copy_from_user(rq->cmd, (void *)(unsigned long)hdr->request,
20899 +- if (copy_from_user(rq->cmd, (void __user *)(unsigned long)hdr->request,
20900 + if (copy_from_user(cmdptr, (void __user *)(unsigned long)hdr->request,
20901 hdr->request_len))
20902 return -EFAULT;
20903 @@ -23183,50 +23220,10 @@ diff -urNp linux-3.0.9/block/bsg.c linux-3.0.9/block/bsg.c
20904 if (hdr->subprotocol == BSG_SUB_PROTOCOL_SCSI_CMD) {
20905 if (blk_verify_command(rq->cmd, has_write_perm))
20906 return -EPERM;
20907 -@@ -249,7 +257,7 @@ bsg_map_hdr(struct bsg_device *bd, struc
20908 - struct request *rq, *next_rq = NULL;
20909 - int ret, rw;
20910 - unsigned int dxfer_len;
20911 -- void *dxferp = NULL;
20912 -+ void __user *dxferp = NULL;
20913 - struct bsg_class_device *bcd = &q->bsg_dev;
20914 -
20915 - /* if the LLD has been removed then the bsg_unregister_queue will
20916 -@@ -291,7 +299,7 @@ bsg_map_hdr(struct bsg_device *bd, struc
20917 - rq->next_rq = next_rq;
20918 - next_rq->cmd_type = rq->cmd_type;
20919 -
20920 -- dxferp = (void*)(unsigned long)hdr->din_xferp;
20921 -+ dxferp = (void __user *)(unsigned long)hdr->din_xferp;
20922 - ret = blk_rq_map_user(q, next_rq, NULL, dxferp,
20923 - hdr->din_xfer_len, GFP_KERNEL);
20924 - if (ret)
20925 -@@ -300,10 +308,10 @@ bsg_map_hdr(struct bsg_device *bd, struc
20926 -
20927 - if (hdr->dout_xfer_len) {
20928 - dxfer_len = hdr->dout_xfer_len;
20929 -- dxferp = (void*)(unsigned long)hdr->dout_xferp;
20930 -+ dxferp = (void __user *)(unsigned long)hdr->dout_xferp;
20931 - } else if (hdr->din_xfer_len) {
20932 - dxfer_len = hdr->din_xfer_len;
20933 -- dxferp = (void*)(unsigned long)hdr->din_xferp;
20934 -+ dxferp = (void __user *)(unsigned long)hdr->din_xferp;
20935 - } else
20936 - dxfer_len = 0;
20937 -
20938 -@@ -445,7 +453,7 @@ static int blk_complete_sgv4_hdr_rq(stru
20939 - int len = min_t(unsigned int, hdr->max_response_len,
20940 - rq->sense_len);
20941 -
20942 -- ret = copy_to_user((void*)(unsigned long)hdr->response,
20943 -+ ret = copy_to_user((void __user *)(unsigned long)hdr->response,
20944 - rq->sense, len);
20945 - if (!ret)
20946 - hdr->response_len = len;
20947 -diff -urNp linux-3.0.9/block/compat_ioctl.c linux-3.0.9/block/compat_ioctl.c
20948 ---- linux-3.0.9/block/compat_ioctl.c 2011-11-11 13:12:24.000000000 -0500
20949 -+++ linux-3.0.9/block/compat_ioctl.c 2011-11-15 20:02:59.000000000 -0500
20950 -@@ -354,7 +354,7 @@ static int compat_fd_ioctl(struct block_
20951 +diff -urNp linux-3.1.1/block/compat_ioctl.c linux-3.1.1/block/compat_ioctl.c
20952 +--- linux-3.1.1/block/compat_ioctl.c 2011-11-11 15:19:27.000000000 -0500
20953 ++++ linux-3.1.1/block/compat_ioctl.c 2011-11-16 18:39:07.000000000 -0500
20954 +@@ -340,7 +340,7 @@ static int compat_fd_ioctl(struct block_
20955 err |= __get_user(f->spec1, &uf->spec1);
20956 err |= __get_user(f->fmt_gap, &uf->fmt_gap);
20957 err |= __get_user(name, &uf->name);
20958 @@ -23235,9 +23232,9 @@ diff -urNp linux-3.0.9/block/compat_ioctl.c linux-3.0.9/block/compat_ioctl.c
20959 if (err) {
20960 err = -EFAULT;
20961 goto out;
20962 -diff -urNp linux-3.0.9/block/scsi_ioctl.c linux-3.0.9/block/scsi_ioctl.c
20963 ---- linux-3.0.9/block/scsi_ioctl.c 2011-11-11 13:12:24.000000000 -0500
20964 -+++ linux-3.0.9/block/scsi_ioctl.c 2011-11-15 20:02:59.000000000 -0500
20965 +diff -urNp linux-3.1.1/block/scsi_ioctl.c linux-3.1.1/block/scsi_ioctl.c
20966 +--- linux-3.1.1/block/scsi_ioctl.c 2011-11-11 15:19:27.000000000 -0500
20967 ++++ linux-3.1.1/block/scsi_ioctl.c 2011-11-16 18:39:07.000000000 -0500
20968 @@ -222,8 +222,20 @@ EXPORT_SYMBOL(blk_verify_command);
20969 static int blk_fill_sghdr_rq(struct request_queue *q, struct request *rq,
20970 struct sg_io_hdr *hdr, fmode_t mode)
20971 @@ -23289,9 +23286,9 @@ diff -urNp linux-3.0.9/block/scsi_ioctl.c linux-3.0.9/block/scsi_ioctl.c
20972 if (in_len && copy_from_user(buffer, sic->data + cmdlen, in_len))
20973 goto error;
20974
20975 -diff -urNp linux-3.0.9/crypto/cryptd.c linux-3.0.9/crypto/cryptd.c
20976 ---- linux-3.0.9/crypto/cryptd.c 2011-11-11 13:12:24.000000000 -0500
20977 -+++ linux-3.0.9/crypto/cryptd.c 2011-11-15 20:02:59.000000000 -0500
20978 +diff -urNp linux-3.1.1/crypto/cryptd.c linux-3.1.1/crypto/cryptd.c
20979 +--- linux-3.1.1/crypto/cryptd.c 2011-11-11 15:19:27.000000000 -0500
20980 ++++ linux-3.1.1/crypto/cryptd.c 2011-11-16 18:39:07.000000000 -0500
20981 @@ -63,7 +63,7 @@ struct cryptd_blkcipher_ctx {
20982
20983 struct cryptd_blkcipher_request_ctx {
20984 @@ -23310,30 +23307,9 @@ diff -urNp linux-3.0.9/crypto/cryptd.c linux-3.0.9/crypto/cryptd.c
20985
20986 static void cryptd_queue_worker(struct work_struct *work);
20987
20988 -diff -urNp linux-3.0.9/crypto/gf128mul.c linux-3.0.9/crypto/gf128mul.c
20989 ---- linux-3.0.9/crypto/gf128mul.c 2011-11-11 13:12:24.000000000 -0500
20990 -+++ linux-3.0.9/crypto/gf128mul.c 2011-11-15 20:02:59.000000000 -0500
20991 -@@ -182,7 +182,7 @@ void gf128mul_lle(be128 *r, const be128
20992 - for (i = 0; i < 7; ++i)
20993 - gf128mul_x_lle(&p[i + 1], &p[i]);
20994 -
20995 -- memset(r, 0, sizeof(r));
20996 -+ memset(r, 0, sizeof(*r));
20997 - for (i = 0;;) {
20998 - u8 ch = ((u8 *)b)[15 - i];
20999 -
21000 -@@ -220,7 +220,7 @@ void gf128mul_bbe(be128 *r, const be128
21001 - for (i = 0; i < 7; ++i)
21002 - gf128mul_x_bbe(&p[i + 1], &p[i]);
21003 -
21004 -- memset(r, 0, sizeof(r));
21005 -+ memset(r, 0, sizeof(*r));
21006 - for (i = 0;;) {
21007 - u8 ch = ((u8 *)b)[i];
21008 -
21009 -diff -urNp linux-3.0.9/crypto/serpent.c linux-3.0.9/crypto/serpent.c
21010 ---- linux-3.0.9/crypto/serpent.c 2011-11-11 13:12:24.000000000 -0500
21011 -+++ linux-3.0.9/crypto/serpent.c 2011-11-15 20:02:59.000000000 -0500
21012 +diff -urNp linux-3.1.1/crypto/serpent.c linux-3.1.1/crypto/serpent.c
21013 +--- linux-3.1.1/crypto/serpent.c 2011-11-11 15:19:27.000000000 -0500
21014 ++++ linux-3.1.1/crypto/serpent.c 2011-11-16 18:40:10.000000000 -0500
21015 @@ -224,6 +224,8 @@ static int serpent_setkey(struct crypto_
21016 u32 r0,r1,r2,r3,r4;
21017 int i;
21018 @@ -23343,9 +23319,9 @@ diff -urNp linux-3.0.9/crypto/serpent.c linux-3.0.9/crypto/serpent.c
21019 /* Copy key, add padding */
21020
21021 for (i = 0; i < keylen; ++i)
21022 -diff -urNp linux-3.0.9/Documentation/dontdiff linux-3.0.9/Documentation/dontdiff
21023 ---- linux-3.0.9/Documentation/dontdiff 2011-11-11 13:12:24.000000000 -0500
21024 -+++ linux-3.0.9/Documentation/dontdiff 2011-11-15 20:02:59.000000000 -0500
21025 +diff -urNp linux-3.1.1/Documentation/dontdiff linux-3.1.1/Documentation/dontdiff
21026 +--- linux-3.1.1/Documentation/dontdiff 2011-11-11 15:19:27.000000000 -0500
21027 ++++ linux-3.1.1/Documentation/dontdiff 2011-11-16 18:39:07.000000000 -0500
21028 @@ -5,6 +5,7 @@
21029 *.cis
21030 *.cpio
21031 @@ -23374,7 +23350,13 @@ diff -urNp linux-3.0.9/Documentation/dontdiff linux-3.0.9/Documentation/dontdiff
21032 SCCS
21033 System.map*
21034 TAGS
21035 -@@ -98,14 +102,18 @@ bzImage*
21036 +@@ -93,19 +97,24 @@ bounds.h
21037 + bsetup
21038 + btfixupprep
21039 + build
21040 ++builtin-policy.h
21041 + bvmlinux
21042 + bzImage*
21043 capability_names.h
21044 capflags.c
21045 classlist.h*
21046 @@ -23393,7 +23375,15 @@ diff -urNp linux-3.0.9/Documentation/dontdiff linux-3.0.9/Documentation/dontdiff
21047 conmakehash
21048 consolemap_deftbl.c*
21049 cpustr.h
21050 -@@ -126,12 +134,14 @@ fore200e_pca_fw.c*
21051 +@@ -119,6 +128,7 @@ dslm
21052 + elf2ecoff
21053 + elfconfig.h*
21054 + evergreen_reg_safe.h
21055 ++exception_policy.conf
21056 + fixdep
21057 + flask.h
21058 + fore200e_mkfirm
21059 +@@ -126,12 +136,14 @@ fore200e_pca_fw.c*
21060 gconf
21061 gconf.glade.h
21062 gen-devlist
21063 @@ -23408,7 +23398,7 @@ diff -urNp linux-3.0.9/Documentation/dontdiff linux-3.0.9/Documentation/dontdiff
21064 hpet_example
21065 hugepage-mmap
21066 hugepage-shm
21067 -@@ -146,7 +156,7 @@ int32.c
21068 +@@ -146,7 +158,7 @@ int32.c
21069 int4.c
21070 int8.c
21071 kallsyms
21072 @@ -23417,7 +23407,7 @@ diff -urNp linux-3.0.9/Documentation/dontdiff linux-3.0.9/Documentation/dontdiff
21073 keywords.c
21074 ksym.c*
21075 ksym.h*
21076 -@@ -154,7 +164,6 @@ kxgettext
21077 +@@ -154,7 +166,6 @@ kxgettext
21078 lkc_defs.h
21079 lex.c
21080 lex.*.c
21081 @@ -23425,7 +23415,7 @@ diff -urNp linux-3.0.9/Documentation/dontdiff linux-3.0.9/Documentation/dontdiff
21082 logo_*.c
21083 logo_*_clut224.c
21084 logo_*_mono.c
21085 -@@ -166,7 +175,6 @@ machtypes.h
21086 +@@ -166,7 +177,6 @@ machtypes.h
21087 map
21088 map_hugetlb
21089 maui_boot.h
21090 @@ -23433,7 +23423,7 @@ diff -urNp linux-3.0.9/Documentation/dontdiff linux-3.0.9/Documentation/dontdiff
21091 mconf
21092 miboot*
21093 mk_elfconfig
21094 -@@ -174,6 +182,7 @@ mkboot
21095 +@@ -174,6 +184,7 @@ mkboot
21096 mkbugboot
21097 mkcpustr
21098 mkdep
21099 @@ -23441,7 +23431,7 @@ diff -urNp linux-3.0.9/Documentation/dontdiff linux-3.0.9/Documentation/dontdiff
21100 mkprep
21101 mkregtable
21102 mktables
21103 -@@ -209,6 +218,7 @@ r300_reg_safe.h
21104 +@@ -209,6 +220,7 @@ r300_reg_safe.h
21105 r420_reg_safe.h
21106 r600_reg_safe.h
21107 recordmcount
21108 @@ -23449,7 +23439,7 @@ diff -urNp linux-3.0.9/Documentation/dontdiff linux-3.0.9/Documentation/dontdiff
21109 relocs
21110 rlim_names.h
21111 rn50_reg_safe.h
21112 -@@ -219,6 +229,7 @@ setup
21113 +@@ -219,6 +231,7 @@ setup
21114 setup.bin
21115 setup.elf
21116 sImage
21117 @@ -23457,7 +23447,7 @@ diff -urNp linux-3.0.9/Documentation/dontdiff linux-3.0.9/Documentation/dontdiff
21118 sm_tbl*
21119 split-include
21120 syscalltab.h
21121 -@@ -229,6 +240,7 @@ tftpboot.img
21122 +@@ -229,6 +242,7 @@ tftpboot.img
21123 timeconst.h
21124 times.h*
21125 trix_boot.h
21126 @@ -23465,7 +23455,7 @@ diff -urNp linux-3.0.9/Documentation/dontdiff linux-3.0.9/Documentation/dontdiff
21127 utsrelease.h*
21128 vdso-syms.lds
21129 vdso.lds
21130 -@@ -246,7 +258,9 @@ vmlinux
21131 +@@ -246,7 +260,9 @@ vmlinux
21132 vmlinux-*
21133 vmlinux.aout
21134 vmlinux.bin.all
21135 @@ -23475,7 +23465,7 @@ diff -urNp linux-3.0.9/Documentation/dontdiff linux-3.0.9/Documentation/dontdiff
21136 vmlinuz
21137 voffset.h
21138 vsyscall.lds
21139 -@@ -254,6 +268,7 @@ vsyscall_32.lds
21140 +@@ -254,9 +270,11 @@ vsyscall_32.lds
21141 wanxlfw.inc
21142 uImage
21143 unifdef
21144 @@ -23483,10 +23473,14 @@ diff -urNp linux-3.0.9/Documentation/dontdiff linux-3.0.9/Documentation/dontdiff
21145 wakeup.bin
21146 wakeup.elf
21147 wakeup.lds
21148 -diff -urNp linux-3.0.9/Documentation/kernel-parameters.txt linux-3.0.9/Documentation/kernel-parameters.txt
21149 ---- linux-3.0.9/Documentation/kernel-parameters.txt 2011-11-11 13:12:24.000000000 -0500
21150 -+++ linux-3.0.9/Documentation/kernel-parameters.txt 2011-11-15 20:02:59.000000000 -0500
21151 -@@ -1883,6 +1883,13 @@ bytes respectively. Such letter suffixes
21152 + zImage*
21153 + zconf.hash.c
21154 ++zconf.lex.c
21155 + zoffset.h
21156 +diff -urNp linux-3.1.1/Documentation/kernel-parameters.txt linux-3.1.1/Documentation/kernel-parameters.txt
21157 +--- linux-3.1.1/Documentation/kernel-parameters.txt 2011-11-11 15:19:27.000000000 -0500
21158 ++++ linux-3.1.1/Documentation/kernel-parameters.txt 2011-11-16 18:39:07.000000000 -0500
21159 +@@ -1898,6 +1898,13 @@ bytes respectively. Such letter suffixes
21160 the specified number of seconds. This is to be used if
21161 your oopses keep scrolling off the screen.
21162
21163 @@ -23500,9 +23494,9 @@ diff -urNp linux-3.0.9/Documentation/kernel-parameters.txt linux-3.0.9/Documenta
21164 pcbit= [HW,ISDN]
21165
21166 pcd. [PARIDE]
21167 -diff -urNp linux-3.0.9/drivers/acpi/apei/cper.c linux-3.0.9/drivers/acpi/apei/cper.c
21168 ---- linux-3.0.9/drivers/acpi/apei/cper.c 2011-11-11 13:12:24.000000000 -0500
21169 -+++ linux-3.0.9/drivers/acpi/apei/cper.c 2011-11-15 20:02:59.000000000 -0500
21170 +diff -urNp linux-3.1.1/drivers/acpi/apei/cper.c linux-3.1.1/drivers/acpi/apei/cper.c
21171 +--- linux-3.1.1/drivers/acpi/apei/cper.c 2011-11-11 15:19:27.000000000 -0500
21172 ++++ linux-3.1.1/drivers/acpi/apei/cper.c 2011-11-16 18:39:07.000000000 -0500
21173 @@ -38,12 +38,12 @@
21174 */
21175 u64 cper_next_record_id(void)
21176 @@ -23520,9 +23514,9 @@ diff -urNp linux-3.0.9/drivers/acpi/apei/cper.c linux-3.0.9/drivers/acpi/apei/cp
21177 }
21178 EXPORT_SYMBOL_GPL(cper_next_record_id);
21179
21180 -diff -urNp linux-3.0.9/drivers/acpi/ec_sys.c linux-3.0.9/drivers/acpi/ec_sys.c
21181 ---- linux-3.0.9/drivers/acpi/ec_sys.c 2011-11-11 13:12:24.000000000 -0500
21182 -+++ linux-3.0.9/drivers/acpi/ec_sys.c 2011-11-15 20:02:59.000000000 -0500
21183 +diff -urNp linux-3.1.1/drivers/acpi/ec_sys.c linux-3.1.1/drivers/acpi/ec_sys.c
21184 +--- linux-3.1.1/drivers/acpi/ec_sys.c 2011-11-11 15:19:27.000000000 -0500
21185 ++++ linux-3.1.1/drivers/acpi/ec_sys.c 2011-11-16 18:39:07.000000000 -0500
21186 @@ -11,6 +11,7 @@
21187 #include <linux/kernel.h>
21188 #include <linux/acpi.h>
21189 @@ -23572,9 +23566,9 @@ diff -urNp linux-3.0.9/drivers/acpi/ec_sys.c linux-3.0.9/drivers/acpi/ec_sys.c
21190 err = ec_write(*off, byte_write);
21191 if (err)
21192 return err;
21193 -diff -urNp linux-3.0.9/drivers/acpi/proc.c linux-3.0.9/drivers/acpi/proc.c
21194 ---- linux-3.0.9/drivers/acpi/proc.c 2011-11-11 13:12:24.000000000 -0500
21195 -+++ linux-3.0.9/drivers/acpi/proc.c 2011-11-15 20:02:59.000000000 -0500
21196 +diff -urNp linux-3.1.1/drivers/acpi/proc.c linux-3.1.1/drivers/acpi/proc.c
21197 +--- linux-3.1.1/drivers/acpi/proc.c 2011-11-11 15:19:27.000000000 -0500
21198 ++++ linux-3.1.1/drivers/acpi/proc.c 2011-11-16 18:39:07.000000000 -0500
21199 @@ -342,19 +342,13 @@ acpi_system_write_wakeup_device(struct f
21200 size_t count, loff_t * ppos)
21201 {
21202 @@ -23609,9 +23603,9 @@ diff -urNp linux-3.0.9/drivers/acpi/proc.c linux-3.0.9/drivers/acpi/proc.c
21203 if (device_can_wakeup(&dev->dev)) {
21204 bool enable = !device_may_wakeup(&dev->dev);
21205 device_set_wakeup_enable(&dev->dev, enable);
21206 -diff -urNp linux-3.0.9/drivers/acpi/processor_driver.c linux-3.0.9/drivers/acpi/processor_driver.c
21207 ---- linux-3.0.9/drivers/acpi/processor_driver.c 2011-11-11 13:12:24.000000000 -0500
21208 -+++ linux-3.0.9/drivers/acpi/processor_driver.c 2011-11-15 20:02:59.000000000 -0500
21209 +diff -urNp linux-3.1.1/drivers/acpi/processor_driver.c linux-3.1.1/drivers/acpi/processor_driver.c
21210 +--- linux-3.1.1/drivers/acpi/processor_driver.c 2011-11-11 15:19:27.000000000 -0500
21211 ++++ linux-3.1.1/drivers/acpi/processor_driver.c 2011-11-16 18:39:07.000000000 -0500
21212 @@ -473,7 +473,7 @@ static int __cpuinit acpi_processor_add(
21213 return 0;
21214 #endif
21215 @@ -23621,10 +23615,10 @@ diff -urNp linux-3.0.9/drivers/acpi/processor_driver.c linux-3.0.9/drivers/acpi/
21216
21217 /*
21218 * Buggy BIOS check
21219 -diff -urNp linux-3.0.9/drivers/ata/libata-core.c linux-3.0.9/drivers/ata/libata-core.c
21220 ---- linux-3.0.9/drivers/ata/libata-core.c 2011-11-11 13:12:24.000000000 -0500
21221 -+++ linux-3.0.9/drivers/ata/libata-core.c 2011-11-15 20:02:59.000000000 -0500
21222 -@@ -4753,7 +4753,7 @@ void ata_qc_free(struct ata_queued_cmd *
21223 +diff -urNp linux-3.1.1/drivers/ata/libata-core.c linux-3.1.1/drivers/ata/libata-core.c
21224 +--- linux-3.1.1/drivers/ata/libata-core.c 2011-11-11 15:19:27.000000000 -0500
21225 ++++ linux-3.1.1/drivers/ata/libata-core.c 2011-11-16 18:39:07.000000000 -0500
21226 +@@ -4733,7 +4733,7 @@ void ata_qc_free(struct ata_queued_cmd *
21227 struct ata_port *ap;
21228 unsigned int tag;
21229
21230 @@ -23633,7 +23627,7 @@ diff -urNp linux-3.0.9/drivers/ata/libata-core.c linux-3.0.9/drivers/ata/libata-
21231 ap = qc->ap;
21232
21233 qc->flags = 0;
21234 -@@ -4769,7 +4769,7 @@ void __ata_qc_complete(struct ata_queued
21235 +@@ -4749,7 +4749,7 @@ void __ata_qc_complete(struct ata_queued
21236 struct ata_port *ap;
21237 struct ata_link *link;
21238
21239 @@ -23642,7 +23636,7 @@ diff -urNp linux-3.0.9/drivers/ata/libata-core.c linux-3.0.9/drivers/ata/libata-
21240 WARN_ON_ONCE(!(qc->flags & ATA_QCFLAG_ACTIVE));
21241 ap = qc->ap;
21242 link = qc->dev->link;
21243 -@@ -5774,6 +5774,7 @@ static void ata_finalize_port_ops(struct
21244 +@@ -5754,6 +5754,7 @@ static void ata_finalize_port_ops(struct
21245 return;
21246
21247 spin_lock(&lock);
21248 @@ -23650,7 +23644,7 @@ diff -urNp linux-3.0.9/drivers/ata/libata-core.c linux-3.0.9/drivers/ata/libata-
21249
21250 for (cur = ops->inherits; cur; cur = cur->inherits) {
21251 void **inherit = (void **)cur;
21252 -@@ -5787,8 +5788,9 @@ static void ata_finalize_port_ops(struct
21253 +@@ -5767,8 +5768,9 @@ static void ata_finalize_port_ops(struct
21254 if (IS_ERR(*pp))
21255 *pp = NULL;
21256
21257 @@ -23661,10 +23655,10 @@ diff -urNp linux-3.0.9/drivers/ata/libata-core.c linux-3.0.9/drivers/ata/libata-
21258 spin_unlock(&lock);
21259 }
21260
21261 -diff -urNp linux-3.0.9/drivers/ata/libata-eh.c linux-3.0.9/drivers/ata/libata-eh.c
21262 ---- linux-3.0.9/drivers/ata/libata-eh.c 2011-11-11 13:12:24.000000000 -0500
21263 -+++ linux-3.0.9/drivers/ata/libata-eh.c 2011-11-15 20:02:59.000000000 -0500
21264 -@@ -2518,6 +2518,8 @@ void ata_eh_report(struct ata_port *ap)
21265 +diff -urNp linux-3.1.1/drivers/ata/libata-eh.c linux-3.1.1/drivers/ata/libata-eh.c
21266 +--- linux-3.1.1/drivers/ata/libata-eh.c 2011-11-11 15:19:27.000000000 -0500
21267 ++++ linux-3.1.1/drivers/ata/libata-eh.c 2011-11-16 18:40:10.000000000 -0500
21268 +@@ -2515,6 +2515,8 @@ void ata_eh_report(struct ata_port *ap)
21269 {
21270 struct ata_link *link;
21271
21272 @@ -23673,9 +23667,9 @@ diff -urNp linux-3.0.9/drivers/ata/libata-eh.c linux-3.0.9/drivers/ata/libata-eh
21273 ata_for_each_link(link, ap, HOST_FIRST)
21274 ata_eh_link_report(link);
21275 }
21276 -diff -urNp linux-3.0.9/drivers/ata/pata_arasan_cf.c linux-3.0.9/drivers/ata/pata_arasan_cf.c
21277 ---- linux-3.0.9/drivers/ata/pata_arasan_cf.c 2011-11-11 13:12:24.000000000 -0500
21278 -+++ linux-3.0.9/drivers/ata/pata_arasan_cf.c 2011-11-15 20:02:59.000000000 -0500
21279 +diff -urNp linux-3.1.1/drivers/ata/pata_arasan_cf.c linux-3.1.1/drivers/ata/pata_arasan_cf.c
21280 +--- linux-3.1.1/drivers/ata/pata_arasan_cf.c 2011-11-11 15:19:27.000000000 -0500
21281 ++++ linux-3.1.1/drivers/ata/pata_arasan_cf.c 2011-11-16 18:39:07.000000000 -0500
21282 @@ -862,7 +862,9 @@ static int __devinit arasan_cf_probe(str
21283 /* Handle platform specific quirks */
21284 if (pdata->quirk) {
21285 @@ -23687,9 +23681,9 @@ diff -urNp linux-3.0.9/drivers/ata/pata_arasan_cf.c linux-3.0.9/drivers/ata/pata
21286 ap->pio_mask = 0;
21287 }
21288 if (pdata->quirk & CF_BROKEN_MWDMA)
21289 -diff -urNp linux-3.0.9/drivers/atm/adummy.c linux-3.0.9/drivers/atm/adummy.c
21290 ---- linux-3.0.9/drivers/atm/adummy.c 2011-11-11 13:12:24.000000000 -0500
21291 -+++ linux-3.0.9/drivers/atm/adummy.c 2011-11-15 20:02:59.000000000 -0500
21292 +diff -urNp linux-3.1.1/drivers/atm/adummy.c linux-3.1.1/drivers/atm/adummy.c
21293 +--- linux-3.1.1/drivers/atm/adummy.c 2011-11-11 15:19:27.000000000 -0500
21294 ++++ linux-3.1.1/drivers/atm/adummy.c 2011-11-16 18:39:07.000000000 -0500
21295 @@ -114,7 +114,7 @@ adummy_send(struct atm_vcc *vcc, struct
21296 vcc->pop(vcc, skb);
21297 else
21298 @@ -23699,9 +23693,9 @@ diff -urNp linux-3.0.9/drivers/atm/adummy.c linux-3.0.9/drivers/atm/adummy.c
21299
21300 return 0;
21301 }
21302 -diff -urNp linux-3.0.9/drivers/atm/ambassador.c linux-3.0.9/drivers/atm/ambassador.c
21303 ---- linux-3.0.9/drivers/atm/ambassador.c 2011-11-11 13:12:24.000000000 -0500
21304 -+++ linux-3.0.9/drivers/atm/ambassador.c 2011-11-15 20:02:59.000000000 -0500
21305 +diff -urNp linux-3.1.1/drivers/atm/ambassador.c linux-3.1.1/drivers/atm/ambassador.c
21306 +--- linux-3.1.1/drivers/atm/ambassador.c 2011-11-11 15:19:27.000000000 -0500
21307 ++++ linux-3.1.1/drivers/atm/ambassador.c 2011-11-16 18:39:07.000000000 -0500
21308 @@ -454,7 +454,7 @@ static void tx_complete (amb_dev * dev,
21309 PRINTD (DBG_FLOW|DBG_TX, "tx_complete %p %p", dev, tx);
21310
21311 @@ -23729,7 +23723,7 @@ diff -urNp linux-3.0.9/drivers/atm/ambassador.c linux-3.0.9/drivers/atm/ambassad
21312 }
21313
21314 } else {
21315 -@@ -1342,7 +1342,7 @@ static int amb_send (struct atm_vcc * at
21316 +@@ -1338,7 +1338,7 @@ static int amb_send (struct atm_vcc * at
21317 }
21318
21319 if (check_area (skb->data, skb->len)) {
21320 @@ -23738,9 +23732,9 @@ diff -urNp linux-3.0.9/drivers/atm/ambassador.c linux-3.0.9/drivers/atm/ambassad
21321 return -ENOMEM; // ?
21322 }
21323
21324 -diff -urNp linux-3.0.9/drivers/atm/atmtcp.c linux-3.0.9/drivers/atm/atmtcp.c
21325 ---- linux-3.0.9/drivers/atm/atmtcp.c 2011-11-11 13:12:24.000000000 -0500
21326 -+++ linux-3.0.9/drivers/atm/atmtcp.c 2011-11-15 20:02:59.000000000 -0500
21327 +diff -urNp linux-3.1.1/drivers/atm/atmtcp.c linux-3.1.1/drivers/atm/atmtcp.c
21328 +--- linux-3.1.1/drivers/atm/atmtcp.c 2011-11-11 15:19:27.000000000 -0500
21329 ++++ linux-3.1.1/drivers/atm/atmtcp.c 2011-11-16 18:39:07.000000000 -0500
21330 @@ -207,7 +207,7 @@ static int atmtcp_v_send(struct atm_vcc
21331 if (vcc->pop) vcc->pop(vcc,skb);
21332 else dev_kfree_skb(skb);
21333 @@ -23790,9 +23784,9 @@ diff -urNp linux-3.0.9/drivers/atm/atmtcp.c linux-3.0.9/drivers/atm/atmtcp.c
21334 done:
21335 if (vcc->pop) vcc->pop(vcc,skb);
21336 else dev_kfree_skb(skb);
21337 -diff -urNp linux-3.0.9/drivers/atm/eni.c linux-3.0.9/drivers/atm/eni.c
21338 ---- linux-3.0.9/drivers/atm/eni.c 2011-11-11 13:12:24.000000000 -0500
21339 -+++ linux-3.0.9/drivers/atm/eni.c 2011-11-15 20:02:59.000000000 -0500
21340 +diff -urNp linux-3.1.1/drivers/atm/eni.c linux-3.1.1/drivers/atm/eni.c
21341 +--- linux-3.1.1/drivers/atm/eni.c 2011-11-11 15:19:27.000000000 -0500
21342 ++++ linux-3.1.1/drivers/atm/eni.c 2011-11-16 18:39:07.000000000 -0500
21343 @@ -526,7 +526,7 @@ static int rx_aal0(struct atm_vcc *vcc)
21344 DPRINTK(DEV_LABEL "(itf %d): trashing empty cell\n",
21345 vcc->dev->number);
21346 @@ -23847,10 +23841,10 @@ diff -urNp linux-3.0.9/drivers/atm/eni.c linux-3.0.9/drivers/atm/eni.c
21347 "MMF", "SMF", "MMF", "03?", /* 0- 3 */
21348 "UTP", "05?", "06?", "07?", /* 4- 7 */
21349 "TAXI","09?", "10?", "11?", /* 8-11 */
21350 -diff -urNp linux-3.0.9/drivers/atm/firestream.c linux-3.0.9/drivers/atm/firestream.c
21351 ---- linux-3.0.9/drivers/atm/firestream.c 2011-11-11 13:12:24.000000000 -0500
21352 -+++ linux-3.0.9/drivers/atm/firestream.c 2011-11-15 20:02:59.000000000 -0500
21353 -@@ -749,7 +749,7 @@ static void process_txdone_queue (struct
21354 +diff -urNp linux-3.1.1/drivers/atm/firestream.c linux-3.1.1/drivers/atm/firestream.c
21355 +--- linux-3.1.1/drivers/atm/firestream.c 2011-11-11 15:19:27.000000000 -0500
21356 ++++ linux-3.1.1/drivers/atm/firestream.c 2011-11-16 18:39:07.000000000 -0500
21357 +@@ -750,7 +750,7 @@ static void process_txdone_queue (struct
21358 }
21359 }
21360
21361 @@ -23859,7 +23853,7 @@ diff -urNp linux-3.0.9/drivers/atm/firestream.c linux-3.0.9/drivers/atm/firestre
21362
21363 fs_dprintk (FS_DEBUG_TXMEM, "i");
21364 fs_dprintk (FS_DEBUG_ALLOC, "Free t-skb: %p\n", skb);
21365 -@@ -816,7 +816,7 @@ static void process_incoming (struct fs_
21366 +@@ -817,7 +817,7 @@ static void process_incoming (struct fs_
21367 #endif
21368 skb_put (skb, qe->p1 & 0xffff);
21369 ATM_SKB(skb)->vcc = atm_vcc;
21370 @@ -23868,7 +23862,7 @@ diff -urNp linux-3.0.9/drivers/atm/firestream.c linux-3.0.9/drivers/atm/firestre
21371 __net_timestamp(skb);
21372 fs_dprintk (FS_DEBUG_ALLOC, "Free rec-skb: %p (pushed)\n", skb);
21373 atm_vcc->push (atm_vcc, skb);
21374 -@@ -837,12 +837,12 @@ static void process_incoming (struct fs_
21375 +@@ -838,12 +838,12 @@ static void process_incoming (struct fs_
21376 kfree (pe);
21377 }
21378 if (atm_vcc)
21379 @@ -23883,9 +23877,9 @@ diff -urNp linux-3.0.9/drivers/atm/firestream.c linux-3.0.9/drivers/atm/firestre
21380 break;
21381 default: /* Hmm. Haven't written the code to handle the others yet... -- REW */
21382 printk (KERN_WARNING "Don't know what to do with RX status %x: %s.\n",
21383 -diff -urNp linux-3.0.9/drivers/atm/fore200e.c linux-3.0.9/drivers/atm/fore200e.c
21384 ---- linux-3.0.9/drivers/atm/fore200e.c 2011-11-11 13:12:24.000000000 -0500
21385 -+++ linux-3.0.9/drivers/atm/fore200e.c 2011-11-15 20:02:59.000000000 -0500
21386 +diff -urNp linux-3.1.1/drivers/atm/fore200e.c linux-3.1.1/drivers/atm/fore200e.c
21387 +--- linux-3.1.1/drivers/atm/fore200e.c 2011-11-11 15:19:27.000000000 -0500
21388 ++++ linux-3.1.1/drivers/atm/fore200e.c 2011-11-16 18:39:07.000000000 -0500
21389 @@ -933,9 +933,9 @@ fore200e_tx_irq(struct fore200e* fore200
21390 #endif
21391 /* check error condition */
21392 @@ -23942,9 +23936,9 @@ diff -urNp linux-3.0.9/drivers/atm/fore200e.c linux-3.0.9/drivers/atm/fore200e.c
21393
21394 fore200e->tx_sat++;
21395 DPRINTK(2, "tx queue of device %s is saturated, PDU dropped - heartbeat is %08x\n",
21396 -diff -urNp linux-3.0.9/drivers/atm/he.c linux-3.0.9/drivers/atm/he.c
21397 ---- linux-3.0.9/drivers/atm/he.c 2011-11-11 13:12:24.000000000 -0500
21398 -+++ linux-3.0.9/drivers/atm/he.c 2011-11-15 20:02:59.000000000 -0500
21399 +diff -urNp linux-3.1.1/drivers/atm/he.c linux-3.1.1/drivers/atm/he.c
21400 +--- linux-3.1.1/drivers/atm/he.c 2011-11-11 15:19:27.000000000 -0500
21401 ++++ linux-3.1.1/drivers/atm/he.c 2011-11-16 18:39:07.000000000 -0500
21402 @@ -1709,7 +1709,7 @@ he_service_rbrq(struct he_dev *he_dev, i
21403
21404 if (RBRQ_HBUF_ERR(he_dev->rbrq_head)) {
21405 @@ -24026,10 +24020,10 @@ diff -urNp linux-3.0.9/drivers/atm/he.c linux-3.0.9/drivers/atm/he.c
21406
21407 return 0;
21408 }
21409 -diff -urNp linux-3.0.9/drivers/atm/horizon.c linux-3.0.9/drivers/atm/horizon.c
21410 ---- linux-3.0.9/drivers/atm/horizon.c 2011-11-11 13:12:24.000000000 -0500
21411 -+++ linux-3.0.9/drivers/atm/horizon.c 2011-11-15 20:02:59.000000000 -0500
21412 -@@ -1034,7 +1034,7 @@ static void rx_schedule (hrz_dev * dev,
21413 +diff -urNp linux-3.1.1/drivers/atm/horizon.c linux-3.1.1/drivers/atm/horizon.c
21414 +--- linux-3.1.1/drivers/atm/horizon.c 2011-11-11 15:19:27.000000000 -0500
21415 ++++ linux-3.1.1/drivers/atm/horizon.c 2011-11-16 18:39:07.000000000 -0500
21416 +@@ -1035,7 +1035,7 @@ static void rx_schedule (hrz_dev * dev,
21417 {
21418 struct atm_vcc * vcc = ATM_SKB(skb)->vcc;
21419 // VC layer stats
21420 @@ -24038,7 +24032,7 @@ diff -urNp linux-3.0.9/drivers/atm/horizon.c linux-3.0.9/drivers/atm/horizon.c
21421 __net_timestamp(skb);
21422 // end of our responsibility
21423 vcc->push (vcc, skb);
21424 -@@ -1186,7 +1186,7 @@ static void tx_schedule (hrz_dev * const
21425 +@@ -1187,7 +1187,7 @@ static void tx_schedule (hrz_dev * const
21426 dev->tx_iovec = NULL;
21427
21428 // VC layer stats
21429 @@ -24047,10 +24041,10 @@ diff -urNp linux-3.0.9/drivers/atm/horizon.c linux-3.0.9/drivers/atm/horizon.c
21430
21431 // free the skb
21432 hrz_kfree_skb (skb);
21433 -diff -urNp linux-3.0.9/drivers/atm/idt77252.c linux-3.0.9/drivers/atm/idt77252.c
21434 ---- linux-3.0.9/drivers/atm/idt77252.c 2011-11-11 13:12:24.000000000 -0500
21435 -+++ linux-3.0.9/drivers/atm/idt77252.c 2011-11-15 20:02:59.000000000 -0500
21436 -@@ -811,7 +811,7 @@ drain_scq(struct idt77252_dev *card, str
21437 +diff -urNp linux-3.1.1/drivers/atm/idt77252.c linux-3.1.1/drivers/atm/idt77252.c
21438 +--- linux-3.1.1/drivers/atm/idt77252.c 2011-11-11 15:19:27.000000000 -0500
21439 ++++ linux-3.1.1/drivers/atm/idt77252.c 2011-11-16 18:39:07.000000000 -0500
21440 +@@ -812,7 +812,7 @@ drain_scq(struct idt77252_dev *card, str
21441 else
21442 dev_kfree_skb(skb);
21443
21444 @@ -24059,7 +24053,7 @@ diff -urNp linux-3.0.9/drivers/atm/idt77252.c linux-3.0.9/drivers/atm/idt77252.c
21445 }
21446
21447 atomic_dec(&scq->used);
21448 -@@ -1074,13 +1074,13 @@ dequeue_rx(struct idt77252_dev *card, st
21449 +@@ -1075,13 +1075,13 @@ dequeue_rx(struct idt77252_dev *card, st
21450 if ((sb = dev_alloc_skb(64)) == NULL) {
21451 printk("%s: Can't allocate buffers for aal0.\n",
21452 card->name);
21453 @@ -24075,7 +24069,7 @@ diff -urNp linux-3.0.9/drivers/atm/idt77252.c linux-3.0.9/drivers/atm/idt77252.c
21454 dev_kfree_skb(sb);
21455 break;
21456 }
21457 -@@ -1097,7 +1097,7 @@ dequeue_rx(struct idt77252_dev *card, st
21458 +@@ -1098,7 +1098,7 @@ dequeue_rx(struct idt77252_dev *card, st
21459 ATM_SKB(sb)->vcc = vcc;
21460 __net_timestamp(sb);
21461 vcc->push(vcc, sb);
21462 @@ -24084,7 +24078,7 @@ diff -urNp linux-3.0.9/drivers/atm/idt77252.c linux-3.0.9/drivers/atm/idt77252.c
21463
21464 cell += ATM_CELL_PAYLOAD;
21465 }
21466 -@@ -1134,13 +1134,13 @@ dequeue_rx(struct idt77252_dev *card, st
21467 +@@ -1135,13 +1135,13 @@ dequeue_rx(struct idt77252_dev *card, st
21468 "(CDC: %08x)\n",
21469 card->name, len, rpp->len, readl(SAR_REG_CDC));
21470 recycle_rx_pool_skb(card, rpp);
21471 @@ -24100,7 +24094,7 @@ diff -urNp linux-3.0.9/drivers/atm/idt77252.c linux-3.0.9/drivers/atm/idt77252.c
21472 return;
21473 }
21474 if (skb_queue_len(&rpp->queue) > 1) {
21475 -@@ -1151,7 +1151,7 @@ dequeue_rx(struct idt77252_dev *card, st
21476 +@@ -1152,7 +1152,7 @@ dequeue_rx(struct idt77252_dev *card, st
21477 RXPRINTK("%s: Can't alloc RX skb.\n",
21478 card->name);
21479 recycle_rx_pool_skb(card, rpp);
21480 @@ -24109,7 +24103,7 @@ diff -urNp linux-3.0.9/drivers/atm/idt77252.c linux-3.0.9/drivers/atm/idt77252.c
21481 return;
21482 }
21483 if (!atm_charge(vcc, skb->truesize)) {
21484 -@@ -1170,7 +1170,7 @@ dequeue_rx(struct idt77252_dev *card, st
21485 +@@ -1171,7 +1171,7 @@ dequeue_rx(struct idt77252_dev *card, st
21486 __net_timestamp(skb);
21487
21488 vcc->push(vcc, skb);
21489 @@ -24118,7 +24112,7 @@ diff -urNp linux-3.0.9/drivers/atm/idt77252.c linux-3.0.9/drivers/atm/idt77252.c
21490
21491 return;
21492 }
21493 -@@ -1192,7 +1192,7 @@ dequeue_rx(struct idt77252_dev *card, st
21494 +@@ -1193,7 +1193,7 @@ dequeue_rx(struct idt77252_dev *card, st
21495 __net_timestamp(skb);
21496
21497 vcc->push(vcc, skb);
21498 @@ -24127,7 +24121,7 @@ diff -urNp linux-3.0.9/drivers/atm/idt77252.c linux-3.0.9/drivers/atm/idt77252.c
21499
21500 if (skb->truesize > SAR_FB_SIZE_3)
21501 add_rx_skb(card, 3, SAR_FB_SIZE_3, 1);
21502 -@@ -1303,14 +1303,14 @@ idt77252_rx_raw(struct idt77252_dev *car
21503 +@@ -1304,14 +1304,14 @@ idt77252_rx_raw(struct idt77252_dev *car
21504 if (vcc->qos.aal != ATM_AAL0) {
21505 RPRINTK("%s: raw cell for non AAL0 vc %u.%u\n",
21506 card->name, vpi, vci);
21507 @@ -24144,7 +24138,7 @@ diff -urNp linux-3.0.9/drivers/atm/idt77252.c linux-3.0.9/drivers/atm/idt77252.c
21508 goto drop;
21509 }
21510
21511 -@@ -1329,7 +1329,7 @@ idt77252_rx_raw(struct idt77252_dev *car
21512 +@@ -1330,7 +1330,7 @@ idt77252_rx_raw(struct idt77252_dev *car
21513 ATM_SKB(sb)->vcc = vcc;
21514 __net_timestamp(sb);
21515 vcc->push(vcc, sb);
21516 @@ -24153,7 +24147,7 @@ diff -urNp linux-3.0.9/drivers/atm/idt77252.c linux-3.0.9/drivers/atm/idt77252.c
21517
21518 drop:
21519 skb_pull(queue, 64);
21520 -@@ -1954,13 +1954,13 @@ idt77252_send_skb(struct atm_vcc *vcc, s
21521 +@@ -1955,13 +1955,13 @@ idt77252_send_skb(struct atm_vcc *vcc, s
21522
21523 if (vc == NULL) {
21524 printk("%s: NULL connection in send().\n", card->name);
21525 @@ -24169,7 +24163,7 @@ diff -urNp linux-3.0.9/drivers/atm/idt77252.c linux-3.0.9/drivers/atm/idt77252.c
21526 dev_kfree_skb(skb);
21527 return -EINVAL;
21528 }
21529 -@@ -1972,14 +1972,14 @@ idt77252_send_skb(struct atm_vcc *vcc, s
21530 +@@ -1973,14 +1973,14 @@ idt77252_send_skb(struct atm_vcc *vcc, s
21531 break;
21532 default:
21533 printk("%s: Unsupported AAL: %d\n", card->name, vcc->qos.aal);
21534 @@ -24186,7 +24180,7 @@ diff -urNp linux-3.0.9/drivers/atm/idt77252.c linux-3.0.9/drivers/atm/idt77252.c
21535 dev_kfree_skb(skb);
21536 return -EINVAL;
21537 }
21538 -@@ -1987,7 +1987,7 @@ idt77252_send_skb(struct atm_vcc *vcc, s
21539 +@@ -1988,7 +1988,7 @@ idt77252_send_skb(struct atm_vcc *vcc, s
21540
21541 err = queue_skb(card, vc, skb, oam);
21542 if (err) {
21543 @@ -24195,7 +24189,7 @@ diff -urNp linux-3.0.9/drivers/atm/idt77252.c linux-3.0.9/drivers/atm/idt77252.c
21544 dev_kfree_skb(skb);
21545 return err;
21546 }
21547 -@@ -2010,7 +2010,7 @@ idt77252_send_oam(struct atm_vcc *vcc, v
21548 +@@ -2011,7 +2011,7 @@ idt77252_send_oam(struct atm_vcc *vcc, v
21549 skb = dev_alloc_skb(64);
21550 if (!skb) {
21551 printk("%s: Out of memory in send_oam().\n", card->name);
21552 @@ -24204,10 +24198,10 @@ diff -urNp linux-3.0.9/drivers/atm/idt77252.c linux-3.0.9/drivers/atm/idt77252.c
21553 return -ENOMEM;
21554 }
21555 atomic_add(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc);
21556 -diff -urNp linux-3.0.9/drivers/atm/iphase.c linux-3.0.9/drivers/atm/iphase.c
21557 ---- linux-3.0.9/drivers/atm/iphase.c 2011-11-11 13:12:24.000000000 -0500
21558 -+++ linux-3.0.9/drivers/atm/iphase.c 2011-11-15 20:02:59.000000000 -0500
21559 -@@ -1120,7 +1120,7 @@ static int rx_pkt(struct atm_dev *dev)
21560 +diff -urNp linux-3.1.1/drivers/atm/iphase.c linux-3.1.1/drivers/atm/iphase.c
21561 +--- linux-3.1.1/drivers/atm/iphase.c 2011-11-11 15:19:27.000000000 -0500
21562 ++++ linux-3.1.1/drivers/atm/iphase.c 2011-11-16 18:39:07.000000000 -0500
21563 +@@ -1121,7 +1121,7 @@ static int rx_pkt(struct atm_dev *dev)
21564 status = (u_short) (buf_desc_ptr->desc_mode);
21565 if (status & (RX_CER | RX_PTE | RX_OFL))
21566 {
21567 @@ -24216,7 +24210,7 @@ diff -urNp linux-3.0.9/drivers/atm/iphase.c linux-3.0.9/drivers/atm/iphase.c
21568 IF_ERR(printk("IA: bad packet, dropping it");)
21569 if (status & RX_CER) {
21570 IF_ERR(printk(" cause: packet CRC error\n");)
21571 -@@ -1143,7 +1143,7 @@ static int rx_pkt(struct atm_dev *dev)
21572 +@@ -1144,7 +1144,7 @@ static int rx_pkt(struct atm_dev *dev)
21573 len = dma_addr - buf_addr;
21574 if (len > iadev->rx_buf_sz) {
21575 printk("Over %d bytes sdu received, dropped!!!\n", iadev->rx_buf_sz);
21576 @@ -24225,7 +24219,7 @@ diff -urNp linux-3.0.9/drivers/atm/iphase.c linux-3.0.9/drivers/atm/iphase.c
21577 goto out_free_desc;
21578 }
21579
21580 -@@ -1293,7 +1293,7 @@ static void rx_dle_intr(struct atm_dev *
21581 +@@ -1294,7 +1294,7 @@ static void rx_dle_intr(struct atm_dev *
21582 ia_vcc = INPH_IA_VCC(vcc);
21583 if (ia_vcc == NULL)
21584 {
21585 @@ -24234,7 +24228,7 @@ diff -urNp linux-3.0.9/drivers/atm/iphase.c linux-3.0.9/drivers/atm/iphase.c
21586 dev_kfree_skb_any(skb);
21587 atm_return(vcc, atm_guess_pdu2truesize(len));
21588 goto INCR_DLE;
21589 -@@ -1305,7 +1305,7 @@ static void rx_dle_intr(struct atm_dev *
21590 +@@ -1306,7 +1306,7 @@ static void rx_dle_intr(struct atm_dev *
21591 if ((length > iadev->rx_buf_sz) || (length >
21592 (skb->len - sizeof(struct cpcs_trailer))))
21593 {
21594 @@ -24243,7 +24237,7 @@ diff -urNp linux-3.0.9/drivers/atm/iphase.c linux-3.0.9/drivers/atm/iphase.c
21595 IF_ERR(printk("rx_dle_intr: Bad AAL5 trailer %d (skb len %d)",
21596 length, skb->len);)
21597 dev_kfree_skb_any(skb);
21598 -@@ -1321,7 +1321,7 @@ static void rx_dle_intr(struct atm_dev *
21599 +@@ -1322,7 +1322,7 @@ static void rx_dle_intr(struct atm_dev *
21600
21601 IF_RX(printk("rx_dle_intr: skb push");)
21602 vcc->push(vcc,skb);
21603 @@ -24252,7 +24246,7 @@ diff -urNp linux-3.0.9/drivers/atm/iphase.c linux-3.0.9/drivers/atm/iphase.c
21604 iadev->rx_pkt_cnt++;
21605 }
21606 INCR_DLE:
21607 -@@ -2801,15 +2801,15 @@ static int ia_ioctl(struct atm_dev *dev,
21608 +@@ -2802,15 +2802,15 @@ static int ia_ioctl(struct atm_dev *dev,
21609 {
21610 struct k_sonet_stats *stats;
21611 stats = &PRIV(_ia_dev[board])->sonet_stats;
21612 @@ -24277,7 +24271,7 @@ diff -urNp linux-3.0.9/drivers/atm/iphase.c linux-3.0.9/drivers/atm/iphase.c
21613 }
21614 ia_cmds.status = 0;
21615 break;
21616 -@@ -2914,7 +2914,7 @@ static int ia_pkt_tx (struct atm_vcc *vc
21617 +@@ -2915,7 +2915,7 @@ static int ia_pkt_tx (struct atm_vcc *vc
21618 if ((desc == 0) || (desc > iadev->num_tx_desc))
21619 {
21620 IF_ERR(printk(DEV_LABEL "invalid desc for send: %d\n", desc);)
21621 @@ -24286,7 +24280,7 @@ diff -urNp linux-3.0.9/drivers/atm/iphase.c linux-3.0.9/drivers/atm/iphase.c
21622 if (vcc->pop)
21623 vcc->pop(vcc, skb);
21624 else
21625 -@@ -3019,14 +3019,14 @@ static int ia_pkt_tx (struct atm_vcc *vc
21626 +@@ -3020,14 +3020,14 @@ static int ia_pkt_tx (struct atm_vcc *vc
21627 ATM_DESC(skb) = vcc->vci;
21628 skb_queue_tail(&iadev->tx_dma_q, skb);
21629
21630 @@ -24303,9 +24297,9 @@ diff -urNp linux-3.0.9/drivers/atm/iphase.c linux-3.0.9/drivers/atm/iphase.c
21631 if (iavcc->vc_desc_cnt > 10) {
21632 vcc->tx_quota = vcc->tx_quota * 3 / 4;
21633 printk("Tx1: vcc->tx_quota = %d \n", (u32)vcc->tx_quota );
21634 -diff -urNp linux-3.0.9/drivers/atm/lanai.c linux-3.0.9/drivers/atm/lanai.c
21635 ---- linux-3.0.9/drivers/atm/lanai.c 2011-11-11 13:12:24.000000000 -0500
21636 -+++ linux-3.0.9/drivers/atm/lanai.c 2011-11-15 20:02:59.000000000 -0500
21637 +diff -urNp linux-3.1.1/drivers/atm/lanai.c linux-3.1.1/drivers/atm/lanai.c
21638 +--- linux-3.1.1/drivers/atm/lanai.c 2011-11-11 15:19:27.000000000 -0500
21639 ++++ linux-3.1.1/drivers/atm/lanai.c 2011-11-16 18:39:07.000000000 -0500
21640 @@ -1303,7 +1303,7 @@ static void lanai_send_one_aal5(struct l
21641 vcc_tx_add_aal5_trailer(lvcc, skb->len, 0, 0);
21642 lanai_endtx(lanai, lvcc);
21643 @@ -24360,9 +24354,9 @@ diff -urNp linux-3.0.9/drivers/atm/lanai.c linux-3.0.9/drivers/atm/lanai.c
21644 lvcc->stats.x.aal5.service_rxcrc++;
21645 lvcc->rx.buf.ptr = &lvcc->rx.buf.start[SERVICE_GET_END(s) * 4];
21646 cardvcc_write(lvcc, SERVICE_GET_END(s), vcc_rxreadptr);
21647 -diff -urNp linux-3.0.9/drivers/atm/nicstar.c linux-3.0.9/drivers/atm/nicstar.c
21648 ---- linux-3.0.9/drivers/atm/nicstar.c 2011-11-11 13:12:24.000000000 -0500
21649 -+++ linux-3.0.9/drivers/atm/nicstar.c 2011-11-15 20:02:59.000000000 -0500
21650 +diff -urNp linux-3.1.1/drivers/atm/nicstar.c linux-3.1.1/drivers/atm/nicstar.c
21651 +--- linux-3.1.1/drivers/atm/nicstar.c 2011-11-11 15:19:27.000000000 -0500
21652 ++++ linux-3.1.1/drivers/atm/nicstar.c 2011-11-16 18:39:07.000000000 -0500
21653 @@ -1654,7 +1654,7 @@ static int ns_send(struct atm_vcc *vcc,
21654 if ((vc = (vc_map *) vcc->dev_data) == NULL) {
21655 printk("nicstar%d: vcc->dev_data == NULL on ns_send().\n",
21656 @@ -24564,9 +24558,9 @@ diff -urNp linux-3.0.9/drivers/atm/nicstar.c linux-3.0.9/drivers/atm/nicstar.c
21657 }
21658 }
21659
21660 -diff -urNp linux-3.0.9/drivers/atm/solos-pci.c linux-3.0.9/drivers/atm/solos-pci.c
21661 ---- linux-3.0.9/drivers/atm/solos-pci.c 2011-11-11 13:12:24.000000000 -0500
21662 -+++ linux-3.0.9/drivers/atm/solos-pci.c 2011-11-15 20:02:59.000000000 -0500
21663 +diff -urNp linux-3.1.1/drivers/atm/solos-pci.c linux-3.1.1/drivers/atm/solos-pci.c
21664 +--- linux-3.1.1/drivers/atm/solos-pci.c 2011-11-11 15:19:27.000000000 -0500
21665 ++++ linux-3.1.1/drivers/atm/solos-pci.c 2011-11-16 18:40:10.000000000 -0500
21666 @@ -714,7 +714,7 @@ void solos_bh(unsigned long card_arg)
21667 }
21668 atm_charge(vcc, skb->truesize);
21669 @@ -24594,9 +24588,9 @@ diff -urNp linux-3.0.9/drivers/atm/solos-pci.c linux-3.0.9/drivers/atm/solos-pci
21670 solos_pop(vcc, oldskb);
21671 } else
21672 dev_kfree_skb_irq(oldskb);
21673 -diff -urNp linux-3.0.9/drivers/atm/suni.c linux-3.0.9/drivers/atm/suni.c
21674 ---- linux-3.0.9/drivers/atm/suni.c 2011-11-11 13:12:24.000000000 -0500
21675 -+++ linux-3.0.9/drivers/atm/suni.c 2011-11-15 20:02:59.000000000 -0500
21676 +diff -urNp linux-3.1.1/drivers/atm/suni.c linux-3.1.1/drivers/atm/suni.c
21677 +--- linux-3.1.1/drivers/atm/suni.c 2011-11-11 15:19:27.000000000 -0500
21678 ++++ linux-3.1.1/drivers/atm/suni.c 2011-11-16 18:39:07.000000000 -0500
21679 @@ -50,8 +50,8 @@ static DEFINE_SPINLOCK(sunis_lock);
21680
21681
21682 @@ -24608,9 +24602,9 @@ diff -urNp linux-3.0.9/drivers/atm/suni.c linux-3.0.9/drivers/atm/suni.c
21683
21684
21685 static void suni_hz(unsigned long from_timer)
21686 -diff -urNp linux-3.0.9/drivers/atm/uPD98402.c linux-3.0.9/drivers/atm/uPD98402.c
21687 ---- linux-3.0.9/drivers/atm/uPD98402.c 2011-11-11 13:12:24.000000000 -0500
21688 -+++ linux-3.0.9/drivers/atm/uPD98402.c 2011-11-15 20:02:59.000000000 -0500
21689 +diff -urNp linux-3.1.1/drivers/atm/uPD98402.c linux-3.1.1/drivers/atm/uPD98402.c
21690 +--- linux-3.1.1/drivers/atm/uPD98402.c 2011-11-11 15:19:27.000000000 -0500
21691 ++++ linux-3.1.1/drivers/atm/uPD98402.c 2011-11-16 18:39:07.000000000 -0500
21692 @@ -42,7 +42,7 @@ static int fetch_stats(struct atm_dev *d
21693 struct sonet_stats tmp;
21694 int error = 0;
21695 @@ -24655,10 +24649,10 @@ diff -urNp linux-3.0.9/drivers/atm/uPD98402.c linux-3.0.9/drivers/atm/uPD98402.c
21696 return 0;
21697 }
21698
21699 -diff -urNp linux-3.0.9/drivers/atm/zatm.c linux-3.0.9/drivers/atm/zatm.c
21700 ---- linux-3.0.9/drivers/atm/zatm.c 2011-11-11 13:12:24.000000000 -0500
21701 -+++ linux-3.0.9/drivers/atm/zatm.c 2011-11-15 20:02:59.000000000 -0500
21702 -@@ -459,7 +459,7 @@ printk("dummy: 0x%08lx, 0x%08lx\n",dummy
21703 +diff -urNp linux-3.1.1/drivers/atm/zatm.c linux-3.1.1/drivers/atm/zatm.c
21704 +--- linux-3.1.1/drivers/atm/zatm.c 2011-11-11 15:19:27.000000000 -0500
21705 ++++ linux-3.1.1/drivers/atm/zatm.c 2011-11-16 18:39:07.000000000 -0500
21706 +@@ -460,7 +460,7 @@ printk("dummy: 0x%08lx, 0x%08lx\n",dummy
21707 }
21708 if (!size) {
21709 dev_kfree_skb_irq(skb);
21710 @@ -24667,7 +24661,7 @@ diff -urNp linux-3.0.9/drivers/atm/zatm.c linux-3.0.9/drivers/atm/zatm.c
21711 continue;
21712 }
21713 if (!atm_charge(vcc,skb->truesize)) {
21714 -@@ -469,7 +469,7 @@ printk("dummy: 0x%08lx, 0x%08lx\n",dummy
21715 +@@ -470,7 +470,7 @@ printk("dummy: 0x%08lx, 0x%08lx\n",dummy
21716 skb->len = size;
21717 ATM_SKB(skb)->vcc = vcc;
21718 vcc->push(vcc,skb);
21719 @@ -24676,7 +24670,7 @@ diff -urNp linux-3.0.9/drivers/atm/zatm.c linux-3.0.9/drivers/atm/zatm.c
21720 }
21721 zout(pos & 0xffff,MTA(mbx));
21722 #if 0 /* probably a stupid idea */
21723 -@@ -733,7 +733,7 @@ if (*ZATM_PRV_DSC(skb) != (uPD98401_TXPD
21724 +@@ -734,7 +734,7 @@ if (*ZATM_PRV_DSC(skb) != (uPD98401_TXPD
21725 skb_queue_head(&zatm_vcc->backlog,skb);
21726 break;
21727 }
21728 @@ -24685,11 +24679,11 @@ diff -urNp linux-3.0.9/drivers/atm/zatm.c linux-3.0.9/drivers/atm/zatm.c
21729 wake_up(&zatm_vcc->tx_wait);
21730 }
21731
21732 -diff -urNp linux-3.0.9/drivers/base/devtmpfs.c linux-3.0.9/drivers/base/devtmpfs.c
21733 ---- linux-3.0.9/drivers/base/devtmpfs.c 2011-11-11 13:12:24.000000000 -0500
21734 -+++ linux-3.0.9/drivers/base/devtmpfs.c 2011-11-15 20:02:59.000000000 -0500
21735 -@@ -357,7 +357,7 @@ int devtmpfs_mount(const char *mntdir)
21736 - if (!dev_mnt)
21737 +diff -urNp linux-3.1.1/drivers/base/devtmpfs.c linux-3.1.1/drivers/base/devtmpfs.c
21738 +--- linux-3.1.1/drivers/base/devtmpfs.c 2011-11-11 15:19:27.000000000 -0500
21739 ++++ linux-3.1.1/drivers/base/devtmpfs.c 2011-11-16 18:39:07.000000000 -0500
21740 +@@ -368,7 +368,7 @@ int devtmpfs_mount(const char *mntdir)
21741 + if (!thread)
21742 return 0;
21743
21744 - err = sys_mount("devtmpfs", (char *)mntdir, "devtmpfs", MS_SILENT, NULL);
21745 @@ -24697,9 +24691,9 @@ diff -urNp linux-3.0.9/drivers/base/devtmpfs.c linux-3.0.9/drivers/base/devtmpfs
21746 if (err)
21747 printk(KERN_INFO "devtmpfs: error mounting %i\n", err);
21748 else
21749 -diff -urNp linux-3.0.9/drivers/base/power/wakeup.c linux-3.0.9/drivers/base/power/wakeup.c
21750 ---- linux-3.0.9/drivers/base/power/wakeup.c 2011-11-11 13:12:24.000000000 -0500
21751 -+++ linux-3.0.9/drivers/base/power/wakeup.c 2011-11-15 20:02:59.000000000 -0500
21752 +diff -urNp linux-3.1.1/drivers/base/power/wakeup.c linux-3.1.1/drivers/base/power/wakeup.c
21753 +--- linux-3.1.1/drivers/base/power/wakeup.c 2011-11-11 15:19:27.000000000 -0500
21754 ++++ linux-3.1.1/drivers/base/power/wakeup.c 2011-11-16 18:39:07.000000000 -0500
21755 @@ -29,14 +29,14 @@ bool events_check_enabled;
21756 * They need to be modified together atomically, so it's better to use one
21757 * atomic variable to hold them both.
21758 @@ -24735,9 +24729,9 @@ diff -urNp linux-3.0.9/drivers/base/power/wakeup.c linux-3.0.9/drivers/base/powe
21759 }
21760
21761 /**
21762 -diff -urNp linux-3.0.9/drivers/block/cciss.c linux-3.0.9/drivers/block/cciss.c
21763 ---- linux-3.0.9/drivers/block/cciss.c 2011-11-11 13:12:24.000000000 -0500
21764 -+++ linux-3.0.9/drivers/block/cciss.c 2011-11-15 20:02:59.000000000 -0500
21765 +diff -urNp linux-3.1.1/drivers/block/cciss.c linux-3.1.1/drivers/block/cciss.c
21766 +--- linux-3.1.1/drivers/block/cciss.c 2011-11-11 15:19:27.000000000 -0500
21767 ++++ linux-3.1.1/drivers/block/cciss.c 2011-11-16 18:40:10.000000000 -0500
21768 @@ -1179,6 +1179,8 @@ static int cciss_ioctl32_passthru(struct
21769 int err;
21770 u32 cp;
21771 @@ -24861,9 +24855,9 @@ diff -urNp linux-3.0.9/drivers/block/cciss.c linux-3.0.9/drivers/block/cciss.c
21772 free_irq(h->intr[PERF_MODE_INT], h);
21773 }
21774
21775 -diff -urNp linux-3.0.9/drivers/block/cciss.h linux-3.0.9/drivers/block/cciss.h
21776 ---- linux-3.0.9/drivers/block/cciss.h 2011-11-11 13:12:24.000000000 -0500
21777 -+++ linux-3.0.9/drivers/block/cciss.h 2011-11-15 20:02:59.000000000 -0500
21778 +diff -urNp linux-3.1.1/drivers/block/cciss.h linux-3.1.1/drivers/block/cciss.h
21779 +--- linux-3.1.1/drivers/block/cciss.h 2011-11-11 15:19:27.000000000 -0500
21780 ++++ linux-3.1.1/drivers/block/cciss.h 2011-11-16 18:39:07.000000000 -0500
21781 @@ -100,7 +100,7 @@ struct ctlr_info
21782 /* information about each logical volume */
21783 drive_info_struct *drv[CISS_MAX_LUN];
21784 @@ -24873,9 +24867,9 @@ diff -urNp linux-3.0.9/drivers/block/cciss.h linux-3.0.9/drivers/block/cciss.h
21785
21786 /* queue and queue Info */
21787 struct list_head reqQ;
21788 -diff -urNp linux-3.0.9/drivers/block/cpqarray.c linux-3.0.9/drivers/block/cpqarray.c
21789 ---- linux-3.0.9/drivers/block/cpqarray.c 2011-11-11 13:12:24.000000000 -0500
21790 -+++ linux-3.0.9/drivers/block/cpqarray.c 2011-11-15 20:02:59.000000000 -0500
21791 +diff -urNp linux-3.1.1/drivers/block/cpqarray.c linux-3.1.1/drivers/block/cpqarray.c
21792 +--- linux-3.1.1/drivers/block/cpqarray.c 2011-11-11 15:19:27.000000000 -0500
21793 ++++ linux-3.1.1/drivers/block/cpqarray.c 2011-11-16 18:40:10.000000000 -0500
21794 @@ -404,7 +404,7 @@ static int __devinit cpqarray_register_c
21795 if (register_blkdev(COMPAQ_SMART2_MAJOR+i, hba[i]->devname)) {
21796 goto Enomem4;
21797 @@ -25001,9 +24995,9 @@ diff -urNp linux-3.0.9/drivers/block/cpqarray.c linux-3.0.9/drivers/block/cpqarr
21798 if (done == 0) {
21799 udelay(10); /* a short fixed delay */
21800 } else
21801 -diff -urNp linux-3.0.9/drivers/block/cpqarray.h linux-3.0.9/drivers/block/cpqarray.h
21802 ---- linux-3.0.9/drivers/block/cpqarray.h 2011-11-11 13:12:24.000000000 -0500
21803 -+++ linux-3.0.9/drivers/block/cpqarray.h 2011-11-15 20:02:59.000000000 -0500
21804 +diff -urNp linux-3.1.1/drivers/block/cpqarray.h linux-3.1.1/drivers/block/cpqarray.h
21805 +--- linux-3.1.1/drivers/block/cpqarray.h 2011-11-11 15:19:27.000000000 -0500
21806 ++++ linux-3.1.1/drivers/block/cpqarray.h 2011-11-16 18:39:07.000000000 -0500
21807 @@ -99,7 +99,7 @@ struct ctlr_info {
21808 drv_info_t drv[NWD];
21809 struct proc_dir_entry *proc;
21810 @@ -25013,9 +25007,9 @@ diff -urNp linux-3.0.9/drivers/block/cpqarray.h linux-3.0.9/drivers/block/cpqarr
21811
21812 cmdlist_t *reqQ;
21813 cmdlist_t *cmpQ;
21814 -diff -urNp linux-3.0.9/drivers/block/DAC960.c linux-3.0.9/drivers/block/DAC960.c
21815 ---- linux-3.0.9/drivers/block/DAC960.c 2011-11-11 13:12:24.000000000 -0500
21816 -+++ linux-3.0.9/drivers/block/DAC960.c 2011-11-15 20:02:59.000000000 -0500
21817 +diff -urNp linux-3.1.1/drivers/block/DAC960.c linux-3.1.1/drivers/block/DAC960.c
21818 +--- linux-3.1.1/drivers/block/DAC960.c 2011-11-11 15:19:27.000000000 -0500
21819 ++++ linux-3.1.1/drivers/block/DAC960.c 2011-11-16 18:40:10.000000000 -0500
21820 @@ -1980,6 +1980,8 @@ static bool DAC960_V1_ReadDeviceConfigur
21821 unsigned long flags;
21822 int Channel, TargetID;
21823 @@ -25025,9 +25019,9 @@ diff -urNp linux-3.0.9/drivers/block/DAC960.c linux-3.0.9/drivers/block/DAC960.c
21824 if (!init_dma_loaf(Controller->PCIDevice, &local_dma,
21825 DAC960_V1_MaxChannels*(sizeof(DAC960_V1_DCDB_T) +
21826 sizeof(DAC960_SCSI_Inquiry_T) +
21827 -diff -urNp linux-3.0.9/drivers/block/drbd/drbd_int.h linux-3.0.9/drivers/block/drbd/drbd_int.h
21828 ---- linux-3.0.9/drivers/block/drbd/drbd_int.h 2011-11-11 13:12:24.000000000 -0500
21829 -+++ linux-3.0.9/drivers/block/drbd/drbd_int.h 2011-11-15 20:02:59.000000000 -0500
21830 +diff -urNp linux-3.1.1/drivers/block/drbd/drbd_int.h linux-3.1.1/drivers/block/drbd/drbd_int.h
21831 +--- linux-3.1.1/drivers/block/drbd/drbd_int.h 2011-11-11 15:19:27.000000000 -0500
21832 ++++ linux-3.1.1/drivers/block/drbd/drbd_int.h 2011-11-16 18:39:07.000000000 -0500
21833 @@ -737,7 +737,7 @@ struct drbd_request;
21834 struct drbd_epoch {
21835 struct list_head list;
21836 @@ -25085,9 +25079,9 @@ diff -urNp linux-3.0.9/drivers/block/drbd/drbd_int.h linux-3.0.9/drivers/block/d
21837 }
21838
21839 void drbd_bump_write_ordering(struct drbd_conf *mdev, enum write_ordering_e wo);
21840 -diff -urNp linux-3.0.9/drivers/block/drbd/drbd_main.c linux-3.0.9/drivers/block/drbd/drbd_main.c
21841 ---- linux-3.0.9/drivers/block/drbd/drbd_main.c 2011-11-11 13:12:24.000000000 -0500
21842 -+++ linux-3.0.9/drivers/block/drbd/drbd_main.c 2011-11-15 20:02:59.000000000 -0500
21843 +diff -urNp linux-3.1.1/drivers/block/drbd/drbd_main.c linux-3.1.1/drivers/block/drbd/drbd_main.c
21844 +--- linux-3.1.1/drivers/block/drbd/drbd_main.c 2011-11-11 15:19:27.000000000 -0500
21845 ++++ linux-3.1.1/drivers/block/drbd/drbd_main.c 2011-11-16 18:39:07.000000000 -0500
21846 @@ -2397,7 +2397,7 @@ static int _drbd_send_ack(struct drbd_co
21847 p.sector = sector;
21848 p.block_id = block_id;
21849 @@ -25126,9 +25120,9 @@ diff -urNp linux-3.0.9/drivers/block/drbd/drbd_main.c linux-3.0.9/drivers/block/
21850 mdev->al_writ_cnt =
21851 mdev->bm_writ_cnt =
21852 mdev->read_cnt =
21853 -diff -urNp linux-3.0.9/drivers/block/drbd/drbd_nl.c linux-3.0.9/drivers/block/drbd/drbd_nl.c
21854 ---- linux-3.0.9/drivers/block/drbd/drbd_nl.c 2011-11-11 13:12:24.000000000 -0500
21855 -+++ linux-3.0.9/drivers/block/drbd/drbd_nl.c 2011-11-15 20:02:59.000000000 -0500
21856 +diff -urNp linux-3.1.1/drivers/block/drbd/drbd_nl.c linux-3.1.1/drivers/block/drbd/drbd_nl.c
21857 +--- linux-3.1.1/drivers/block/drbd/drbd_nl.c 2011-11-11 15:19:27.000000000 -0500
21858 ++++ linux-3.1.1/drivers/block/drbd/drbd_nl.c 2011-11-16 18:39:07.000000000 -0500
21859 @@ -2359,7 +2359,7 @@ static void drbd_connector_callback(stru
21860 module_put(THIS_MODULE);
21861 }
21862 @@ -25174,9 +25168,9 @@ diff -urNp linux-3.0.9/drivers/block/drbd/drbd_nl.c linux-3.0.9/drivers/block/dr
21863 cn_reply->ack = 0; /* not used here. */
21864 cn_reply->len = sizeof(struct drbd_nl_cfg_reply) +
21865 (int)((char *)tl - (char *)reply->tag_list);
21866 -diff -urNp linux-3.0.9/drivers/block/drbd/drbd_receiver.c linux-3.0.9/drivers/block/drbd/drbd_receiver.c
21867 ---- linux-3.0.9/drivers/block/drbd/drbd_receiver.c 2011-11-11 13:12:24.000000000 -0500
21868 -+++ linux-3.0.9/drivers/block/drbd/drbd_receiver.c 2011-11-15 20:02:59.000000000 -0500
21869 +diff -urNp linux-3.1.1/drivers/block/drbd/drbd_receiver.c linux-3.1.1/drivers/block/drbd/drbd_receiver.c
21870 +--- linux-3.1.1/drivers/block/drbd/drbd_receiver.c 2011-11-11 15:19:27.000000000 -0500
21871 ++++ linux-3.1.1/drivers/block/drbd/drbd_receiver.c 2011-11-16 18:39:07.000000000 -0500
21872 @@ -894,7 +894,7 @@ retry:
21873 sock->sk->sk_sndtimeo = mdev->net_conf->timeout*HZ/10;
21874 sock->sk->sk_rcvtimeo = MAX_SCHEDULE_TIMEOUT;
21875 @@ -25262,9 +25256,9 @@ diff -urNp linux-3.0.9/drivers/block/drbd/drbd_receiver.c linux-3.0.9/drivers/bl
21876 D_ASSERT(list_empty(&mdev->current_epoch->list));
21877 }
21878
21879 -diff -urNp linux-3.0.9/drivers/block/loop.c linux-3.0.9/drivers/block/loop.c
21880 ---- linux-3.0.9/drivers/block/loop.c 2011-11-11 13:12:24.000000000 -0500
21881 -+++ linux-3.0.9/drivers/block/loop.c 2011-11-15 20:02:59.000000000 -0500
21882 +diff -urNp linux-3.1.1/drivers/block/loop.c linux-3.1.1/drivers/block/loop.c
21883 +--- linux-3.1.1/drivers/block/loop.c 2011-11-11 15:19:27.000000000 -0500
21884 ++++ linux-3.1.1/drivers/block/loop.c 2011-11-16 18:39:07.000000000 -0500
21885 @@ -283,7 +283,7 @@ static int __do_lo_send_write(struct fil
21886 mm_segment_t old_fs = get_fs();
21887
21888 @@ -25274,9 +25268,9 @@ diff -urNp linux-3.0.9/drivers/block/loop.c linux-3.0.9/drivers/block/loop.c
21889 set_fs(old_fs);
21890 if (likely(bw == len))
21891 return 0;
21892 -diff -urNp linux-3.0.9/drivers/block/nbd.c linux-3.0.9/drivers/block/nbd.c
21893 ---- linux-3.0.9/drivers/block/nbd.c 2011-11-11 13:12:24.000000000 -0500
21894 -+++ linux-3.0.9/drivers/block/nbd.c 2011-11-15 20:02:59.000000000 -0500
21895 +diff -urNp linux-3.1.1/drivers/block/nbd.c linux-3.1.1/drivers/block/nbd.c
21896 +--- linux-3.1.1/drivers/block/nbd.c 2011-11-11 15:19:27.000000000 -0500
21897 ++++ linux-3.1.1/drivers/block/nbd.c 2011-11-16 18:40:10.000000000 -0500
21898 @@ -157,6 +157,8 @@ static int sock_xmit(struct nbd_device *
21899 struct kvec iov;
21900 sigset_t blocked, oldset;
21901 @@ -25295,9 +25289,9 @@ diff -urNp linux-3.0.9/drivers/block/nbd.c linux-3.0.9/drivers/block/nbd.c
21902 switch (cmd) {
21903 case NBD_DISCONNECT: {
21904 struct request sreq;
21905 -diff -urNp linux-3.0.9/drivers/char/agp/frontend.c linux-3.0.9/drivers/char/agp/frontend.c
21906 ---- linux-3.0.9/drivers/char/agp/frontend.c 2011-11-11 13:12:24.000000000 -0500
21907 -+++ linux-3.0.9/drivers/char/agp/frontend.c 2011-11-15 20:02:59.000000000 -0500
21908 +diff -urNp linux-3.1.1/drivers/char/agp/frontend.c linux-3.1.1/drivers/char/agp/frontend.c
21909 +--- linux-3.1.1/drivers/char/agp/frontend.c 2011-11-11 15:19:27.000000000 -0500
21910 ++++ linux-3.1.1/drivers/char/agp/frontend.c 2011-11-16 18:39:07.000000000 -0500
21911 @@ -817,7 +817,7 @@ static int agpioc_reserve_wrap(struct ag
21912 if (copy_from_user(&reserve, arg, sizeof(struct agp_region)))
21913 return -EFAULT;
21914 @@ -25307,9 +25301,9 @@ diff -urNp linux-3.0.9/drivers/char/agp/frontend.c linux-3.0.9/drivers/char/agp/
21915 return -EFAULT;
21916
21917 client = agp_find_client_by_pid(reserve.pid);
21918 -diff -urNp linux-3.0.9/drivers/char/briq_panel.c linux-3.0.9/drivers/char/briq_panel.c
21919 ---- linux-3.0.9/drivers/char/briq_panel.c 2011-11-11 13:12:24.000000000 -0500
21920 -+++ linux-3.0.9/drivers/char/briq_panel.c 2011-11-15 20:02:59.000000000 -0500
21921 +diff -urNp linux-3.1.1/drivers/char/briq_panel.c linux-3.1.1/drivers/char/briq_panel.c
21922 +--- linux-3.1.1/drivers/char/briq_panel.c 2011-11-11 15:19:27.000000000 -0500
21923 ++++ linux-3.1.1/drivers/char/briq_panel.c 2011-11-16 18:40:10.000000000 -0500
21924 @@ -9,6 +9,7 @@
21925 #include <linux/types.h>
21926 #include <linux/errno.h>
21927 @@ -25351,9 +25345,9 @@ diff -urNp linux-3.0.9/drivers/char/briq_panel.c linux-3.0.9/drivers/char/briq_p
21928
21929 return len;
21930 }
21931 -diff -urNp linux-3.0.9/drivers/char/genrtc.c linux-3.0.9/drivers/char/genrtc.c
21932 ---- linux-3.0.9/drivers/char/genrtc.c 2011-11-11 13:12:24.000000000 -0500
21933 -+++ linux-3.0.9/drivers/char/genrtc.c 2011-11-15 20:02:59.000000000 -0500
21934 +diff -urNp linux-3.1.1/drivers/char/genrtc.c linux-3.1.1/drivers/char/genrtc.c
21935 +--- linux-3.1.1/drivers/char/genrtc.c 2011-11-11 15:19:27.000000000 -0500
21936 ++++ linux-3.1.1/drivers/char/genrtc.c 2011-11-16 18:40:10.000000000 -0500
21937 @@ -273,6 +273,7 @@ static int gen_rtc_ioctl(struct file *fi
21938 switch (cmd) {
21939
21940 @@ -25362,9 +25356,9 @@ diff -urNp linux-3.0.9/drivers/char/genrtc.c linux-3.0.9/drivers/char/genrtc.c
21941 if (get_rtc_pll(&pll))
21942 return -EINVAL;
21943 else
21944 -diff -urNp linux-3.0.9/drivers/char/hpet.c linux-3.0.9/drivers/char/hpet.c
21945 ---- linux-3.0.9/drivers/char/hpet.c 2011-11-11 13:12:24.000000000 -0500
21946 -+++ linux-3.0.9/drivers/char/hpet.c 2011-11-15 20:02:59.000000000 -0500
21947 +diff -urNp linux-3.1.1/drivers/char/hpet.c linux-3.1.1/drivers/char/hpet.c
21948 +--- linux-3.1.1/drivers/char/hpet.c 2011-11-11 15:19:27.000000000 -0500
21949 ++++ linux-3.1.1/drivers/char/hpet.c 2011-11-16 18:39:07.000000000 -0500
21950 @@ -572,7 +572,7 @@ static inline unsigned long hpet_time_di
21951 }
21952
21953 @@ -25374,9 +25368,9 @@ diff -urNp linux-3.0.9/drivers/char/hpet.c linux-3.0.9/drivers/char/hpet.c
21954 struct hpet_info *info)
21955 {
21956 struct hpet_timer __iomem *timer;
21957 -diff -urNp linux-3.0.9/drivers/char/ipmi/ipmi_msghandler.c linux-3.0.9/drivers/char/ipmi/ipmi_msghandler.c
21958 ---- linux-3.0.9/drivers/char/ipmi/ipmi_msghandler.c 2011-11-11 13:12:24.000000000 -0500
21959 -+++ linux-3.0.9/drivers/char/ipmi/ipmi_msghandler.c 2011-11-15 20:02:59.000000000 -0500
21960 +diff -urNp linux-3.1.1/drivers/char/ipmi/ipmi_msghandler.c linux-3.1.1/drivers/char/ipmi/ipmi_msghandler.c
21961 +--- linux-3.1.1/drivers/char/ipmi/ipmi_msghandler.c 2011-11-11 15:19:27.000000000 -0500
21962 ++++ linux-3.1.1/drivers/char/ipmi/ipmi_msghandler.c 2011-11-16 18:40:10.000000000 -0500
21963 @@ -415,7 +415,7 @@ struct ipmi_smi {
21964 struct proc_dir_entry *proc_dir;
21965 char proc_dir_name[10];
21966 @@ -25416,9 +25410,9 @@ diff -urNp linux-3.0.9/drivers/char/ipmi/ipmi_msghandler.c linux-3.0.9/drivers/c
21967 si = (struct ipmi_system_interface_addr *) &addr;
21968 si->addr_type = IPMI_SYSTEM_INTERFACE_ADDR_TYPE;
21969 si->channel = IPMI_BMC_CHANNEL;
21970 -diff -urNp linux-3.0.9/drivers/char/ipmi/ipmi_si_intf.c linux-3.0.9/drivers/char/ipmi/ipmi_si_intf.c
21971 ---- linux-3.0.9/drivers/char/ipmi/ipmi_si_intf.c 2011-11-11 13:12:24.000000000 -0500
21972 -+++ linux-3.0.9/drivers/char/ipmi/ipmi_si_intf.c 2011-11-15 20:02:59.000000000 -0500
21973 +diff -urNp linux-3.1.1/drivers/char/ipmi/ipmi_si_intf.c linux-3.1.1/drivers/char/ipmi/ipmi_si_intf.c
21974 +--- linux-3.1.1/drivers/char/ipmi/ipmi_si_intf.c 2011-11-11 15:19:27.000000000 -0500
21975 ++++ linux-3.1.1/drivers/char/ipmi/ipmi_si_intf.c 2011-11-16 18:39:07.000000000 -0500
21976 @@ -277,7 +277,7 @@ struct smi_info {
21977 unsigned char slave_addr;
21978
21979 @@ -25449,9 +25443,9 @@ diff -urNp linux-3.0.9/drivers/char/ipmi/ipmi_si_intf.c linux-3.0.9/drivers/char
21980
21981 new_smi->interrupt_disabled = 1;
21982 atomic_set(&new_smi->stop_operation, 0);
21983 -diff -urNp linux-3.0.9/drivers/char/Kconfig linux-3.0.9/drivers/char/Kconfig
21984 ---- linux-3.0.9/drivers/char/Kconfig 2011-11-11 13:12:24.000000000 -0500
21985 -+++ linux-3.0.9/drivers/char/Kconfig 2011-11-15 20:02:59.000000000 -0500
21986 +diff -urNp linux-3.1.1/drivers/char/Kconfig linux-3.1.1/drivers/char/Kconfig
21987 +--- linux-3.1.1/drivers/char/Kconfig 2011-11-11 15:19:27.000000000 -0500
21988 ++++ linux-3.1.1/drivers/char/Kconfig 2011-11-16 18:40:10.000000000 -0500
21989 @@ -8,7 +8,8 @@ source "drivers/tty/Kconfig"
21990
21991 config DEVKMEM
21992 @@ -25470,9 +25464,9 @@ diff -urNp linux-3.0.9/drivers/char/Kconfig linux-3.0.9/drivers/char/Kconfig
21993 default y
21994
21995 source "drivers/s390/char/Kconfig"
21996 -diff -urNp linux-3.0.9/drivers/char/mbcs.c linux-3.0.9/drivers/char/mbcs.c
21997 ---- linux-3.0.9/drivers/char/mbcs.c 2011-11-11 13:12:24.000000000 -0500
21998 -+++ linux-3.0.9/drivers/char/mbcs.c 2011-11-15 20:02:59.000000000 -0500
21999 +diff -urNp linux-3.1.1/drivers/char/mbcs.c linux-3.1.1/drivers/char/mbcs.c
22000 +--- linux-3.1.1/drivers/char/mbcs.c 2011-11-11 15:19:27.000000000 -0500
22001 ++++ linux-3.1.1/drivers/char/mbcs.c 2011-11-16 18:39:07.000000000 -0500
22002 @@ -800,7 +800,7 @@ static int mbcs_remove(struct cx_dev *de
22003 return 0;
22004 }
22005 @@ -25482,9 +25476,9 @@ diff -urNp linux-3.0.9/drivers/char/mbcs.c linux-3.0.9/drivers/char/mbcs.c
22006 {
22007 .part_num = MBCS_PART_NUM,
22008 .mfg_num = MBCS_MFG_NUM,
22009 -diff -urNp linux-3.0.9/drivers/char/mem.c linux-3.0.9/drivers/char/mem.c
22010 ---- linux-3.0.9/drivers/char/mem.c 2011-11-11 13:12:24.000000000 -0500
22011 -+++ linux-3.0.9/drivers/char/mem.c 2011-11-15 20:02:59.000000000 -0500
22012 +diff -urNp linux-3.1.1/drivers/char/mem.c linux-3.1.1/drivers/char/mem.c
22013 +--- linux-3.1.1/drivers/char/mem.c 2011-11-11 15:19:27.000000000 -0500
22014 ++++ linux-3.1.1/drivers/char/mem.c 2011-11-16 18:40:10.000000000 -0500
22015 @@ -18,6 +18,7 @@
22016 #include <linux/raw.h>
22017 #include <linux/tty.h>
22018 @@ -25617,10 +25611,10 @@ diff -urNp linux-3.0.9/drivers/char/mem.c linux-3.0.9/drivers/char/mem.c
22019 };
22020
22021 static int memory_open(struct inode *inode, struct file *filp)
22022 -diff -urNp linux-3.0.9/drivers/char/nvram.c linux-3.0.9/drivers/char/nvram.c
22023 ---- linux-3.0.9/drivers/char/nvram.c 2011-11-11 13:12:24.000000000 -0500
22024 -+++ linux-3.0.9/drivers/char/nvram.c 2011-11-15 20:02:59.000000000 -0500
22025 -@@ -246,7 +246,7 @@ static ssize_t nvram_read(struct file *f
22026 +diff -urNp linux-3.1.1/drivers/char/nvram.c linux-3.1.1/drivers/char/nvram.c
22027 +--- linux-3.1.1/drivers/char/nvram.c 2011-11-11 15:19:27.000000000 -0500
22028 ++++ linux-3.1.1/drivers/char/nvram.c 2011-11-16 18:39:07.000000000 -0500
22029 +@@ -248,7 +248,7 @@ static ssize_t nvram_read(struct file *f
22030
22031 spin_unlock_irq(&rtc_lock);
22032
22033 @@ -25629,9 +25623,9 @@ diff -urNp linux-3.0.9/drivers/char/nvram.c linux-3.0.9/drivers/char/nvram.c
22034 return -EFAULT;
22035
22036 *ppos = i;
22037 -diff -urNp linux-3.0.9/drivers/char/random.c linux-3.0.9/drivers/char/random.c
22038 ---- linux-3.0.9/drivers/char/random.c 2011-11-11 13:12:24.000000000 -0500
22039 -+++ linux-3.0.9/drivers/char/random.c 2011-11-15 20:02:59.000000000 -0500
22040 +diff -urNp linux-3.1.1/drivers/char/random.c linux-3.1.1/drivers/char/random.c
22041 +--- linux-3.1.1/drivers/char/random.c 2011-11-11 15:19:27.000000000 -0500
22042 ++++ linux-3.1.1/drivers/char/random.c 2011-11-16 18:40:10.000000000 -0500
22043 @@ -261,8 +261,13 @@
22044 /*
22045 * Configuration information
22046 @@ -25682,9 +25676,9 @@ diff -urNp linux-3.0.9/drivers/char/random.c linux-3.0.9/drivers/char/random.c
22047 static int max_write_thresh = INPUT_POOL_WORDS * 32;
22048 static char sysctl_bootid[16];
22049
22050 -diff -urNp linux-3.0.9/drivers/char/sonypi.c linux-3.0.9/drivers/char/sonypi.c
22051 ---- linux-3.0.9/drivers/char/sonypi.c 2011-11-11 13:12:24.000000000 -0500
22052 -+++ linux-3.0.9/drivers/char/sonypi.c 2011-11-15 20:02:59.000000000 -0500
22053 +diff -urNp linux-3.1.1/drivers/char/sonypi.c linux-3.1.1/drivers/char/sonypi.c
22054 +--- linux-3.1.1/drivers/char/sonypi.c 2011-11-11 15:19:27.000000000 -0500
22055 ++++ linux-3.1.1/drivers/char/sonypi.c 2011-11-16 18:39:07.000000000 -0500
22056 @@ -55,6 +55,7 @@
22057 #include <asm/uaccess.h>
22058 #include <asm/io.h>
22059 @@ -25723,9 +25717,9 @@ diff -urNp linux-3.0.9/drivers/char/sonypi.c linux-3.0.9/drivers/char/sonypi.c
22060 mutex_unlock(&sonypi_device.lock);
22061
22062 return 0;
22063 -diff -urNp linux-3.0.9/drivers/char/tpm/tpm_bios.c linux-3.0.9/drivers/char/tpm/tpm_bios.c
22064 ---- linux-3.0.9/drivers/char/tpm/tpm_bios.c 2011-11-11 13:12:24.000000000 -0500
22065 -+++ linux-3.0.9/drivers/char/tpm/tpm_bios.c 2011-11-15 20:02:59.000000000 -0500
22066 +diff -urNp linux-3.1.1/drivers/char/tpm/tpm_bios.c linux-3.1.1/drivers/char/tpm/tpm_bios.c
22067 +--- linux-3.1.1/drivers/char/tpm/tpm_bios.c 2011-11-11 15:19:27.000000000 -0500
22068 ++++ linux-3.1.1/drivers/char/tpm/tpm_bios.c 2011-11-16 18:39:07.000000000 -0500
22069 @@ -173,7 +173,7 @@ static void *tpm_bios_measurements_start
22070 event = addr;
22071
22072 @@ -25769,9 +25763,9 @@ diff -urNp linux-3.0.9/drivers/char/tpm/tpm_bios.c linux-3.0.9/drivers/char/tpm/
22073
22074 acpi_os_unmap_memory(virt, len);
22075 return 0;
22076 -diff -urNp linux-3.0.9/drivers/char/tpm/tpm.c linux-3.0.9/drivers/char/tpm/tpm.c
22077 ---- linux-3.0.9/drivers/char/tpm/tpm.c 2011-11-11 13:12:24.000000000 -0500
22078 -+++ linux-3.0.9/drivers/char/tpm/tpm.c 2011-11-15 20:02:59.000000000 -0500
22079 +diff -urNp linux-3.1.1/drivers/char/tpm/tpm.c linux-3.1.1/drivers/char/tpm/tpm.c
22080 +--- linux-3.1.1/drivers/char/tpm/tpm.c 2011-11-11 15:19:27.000000000 -0500
22081 ++++ linux-3.1.1/drivers/char/tpm/tpm.c 2011-11-16 18:40:10.000000000 -0500
22082 @@ -414,7 +414,7 @@ static ssize_t tpm_transmit(struct tpm_c
22083 chip->vendor.req_complete_val)
22084 goto out_recv;
22085 @@ -25781,7 +25775,7 @@ diff -urNp linux-3.0.9/drivers/char/tpm/tpm.c linux-3.0.9/drivers/char/tpm/tpm.c
22086 dev_err(chip->dev, "Operation Canceled\n");
22087 rc = -ECANCELED;
22088 goto out;
22089 -@@ -847,6 +847,8 @@ ssize_t tpm_show_pubek(struct device *de
22090 +@@ -862,6 +862,8 @@ ssize_t tpm_show_pubek(struct device *de
22091
22092 struct tpm_chip *chip = dev_get_drvdata(dev);
22093
22094 @@ -25790,9 +25784,9 @@ diff -urNp linux-3.0.9/drivers/char/tpm/tpm.c linux-3.0.9/drivers/char/tpm/tpm.c
22095 tpm_cmd.header.in = tpm_readpubek_header;
22096 err = transmit_cmd(chip, &tpm_cmd, READ_PUBEK_RESULT_SIZE,
22097 "attempting to read the PUBEK");
22098 -diff -urNp linux-3.0.9/drivers/char/virtio_console.c linux-3.0.9/drivers/char/virtio_console.c
22099 ---- linux-3.0.9/drivers/char/virtio_console.c 2011-11-11 13:12:24.000000000 -0500
22100 -+++ linux-3.0.9/drivers/char/virtio_console.c 2011-11-15 20:02:59.000000000 -0500
22101 +diff -urNp linux-3.1.1/drivers/char/virtio_console.c linux-3.1.1/drivers/char/virtio_console.c
22102 +--- linux-3.1.1/drivers/char/virtio_console.c 2011-11-11 15:19:27.000000000 -0500
22103 ++++ linux-3.1.1/drivers/char/virtio_console.c 2011-11-16 18:39:07.000000000 -0500
22104 @@ -555,7 +555,7 @@ static ssize_t fill_readbuf(struct port
22105 if (to_user) {
22106 ssize_t ret;
22107 @@ -25811,9 +25805,9 @@ diff -urNp linux-3.0.9/drivers/char/virtio_console.c linux-3.0.9/drivers/char/vi
22108 }
22109
22110 static ssize_t port_fops_write(struct file *filp, const char __user *ubuf,
22111 -diff -urNp linux-3.0.9/drivers/crypto/hifn_795x.c linux-3.0.9/drivers/crypto/hifn_795x.c
22112 ---- linux-3.0.9/drivers/crypto/hifn_795x.c 2011-11-11 13:12:24.000000000 -0500
22113 -+++ linux-3.0.9/drivers/crypto/hifn_795x.c 2011-11-15 20:02:59.000000000 -0500
22114 +diff -urNp linux-3.1.1/drivers/crypto/hifn_795x.c linux-3.1.1/drivers/crypto/hifn_795x.c
22115 +--- linux-3.1.1/drivers/crypto/hifn_795x.c 2011-11-11 15:19:27.000000000 -0500
22116 ++++ linux-3.1.1/drivers/crypto/hifn_795x.c 2011-11-16 18:40:10.000000000 -0500
22117 @@ -1655,6 +1655,8 @@ static int hifn_test(struct hifn_device
22118 0xCA, 0x34, 0x2B, 0x2E};
22119 struct scatterlist sg;
22120 @@ -25823,9 +25817,9 @@ diff -urNp linux-3.0.9/drivers/crypto/hifn_795x.c linux-3.0.9/drivers/crypto/hif
22121 memset(src, 0, sizeof(src));
22122 memset(ctx.key, 0, sizeof(ctx.key));
22123
22124 -diff -urNp linux-3.0.9/drivers/crypto/padlock-aes.c linux-3.0.9/drivers/crypto/padlock-aes.c
22125 ---- linux-3.0.9/drivers/crypto/padlock-aes.c 2011-11-11 13:12:24.000000000 -0500
22126 -+++ linux-3.0.9/drivers/crypto/padlock-aes.c 2011-11-15 20:02:59.000000000 -0500
22127 +diff -urNp linux-3.1.1/drivers/crypto/padlock-aes.c linux-3.1.1/drivers/crypto/padlock-aes.c
22128 +--- linux-3.1.1/drivers/crypto/padlock-aes.c 2011-11-11 15:19:27.000000000 -0500
22129 ++++ linux-3.1.1/drivers/crypto/padlock-aes.c 2011-11-16 18:40:10.000000000 -0500
22130 @@ -109,6 +109,8 @@ static int aes_set_key(struct crypto_tfm
22131 struct crypto_aes_ctx gen_aes;
22132 int cpu;
22133 @@ -25835,27 +25829,9 @@ diff -urNp linux-3.0.9/drivers/crypto/padlock-aes.c linux-3.0.9/drivers/crypto/p
22134 if (key_len % 8) {
22135 *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
22136 return -EINVAL;
22137 -diff -urNp linux-3.0.9/drivers/dma/ioat/dma_v3.c linux-3.0.9/drivers/dma/ioat/dma_v3.c
22138 ---- linux-3.0.9/drivers/dma/ioat/dma_v3.c 2011-11-11 13:12:24.000000000 -0500
22139 -+++ linux-3.0.9/drivers/dma/ioat/dma_v3.c 2011-11-15 20:02:59.000000000 -0500
22140 -@@ -73,10 +73,10 @@
22141 - /* provide a lookup table for setting the source address in the base or
22142 - * extended descriptor of an xor or pq descriptor
22143 - */
22144 --static const u8 xor_idx_to_desc __read_mostly = 0xd0;
22145 --static const u8 xor_idx_to_field[] __read_mostly = { 1, 4, 5, 6, 7, 0, 1, 2 };
22146 --static const u8 pq_idx_to_desc __read_mostly = 0xf8;
22147 --static const u8 pq_idx_to_field[] __read_mostly = { 1, 4, 5, 0, 1, 2, 4, 5 };
22148 -+static const u8 xor_idx_to_desc = 0xd0;
22149 -+static const u8 xor_idx_to_field[] = { 1, 4, 5, 6, 7, 0, 1, 2 };
22150 -+static const u8 pq_idx_to_desc = 0xf8;
22151 -+static const u8 pq_idx_to_field[] = { 1, 4, 5, 0, 1, 2, 4, 5 };
22152 -
22153 - static dma_addr_t xor_get_src(struct ioat_raw_descriptor *descs[2], int idx)
22154 - {
22155 -diff -urNp linux-3.0.9/drivers/edac/amd64_edac.c linux-3.0.9/drivers/edac/amd64_edac.c
22156 ---- linux-3.0.9/drivers/edac/amd64_edac.c 2011-11-11 13:12:24.000000000 -0500
22157 -+++ linux-3.0.9/drivers/edac/amd64_edac.c 2011-11-15 20:02:59.000000000 -0500
22158 +diff -urNp linux-3.1.1/drivers/edac/amd64_edac.c linux-3.1.1/drivers/edac/amd64_edac.c
22159 +--- linux-3.1.1/drivers/edac/amd64_edac.c 2011-11-11 15:19:27.000000000 -0500
22160 ++++ linux-3.1.1/drivers/edac/amd64_edac.c 2011-11-16 18:39:07.000000000 -0500
22161 @@ -2670,7 +2670,7 @@ static void __devexit amd64_remove_one_i
22162 * PCI core identifies what devices are on a system during boot, and then
22163 * inquiry this table to see if this driver is for a given device found.
22164 @@ -25865,9 +25841,9 @@ diff -urNp linux-3.0.9/drivers/edac/amd64_edac.c linux-3.0.9/drivers/edac/amd64_
22165 {
22166 .vendor = PCI_VENDOR_ID_AMD,
22167 .device = PCI_DEVICE_ID_AMD_K8_NB_MEMCTL,
22168 -diff -urNp linux-3.0.9/drivers/edac/amd76x_edac.c linux-3.0.9/drivers/edac/amd76x_edac.c
22169 ---- linux-3.0.9/drivers/edac/amd76x_edac.c 2011-11-11 13:12:24.000000000 -0500
22170 -+++ linux-3.0.9/drivers/edac/amd76x_edac.c 2011-11-15 20:02:59.000000000 -0500
22171 +diff -urNp linux-3.1.1/drivers/edac/amd76x_edac.c linux-3.1.1/drivers/edac/amd76x_edac.c
22172 +--- linux-3.1.1/drivers/edac/amd76x_edac.c 2011-11-11 15:19:27.000000000 -0500
22173 ++++ linux-3.1.1/drivers/edac/amd76x_edac.c 2011-11-16 18:39:07.000000000 -0500
22174 @@ -321,7 +321,7 @@ static void __devexit amd76x_remove_one(
22175 edac_mc_free(mci);
22176 }
22177 @@ -25877,9 +25853,9 @@ diff -urNp linux-3.0.9/drivers/edac/amd76x_edac.c linux-3.0.9/drivers/edac/amd76
22178 {
22179 PCI_VEND_DEV(AMD, FE_GATE_700C), PCI_ANY_ID, PCI_ANY_ID, 0, 0,
22180 AMD762},
22181 -diff -urNp linux-3.0.9/drivers/edac/e752x_edac.c linux-3.0.9/drivers/edac/e752x_edac.c
22182 ---- linux-3.0.9/drivers/edac/e752x_edac.c 2011-11-11 13:12:24.000000000 -0500
22183 -+++ linux-3.0.9/drivers/edac/e752x_edac.c 2011-11-15 20:02:59.000000000 -0500
22184 +diff -urNp linux-3.1.1/drivers/edac/e752x_edac.c linux-3.1.1/drivers/edac/e752x_edac.c
22185 +--- linux-3.1.1/drivers/edac/e752x_edac.c 2011-11-11 15:19:27.000000000 -0500
22186 ++++ linux-3.1.1/drivers/edac/e752x_edac.c 2011-11-16 18:39:07.000000000 -0500
22187 @@ -1380,7 +1380,7 @@ static void __devexit e752x_remove_one(s
22188 edac_mc_free(mci);
22189 }
22190 @@ -25889,9 +25865,9 @@ diff -urNp linux-3.0.9/drivers/edac/e752x_edac.c linux-3.0.9/drivers/edac/e752x_
22191 {
22192 PCI_VEND_DEV(INTEL, 7520_0), PCI_ANY_ID, PCI_ANY_ID, 0, 0,
22193 E7520},
22194 -diff -urNp linux-3.0.9/drivers/edac/e7xxx_edac.c linux-3.0.9/drivers/edac/e7xxx_edac.c
22195 ---- linux-3.0.9/drivers/edac/e7xxx_edac.c 2011-11-11 13:12:24.000000000 -0500
22196 -+++ linux-3.0.9/drivers/edac/e7xxx_edac.c 2011-11-15 20:02:59.000000000 -0500
22197 +diff -urNp linux-3.1.1/drivers/edac/e7xxx_edac.c linux-3.1.1/drivers/edac/e7xxx_edac.c
22198 +--- linux-3.1.1/drivers/edac/e7xxx_edac.c 2011-11-11 15:19:27.000000000 -0500
22199 ++++ linux-3.1.1/drivers/edac/e7xxx_edac.c 2011-11-16 18:39:07.000000000 -0500
22200 @@ -525,7 +525,7 @@ static void __devexit e7xxx_remove_one(s
22201 edac_mc_free(mci);
22202 }
22203 @@ -25901,9 +25877,9 @@ diff -urNp linux-3.0.9/drivers/edac/e7xxx_edac.c linux-3.0.9/drivers/edac/e7xxx_
22204 {
22205 PCI_VEND_DEV(INTEL, 7205_0), PCI_ANY_ID, PCI_ANY_ID, 0, 0,
22206 E7205},
22207 -diff -urNp linux-3.0.9/drivers/edac/edac_pci_sysfs.c linux-3.0.9/drivers/edac/edac_pci_sysfs.c
22208 ---- linux-3.0.9/drivers/edac/edac_pci_sysfs.c 2011-11-11 13:12:24.000000000 -0500
22209 -+++ linux-3.0.9/drivers/edac/edac_pci_sysfs.c 2011-11-15 20:02:59.000000000 -0500
22210 +diff -urNp linux-3.1.1/drivers/edac/edac_pci_sysfs.c linux-3.1.1/drivers/edac/edac_pci_sysfs.c
22211 +--- linux-3.1.1/drivers/edac/edac_pci_sysfs.c 2011-11-11 15:19:27.000000000 -0500
22212 ++++ linux-3.1.1/drivers/edac/edac_pci_sysfs.c 2011-11-16 18:39:07.000000000 -0500
22213 @@ -26,8 +26,8 @@ static int edac_pci_log_pe = 1; /* log
22214 static int edac_pci_log_npe = 1; /* log PCI non-parity error errors */
22215 static int edac_pci_poll_msec = 1000; /* one second workq period */
22216 @@ -25987,9 +25963,9 @@ diff -urNp linux-3.0.9/drivers/edac/edac_pci_sysfs.c linux-3.0.9/drivers/edac/ed
22217 panic("EDAC: PCI Parity Error");
22218 }
22219 }
22220 -diff -urNp linux-3.0.9/drivers/edac/i3000_edac.c linux-3.0.9/drivers/edac/i3000_edac.c
22221 ---- linux-3.0.9/drivers/edac/i3000_edac.c 2011-11-11 13:12:24.000000000 -0500
22222 -+++ linux-3.0.9/drivers/edac/i3000_edac.c 2011-11-15 20:02:59.000000000 -0500
22223 +diff -urNp linux-3.1.1/drivers/edac/i3000_edac.c linux-3.1.1/drivers/edac/i3000_edac.c
22224 +--- linux-3.1.1/drivers/edac/i3000_edac.c 2011-11-11 15:19:27.000000000 -0500
22225 ++++ linux-3.1.1/drivers/edac/i3000_edac.c 2011-11-16 18:39:07.000000000 -0500
22226 @@ -470,7 +470,7 @@ static void __devexit i3000_remove_one(s
22227 edac_mc_free(mci);
22228 }
22229 @@ -25999,9 +25975,9 @@ diff -urNp linux-3.0.9/drivers/edac/i3000_edac.c linux-3.0.9/drivers/edac/i3000_
22230 {
22231 PCI_VEND_DEV(INTEL, 3000_HB), PCI_ANY_ID, PCI_ANY_ID, 0, 0,
22232 I3000},
22233 -diff -urNp linux-3.0.9/drivers/edac/i3200_edac.c linux-3.0.9/drivers/edac/i3200_edac.c
22234 ---- linux-3.0.9/drivers/edac/i3200_edac.c 2011-11-11 13:12:24.000000000 -0500
22235 -+++ linux-3.0.9/drivers/edac/i3200_edac.c 2011-11-15 20:02:59.000000000 -0500
22236 +diff -urNp linux-3.1.1/drivers/edac/i3200_edac.c linux-3.1.1/drivers/edac/i3200_edac.c
22237 +--- linux-3.1.1/drivers/edac/i3200_edac.c 2011-11-11 15:19:27.000000000 -0500
22238 ++++ linux-3.1.1/drivers/edac/i3200_edac.c 2011-11-16 18:39:07.000000000 -0500
22239 @@ -456,7 +456,7 @@ static void __devexit i3200_remove_one(s
22240 edac_mc_free(mci);
22241 }
22242 @@ -26011,9 +25987,9 @@ diff -urNp linux-3.0.9/drivers/edac/i3200_edac.c linux-3.0.9/drivers/edac/i3200_
22243 {
22244 PCI_VEND_DEV(INTEL, 3200_HB), PCI_ANY_ID, PCI_ANY_ID, 0, 0,
22245 I3200},
22246 -diff -urNp linux-3.0.9/drivers/edac/i5000_edac.c linux-3.0.9/drivers/edac/i5000_edac.c
22247 ---- linux-3.0.9/drivers/edac/i5000_edac.c 2011-11-11 13:12:24.000000000 -0500
22248 -+++ linux-3.0.9/drivers/edac/i5000_edac.c 2011-11-15 20:02:59.000000000 -0500
22249 +diff -urNp linux-3.1.1/drivers/edac/i5000_edac.c linux-3.1.1/drivers/edac/i5000_edac.c
22250 +--- linux-3.1.1/drivers/edac/i5000_edac.c 2011-11-11 15:19:27.000000000 -0500
22251 ++++ linux-3.1.1/drivers/edac/i5000_edac.c 2011-11-16 18:39:07.000000000 -0500
22252 @@ -1516,7 +1516,7 @@ static void __devexit i5000_remove_one(s
22253 *
22254 * The "E500P" device is the first device supported.
22255 @@ -26023,9 +25999,9 @@ diff -urNp linux-3.0.9/drivers/edac/i5000_edac.c linux-3.0.9/drivers/edac/i5000_
22256 {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_I5000_DEV16),
22257 .driver_data = I5000P},
22258
22259 -diff -urNp linux-3.0.9/drivers/edac/i5100_edac.c linux-3.0.9/drivers/edac/i5100_edac.c
22260 ---- linux-3.0.9/drivers/edac/i5100_edac.c 2011-11-11 13:12:24.000000000 -0500
22261 -+++ linux-3.0.9/drivers/edac/i5100_edac.c 2011-11-15 20:02:59.000000000 -0500
22262 +diff -urNp linux-3.1.1/drivers/edac/i5100_edac.c linux-3.1.1/drivers/edac/i5100_edac.c
22263 +--- linux-3.1.1/drivers/edac/i5100_edac.c 2011-11-11 15:19:27.000000000 -0500
22264 ++++ linux-3.1.1/drivers/edac/i5100_edac.c 2011-11-16 18:39:07.000000000 -0500
22265 @@ -1051,7 +1051,7 @@ static void __devexit i5100_remove_one(s
22266 edac_mc_free(mci);
22267 }
22268 @@ -26035,9 +26011,9 @@ diff -urNp linux-3.0.9/drivers/edac/i5100_edac.c linux-3.0.9/drivers/edac/i5100_
22269 /* Device 16, Function 0, Channel 0 Memory Map, Error Flag/Mask, ... */
22270 { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_5100_16) },
22271 { 0, }
22272 -diff -urNp linux-3.0.9/drivers/edac/i5400_edac.c linux-3.0.9/drivers/edac/i5400_edac.c
22273 ---- linux-3.0.9/drivers/edac/i5400_edac.c 2011-11-11 13:12:24.000000000 -0500
22274 -+++ linux-3.0.9/drivers/edac/i5400_edac.c 2011-11-15 20:02:59.000000000 -0500
22275 +diff -urNp linux-3.1.1/drivers/edac/i5400_edac.c linux-3.1.1/drivers/edac/i5400_edac.c
22276 +--- linux-3.1.1/drivers/edac/i5400_edac.c 2011-11-11 15:19:27.000000000 -0500
22277 ++++ linux-3.1.1/drivers/edac/i5400_edac.c 2011-11-16 18:39:07.000000000 -0500
22278 @@ -1383,7 +1383,7 @@ static void __devexit i5400_remove_one(s
22279 *
22280 * The "E500P" device is the first device supported.
22281 @@ -26047,9 +26023,9 @@ diff -urNp linux-3.0.9/drivers/edac/i5400_edac.c linux-3.0.9/drivers/edac/i5400_
22282 {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_5400_ERR)},
22283 {0,} /* 0 terminated list. */
22284 };
22285 -diff -urNp linux-3.0.9/drivers/edac/i7300_edac.c linux-3.0.9/drivers/edac/i7300_edac.c
22286 ---- linux-3.0.9/drivers/edac/i7300_edac.c 2011-11-11 13:12:24.000000000 -0500
22287 -+++ linux-3.0.9/drivers/edac/i7300_edac.c 2011-11-15 20:02:59.000000000 -0500
22288 +diff -urNp linux-3.1.1/drivers/edac/i7300_edac.c linux-3.1.1/drivers/edac/i7300_edac.c
22289 +--- linux-3.1.1/drivers/edac/i7300_edac.c 2011-11-11 15:19:27.000000000 -0500
22290 ++++ linux-3.1.1/drivers/edac/i7300_edac.c 2011-11-16 18:39:07.000000000 -0500
22291 @@ -1191,7 +1191,7 @@ static void __devexit i7300_remove_one(s
22292 *
22293 * Has only 8086:360c PCI ID
22294 @@ -26059,9 +26035,9 @@ diff -urNp linux-3.0.9/drivers/edac/i7300_edac.c linux-3.0.9/drivers/edac/i7300_
22295 {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_I7300_MCH_ERR)},
22296 {0,} /* 0 terminated list. */
22297 };
22298 -diff -urNp linux-3.0.9/drivers/edac/i7core_edac.c linux-3.0.9/drivers/edac/i7core_edac.c
22299 ---- linux-3.0.9/drivers/edac/i7core_edac.c 2011-11-11 13:12:24.000000000 -0500
22300 -+++ linux-3.0.9/drivers/edac/i7core_edac.c 2011-11-15 20:02:59.000000000 -0500
22301 +diff -urNp linux-3.1.1/drivers/edac/i7core_edac.c linux-3.1.1/drivers/edac/i7core_edac.c
22302 +--- linux-3.1.1/drivers/edac/i7core_edac.c 2011-11-11 15:19:27.000000000 -0500
22303 ++++ linux-3.1.1/drivers/edac/i7core_edac.c 2011-11-16 18:39:07.000000000 -0500
22304 @@ -359,7 +359,7 @@ static const struct pci_id_table pci_dev
22305 /*
22306 * pci_device_id table for which devices we are looking for
22307 @@ -26071,9 +26047,9 @@ diff -urNp linux-3.0.9/drivers/edac/i7core_edac.c linux-3.0.9/drivers/edac/i7cor
22308 {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_X58_HUB_MGMT)},
22309 {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LYNNFIELD_QPI_LINK0)},
22310 {0,} /* 0 terminated list. */
22311 -diff -urNp linux-3.0.9/drivers/edac/i82443bxgx_edac.c linux-3.0.9/drivers/edac/i82443bxgx_edac.c
22312 ---- linux-3.0.9/drivers/edac/i82443bxgx_edac.c 2011-11-11 13:12:24.000000000 -0500
22313 -+++ linux-3.0.9/drivers/edac/i82443bxgx_edac.c 2011-11-15 20:02:59.000000000 -0500
22314 +diff -urNp linux-3.1.1/drivers/edac/i82443bxgx_edac.c linux-3.1.1/drivers/edac/i82443bxgx_edac.c
22315 +--- linux-3.1.1/drivers/edac/i82443bxgx_edac.c 2011-11-11 15:19:27.000000000 -0500
22316 ++++ linux-3.1.1/drivers/edac/i82443bxgx_edac.c 2011-11-16 18:39:07.000000000 -0500
22317 @@ -380,7 +380,7 @@ static void __devexit i82443bxgx_edacmc_
22318
22319 EXPORT_SYMBOL_GPL(i82443bxgx_edacmc_remove_one);
22320 @@ -26083,9 +26059,9 @@ diff -urNp linux-3.0.9/drivers/edac/i82443bxgx_edac.c linux-3.0.9/drivers/edac/i
22321 {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443BX_0)},
22322 {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443BX_2)},
22323 {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443GX_0)},
22324 -diff -urNp linux-3.0.9/drivers/edac/i82860_edac.c linux-3.0.9/drivers/edac/i82860_edac.c
22325 ---- linux-3.0.9/drivers/edac/i82860_edac.c 2011-11-11 13:12:24.000000000 -0500
22326 -+++ linux-3.0.9/drivers/edac/i82860_edac.c 2011-11-15 20:02:59.000000000 -0500
22327 +diff -urNp linux-3.1.1/drivers/edac/i82860_edac.c linux-3.1.1/drivers/edac/i82860_edac.c
22328 +--- linux-3.1.1/drivers/edac/i82860_edac.c 2011-11-11 15:19:27.000000000 -0500
22329 ++++ linux-3.1.1/drivers/edac/i82860_edac.c 2011-11-16 18:39:07.000000000 -0500
22330 @@ -270,7 +270,7 @@ static void __devexit i82860_remove_one(
22331 edac_mc_free(mci);
22332 }
22333 @@ -26095,9 +26071,9 @@ diff -urNp linux-3.0.9/drivers/edac/i82860_edac.c linux-3.0.9/drivers/edac/i8286
22334 {
22335 PCI_VEND_DEV(INTEL, 82860_0), PCI_ANY_ID, PCI_ANY_ID, 0, 0,
22336 I82860},
22337 -diff -urNp linux-3.0.9/drivers/edac/i82875p_edac.c linux-3.0.9/drivers/edac/i82875p_edac.c
22338 ---- linux-3.0.9/drivers/edac/i82875p_edac.c 2011-11-11 13:12:24.000000000 -0500
22339 -+++ linux-3.0.9/drivers/edac/i82875p_edac.c 2011-11-15 20:02:59.000000000 -0500
22340 +diff -urNp linux-3.1.1/drivers/edac/i82875p_edac.c linux-3.1.1/drivers/edac/i82875p_edac.c
22341 +--- linux-3.1.1/drivers/edac/i82875p_edac.c 2011-11-11 15:19:27.000000000 -0500
22342 ++++ linux-3.1.1/drivers/edac/i82875p_edac.c 2011-11-16 18:39:07.000000000 -0500
22343 @@ -511,7 +511,7 @@ static void __devexit i82875p_remove_one
22344 edac_mc_free(mci);
22345 }
22346 @@ -26107,9 +26083,9 @@ diff -urNp linux-3.0.9/drivers/edac/i82875p_edac.c linux-3.0.9/drivers/edac/i828
22347 {
22348 PCI_VEND_DEV(INTEL, 82875_0), PCI_ANY_ID, PCI_ANY_ID, 0, 0,
22349 I82875P},
22350 -diff -urNp linux-3.0.9/drivers/edac/i82975x_edac.c linux-3.0.9/drivers/edac/i82975x_edac.c
22351 ---- linux-3.0.9/drivers/edac/i82975x_edac.c 2011-11-11 13:12:24.000000000 -0500
22352 -+++ linux-3.0.9/drivers/edac/i82975x_edac.c 2011-11-15 20:02:59.000000000 -0500
22353 +diff -urNp linux-3.1.1/drivers/edac/i82975x_edac.c linux-3.1.1/drivers/edac/i82975x_edac.c
22354 +--- linux-3.1.1/drivers/edac/i82975x_edac.c 2011-11-11 15:19:27.000000000 -0500
22355 ++++ linux-3.1.1/drivers/edac/i82975x_edac.c 2011-11-16 18:39:07.000000000 -0500
22356 @@ -604,7 +604,7 @@ static void __devexit i82975x_remove_one
22357 edac_mc_free(mci);
22358 }
22359 @@ -26119,9 +26095,9 @@ diff -urNp linux-3.0.9/drivers/edac/i82975x_edac.c linux-3.0.9/drivers/edac/i829
22360 {
22361 PCI_VEND_DEV(INTEL, 82975_0), PCI_ANY_ID, PCI_ANY_ID, 0, 0,
22362 I82975X
22363 -diff -urNp linux-3.0.9/drivers/edac/mce_amd.h linux-3.0.9/drivers/edac/mce_amd.h
22364 ---- linux-3.0.9/drivers/edac/mce_amd.h 2011-11-11 13:12:24.000000000 -0500
22365 -+++ linux-3.0.9/drivers/edac/mce_amd.h 2011-11-15 20:02:59.000000000 -0500
22366 +diff -urNp linux-3.1.1/drivers/edac/mce_amd.h linux-3.1.1/drivers/edac/mce_amd.h
22367 +--- linux-3.1.1/drivers/edac/mce_amd.h 2011-11-11 15:19:27.000000000 -0500
22368 ++++ linux-3.1.1/drivers/edac/mce_amd.h 2011-11-16 18:39:07.000000000 -0500
22369 @@ -83,7 +83,7 @@ struct amd_decoder_ops {
22370 bool (*dc_mce)(u16, u8);
22371 bool (*ic_mce)(u16, u8);
22372 @@ -26131,9 +26107,9 @@ diff -urNp linux-3.0.9/drivers/edac/mce_amd.h linux-3.0.9/drivers/edac/mce_amd.h
22373
22374 void amd_report_gart_errors(bool);
22375 void amd_register_ecc_decoder(void (*f)(int, struct mce *, u32));
22376 -diff -urNp linux-3.0.9/drivers/edac/r82600_edac.c linux-3.0.9/drivers/edac/r82600_edac.c
22377 ---- linux-3.0.9/drivers/edac/r82600_edac.c 2011-11-11 13:12:24.000000000 -0500
22378 -+++ linux-3.0.9/drivers/edac/r82600_edac.c 2011-11-15 20:02:59.000000000 -0500
22379 +diff -urNp linux-3.1.1/drivers/edac/r82600_edac.c linux-3.1.1/drivers/edac/r82600_edac.c
22380 +--- linux-3.1.1/drivers/edac/r82600_edac.c 2011-11-11 15:19:27.000000000 -0500
22381 ++++ linux-3.1.1/drivers/edac/r82600_edac.c 2011-11-16 18:39:07.000000000 -0500
22382 @@ -373,7 +373,7 @@ static void __devexit r82600_remove_one(
22383 edac_mc_free(mci);
22384 }
22385 @@ -26143,9 +26119,9 @@ diff -urNp linux-3.0.9/drivers/edac/r82600_edac.c linux-3.0.9/drivers/edac/r8260
22386 {
22387 PCI_DEVICE(PCI_VENDOR_ID_RADISYS, R82600_BRIDGE_ID)
22388 },
22389 -diff -urNp linux-3.0.9/drivers/edac/x38_edac.c linux-3.0.9/drivers/edac/x38_edac.c
22390 ---- linux-3.0.9/drivers/edac/x38_edac.c 2011-11-11 13:12:24.000000000 -0500
22391 -+++ linux-3.0.9/drivers/edac/x38_edac.c 2011-11-15 20:02:59.000000000 -0500
22392 +diff -urNp linux-3.1.1/drivers/edac/x38_edac.c linux-3.1.1/drivers/edac/x38_edac.c
22393 +--- linux-3.1.1/drivers/edac/x38_edac.c 2011-11-11 15:19:27.000000000 -0500
22394 ++++ linux-3.1.1/drivers/edac/x38_edac.c 2011-11-16 18:39:07.000000000 -0500
22395 @@ -440,7 +440,7 @@ static void __devexit x38_remove_one(str
22396 edac_mc_free(mci);
22397 }
22398 @@ -26155,9 +26131,9 @@ diff -urNp linux-3.0.9/drivers/edac/x38_edac.c linux-3.0.9/drivers/edac/x38_edac
22399 {
22400 PCI_VEND_DEV(INTEL, X38_HB), PCI_ANY_ID, PCI_ANY_ID, 0, 0,
22401 X38},
22402 -diff -urNp linux-3.0.9/drivers/firewire/core-card.c linux-3.0.9/drivers/firewire/core-card.c
22403 ---- linux-3.0.9/drivers/firewire/core-card.c 2011-11-11 13:12:24.000000000 -0500
22404 -+++ linux-3.0.9/drivers/firewire/core-card.c 2011-11-15 20:02:59.000000000 -0500
22405 +diff -urNp linux-3.1.1/drivers/firewire/core-card.c linux-3.1.1/drivers/firewire/core-card.c
22406 +--- linux-3.1.1/drivers/firewire/core-card.c 2011-11-11 15:19:27.000000000 -0500
22407 ++++ linux-3.1.1/drivers/firewire/core-card.c 2011-11-16 18:39:07.000000000 -0500
22408 @@ -657,7 +657,7 @@ void fw_card_release(struct kref *kref)
22409
22410 void fw_core_remove_card(struct fw_card *card)
22411 @@ -26167,10 +26143,10 @@ diff -urNp linux-3.0.9/drivers/firewire/core-card.c linux-3.0.9/drivers/firewire
22412
22413 card->driver->update_phy_reg(card, 4,
22414 PHY_LINK_ACTIVE | PHY_CONTENDER, 0);
22415 -diff -urNp linux-3.0.9/drivers/firewire/core-cdev.c linux-3.0.9/drivers/firewire/core-cdev.c
22416 ---- linux-3.0.9/drivers/firewire/core-cdev.c 2011-11-11 13:12:24.000000000 -0500
22417 -+++ linux-3.0.9/drivers/firewire/core-cdev.c 2011-11-15 20:02:59.000000000 -0500
22418 -@@ -1313,8 +1313,7 @@ static int init_iso_resource(struct clie
22419 +diff -urNp linux-3.1.1/drivers/firewire/core-cdev.c linux-3.1.1/drivers/firewire/core-cdev.c
22420 +--- linux-3.1.1/drivers/firewire/core-cdev.c 2011-11-11 15:19:27.000000000 -0500
22421 ++++ linux-3.1.1/drivers/firewire/core-cdev.c 2011-11-16 18:39:07.000000000 -0500
22422 +@@ -1331,8 +1331,7 @@ static int init_iso_resource(struct clie
22423 int ret;
22424
22425 if ((request->channels == 0 && request->bandwidth == 0) ||
22426 @@ -26180,9 +26156,9 @@ diff -urNp linux-3.0.9/drivers/firewire/core-cdev.c linux-3.0.9/drivers/firewire
22427 return -EINVAL;
22428
22429 r = kmalloc(sizeof(*r), GFP_KERNEL);
22430 -diff -urNp linux-3.0.9/drivers/firewire/core.h linux-3.0.9/drivers/firewire/core.h
22431 ---- linux-3.0.9/drivers/firewire/core.h 2011-11-11 13:12:24.000000000 -0500
22432 -+++ linux-3.0.9/drivers/firewire/core.h 2011-11-15 20:02:59.000000000 -0500
22433 +diff -urNp linux-3.1.1/drivers/firewire/core.h linux-3.1.1/drivers/firewire/core.h
22434 +--- linux-3.1.1/drivers/firewire/core.h 2011-11-11 15:19:27.000000000 -0500
22435 ++++ linux-3.1.1/drivers/firewire/core.h 2011-11-16 18:39:07.000000000 -0500
22436 @@ -101,6 +101,7 @@ struct fw_card_driver {
22437
22438 int (*stop_iso)(struct fw_iso_context *ctx);
22439 @@ -26191,9 +26167,9 @@ diff -urNp linux-3.0.9/drivers/firewire/core.h linux-3.0.9/drivers/firewire/core
22440
22441 void fw_card_initialize(struct fw_card *card,
22442 const struct fw_card_driver *driver, struct device *device);
22443 -diff -urNp linux-3.0.9/drivers/firewire/core-transaction.c linux-3.0.9/drivers/firewire/core-transaction.c
22444 ---- linux-3.0.9/drivers/firewire/core-transaction.c 2011-11-11 13:12:24.000000000 -0500
22445 -+++ linux-3.0.9/drivers/firewire/core-transaction.c 2011-11-15 20:02:59.000000000 -0500
22446 +diff -urNp linux-3.1.1/drivers/firewire/core-transaction.c linux-3.1.1/drivers/firewire/core-transaction.c
22447 +--- linux-3.1.1/drivers/firewire/core-transaction.c 2011-11-11 15:19:27.000000000 -0500
22448 ++++ linux-3.1.1/drivers/firewire/core-transaction.c 2011-11-16 18:40:10.000000000 -0500
22449 @@ -37,6 +37,7 @@
22450 #include <linux/timer.h>
22451 #include <linux/types.h>
22452 @@ -26211,9 +26187,9 @@ diff -urNp linux-3.0.9/drivers/firewire/core-transaction.c linux-3.0.9/drivers/f
22453 init_timer_on_stack(&t.split_timeout_timer);
22454 init_completion(&d.done);
22455 d.payload = payload;
22456 -diff -urNp linux-3.0.9/drivers/firmware/dmi_scan.c linux-3.0.9/drivers/firmware/dmi_scan.c
22457 ---- linux-3.0.9/drivers/firmware/dmi_scan.c 2011-11-11 13:12:24.000000000 -0500
22458 -+++ linux-3.0.9/drivers/firmware/dmi_scan.c 2011-11-15 20:02:59.000000000 -0500
22459 +diff -urNp linux-3.1.1/drivers/firmware/dmi_scan.c linux-3.1.1/drivers/firmware/dmi_scan.c
22460 +--- linux-3.1.1/drivers/firmware/dmi_scan.c 2011-11-11 15:19:27.000000000 -0500
22461 ++++ linux-3.1.1/drivers/firmware/dmi_scan.c 2011-11-16 18:39:07.000000000 -0500
22462 @@ -449,11 +449,6 @@ void __init dmi_scan_machine(void)
22463 }
22464 }
22465 @@ -26235,9 +26211,9 @@ diff -urNp linux-3.0.9/drivers/firmware/dmi_scan.c linux-3.0.9/drivers/firmware/
22466
22467 iounmap(buf);
22468 return 0;
22469 -diff -urNp linux-3.0.9/drivers/gpio/vr41xx_giu.c linux-3.0.9/drivers/gpio/vr41xx_giu.c
22470 ---- linux-3.0.9/drivers/gpio/vr41xx_giu.c 2011-11-11 13:12:24.000000000 -0500
22471 -+++ linux-3.0.9/drivers/gpio/vr41xx_giu.c 2011-11-15 20:02:59.000000000 -0500
22472 +diff -urNp linux-3.1.1/drivers/gpio/gpio-vr41xx.c linux-3.1.1/drivers/gpio/gpio-vr41xx.c
22473 +--- linux-3.1.1/drivers/gpio/gpio-vr41xx.c 2011-11-11 15:19:27.000000000 -0500
22474 ++++ linux-3.1.1/drivers/gpio/gpio-vr41xx.c 2011-11-16 18:39:07.000000000 -0500
22475 @@ -204,7 +204,7 @@ static int giu_get_irq(unsigned int irq)
22476 printk(KERN_ERR "spurious GIU interrupt: %04x(%04x),%04x(%04x)\n",
22477 maskl, pendl, maskh, pendh);
22478 @@ -26247,10 +26223,10 @@ diff -urNp linux-3.0.9/drivers/gpio/vr41xx_giu.c linux-3.0.9/drivers/gpio/vr41xx
22479
22480 return -EINVAL;
22481 }
22482 -diff -urNp linux-3.0.9/drivers/gpu/drm/drm_crtc.c linux-3.0.9/drivers/gpu/drm/drm_crtc.c
22483 ---- linux-3.0.9/drivers/gpu/drm/drm_crtc.c 2011-11-11 13:12:24.000000000 -0500
22484 -+++ linux-3.0.9/drivers/gpu/drm/drm_crtc.c 2011-11-15 20:02:59.000000000 -0500
22485 -@@ -1372,7 +1372,7 @@ int drm_mode_getconnector(struct drm_dev
22486 +diff -urNp linux-3.1.1/drivers/gpu/drm/drm_crtc.c linux-3.1.1/drivers/gpu/drm/drm_crtc.c
22487 +--- linux-3.1.1/drivers/gpu/drm/drm_crtc.c 2011-11-11 15:19:27.000000000 -0500
22488 ++++ linux-3.1.1/drivers/gpu/drm/drm_crtc.c 2011-11-16 18:39:07.000000000 -0500
22489 +@@ -1374,7 +1374,7 @@ int drm_mode_getconnector(struct drm_dev
22490 */
22491 if ((out_resp->count_modes >= mode_count) && mode_count) {
22492 copied = 0;
22493 @@ -26259,7 +26235,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/drm_crtc.c linux-3.0.9/drivers/gpu/drm/dr
22494 list_for_each_entry(mode, &connector->modes, head) {
22495 drm_crtc_convert_to_umode(&u_mode, mode);
22496 if (copy_to_user(mode_ptr + copied,
22497 -@@ -1387,8 +1387,8 @@ int drm_mode_getconnector(struct drm_dev
22498 +@@ -1389,8 +1389,8 @@ int drm_mode_getconnector(struct drm_dev
22499
22500 if ((out_resp->count_props >= props_count) && props_count) {
22501 copied = 0;
22502 @@ -26270,7 +26246,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/drm_crtc.c linux-3.0.9/drivers/gpu/drm/dr
22503 for (i = 0; i < DRM_CONNECTOR_MAX_PROPERTY; i++) {
22504 if (connector->property_ids[i] != 0) {
22505 if (put_user(connector->property_ids[i],
22506 -@@ -1410,7 +1410,7 @@ int drm_mode_getconnector(struct drm_dev
22507 +@@ -1412,7 +1412,7 @@ int drm_mode_getconnector(struct drm_dev
22508
22509 if ((out_resp->count_encoders >= encoders_count) && encoders_count) {
22510 copied = 0;
22511 @@ -26279,7 +26255,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/drm_crtc.c linux-3.0.9/drivers/gpu/drm/dr
22512 for (i = 0; i < DRM_CONNECTOR_MAX_ENCODER; i++) {
22513 if (connector->encoder_ids[i] != 0) {
22514 if (put_user(connector->encoder_ids[i],
22515 -@@ -1569,7 +1569,7 @@ int drm_mode_setcrtc(struct drm_device *
22516 +@@ -1571,7 +1571,7 @@ int drm_mode_setcrtc(struct drm_device *
22517 }
22518
22519 for (i = 0; i < crtc_req->count_connectors; i++) {
22520 @@ -26288,7 +26264,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/drm_crtc.c linux-3.0.9/drivers/gpu/drm/dr
22521 if (get_user(out_id, &set_connectors_ptr[i])) {
22522 ret = -EFAULT;
22523 goto out;
22524 -@@ -1850,7 +1850,7 @@ int drm_mode_dirtyfb_ioctl(struct drm_de
22525 +@@ -1852,7 +1852,7 @@ int drm_mode_dirtyfb_ioctl(struct drm_de
22526 fb = obj_to_fb(obj);
22527
22528 num_clips = r->num_clips;
22529 @@ -26297,7 +26273,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/drm_crtc.c linux-3.0.9/drivers/gpu/drm/dr
22530
22531 if (!num_clips != !clips_ptr) {
22532 ret = -EINVAL;
22533 -@@ -2270,7 +2270,7 @@ int drm_mode_getproperty_ioctl(struct dr
22534 +@@ -2272,7 +2272,7 @@ int drm_mode_getproperty_ioctl(struct dr
22535 out_resp->flags = property->flags;
22536
22537 if ((out_resp->count_values >= value_count) && value_count) {
22538 @@ -26306,7 +26282,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/drm_crtc.c linux-3.0.9/drivers/gpu/drm/dr
22539 for (i = 0; i < value_count; i++) {
22540 if (copy_to_user(values_ptr + i, &property->values[i], sizeof(uint64_t))) {
22541 ret = -EFAULT;
22542 -@@ -2283,7 +2283,7 @@ int drm_mode_getproperty_ioctl(struct dr
22543 +@@ -2285,7 +2285,7 @@ int drm_mode_getproperty_ioctl(struct dr
22544 if (property->flags & DRM_MODE_PROP_ENUM) {
22545 if ((out_resp->count_enum_blobs >= enum_count) && enum_count) {
22546 copied = 0;
22547 @@ -26315,7 +26291,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/drm_crtc.c linux-3.0.9/drivers/gpu/drm/dr
22548 list_for_each_entry(prop_enum, &property->enum_blob_list, head) {
22549
22550 if (copy_to_user(&enum_ptr[copied].value, &prop_enum->value, sizeof(uint64_t))) {
22551 -@@ -2306,7 +2306,7 @@ int drm_mode_getproperty_ioctl(struct dr
22552 +@@ -2308,7 +2308,7 @@ int drm_mode_getproperty_ioctl(struct dr
22553 if ((out_resp->count_enum_blobs >= blob_count) && blob_count) {
22554 copied = 0;
22555 blob_id_ptr = (uint32_t *)(unsigned long)out_resp->enum_blob_ptr;
22556 @@ -26324,7 +26300,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/drm_crtc.c linux-3.0.9/drivers/gpu/drm/dr
22557
22558 list_for_each_entry(prop_blob, &property->enum_blob_list, head) {
22559 if (put_user(prop_blob->base.id, blob_id_ptr + copied)) {
22560 -@@ -2367,7 +2367,7 @@ int drm_mode_getblob_ioctl(struct drm_de
22561 +@@ -2369,7 +2369,7 @@ int drm_mode_getblob_ioctl(struct drm_de
22562 struct drm_mode_get_blob *out_resp = data;
22563 struct drm_property_blob *blob;
22564 int ret = 0;
22565 @@ -26333,7 +26309,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/drm_crtc.c linux-3.0.9/drivers/gpu/drm/dr
22566
22567 if (!drm_core_check_feature(dev, DRIVER_MODESET))
22568 return -EINVAL;
22569 -@@ -2381,7 +2381,7 @@ int drm_mode_getblob_ioctl(struct drm_de
22570 +@@ -2383,7 +2383,7 @@ int drm_mode_getblob_ioctl(struct drm_de
22571 blob = obj_to_blob(obj);
22572
22573 if (out_resp->length == blob->length) {
22574 @@ -26342,9 +26318,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/drm_crtc.c linux-3.0.9/drivers/gpu/drm/dr
22575 if (copy_to_user(blob_ptr, blob->data, blob->length)){
22576 ret = -EFAULT;
22577 goto done;
22578 -diff -urNp linux-3.0.9/drivers/gpu/drm/drm_crtc_helper.c linux-3.0.9/drivers/gpu/drm/drm_crtc_helper.c
22579 ---- linux-3.0.9/drivers/gpu/drm/drm_crtc_helper.c 2011-11-11 13:12:24.000000000 -0500
22580 -+++ linux-3.0.9/drivers/gpu/drm/drm_crtc_helper.c 2011-11-15 20:02:59.000000000 -0500
22581 +diff -urNp linux-3.1.1/drivers/gpu/drm/drm_crtc_helper.c linux-3.1.1/drivers/gpu/drm/drm_crtc_helper.c
22582 +--- linux-3.1.1/drivers/gpu/drm/drm_crtc_helper.c 2011-11-11 15:19:27.000000000 -0500
22583 ++++ linux-3.1.1/drivers/gpu/drm/drm_crtc_helper.c 2011-11-16 18:40:10.000000000 -0500
22584 @@ -276,7 +276,7 @@ static bool drm_encoder_crtc_ok(struct d
22585 struct drm_crtc *tmp;
22586 int crtc_mask = 1;
22587 @@ -26363,9 +26339,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/drm_crtc_helper.c linux-3.0.9/drivers/gpu
22588 crtc->enabled = drm_helper_crtc_in_use(crtc);
22589 if (!crtc->enabled)
22590 return true;
22591 -diff -urNp linux-3.0.9/drivers/gpu/drm/drm_drv.c linux-3.0.9/drivers/gpu/drm/drm_drv.c
22592 ---- linux-3.0.9/drivers/gpu/drm/drm_drv.c 2011-11-11 13:12:24.000000000 -0500
22593 -+++ linux-3.0.9/drivers/gpu/drm/drm_drv.c 2011-11-15 20:02:59.000000000 -0500
22594 +diff -urNp linux-3.1.1/drivers/gpu/drm/drm_drv.c linux-3.1.1/drivers/gpu/drm/drm_drv.c
22595 +--- linux-3.1.1/drivers/gpu/drm/drm_drv.c 2011-11-11 15:19:27.000000000 -0500
22596 ++++ linux-3.1.1/drivers/gpu/drm/drm_drv.c 2011-11-16 18:39:07.000000000 -0500
22597 @@ -307,7 +307,7 @@ module_exit(drm_core_exit);
22598 /**
22599 * Copy and IOCTL return string to user space
22600 @@ -26384,9 +26360,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/drm_drv.c linux-3.0.9/drivers/gpu/drm/drm
22601 ++file_priv->ioctl_count;
22602
22603 DRM_DEBUG("pid=%d, cmd=0x%02x, nr=0x%02x, dev 0x%lx, auth=%d\n",
22604 -diff -urNp linux-3.0.9/drivers/gpu/drm/drm_fops.c linux-3.0.9/drivers/gpu/drm/drm_fops.c
22605 ---- linux-3.0.9/drivers/gpu/drm/drm_fops.c 2011-11-11 13:12:24.000000000 -0500
22606 -+++ linux-3.0.9/drivers/gpu/drm/drm_fops.c 2011-11-15 20:02:59.000000000 -0500
22607 +diff -urNp linux-3.1.1/drivers/gpu/drm/drm_fops.c linux-3.1.1/drivers/gpu/drm/drm_fops.c
22608 +--- linux-3.1.1/drivers/gpu/drm/drm_fops.c 2011-11-11 15:19:27.000000000 -0500
22609 ++++ linux-3.1.1/drivers/gpu/drm/drm_fops.c 2011-11-16 18:39:07.000000000 -0500
22610 @@ -70,7 +70,7 @@ static int drm_setup(struct drm_device *
22611 }
22612
22613 @@ -26436,9 +26412,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/drm_fops.c linux-3.0.9/drivers/gpu/drm/dr
22614 if (atomic_read(&dev->ioctl_count)) {
22615 DRM_ERROR("Device busy: %d\n",
22616 atomic_read(&dev->ioctl_count));
22617 -diff -urNp linux-3.0.9/drivers/gpu/drm/drm_global.c linux-3.0.9/drivers/gpu/drm/drm_global.c
22618 ---- linux-3.0.9/drivers/gpu/drm/drm_global.c 2011-11-11 13:12:24.000000000 -0500
22619 -+++ linux-3.0.9/drivers/gpu/drm/drm_global.c 2011-11-15 20:02:59.000000000 -0500
22620 +diff -urNp linux-3.1.1/drivers/gpu/drm/drm_global.c linux-3.1.1/drivers/gpu/drm/drm_global.c
22621 +--- linux-3.1.1/drivers/gpu/drm/drm_global.c 2011-11-11 15:19:27.000000000 -0500
22622 ++++ linux-3.1.1/drivers/gpu/drm/drm_global.c 2011-11-16 18:39:07.000000000 -0500
22623 @@ -36,7 +36,7 @@
22624 struct drm_global_item {
22625 struct mutex mutex;
22626 @@ -26496,9 +26472,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/drm_global.c linux-3.0.9/drivers/gpu/drm/
22627 ref->release(ref);
22628 item->object = NULL;
22629 }
22630 -diff -urNp linux-3.0.9/drivers/gpu/drm/drm_info.c linux-3.0.9/drivers/gpu/drm/drm_info.c
22631 ---- linux-3.0.9/drivers/gpu/drm/drm_info.c 2011-11-11 13:12:24.000000000 -0500
22632 -+++ linux-3.0.9/drivers/gpu/drm/drm_info.c 2011-11-15 20:02:59.000000000 -0500
22633 +diff -urNp linux-3.1.1/drivers/gpu/drm/drm_info.c linux-3.1.1/drivers/gpu/drm/drm_info.c
22634 +--- linux-3.1.1/drivers/gpu/drm/drm_info.c 2011-11-11 15:19:27.000000000 -0500
22635 ++++ linux-3.1.1/drivers/gpu/drm/drm_info.c 2011-11-16 18:40:10.000000000 -0500
22636 @@ -75,10 +75,14 @@ int drm_vm_info(struct seq_file *m, void
22637 struct drm_local_map *map;
22638 struct drm_map_list *r_list;
22639 @@ -26539,9 +26515,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/drm_info.c linux-3.0.9/drivers/gpu/drm/dr
22640
22641 #if defined(__i386__)
22642 pgprot = pgprot_val(vma->vm_page_prot);
22643 -diff -urNp linux-3.0.9/drivers/gpu/drm/drm_ioc32.c linux-3.0.9/drivers/gpu/drm/drm_ioc32.c
22644 ---- linux-3.0.9/drivers/gpu/drm/drm_ioc32.c 2011-11-11 13:12:24.000000000 -0500
22645 -+++ linux-3.0.9/drivers/gpu/drm/drm_ioc32.c 2011-11-15 20:02:59.000000000 -0500
22646 +diff -urNp linux-3.1.1/drivers/gpu/drm/drm_ioc32.c linux-3.1.1/drivers/gpu/drm/drm_ioc32.c
22647 +--- linux-3.1.1/drivers/gpu/drm/drm_ioc32.c 2011-11-11 15:19:27.000000000 -0500
22648 ++++ linux-3.1.1/drivers/gpu/drm/drm_ioc32.c 2011-11-16 18:39:07.000000000 -0500
22649 @@ -455,7 +455,7 @@ static int compat_drm_infobufs(struct fi
22650 request = compat_alloc_user_space(nbytes);
22651 if (!access_ok(VERIFY_WRITE, request, nbytes))
22652 @@ -26560,9 +26536,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/drm_ioc32.c linux-3.0.9/drivers/gpu/drm/d
22653
22654 if (__put_user(count, &request->count)
22655 || __put_user(list, &request->list))
22656 -diff -urNp linux-3.0.9/drivers/gpu/drm/drm_ioctl.c linux-3.0.9/drivers/gpu/drm/drm_ioctl.c
22657 ---- linux-3.0.9/drivers/gpu/drm/drm_ioctl.c 2011-11-11 13:12:24.000000000 -0500
22658 -+++ linux-3.0.9/drivers/gpu/drm/drm_ioctl.c 2011-11-15 20:02:59.000000000 -0500
22659 +diff -urNp linux-3.1.1/drivers/gpu/drm/drm_ioctl.c linux-3.1.1/drivers/gpu/drm/drm_ioctl.c
22660 +--- linux-3.1.1/drivers/gpu/drm/drm_ioctl.c 2011-11-11 15:19:27.000000000 -0500
22661 ++++ linux-3.1.1/drivers/gpu/drm/drm_ioctl.c 2011-11-16 18:39:07.000000000 -0500
22662 @@ -256,7 +256,7 @@ int drm_getstats(struct drm_device *dev,
22663 stats->data[i].value =
22664 (file_priv->master->lock.hw_lock ? file_priv->master->lock.hw_lock->lock : 0);
22665 @@ -26572,9 +26548,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/drm_ioctl.c linux-3.0.9/drivers/gpu/drm/d
22666 stats->data[i].type = dev->types[i];
22667 }
22668
22669 -diff -urNp linux-3.0.9/drivers/gpu/drm/drm_lock.c linux-3.0.9/drivers/gpu/drm/drm_lock.c
22670 ---- linux-3.0.9/drivers/gpu/drm/drm_lock.c 2011-11-11 13:12:24.000000000 -0500
22671 -+++ linux-3.0.9/drivers/gpu/drm/drm_lock.c 2011-11-15 20:02:59.000000000 -0500
22672 +diff -urNp linux-3.1.1/drivers/gpu/drm/drm_lock.c linux-3.1.1/drivers/gpu/drm/drm_lock.c
22673 +--- linux-3.1.1/drivers/gpu/drm/drm_lock.c 2011-11-11 15:19:27.000000000 -0500
22674 ++++ linux-3.1.1/drivers/gpu/drm/drm_lock.c 2011-11-16 18:39:07.000000000 -0500
22675 @@ -89,7 +89,7 @@ int drm_lock(struct drm_device *dev, voi
22676 if (drm_lock_take(&master->lock, lock->context)) {
22677 master->lock.file_priv = file_priv;
22678 @@ -26593,9 +26569,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/drm_lock.c linux-3.0.9/drivers/gpu/drm/dr
22679
22680 if (drm_lock_free(&master->lock, lock->context)) {
22681 /* FIXME: Should really bail out here. */
22682 -diff -urNp linux-3.0.9/drivers/gpu/drm/i810/i810_dma.c linux-3.0.9/drivers/gpu/drm/i810/i810_dma.c
22683 ---- linux-3.0.9/drivers/gpu/drm/i810/i810_dma.c 2011-11-11 13:12:24.000000000 -0500
22684 -+++ linux-3.0.9/drivers/gpu/drm/i810/i810_dma.c 2011-11-15 20:02:59.000000000 -0500
22685 +diff -urNp linux-3.1.1/drivers/gpu/drm/i810/i810_dma.c linux-3.1.1/drivers/gpu/drm/i810/i810_dma.c
22686 +--- linux-3.1.1/drivers/gpu/drm/i810/i810_dma.c 2011-11-11 15:19:27.000000000 -0500
22687 ++++ linux-3.1.1/drivers/gpu/drm/i810/i810_dma.c 2011-11-16 18:39:07.000000000 -0500
22688 @@ -950,8 +950,8 @@ static int i810_dma_vertex(struct drm_de
22689 dma->buflist[vertex->idx],
22690 vertex->discard, vertex->used);
22691 @@ -26618,9 +26594,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/i810/i810_dma.c linux-3.0.9/drivers/gpu/d
22692 sarea_priv->last_enqueue = dev_priv->counter - 1;
22693 sarea_priv->last_dispatch = (int)hw_status[5];
22694
22695 -diff -urNp linux-3.0.9/drivers/gpu/drm/i810/i810_drv.h linux-3.0.9/drivers/gpu/drm/i810/i810_drv.h
22696 ---- linux-3.0.9/drivers/gpu/drm/i810/i810_drv.h 2011-11-11 13:12:24.000000000 -0500
22697 -+++ linux-3.0.9/drivers/gpu/drm/i810/i810_drv.h 2011-11-15 20:02:59.000000000 -0500
22698 +diff -urNp linux-3.1.1/drivers/gpu/drm/i810/i810_drv.h linux-3.1.1/drivers/gpu/drm/i810/i810_drv.h
22699 +--- linux-3.1.1/drivers/gpu/drm/i810/i810_drv.h 2011-11-11 15:19:27.000000000 -0500
22700 ++++ linux-3.1.1/drivers/gpu/drm/i810/i810_drv.h 2011-11-16 18:39:07.000000000 -0500
22701 @@ -108,8 +108,8 @@ typedef struct drm_i810_private {
22702 int page_flipping;
22703
22704 @@ -26632,9 +26608,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/i810/i810_drv.h linux-3.0.9/drivers/gpu/d
22705
22706 int front_offset;
22707 } drm_i810_private_t;
22708 -diff -urNp linux-3.0.9/drivers/gpu/drm/i915/i915_debugfs.c linux-3.0.9/drivers/gpu/drm/i915/i915_debugfs.c
22709 ---- linux-3.0.9/drivers/gpu/drm/i915/i915_debugfs.c 2011-11-11 13:12:24.000000000 -0500
22710 -+++ linux-3.0.9/drivers/gpu/drm/i915/i915_debugfs.c 2011-11-15 20:02:59.000000000 -0500
22711 +diff -urNp linux-3.1.1/drivers/gpu/drm/i915/i915_debugfs.c linux-3.1.1/drivers/gpu/drm/i915/i915_debugfs.c
22712 +--- linux-3.1.1/drivers/gpu/drm/i915/i915_debugfs.c 2011-11-11 15:19:27.000000000 -0500
22713 ++++ linux-3.1.1/drivers/gpu/drm/i915/i915_debugfs.c 2011-11-16 18:39:07.000000000 -0500
22714 @@ -497,7 +497,7 @@ static int i915_interrupt_info(struct se
22715 I915_READ(GTIMR));
22716 }
22717 @@ -26642,9 +26618,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/i915/i915_debugfs.c linux-3.0.9/drivers/g
22718 - atomic_read(&dev_priv->irq_received));
22719 + atomic_read_unchecked(&dev_priv->irq_received));
22720 for (i = 0; i < I915_NUM_RINGS; i++) {
22721 - if (IS_GEN6(dev)) {
22722 + if (IS_GEN6(dev) || IS_GEN7(dev)) {
22723 seq_printf(m, "Graphics Interrupt mask (%s): %08x\n",
22724 -@@ -1147,7 +1147,7 @@ static int i915_opregion(struct seq_file
22725 +@@ -1185,7 +1185,7 @@ static int i915_opregion(struct seq_file
22726 return ret;
22727
22728 if (opregion->header)
22729 @@ -26653,10 +26629,10 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/i915/i915_debugfs.c linux-3.0.9/drivers/g
22730
22731 mutex_unlock(&dev->struct_mutex);
22732
22733 -diff -urNp linux-3.0.9/drivers/gpu/drm/i915/i915_dma.c linux-3.0.9/drivers/gpu/drm/i915/i915_dma.c
22734 ---- linux-3.0.9/drivers/gpu/drm/i915/i915_dma.c 2011-11-11 13:12:24.000000000 -0500
22735 -+++ linux-3.0.9/drivers/gpu/drm/i915/i915_dma.c 2011-11-15 20:02:59.000000000 -0500
22736 -@@ -1169,7 +1169,7 @@ static bool i915_switcheroo_can_switch(s
22737 +diff -urNp linux-3.1.1/drivers/gpu/drm/i915/i915_dma.c linux-3.1.1/drivers/gpu/drm/i915/i915_dma.c
22738 +--- linux-3.1.1/drivers/gpu/drm/i915/i915_dma.c 2011-11-11 15:19:27.000000000 -0500
22739 ++++ linux-3.1.1/drivers/gpu/drm/i915/i915_dma.c 2011-11-16 18:39:07.000000000 -0500
22740 +@@ -1171,7 +1171,7 @@ static bool i915_switcheroo_can_switch(s
22741 bool can_switch;
22742
22743 spin_lock(&dev->count_lock);
22744 @@ -26665,10 +26641,10 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/i915/i915_dma.c linux-3.0.9/drivers/gpu/d
22745 spin_unlock(&dev->count_lock);
22746 return can_switch;
22747 }
22748 -diff -urNp linux-3.0.9/drivers/gpu/drm/i915/i915_drv.h linux-3.0.9/drivers/gpu/drm/i915/i915_drv.h
22749 ---- linux-3.0.9/drivers/gpu/drm/i915/i915_drv.h 2011-11-11 13:12:24.000000000 -0500
22750 -+++ linux-3.0.9/drivers/gpu/drm/i915/i915_drv.h 2011-11-15 20:02:59.000000000 -0500
22751 -@@ -219,7 +219,7 @@ struct drm_i915_display_funcs {
22752 +diff -urNp linux-3.1.1/drivers/gpu/drm/i915/i915_drv.h linux-3.1.1/drivers/gpu/drm/i915/i915_drv.h
22753 +--- linux-3.1.1/drivers/gpu/drm/i915/i915_drv.h 2011-11-11 15:19:27.000000000 -0500
22754 ++++ linux-3.1.1/drivers/gpu/drm/i915/i915_drv.h 2011-11-16 18:39:07.000000000 -0500
22755 +@@ -222,7 +222,7 @@ struct drm_i915_display_funcs {
22756 /* render clock increase/decrease */
22757 /* display clock increase/decrease */
22758 /* pll clock increase/decrease */
22759 @@ -26677,7 +26653,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/i915/i915_drv.h linux-3.0.9/drivers/gpu/d
22760
22761 struct intel_device_info {
22762 u8 gen;
22763 -@@ -300,7 +300,7 @@ typedef struct drm_i915_private {
22764 +@@ -305,7 +305,7 @@ typedef struct drm_i915_private {
22765 int current_page;
22766 int page_flipping;
22767
22768 @@ -26686,7 +26662,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/i915/i915_drv.h linux-3.0.9/drivers/gpu/d
22769
22770 /* protects the irq masks */
22771 spinlock_t irq_lock;
22772 -@@ -874,7 +874,7 @@ struct drm_i915_gem_object {
22773 +@@ -882,7 +882,7 @@ struct drm_i915_gem_object {
22774 * will be page flipped away on the next vblank. When it
22775 * reaches 0, dev_priv->pending_flip_queue will be woken up.
22776 */
22777 @@ -26695,7 +26671,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/i915/i915_drv.h linux-3.0.9/drivers/gpu/d
22778 };
22779
22780 #define to_intel_bo(x) container_of(x, struct drm_i915_gem_object, base)
22781 -@@ -1247,7 +1247,7 @@ extern int intel_setup_gmbus(struct drm_
22782 +@@ -1262,7 +1262,7 @@ extern int intel_setup_gmbus(struct drm_
22783 extern void intel_teardown_gmbus(struct drm_device *dev);
22784 extern void intel_gmbus_set_speed(struct i2c_adapter *adapter, int speed);
22785 extern void intel_gmbus_force_bit(struct i2c_adapter *adapter, bool force_bit);
22786 @@ -26704,9 +26680,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/i915/i915_drv.h linux-3.0.9/drivers/gpu/d
22787 {
22788 return container_of(adapter, struct intel_gmbus, adapter)->force_bit;
22789 }
22790 -diff -urNp linux-3.0.9/drivers/gpu/drm/i915/i915_gem_execbuffer.c linux-3.0.9/drivers/gpu/drm/i915/i915_gem_execbuffer.c
22791 ---- linux-3.0.9/drivers/gpu/drm/i915/i915_gem_execbuffer.c 2011-11-11 13:12:24.000000000 -0500
22792 -+++ linux-3.0.9/drivers/gpu/drm/i915/i915_gem_execbuffer.c 2011-11-15 20:02:59.000000000 -0500
22793 +diff -urNp linux-3.1.1/drivers/gpu/drm/i915/i915_gem_execbuffer.c linux-3.1.1/drivers/gpu/drm/i915/i915_gem_execbuffer.c
22794 +--- linux-3.1.1/drivers/gpu/drm/i915/i915_gem_execbuffer.c 2011-11-11 15:19:27.000000000 -0500
22795 ++++ linux-3.1.1/drivers/gpu/drm/i915/i915_gem_execbuffer.c 2011-11-16 18:39:07.000000000 -0500
22796 @@ -188,7 +188,7 @@ i915_gem_object_set_to_gpu_domain(struct
22797 i915_gem_clflush_object(obj);
22798
22799 @@ -26716,10 +26692,10 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/i915/i915_gem_execbuffer.c linux-3.0.9/dr
22800
22801 /* The actual obj->write_domain will be updated with
22802 * pending_write_domain after we emit the accumulated flush for all
22803 -diff -urNp linux-3.0.9/drivers/gpu/drm/i915/i915_irq.c linux-3.0.9/drivers/gpu/drm/i915/i915_irq.c
22804 ---- linux-3.0.9/drivers/gpu/drm/i915/i915_irq.c 2011-11-11 13:12:24.000000000 -0500
22805 -+++ linux-3.0.9/drivers/gpu/drm/i915/i915_irq.c 2011-11-15 20:02:59.000000000 -0500
22806 -@@ -473,7 +473,7 @@ static irqreturn_t ivybridge_irq_handler
22807 +diff -urNp linux-3.1.1/drivers/gpu/drm/i915/i915_irq.c linux-3.1.1/drivers/gpu/drm/i915/i915_irq.c
22808 +--- linux-3.1.1/drivers/gpu/drm/i915/i915_irq.c 2011-11-11 15:19:27.000000000 -0500
22809 ++++ linux-3.1.1/drivers/gpu/drm/i915/i915_irq.c 2011-11-16 18:39:07.000000000 -0500
22810 +@@ -475,7 +475,7 @@ static irqreturn_t ivybridge_irq_handler
22811 u32 de_iir, gt_iir, de_ier, pch_iir, pm_iir;
22812 struct drm_i915_master_private *master_priv;
22813
22814 @@ -26728,7 +26704,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/i915/i915_irq.c linux-3.0.9/drivers/gpu/d
22815
22816 /* disable master interrupt before clearing iir */
22817 de_ier = I915_READ(DEIER);
22818 -@@ -563,7 +563,7 @@ static irqreturn_t ironlake_irq_handler(
22819 +@@ -565,7 +565,7 @@ static irqreturn_t ironlake_irq_handler(
22820 struct drm_i915_master_private *master_priv;
22821 u32 bsd_usr_interrupt = GT_BSD_USER_INTERRUPT;
22822
22823 @@ -26737,7 +26713,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/i915/i915_irq.c linux-3.0.9/drivers/gpu/d
22824
22825 if (IS_GEN6(dev))
22826 bsd_usr_interrupt = GT_GEN6_BSD_USER_INTERRUPT;
22827 -@@ -1226,7 +1226,7 @@ static irqreturn_t i915_driver_irq_handl
22828 +@@ -1228,7 +1228,7 @@ static irqreturn_t i915_driver_irq_handl
22829 int ret = IRQ_NONE, pipe;
22830 bool blc_event = false;
22831
22832 @@ -26746,7 +26722,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/i915/i915_irq.c linux-3.0.9/drivers/gpu/d
22833
22834 iir = I915_READ(IIR);
22835
22836 -@@ -1735,7 +1735,7 @@ static void ironlake_irq_preinstall(stru
22837 +@@ -1740,7 +1740,7 @@ static void ironlake_irq_preinstall(stru
22838 {
22839 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
22840
22841 @@ -26755,7 +26731,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/i915/i915_irq.c linux-3.0.9/drivers/gpu/d
22842
22843 INIT_WORK(&dev_priv->hotplug_work, i915_hotplug_work_func);
22844 INIT_WORK(&dev_priv->error_work, i915_error_work_func);
22845 -@@ -1899,7 +1899,7 @@ static void i915_driver_irq_preinstall(s
22846 +@@ -1904,7 +1904,7 @@ static void i915_driver_irq_preinstall(s
22847 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
22848 int pipe;
22849
22850 @@ -26764,10 +26740,10 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/i915/i915_irq.c linux-3.0.9/drivers/gpu/d
22851
22852 INIT_WORK(&dev_priv->hotplug_work, i915_hotplug_work_func);
22853 INIT_WORK(&dev_priv->error_work, i915_error_work_func);
22854 -diff -urNp linux-3.0.9/drivers/gpu/drm/i915/intel_display.c linux-3.0.9/drivers/gpu/drm/i915/intel_display.c
22855 ---- linux-3.0.9/drivers/gpu/drm/i915/intel_display.c 2011-11-11 13:12:24.000000000 -0500
22856 -+++ linux-3.0.9/drivers/gpu/drm/i915/intel_display.c 2011-11-15 20:02:59.000000000 -0500
22857 -@@ -1961,7 +1961,7 @@ intel_pipe_set_base(struct drm_crtc *crt
22858 +diff -urNp linux-3.1.1/drivers/gpu/drm/i915/intel_display.c linux-3.1.1/drivers/gpu/drm/i915/intel_display.c
22859 +--- linux-3.1.1/drivers/gpu/drm/i915/intel_display.c 2011-11-11 15:19:27.000000000 -0500
22860 ++++ linux-3.1.1/drivers/gpu/drm/i915/intel_display.c 2011-11-16 18:39:07.000000000 -0500
22861 +@@ -2205,7 +2205,7 @@ intel_pipe_set_base(struct drm_crtc *crt
22862
22863 wait_event(dev_priv->pending_flip_queue,
22864 atomic_read(&dev_priv->mm.wedged) ||
22865 @@ -26776,7 +26752,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/i915/intel_display.c linux-3.0.9/drivers/
22866
22867 /* Big Hammer, we also need to ensure that any pending
22868 * MI_WAIT_FOR_EVENT inside a user batch buffer on the
22869 -@@ -2548,7 +2548,7 @@ static void intel_crtc_wait_for_pending_
22870 +@@ -2824,7 +2824,7 @@ static void intel_crtc_wait_for_pending_
22871 obj = to_intel_framebuffer(crtc->fb)->obj;
22872 dev_priv = crtc->dev->dev_private;
22873 wait_event(dev_priv->pending_flip_queue,
22874 @@ -26785,7 +26761,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/i915/intel_display.c linux-3.0.9/drivers/
22875 }
22876
22877 static bool intel_crtc_driving_pch(struct drm_crtc *crtc)
22878 -@@ -6225,7 +6225,7 @@ static void do_intel_finish_page_flip(st
22879 +@@ -6644,7 +6644,7 @@ static void do_intel_finish_page_flip(st
22880
22881 atomic_clear_mask(1 << intel_crtc->plane,
22882 &obj->pending_flip.counter);
22883 @@ -26794,7 +26770,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/i915/intel_display.c linux-3.0.9/drivers/
22884 wake_up(&dev_priv->pending_flip_queue);
22885
22886 schedule_work(&work->work);
22887 -@@ -6514,7 +6514,7 @@ static int intel_crtc_page_flip(struct d
22888 +@@ -6933,7 +6933,7 @@ static int intel_crtc_page_flip(struct d
22889 /* Block clients from rendering to the new back buffer until
22890 * the flip occurs and the object is no longer visible.
22891 */
22892 @@ -26803,7 +26779,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/i915/intel_display.c linux-3.0.9/drivers/
22893
22894 ret = dev_priv->display.queue_flip(dev, crtc, fb, obj);
22895 if (ret)
22896 -@@ -6527,7 +6527,7 @@ static int intel_crtc_page_flip(struct d
22897 +@@ -6947,7 +6947,7 @@ static int intel_crtc_page_flip(struct d
22898 return 0;
22899
22900 cleanup_pending:
22901 @@ -26812,9 +26788,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/i915/intel_display.c linux-3.0.9/drivers/
22902 cleanup_objs:
22903 drm_gem_object_unreference(&work->old_fb_obj->base);
22904 drm_gem_object_unreference(&obj->base);
22905 -diff -urNp linux-3.0.9/drivers/gpu/drm/mga/mga_drv.h linux-3.0.9/drivers/gpu/drm/mga/mga_drv.h
22906 ---- linux-3.0.9/drivers/gpu/drm/mga/mga_drv.h 2011-11-11 13:12:24.000000000 -0500
22907 -+++ linux-3.0.9/drivers/gpu/drm/mga/mga_drv.h 2011-11-15 20:02:59.000000000 -0500
22908 +diff -urNp linux-3.1.1/drivers/gpu/drm/mga/mga_drv.h linux-3.1.1/drivers/gpu/drm/mga/mga_drv.h
22909 +--- linux-3.1.1/drivers/gpu/drm/mga/mga_drv.h 2011-11-11 15:19:27.000000000 -0500
22910 ++++ linux-3.1.1/drivers/gpu/drm/mga/mga_drv.h 2011-11-16 18:39:07.000000000 -0500
22911 @@ -120,9 +120,9 @@ typedef struct drm_mga_private {
22912 u32 clear_cmd;
22913 u32 maccess;
22914 @@ -26827,9 +26803,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/mga/mga_drv.h linux-3.0.9/drivers/gpu/drm
22915 u32 next_fence_to_post;
22916
22917 unsigned int fb_cpp;
22918 -diff -urNp linux-3.0.9/drivers/gpu/drm/mga/mga_irq.c linux-3.0.9/drivers/gpu/drm/mga/mga_irq.c
22919 ---- linux-3.0.9/drivers/gpu/drm/mga/mga_irq.c 2011-11-11 13:12:24.000000000 -0500
22920 -+++ linux-3.0.9/drivers/gpu/drm/mga/mga_irq.c 2011-11-15 20:02:59.000000000 -0500
22921 +diff -urNp linux-3.1.1/drivers/gpu/drm/mga/mga_irq.c linux-3.1.1/drivers/gpu/drm/mga/mga_irq.c
22922 +--- linux-3.1.1/drivers/gpu/drm/mga/mga_irq.c 2011-11-11 15:19:27.000000000 -0500
22923 ++++ linux-3.1.1/drivers/gpu/drm/mga/mga_irq.c 2011-11-16 18:39:07.000000000 -0500
22924 @@ -44,7 +44,7 @@ u32 mga_get_vblank_counter(struct drm_de
22925 if (crtc != 0)
22926 return 0;
22927 @@ -26866,10 +26842,10 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/mga/mga_irq.c linux-3.0.9/drivers/gpu/drm
22928 - *sequence) <= (1 << 23)));
22929
22930 *sequence = cur_fence;
22931 -diff -urNp linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_bios.c linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_bios.c
22932 ---- linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_bios.c 2011-11-11 13:12:24.000000000 -0500
22933 -+++ linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_bios.c 2011-11-15 20:02:59.000000000 -0500
22934 -@@ -200,7 +200,7 @@ struct methods {
22935 +diff -urNp linux-3.1.1/drivers/gpu/drm/nouveau/nouveau_bios.c linux-3.1.1/drivers/gpu/drm/nouveau/nouveau_bios.c
22936 +--- linux-3.1.1/drivers/gpu/drm/nouveau/nouveau_bios.c 2011-11-11 15:19:27.000000000 -0500
22937 ++++ linux-3.1.1/drivers/gpu/drm/nouveau/nouveau_bios.c 2011-11-16 18:39:07.000000000 -0500
22938 +@@ -201,7 +201,7 @@ struct methods {
22939 const char desc[8];
22940 void (*loadbios)(struct drm_device *, uint8_t *);
22941 const bool rw;
22942 @@ -26878,7 +26854,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_bios.c linux-3.0.9/driver
22943
22944 static struct methods shadow_methods[] = {
22945 { "PRAMIN", load_vbios_pramin, true },
22946 -@@ -5488,7 +5488,7 @@ parse_bit_displayport_tbl_entry(struct d
22947 +@@ -5489,7 +5489,7 @@ parse_bit_displayport_tbl_entry(struct d
22948 struct bit_table {
22949 const char id;
22950 int (* const parse_fn)(struct drm_device *, struct nvbios *, struct bit_entry *);
22951 @@ -26887,19 +26863,19 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_bios.c linux-3.0.9/driver
22952
22953 #define BIT_TABLE(id, funcid) ((struct bit_table){ id, parse_bit_##funcid##_tbl_entry })
22954
22955 -diff -urNp linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_drv.h linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_drv.h
22956 ---- linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_drv.h 2011-11-11 13:12:24.000000000 -0500
22957 -+++ linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_drv.h 2011-11-15 20:02:59.000000000 -0500
22958 -@@ -227,7 +227,7 @@ struct nouveau_channel {
22959 +diff -urNp linux-3.1.1/drivers/gpu/drm/nouveau/nouveau_drv.h linux-3.1.1/drivers/gpu/drm/nouveau/nouveau_drv.h
22960 +--- linux-3.1.1/drivers/gpu/drm/nouveau/nouveau_drv.h 2011-11-11 15:19:27.000000000 -0500
22961 ++++ linux-3.1.1/drivers/gpu/drm/nouveau/nouveau_drv.h 2011-11-16 18:39:07.000000000 -0500
22962 +@@ -238,7 +238,7 @@ struct nouveau_channel {
22963 struct list_head pending;
22964 uint32_t sequence;
22965 uint32_t sequence_ack;
22966 - atomic_t last_sequence_irq;
22967 + atomic_unchecked_t last_sequence_irq;
22968 + struct nouveau_vma vma;
22969 } fence;
22970
22971 - /* DMA push buffer */
22972 -@@ -304,7 +304,7 @@ struct nouveau_exec_engine {
22973 +@@ -319,7 +319,7 @@ struct nouveau_exec_engine {
22974 u32 handle, u16 class);
22975 void (*set_tile_region)(struct drm_device *dev, int i);
22976 void (*tlb_flush)(struct drm_device *, int engine);
22977 @@ -26908,7 +26884,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_drv.h linux-3.0.9/drivers
22978
22979 struct nouveau_instmem_engine {
22980 void *priv;
22981 -@@ -325,13 +325,13 @@ struct nouveau_instmem_engine {
22982 +@@ -341,13 +341,13 @@ struct nouveau_instmem_engine {
22983 struct nouveau_mc_engine {
22984 int (*init)(struct drm_device *dev);
22985 void (*takedown)(struct drm_device *dev);
22986 @@ -26924,7 +26900,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_drv.h linux-3.0.9/drivers
22987
22988 struct nouveau_fb_engine {
22989 int num_tiles;
22990 -@@ -494,7 +494,7 @@ struct nouveau_vram_engine {
22991 +@@ -513,7 +513,7 @@ struct nouveau_vram_engine {
22992 void (*put)(struct drm_device *, struct nouveau_mem **);
22993
22994 bool (*flags_valid)(struct drm_device *, u32 tile_flags);
22995 @@ -26933,7 +26909,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_drv.h linux-3.0.9/drivers
22996
22997 struct nouveau_engine {
22998 struct nouveau_instmem_engine instmem;
22999 -@@ -640,7 +640,7 @@ struct drm_nouveau_private {
23000 +@@ -660,7 +660,7 @@ struct drm_nouveau_private {
23001 struct drm_global_reference mem_global_ref;
23002 struct ttm_bo_global_ref bo_global_ref;
23003 struct ttm_bo_device bdev;
23004 @@ -26942,9 +26918,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_drv.h linux-3.0.9/drivers
23005 } ttm;
23006
23007 struct {
23008 -diff -urNp linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_fence.c linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_fence.c
23009 ---- linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_fence.c 2011-11-11 13:12:24.000000000 -0500
23010 -+++ linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_fence.c 2011-11-15 20:02:59.000000000 -0500
23011 +diff -urNp linux-3.1.1/drivers/gpu/drm/nouveau/nouveau_fence.c linux-3.1.1/drivers/gpu/drm/nouveau/nouveau_fence.c
23012 +--- linux-3.1.1/drivers/gpu/drm/nouveau/nouveau_fence.c 2011-11-11 15:19:27.000000000 -0500
23013 ++++ linux-3.1.1/drivers/gpu/drm/nouveau/nouveau_fence.c 2011-11-16 18:39:07.000000000 -0500
23014 @@ -85,7 +85,7 @@ nouveau_fence_update(struct nouveau_chan
23015 if (USE_REFCNT(dev))
23016 sequence = nvchan_rd32(chan, 0x48);
23017 @@ -26954,7 +26930,7 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_fence.c linux-3.0.9/drive
23018
23019 if (chan->fence.sequence_ack == sequence)
23020 goto out;
23021 -@@ -544,7 +544,7 @@ nouveau_fence_channel_init(struct nouvea
23022 +@@ -541,7 +541,7 @@ nouveau_fence_channel_init(struct nouvea
23023
23024 INIT_LIST_HEAD(&chan->fence.pending);
23025 spin_lock_init(&chan->fence.lock);
23026 @@ -26963,10 +26939,10 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_fence.c linux-3.0.9/drive
23027 return 0;
23028 }
23029
23030 -diff -urNp linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_gem.c linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_gem.c
23031 ---- linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_gem.c 2011-11-11 13:12:24.000000000 -0500
23032 -+++ linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_gem.c 2011-11-15 20:02:59.000000000 -0500
23033 -@@ -249,7 +249,7 @@ validate_init(struct nouveau_channel *ch
23034 +diff -urNp linux-3.1.1/drivers/gpu/drm/nouveau/nouveau_gem.c linux-3.1.1/drivers/gpu/drm/nouveau/nouveau_gem.c
23035 +--- linux-3.1.1/drivers/gpu/drm/nouveau/nouveau_gem.c 2011-11-11 15:19:27.000000000 -0500
23036 ++++ linux-3.1.1/drivers/gpu/drm/nouveau/nouveau_gem.c 2011-11-16 18:39:07.000000000 -0500
23037 +@@ -314,7 +314,7 @@ validate_init(struct nouveau_channel *ch
23038 int trycnt = 0;
23039 int ret, i;
23040
23041 @@ -26975,10 +26951,10 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_gem.c linux-3.0.9/drivers
23042 retry:
23043 if (++trycnt > 100000) {
23044 NV_ERROR(dev, "%s failed and gave up.\n", __func__);
23045 -diff -urNp linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_state.c linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_state.c
23046 ---- linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_state.c 2011-11-11 13:12:24.000000000 -0500
23047 -+++ linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_state.c 2011-11-15 20:02:59.000000000 -0500
23048 -@@ -488,7 +488,7 @@ static bool nouveau_switcheroo_can_switc
23049 +diff -urNp linux-3.1.1/drivers/gpu/drm/nouveau/nouveau_state.c linux-3.1.1/drivers/gpu/drm/nouveau/nouveau_state.c
23050 +--- linux-3.1.1/drivers/gpu/drm/nouveau/nouveau_state.c 2011-11-11 15:19:27.000000000 -0500
23051 ++++ linux-3.1.1/drivers/gpu/drm/nouveau/nouveau_state.c 2011-11-16 18:39:07.000000000 -0500
23052 +@@ -496,7 +496,7 @@ static bool nouveau_switcheroo_can_switc
23053 bool can_switch;
23054
23055 spin_lock(&dev->count_lock);
23056 @@ -26987,10 +26963,10 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/nouveau/nouveau_state.c linux-3.0.9/drive
23057 spin_unlock(&dev->count_lock);
23058 return can_switch;
23059 }
23060 -diff -urNp linux-3.0.9/drivers/gpu/drm/nouveau/nv04_graph.c linux-3.0.9/drivers/gpu/drm/nouveau/nv04_graph.c
23061 ---- linux-3.0.9/drivers/gpu/drm/nouveau/nv04_graph.c 2011-11-11 13:12:24.000000000 -0500
23062 -+++ linux-3.0.9/drivers/gpu/drm/nouveau/nv04_graph.c 2011-11-15 20:02:59.000000000 -0500
23063 -@@ -560,7 +560,7 @@ static int
23064 +diff -urNp linux-3.1.1/drivers/gpu/drm/nouveau/nv04_graph.c linux-3.1.1/drivers/gpu/drm/nouveau/nv04_graph.c
23065 +--- linux-3.1.1/drivers/gpu/drm/nouveau/nv04_graph.c 2011-11-11 15:19:27.000000000 -0500
23066 ++++ linux-3.1.1/drivers/gpu/drm/nouveau/nv04_graph.c 2011-11-16 18:39:07.000000000 -0500
23067 +@@ -554,7 +554,7 @@ static int
23068 nv04_graph_mthd_set_ref(struct nouveau_channel *chan,
23069 u32 class, u32 mthd, u32 data)
23070 {
23071 @@ -26999,9 +26975,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/nouveau/nv04_graph.c linux-3.0.9/drivers/
23072 return 0;
23073 }
23074
23075 -diff -urNp linux-3.0.9/drivers/gpu/drm/r128/r128_cce.c linux-3.0.9/drivers/gpu/drm/r128/r128_cce.c
23076 ---- linux-3.0.9/drivers/gpu/drm/r128/r128_cce.c 2011-11-11 13:12:24.000000000 -0500
23077 -+++ linux-3.0.9/drivers/gpu/drm/r128/r128_cce.c 2011-11-15 20:02:59.000000000 -0500
23078 +diff -urNp linux-3.1.1/drivers/gpu/drm/r128/r128_cce.c linux-3.1.1/drivers/gpu/drm/r128/r128_cce.c
23079 +--- linux-3.1.1/drivers/gpu/drm/r128/r128_cce.c 2011-11-11 15:19:27.000000000 -0500
23080 ++++ linux-3.1.1/drivers/gpu/drm/r128/r128_cce.c 2011-11-16 18:39:07.000000000 -0500
23081 @@ -377,7 +377,7 @@ static int r128_do_init_cce(struct drm_d
23082
23083 /* GH: Simple idle check.
23084 @@ -27011,9 +26987,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/r128/r128_cce.c linux-3.0.9/drivers/gpu/d
23085
23086 /* We don't support anything other than bus-mastering ring mode,
23087 * but the ring can be in either AGP or PCI space for the ring
23088 -diff -urNp linux-3.0.9/drivers/gpu/drm/r128/r128_drv.h linux-3.0.9/drivers/gpu/drm/r128/r128_drv.h
23089 ---- linux-3.0.9/drivers/gpu/drm/r128/r128_drv.h 2011-11-11 13:12:24.000000000 -0500
23090 -+++ linux-3.0.9/drivers/gpu/drm/r128/r128_drv.h 2011-11-15 20:02:59.000000000 -0500
23091 +diff -urNp linux-3.1.1/drivers/gpu/drm/r128/r128_drv.h linux-3.1.1/drivers/gpu/drm/r128/r128_drv.h
23092 +--- linux-3.1.1/drivers/gpu/drm/r128/r128_drv.h 2011-11-11 15:19:27.000000000 -0500
23093 ++++ linux-3.1.1/drivers/gpu/drm/r128/r128_drv.h 2011-11-16 18:39:07.000000000 -0500
23094 @@ -90,14 +90,14 @@ typedef struct drm_r128_private {
23095 int is_pci;
23096 unsigned long cce_buffers_offset;
23097 @@ -27031,9 +27007,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/r128/r128_drv.h linux-3.0.9/drivers/gpu/d
23098
23099 u32 color_fmt;
23100 unsigned int front_offset;
23101 -diff -urNp linux-3.0.9/drivers/gpu/drm/r128/r128_irq.c linux-3.0.9/drivers/gpu/drm/r128/r128_irq.c
23102 ---- linux-3.0.9/drivers/gpu/drm/r128/r128_irq.c 2011-11-11 13:12:24.000000000 -0500
23103 -+++ linux-3.0.9/drivers/gpu/drm/r128/r128_irq.c 2011-11-15 20:02:59.000000000 -0500
23104 +diff -urNp linux-3.1.1/drivers/gpu/drm/r128/r128_irq.c linux-3.1.1/drivers/gpu/drm/r128/r128_irq.c
23105 +--- linux-3.1.1/drivers/gpu/drm/r128/r128_irq.c 2011-11-11 15:19:27.000000000 -0500
23106 ++++ linux-3.1.1/drivers/gpu/drm/r128/r128_irq.c 2011-11-16 18:39:07.000000000 -0500
23107 @@ -42,7 +42,7 @@ u32 r128_get_vblank_counter(struct drm_d
23108 if (crtc != 0)
23109 return 0;
23110 @@ -27052,9 +27028,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/r128/r128_irq.c linux-3.0.9/drivers/gpu/d
23111 drm_handle_vblank(dev, 0);
23112 return IRQ_HANDLED;
23113 }
23114 -diff -urNp linux-3.0.9/drivers/gpu/drm/r128/r128_state.c linux-3.0.9/drivers/gpu/drm/r128/r128_state.c
23115 ---- linux-3.0.9/drivers/gpu/drm/r128/r128_state.c 2011-11-11 13:12:24.000000000 -0500
23116 -+++ linux-3.0.9/drivers/gpu/drm/r128/r128_state.c 2011-11-15 20:02:59.000000000 -0500
23117 +diff -urNp linux-3.1.1/drivers/gpu/drm/r128/r128_state.c linux-3.1.1/drivers/gpu/drm/r128/r128_state.c
23118 +--- linux-3.1.1/drivers/gpu/drm/r128/r128_state.c 2011-11-11 15:19:27.000000000 -0500
23119 ++++ linux-3.1.1/drivers/gpu/drm/r128/r128_state.c 2011-11-16 18:39:07.000000000 -0500
23120 @@ -321,10 +321,10 @@ static void r128_clear_box(drm_r128_priv
23121
23122 static void r128_cce_performance_boxes(drm_r128_private_t *dev_priv)
23123 @@ -27068,21 +27044,21 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/r128/r128_state.c linux-3.0.9/drivers/gpu
23124 }
23125
23126 #endif
23127 -diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/atom.c linux-3.0.9/drivers/gpu/drm/radeon/atom.c
23128 ---- linux-3.0.9/drivers/gpu/drm/radeon/atom.c 2011-11-11 13:12:24.000000000 -0500
23129 -+++ linux-3.0.9/drivers/gpu/drm/radeon/atom.c 2011-11-15 20:02:59.000000000 -0500
23130 +diff -urNp linux-3.1.1/drivers/gpu/drm/radeon/atom.c linux-3.1.1/drivers/gpu/drm/radeon/atom.c
23131 +--- linux-3.1.1/drivers/gpu/drm/radeon/atom.c 2011-11-11 15:19:27.000000000 -0500
23132 ++++ linux-3.1.1/drivers/gpu/drm/radeon/atom.c 2011-11-16 19:09:42.000000000 -0500
23133 @@ -1254,6 +1254,8 @@ struct atom_context *atom_parse(struct c
23134 char name[512];
23135 int i;
23136
23137 + pax_track_stack();
23138 +
23139 - ctx->card = card;
23140 - ctx->bios = bios;
23141 + if (!ctx)
23142 + return NULL;
23143
23144 -diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/mkregtable.c linux-3.0.9/drivers/gpu/drm/radeon/mkregtable.c
23145 ---- linux-3.0.9/drivers/gpu/drm/radeon/mkregtable.c 2011-11-11 13:12:24.000000000 -0500
23146 -+++ linux-3.0.9/drivers/gpu/drm/radeon/mkregtable.c 2011-11-15 20:02:59.000000000 -0500
23147 +diff -urNp linux-3.1.1/drivers/gpu/drm/radeon/mkregtable.c linux-3.1.1/drivers/gpu/drm/radeon/mkregtable.c
23148 +--- linux-3.1.1/drivers/gpu/drm/radeon/mkregtable.c 2011-11-11 15:19:27.000000000 -0500
23149 ++++ linux-3.1.1/drivers/gpu/drm/radeon/mkregtable.c 2011-11-16 18:39:07.000000000 -0500
23150 @@ -637,14 +637,14 @@ static int parser_auth(struct table *t,
23151 regex_t mask_rex;
23152 regmatch_t match[4];
23153 @@ -27100,9 +27076,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/mkregtable.c linux-3.0.9/drivers/g
23154
23155 if (regcomp
23156 (&mask_rex, "(0x[0-9a-fA-F]*) *([_a-zA-Z0-9]*)", REG_EXTENDED)) {
23157 -diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/radeon_atombios.c linux-3.0.9/drivers/gpu/drm/radeon/radeon_atombios.c
23158 ---- linux-3.0.9/drivers/gpu/drm/radeon/radeon_atombios.c 2011-11-11 13:12:24.000000000 -0500
23159 -+++ linux-3.0.9/drivers/gpu/drm/radeon/radeon_atombios.c 2011-11-15 20:02:59.000000000 -0500
23160 +diff -urNp linux-3.1.1/drivers/gpu/drm/radeon/radeon_atombios.c linux-3.1.1/drivers/gpu/drm/radeon/radeon_atombios.c
23161 +--- linux-3.1.1/drivers/gpu/drm/radeon/radeon_atombios.c 2011-11-11 15:19:27.000000000 -0500
23162 ++++ linux-3.1.1/drivers/gpu/drm/radeon/radeon_atombios.c 2011-11-16 18:40:10.000000000 -0500
23163 @@ -545,6 +545,8 @@ bool radeon_get_atom_connector_info_from
23164 struct radeon_gpio_rec gpio;
23165 struct radeon_hpd hpd;
23166 @@ -27112,10 +27088,10 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/radeon_atombios.c linux-3.0.9/driv
23167 if (!atom_parse_data_header(ctx, index, &size, &frev, &crev, &data_offset))
23168 return false;
23169
23170 -diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/radeon_device.c linux-3.0.9/drivers/gpu/drm/radeon/radeon_device.c
23171 ---- linux-3.0.9/drivers/gpu/drm/radeon/radeon_device.c 2011-11-11 13:12:24.000000000 -0500
23172 -+++ linux-3.0.9/drivers/gpu/drm/radeon/radeon_device.c 2011-11-15 20:02:59.000000000 -0500
23173 -@@ -678,7 +678,7 @@ static bool radeon_switcheroo_can_switch
23174 +diff -urNp linux-3.1.1/drivers/gpu/drm/radeon/radeon_device.c linux-3.1.1/drivers/gpu/drm/radeon/radeon_device.c
23175 +--- linux-3.1.1/drivers/gpu/drm/radeon/radeon_device.c 2011-11-11 15:19:27.000000000 -0500
23176 ++++ linux-3.1.1/drivers/gpu/drm/radeon/radeon_device.c 2011-11-16 18:39:07.000000000 -0500
23177 +@@ -684,7 +684,7 @@ static bool radeon_switcheroo_can_switch
23178 bool can_switch;
23179
23180 spin_lock(&dev->count_lock);
23181 @@ -27124,10 +27100,10 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/radeon_device.c linux-3.0.9/driver
23182 spin_unlock(&dev->count_lock);
23183 return can_switch;
23184 }
23185 -diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/radeon_display.c linux-3.0.9/drivers/gpu/drm/radeon/radeon_display.c
23186 ---- linux-3.0.9/drivers/gpu/drm/radeon/radeon_display.c 2011-11-11 13:12:24.000000000 -0500
23187 -+++ linux-3.0.9/drivers/gpu/drm/radeon/radeon_display.c 2011-11-15 20:02:59.000000000 -0500
23188 -@@ -946,6 +946,8 @@ void radeon_compute_pll_legacy(struct ra
23189 +diff -urNp linux-3.1.1/drivers/gpu/drm/radeon/radeon_display.c linux-3.1.1/drivers/gpu/drm/radeon/radeon_display.c
23190 +--- linux-3.1.1/drivers/gpu/drm/radeon/radeon_display.c 2011-11-11 15:19:27.000000000 -0500
23191 ++++ linux-3.1.1/drivers/gpu/drm/radeon/radeon_display.c 2011-11-16 18:40:10.000000000 -0500
23192 +@@ -925,6 +925,8 @@ void radeon_compute_pll_legacy(struct ra
23193 uint32_t post_div;
23194 u32 pll_out_min, pll_out_max;
23195
23196 @@ -27136,9 +27112,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/radeon_display.c linux-3.0.9/drive
23197 DRM_DEBUG_KMS("PLL freq %llu %u %u\n", freq, pll->min_ref_div, pll->max_ref_div);
23198 freq = freq * 1000;
23199
23200 -diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/radeon_drv.h linux-3.0.9/drivers/gpu/drm/radeon/radeon_drv.h
23201 ---- linux-3.0.9/drivers/gpu/drm/radeon/radeon_drv.h 2011-11-11 13:12:24.000000000 -0500
23202 -+++ linux-3.0.9/drivers/gpu/drm/radeon/radeon_drv.h 2011-11-15 20:02:59.000000000 -0500
23203 +diff -urNp linux-3.1.1/drivers/gpu/drm/radeon/radeon_drv.h linux-3.1.1/drivers/gpu/drm/radeon/radeon_drv.h
23204 +--- linux-3.1.1/drivers/gpu/drm/radeon/radeon_drv.h 2011-11-11 15:19:27.000000000 -0500
23205 ++++ linux-3.1.1/drivers/gpu/drm/radeon/radeon_drv.h 2011-11-16 18:39:07.000000000 -0500
23206 @@ -255,7 +255,7 @@ typedef struct drm_radeon_private {
23207
23208 /* SW interrupt */
23209 @@ -27148,9 +27124,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/radeon_drv.h linux-3.0.9/drivers/g
23210 int vblank_crtc;
23211 uint32_t irq_enable_reg;
23212 uint32_t r500_disp_irq_reg;
23213 -diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/radeon_fence.c linux-3.0.9/drivers/gpu/drm/radeon/radeon_fence.c
23214 ---- linux-3.0.9/drivers/gpu/drm/radeon/radeon_fence.c 2011-11-11 13:12:24.000000000 -0500
23215 -+++ linux-3.0.9/drivers/gpu/drm/radeon/radeon_fence.c 2011-11-15 20:02:59.000000000 -0500
23216 +diff -urNp linux-3.1.1/drivers/gpu/drm/radeon/radeon_fence.c linux-3.1.1/drivers/gpu/drm/radeon/radeon_fence.c
23217 +--- linux-3.1.1/drivers/gpu/drm/radeon/radeon_fence.c 2011-11-11 15:19:27.000000000 -0500
23218 ++++ linux-3.1.1/drivers/gpu/drm/radeon/radeon_fence.c 2011-11-16 18:39:07.000000000 -0500
23219 @@ -78,7 +78,7 @@ int radeon_fence_emit(struct radeon_devi
23220 write_unlock_irqrestore(&rdev->fence_drv.lock, irq_flags);
23221 return 0;
23222 @@ -27169,9 +27145,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/radeon_fence.c linux-3.0.9/drivers
23223 INIT_LIST_HEAD(&rdev->fence_drv.created);
23224 INIT_LIST_HEAD(&rdev->fence_drv.emited);
23225 INIT_LIST_HEAD(&rdev->fence_drv.signaled);
23226 -diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/radeon.h linux-3.0.9/drivers/gpu/drm/radeon/radeon.h
23227 ---- linux-3.0.9/drivers/gpu/drm/radeon/radeon.h 2011-11-11 13:12:24.000000000 -0500
23228 -+++ linux-3.0.9/drivers/gpu/drm/radeon/radeon.h 2011-11-15 20:02:59.000000000 -0500
23229 +diff -urNp linux-3.1.1/drivers/gpu/drm/radeon/radeon.h linux-3.1.1/drivers/gpu/drm/radeon/radeon.h
23230 +--- linux-3.1.1/drivers/gpu/drm/radeon/radeon.h 2011-11-11 15:19:27.000000000 -0500
23231 ++++ linux-3.1.1/drivers/gpu/drm/radeon/radeon.h 2011-11-16 18:39:07.000000000 -0500
23232 @@ -192,7 +192,7 @@ extern int sumo_get_temp(struct radeon_d
23233 */
23234 struct radeon_fence_driver {
23235 @@ -27190,9 +27166,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/radeon.h linux-3.0.9/drivers/gpu/d
23236
23237 /*
23238 * Asic structures
23239 -diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/radeon_ioc32.c linux-3.0.9/drivers/gpu/drm/radeon/radeon_ioc32.c
23240 ---- linux-3.0.9/drivers/gpu/drm/radeon/radeon_ioc32.c 2011-11-11 13:12:24.000000000 -0500
23241 -+++ linux-3.0.9/drivers/gpu/drm/radeon/radeon_ioc32.c 2011-11-15 20:02:59.000000000 -0500
23242 +diff -urNp linux-3.1.1/drivers/gpu/drm/radeon/radeon_ioc32.c linux-3.1.1/drivers/gpu/drm/radeon/radeon_ioc32.c
23243 +--- linux-3.1.1/drivers/gpu/drm/radeon/radeon_ioc32.c 2011-11-11 15:19:27.000000000 -0500
23244 ++++ linux-3.1.1/drivers/gpu/drm/radeon/radeon_ioc32.c 2011-11-16 18:39:07.000000000 -0500
23245 @@ -359,7 +359,7 @@ static int compat_radeon_cp_setparam(str
23246 request = compat_alloc_user_space(sizeof(*request));
23247 if (!access_ok(VERIFY_WRITE, request, sizeof(*request))
23248 @@ -27202,9 +27178,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/radeon_ioc32.c linux-3.0.9/drivers
23249 &request->value))
23250 return -EFAULT;
23251
23252 -diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/radeon_irq.c linux-3.0.9/drivers/gpu/drm/radeon/radeon_irq.c
23253 ---- linux-3.0.9/drivers/gpu/drm/radeon/radeon_irq.c 2011-11-11 13:12:24.000000000 -0500
23254 -+++ linux-3.0.9/drivers/gpu/drm/radeon/radeon_irq.c 2011-11-15 20:02:59.000000000 -0500
23255 +diff -urNp linux-3.1.1/drivers/gpu/drm/radeon/radeon_irq.c linux-3.1.1/drivers/gpu/drm/radeon/radeon_irq.c
23256 +--- linux-3.1.1/drivers/gpu/drm/radeon/radeon_irq.c 2011-11-11 15:19:27.000000000 -0500
23257 ++++ linux-3.1.1/drivers/gpu/drm/radeon/radeon_irq.c 2011-11-16 18:39:07.000000000 -0500
23258 @@ -225,8 +225,8 @@ static int radeon_emit_irq(struct drm_de
23259 unsigned int ret;
23260 RING_LOCALS;
23261 @@ -27225,9 +27201,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/radeon_irq.c linux-3.0.9/drivers/g
23262 DRM_INIT_WAITQUEUE(&dev_priv->swi_queue);
23263
23264 dev->max_vblank_count = 0x001fffff;
23265 -diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/radeon_state.c linux-3.0.9/drivers/gpu/drm/radeon/radeon_state.c
23266 ---- linux-3.0.9/drivers/gpu/drm/radeon/radeon_state.c 2011-11-11 13:12:24.000000000 -0500
23267 -+++ linux-3.0.9/drivers/gpu/drm/radeon/radeon_state.c 2011-11-15 20:02:59.000000000 -0500
23268 +diff -urNp linux-3.1.1/drivers/gpu/drm/radeon/radeon_state.c linux-3.1.1/drivers/gpu/drm/radeon/radeon_state.c
23269 +--- linux-3.1.1/drivers/gpu/drm/radeon/radeon_state.c 2011-11-11 15:19:27.000000000 -0500
23270 ++++ linux-3.1.1/drivers/gpu/drm/radeon/radeon_state.c 2011-11-16 18:39:07.000000000 -0500
23271 @@ -2168,7 +2168,7 @@ static int radeon_cp_clear(struct drm_de
23272 if (sarea_priv->nbox > RADEON_NR_SAREA_CLIPRECTS)
23273 sarea_priv->nbox = RADEON_NR_SAREA_CLIPRECTS;
23274 @@ -27246,10 +27222,10 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/radeon_state.c linux-3.0.9/drivers
23275
23276 DRM_DEBUG("pid=%d\n", DRM_CURRENTPID);
23277
23278 -diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/radeon_ttm.c linux-3.0.9/drivers/gpu/drm/radeon/radeon_ttm.c
23279 ---- linux-3.0.9/drivers/gpu/drm/radeon/radeon_ttm.c 2011-11-11 13:12:24.000000000 -0500
23280 -+++ linux-3.0.9/drivers/gpu/drm/radeon/radeon_ttm.c 2011-11-15 20:02:59.000000000 -0500
23281 -@@ -649,8 +649,10 @@ int radeon_mmap(struct file *filp, struc
23282 +diff -urNp linux-3.1.1/drivers/gpu/drm/radeon/radeon_ttm.c linux-3.1.1/drivers/gpu/drm/radeon/radeon_ttm.c
23283 +--- linux-3.1.1/drivers/gpu/drm/radeon/radeon_ttm.c 2011-11-11 15:19:27.000000000 -0500
23284 ++++ linux-3.1.1/drivers/gpu/drm/radeon/radeon_ttm.c 2011-11-16 18:39:07.000000000 -0500
23285 +@@ -672,8 +672,10 @@ int radeon_mmap(struct file *filp, struc
23286 }
23287 if (unlikely(ttm_vm_ops == NULL)) {
23288 ttm_vm_ops = vma->vm_ops;
23289 @@ -27262,9 +27238,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/radeon_ttm.c linux-3.0.9/drivers/g
23290 }
23291 vma->vm_ops = &radeon_ttm_vm_ops;
23292 return 0;
23293 -diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/rs690.c linux-3.0.9/drivers/gpu/drm/radeon/rs690.c
23294 ---- linux-3.0.9/drivers/gpu/drm/radeon/rs690.c 2011-11-11 13:12:24.000000000 -0500
23295 -+++ linux-3.0.9/drivers/gpu/drm/radeon/rs690.c 2011-11-15 20:02:59.000000000 -0500
23296 +diff -urNp linux-3.1.1/drivers/gpu/drm/radeon/rs690.c linux-3.1.1/drivers/gpu/drm/radeon/rs690.c
23297 +--- linux-3.1.1/drivers/gpu/drm/radeon/rs690.c 2011-11-11 15:19:27.000000000 -0500
23298 ++++ linux-3.1.1/drivers/gpu/drm/radeon/rs690.c 2011-11-16 18:39:07.000000000 -0500
23299 @@ -304,9 +304,11 @@ void rs690_crtc_bandwidth_compute(struct
23300 if (rdev->pm.max_bandwidth.full > rdev->pm.sideport_bandwidth.full &&
23301 rdev->pm.sideport_bandwidth.full)
23302 @@ -27278,9 +27254,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/radeon/rs690.c linux-3.0.9/drivers/gpu/dr
23303 } else {
23304 if (rdev->pm.max_bandwidth.full > rdev->pm.k8_bandwidth.full &&
23305 rdev->pm.k8_bandwidth.full)
23306 -diff -urNp linux-3.0.9/drivers/gpu/drm/ttm/ttm_page_alloc.c linux-3.0.9/drivers/gpu/drm/ttm/ttm_page_alloc.c
23307 ---- linux-3.0.9/drivers/gpu/drm/ttm/ttm_page_alloc.c 2011-11-11 13:12:24.000000000 -0500
23308 -+++ linux-3.0.9/drivers/gpu/drm/ttm/ttm_page_alloc.c 2011-11-15 20:02:59.000000000 -0500
23309 +diff -urNp linux-3.1.1/drivers/gpu/drm/ttm/ttm_page_alloc.c linux-3.1.1/drivers/gpu/drm/ttm/ttm_page_alloc.c
23310 +--- linux-3.1.1/drivers/gpu/drm/ttm/ttm_page_alloc.c 2011-11-11 15:19:27.000000000 -0500
23311 ++++ linux-3.1.1/drivers/gpu/drm/ttm/ttm_page_alloc.c 2011-11-16 18:39:07.000000000 -0500
23312 @@ -398,9 +398,9 @@ static int ttm_pool_get_num_unused_pages
23313 static int ttm_pool_mm_shrink(struct shrinker *shrink,
23314 struct shrink_control *sc)
23315 @@ -27293,9 +27269,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/ttm/ttm_page_alloc.c linux-3.0.9/drivers/
23316 struct ttm_page_pool *pool;
23317 int shrink_pages = sc->nr_to_scan;
23318
23319 -diff -urNp linux-3.0.9/drivers/gpu/drm/via/via_drv.h linux-3.0.9/drivers/gpu/drm/via/via_drv.h
23320 ---- linux-3.0.9/drivers/gpu/drm/via/via_drv.h 2011-11-11 13:12:24.000000000 -0500
23321 -+++ linux-3.0.9/drivers/gpu/drm/via/via_drv.h 2011-11-15 20:02:59.000000000 -0500
23322 +diff -urNp linux-3.1.1/drivers/gpu/drm/via/via_drv.h linux-3.1.1/drivers/gpu/drm/via/via_drv.h
23323 +--- linux-3.1.1/drivers/gpu/drm/via/via_drv.h 2011-11-11 15:19:27.000000000 -0500
23324 ++++ linux-3.1.1/drivers/gpu/drm/via/via_drv.h 2011-11-16 18:39:07.000000000 -0500
23325 @@ -51,7 +51,7 @@ typedef struct drm_via_ring_buffer {
23326 typedef uint32_t maskarray_t[5];
23327
23328 @@ -27314,9 +27290,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/via/via_drv.h linux-3.0.9/drivers/gpu/drm
23329 drm_via_state_t hc_state;
23330 char pci_buf[VIA_PCI_BUF_SIZE];
23331 const uint32_t *fire_offsets[VIA_FIRE_BUF_SIZE];
23332 -diff -urNp linux-3.0.9/drivers/gpu/drm/via/via_irq.c linux-3.0.9/drivers/gpu/drm/via/via_irq.c
23333 ---- linux-3.0.9/drivers/gpu/drm/via/via_irq.c 2011-11-11 13:12:24.000000000 -0500
23334 -+++ linux-3.0.9/drivers/gpu/drm/via/via_irq.c 2011-11-15 20:02:59.000000000 -0500
23335 +diff -urNp linux-3.1.1/drivers/gpu/drm/via/via_irq.c linux-3.1.1/drivers/gpu/drm/via/via_irq.c
23336 +--- linux-3.1.1/drivers/gpu/drm/via/via_irq.c 2011-11-11 15:19:27.000000000 -0500
23337 ++++ linux-3.1.1/drivers/gpu/drm/via/via_irq.c 2011-11-16 18:39:07.000000000 -0500
23338 @@ -102,7 +102,7 @@ u32 via_get_vblank_counter(struct drm_de
23339 if (crtc != 0)
23340 return 0;
23341 @@ -27387,9 +27363,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/via/via_irq.c linux-3.0.9/drivers/gpu/drm
23342 irqwait->request.type &= ~_DRM_VBLANK_RELATIVE;
23343 case VIA_IRQ_ABSOLUTE:
23344 break;
23345 -diff -urNp linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
23346 ---- linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h 2011-11-11 13:12:24.000000000 -0500
23347 -+++ linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h 2011-11-15 20:02:59.000000000 -0500
23348 +diff -urNp linux-3.1.1/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h linux-3.1.1/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
23349 +--- linux-3.1.1/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h 2011-11-11 15:19:27.000000000 -0500
23350 ++++ linux-3.1.1/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h 2011-11-16 18:39:07.000000000 -0500
23351 @@ -240,7 +240,7 @@ struct vmw_private {
23352 * Fencing and IRQs.
23353 */
23354 @@ -27399,9 +27375,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h linux-3.0.9/drivers/g
23355 wait_queue_head_t fence_queue;
23356 wait_queue_head_t fifo_queue;
23357 atomic_t fence_queue_waiters;
23358 -diff -urNp linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
23359 ---- linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c 2011-11-11 13:12:24.000000000 -0500
23360 -+++ linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c 2011-11-15 20:02:59.000000000 -0500
23361 +diff -urNp linux-3.1.1/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c linux-3.1.1/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
23362 +--- linux-3.1.1/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c 2011-11-11 15:19:27.000000000 -0500
23363 ++++ linux-3.1.1/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c 2011-11-16 18:39:07.000000000 -0500
23364 @@ -610,7 +610,7 @@ int vmw_execbuf_ioctl(struct drm_device
23365 struct drm_vmw_fence_rep fence_rep;
23366 struct drm_vmw_fence_rep __user *user_fence_rep;
23367 @@ -27411,9 +27387,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c linux-3.0.9/drive
23368 void *cmd;
23369 uint32_t sequence;
23370 struct vmw_sw_context *sw_context = &dev_priv->ctx;
23371 -diff -urNp linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c
23372 ---- linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c 2011-11-11 13:12:24.000000000 -0500
23373 -+++ linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c 2011-11-15 20:02:59.000000000 -0500
23374 +diff -urNp linux-3.1.1/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c linux-3.1.1/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c
23375 +--- linux-3.1.1/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c 2011-11-11 15:19:27.000000000 -0500
23376 ++++ linux-3.1.1/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c 2011-11-16 18:39:07.000000000 -0500
23377 @@ -151,7 +151,7 @@ int vmw_wait_lag(struct vmw_private *dev
23378 while (!vmw_lag_lt(queue, us)) {
23379 spin_lock(&queue->lock);
23380 @@ -27423,9 +27399,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c linux-3.0.9/drivers
23381 else {
23382 fence = list_first_entry(&queue->head,
23383 struct vmw_fence, head);
23384 -diff -urNp linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
23385 ---- linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c 2011-11-11 13:12:24.000000000 -0500
23386 -+++ linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c 2011-11-15 20:02:59.000000000 -0500
23387 +diff -urNp linux-3.1.1/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c linux-3.1.1/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
23388 +--- linux-3.1.1/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c 2011-11-11 15:19:27.000000000 -0500
23389 ++++ linux-3.1.1/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c 2011-11-16 18:39:07.000000000 -0500
23390 @@ -137,7 +137,7 @@ int vmw_fifo_init(struct vmw_private *de
23391 (unsigned int) min,
23392 (unsigned int) fifo->capabilities);
23393 @@ -27462,9 +27438,9 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c linux-3.0.9/drivers/
23394 } while (*sequence == 0);
23395
23396 if (!(fifo_state->capabilities & SVGA_FIFO_CAP_FENCE)) {
23397 -diff -urNp linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c
23398 ---- linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c 2011-11-11 13:12:24.000000000 -0500
23399 -+++ linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c 2011-11-15 20:02:59.000000000 -0500
23400 +diff -urNp linux-3.1.1/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c linux-3.1.1/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c
23401 +--- linux-3.1.1/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c 2011-11-11 15:19:27.000000000 -0500
23402 ++++ linux-3.1.1/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c 2011-11-16 18:39:07.000000000 -0500
23403 @@ -100,7 +100,7 @@ bool vmw_fence_signaled(struct vmw_priva
23404 * emitted. Then the fence is stale and signaled.
23405 */
23406 @@ -27483,10 +27459,10 @@ diff -urNp linux-3.0.9/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c linux-3.0.9/drivers/g
23407 ret = 0;
23408
23409 for (;;) {
23410 -diff -urNp linux-3.0.9/drivers/hid/hid-core.c linux-3.0.9/drivers/hid/hid-core.c
23411 ---- linux-3.0.9/drivers/hid/hid-core.c 2011-11-11 13:12:24.000000000 -0500
23412 -+++ linux-3.0.9/drivers/hid/hid-core.c 2011-11-15 20:02:59.000000000 -0500
23413 -@@ -1940,7 +1940,7 @@ static bool hid_ignore(struct hid_device
23414 +diff -urNp linux-3.1.1/drivers/hid/hid-core.c linux-3.1.1/drivers/hid/hid-core.c
23415 +--- linux-3.1.1/drivers/hid/hid-core.c 2011-11-11 15:19:27.000000000 -0500
23416 ++++ linux-3.1.1/drivers/hid/hid-core.c 2011-11-16 18:39:07.000000000 -0500
23417 +@@ -1951,7 +1951,7 @@ static bool hid_ignore(struct hid_device
23418
23419 int hid_add_device(struct hid_device *hdev)
23420 {
23421 @@ -27495,7 +27471,7 @@ diff -urNp linux-3.0.9/drivers/hid/hid-core.c linux-3.0.9/drivers/hid/hid-core.c
23422 int ret;
23423
23424 if (WARN_ON(hdev->status & HID_STAT_ADDED))
23425 -@@ -1955,7 +1955,7 @@ int hid_add_device(struct hid_device *hd
23426 +@@ -1966,7 +1966,7 @@ int hid_add_device(struct hid_device *hd
23427 /* XXX hack, any other cleaner solution after the driver core
23428 * is converted to allow more than 20 bytes as the device name? */
23429 dev_set_name(&hdev->dev, "%04X:%04X:%04X.%04X", hdev->bus,
23430 @@ -27504,9 +27480,9 @@ diff -urNp linux-3.0.9/drivers/hid/hid-core.c linux-3.0.9/drivers/hid/hid-core.c
23431
23432 hid_debug_register(hdev, dev_name(&hdev->dev));
23433 ret = device_add(&hdev->dev);
23434 -diff -urNp linux-3.0.9/drivers/hid/usbhid/hiddev.c linux-3.0.9/drivers/hid/usbhid/hiddev.c
23435 ---- linux-3.0.9/drivers/hid/usbhid/hiddev.c 2011-11-11 13:12:24.000000000 -0500
23436 -+++ linux-3.0.9/drivers/hid/usbhid/hiddev.c 2011-11-15 20:02:59.000000000 -0500
23437 +diff -urNp linux-3.1.1/drivers/hid/usbhid/hiddev.c linux-3.1.1/drivers/hid/usbhid/hiddev.c
23438 +--- linux-3.1.1/drivers/hid/usbhid/hiddev.c 2011-11-11 15:19:27.000000000 -0500
23439 ++++ linux-3.1.1/drivers/hid/usbhid/hiddev.c 2011-11-16 18:39:07.000000000 -0500
23440 @@ -624,7 +624,7 @@ static long hiddev_ioctl(struct file *fi
23441 break;
23442
23443 @@ -27516,9 +27492,9 @@ diff -urNp linux-3.0.9/drivers/hid/usbhid/hiddev.c linux-3.0.9/drivers/hid/usbhi
23444 break;
23445
23446 for (i = 0; i < hid->maxcollection; i++)
23447 -diff -urNp linux-3.0.9/drivers/hwmon/acpi_power_meter.c linux-3.0.9/drivers/hwmon/acpi_power_meter.c
23448 ---- linux-3.0.9/drivers/hwmon/acpi_power_meter.c 2011-11-11 13:12:24.000000000 -0500
23449 -+++ linux-3.0.9/drivers/hwmon/acpi_power_meter.c 2011-11-15 20:02:59.000000000 -0500
23450 +diff -urNp linux-3.1.1/drivers/hwmon/acpi_power_meter.c linux-3.1.1/drivers/hwmon/acpi_power_meter.c
23451 +--- linux-3.1.1/drivers/hwmon/acpi_power_meter.c 2011-11-11 15:19:27.000000000 -0500
23452 ++++ linux-3.1.1/drivers/hwmon/acpi_power_meter.c 2011-11-16 18:39:07.000000000 -0500
23453 @@ -316,8 +316,6 @@ static ssize_t set_trip(struct device *d
23454 return res;
23455
23456 @@ -27528,9 +27504,9 @@ diff -urNp linux-3.0.9/drivers/hwmon/acpi_power_meter.c linux-3.0.9/drivers/hwmo
23457
23458 mutex_lock(&resource->lock);
23459 resource->trip[attr->index - 7] = temp;
23460 -diff -urNp linux-3.0.9/drivers/hwmon/sht15.c linux-3.0.9/drivers/hwmon/sht15.c
23461 ---- linux-3.0.9/drivers/hwmon/sht15.c 2011-11-11 13:12:24.000000000 -0500
23462 -+++ linux-3.0.9/drivers/hwmon/sht15.c 2011-11-15 20:02:59.000000000 -0500
23463 +diff -urNp linux-3.1.1/drivers/hwmon/sht15.c linux-3.1.1/drivers/hwmon/sht15.c
23464 +--- linux-3.1.1/drivers/hwmon/sht15.c 2011-11-11 15:19:27.000000000 -0500
23465 ++++ linux-3.1.1/drivers/hwmon/sht15.c 2011-11-16 18:39:07.000000000 -0500
23466 @@ -166,7 +166,7 @@ struct sht15_data {
23467 int supply_uV;
23468 bool supply_uV_valid;
23469 @@ -27579,23 +27555,9 @@ diff -urNp linux-3.0.9/drivers/hwmon/sht15.c linux-3.0.9/drivers/hwmon/sht15.c
23470 return;
23471 }
23472
23473 -diff -urNp linux-3.0.9/drivers/hwmon/w83791d.c linux-3.0.9/drivers/hwmon/w83791d.c
23474 ---- linux-3.0.9/drivers/hwmon/w83791d.c 2011-11-11 13:12:24.000000000 -0500
23475 -+++ linux-3.0.9/drivers/hwmon/w83791d.c 2011-11-15 20:02:59.000000000 -0500
23476 -@@ -329,8 +329,8 @@ static int w83791d_detect(struct i2c_cli
23477 - struct i2c_board_info *info);
23478 - static int w83791d_remove(struct i2c_client *client);
23479 -
23480 --static int w83791d_read(struct i2c_client *client, u8 register);
23481 --static int w83791d_write(struct i2c_client *client, u8 register, u8 value);
23482 -+static int w83791d_read(struct i2c_client *client, u8 reg);
23483 -+static int w83791d_write(struct i2c_client *client, u8 reg, u8 value);
23484 - static struct w83791d_data *w83791d_update_device(struct device *dev);
23485 -
23486 - #ifdef DEBUG
23487 -diff -urNp linux-3.0.9/drivers/i2c/busses/i2c-amd756-s4882.c linux-3.0.9/drivers/i2c/busses/i2c-amd756-s4882.c
23488 ---- linux-3.0.9/drivers/i2c/busses/i2c-amd756-s4882.c 2011-11-11 13:12:24.000000000 -0500
23489 -+++ linux-3.0.9/drivers/i2c/busses/i2c-amd756-s4882.c 2011-11-15 20:02:59.000000000 -0500
23490 +diff -urNp linux-3.1.1/drivers/i2c/busses/i2c-amd756-s4882.c linux-3.1.1/drivers/i2c/busses/i2c-amd756-s4882.c
23491 +--- linux-3.1.1/drivers/i2c/busses/i2c-amd756-s4882.c 2011-11-11 15:19:27.000000000 -0500
23492 ++++ linux-3.1.1/drivers/i2c/busses/i2c-amd756-s4882.c 2011-11-16 18:39:07.000000000 -0500
23493 @@ -43,7 +43,7 @@
23494 extern struct i2c_adapter amd756_smbus;
23495
23496 @@ -27605,9 +27567,9 @@ diff -urNp linux-3.0.9/drivers/i2c/busses/i2c-amd756-s4882.c linux-3.0.9/drivers
23497
23498 /* Wrapper access functions for multiplexed SMBus */
23499 static DEFINE_MUTEX(amd756_lock);
23500 -diff -urNp linux-3.0.9/drivers/i2c/busses/i2c-nforce2-s4985.c linux-3.0.9/drivers/i2c/busses/i2c-nforce2-s4985.c
23501 ---- linux-3.0.9/drivers/i2c/busses/i2c-nforce2-s4985.c 2011-11-11 13:12:24.000000000 -0500
23502 -+++ linux-3.0.9/drivers/i2c/busses/i2c-nforce2-s4985.c 2011-11-15 20:02:59.000000000 -0500
23503 +diff -urNp linux-3.1.1/drivers/i2c/busses/i2c-nforce2-s4985.c linux-3.1.1/drivers/i2c/busses/i2c-nforce2-s4985.c
23504 +--- linux-3.1.1/drivers/i2c/busses/i2c-nforce2-s4985.c 2011-11-11 15:19:27.000000000 -0500
23505 ++++ linux-3.1.1/drivers/i2c/busses/i2c-nforce2-s4985.c 2011-11-16 18:39:07.000000000 -0500
23506 @@ -41,7 +41,7 @@
23507 extern struct i2c_adapter *nforce2_smbus;
23508
23509 @@ -27617,9 +27579,9 @@ diff -urNp linux-3.0.9/drivers/i2c/busses/i2c-nforce2-s4985.c linux-3.0.9/driver
23510
23511 /* Wrapper access functions for multiplexed SMBus */
23512 static DEFINE_MUTEX(nforce2_lock);
23513 -diff -urNp linux-3.0.9/drivers/i2c/i2c-mux.c linux-3.0.9/drivers/i2c/i2c-mux.c
23514 ---- linux-3.0.9/drivers/i2c/i2c-mux.c 2011-11-11 13:12:24.000000000 -0500
23515 -+++ linux-3.0.9/drivers/i2c/i2c-mux.c 2011-11-15 20:02:59.000000000 -0500
23516 +diff -urNp linux-3.1.1/drivers/i2c/i2c-mux.c linux-3.1.1/drivers/i2c/i2c-mux.c
23517 +--- linux-3.1.1/drivers/i2c/i2c-mux.c 2011-11-11 15:19:27.000000000 -0500
23518 ++++ linux-3.1.1/drivers/i2c/i2c-mux.c 2011-11-16 18:39:07.000000000 -0500
23519 @@ -28,7 +28,7 @@
23520 /* multiplexer per channel data */
23521 struct i2c_mux_priv {
23522 @@ -27629,9 +27591,9 @@ diff -urNp linux-3.0.9/drivers/i2c/i2c-mux.c linux-3.0.9/drivers/i2c/i2c-mux.c
23523
23524 struct i2c_adapter *parent;
23525 void *mux_dev; /* the mux chip/device */
23526 -diff -urNp linux-3.0.9/drivers/ide/aec62xx.c linux-3.0.9/drivers/ide/aec62xx.c
23527 ---- linux-3.0.9/drivers/ide/aec62xx.c 2011-11-11 13:12:24.000000000 -0500
23528 -+++ linux-3.0.9/drivers/ide/aec62xx.c 2011-11-15 20:02:59.000000000 -0500
23529 +diff -urNp linux-3.1.1/drivers/ide/aec62xx.c linux-3.1.1/drivers/ide/aec62xx.c
23530 +--- linux-3.1.1/drivers/ide/aec62xx.c 2011-11-11 15:19:27.000000000 -0500
23531 ++++ linux-3.1.1/drivers/ide/aec62xx.c 2011-11-16 18:39:07.000000000 -0500
23532 @@ -181,7 +181,7 @@ static const struct ide_port_ops atp86x_
23533 .cable_detect = atp86x_cable_detect,
23534 };
23535 @@ -27641,9 +27603,9 @@ diff -urNp linux-3.0.9/drivers/ide/aec62xx.c linux-3.0.9/drivers/ide/aec62xx.c
23536 { /* 0: AEC6210 */
23537 .name = DRV_NAME,
23538 .init_chipset = init_chipset_aec62xx,
23539 -diff -urNp linux-3.0.9/drivers/ide/alim15x3.c linux-3.0.9/drivers/ide/alim15x3.c
23540 ---- linux-3.0.9/drivers/ide/alim15x3.c 2011-11-11 13:12:24.000000000 -0500
23541 -+++ linux-3.0.9/drivers/ide/alim15x3.c 2011-11-15 20:02:59.000000000 -0500
23542 +diff -urNp linux-3.1.1/drivers/ide/alim15x3.c linux-3.1.1/drivers/ide/alim15x3.c
23543 +--- linux-3.1.1/drivers/ide/alim15x3.c 2011-11-11 15:19:27.000000000 -0500
23544 ++++ linux-3.1.1/drivers/ide/alim15x3.c 2011-11-16 18:39:07.000000000 -0500
23545 @@ -512,7 +512,7 @@ static const struct ide_dma_ops ali_dma_
23546 .dma_sff_read_status = ide_dma_sff_read_status,
23547 };
23548 @@ -27653,9 +27615,9 @@ diff -urNp linux-3.0.9/drivers/ide/alim15x3.c linux-3.0.9/drivers/ide/alim15x3.c
23549 .name = DRV_NAME,
23550 .init_chipset = init_chipset_ali15x3,
23551 .init_hwif = init_hwif_ali15x3,
23552 -diff -urNp linux-3.0.9/drivers/ide/amd74xx.c linux-3.0.9/drivers/ide/amd74xx.c
23553 ---- linux-3.0.9/drivers/ide/amd74xx.c 2011-11-11 13:12:24.000000000 -0500
23554 -+++ linux-3.0.9/drivers/ide/amd74xx.c 2011-11-15 20:02:59.000000000 -0500
23555 +diff -urNp linux-3.1.1/drivers/ide/amd74xx.c linux-3.1.1/drivers/ide/amd74xx.c
23556 +--- linux-3.1.1/drivers/ide/amd74xx.c 2011-11-11 15:19:27.000000000 -0500
23557 ++++ linux-3.1.1/drivers/ide/amd74xx.c 2011-11-16 18:39:07.000000000 -0500
23558 @@ -223,7 +223,7 @@ static const struct ide_port_ops amd_por
23559 .udma_mask = udma, \
23560 }
23561 @@ -27665,9 +27627,9 @@ diff -urNp linux-3.0.9/drivers/ide/amd74xx.c linux-3.0.9/drivers/ide/amd74xx.c
23562 /* 0: AMD7401 */ DECLARE_AMD_DEV(0x00, ATA_UDMA2),
23563 /* 1: AMD7409 */ DECLARE_AMD_DEV(ATA_SWDMA2, ATA_UDMA4),
23564 /* 2: AMD7411/7441 */ DECLARE_AMD_DEV(ATA_SWDMA2, ATA_UDMA5),
23565 -diff -urNp linux-3.0.9/drivers/ide/atiixp.c linux-3.0.9/drivers/ide/atiixp.c
23566 ---- linux-3.0.9/drivers/ide/atiixp.c 2011-11-11 13:12:24.000000000 -0500
23567 -+++ linux-3.0.9/drivers/ide/atiixp.c 2011-11-15 20:02:59.000000000 -0500
23568 +diff -urNp linux-3.1.1/drivers/ide/atiixp.c linux-3.1.1/drivers/ide/atiixp.c
23569 +--- linux-3.1.1/drivers/ide/atiixp.c 2011-11-11 15:19:27.000000000 -0500
23570 ++++ linux-3.1.1/drivers/ide/atiixp.c 2011-11-16 18:39:07.000000000 -0500
23571 @@ -139,7 +139,7 @@ static const struct ide_port_ops atiixp_
23572 .cable_detect = atiixp_cable_detect,
23573 };
23574 @@ -27677,9 +27639,9 @@ diff -urNp linux-3.0.9/drivers/ide/atiixp.c linux-3.0.9/drivers/ide/atiixp.c
23575 { /* 0: IXP200/300/400/700 */
23576 .name = DRV_NAME,
23577 .enablebits = {{0x48,0x01,0x00}, {0x48,0x08,0x00}},
23578 -diff -urNp linux-3.0.9/drivers/ide/cmd64x.c linux-3.0.9/drivers/ide/cmd64x.c
23579 ---- linux-3.0.9/drivers/ide/cmd64x.c 2011-11-11 13:12:24.000000000 -0500
23580 -+++ linux-3.0.9/drivers/ide/cmd64x.c 2011-11-15 20:02:59.000000000 -0500
23581 +diff -urNp linux-3.1.1/drivers/ide/cmd64x.c linux-3.1.1/drivers/ide/cmd64x.c
23582 +--- linux-3.1.1/drivers/ide/cmd64x.c 2011-11-11 15:19:27.000000000 -0500
23583 ++++ linux-3.1.1/drivers/ide/cmd64x.c 2011-11-16 18:39:07.000000000 -0500
23584 @@ -327,7 +327,7 @@ static const struct ide_dma_ops cmd646_r
23585 .dma_sff_read_status = ide_dma_sff_read_status,
23586 };
23587 @@ -27689,9 +27651,9 @@ diff -urNp linux-3.0.9/drivers/ide/cmd64x.c linux-3.0.9/drivers/ide/cmd64x.c
23588 { /* 0: CMD643 */
23589 .name = DRV_NAME,
23590 .init_chipset = init_chipset_cmd64x,
23591 -diff -urNp linux-3.0.9/drivers/ide/cs5520.c linux-3.0.9/drivers/ide/cs5520.c
23592 ---- linux-3.0.9/drivers/ide/cs5520.c 2011-11-11 13:12:24.000000000 -0500
23593 -+++ linux-3.0.9/drivers/ide/cs5520.c 2011-11-15 20:02:59.000000000 -0500
23594 +diff -urNp linux-3.1.1/drivers/ide/cs5520.c linux-3.1.1/drivers/ide/cs5520.c
23595 +--- linux-3.1.1/drivers/ide/cs5520.c 2011-11-11 15:19:27.000000000 -0500
23596 ++++ linux-3.1.1/drivers/ide/cs5520.c 2011-11-16 18:39:07.000000000 -0500
23597 @@ -94,7 +94,7 @@ static const struct ide_port_ops cs5520_
23598 .set_dma_mode = cs5520_set_dma_mode,
23599 };
23600 @@ -27701,9 +27663,9 @@ diff -urNp linux-3.0.9/drivers/ide/cs5520.c linux-3.0.9/drivers/ide/cs5520.c
23601 .name = DRV_NAME,
23602 .enablebits = { { 0x60, 0x01, 0x01 }, { 0x60, 0x02, 0x02 } },
23603 .port_ops = &cs5520_port_ops,
23604 -diff -urNp linux-3.0.9/drivers/ide/cs5530.c linux-3.0.9/drivers/ide/cs5530.c
23605 ---- linux-3.0.9/drivers/ide/cs5530.c 2011-11-11 13:12:24.000000000 -0500
23606 -+++ linux-3.0.9/drivers/ide/cs5530.c 2011-11-15 20:02:59.000000000 -0500
23607 +diff -urNp linux-3.1.1/drivers/ide/cs5530.c linux-3.1.1/drivers/ide/cs5530.c
23608 +--- linux-3.1.1/drivers/ide/cs5530.c 2011-11-11 15:19:27.000000000 -0500
23609 ++++ linux-3.1.1/drivers/ide/cs5530.c 2011-11-16 18:39:07.000000000 -0500
23610 @@ -245,7 +245,7 @@ static const struct ide_port_ops cs5530_
23611 .udma_filter = cs5530_udma_filter,
23612 };
23613 @@ -27713,9 +27675,9 @@ diff -urNp linux-3.0.9/drivers/ide/cs5530.c linux-3.0.9/drivers/ide/cs5530.c
23614 .name = DRV_NAME,
23615 .init_chipset = init_chipset_cs5530,
23616 .init_hwif = init_hwif_cs5530,
23617 -diff -urNp linux-3.0.9/drivers/ide/cs5535.c linux-3.0.9/drivers/ide/cs5535.c
23618 ---- linux-3.0.9/drivers/ide/cs5535.c 2011-11-11 13:12:24.000000000 -0500
23619 -+++ linux-3.0.9/drivers/ide/cs5535.c 2011-11-15 20:02:59.000000000 -0500
23620 +diff -urNp linux-3.1.1/drivers/ide/cs5535.c linux-3.1.1/drivers/ide/cs5535.c
23621 +--- linux-3.1.1/drivers/ide/cs5535.c 2011-11-11 15:19:27.000000000 -0500
23622 ++++ linux-3.1.1/drivers/ide/cs5535.c 2011-11-16 18:39:07.000000000 -0500
23623 @@ -170,7 +170,7 @@ static const struct ide_port_ops cs5535_
23624 .cable_detect = cs5535_cable_detect,
23625 };
23626 @@ -27725,10 +27687,10 @@ diff -urNp linux-3.0.9/drivers/ide/cs5535.c linux-3.0.9/drivers/ide/cs5535.c
23627 .name = DRV_NAME,
23628 .port_ops = &cs5535_port_ops,
23629 .host_flags = IDE_HFLAG_SINGLE | IDE_HFLAG_POST_SET_MODE,
23630 -diff -urNp linux-3.0.9/drivers/ide/cy82c693.c linux-3.0.9/drivers/ide/cy82c693.c
23631 ---- linux-3.0.9/drivers/ide/cy82c693.c 2011-11-11 13:12:24.000000000 -0500
23632 -+++ linux-3.0.9/drivers/ide/cy82c693.c 2011-11-15 20:02:59.000000000 -0500
23633 -@@ -161,7 +161,7 @@ static const struct ide_port_ops cy82c69
23634 +diff -urNp linux-3.1.1/drivers/ide/cy82c693.c linux-3.1.1/drivers/ide/cy82c693.c
23635 +--- linux-3.1.1/drivers/ide/cy82c693.c 2011-11-11 15:19:27.000000000 -0500
23636 ++++ linux-3.1.1/drivers/ide/cy82c693.c 2011-11-16 18:39:07.000000000 -0500
23637 +@@ -163,7 +163,7 @@ static const struct ide_port_ops cy82c69
23638 .set_dma_mode = cy82c693_set_dma_mode,
23639 };
23640
23641 @@ -27737,9 +27699,9 @@ diff -urNp linux-3.0.9/drivers/ide/cy82c693.c linux-3.0.9/drivers/ide/cy82c693.c
23642 .name = DRV_NAME,
23643 .init_iops = init_iops_cy82c693,
23644 .port_ops = &cy82c693_port_ops,
23645 -diff -urNp linux-3.0.9/drivers/ide/hpt366.c linux-3.0.9/drivers/ide/hpt366.c
23646 ---- linux-3.0.9/drivers/ide/hpt366.c 2011-11-11 13:12:24.000000000 -0500
23647 -+++ linux-3.0.9/drivers/ide/hpt366.c 2011-11-15 20:02:59.000000000 -0500
23648 +diff -urNp linux-3.1.1/drivers/ide/hpt366.c linux-3.1.1/drivers/ide/hpt366.c
23649 +--- linux-3.1.1/drivers/ide/hpt366.c 2011-11-11 15:19:27.000000000 -0500
23650 ++++ linux-3.1.1/drivers/ide/hpt366.c 2011-11-16 18:39:07.000000000 -0500
23651 @@ -443,7 +443,7 @@ static struct hpt_timings hpt37x_timings
23652 }
23653 };
23654 @@ -27848,9 +27810,9 @@ diff -urNp linux-3.0.9/drivers/ide/hpt366.c linux-3.0.9/drivers/ide/hpt366.c
23655 { /* 0: HPT36x */
23656 .name = DRV_NAME,
23657 .init_chipset = init_chipset_hpt366,
23658 -diff -urNp linux-3.0.9/drivers/ide/ide-cd.c linux-3.0.9/drivers/ide/ide-cd.c
23659 ---- linux-3.0.9/drivers/ide/ide-cd.c 2011-11-11 13:12:24.000000000 -0500
23660 -+++ linux-3.0.9/drivers/ide/ide-cd.c 2011-11-15 20:02:59.000000000 -0500
23661 +diff -urNp linux-3.1.1/drivers/ide/ide-cd.c linux-3.1.1/drivers/ide/ide-cd.c
23662 +--- linux-3.1.1/drivers/ide/ide-cd.c 2011-11-11 15:19:27.000000000 -0500
23663 ++++ linux-3.1.1/drivers/ide/ide-cd.c 2011-11-16 18:39:07.000000000 -0500
23664 @@ -769,7 +769,7 @@ static void cdrom_do_block_pc(ide_drive_
23665 alignment = queue_dma_alignment(q) | q->dma_pad_mask;
23666 if ((unsigned long)buf & alignment
23667 @@ -27860,9 +27822,9 @@ diff -urNp linux-3.0.9/drivers/ide/ide-cd.c linux-3.0.9/drivers/ide/ide-cd.c
23668 drive->dma = 0;
23669 }
23670 }
23671 -diff -urNp linux-3.0.9/drivers/ide/ide-floppy.c linux-3.0.9/drivers/ide/ide-floppy.c
23672 ---- linux-3.0.9/drivers/ide/ide-floppy.c 2011-11-11 13:12:24.000000000 -0500
23673 -+++ linux-3.0.9/drivers/ide/ide-floppy.c 2011-11-15 20:02:59.000000000 -0500
23674 +diff -urNp linux-3.1.1/drivers/ide/ide-floppy.c linux-3.1.1/drivers/ide/ide-floppy.c
23675 +--- linux-3.1.1/drivers/ide/ide-floppy.c 2011-11-11 15:19:27.000000000 -0500
23676 ++++ linux-3.1.1/drivers/ide/ide-floppy.c 2011-11-16 18:40:10.000000000 -0500
23677 @@ -379,6 +379,8 @@ static int ide_floppy_get_capacity(ide_d
23678 u8 pc_buf[256], header_len, desc_cnt;
23679 int i, rc = 1, blocks, length;
23680 @@ -27872,9 +27834,9 @@ diff -urNp linux-3.0.9/drivers/ide/ide-floppy.c linux-3.0.9/drivers/ide/ide-flop
23681 ide_debug_log(IDE_DBG_FUNC, "enter");
23682
23683 drive->bios_cyl = 0;
23684 -diff -urNp linux-3.0.9/drivers/ide/ide-pci-generic.c linux-3.0.9/drivers/ide/ide-pci-generic.c
23685 ---- linux-3.0.9/drivers/ide/ide-pci-generic.c 2011-11-11 13:12:24.000000000 -0500
23686 -+++ linux-3.0.9/drivers/ide/ide-pci-generic.c 2011-11-15 20:02:59.000000000 -0500
23687 +diff -urNp linux-3.1.1/drivers/ide/ide-pci-generic.c linux-3.1.1/drivers/ide/ide-pci-generic.c
23688 +--- linux-3.1.1/drivers/ide/ide-pci-generic.c 2011-11-11 15:19:27.000000000 -0500
23689 ++++ linux-3.1.1/drivers/ide/ide-pci-generic.c 2011-11-16 18:39:07.000000000 -0500
23690 @@ -53,7 +53,7 @@ static const struct ide_port_ops netcell
23691 .udma_mask = ATA_UDMA6, \
23692 }
23693 @@ -27884,9 +27846,9 @@ diff -urNp linux-3.0.9/drivers/ide/ide-pci-generic.c linux-3.0.9/drivers/ide/ide
23694 /* 0: Unknown */
23695 DECLARE_GENERIC_PCI_DEV(0),
23696
23697 -diff -urNp linux-3.0.9/drivers/ide/it8172.c linux-3.0.9/drivers/ide/it8172.c
23698 ---- linux-3.0.9/drivers/ide/it8172.c 2011-11-11 13:12:24.000000000 -0500
23699 -+++ linux-3.0.9/drivers/ide/it8172.c 2011-11-15 20:02:59.000000000 -0500
23700 +diff -urNp linux-3.1.1/drivers/ide/it8172.c linux-3.1.1/drivers/ide/it8172.c
23701 +--- linux-3.1.1/drivers/ide/it8172.c 2011-11-11 15:19:27.000000000 -0500
23702 ++++ linux-3.1.1/drivers/ide/it8172.c 2011-11-16 18:39:07.000000000 -0500
23703 @@ -115,7 +115,7 @@ static const struct ide_port_ops it8172_
23704 .set_dma_mode = it8172_set_dma_mode,
23705 };
23706 @@ -27896,9 +27858,9 @@ diff -urNp linux-3.0.9/drivers/ide/it8172.c linux-3.0.9/drivers/ide/it8172.c
23707 .name = DRV_NAME,
23708 .port_ops = &it8172_port_ops,
23709 .enablebits = { {0x41, 0x80, 0x80}, {0x00, 0x00, 0x00} },
23710 -diff -urNp linux-3.0.9/drivers/ide/it8213.c linux-3.0.9/drivers/ide/it8213.c
23711 ---- linux-3.0.9/drivers/ide/it8213.c 2011-11-11 13:12:24.000000000 -0500
23712 -+++ linux-3.0.9/drivers/ide/it8213.c 2011-11-15 20:02:59.000000000 -0500
23713 +diff -urNp linux-3.1.1/drivers/ide/it8213.c linux-3.1.1/drivers/ide/it8213.c
23714 +--- linux-3.1.1/drivers/ide/it8213.c 2011-11-11 15:19:27.000000000 -0500
23715 ++++ linux-3.1.1/drivers/ide/it8213.c 2011-11-16 18:39:07.000000000 -0500
23716 @@ -156,7 +156,7 @@ static const struct ide_port_ops it8213_
23717 .cable_detect = it8213_cable_detect,
23718 };
23719 @@ -27908,9 +27870,9 @@ diff -urNp linux-3.0.9/drivers/ide/it8213.c linux-3.0.9/drivers/ide/it8213.c
23720 .name = DRV_NAME,
23721 .enablebits = { {0x41, 0x80, 0x80} },
23722 .port_ops = &it8213_port_ops,
23723 -diff -urNp linux-3.0.9/drivers/ide/it821x.c linux-3.0.9/drivers/ide/it821x.c
23724 ---- linux-3.0.9/drivers/ide/it821x.c 2011-11-11 13:12:24.000000000 -0500
23725 -+++ linux-3.0.9/drivers/ide/it821x.c 2011-11-15 20:02:59.000000000 -0500
23726 +diff -urNp linux-3.1.1/drivers/ide/it821x.c linux-3.1.1/drivers/ide/it821x.c
23727 +--- linux-3.1.1/drivers/ide/it821x.c 2011-11-11 15:19:27.000000000 -0500
23728 ++++ linux-3.1.1/drivers/ide/it821x.c 2011-11-16 18:39:07.000000000 -0500
23729 @@ -630,7 +630,7 @@ static const struct ide_port_ops it821x_
23730 .cable_detect = it821x_cable_detect,
23731 };
23732 @@ -27920,9 +27882,9 @@ diff -urNp linux-3.0.9/drivers/ide/it821x.c linux-3.0.9/drivers/ide/it821x.c
23733 .name = DRV_NAME,
23734 .init_chipset = init_chipset_it821x,
23735 .init_hwif = init_hwif_it821x,
23736 -diff -urNp linux-3.0.9/drivers/ide/jmicron.c linux-3.0.9/drivers/ide/jmicron.c
23737 ---- linux-3.0.9/drivers/ide/jmicron.c 2011-11-11 13:12:24.000000000 -0500
23738 -+++ linux-3.0.9/drivers/ide/jmicron.c 2011-11-15 20:02:59.000000000 -0500
23739 +diff -urNp linux-3.1.1/drivers/ide/jmicron.c linux-3.1.1/drivers/ide/jmicron.c
23740 +--- linux-3.1.1/drivers/ide/jmicron.c 2011-11-11 15:19:27.000000000 -0500
23741 ++++ linux-3.1.1/drivers/ide/jmicron.c 2011-11-16 18:39:07.000000000 -0500
23742 @@ -102,7 +102,7 @@ static const struct ide_port_ops jmicron
23743 .cable_detect = jmicron_cable_detect,
23744 };
23745 @@ -27932,9 +27894,9 @@ diff -urNp linux-3.0.9/drivers/ide/jmicron.c linux-3.0.9/drivers/ide/jmicron.c
23746 .name = DRV_NAME,
23747 .enablebits = { { 0x40, 0x01, 0x01 }, { 0x40, 0x10, 0x10 } },
23748 .port_ops = &jmicron_port_ops,
23749 -diff -urNp linux-3.0.9/drivers/ide/ns87415.c linux-3.0.9/drivers/ide/ns87415.c
23750 ---- linux-3.0.9/drivers/ide/ns87415.c 2011-11-11 13:12:24.000000000 -0500
23751 -+++ linux-3.0.9/drivers/ide/ns87415.c 2011-11-15 20:02:59.000000000 -0500
23752 +diff -urNp linux-3.1.1/drivers/ide/ns87415.c linux-3.1.1/drivers/ide/ns87415.c
23753 +--- linux-3.1.1/drivers/ide/ns87415.c 2011-11-11 15:19:27.000000000 -0500
23754 ++++ linux-3.1.1/drivers/ide/ns87415.c 2011-11-16 18:39:07.000000000 -0500
23755 @@ -293,7 +293,7 @@ static const struct ide_dma_ops ns87415_
23756 .dma_sff_read_status = superio_dma_sff_read_status,
23757 };
23758 @@ -27944,9 +27906,9 @@ diff -urNp linux-3.0.9/drivers/ide/ns87415.c linux-3.0.9/drivers/ide/ns87415.c
23759 .name = DRV_NAME,
23760 .init_hwif = init_hwif_ns87415,
23761 .tp_ops = &ns87415_tp_ops,
23762 -diff -urNp linux-3.0.9/drivers/ide/opti621.c linux-3.0.9/drivers/ide/opti621.c
23763 ---- linux-3.0.9/drivers/ide/opti621.c 2011-11-11 13:12:24.000000000 -0500
23764 -+++ linux-3.0.9/drivers/ide/opti621.c 2011-11-15 20:02:59.000000000 -0500
23765 +diff -urNp linux-3.1.1/drivers/ide/opti621.c linux-3.1.1/drivers/ide/opti621.c
23766 +--- linux-3.1.1/drivers/ide/opti621.c 2011-11-11 15:19:27.000000000 -0500
23767 ++++ linux-3.1.1/drivers/ide/opti621.c 2011-11-16 18:39:07.000000000 -0500
23768 @@ -131,7 +131,7 @@ static const struct ide_port_ops opti621
23769 .set_pio_mode = opti621_set_pio_mode,
23770 };
23771 @@ -27956,9 +27918,9 @@ diff -urNp linux-3.0.9/drivers/ide/opti621.c linux-3.0.9/drivers/ide/opti621.c
23772 .name = DRV_NAME,
23773 .enablebits = { {0x45, 0x80, 0x00}, {0x40, 0x08, 0x00} },
23774 .port_ops = &opti621_port_ops,
23775 -diff -urNp linux-3.0.9/drivers/ide/pdc202xx_new.c linux-3.0.9/drivers/ide/pdc202xx_new.c
23776 ---- linux-3.0.9/drivers/ide/pdc202xx_new.c 2011-11-11 13:12:24.000000000 -0500
23777 -+++ linux-3.0.9/drivers/ide/pdc202xx_new.c 2011-11-15 20:02:59.000000000 -0500
23778 +diff -urNp linux-3.1.1/drivers/ide/pdc202xx_new.c linux-3.1.1/drivers/ide/pdc202xx_new.c
23779 +--- linux-3.1.1/drivers/ide/pdc202xx_new.c 2011-11-11 15:19:27.000000000 -0500
23780 ++++ linux-3.1.1/drivers/ide/pdc202xx_new.c 2011-11-16 18:39:07.000000000 -0500
23781 @@ -465,7 +465,7 @@ static const struct ide_port_ops pdcnew_
23782 .udma_mask = udma, \
23783 }
23784 @@ -27968,9 +27930,9 @@ diff -urNp linux-3.0.9/drivers/ide/pdc202xx_new.c linux-3.0.9/drivers/ide/pdc202
23785 /* 0: PDC202{68,70} */ DECLARE_PDCNEW_DEV(ATA_UDMA5),
23786 /* 1: PDC202{69,71,75,76,77} */ DECLARE_PDCNEW_DEV(ATA_UDMA6),
23787 };
23788 -diff -urNp linux-3.0.9/drivers/ide/pdc202xx_old.c linux-3.0.9/drivers/ide/pdc202xx_old.c
23789 ---- linux-3.0.9/drivers/ide/pdc202xx_old.c 2011-11-11 13:12:24.000000000 -0500
23790 -+++ linux-3.0.9/drivers/ide/pdc202xx_old.c 2011-11-15 20:02:59.000000000 -0500
23791 +diff -urNp linux-3.1.1/drivers/ide/pdc202xx_old.c linux-3.1.1/drivers/ide/pdc202xx_old.c
23792 +--- linux-3.1.1/drivers/ide/pdc202xx_old.c 2011-11-11 15:19:27.000000000 -0500
23793 ++++ linux-3.1.1/drivers/ide/pdc202xx_old.c 2011-11-16 18:39:07.000000000 -0500
23794 @@ -270,7 +270,7 @@ static const struct ide_dma_ops pdc2026x
23795 .max_sectors = sectors, \
23796 }
23797 @@ -27980,9 +27942,9 @@ diff -urNp linux-3.0.9/drivers/ide/pdc202xx_old.c linux-3.0.9/drivers/ide/pdc202
23798 { /* 0: PDC20246 */
23799 .name = DRV_NAME,
23800 .init_chipset = init_chipset_pdc202xx,
23801 -diff -urNp linux-3.0.9/drivers/ide/piix.c linux-3.0.9/drivers/ide/piix.c
23802 ---- linux-3.0.9/drivers/ide/piix.c 2011-11-11 13:12:24.000000000 -0500
23803 -+++ linux-3.0.9/drivers/ide/piix.c 2011-11-15 20:02:59.000000000 -0500
23804 +diff -urNp linux-3.1.1/drivers/ide/piix.c linux-3.1.1/drivers/ide/piix.c
23805 +--- linux-3.1.1/drivers/ide/piix.c 2011-11-11 15:19:27.000000000 -0500
23806 ++++ linux-3.1.1/drivers/ide/piix.c 2011-11-16 18:39:07.000000000 -0500
23807 @@ -344,7 +344,7 @@ static const struct ide_port_ops ich_por
23808 .udma_mask = udma, \
23809 }
23810 @@ -27992,9 +27954,9 @@ diff -urNp linux-3.0.9/drivers/ide/piix.c linux-3.0.9/drivers/ide/piix.c
23811 /* 0: MPIIX */
23812 { /*
23813 * MPIIX actually has only a single IDE channel mapped to
23814 -diff -urNp linux-3.0.9/drivers/ide/rz1000.c linux-3.0.9/drivers/ide/rz1000.c
23815 ---- linux-3.0.9/drivers/ide/rz1000.c 2011-11-11 13:12:24.000000000 -0500
23816 -+++ linux-3.0.9/drivers/ide/rz1000.c 2011-11-15 20:02:59.000000000 -0500
23817 +diff -urNp linux-3.1.1/drivers/ide/rz1000.c linux-3.1.1/drivers/ide/rz1000.c
23818 +--- linux-3.1.1/drivers/ide/rz1000.c 2011-11-11 15:19:27.000000000 -0500
23819 ++++ linux-3.1.1/drivers/ide/rz1000.c 2011-11-16 18:39:07.000000000 -0500
23820 @@ -38,7 +38,7 @@ static int __devinit rz1000_disable_read
23821 }
23822 }
23823 @@ -28004,9 +27966,9 @@ diff -urNp linux-3.0.9/drivers/ide/rz1000.c linux-3.0.9/drivers/ide/rz1000.c
23824 .name = DRV_NAME,
23825 .host_flags = IDE_HFLAG_NO_DMA,
23826 };
23827 -diff -urNp linux-3.0.9/drivers/ide/sc1200.c linux-3.0.9/drivers/ide/sc1200.c
23828 ---- linux-3.0.9/drivers/ide/sc1200.c 2011-11-11 13:12:24.000000000 -0500
23829 -+++ linux-3.0.9/drivers/ide/sc1200.c 2011-11-15 20:02:59.000000000 -0500
23830 +diff -urNp linux-3.1.1/drivers/ide/sc1200.c linux-3.1.1/drivers/ide/sc1200.c
23831 +--- linux-3.1.1/drivers/ide/sc1200.c 2011-11-11 15:19:27.000000000 -0500
23832 ++++ linux-3.1.1/drivers/ide/sc1200.c 2011-11-16 18:39:07.000000000 -0500
23833 @@ -291,7 +291,7 @@ static const struct ide_dma_ops sc1200_d
23834 .dma_sff_read_status = ide_dma_sff_read_status,
23835 };
23836 @@ -28016,9 +27978,9 @@ diff -urNp linux-3.0.9/drivers/ide/sc1200.c linux-3.0.9/drivers/ide/sc1200.c
23837 .name = DRV_NAME,
23838 .port_ops = &sc1200_port_ops,
23839 .dma_ops = &sc1200_dma_ops,
23840 -diff -urNp linux-3.0.9/drivers/ide/scc_pata.c linux-3.0.9/drivers/ide/scc_pata.c
23841 ---- linux-3.0.9/drivers/ide/scc_pata.c 2011-11-11 13:12:24.000000000 -0500
23842 -+++ linux-3.0.9/drivers/ide/scc_pata.c 2011-11-15 20:02:59.000000000 -0500
23843 +diff -urNp linux-3.1.1/drivers/ide/scc_pata.c linux-3.1.1/drivers/ide/scc_pata.c
23844 +--- linux-3.1.1/drivers/ide/scc_pata.c 2011-11-11 15:19:27.000000000 -0500
23845 ++++ linux-3.1.1/drivers/ide/scc_pata.c 2011-11-16 18:39:07.000000000 -0500
23846 @@ -811,7 +811,7 @@ static const struct ide_dma_ops scc_dma_
23847 .dma_sff_read_status = scc_dma_sff_read_status,
23848 };
23849 @@ -28028,9 +27990,9 @@ diff -urNp linux-3.0.9/drivers/ide/scc_pata.c linux-3.0.9/drivers/ide/scc_pata.c
23850 .name = "sccIDE",
23851 .init_iops = init_iops_scc,
23852 .init_dma = scc_init_dma,
23853 -diff -urNp linux-3.0.9/drivers/ide/serverworks.c linux-3.0.9/drivers/ide/serverworks.c
23854 ---- linux-3.0.9/drivers/ide/serverworks.c 2011-11-11 13:12:24.000000000 -0500
23855 -+++ linux-3.0.9/drivers/ide/serverworks.c 2011-11-15 20:02:59.000000000 -0500
23856 +diff -urNp linux-3.1.1/drivers/ide/serverworks.c linux-3.1.1/drivers/ide/serverworks.c
23857 +--- linux-3.1.1/drivers/ide/serverworks.c 2011-11-11 15:19:27.000000000 -0500
23858 ++++ linux-3.1.1/drivers/ide/serverworks.c 2011-11-16 18:39:07.000000000 -0500
23859 @@ -337,7 +337,7 @@ static const struct ide_port_ops svwks_p
23860 .cable_detect = svwks_cable_detect,
23861 };
23862 @@ -28040,9 +28002,9 @@ diff -urNp linux-3.0.9/drivers/ide/serverworks.c linux-3.0.9/drivers/ide/serverw
23863 { /* 0: OSB4 */
23864 .name = DRV_NAME,
23865 .init_chipset = init_chipset_svwks,
23866 -diff -urNp linux-3.0.9/drivers/ide/setup-pci.c linux-3.0.9/drivers/ide/setup-pci.c
23867 ---- linux-3.0.9/drivers/ide/setup-pci.c 2011-11-11 13:12:24.000000000 -0500
23868 -+++ linux-3.0.9/drivers/ide/setup-pci.c 2011-11-15 20:02:59.000000000 -0500
23869 +diff -urNp linux-3.1.1/drivers/ide/setup-pci.c linux-3.1.1/drivers/ide/setup-pci.c
23870 +--- linux-3.1.1/drivers/ide/setup-pci.c 2011-11-11 15:19:27.000000000 -0500
23871 ++++ linux-3.1.1/drivers/ide/setup-pci.c 2011-11-16 18:40:10.000000000 -0500
23872 @@ -542,6 +542,8 @@ int ide_pci_init_two(struct pci_dev *dev
23873 int ret, i, n_ports = dev2 ? 4 : 2;
23874 struct ide_hw hw[4], *hws[] = { NULL, NULL, NULL, NULL };
23875 @@ -28052,9 +28014,9 @@ diff -urNp linux-3.0.9/drivers/ide/setup-pci.c linux-3.0.9/drivers/ide/setup-pci
23876 for (i = 0; i < n_ports / 2; i++) {
23877 ret = ide_setup_pci_controller(pdev[i], d, !i);
23878 if (ret < 0)
23879 -diff -urNp linux-3.0.9/drivers/ide/siimage.c linux-3.0.9/drivers/ide/siimage.c
23880 ---- linux-3.0.9/drivers/ide/siimage.c 2011-11-11 13:12:24.000000000 -0500
23881 -+++ linux-3.0.9/drivers/ide/siimage.c 2011-11-15 20:02:59.000000000 -0500
23882 +diff -urNp linux-3.1.1/drivers/ide/siimage.c linux-3.1.1/drivers/ide/siimage.c
23883 +--- linux-3.1.1/drivers/ide/siimage.c 2011-11-11 15:19:27.000000000 -0500
23884 ++++ linux-3.1.1/drivers/ide/siimage.c 2011-11-16 18:39:07.000000000 -0500
23885 @@ -719,7 +719,7 @@ static const struct ide_dma_ops sil_dma_
23886 .udma_mask = ATA_UDMA6, \
23887 }
23888 @@ -28064,9 +28026,9 @@ diff -urNp linux-3.0.9/drivers/ide/siimage.c linux-3.0.9/drivers/ide/siimage.c
23889 /* 0: SiI680 */ DECLARE_SII_DEV(&sil_pata_port_ops),
23890 /* 1: SiI3112 */ DECLARE_SII_DEV(&sil_sata_port_ops)
23891 };
23892 -diff -urNp linux-3.0.9/drivers/ide/sis5513.c linux-3.0.9/drivers/ide/sis5513.c
23893 ---- linux-3.0.9/drivers/ide/sis5513.c 2011-11-11 13:12:24.000000000 -0500
23894 -+++ linux-3.0.9/drivers/ide/sis5513.c 2011-11-15 20:02:59.000000000 -0500
23895 +diff -urNp linux-3.1.1/drivers/ide/sis5513.c linux-3.1.1/drivers/ide/sis5513.c
23896 +--- linux-3.1.1/drivers/ide/sis5513.c 2011-11-11 15:19:27.000000000 -0500
23897 ++++ linux-3.1.1/drivers/ide/sis5513.c 2011-11-16 18:39:07.000000000 -0500
23898 @@ -563,7 +563,7 @@ static const struct ide_port_ops sis_ata
23899 .cable_detect = sis_cable_detect,
23900 };
23901 @@ -28076,9 +28038,9 @@ diff -urNp linux-3.0.9/drivers/ide/sis5513.c linux-3.0.9/drivers/ide/sis5513.c
23902 .name = DRV_NAME,
23903 .init_chipset = init_chipset_sis5513,
23904 .enablebits = { {0x4a, 0x02, 0x02}, {0x4a, 0x04, 0x04} },
23905 -diff -urNp linux-3.0.9/drivers/ide/sl82c105.c linux-3.0.9/drivers/ide/sl82c105.c
23906 ---- linux-3.0.9/drivers/ide/sl82c105.c 2011-11-11 13:12:24.000000000 -0500
23907 -+++ linux-3.0.9/drivers/ide/sl82c105.c 2011-11-15 20:02:59.000000000 -0500
23908 +diff -urNp linux-3.1.1/drivers/ide/sl82c105.c linux-3.1.1/drivers/ide/sl82c105.c
23909 +--- linux-3.1.1/drivers/ide/sl82c105.c 2011-11-11 15:19:27.000000000 -0500
23910 ++++ linux-3.1.1/drivers/ide/sl82c105.c 2011-11-16 18:39:07.000000000 -0500
23911 @@ -299,7 +299,7 @@ static const struct ide_dma_ops sl82c105
23912 .dma_sff_read_status = ide_dma_sff_read_status,
23913 };
23914 @@ -28088,9 +28050,9 @@ diff -urNp linux-3.0.9/drivers/ide/sl82c105.c linux-3.0.9/drivers/ide/sl82c105.c
23915 .name = DRV_NAME,
23916 .init_chipset = init_chipset_sl82c105,
23917 .enablebits = {{0x40,0x01,0x01}, {0x40,0x10,0x10}},
23918 -diff -urNp linux-3.0.9/drivers/ide/slc90e66.c linux-3.0.9/drivers/ide/slc90e66.c
23919 ---- linux-3.0.9/drivers/ide/slc90e66.c 2011-11-11 13:12:24.000000000 -0500
23920 -+++ linux-3.0.9/drivers/ide/slc90e66.c 2011-11-15 20:02:59.000000000 -0500
23921 +diff -urNp linux-3.1.1/drivers/ide/slc90e66.c linux-3.1.1/drivers/ide/slc90e66.c
23922 +--- linux-3.1.1/drivers/ide/slc90e66.c 2011-11-11 15:19:27.000000000 -0500
23923 ++++ linux-3.1.1/drivers/ide/slc90e66.c 2011-11-16 18:39:07.000000000 -0500
23924 @@ -132,7 +132,7 @@ static const struct ide_port_ops slc90e6
23925 .cable_detect = slc90e66_cable_detect,
23926 };
23927 @@ -28100,9 +28062,9 @@ diff -urNp linux-3.0.9/drivers/ide/slc90e66.c linux-3.0.9/drivers/ide/slc90e66.c
23928 .name = DRV_NAME,
23929 .enablebits = { {0x41, 0x80, 0x80}, {0x43, 0x80, 0x80} },
23930 .port_ops = &slc90e66_port_ops,
23931 -diff -urNp linux-3.0.9/drivers/ide/tc86c001.c linux-3.0.9/drivers/ide/tc86c001.c
23932 ---- linux-3.0.9/drivers/ide/tc86c001.c 2011-11-11 13:12:24.000000000 -0500
23933 -+++ linux-3.0.9/drivers/ide/tc86c001.c 2011-11-15 20:02:59.000000000 -0500
23934 +diff -urNp linux-3.1.1/drivers/ide/tc86c001.c linux-3.1.1/drivers/ide/tc86c001.c
23935 +--- linux-3.1.1/drivers/ide/tc86c001.c 2011-11-11 15:19:27.000000000 -0500
23936 ++++ linux-3.1.1/drivers/ide/tc86c001.c 2011-11-16 18:39:07.000000000 -0500
23937 @@ -191,7 +191,7 @@ static const struct ide_dma_ops tc86c001
23938 .dma_sff_read_status = ide_dma_sff_read_status,
23939 };
23940 @@ -28112,9 +28074,9 @@ diff -urNp linux-3.0.9/drivers/ide/tc86c001.c linux-3.0.9/drivers/ide/tc86c001.c
23941 .name = DRV_NAME,
23942 .init_hwif = init_hwif_tc86c001,
23943 .port_ops = &tc86c001_port_ops,
23944 -diff -urNp linux-3.0.9/drivers/ide/triflex.c linux-3.0.9/drivers/ide/triflex.c
23945 ---- linux-3.0.9/drivers/ide/triflex.c 2011-11-11 13:12:24.000000000 -0500
23946 -+++ linux-3.0.9/drivers/ide/triflex.c 2011-11-15 20:02:59.000000000 -0500
23947 +diff -urNp linux-3.1.1/drivers/ide/triflex.c linux-3.1.1/drivers/ide/triflex.c
23948 +--- linux-3.1.1/drivers/ide/triflex.c 2011-11-11 15:19:27.000000000 -0500
23949 ++++ linux-3.1.1/drivers/ide/triflex.c 2011-11-16 18:39:07.000000000 -0500
23950 @@ -92,7 +92,7 @@ static const struct ide_port_ops triflex
23951 .set_dma_mode = triflex_set_mode,
23952 };
23953 @@ -28124,9 +28086,9 @@ diff -urNp linux-3.0.9/drivers/ide/triflex.c linux-3.0.9/drivers/ide/triflex.c
23954 .name = DRV_NAME,
23955 .enablebits = {{0x80, 0x01, 0x01}, {0x80, 0x02, 0x02}},
23956 .port_ops = &triflex_port_ops,
23957 -diff -urNp linux-3.0.9/drivers/ide/trm290.c linux-3.0.9/drivers/ide/trm290.c
23958 ---- linux-3.0.9/drivers/ide/trm290.c 2011-11-11 13:12:24.000000000 -0500
23959 -+++ linux-3.0.9/drivers/ide/trm290.c 2011-11-15 20:02:59.000000000 -0500
23960 +diff -urNp linux-3.1.1/drivers/ide/trm290.c linux-3.1.1/drivers/ide/trm290.c
23961 +--- linux-3.1.1/drivers/ide/trm290.c 2011-11-11 15:19:27.000000000 -0500
23962 ++++ linux-3.1.1/drivers/ide/trm290.c 2011-11-16 18:39:07.000000000 -0500
23963 @@ -324,7 +324,7 @@ static struct ide_dma_ops trm290_dma_ops
23964 .dma_check = trm290_dma_check,
23965 };
23966 @@ -28136,9 +28098,9 @@ diff -urNp linux-3.0.9/drivers/ide/trm290.c linux-3.0.9/drivers/ide/trm290.c
23967 .name = DRV_NAME,
23968 .init_hwif = init_hwif_trm290,
23969 .tp_ops = &trm290_tp_ops,
23970 -diff -urNp linux-3.0.9/drivers/ide/via82cxxx.c linux-3.0.9/drivers/ide/via82cxxx.c
23971 ---- linux-3.0.9/drivers/ide/via82cxxx.c 2011-11-11 13:12:24.000000000 -0500
23972 -+++ linux-3.0.9/drivers/ide/via82cxxx.c 2011-11-15 20:02:59.000000000 -0500
23973 +diff -urNp linux-3.1.1/drivers/ide/via82cxxx.c linux-3.1.1/drivers/ide/via82cxxx.c
23974 +--- linux-3.1.1/drivers/ide/via82cxxx.c 2011-11-11 15:19:27.000000000 -0500
23975 ++++ linux-3.1.1/drivers/ide/via82cxxx.c 2011-11-16 18:39:07.000000000 -0500
23976 @@ -403,7 +403,7 @@ static const struct ide_port_ops via_por
23977 .cable_detect = via82cxxx_cable_detect,
23978 };
23979 @@ -28148,9 +28110,9 @@ diff -urNp linux-3.0.9/drivers/ide/via82cxxx.c linux-3.0.9/drivers/ide/via82cxxx
23980 .name = DRV_NAME,
23981 .init_chipset = init_chipset_via82cxxx,
23982 .enablebits = { { 0x40, 0x02, 0x02 }, { 0x40, 0x01, 0x01 } },
23983 -diff -urNp linux-3.0.9/drivers/infiniband/core/cm.c linux-3.0.9/drivers/infiniband/core/cm.c
23984 ---- linux-3.0.9/drivers/infiniband/core/cm.c 2011-11-11 13:12:24.000000000 -0500
23985 -+++ linux-3.0.9/drivers/infiniband/core/cm.c 2011-11-15 20:02:59.000000000 -0500
23986 +diff -urNp linux-3.1.1/drivers/infiniband/core/cm.c linux-3.1.1/drivers/infiniband/core/cm.c
23987 +--- linux-3.1.1/drivers/infiniband/core/cm.c 2011-11-11 15:19:27.000000000 -0500
23988 ++++ linux-3.1.1/drivers/infiniband/core/cm.c 2011-11-16 18:39:07.000000000 -0500
23989 @@ -113,7 +113,7 @@ static char const counter_group_names[CM
23990
23991 struct cm_counter_group {
23992 @@ -28290,9 +28252,9 @@ diff -urNp linux-3.0.9/drivers/infiniband/core/cm.c linux-3.0.9/drivers/infiniba
23993 }
23994
23995 static const struct sysfs_ops cm_counter_ops = {
23996 -diff -urNp linux-3.0.9/drivers/infiniband/core/fmr_pool.c linux-3.0.9/drivers/infiniband/core/fmr_pool.c
23997 ---- linux-3.0.9/drivers/infiniband/core/fmr_pool.c 2011-11-11 13:12:24.000000000 -0500
23998 -+++ linux-3.0.9/drivers/infiniband/core/fmr_pool.c 2011-11-15 20:02:59.000000000 -0500
23999 +diff -urNp linux-3.1.1/drivers/infiniband/core/fmr_pool.c linux-3.1.1/drivers/infiniband/core/fmr_pool.c
24000 +--- linux-3.1.1/drivers/infiniband/core/fmr_pool.c 2011-11-11 15:19:27.000000000 -0500
24001 ++++ linux-3.1.1/drivers/infiniband/core/fmr_pool.c 2011-11-16 18:39:07.000000000 -0500
24002 @@ -97,8 +97,8 @@ struct ib_fmr_pool {
24003
24004 struct task_struct *thread;
24005 @@ -28360,9 +28322,9 @@ diff -urNp linux-3.0.9/drivers/infiniband/core/fmr_pool.c linux-3.0.9/drivers/in
24006 wake_up_process(pool->thread);
24007 }
24008 }
24009 -diff -urNp linux-3.0.9/drivers/infiniband/hw/cxgb4/mem.c linux-3.0.9/drivers/infiniband/hw/cxgb4/mem.c
24010 ---- linux-3.0.9/drivers/infiniband/hw/cxgb4/mem.c 2011-11-11 13:12:24.000000000 -0500
24011 -+++ linux-3.0.9/drivers/infiniband/hw/cxgb4/mem.c 2011-11-15 20:02:59.000000000 -0500
24012 +diff -urNp linux-3.1.1/drivers/infiniband/hw/cxgb4/mem.c linux-3.1.1/drivers/infiniband/hw/cxgb4/mem.c
24013 +--- linux-3.1.1/drivers/infiniband/hw/cxgb4/mem.c 2011-11-11 15:19:27.000000000 -0500
24014 ++++ linux-3.1.1/drivers/infiniband/hw/cxgb4/mem.c 2011-11-16 18:39:07.000000000 -0500
24015 @@ -122,7 +122,7 @@ static int write_tpt_entry(struct c4iw_r
24016 int err;
24017 struct fw_ri_tpte tpt;
24018 @@ -28381,9 +28343,9 @@ diff -urNp linux-3.0.9/drivers/infiniband/hw/cxgb4/mem.c linux-3.0.9/drivers/inf
24019 }
24020 PDBG("%s stag_state 0x%0x type 0x%0x pdid 0x%0x, stag_idx 0x%x\n",
24021 __func__, stag_state, type, pdid, stag_idx);
24022 -diff -urNp linux-3.0.9/drivers/infiniband/hw/ipath/ipath_fs.c linux-3.0.9/drivers/infiniband/hw/ipath/ipath_fs.c
24023 ---- linux-3.0.9/drivers/infiniband/hw/ipath/ipath_fs.c 2011-11-11 13:12:24.000000000 -0500
24024 -+++ linux-3.0.9/drivers/infiniband/hw/ipath/ipath_fs.c 2011-11-15 20:02:59.000000000 -0500
24025 +diff -urNp linux-3.1.1/drivers/infiniband/hw/ipath/ipath_fs.c linux-3.1.1/drivers/infiniband/hw/ipath/ipath_fs.c
24026 +--- linux-3.1.1/drivers/infiniband/hw/ipath/ipath_fs.c 2011-11-11 15:19:27.000000000 -0500
24027 ++++ linux-3.1.1/drivers/infiniband/hw/ipath/ipath_fs.c 2011-11-16 18:40:10.000000000 -0500
24028 @@ -113,6 +113,8 @@ static ssize_t atomic_counters_read(stru
24029 struct infinipath_counters counters;
24030 struct ipath_devdata *dd;
24031 @@ -28393,9 +28355,9 @@ diff -urNp linux-3.0.9/drivers/infiniband/hw/ipath/ipath_fs.c linux-3.0.9/driver
24032 dd = file->f_path.dentry->d_inode->i_private;
24033 dd->ipath_f_read_counters(dd, &counters);
24034
24035 -diff -urNp linux-3.0.9/drivers/infiniband/hw/ipath/ipath_rc.c linux-3.0.9/drivers/infiniband/hw/ipath/ipath_rc.c
24036 ---- linux-3.0.9/drivers/infiniband/hw/ipath/ipath_rc.c 2011-11-11 13:12:24.000000000 -0500
24037 -+++ linux-3.0.9/drivers/infiniband/hw/ipath/ipath_rc.c 2011-11-15 20:02:59.000000000 -0500
24038 +diff -urNp linux-3.1.1/drivers/infiniband/hw/ipath/ipath_rc.c linux-3.1.1/drivers/infiniband/hw/ipath/ipath_rc.c
24039 +--- linux-3.1.1/drivers/infiniband/hw/ipath/ipath_rc.c 2011-11-11 15:19:27.000000000 -0500
24040 ++++ linux-3.1.1/drivers/infiniband/hw/ipath/ipath_rc.c 2011-11-16 18:39:07.000000000 -0500
24041 @@ -1868,7 +1868,7 @@ void ipath_rc_rcv(struct ipath_ibdev *de
24042 struct ib_atomic_eth *ateth;
24043 struct ipath_ack_entry *e;
24044 @@ -28419,9 +28381,9 @@ diff -urNp linux-3.0.9/drivers/infiniband/hw/ipath/ipath_rc.c linux-3.0.9/driver
24045 (u64) cmpxchg((u64 *) qp->r_sge.sge.vaddr,
24046 be64_to_cpu(ateth->compare_data),
24047 sdata);
24048 -diff -urNp linux-3.0.9/drivers/infiniband/hw/ipath/ipath_ruc.c linux-3.0.9/drivers/infiniband/hw/ipath/ipath_ruc.c
24049 ---- linux-3.0.9/drivers/infiniband/hw/ipath/ipath_ruc.c 2011-11-11 13:12:24.000000000 -0500
24050 -+++ linux-3.0.9/drivers/infiniband/hw/ipath/ipath_ruc.c 2011-11-15 20:02:59.000000000 -0500
24051 +diff -urNp linux-3.1.1/drivers/infiniband/hw/ipath/ipath_ruc.c linux-3.1.1/drivers/infiniband/hw/ipath/ipath_ruc.c
24052 +--- linux-3.1.1/drivers/infiniband/hw/ipath/ipath_ruc.c 2011-11-11 15:19:27.000000000 -0500
24053 ++++ linux-3.1.1/drivers/infiniband/hw/ipath/ipath_ruc.c 2011-11-16 18:39:07.000000000 -0500
24054 @@ -266,7 +266,7 @@ static void ipath_ruc_loopback(struct ip
24055 unsigned long flags;
24056 struct ib_wc wc;
24057 @@ -28445,9 +28407,9 @@ diff -urNp linux-3.0.9/drivers/infiniband/hw/ipath/ipath_ruc.c linux-3.0.9/drive
24058 (u64) cmpxchg((u64 *) qp->r_sge.sge.vaddr,
24059 sdata, wqe->wr.wr.atomic.swap);
24060 goto send_comp;
24061 -diff -urNp linux-3.0.9/drivers/infiniband/hw/nes/nes.c linux-3.0.9/drivers/infiniband/hw/nes/nes.c
24062 ---- linux-3.0.9/drivers/infiniband/hw/nes/nes.c 2011-11-11 13:12:24.000000000 -0500
24063 -+++ linux-3.0.9/drivers/infiniband/hw/nes/nes.c 2011-11-15 20:02:59.000000000 -0500
24064 +diff -urNp linux-3.1.1/drivers/infiniband/hw/nes/nes.c linux-3.1.1/drivers/infiniband/hw/nes/nes.c
24065 +--- linux-3.1.1/drivers/infiniband/hw/nes/nes.c 2011-11-11 15:19:27.000000000 -0500
24066 ++++ linux-3.1.1/drivers/infiniband/hw/nes/nes.c 2011-11-16 18:39:07.000000000 -0500
24067 @@ -103,7 +103,7 @@ MODULE_PARM_DESC(limit_maxrdreqsz, "Limi
24068 LIST_HEAD(nes_adapter_list);
24069 static LIST_HEAD(nes_dev_list);
24070 @@ -28466,9 +28428,9 @@ diff -urNp linux-3.0.9/drivers/infiniband/hw/nes/nes.c linux-3.0.9/drivers/infin
24071
24072 /* Free the control structures */
24073
24074 -diff -urNp linux-3.0.9/drivers/infiniband/hw/nes/nes_cm.c linux-3.0.9/drivers/infiniband/hw/nes/nes_cm.c
24075 ---- linux-3.0.9/drivers/infiniband/hw/nes/nes_cm.c 2011-11-11 13:12:24.000000000 -0500
24076 -+++ linux-3.0.9/drivers/infiniband/hw/nes/nes_cm.c 2011-11-15 20:02:59.000000000 -0500
24077 +diff -urNp linux-3.1.1/drivers/infiniband/hw/nes/nes_cm.c linux-3.1.1/drivers/infiniband/hw/nes/nes_cm.c
24078 +--- linux-3.1.1/drivers/infiniband/hw/nes/nes_cm.c 2011-11-11 15:19:27.000000000 -0500
24079 ++++ linux-3.1.1/drivers/infiniband/hw/nes/nes_cm.c 2011-11-16 18:39:07.000000000 -0500
24080 @@ -68,14 +68,14 @@ u32 cm_packets_dropped;
24081 u32 cm_packets_retrans;
24082 u32 cm_packets_created;
24083 @@ -28665,9 +28627,9 @@ diff -urNp linux-3.0.9/drivers/infiniband/hw/nes/nes_cm.c linux-3.0.9/drivers/in
24084 nes_debug(NES_DBG_CM, "cm_node = %p - cm_id = %p, jiffies = %lu\n",
24085 cm_node, cm_id, jiffies);
24086
24087 -diff -urNp linux-3.0.9/drivers/infiniband/hw/nes/nes.h linux-3.0.9/drivers/infiniband/hw/nes/nes.h
24088 ---- linux-3.0.9/drivers/infiniband/hw/nes/nes.h 2011-11-11 13:12:24.000000000 -0500
24089 -+++ linux-3.0.9/drivers/infiniband/hw/nes/nes.h 2011-11-15 20:02:59.000000000 -0500
24090 +diff -urNp linux-3.1.1/drivers/infiniband/hw/nes/nes.h linux-3.1.1/drivers/infiniband/hw/nes/nes.h
24091 +--- linux-3.1.1/drivers/infiniband/hw/nes/nes.h 2011-11-11 15:19:27.000000000 -0500
24092 ++++ linux-3.1.1/drivers/infiniband/hw/nes/nes.h 2011-11-16 18:39:07.000000000 -0500
24093 @@ -175,17 +175,17 @@ extern unsigned int nes_debug_level;
24094 extern unsigned int wqm_quanta;
24095 extern struct list_head nes_adapter_list;
24096 @@ -28719,9 +28681,9 @@ diff -urNp linux-3.0.9/drivers/infiniband/hw/nes/nes.h linux-3.0.9/drivers/infin
24097
24098 extern u32 int_mod_timer_init;
24099 extern u32 int_mod_cq_depth_256;
24100 -diff -urNp linux-3.0.9/drivers/infiniband/hw/nes/nes_nic.c linux-3.0.9/drivers/infiniband/hw/nes/nes_nic.c
24101 ---- linux-3.0.9/drivers/infiniband/hw/nes/nes_nic.c 2011-11-11 13:12:24.000000000 -0500
24102 -+++ linux-3.0.9/drivers/infiniband/hw/nes/nes_nic.c 2011-11-15 20:02:59.000000000 -0500
24103 +diff -urNp linux-3.1.1/drivers/infiniband/hw/nes/nes_nic.c linux-3.1.1/drivers/infiniband/hw/nes/nes_nic.c
24104 +--- linux-3.1.1/drivers/infiniband/hw/nes/nes_nic.c 2011-11-11 15:19:27.000000000 -0500
24105 ++++ linux-3.1.1/drivers/infiniband/hw/nes/nes_nic.c 2011-11-16 18:39:07.000000000 -0500
24106 @@ -1274,31 +1274,31 @@ static void nes_netdev_get_ethtool_stats
24107 target_stat_values[++index] = mh_detected;
24108 target_stat_values[++index] = mh_pauses_sent;
24109 @@ -28772,9 +28734,9 @@ diff -urNp linux-3.0.9/drivers/infiniband/hw/nes/nes_nic.c linux-3.0.9/drivers/i
24110 target_stat_values[++index] = nesadapter->free_4kpbl;
24111 target_stat_values[++index] = nesadapter->free_256pbl;
24112 target_stat_values[++index] = int_mod_timer_init;
24113 -diff -urNp linux-3.0.9/drivers/infiniband/hw/nes/nes_verbs.c linux-3.0.9/drivers/infiniband/hw/nes/nes_verbs.c
24114 ---- linux-3.0.9/drivers/infiniband/hw/nes/nes_verbs.c 2011-11-11 13:12:24.000000000 -0500
24115 -+++ linux-3.0.9/drivers/infiniband/hw/nes/nes_verbs.c 2011-11-15 20:02:59.000000000 -0500
24116 +diff -urNp linux-3.1.1/drivers/infiniband/hw/nes/nes_verbs.c linux-3.1.1/drivers/infiniband/hw/nes/nes_verbs.c
24117 +--- linux-3.1.1/drivers/infiniband/hw/nes/nes_verbs.c 2011-11-11 15:19:27.000000000 -0500
24118 ++++ linux-3.1.1/drivers/infiniband/hw/nes/nes_verbs.c 2011-11-16 18:39:07.000000000 -0500
24119 @@ -46,9 +46,9 @@
24120
24121 #include <rdma/ib_umem.h>
24122 @@ -28788,7 +28750,7 @@ diff -urNp linux-3.0.9/drivers/infiniband/hw/nes/nes_verbs.c linux-3.0.9/drivers
24123
24124 static void nes_unregister_ofa_device(struct nes_ib_device *nesibdev);
24125
24126 -@@ -1141,7 +1141,7 @@ static struct ib_qp *nes_create_qp(struc
24127 +@@ -1131,7 +1131,7 @@ static struct ib_qp *nes_create_qp(struc
24128 if (init_attr->create_flags)
24129 return ERR_PTR(-EINVAL);
24130
24131 @@ -28797,7 +28759,7 @@ diff -urNp linux-3.0.9/drivers/infiniband/hw/nes/nes_verbs.c linux-3.0.9/drivers
24132 switch (init_attr->qp_type) {
24133 case IB_QPT_RC:
24134 if (nes_drv_opt & NES_DRV_OPT_NO_INLINE_DATA) {
24135 -@@ -1470,7 +1470,7 @@ static int nes_destroy_qp(struct ib_qp *
24136 +@@ -1460,7 +1460,7 @@ static int nes_destroy_qp(struct ib_qp *
24137 struct iw_cm_event cm_event;
24138 int ret;
24139
24140 @@ -28806,9 +28768,9 @@ diff -urNp linux-3.0.9/drivers/infiniband/hw/nes/nes_verbs.c linux-3.0.9/drivers
24141 nesqp->destroyed = 1;
24142
24143 /* Blow away the connection if it exists. */
24144 -diff -urNp linux-3.0.9/drivers/infiniband/hw/qib/qib.h linux-3.0.9/drivers/infiniband/hw/qib/qib.h
24145 ---- linux-3.0.9/drivers/infiniband/hw/qib/qib.h 2011-11-11 13:12:24.000000000 -0500
24146 -+++ linux-3.0.9/drivers/infiniband/hw/qib/qib.h 2011-11-15 20:02:59.000000000 -0500
24147 +diff -urNp linux-3.1.1/drivers/infiniband/hw/qib/qib.h linux-3.1.1/drivers/infiniband/hw/qib/qib.h
24148 +--- linux-3.1.1/drivers/infiniband/hw/qib/qib.h 2011-11-11 15:19:27.000000000 -0500
24149 ++++ linux-3.1.1/drivers/infiniband/hw/qib/qib.h 2011-11-16 18:39:07.000000000 -0500
24150 @@ -51,6 +51,7 @@
24151 #include <linux/completion.h>
24152 #include <linux/kref.h>
24153 @@ -28817,9 +28779,9 @@ diff -urNp linux-3.0.9/drivers/infiniband/hw/qib/qib.h linux-3.0.9/drivers/infin
24154
24155 #include "qib_common.h"
24156 #include "qib_verbs.h"
24157 -diff -urNp linux-3.0.9/drivers/input/gameport/gameport.c linux-3.0.9/drivers/input/gameport/gameport.c
24158 ---- linux-3.0.9/drivers/input/gameport/gameport.c 2011-11-11 13:12:24.000000000 -0500
24159 -+++ linux-3.0.9/drivers/input/gameport/gameport.c 2011-11-15 20:02:59.000000000 -0500
24160 +diff -urNp linux-3.1.1/drivers/input/gameport/gameport.c linux-3.1.1/drivers/input/gameport/gameport.c
24161 +--- linux-3.1.1/drivers/input/gameport/gameport.c 2011-11-11 15:19:27.000000000 -0500
24162 ++++ linux-3.1.1/drivers/input/gameport/gameport.c 2011-11-16 18:39:07.000000000 -0500
24163 @@ -488,14 +488,14 @@ EXPORT_SYMBOL(gameport_set_phys);
24164 */
24165 static void gameport_init_port(struct gameport *gameport)
24166 @@ -28837,9 +28799,9 @@ diff -urNp linux-3.0.9/drivers/input/gameport/gameport.c linux-3.0.9/drivers/inp
24167 gameport->dev.bus = &gameport_bus;
24168 gameport->dev.release = gameport_release_port;
24169 if (gameport->parent)
24170 -diff -urNp linux-3.0.9/drivers/input/input.c linux-3.0.9/drivers/input/input.c
24171 ---- linux-3.0.9/drivers/input/input.c 2011-11-11 13:12:24.000000000 -0500
24172 -+++ linux-3.0.9/drivers/input/input.c 2011-11-15 20:02:59.000000000 -0500
24173 +diff -urNp linux-3.1.1/drivers/input/input.c linux-3.1.1/drivers/input/input.c
24174 +--- linux-3.1.1/drivers/input/input.c 2011-11-11 15:19:27.000000000 -0500
24175 ++++ linux-3.1.1/drivers/input/input.c 2011-11-16 18:39:07.000000000 -0500
24176 @@ -1814,7 +1814,7 @@ static void input_cleanse_bitmasks(struc
24177 */
24178 int input_register_device(struct input_dev *dev)
24179 @@ -28858,9 +28820,9 @@ diff -urNp linux-3.0.9/drivers/input/input.c linux-3.0.9/drivers/input/input.c
24180
24181 error = device_add(&dev->dev);
24182 if (error)
24183 -diff -urNp linux-3.0.9/drivers/input/joystick/sidewinder.c linux-3.0.9/drivers/input/joystick/sidewinder.c
24184 ---- linux-3.0.9/drivers/input/joystick/sidewinder.c 2011-11-11 13:12:24.000000000 -0500
24185 -+++ linux-3.0.9/drivers/input/joystick/sidewinder.c 2011-11-15 20:02:59.000000000 -0500
24186 +diff -urNp linux-3.1.1/drivers/input/joystick/sidewinder.c linux-3.1.1/drivers/input/joystick/sidewinder.c
24187 +--- linux-3.1.1/drivers/input/joystick/sidewinder.c 2011-11-11 15:19:27.000000000 -0500
24188 ++++ linux-3.1.1/drivers/input/joystick/sidewinder.c 2011-11-16 18:40:10.000000000 -0500
24189 @@ -30,6 +30,7 @@
24190 #include <linux/kernel.h>
24191 #include <linux/module.h>
24192 @@ -28878,10 +28840,10 @@ diff -urNp linux-3.0.9/drivers/input/joystick/sidewinder.c linux-3.0.9/drivers/i
24193 i = sw_read_packet(sw->gameport, buf, sw->length, 0);
24194
24195 if (sw->type == SW_ID_3DP && sw->length == 66 && i != 66) { /* Broken packet, try to fix */
24196 -diff -urNp linux-3.0.9/drivers/input/joystick/xpad.c linux-3.0.9/drivers/input/joystick/xpad.c
24197 ---- linux-3.0.9/drivers/input/joystick/xpad.c 2011-11-11 13:12:24.000000000 -0500
24198 -+++ linux-3.0.9/drivers/input/joystick/xpad.c 2011-11-15 20:02:59.000000000 -0500
24199 -@@ -689,7 +689,7 @@ static void xpad_led_set(struct led_clas
24200 +diff -urNp linux-3.1.1/drivers/input/joystick/xpad.c linux-3.1.1/drivers/input/joystick/xpad.c
24201 +--- linux-3.1.1/drivers/input/joystick/xpad.c 2011-11-11 15:19:27.000000000 -0500
24202 ++++ linux-3.1.1/drivers/input/joystick/xpad.c 2011-11-16 18:39:07.000000000 -0500
24203 +@@ -710,7 +710,7 @@ static void xpad_led_set(struct led_clas
24204
24205 static int xpad_led_probe(struct usb_xpad *xpad)
24206 {
24207 @@ -28890,7 +28852,7 @@ diff -urNp linux-3.0.9/drivers/input/joystick/xpad.c linux-3.0.9/drivers/input/j
24208 long led_no;
24209 struct xpad_led *led;
24210 struct led_classdev *led_cdev;
24211 -@@ -702,7 +702,7 @@ static int xpad_led_probe(struct usb_xpa
24212 +@@ -723,7 +723,7 @@ static int xpad_led_probe(struct usb_xpa
24213 if (!led)
24214 return -ENOMEM;
24215
24216 @@ -28899,9 +28861,9 @@ diff -urNp linux-3.0.9/drivers/input/joystick/xpad.c linux-3.0.9/drivers/input/j
24217
24218 snprintf(led->name, sizeof(led->name), "xpad%ld", led_no);
24219 led->xpad = xpad;
24220 -diff -urNp linux-3.0.9/drivers/input/mousedev.c linux-3.0.9/drivers/input/mousedev.c
24221 ---- linux-3.0.9/drivers/input/mousedev.c 2011-11-11 13:12:24.000000000 -0500
24222 -+++ linux-3.0.9/drivers/input/mousedev.c 2011-11-15 20:02:59.000000000 -0500
24223 +diff -urNp linux-3.1.1/drivers/input/mousedev.c linux-3.1.1/drivers/input/mousedev.c
24224 +--- linux-3.1.1/drivers/input/mousedev.c 2011-11-11 15:19:27.000000000 -0500
24225 ++++ linux-3.1.1/drivers/input/mousedev.c 2011-11-16 18:39:07.000000000 -0500
24226 @@ -763,7 +763,7 @@ static ssize_t mousedev_read(struct file
24227
24228 spin_unlock_irq(&client->packet_lock);
24229 @@ -28911,9 +28873,9 @@ diff -urNp linux-3.0.9/drivers/input/mousedev.c linux-3.0.9/drivers/input/moused
24230 return -EFAULT;
24231
24232 return count;
24233 -diff -urNp linux-3.0.9/drivers/input/serio/serio.c linux-3.0.9/drivers/input/serio/serio.c
24234 ---- linux-3.0.9/drivers/input/serio/serio.c 2011-11-11 13:12:24.000000000 -0500
24235 -+++ linux-3.0.9/drivers/input/serio/serio.c 2011-11-15 20:02:59.000000000 -0500
24236 +diff -urNp linux-3.1.1/drivers/input/serio/serio.c linux-3.1.1/drivers/input/serio/serio.c
24237 +--- linux-3.1.1/drivers/input/serio/serio.c 2011-11-11 15:19:27.000000000 -0500
24238 ++++ linux-3.1.1/drivers/input/serio/serio.c 2011-11-16 18:39:07.000000000 -0500
24239 @@ -497,7 +497,7 @@ static void serio_release_port(struct de
24240 */
24241 static void serio_init_port(struct serio *serio)
24242 @@ -28932,9 +28894,9 @@ diff -urNp linux-3.0.9/drivers/input/serio/serio.c linux-3.0.9/drivers/input/ser
24243 serio->dev.bus = &serio_bus;
24244 serio->dev.release = serio_release_port;
24245 serio->dev.groups = serio_device_attr_groups;
24246 -diff -urNp linux-3.0.9/drivers/isdn/capi/capi.c linux-3.0.9/drivers/isdn/capi/capi.c
24247 ---- linux-3.0.9/drivers/isdn/capi/capi.c 2011-11-11 13:12:24.000000000 -0500
24248 -+++ linux-3.0.9/drivers/isdn/capi/capi.c 2011-11-15 20:02:59.000000000 -0500
24249 +diff -urNp linux-3.1.1/drivers/isdn/capi/capi.c linux-3.1.1/drivers/isdn/capi/capi.c
24250 +--- linux-3.1.1/drivers/isdn/capi/capi.c 2011-11-11 15:19:27.000000000 -0500
24251 ++++ linux-3.1.1/drivers/isdn/capi/capi.c 2011-11-16 18:39:07.000000000 -0500
24252 @@ -83,8 +83,8 @@ struct capiminor {
24253
24254 struct capi20_appl *ap;
24255 @@ -28972,9 +28934,9 @@ diff -urNp linux-3.0.9/drivers/isdn/capi/capi.c linux-3.0.9/drivers/isdn/capi/ca
24256 capimsg_setu32(skb->data, 8, mp->ncci); /* NCCI */
24257 capimsg_setu32(skb->data, 12, (u32)(long)skb->data);/* Data32 */
24258 capimsg_setu16(skb->data, 16, len); /* Data length */
24259 -diff -urNp linux-3.0.9/drivers/isdn/gigaset/common.c linux-3.0.9/drivers/isdn/gigaset/common.c
24260 ---- linux-3.0.9/drivers/isdn/gigaset/common.c 2011-11-11 13:12:24.000000000 -0500
24261 -+++ linux-3.0.9/drivers/isdn/gigaset/common.c 2011-11-15 20:02:59.000000000 -0500
24262 +diff -urNp linux-3.1.1/drivers/isdn/gigaset/common.c linux-3.1.1/drivers/isdn/gigaset/common.c
24263 +--- linux-3.1.1/drivers/isdn/gigaset/common.c 2011-11-11 15:19:27.000000000 -0500
24264 ++++ linux-3.1.1/drivers/isdn/gigaset/common.c 2011-11-16 18:39:07.000000000 -0500
24265 @@ -723,7 +723,7 @@ struct cardstate *gigaset_initcs(struct
24266 cs->commands_pending = 0;
24267 cs->cur_at_seq = 0;
24268 @@ -28984,13 +28946,13 @@ diff -urNp linux-3.0.9/drivers/isdn/gigaset/common.c linux-3.0.9/drivers/isdn/gi
24269 cs->dev = NULL;
24270 cs->tty = NULL;
24271 cs->tty_dev = NULL;
24272 -diff -urNp linux-3.0.9/drivers/isdn/gigaset/gigaset.h linux-3.0.9/drivers/isdn/gigaset/gigaset.h
24273 ---- linux-3.0.9/drivers/isdn/gigaset/gigaset.h 2011-11-11 13:12:24.000000000 -0500
24274 -+++ linux-3.0.9/drivers/isdn/gigaset/gigaset.h 2011-11-15 20:02:59.000000000 -0500
24275 +diff -urNp linux-3.1.1/drivers/isdn/gigaset/gigaset.h linux-3.1.1/drivers/isdn/gigaset/gigaset.h
24276 +--- linux-3.1.1/drivers/isdn/gigaset/gigaset.h 2011-11-11 15:19:27.000000000 -0500
24277 ++++ linux-3.1.1/drivers/isdn/gigaset/gigaset.h 2011-11-16 18:39:07.000000000 -0500
24278 @@ -35,6 +35,7 @@
24279 #include <linux/tty_driver.h>
24280 #include <linux/list.h>
24281 - #include <asm/atomic.h>
24282 + #include <linux/atomic.h>
24283 +#include <asm/local.h>
24284
24285 #define GIG_VERSION {0, 5, 0, 0}
24286 @@ -29004,9 +28966,9 @@ diff -urNp linux-3.0.9/drivers/isdn/gigaset/gigaset.h linux-3.0.9/drivers/isdn/g
24287 struct tty_struct *tty;
24288 struct tasklet_struct if_wake_tasklet;
24289 unsigned control_state;
24290 -diff -urNp linux-3.0.9/drivers/isdn/gigaset/interface.c linux-3.0.9/drivers/isdn/gigaset/interface.c
24291 ---- linux-3.0.9/drivers/isdn/gigaset/interface.c 2011-11-11 13:12:24.000000000 -0500
24292 -+++ linux-3.0.9/drivers/isdn/gigaset/interface.c 2011-11-15 20:02:59.000000000 -0500
24293 +diff -urNp linux-3.1.1/drivers/isdn/gigaset/interface.c linux-3.1.1/drivers/isdn/gigaset/interface.c
24294 +--- linux-3.1.1/drivers/isdn/gigaset/interface.c 2011-11-11 15:19:27.000000000 -0500
24295 ++++ linux-3.1.1/drivers/isdn/gigaset/interface.c 2011-11-16 18:39:07.000000000 -0500
24296 @@ -162,9 +162,7 @@ static int if_open(struct tty_struct *tt
24297 }
24298 tty->driver_data = cs;
24299 @@ -29094,9 +29056,9 @@ diff -urNp linux-3.0.9/drivers/isdn/gigaset/interface.c linux-3.0.9/drivers/isdn
24300 dev_warn(cs->dev, "%s: device not opened\n", __func__);
24301 goto out;
24302 }
24303 -diff -urNp linux-3.0.9/drivers/isdn/hardware/avm/b1.c linux-3.0.9/drivers/isdn/hardware/avm/b1.c
24304 ---- linux-3.0.9/drivers/isdn/hardware/avm/b1.c 2011-11-11 13:12:24.000000000 -0500
24305 -+++ linux-3.0.9/drivers/isdn/hardware/avm/b1.c 2011-11-15 20:02:59.000000000 -0500
24306 +diff -urNp linux-3.1.1/drivers/isdn/hardware/avm/b1.c linux-3.1.1/drivers/isdn/hardware/avm/b1.c
24307 +--- linux-3.1.1/drivers/isdn/hardware/avm/b1.c 2011-11-11 15:19:27.000000000 -0500
24308 ++++ linux-3.1.1/drivers/isdn/hardware/avm/b1.c 2011-11-16 18:39:07.000000000 -0500
24309 @@ -176,7 +176,7 @@ int b1_load_t4file(avmcard *card, capilo
24310 }
24311 if (left) {
24312 @@ -29115,9 +29077,9 @@ diff -urNp linux-3.0.9/drivers/isdn/hardware/avm/b1.c linux-3.0.9/drivers/isdn/h
24313 return -EFAULT;
24314 } else {
24315 memcpy(buf, dp, left);
24316 -diff -urNp linux-3.0.9/drivers/isdn/hardware/eicon/capidtmf.c linux-3.0.9/drivers/isdn/hardware/eicon/capidtmf.c
24317 ---- linux-3.0.9/drivers/isdn/hardware/eicon/capidtmf.c 2011-11-11 13:12:24.000000000 -0500
24318 -+++ linux-3.0.9/drivers/isdn/hardware/eicon/capidtmf.c 2011-11-15 20:02:59.000000000 -0500
24319 +diff -urNp linux-3.1.1/drivers/isdn/hardware/eicon/capidtmf.c linux-3.1.1/drivers/isdn/hardware/eicon/capidtmf.c
24320 +--- linux-3.1.1/drivers/isdn/hardware/eicon/capidtmf.c 2011-11-11 15:19:27.000000000 -0500
24321 ++++ linux-3.1.1/drivers/isdn/hardware/eicon/capidtmf.c 2011-11-16 18:40:10.000000000 -0500
24322 @@ -498,6 +498,7 @@ void capidtmf_recv_block (t_capidtmf_sta
24323 byte goertzel_result_buffer[CAPIDTMF_RECV_TOTAL_FREQUENCY_COUNT];
24324 short windowed_sample_buffer[CAPIDTMF_RECV_WINDOWED_SAMPLES];
24325 @@ -29126,9 +29088,9 @@ diff -urNp linux-3.0.9/drivers/isdn/hardware/eicon/capidtmf.c linux-3.0.9/driver
24326
24327 if (p_state->recv.state & CAPIDTMF_RECV_STATE_DTMF_ACTIVE)
24328 {
24329 -diff -urNp linux-3.0.9/drivers/isdn/hardware/eicon/capifunc.c linux-3.0.9/drivers/isdn/hardware/eicon/capifunc.c
24330 ---- linux-3.0.9/drivers/isdn/hardware/eicon/capifunc.c 2011-11-11 13:12:24.000000000 -0500
24331 -+++ linux-3.0.9/drivers/isdn/hardware/eicon/capifunc.c 2011-11-15 20:02:59.000000000 -0500
24332 +diff -urNp linux-3.1.1/drivers/isdn/hardware/eicon/capifunc.c linux-3.1.1/drivers/isdn/hardware/eicon/capifunc.c
24333 +--- linux-3.1.1/drivers/isdn/hardware/eicon/capifunc.c 2011-11-11 15:19:27.000000000 -0500
24334 ++++ linux-3.1.1/drivers/isdn/hardware/eicon/capifunc.c 2011-11-16 18:40:10.000000000 -0500
24335 @@ -1055,6 +1055,8 @@ static int divacapi_connect_didd(void)
24336 IDI_SYNC_REQ req;
24337 DESCRIPTOR DIDD_Table[MAX_DESCRIPTORS];
24338 @@ -29138,9 +29100,9 @@ diff -urNp linux-3.0.9/drivers/isdn/hardware/eicon/capifunc.c linux-3.0.9/driver
24339 DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD_Table));
24340
24341 for (x = 0; x < MAX_DESCRIPTORS; x++) {
24342 -diff -urNp linux-3.0.9/drivers/isdn/hardware/eicon/diddfunc.c linux-3.0.9/drivers/isdn/hardware/eicon/diddfunc.c
24343 ---- linux-3.0.9/drivers/isdn/hardware/eicon/diddfunc.c 2011-11-11 13:12:24.000000000 -0500
24344 -+++ linux-3.0.9/drivers/isdn/hardware/eicon/diddfunc.c 2011-11-15 20:02:59.000000000 -0500
24345 +diff -urNp linux-3.1.1/drivers/isdn/hardware/eicon/diddfunc.c linux-3.1.1/drivers/isdn/hardware/eicon/diddfunc.c
24346 +--- linux-3.1.1/drivers/isdn/hardware/eicon/diddfunc.c 2011-11-11 15:19:27.000000000 -0500
24347 ++++ linux-3.1.1/drivers/isdn/hardware/eicon/diddfunc.c 2011-11-16 18:40:10.000000000 -0500
24348 @@ -54,6 +54,8 @@ static int DIVA_INIT_FUNCTION connect_di
24349 IDI_SYNC_REQ req;
24350 DESCRIPTOR DIDD_Table[MAX_DESCRIPTORS];
24351 @@ -29150,9 +29112,9 @@ diff -urNp linux-3.0.9/drivers/isdn/hardware/eicon/diddfunc.c linux-3.0.9/driver
24352 DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD_Table));
24353
24354 for (x = 0; x < MAX_DESCRIPTORS; x++) {
24355 -diff -urNp linux-3.0.9/drivers/isdn/hardware/eicon/divasfunc.c linux-3.0.9/drivers/isdn/hardware/eicon/divasfunc.c
24356 ---- linux-3.0.9/drivers/isdn/hardware/eicon/divasfunc.c 2011-11-11 13:12:24.000000000 -0500
24357 -+++ linux-3.0.9/drivers/isdn/hardware/eicon/divasfunc.c 2011-11-15 20:02:59.000000000 -0500
24358 +diff -urNp linux-3.1.1/drivers/isdn/hardware/eicon/divasfunc.c linux-3.1.1/drivers/isdn/hardware/eicon/divasfunc.c
24359 +--- linux-3.1.1/drivers/isdn/hardware/eicon/divasfunc.c 2011-11-11 15:19:27.000000000 -0500
24360 ++++ linux-3.1.1/drivers/isdn/hardware/eicon/divasfunc.c 2011-11-16 18:40:10.000000000 -0500
24361 @@ -160,6 +160,8 @@ static int DIVA_INIT_FUNCTION connect_di
24362 IDI_SYNC_REQ req;
24363 DESCRIPTOR DIDD_Table[MAX_DESCRIPTORS];
24364 @@ -29162,9 +29124,9 @@ diff -urNp linux-3.0.9/drivers/isdn/hardware/eicon/divasfunc.c linux-3.0.9/drive
24365 DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD_Table));
24366
24367 for (x = 0; x < MAX_DESCRIPTORS; x++) {
24368 -diff -urNp linux-3.0.9/drivers/isdn/hardware/eicon/divasync.h linux-3.0.9/drivers/isdn/hardware/eicon/divasync.h
24369 ---- linux-3.0.9/drivers/isdn/hardware/eicon/divasync.h 2011-11-11 13:12:24.000000000 -0500
24370 -+++ linux-3.0.9/drivers/isdn/hardware/eicon/divasync.h 2011-11-15 20:02:59.000000000 -0500
24371 +diff -urNp linux-3.1.1/drivers/isdn/hardware/eicon/divasync.h linux-3.1.1/drivers/isdn/hardware/eicon/divasync.h
24372 +--- linux-3.1.1/drivers/isdn/hardware/eicon/divasync.h 2011-11-11 15:19:27.000000000 -0500
24373 ++++ linux-3.1.1/drivers/isdn/hardware/eicon/divasync.h 2011-11-16 18:39:07.000000000 -0500
24374 @@ -146,7 +146,7 @@ typedef struct _diva_didd_add_adapter {
24375 } diva_didd_add_adapter_t;
24376 typedef struct _diva_didd_remove_adapter {
24377 @@ -29174,9 +29136,9 @@ diff -urNp linux-3.0.9/drivers/isdn/hardware/eicon/divasync.h linux-3.0.9/driver
24378 typedef struct _diva_didd_read_adapter_array {
24379 void * buffer;
24380 dword length;
24381 -diff -urNp linux-3.0.9/drivers/isdn/hardware/eicon/idifunc.c linux-3.0.9/drivers/isdn/hardware/eicon/idifunc.c
24382 ---- linux-3.0.9/drivers/isdn/hardware/eicon/idifunc.c 2011-11-11 13:12:24.000000000 -0500
24383 -+++ linux-3.0.9/drivers/isdn/hardware/eicon/idifunc.c 2011-11-15 20:02:59.000000000 -0500
24384 +diff -urNp linux-3.1.1/drivers/isdn/hardware/eicon/idifunc.c linux-3.1.1/drivers/isdn/hardware/eicon/idifunc.c
24385 +--- linux-3.1.1/drivers/isdn/hardware/eicon/idifunc.c 2011-11-11 15:19:27.000000000 -0500
24386 ++++ linux-3.1.1/drivers/isdn/hardware/eicon/idifunc.c 2011-11-16 18:40:10.000000000 -0500
24387 @@ -188,6 +188,8 @@ static int DIVA_INIT_FUNCTION connect_di
24388 IDI_SYNC_REQ req;
24389 DESCRIPTOR DIDD_Table[MAX_DESCRIPTORS];
24390 @@ -29186,9 +29148,9 @@ diff -urNp linux-3.0.9/drivers/isdn/hardware/eicon/idifunc.c linux-3.0.9/drivers
24391 DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD_Table));
24392
24393 for (x = 0; x < MAX_DESCRIPTORS; x++) {
24394 -diff -urNp linux-3.0.9/drivers/isdn/hardware/eicon/message.c linux-3.0.9/drivers/isdn/hardware/eicon/message.c
24395 ---- linux-3.0.9/drivers/isdn/hardware/eicon/message.c 2011-11-11 13:12:24.000000000 -0500
24396 -+++ linux-3.0.9/drivers/isdn/hardware/eicon/message.c 2011-11-15 20:02:59.000000000 -0500
24397 +diff -urNp linux-3.1.1/drivers/isdn/hardware/eicon/message.c linux-3.1.1/drivers/isdn/hardware/eicon/message.c
24398 +--- linux-3.1.1/drivers/isdn/hardware/eicon/message.c 2011-11-11 15:19:27.000000000 -0500
24399 ++++ linux-3.1.1/drivers/isdn/hardware/eicon/message.c 2011-11-16 18:40:10.000000000 -0500
24400 @@ -4886,6 +4886,8 @@ static void sig_ind(PLCI *plci)
24401 dword d;
24402 word w;
24403 @@ -29225,9 +29187,9 @@ diff -urNp linux-3.0.9/drivers/isdn/hardware/eicon/message.c linux-3.0.9/drivers
24404 set_group_ind_mask (plci); /* all APPLs within this inc. call are allowed to dial in */
24405
24406 if(!a->group_optimization_enabled)
24407 -diff -urNp linux-3.0.9/drivers/isdn/hardware/eicon/mntfunc.c linux-3.0.9/drivers/isdn/hardware/eicon/mntfunc.c
24408 ---- linux-3.0.9/drivers/isdn/hardware/eicon/mntfunc.c 2011-11-11 13:12:24.000000000 -0500
24409 -+++ linux-3.0.9/drivers/isdn/hardware/eicon/mntfunc.c 2011-11-15 20:02:59.000000000 -0500
24410 +diff -urNp linux-3.1.1/drivers/isdn/hardware/eicon/mntfunc.c linux-3.1.1/drivers/isdn/hardware/eicon/mntfunc.c
24411 +--- linux-3.1.1/drivers/isdn/hardware/eicon/mntfunc.c 2011-11-11 15:19:27.000000000 -0500
24412 ++++ linux-3.1.1/drivers/isdn/hardware/eicon/mntfunc.c 2011-11-16 18:40:10.000000000 -0500
24413 @@ -79,6 +79,8 @@ static int DIVA_INIT_FUNCTION connect_di
24414 IDI_SYNC_REQ req;
24415 DESCRIPTOR DIDD_Table[MAX_DESCRIPTORS];
24416 @@ -29237,9 +29199,9 @@ diff -urNp linux-3.0.9/drivers/isdn/hardware/eicon/mntfunc.c linux-3.0.9/drivers
24417 DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD_Table));
24418
24419 for (x = 0; x < MAX_DESCRIPTORS; x++) {
24420 -diff -urNp linux-3.0.9/drivers/isdn/hardware/eicon/xdi_adapter.h linux-3.0.9/drivers/isdn/hardware/eicon/xdi_adapter.h
24421 ---- linux-3.0.9/drivers/isdn/hardware/eicon/xdi_adapter.h 2011-11-11 13:12:24.000000000 -0500
24422 -+++ linux-3.0.9/drivers/isdn/hardware/eicon/xdi_adapter.h 2011-11-15 20:02:59.000000000 -0500
24423 +diff -urNp linux-3.1.1/drivers/isdn/hardware/eicon/xdi_adapter.h linux-3.1.1/drivers/isdn/hardware/eicon/xdi_adapter.h
24424 +--- linux-3.1.1/drivers/isdn/hardware/eicon/xdi_adapter.h 2011-11-11 15:19:27.000000000 -0500
24425 ++++ linux-3.1.1/drivers/isdn/hardware/eicon/xdi_adapter.h 2011-11-16 18:39:07.000000000 -0500
24426 @@ -44,7 +44,7 @@ typedef struct _xdi_mbox_t {
24427 typedef struct _diva_os_idi_adapter_interface {
24428 diva_init_card_proc_t cleanup_adapter_proc;
24429 @@ -29249,9 +29211,9 @@ diff -urNp linux-3.0.9/drivers/isdn/hardware/eicon/xdi_adapter.h linux-3.0.9/dri
24430
24431 typedef struct _diva_os_xdi_adapter {
24432 struct list_head link;
24433 -diff -urNp linux-3.0.9/drivers/isdn/i4l/isdn_common.c linux-3.0.9/drivers/isdn/i4l/isdn_common.c
24434 ---- linux-3.0.9/drivers/isdn/i4l/isdn_common.c 2011-11-11 13:12:24.000000000 -0500
24435 -+++ linux-3.0.9/drivers/isdn/i4l/isdn_common.c 2011-11-15 20:02:59.000000000 -0500
24436 +diff -urNp linux-3.1.1/drivers/isdn/i4l/isdn_common.c linux-3.1.1/drivers/isdn/i4l/isdn_common.c
24437 +--- linux-3.1.1/drivers/isdn/i4l/isdn_common.c 2011-11-11 15:19:27.000000000 -0500
24438 ++++ linux-3.1.1/drivers/isdn/i4l/isdn_common.c 2011-11-16 18:40:10.000000000 -0500
24439 @@ -1286,6 +1286,8 @@ isdn_ioctl(struct file *file, uint cmd,
24440 } iocpar;
24441 void __user *argp = (void __user *)arg;
24442 @@ -29261,9 +29223,9 @@ diff -urNp linux-3.0.9/drivers/isdn/i4l/isdn_common.c linux-3.0.9/drivers/isdn/i
24443 #define name iocpar.name
24444 #define bname iocpar.bname
24445 #define iocts iocpar.iocts
24446 -diff -urNp linux-3.0.9/drivers/isdn/icn/icn.c linux-3.0.9/drivers/isdn/icn/icn.c
24447 ---- linux-3.0.9/drivers/isdn/icn/icn.c 2011-11-11 13:12:24.000000000 -0500
24448 -+++ linux-3.0.9/drivers/isdn/icn/icn.c 2011-11-15 20:02:59.000000000 -0500
24449 +diff -urNp linux-3.1.1/drivers/isdn/icn/icn.c linux-3.1.1/drivers/isdn/icn/icn.c
24450 +--- linux-3.1.1/drivers/isdn/icn/icn.c 2011-11-11 15:19:27.000000000 -0500
24451 ++++ linux-3.1.1/drivers/isdn/icn/icn.c 2011-11-16 18:39:07.000000000 -0500
24452 @@ -1045,7 +1045,7 @@ icn_writecmd(const u_char * buf, int len
24453 if (count > len)
24454 count = len;
24455 @@ -29273,9 +29235,9 @@ diff -urNp linux-3.0.9/drivers/isdn/icn/icn.c linux-3.0.9/drivers/isdn/icn/icn.c
24456 return -EFAULT;
24457 } else
24458 memcpy(msg, buf, count);
24459 -diff -urNp linux-3.0.9/drivers/lguest/core.c linux-3.0.9/drivers/lguest/core.c
24460 ---- linux-3.0.9/drivers/lguest/core.c 2011-11-11 13:12:24.000000000 -0500
24461 -+++ linux-3.0.9/drivers/lguest/core.c 2011-11-15 20:02:59.000000000 -0500
24462 +diff -urNp linux-3.1.1/drivers/lguest/core.c linux-3.1.1/drivers/lguest/core.c
24463 +--- linux-3.1.1/drivers/lguest/core.c 2011-11-11 15:19:27.000000000 -0500
24464 ++++ linux-3.1.1/drivers/lguest/core.c 2011-11-16 18:39:07.000000000 -0500
24465 @@ -92,9 +92,17 @@ static __init int map_switcher(void)
24466 * it's worked so far. The end address needs +1 because __get_vm_area
24467 * allocates an extra guard page, so we need space for that.
24468 @@ -29296,16 +29258,16 @@ diff -urNp linux-3.0.9/drivers/lguest/core.c linux-3.0.9/drivers/lguest/core.c
24469 printk("lguest: could not map switcher pages high\n");
24470 @@ -119,7 +127,7 @@ static __init int map_switcher(void)
24471 * Now the Switcher is mapped at the right address, we can't fail!
24472 - * Copy in the compiled-in Switcher code (from <arch>_switcher.S).
24473 + * Copy in the compiled-in Switcher code (from x86/switcher_32.S).
24474 */
24475 - memcpy(switcher_vma->addr, start_switcher_text,
24476 + memcpy(switcher_vma->addr, ktla_ktva(start_switcher_text),
24477 end_switcher_text - start_switcher_text);
24478
24479 printk(KERN_INFO "lguest: mapped switcher at %p\n",
24480 -diff -urNp linux-3.0.9/drivers/lguest/x86/core.c linux-3.0.9/drivers/lguest/x86/core.c
24481 ---- linux-3.0.9/drivers/lguest/x86/core.c 2011-11-11 13:12:24.000000000 -0500
24482 -+++ linux-3.0.9/drivers/lguest/x86/core.c 2011-11-15 20:02:59.000000000 -0500
24483 +diff -urNp linux-3.1.1/drivers/lguest/x86/core.c linux-3.1.1/drivers/lguest/x86/core.c
24484 +--- linux-3.1.1/drivers/lguest/x86/core.c 2011-11-11 15:19:27.000000000 -0500
24485 ++++ linux-3.1.1/drivers/lguest/x86/core.c 2011-11-16 18:39:07.000000000 -0500
24486 @@ -59,7 +59,7 @@ static struct {
24487 /* Offset from where switcher.S was compiled to where we've copied it */
24488 static unsigned long switcher_offset(void)
24489 @@ -29329,7 +29291,7 @@ diff -urNp linux-3.0.9/drivers/lguest/x86/core.c linux-3.0.9/drivers/lguest/x86/
24490 /*
24491 * Set up the Guest's page tables to see this CPU's pages (and no
24492 * other CPU's pages).
24493 -@@ -547,7 +553,7 @@ void __init lguest_arch_host_init(void)
24494 +@@ -472,7 +478,7 @@ void __init lguest_arch_host_init(void)
24495 * compiled-in switcher code and the high-mapped copy we just made.
24496 */
24497 for (i = 0; i < IDT_ENTRIES; i++)
24498 @@ -29338,7 +29300,7 @@ diff -urNp linux-3.0.9/drivers/lguest/x86/core.c linux-3.0.9/drivers/lguest/x86/
24499
24500 /*
24501 * Set up the Switcher's per-cpu areas.
24502 -@@ -630,7 +636,7 @@ void __init lguest_arch_host_init(void)
24503 +@@ -555,7 +561,7 @@ void __init lguest_arch_host_init(void)
24504 * it will be undisturbed when we switch. To change %cs and jump we
24505 * need this structure to feed to Intel's "lcall" instruction.
24506 */
24507 @@ -29347,9 +29309,9 @@ diff -urNp linux-3.0.9/drivers/lguest/x86/core.c linux-3.0.9/drivers/lguest/x86/
24508 lguest_entry.segment = LGUEST_CS;
24509
24510 /*
24511 -diff -urNp linux-3.0.9/drivers/lguest/x86/switcher_32.S linux-3.0.9/drivers/lguest/x86/switcher_32.S
24512 ---- linux-3.0.9/drivers/lguest/x86/switcher_32.S 2011-11-11 13:12:24.000000000 -0500
24513 -+++ linux-3.0.9/drivers/lguest/x86/switcher_32.S 2011-11-15 20:02:59.000000000 -0500
24514 +diff -urNp linux-3.1.1/drivers/lguest/x86/switcher_32.S linux-3.1.1/drivers/lguest/x86/switcher_32.S
24515 +--- linux-3.1.1/drivers/lguest/x86/switcher_32.S 2011-11-11 15:19:27.000000000 -0500
24516 ++++ linux-3.1.1/drivers/lguest/x86/switcher_32.S 2011-11-16 18:39:07.000000000 -0500
24517 @@ -87,6 +87,7 @@
24518 #include <asm/page.h>
24519 #include <asm/segment.h>
24520 @@ -29408,9 +29370,9 @@ diff -urNp linux-3.0.9/drivers/lguest/x86/switcher_32.S linux-3.0.9/drivers/lgue
24521
24522 // Every interrupt can come to us here
24523 // But we must truly tell each apart.
24524 -diff -urNp linux-3.0.9/drivers/macintosh/macio_asic.c linux-3.0.9/drivers/macintosh/macio_asic.c
24525 ---- linux-3.0.9/drivers/macintosh/macio_asic.c 2011-11-11 13:12:24.000000000 -0500
24526 -+++ linux-3.0.9/drivers/macintosh/macio_asic.c 2011-11-15 20:02:59.000000000 -0500
24527 +diff -urNp linux-3.1.1/drivers/macintosh/macio_asic.c linux-3.1.1/drivers/macintosh/macio_asic.c
24528 +--- linux-3.1.1/drivers/macintosh/macio_asic.c 2011-11-11 15:19:27.000000000 -0500
24529 ++++ linux-3.1.1/drivers/macintosh/macio_asic.c 2011-11-16 18:39:07.000000000 -0500
24530 @@ -748,7 +748,7 @@ static void __devexit macio_pci_remove(s
24531 * MacIO is matched against any Apple ID, it's probe() function
24532 * will then decide wether it applies or not
24533 @@ -29420,10 +29382,10 @@ diff -urNp linux-3.0.9/drivers/macintosh/macio_asic.c linux-3.0.9/drivers/macint
24534 .vendor = PCI_VENDOR_ID_APPLE,
24535 .device = PCI_ANY_ID,
24536 .subvendor = PCI_ANY_ID,
24537 -diff -urNp linux-3.0.9/drivers/md/dm.c linux-3.0.9/drivers/md/dm.c
24538 ---- linux-3.0.9/drivers/md/dm.c 2011-11-11 13:12:24.000000000 -0500
24539 -+++ linux-3.0.9/drivers/md/dm.c 2011-11-15 20:02:59.000000000 -0500
24540 -@@ -164,9 +164,9 @@ struct mapped_device {
24541 +diff -urNp linux-3.1.1/drivers/md/dm.c linux-3.1.1/drivers/md/dm.c
24542 +--- linux-3.1.1/drivers/md/dm.c 2011-11-11 15:19:27.000000000 -0500
24543 ++++ linux-3.1.1/drivers/md/dm.c 2011-11-16 18:39:07.000000000 -0500
24544 +@@ -165,9 +165,9 @@ struct mapped_device {
24545 /*
24546 * Event handling.
24547 */
24548 @@ -29435,7 +29397,7 @@ diff -urNp linux-3.0.9/drivers/md/dm.c linux-3.0.9/drivers/md/dm.c
24549 struct list_head uevent_list;
24550 spinlock_t uevent_lock; /* Protect access to uevent_list */
24551
24552 -@@ -1842,8 +1842,8 @@ static struct mapped_device *alloc_dev(i
24553 +@@ -1843,8 +1843,8 @@ static struct mapped_device *alloc_dev(i
24554 rwlock_init(&md->map_lock);
24555 atomic_set(&md->holders, 1);
24556 atomic_set(&md->open_count, 0);
24557 @@ -29446,7 +29408,7 @@ diff -urNp linux-3.0.9/drivers/md/dm.c linux-3.0.9/drivers/md/dm.c
24558 INIT_LIST_HEAD(&md->uevent_list);
24559 spin_lock_init(&md->uevent_lock);
24560
24561 -@@ -1977,7 +1977,7 @@ static void event_callback(void *context
24562 +@@ -1978,7 +1978,7 @@ static void event_callback(void *context
24563
24564 dm_send_uevents(&uevents, &disk_to_dev(md->disk)->kobj);
24565
24566 @@ -29455,7 +29417,7 @@ diff -urNp linux-3.0.9/drivers/md/dm.c linux-3.0.9/drivers/md/dm.c
24567 wake_up(&md->eventq);
24568 }
24569
24570 -@@ -2553,18 +2553,18 @@ int dm_kobject_uevent(struct mapped_devi
24571 +@@ -2614,18 +2614,18 @@ int dm_kobject_uevent(struct mapped_devi
24572
24573 uint32_t dm_next_uevent_seq(struct mapped_device *md)
24574 {
24575 @@ -29477,10 +29439,10 @@ diff -urNp linux-3.0.9/drivers/md/dm.c linux-3.0.9/drivers/md/dm.c
24576 }
24577
24578 void dm_uevent_add(struct mapped_device *md, struct list_head *elist)
24579 -diff -urNp linux-3.0.9/drivers/md/dm-ioctl.c linux-3.0.9/drivers/md/dm-ioctl.c
24580 ---- linux-3.0.9/drivers/md/dm-ioctl.c 2011-11-11 13:12:24.000000000 -0500
24581 -+++ linux-3.0.9/drivers/md/dm-ioctl.c 2011-11-15 20:02:59.000000000 -0500
24582 -@@ -1551,7 +1551,7 @@ static int validate_params(uint cmd, str
24583 +diff -urNp linux-3.1.1/drivers/md/dm-ioctl.c linux-3.1.1/drivers/md/dm-ioctl.c
24584 +--- linux-3.1.1/drivers/md/dm-ioctl.c 2011-11-11 15:19:27.000000000 -0500
24585 ++++ linux-3.1.1/drivers/md/dm-ioctl.c 2011-11-16 18:39:07.000000000 -0500
24586 +@@ -1578,7 +1578,7 @@ static int validate_params(uint cmd, str
24587 cmd == DM_LIST_VERSIONS_CMD)
24588 return 0;
24589
24590 @@ -29489,9 +29451,9 @@ diff -urNp linux-3.0.9/drivers/md/dm-ioctl.c linux-3.0.9/drivers/md/dm-ioctl.c
24591 if (!*param->name) {
24592 DMWARN("name not supplied when creating device");
24593 return -EINVAL;
24594 -diff -urNp linux-3.0.9/drivers/md/dm-raid1.c linux-3.0.9/drivers/md/dm-raid1.c
24595 ---- linux-3.0.9/drivers/md/dm-raid1.c 2011-11-11 13:12:24.000000000 -0500
24596 -+++ linux-3.0.9/drivers/md/dm-raid1.c 2011-11-15 20:02:59.000000000 -0500
24597 +diff -urNp linux-3.1.1/drivers/md/dm-raid1.c linux-3.1.1/drivers/md/dm-raid1.c
24598 +--- linux-3.1.1/drivers/md/dm-raid1.c 2011-11-11 15:19:27.000000000 -0500
24599 ++++ linux-3.1.1/drivers/md/dm-raid1.c 2011-11-16 18:39:07.000000000 -0500
24600 @@ -40,7 +40,7 @@ enum dm_raid1_error {
24601
24602 struct mirror {
24603 @@ -29564,9 +29526,9 @@ diff -urNp linux-3.0.9/drivers/md/dm-raid1.c linux-3.0.9/drivers/md/dm-raid1.c
24604 return 'A';
24605
24606 return (test_bit(DM_RAID1_FLUSH_ERROR, &(m->error_type))) ? 'F' :
24607 -diff -urNp linux-3.0.9/drivers/md/dm-stripe.c linux-3.0.9/drivers/md/dm-stripe.c
24608 ---- linux-3.0.9/drivers/md/dm-stripe.c 2011-11-11 13:12:24.000000000 -0500
24609 -+++ linux-3.0.9/drivers/md/dm-stripe.c 2011-11-15 20:02:59.000000000 -0500
24610 +diff -urNp linux-3.1.1/drivers/md/dm-stripe.c linux-3.1.1/drivers/md/dm-stripe.c
24611 +--- linux-3.1.1/drivers/md/dm-stripe.c 2011-11-11 15:19:27.000000000 -0500
24612 ++++ linux-3.1.1/drivers/md/dm-stripe.c 2011-11-16 18:39:07.000000000 -0500
24613 @@ -20,7 +20,7 @@ struct stripe {
24614 struct dm_dev *dev;
24615 sector_t physical_start;
24616 @@ -29605,10 +29567,10 @@ diff -urNp linux-3.0.9/drivers/md/dm-stripe.c linux-3.0.9/drivers/md/dm-stripe.c
24617 DM_IO_ERROR_THRESHOLD)
24618 schedule_work(&sc->trigger_event);
24619 }
24620 -diff -urNp linux-3.0.9/drivers/md/dm-table.c linux-3.0.9/drivers/md/dm-table.c
24621 ---- linux-3.0.9/drivers/md/dm-table.c 2011-11-11 13:12:24.000000000 -0500
24622 -+++ linux-3.0.9/drivers/md/dm-table.c 2011-11-15 20:02:59.000000000 -0500
24623 -@@ -390,7 +390,7 @@ static int device_area_is_invalid(struct
24624 +diff -urNp linux-3.1.1/drivers/md/dm-table.c linux-3.1.1/drivers/md/dm-table.c
24625 +--- linux-3.1.1/drivers/md/dm-table.c 2011-11-11 15:19:27.000000000 -0500
24626 ++++ linux-3.1.1/drivers/md/dm-table.c 2011-11-16 18:39:07.000000000 -0500
24627 +@@ -389,7 +389,7 @@ static int device_area_is_invalid(struct
24628 if (!dev_size)
24629 return 0;
24630
24631 @@ -29617,10 +29579,10 @@ diff -urNp linux-3.0.9/drivers/md/dm-table.c linux-3.0.9/drivers/md/dm-table.c
24632 DMWARN("%s: %s too small for target: "
24633 "start=%llu, len=%llu, dev_size=%llu",
24634 dm_device_name(ti->table->md), bdevname(bdev, b),
24635 -diff -urNp linux-3.0.9/drivers/md/md.c linux-3.0.9/drivers/md/md.c
24636 ---- linux-3.0.9/drivers/md/md.c 2011-11-11 13:12:24.000000000 -0500
24637 -+++ linux-3.0.9/drivers/md/md.c 2011-11-15 20:02:59.000000000 -0500
24638 -@@ -231,10 +231,10 @@ EXPORT_SYMBOL_GPL(bio_clone_mddev);
24639 +diff -urNp linux-3.1.1/drivers/md/md.c linux-3.1.1/drivers/md/md.c
24640 +--- linux-3.1.1/drivers/md/md.c 2011-11-11 15:19:27.000000000 -0500
24641 ++++ linux-3.1.1/drivers/md/md.c 2011-11-16 18:39:07.000000000 -0500
24642 +@@ -280,10 +280,10 @@ EXPORT_SYMBOL_GPL(md_trim_bio);
24643 * start build, activate spare
24644 */
24645 static DECLARE_WAIT_QUEUE_HEAD(md_event_waiters);
24646 @@ -29633,7 +29595,7 @@ diff -urNp linux-3.0.9/drivers/md/md.c linux-3.0.9/drivers/md/md.c
24647 wake_up(&md_event_waiters);
24648 }
24649 EXPORT_SYMBOL_GPL(md_new_event);
24650 -@@ -244,7 +244,7 @@ EXPORT_SYMBOL_GPL(md_new_event);
24651 +@@ -293,7 +293,7 @@ EXPORT_SYMBOL_GPL(md_new_event);
24652 */
24653 static void md_new_event_inintr(mddev_t *mddev)
24654 {
24655 @@ -29642,7 +29604,7 @@ diff -urNp linux-3.0.9/drivers/md/md.c linux-3.0.9/drivers/md/md.c
24656 wake_up(&md_event_waiters);
24657 }
24658
24659 -@@ -1475,7 +1475,7 @@ static int super_1_load(mdk_rdev_t *rdev
24660 +@@ -1531,7 +1531,7 @@ static int super_1_load(mdk_rdev_t *rdev
24661
24662 rdev->preferred_minor = 0xffff;
24663 rdev->data_offset = le64_to_cpu(sb->data_offset);
24664 @@ -29651,7 +29613,7 @@ diff -urNp linux-3.0.9/drivers/md/md.c linux-3.0.9/drivers/md/md.c
24665
24666 rdev->sb_size = le32_to_cpu(sb->max_dev) * 2 + 256;
24667 bmask = queue_logical_block_size(rdev->bdev->bd_disk->queue)-1;
24668 -@@ -1653,7 +1653,7 @@ static void super_1_sync(mddev_t *mddev,
24669 +@@ -1748,7 +1748,7 @@ static void super_1_sync(mddev_t *mddev,
24670 else
24671 sb->resync_offset = cpu_to_le64(0);
24672
24673 @@ -29660,7 +29622,7 @@ diff -urNp linux-3.0.9/drivers/md/md.c linux-3.0.9/drivers/md/md.c
24674
24675 sb->raid_disks = cpu_to_le32(mddev->raid_disks);
24676 sb->size = cpu_to_le64(mddev->dev_sectors);
24677 -@@ -2446,7 +2446,7 @@ __ATTR(state, S_IRUGO|S_IWUSR, state_sho
24678 +@@ -2643,7 +2643,7 @@ __ATTR(state, S_IRUGO|S_IWUSR, state_sho
24679 static ssize_t
24680 errors_show(mdk_rdev_t *rdev, char *page)
24681 {
24682 @@ -29669,7 +29631,7 @@ diff -urNp linux-3.0.9/drivers/md/md.c linux-3.0.9/drivers/md/md.c
24683 }
24684
24685 static ssize_t
24686 -@@ -2455,7 +2455,7 @@ errors_store(mdk_rdev_t *rdev, const cha
24687 +@@ -2652,7 +2652,7 @@ errors_store(mdk_rdev_t *rdev, const cha
24688 char *e;
24689 unsigned long n = simple_strtoul(buf, &e, 10);
24690 if (*buf && (*e == 0 || *e == '\n')) {
24691 @@ -29678,9 +29640,9 @@ diff -urNp linux-3.0.9/drivers/md/md.c linux-3.0.9/drivers/md/md.c
24692 return len;
24693 }
24694 return -EINVAL;
24695 -@@ -2811,8 +2811,8 @@ void md_rdev_init(mdk_rdev_t *rdev)
24696 - rdev->last_read_error.tv_sec = 0;
24697 - rdev->last_read_error.tv_nsec = 0;
24698 +@@ -3042,8 +3042,8 @@ int md_rdev_init(mdk_rdev_t *rdev)
24699 + rdev->sb_loaded = 0;
24700 + rdev->bb_page = NULL;
24701 atomic_set(&rdev->nr_pending, 0);
24702 - atomic_set(&rdev->read_errors, 0);
24703 - atomic_set(&rdev->corrected_errors, 0);
24704 @@ -29689,16 +29651,16 @@ diff -urNp linux-3.0.9/drivers/md/md.c linux-3.0.9/drivers/md/md.c
24705
24706 INIT_LIST_HEAD(&rdev->same_set);
24707 init_waitqueue_head(&rdev->blocked_wait);
24708 -@@ -6440,7 +6440,7 @@ static int md_seq_show(struct seq_file *
24709 +@@ -6667,7 +6667,7 @@ static int md_seq_show(struct seq_file *
24710
24711 spin_unlock(&pers_lock);
24712 seq_printf(seq, "\n");
24713 -- mi->event = atomic_read(&md_event_count);
24714 -+ mi->event = atomic_read_unchecked(&md_event_count);
24715 +- seq->poll_event = atomic_read(&md_event_count);
24716 ++ seq->poll_event = atomic_read_unchecked(&md_event_count);
24717 return 0;
24718 }
24719 if (v == (void*)2) {
24720 -@@ -6529,7 +6529,7 @@ static int md_seq_show(struct seq_file *
24721 +@@ -6756,7 +6756,7 @@ static int md_seq_show(struct seq_file *
24722 chunk_kb ? "KB" : "B");
24723 if (bitmap->file) {
24724 seq_printf(seq, ", file: ");
24725 @@ -29707,25 +29669,25 @@ diff -urNp linux-3.0.9/drivers/md/md.c linux-3.0.9/drivers/md/md.c
24726 }
24727
24728 seq_printf(seq, "\n");
24729 -@@ -6563,7 +6563,7 @@ static int md_seq_open(struct inode *ino
24730 - else {
24731 - struct seq_file *p = file->private_data;
24732 - p->private = mi;
24733 -- mi->event = atomic_read(&md_event_count);
24734 -+ mi->event = atomic_read_unchecked(&md_event_count);
24735 - }
24736 +@@ -6787,7 +6787,7 @@ static int md_seq_open(struct inode *ino
24737 + return error;
24738 +
24739 + seq = file->private_data;
24740 +- seq->poll_event = atomic_read(&md_event_count);
24741 ++ seq->poll_event = atomic_read_unchecked(&md_event_count);
24742 return error;
24743 }
24744 -@@ -6579,7 +6579,7 @@ static unsigned int mdstat_poll(struct f
24745 +
24746 +@@ -6801,7 +6801,7 @@ static unsigned int mdstat_poll(struct f
24747 /* always allow read */
24748 mask = POLLIN | POLLRDNORM;
24749
24750 -- if (mi->event != atomic_read(&md_event_count))
24751 -+ if (mi->event != atomic_read_unchecked(&md_event_count))
24752 +- if (seq->poll_event != atomic_read(&md_event_count))
24753 ++ if (seq->poll_event != atomic_read_unchecked(&md_event_count))
24754 mask |= POLLERR | POLLPRI;
24755 return mask;
24756 }
24757 -@@ -6623,7 +6623,7 @@ static int is_mddev_idle(mddev_t *mddev,
24758 +@@ -6845,7 +6845,7 @@ static int is_mddev_idle(mddev_t *mddev,
24759 struct gendisk *disk = rdev->bdev->bd_contains->bd_disk;
24760 curr_events = (int)part_stat_read(&disk->part0, sectors[0]) +
24761 (int)part_stat_read(&disk->part0, sectors[1]) -
24762 @@ -29734,10 +29696,10 @@ diff -urNp linux-3.0.9/drivers/md/md.c linux-3.0.9/drivers/md/md.c
24763 /* sync IO will cause sync_io to increase before the disk_stats
24764 * as sync_io is counted when a request starts, and
24765 * disk_stats is counted when it completes.
24766 -diff -urNp linux-3.0.9/drivers/md/md.h linux-3.0.9/drivers/md/md.h
24767 ---- linux-3.0.9/drivers/md/md.h 2011-11-11 13:12:24.000000000 -0500
24768 -+++ linux-3.0.9/drivers/md/md.h 2011-11-15 20:02:59.000000000 -0500
24769 -@@ -97,13 +97,13 @@ struct mdk_rdev_s
24770 +diff -urNp linux-3.1.1/drivers/md/md.h linux-3.1.1/drivers/md/md.h
24771 +--- linux-3.1.1/drivers/md/md.h 2011-11-11 15:19:27.000000000 -0500
24772 ++++ linux-3.1.1/drivers/md/md.h 2011-11-16 18:39:07.000000000 -0500
24773 +@@ -124,13 +124,13 @@ struct mdk_rdev_s
24774 * only maintained for arrays that
24775 * support hot removal
24776 */
24777 @@ -29753,7 +29715,7 @@ diff -urNp linux-3.0.9/drivers/md/md.h linux-3.0.9/drivers/md/md.h
24778 * for reporting to userspace and storing
24779 * in superblock.
24780 */
24781 -@@ -344,7 +344,7 @@ static inline void rdev_dec_pending(mdk_
24782 +@@ -415,7 +415,7 @@ static inline void rdev_dec_pending(mdk_
24783
24784 static inline void md_sync_acct(struct block_device *bdev, unsigned long nr_sectors)
24785 {
24786 @@ -29762,19 +29724,19 @@ diff -urNp linux-3.0.9/drivers/md/md.h linux-3.0.9/drivers/md/md.h
24787 }
24788
24789 struct mdk_personality
24790 -diff -urNp linux-3.0.9/drivers/md/raid10.c linux-3.0.9/drivers/md/raid10.c
24791 ---- linux-3.0.9/drivers/md/raid10.c 2011-11-11 13:12:24.000000000 -0500
24792 -+++ linux-3.0.9/drivers/md/raid10.c 2011-11-15 20:02:59.000000000 -0500
24793 -@@ -1186,7 +1186,7 @@ static void end_sync_read(struct bio *bi
24794 - if (test_bit(BIO_UPTODATE, &bio->bi_flags))
24795 - set_bit(R10BIO_Uptodate, &r10_bio->state);
24796 - else {
24797 +diff -urNp linux-3.1.1/drivers/md/raid10.c linux-3.1.1/drivers/md/raid10.c
24798 +--- linux-3.1.1/drivers/md/raid10.c 2011-11-11 15:19:27.000000000 -0500
24799 ++++ linux-3.1.1/drivers/md/raid10.c 2011-11-16 18:39:07.000000000 -0500
24800 +@@ -1423,7 +1423,7 @@ static void end_sync_read(struct bio *bi
24801 + /* The write handler will notice the lack of
24802 + * R10BIO_Uptodate and record any errors etc
24803 + */
24804 - atomic_add(r10_bio->sectors,
24805 + atomic_add_unchecked(r10_bio->sectors,
24806 &conf->mirrors[d].rdev->corrected_errors);
24807 - if (!test_bit(MD_RECOVERY_SYNC, &conf->mddev->recovery))
24808 - md_error(r10_bio->mddev,
24809 -@@ -1394,7 +1394,7 @@ static void check_decay_read_errors(mdde
24810 +
24811 + /* for reconstruct, we always reschedule after a read.
24812 +@@ -1723,7 +1723,7 @@ static void check_decay_read_errors(mdde
24813 {
24814 struct timespec cur_time_mon;
24815 unsigned long hours_since_last;
24816 @@ -29783,7 +29745,7 @@ diff -urNp linux-3.0.9/drivers/md/raid10.c linux-3.0.9/drivers/md/raid10.c
24817
24818 ktime_get_ts(&cur_time_mon);
24819
24820 -@@ -1416,9 +1416,9 @@ static void check_decay_read_errors(mdde
24821 +@@ -1745,9 +1745,9 @@ static void check_decay_read_errors(mdde
24822 * overflowing the shift of read_errors by hours_since_last.
24823 */
24824 if (hours_since_last >= 8 * sizeof(read_errors))
24825 @@ -29794,8 +29756,8 @@ diff -urNp linux-3.0.9/drivers/md/raid10.c linux-3.0.9/drivers/md/raid10.c
24826 + atomic_set_unchecked(&rdev->read_errors, read_errors >> hours_since_last);
24827 }
24828
24829 - /*
24830 -@@ -1448,8 +1448,8 @@ static void fix_read_error(conf_t *conf,
24831 + static int r10_sync_page_io(mdk_rdev_t *rdev, sector_t sector,
24832 +@@ -1797,8 +1797,8 @@ static void fix_read_error(conf_t *conf,
24833 return;
24834
24835 check_decay_read_errors(mddev, rdev);
24836 @@ -29806,7 +29768,7 @@ diff -urNp linux-3.0.9/drivers/md/raid10.c linux-3.0.9/drivers/md/raid10.c
24837 char b[BDEVNAME_SIZE];
24838 bdevname(rdev->bdev, b);
24839
24840 -@@ -1457,7 +1457,7 @@ static void fix_read_error(conf_t *conf,
24841 +@@ -1806,7 +1806,7 @@ static void fix_read_error(conf_t *conf,
24842 "md/raid10:%s: %s: Raid device exceeded "
24843 "read_error threshold [cur %d:max %d]\n",
24844 mdname(mddev), b,
24845 @@ -29815,49 +29777,45 @@ diff -urNp linux-3.0.9/drivers/md/raid10.c linux-3.0.9/drivers/md/raid10.c
24846 printk(KERN_NOTICE
24847 "md/raid10:%s: %s: Failing raid device\n",
24848 mdname(mddev), b);
24849 -@@ -1520,7 +1520,7 @@ static void fix_read_error(conf_t *conf,
24850 - test_bit(In_sync, &rdev->flags)) {
24851 - atomic_inc(&rdev->nr_pending);
24852 - rcu_read_unlock();
24853 +@@ -1951,7 +1951,7 @@ static void fix_read_error(conf_t *conf,
24854 + (unsigned long long)(
24855 + sect + rdev->data_offset),
24856 + bdevname(rdev->bdev, b));
24857 - atomic_add(s, &rdev->corrected_errors);
24858 + atomic_add_unchecked(s, &rdev->corrected_errors);
24859 - if (sync_page_io(rdev,
24860 - r10_bio->devs[sl].addr +
24861 - sect,
24862 -diff -urNp linux-3.0.9/drivers/md/raid1.c linux-3.0.9/drivers/md/raid1.c
24863 ---- linux-3.0.9/drivers/md/raid1.c 2011-11-11 13:12:24.000000000 -0500
24864 -+++ linux-3.0.9/drivers/md/raid1.c 2011-11-15 20:02:59.000000000 -0500
24865 -@@ -1263,7 +1263,7 @@ static int fix_sync_read_error(r1bio_t *
24866 - rdev_dec_pending(rdev, mddev);
24867 - md_error(mddev, rdev);
24868 - } else
24869 + }
24870 +
24871 + rdev_dec_pending(rdev, mddev);
24872 +diff -urNp linux-3.1.1/drivers/md/raid1.c linux-3.1.1/drivers/md/raid1.c
24873 +--- linux-3.1.1/drivers/md/raid1.c 2011-11-11 15:19:27.000000000 -0500
24874 ++++ linux-3.1.1/drivers/md/raid1.c 2011-11-16 18:39:07.000000000 -0500
24875 +@@ -1541,7 +1541,7 @@ static int fix_sync_read_error(r1bio_t *
24876 + if (r1_sync_page_io(rdev, sect, s,
24877 + bio->bi_io_vec[idx].bv_page,
24878 + READ) != 0)
24879 - atomic_add(s, &rdev->corrected_errors);
24880 + atomic_add_unchecked(s, &rdev->corrected_errors);
24881 }
24882 - d = start;
24883 - while (d != r1_bio->read_disk) {
24884 -@@ -1492,7 +1492,7 @@ static void fix_read_error(conf_t *conf,
24885 - /* Well, this device is dead */
24886 - md_error(mddev, rdev);
24887 - else {
24888 + sectors -= s;
24889 + sect += s;
24890 +@@ -1754,7 +1754,7 @@ static void fix_read_error(conf_t *conf,
24891 + test_bit(In_sync, &rdev->flags)) {
24892 + if (r1_sync_page_io(rdev, sect, s,
24893 + conf->tmppage, READ)) {
24894 - atomic_add(s, &rdev->corrected_errors);
24895 + atomic_add_unchecked(s, &rdev->corrected_errors);
24896 printk(KERN_INFO
24897 "md/raid1:%s: read error corrected "
24898 "(%d sectors at %llu on %s)\n",
24899 -diff -urNp linux-3.0.9/drivers/md/raid5.c linux-3.0.9/drivers/md/raid5.c
24900 ---- linux-3.0.9/drivers/md/raid5.c 2011-11-11 13:12:24.000000000 -0500
24901 -+++ linux-3.0.9/drivers/md/raid5.c 2011-11-15 20:02:59.000000000 -0500
24902 -@@ -550,7 +550,7 @@ static void ops_run_io(struct stripe_hea
24903 - bi->bi_next = NULL;
24904 - if ((rw & WRITE) &&
24905 - test_bit(R5_ReWrite, &sh->dev[i].flags))
24906 -- atomic_add(STRIPE_SECTORS,
24907 -+ atomic_add_unchecked(STRIPE_SECTORS,
24908 - &rdev->corrected_errors);
24909 - generic_make_request(bi);
24910 - } else {
24911 -@@ -1596,15 +1596,15 @@ static void raid5_end_read_request(struc
24912 +diff -urNp linux-3.1.1/drivers/md/raid5.c linux-3.1.1/drivers/md/raid5.c
24913 +--- linux-3.1.1/drivers/md/raid5.c 2011-11-11 15:19:27.000000000 -0500
24914 ++++ linux-3.1.1/drivers/md/raid5.c 2011-11-16 18:40:10.000000000 -0500
24915 +@@ -1616,19 +1616,19 @@ static void raid5_end_read_request(struc
24916 + (unsigned long long)(sh->sector
24917 + + rdev->data_offset),
24918 + bdevname(rdev->bdev, b));
24919 +- atomic_add(STRIPE_SECTORS, &rdev->corrected_errors);
24920 ++ atomic_add_unchecked(STRIPE_SECTORS, &rdev->corrected_errors);
24921 clear_bit(R5_ReadError, &sh->dev[i].flags);
24922 clear_bit(R5_ReWrite, &sh->dev[i].flags);
24923 }
24924 @@ -29874,18 +29832,18 @@ diff -urNp linux-3.0.9/drivers/md/raid5.c linux-3.0.9/drivers/md/raid5.c
24925 - atomic_inc(&rdev->read_errors);
24926 + atomic_inc_unchecked(&rdev->read_errors);
24927 if (conf->mddev->degraded >= conf->max_degraded)
24928 - printk_rl(KERN_WARNING
24929 - "md/raid:%s: read error not correctable "
24930 -@@ -1622,7 +1622,7 @@ static void raid5_end_read_request(struc
24931 - (unsigned long long)(sh->sector
24932 - + rdev->data_offset),
24933 - bdn);
24934 + printk_ratelimited(
24935 + KERN_WARNING
24936 +@@ -1648,7 +1648,7 @@ static void raid5_end_read_request(struc
24937 + (unsigned long long)(sh->sector
24938 + + rdev->data_offset),
24939 + bdn);
24940 - else if (atomic_read(&rdev->read_errors)
24941 + else if (atomic_read_unchecked(&rdev->read_errors)
24942 > conf->max_nr_stripes)
24943 printk(KERN_WARNING
24944 "md/raid:%s: Too many read errors, failing device %s.\n",
24945 -@@ -1945,6 +1945,7 @@ static sector_t compute_blocknr(struct s
24946 +@@ -1978,6 +1978,7 @@ static sector_t compute_blocknr(struct s
24947 sector_t r_sector;
24948 struct stripe_head sh2;
24949
24950 @@ -29893,9 +29851,9 @@ diff -urNp linux-3.0.9/drivers/md/raid5.c linux-3.0.9/drivers/md/raid5.c
24951
24952 chunk_offset = sector_div(new_sector, sectors_per_chunk);
24953 stripe = new_sector;
24954 -diff -urNp linux-3.0.9/drivers/media/common/saa7146_hlp.c linux-3.0.9/drivers/media/common/saa7146_hlp.c
24955 ---- linux-3.0.9/drivers/media/common/saa7146_hlp.c 2011-11-11 13:12:24.000000000 -0500
24956 -+++ linux-3.0.9/drivers/media/common/saa7146_hlp.c 2011-11-15 20:02:59.000000000 -0500
24957 +diff -urNp linux-3.1.1/drivers/media/common/saa7146_hlp.c linux-3.1.1/drivers/media/common/saa7146_hlp.c
24958 +--- linux-3.1.1/drivers/media/common/saa7146_hlp.c 2011-11-11 15:19:27.000000000 -0500
24959 ++++ linux-3.1.1/drivers/media/common/saa7146_hlp.c 2011-11-16 18:40:10.000000000 -0500
24960 @@ -353,6 +353,8 @@ static void calculate_clipping_registers
24961
24962 int x[32], y[32], w[32], h[32];
24963 @@ -29905,9 +29863,21 @@ diff -urNp linux-3.0.9/drivers/media/common/saa7146_hlp.c linux-3.0.9/drivers/me
24964 /* clear out memory */
24965 memset(&line_list[0], 0x00, sizeof(u32)*32);
24966 memset(&pixel_list[0], 0x00, sizeof(u32)*32);
24967 -diff -urNp linux-3.0.9/drivers/media/dvb/dvb-core/dvb_ca_en50221.c linux-3.0.9/drivers/media/dvb/dvb-core/dvb_ca_en50221.c
24968 ---- linux-3.0.9/drivers/media/dvb/dvb-core/dvb_ca_en50221.c 2011-11-11 13:12:24.000000000 -0500
24969 -+++ linux-3.0.9/drivers/media/dvb/dvb-core/dvb_ca_en50221.c 2011-11-15 20:02:59.000000000 -0500
24970 +diff -urNp linux-3.1.1/drivers/media/dvb/ddbridge/ddbridge-core.c linux-3.1.1/drivers/media/dvb/ddbridge/ddbridge-core.c
24971 +--- linux-3.1.1/drivers/media/dvb/ddbridge/ddbridge-core.c 2011-11-11 15:19:27.000000000 -0500
24972 ++++ linux-3.1.1/drivers/media/dvb/ddbridge/ddbridge-core.c 2011-11-16 18:39:07.000000000 -0500
24973 +@@ -1675,7 +1675,7 @@ static struct ddb_info ddb_v6 = {
24974 + .subvendor = _subvend, .subdevice = _subdev, \
24975 + .driver_data = (unsigned long)&_driverdata }
24976 +
24977 +-static const struct pci_device_id ddb_id_tbl[] __devinitdata = {
24978 ++static const struct pci_device_id ddb_id_tbl[] __devinitconst = {
24979 + DDB_ID(DDVID, 0x0002, DDVID, 0x0001, ddb_octopus),
24980 + DDB_ID(DDVID, 0x0003, DDVID, 0x0001, ddb_octopus),
24981 + DDB_ID(DDVID, 0x0003, DDVID, 0x0002, ddb_octopus_le),
24982 +diff -urNp linux-3.1.1/drivers/media/dvb/dvb-core/dvb_ca_en50221.c linux-3.1.1/drivers/media/dvb/dvb-core/dvb_ca_en50221.c
24983 +--- linux-3.1.1/drivers/media/dvb/dvb-core/dvb_ca_en50221.c 2011-11-11 15:19:27.000000000 -0500
24984 ++++ linux-3.1.1/drivers/media/dvb/dvb-core/dvb_ca_en50221.c 2011-11-16 18:40:10.000000000 -0500
24985 @@ -590,6 +590,8 @@ static int dvb_ca_en50221_read_data(stru
24986 u8 buf[HOST_LINK_BUF_SIZE];
24987 int i;
24988 @@ -29926,9 +29896,9 @@ diff -urNp linux-3.0.9/drivers/media/dvb/dvb-core/dvb_ca_en50221.c linux-3.0.9/d
24989 dprintk("%s\n", __func__);
24990
24991 /* Incoming packet has a 2 byte header. hdr[0] = slot_id, hdr[1] = connection_id */
24992 -diff -urNp linux-3.0.9/drivers/media/dvb/dvb-core/dvb_demux.h linux-3.0.9/drivers/media/dvb/dvb-core/dvb_demux.h
24993 ---- linux-3.0.9/drivers/media/dvb/dvb-core/dvb_demux.h 2011-11-11 13:12:24.000000000 -0500
24994 -+++ linux-3.0.9/drivers/media/dvb/dvb-core/dvb_demux.h 2011-11-15 20:02:59.000000000 -0500
24995 +diff -urNp linux-3.1.1/drivers/media/dvb/dvb-core/dvb_demux.h linux-3.1.1/drivers/media/dvb/dvb-core/dvb_demux.h
24996 +--- linux-3.1.1/drivers/media/dvb/dvb-core/dvb_demux.h 2011-11-11 15:19:27.000000000 -0500
24997 ++++ linux-3.1.1/drivers/media/dvb/dvb-core/dvb_demux.h 2011-11-16 18:40:10.000000000 -0500
24998 @@ -68,12 +68,12 @@ struct dvb_demux_feed {
24999 union {
25000 struct dmx_ts_feed ts;
25001 @@ -29944,9 +29914,9 @@ diff -urNp linux-3.0.9/drivers/media/dvb/dvb-core/dvb_demux.h linux-3.0.9/driver
25002
25003 struct dvb_demux *demux;
25004 void *priv;
25005 -diff -urNp linux-3.0.9/drivers/media/dvb/dvb-core/dvbdev.c linux-3.0.9/drivers/media/dvb/dvb-core/dvbdev.c
25006 ---- linux-3.0.9/drivers/media/dvb/dvb-core/dvbdev.c 2011-11-11 13:12:24.000000000 -0500
25007 -+++ linux-3.0.9/drivers/media/dvb/dvb-core/dvbdev.c 2011-11-15 20:02:59.000000000 -0500
25008 +diff -urNp linux-3.1.1/drivers/media/dvb/dvb-core/dvbdev.c linux-3.1.1/drivers/media/dvb/dvb-core/dvbdev.c
25009 +--- linux-3.1.1/drivers/media/dvb/dvb-core/dvbdev.c 2011-11-11 15:19:27.000000000 -0500
25010 ++++ linux-3.1.1/drivers/media/dvb/dvb-core/dvbdev.c 2011-11-16 18:39:07.000000000 -0500
25011 @@ -192,7 +192,7 @@ int dvb_register_device(struct dvb_adapt
25012 const struct dvb_device *template, void *priv, int type)
25013 {
25014 @@ -29956,9 +29926,9 @@ diff -urNp linux-3.0.9/drivers/media/dvb/dvb-core/dvbdev.c linux-3.0.9/drivers/m
25015 struct device *clsdev;
25016 int minor;
25017 int id;
25018 -diff -urNp linux-3.0.9/drivers/media/dvb/dvb-usb/cxusb.c linux-3.0.9/drivers/media/dvb/dvb-usb/cxusb.c
25019 ---- linux-3.0.9/drivers/media/dvb/dvb-usb/cxusb.c 2011-11-11 13:12:24.000000000 -0500
25020 -+++ linux-3.0.9/drivers/media/dvb/dvb-usb/cxusb.c 2011-11-15 20:02:59.000000000 -0500
25021 +diff -urNp linux-3.1.1/drivers/media/dvb/dvb-usb/cxusb.c linux-3.1.1/drivers/media/dvb/dvb-usb/cxusb.c
25022 +--- linux-3.1.1/drivers/media/dvb/dvb-usb/cxusb.c 2011-11-11 15:19:27.000000000 -0500
25023 ++++ linux-3.1.1/drivers/media/dvb/dvb-usb/cxusb.c 2011-11-16 18:39:07.000000000 -0500
25024 @@ -1059,7 +1059,7 @@ static struct dib0070_config dib7070p_di
25025 struct dib0700_adapter_state {
25026 int (*set_param_save) (struct dvb_frontend *,
25027 @@ -29968,9 +29938,9 @@ diff -urNp linux-3.0.9/drivers/media/dvb/dvb-usb/cxusb.c linux-3.0.9/drivers/med
25028
25029 static int dib7070_set_param_override(struct dvb_frontend *fe,
25030 struct dvb_frontend_parameters *fep)
25031 -diff -urNp linux-3.0.9/drivers/media/dvb/dvb-usb/dib0700_core.c linux-3.0.9/drivers/media/dvb/dvb-usb/dib0700_core.c
25032 ---- linux-3.0.9/drivers/media/dvb/dvb-usb/dib0700_core.c 2011-11-11 13:12:24.000000000 -0500
25033 -+++ linux-3.0.9/drivers/media/dvb/dvb-usb/dib0700_core.c 2011-11-15 20:02:59.000000000 -0500
25034 +diff -urNp linux-3.1.1/drivers/media/dvb/dvb-usb/dib0700_core.c linux-3.1.1/drivers/media/dvb/dvb-usb/dib0700_core.c
25035 +--- linux-3.1.1/drivers/media/dvb/dvb-usb/dib0700_core.c 2011-11-11 15:19:27.000000000 -0500
25036 ++++ linux-3.1.1/drivers/media/dvb/dvb-usb/dib0700_core.c 2011-11-16 18:40:10.000000000 -0500
25037 @@ -478,6 +478,8 @@ int dib0700_download_firmware(struct usb
25038 if (!buf)
25039 return -ENOMEM;
25040 @@ -29980,9 +29950,9 @@ diff -urNp linux-3.0.9/drivers/media/dvb/dvb-usb/dib0700_core.c linux-3.0.9/driv
25041 while ((ret = dvb_usb_get_hexline(fw, &hx, &pos)) > 0) {
25042 deb_fwdata("writing to address 0x%08x (buffer: 0x%02x %02x)\n",
25043 hx.addr, hx.len, hx.chk);
25044 -diff -urNp linux-3.0.9/drivers/media/dvb/dvb-usb/dibusb.h linux-3.0.9/drivers/media/dvb/dvb-usb/dibusb.h
25045 ---- linux-3.0.9/drivers/media/dvb/dvb-usb/dibusb.h 2011-11-11 13:12:24.000000000 -0500
25046 -+++ linux-3.0.9/drivers/media/dvb/dvb-usb/dibusb.h 2011-11-15 20:02:59.000000000 -0500
25047 +diff -urNp linux-3.1.1/drivers/media/dvb/dvb-usb/dibusb.h linux-3.1.1/drivers/media/dvb/dvb-usb/dibusb.h
25048 +--- linux-3.1.1/drivers/media/dvb/dvb-usb/dibusb.h 2011-11-11 15:19:27.000000000 -0500
25049 ++++ linux-3.1.1/drivers/media/dvb/dvb-usb/dibusb.h 2011-11-16 18:40:10.000000000 -0500
25050 @@ -97,7 +97,7 @@
25051 #define DIBUSB_IOCTL_CMD_DISABLE_STREAM 0x02
25052
25053 @@ -29992,9 +29962,9 @@ diff -urNp linux-3.0.9/drivers/media/dvb/dvb-usb/dibusb.h linux-3.0.9/drivers/me
25054 int mt2060_present;
25055 u8 tuner_addr;
25056 };
25057 -diff -urNp linux-3.0.9/drivers/media/dvb/dvb-usb/dw2102.c linux-3.0.9/drivers/media/dvb/dvb-usb/dw2102.c
25058 ---- linux-3.0.9/drivers/media/dvb/dvb-usb/dw2102.c 2011-11-11 13:12:24.000000000 -0500
25059 -+++ linux-3.0.9/drivers/media/dvb/dvb-usb/dw2102.c 2011-11-15 20:02:59.000000000 -0500
25060 +diff -urNp linux-3.1.1/drivers/media/dvb/dvb-usb/dw2102.c linux-3.1.1/drivers/media/dvb/dvb-usb/dw2102.c
25061 +--- linux-3.1.1/drivers/media/dvb/dvb-usb/dw2102.c 2011-11-11 15:19:27.000000000 -0500
25062 ++++ linux-3.1.1/drivers/media/dvb/dvb-usb/dw2102.c 2011-11-16 18:39:07.000000000 -0500
25063 @@ -95,7 +95,7 @@ struct su3000_state {
25064
25065 struct s6x0_state {
25066 @@ -30004,9 +29974,9 @@ diff -urNp linux-3.0.9/drivers/media/dvb/dvb-usb/dw2102.c linux-3.0.9/drivers/me
25067
25068 /* debug */
25069 static int dvb_usb_dw2102_debug;
25070 -diff -urNp linux-3.0.9/drivers/media/dvb/dvb-usb/lmedm04.c linux-3.0.9/drivers/media/dvb/dvb-usb/lmedm04.c
25071 ---- linux-3.0.9/drivers/media/dvb/dvb-usb/lmedm04.c 2011-11-11 13:12:24.000000000 -0500
25072 -+++ linux-3.0.9/drivers/media/dvb/dvb-usb/lmedm04.c 2011-11-15 20:02:59.000000000 -0500
25073 +diff -urNp linux-3.1.1/drivers/media/dvb/dvb-usb/lmedm04.c linux-3.1.1/drivers/media/dvb/dvb-usb/lmedm04.c
25074 +--- linux-3.1.1/drivers/media/dvb/dvb-usb/lmedm04.c 2011-11-11 15:19:27.000000000 -0500
25075 ++++ linux-3.1.1/drivers/media/dvb/dvb-usb/lmedm04.c 2011-11-16 18:40:10.000000000 -0500
25076 @@ -742,6 +742,7 @@ static int lme2510_download_firmware(str
25077 usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
25078 0x06, 0x80, 0x0200, 0x00, data, 0x0109, 1000);
25079 @@ -30024,9 +29994,9 @@ diff -urNp linux-3.0.9/drivers/media/dvb/dvb-usb/lmedm04.c linux-3.0.9/drivers/m
25080 data[0] = 0x0a;
25081 len_in = 1;
25082 info("FRM Firmware Cold Reset");
25083 -diff -urNp linux-3.0.9/drivers/media/dvb/frontends/dib3000.h linux-3.0.9/drivers/media/dvb/frontends/dib3000.h
25084 ---- linux-3.0.9/drivers/media/dvb/frontends/dib3000.h 2011-11-11 13:12:24.000000000 -0500
25085 -+++ linux-3.0.9/drivers/media/dvb/frontends/dib3000.h 2011-11-15 20:02:59.000000000 -0500
25086 +diff -urNp linux-3.1.1/drivers/media/dvb/frontends/dib3000.h linux-3.1.1/drivers/media/dvb/frontends/dib3000.h
25087 +--- linux-3.1.1/drivers/media/dvb/frontends/dib3000.h 2011-11-11 15:19:27.000000000 -0500
25088 ++++ linux-3.1.1/drivers/media/dvb/frontends/dib3000.h 2011-11-16 18:40:10.000000000 -0500
25089 @@ -40,10 +40,11 @@ struct dib_fe_xfer_ops
25090 int (*pid_ctrl)(struct dvb_frontend *fe, int index, int pid, int onoff);
25091 int (*tuner_pass_ctrl)(struct dvb_frontend *fe, int onoff, u8 pll_ctrl);
25092 @@ -30040,9 +30010,9 @@ diff -urNp linux-3.0.9/drivers/media/dvb/frontends/dib3000.h linux-3.0.9/drivers
25093 #else
25094 static inline struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config,
25095 struct i2c_adapter* i2c, struct dib_fe_xfer_ops *xfer_ops)
25096 -diff -urNp linux-3.0.9/drivers/media/dvb/frontends/dib3000mb.c linux-3.0.9/drivers/media/dvb/frontends/dib3000mb.c
25097 ---- linux-3.0.9/drivers/media/dvb/frontends/dib3000mb.c 2011-11-11 13:12:24.000000000 -0500
25098 -+++ linux-3.0.9/drivers/media/dvb/frontends/dib3000mb.c 2011-11-15 20:02:59.000000000 -0500
25099 +diff -urNp linux-3.1.1/drivers/media/dvb/frontends/dib3000mb.c linux-3.1.1/drivers/media/dvb/frontends/dib3000mb.c
25100 +--- linux-3.1.1/drivers/media/dvb/frontends/dib3000mb.c 2011-11-11 15:19:27.000000000 -0500
25101 ++++ linux-3.1.1/drivers/media/dvb/frontends/dib3000mb.c 2011-11-16 18:40:10.000000000 -0500
25102 @@ -756,7 +756,7 @@ static int dib3000mb_tuner_pass_ctrl(str
25103 static struct dvb_frontend_ops dib3000mb_ops;
25104
25105 @@ -30052,9 +30022,9 @@ diff -urNp linux-3.0.9/drivers/media/dvb/frontends/dib3000mb.c linux-3.0.9/drive
25106 {
25107 struct dib3000_state* state = NULL;
25108
25109 -diff -urNp linux-3.0.9/drivers/media/dvb/frontends/mb86a16.c linux-3.0.9/drivers/media/dvb/frontends/mb86a16.c
25110 ---- linux-3.0.9/drivers/media/dvb/frontends/mb86a16.c 2011-11-11 13:12:24.000000000 -0500
25111 -+++ linux-3.0.9/drivers/media/dvb/frontends/mb86a16.c 2011-11-15 20:02:59.000000000 -0500
25112 +diff -urNp linux-3.1.1/drivers/media/dvb/frontends/mb86a16.c linux-3.1.1/drivers/media/dvb/frontends/mb86a16.c
25113 +--- linux-3.1.1/drivers/media/dvb/frontends/mb86a16.c 2011-11-11 15:19:27.000000000 -0500
25114 ++++ linux-3.1.1/drivers/media/dvb/frontends/mb86a16.c 2011-11-16 18:40:10.000000000 -0500
25115 @@ -1060,6 +1060,8 @@ static int mb86a16_set_fe(struct mb86a16
25116 int ret = -1;
25117 int sync;
25118 @@ -30064,9 +30034,9 @@ diff -urNp linux-3.0.9/drivers/media/dvb/frontends/mb86a16.c linux-3.0.9/drivers
25119 dprintk(verbose, MB86A16_INFO, 1, "freq=%d Mhz, symbrt=%d Ksps", state->frequency, state->srate);
25120
25121 fcp = 3000;
25122 -diff -urNp linux-3.0.9/drivers/media/dvb/frontends/or51211.c linux-3.0.9/drivers/media/dvb/frontends/or51211.c
25123 ---- linux-3.0.9/drivers/media/dvb/frontends/or51211.c 2011-11-11 13:12:24.000000000 -0500
25124 -+++ linux-3.0.9/drivers/media/dvb/frontends/or51211.c 2011-11-15 20:02:59.000000000 -0500
25125 +diff -urNp linux-3.1.1/drivers/media/dvb/frontends/or51211.c linux-3.1.1/drivers/media/dvb/frontends/or51211.c
25126 +--- linux-3.1.1/drivers/media/dvb/frontends/or51211.c 2011-11-11 15:19:27.000000000 -0500
25127 ++++ linux-3.1.1/drivers/media/dvb/frontends/or51211.c 2011-11-16 18:40:10.000000000 -0500
25128 @@ -113,6 +113,8 @@ static int or51211_load_firmware (struct
25129 u8 tudata[585];
25130 int i;
25131 @@ -30076,10 +30046,10 @@ diff -urNp linux-3.0.9/drivers/media/dvb/frontends/or51211.c linux-3.0.9/drivers
25132 dprintk("Firmware is %zd bytes\n",fw->size);
25133
25134 /* Get eprom data */
25135 -diff -urNp linux-3.0.9/drivers/media/dvb/ngene/ngene-cards.c linux-3.0.9/drivers/media/dvb/ngene/ngene-cards.c
25136 ---- linux-3.0.9/drivers/media/dvb/ngene/ngene-cards.c 2011-11-11 13:12:24.000000000 -0500
25137 -+++ linux-3.0.9/drivers/media/dvb/ngene/ngene-cards.c 2011-11-15 20:02:59.000000000 -0500
25138 -@@ -379,7 +379,7 @@ static struct ngene_info ngene_info_m780
25139 +diff -urNp linux-3.1.1/drivers/media/dvb/ngene/ngene-cards.c linux-3.1.1/drivers/media/dvb/ngene/ngene-cards.c
25140 +--- linux-3.1.1/drivers/media/dvb/ngene/ngene-cards.c 2011-11-11 15:19:27.000000000 -0500
25141 ++++ linux-3.1.1/drivers/media/dvb/ngene/ngene-cards.c 2011-11-16 18:39:07.000000000 -0500
25142 +@@ -477,7 +477,7 @@ static struct ngene_info ngene_info_m780
25143
25144 /****************************************************************************/
25145
25146 @@ -30088,9 +30058,33 @@ diff -urNp linux-3.0.9/drivers/media/dvb/ngene/ngene-cards.c linux-3.0.9/drivers
25147 NGENE_ID(0x18c3, 0xabc3, ngene_info_cineS2),
25148 NGENE_ID(0x18c3, 0xabc4, ngene_info_cineS2),
25149 NGENE_ID(0x18c3, 0xdb01, ngene_info_satixS2),
25150 -diff -urNp linux-3.0.9/drivers/media/video/cx18/cx18-driver.c linux-3.0.9/drivers/media/video/cx18/cx18-driver.c
25151 ---- linux-3.0.9/drivers/media/video/cx18/cx18-driver.c 2011-11-11 13:12:24.000000000 -0500
25152 -+++ linux-3.0.9/drivers/media/video/cx18/cx18-driver.c 2011-11-15 20:02:59.000000000 -0500
25153 +diff -urNp linux-3.1.1/drivers/media/radio/radio-cadet.c linux-3.1.1/drivers/media/radio/radio-cadet.c
25154 +--- linux-3.1.1/drivers/media/radio/radio-cadet.c 2011-11-11 15:19:27.000000000 -0500
25155 ++++ linux-3.1.1/drivers/media/radio/radio-cadet.c 2011-11-16 18:39:07.000000000 -0500
25156 +@@ -326,6 +326,8 @@ static ssize_t cadet_read(struct file *f
25157 + unsigned char readbuf[RDS_BUFFER];
25158 + int i = 0;
25159 +
25160 ++ if (count > RDS_BUFFER)
25161 ++ return -EFAULT;
25162 + mutex_lock(&dev->lock);
25163 + if (dev->rdsstat == 0) {
25164 + dev->rdsstat = 1;
25165 +diff -urNp linux-3.1.1/drivers/media/video/au0828/au0828.h linux-3.1.1/drivers/media/video/au0828/au0828.h
25166 +--- linux-3.1.1/drivers/media/video/au0828/au0828.h 2011-11-11 15:19:27.000000000 -0500
25167 ++++ linux-3.1.1/drivers/media/video/au0828/au0828.h 2011-11-16 18:39:07.000000000 -0500
25168 +@@ -191,7 +191,7 @@ struct au0828_dev {
25169 +
25170 + /* I2C */
25171 + struct i2c_adapter i2c_adap;
25172 +- struct i2c_algorithm i2c_algo;
25173 ++ i2c_algorithm_no_const i2c_algo;
25174 + struct i2c_client i2c_client;
25175 + u32 i2c_rc;
25176 +
25177 +diff -urNp linux-3.1.1/drivers/media/video/cx18/cx18-driver.c linux-3.1.1/drivers/media/video/cx18/cx18-driver.c
25178 +--- linux-3.1.1/drivers/media/video/cx18/cx18-driver.c 2011-11-11 15:19:27.000000000 -0500
25179 ++++ linux-3.1.1/drivers/media/video/cx18/cx18-driver.c 2011-11-16 18:40:10.000000000 -0500
25180 @@ -327,6 +327,8 @@ void cx18_read_eeprom(struct cx18 *cx, s
25181 struct i2c_client c;
25182 u8 eedata[256];
25183 @@ -30100,9 +30094,9 @@ diff -urNp linux-3.0.9/drivers/media/video/cx18/cx18-driver.c linux-3.0.9/driver
25184 memset(&c, 0, sizeof(c));
25185 strlcpy(c.name, "cx18 tveeprom tmp", sizeof(c.name));
25186 c.adapter = &cx->i2c_adap[0];
25187 -diff -urNp linux-3.0.9/drivers/media/video/cx23885/cx23885-input.c linux-3.0.9/drivers/media/video/cx23885/cx23885-input.c
25188 ---- linux-3.0.9/drivers/media/video/cx23885/cx23885-input.c 2011-11-11 13:12:24.000000000 -0500
25189 -+++ linux-3.0.9/drivers/media/video/cx23885/cx23885-input.c 2011-11-15 20:02:59.000000000 -0500
25190 +diff -urNp linux-3.1.1/drivers/media/video/cx23885/cx23885-input.c linux-3.1.1/drivers/media/video/cx23885/cx23885-input.c
25191 +--- linux-3.1.1/drivers/media/video/cx23885/cx23885-input.c 2011-11-11 15:19:27.000000000 -0500
25192 ++++ linux-3.1.1/drivers/media/video/cx23885/cx23885-input.c 2011-11-16 18:40:10.000000000 -0500
25193 @@ -53,6 +53,8 @@ static void cx23885_input_process_measur
25194 bool handle = false;
25195 struct ir_raw_event ir_core_event[64];
25196 @@ -30112,10 +30106,10 @@ diff -urNp linux-3.0.9/drivers/media/video/cx23885/cx23885-input.c linux-3.0.9/d
25197 do {
25198 num = 0;
25199 v4l2_subdev_call(dev->sd_ir, ir, rx_read, (u8 *) ir_core_event,
25200 -diff -urNp linux-3.0.9/drivers/media/video/cx88/cx88-alsa.c linux-3.0.9/drivers/media/video/cx88/cx88-alsa.c
25201 ---- linux-3.0.9/drivers/media/video/cx88/cx88-alsa.c 2011-11-11 13:12:24.000000000 -0500
25202 -+++ linux-3.0.9/drivers/media/video/cx88/cx88-alsa.c 2011-11-15 20:02:59.000000000 -0500
25203 -@@ -764,7 +764,7 @@ static struct snd_kcontrol_new snd_cx88_
25204 +diff -urNp linux-3.1.1/drivers/media/video/cx88/cx88-alsa.c linux-3.1.1/drivers/media/video/cx88/cx88-alsa.c
25205 +--- linux-3.1.1/drivers/media/video/cx88/cx88-alsa.c 2011-11-11 15:19:27.000000000 -0500
25206 ++++ linux-3.1.1/drivers/media/video/cx88/cx88-alsa.c 2011-11-16 18:39:07.000000000 -0500
25207 +@@ -766,7 +766,7 @@ static struct snd_kcontrol_new snd_cx88_
25208 * Only boards with eeprom and byte 1 at eeprom=1 have it
25209 */
25210
25211 @@ -30124,9 +30118,9 @@ diff -urNp linux-3.0.9/drivers/media/video/cx88/cx88-alsa.c linux-3.0.9/drivers/
25212 {0x14f1,0x8801,PCI_ANY_ID,PCI_ANY_ID,0,0,0},
25213 {0x14f1,0x8811,PCI_ANY_ID,PCI_ANY_ID,0,0,0},
25214 {0, }
25215 -diff -urNp linux-3.0.9/drivers/media/video/pvrusb2/pvrusb2-eeprom.c linux-3.0.9/drivers/media/video/pvrusb2/pvrusb2-eeprom.c
25216 ---- linux-3.0.9/drivers/media/video/pvrusb2/pvrusb2-eeprom.c 2011-11-11 13:12:24.000000000 -0500
25217 -+++ linux-3.0.9/drivers/media/video/pvrusb2/pvrusb2-eeprom.c 2011-11-15 20:02:59.000000000 -0500
25218 +diff -urNp linux-3.1.1/drivers/media/video/pvrusb2/pvrusb2-eeprom.c linux-3.1.1/drivers/media/video/pvrusb2/pvrusb2-eeprom.c
25219 +--- linux-3.1.1/drivers/media/video/pvrusb2/pvrusb2-eeprom.c 2011-11-11 15:19:27.000000000 -0500
25220 ++++ linux-3.1.1/drivers/media/video/pvrusb2/pvrusb2-eeprom.c 2011-11-16 18:40:10.000000000 -0500
25221 @@ -120,6 +120,8 @@ int pvr2_eeprom_analyze(struct pvr2_hdw
25222 u8 *eeprom;
25223 struct tveeprom tvdata;
25224 @@ -30136,9 +30130,21 @@ diff -urNp linux-3.0.9/drivers/media/video/pvrusb2/pvrusb2-eeprom.c linux-3.0.9/
25225 memset(&tvdata,0,sizeof(tvdata));
25226
25227 eeprom = pvr2_eeprom_fetch(hdw);
25228 -diff -urNp linux-3.0.9/drivers/media/video/saa7134/saa6752hs.c linux-3.0.9/drivers/media/video/saa7134/saa6752hs.c
25229 ---- linux-3.0.9/drivers/media/video/saa7134/saa6752hs.c 2011-11-11 13:12:24.000000000 -0500
25230 -+++ linux-3.0.9/drivers/media/video/saa7134/saa6752hs.c 2011-11-15 20:02:59.000000000 -0500
25231 +diff -urNp linux-3.1.1/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h linux-3.1.1/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
25232 +--- linux-3.1.1/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h 2011-11-11 15:19:27.000000000 -0500
25233 ++++ linux-3.1.1/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h 2011-11-16 18:39:07.000000000 -0500
25234 +@@ -196,7 +196,7 @@ struct pvr2_hdw {
25235 +
25236 + /* I2C stuff */
25237 + struct i2c_adapter i2c_adap;
25238 +- struct i2c_algorithm i2c_algo;
25239 ++ i2c_algorithm_no_const i2c_algo;
25240 + pvr2_i2c_func i2c_func[PVR2_I2C_FUNC_CNT];
25241 + int i2c_cx25840_hack_state;
25242 + int i2c_linked;
25243 +diff -urNp linux-3.1.1/drivers/media/video/saa7134/saa6752hs.c linux-3.1.1/drivers/media/video/saa7134/saa6752hs.c
25244 +--- linux-3.1.1/drivers/media/video/saa7134/saa6752hs.c 2011-11-11 15:19:27.000000000 -0500
25245 ++++ linux-3.1.1/drivers/media/video/saa7134/saa6752hs.c 2011-11-16 18:40:10.000000000 -0500
25246 @@ -682,6 +682,8 @@ static int saa6752hs_init(struct v4l2_su
25247 unsigned char localPAT[256];
25248 unsigned char localPMT[256];
25249 @@ -30148,9 +30154,9 @@ diff -urNp linux-3.0.9/drivers/media/video/saa7134/saa6752hs.c linux-3.0.9/drive
25250 /* Set video format - must be done first as it resets other settings */
25251 set_reg8(client, 0x41, h->video_format);
25252
25253 -diff -urNp linux-3.0.9/drivers/media/video/saa7164/saa7164-cmd.c linux-3.0.9/drivers/media/video/saa7164/saa7164-cmd.c
25254 ---- linux-3.0.9/drivers/media/video/saa7164/saa7164-cmd.c 2011-11-11 13:12:24.000000000 -0500
25255 -+++ linux-3.0.9/drivers/media/video/saa7164/saa7164-cmd.c 2011-11-15 20:02:59.000000000 -0500
25256 +diff -urNp linux-3.1.1/drivers/media/video/saa7164/saa7164-cmd.c linux-3.1.1/drivers/media/video/saa7164/saa7164-cmd.c
25257 +--- linux-3.1.1/drivers/media/video/saa7164/saa7164-cmd.c 2011-11-11 15:19:27.000000000 -0500
25258 ++++ linux-3.1.1/drivers/media/video/saa7164/saa7164-cmd.c 2011-11-16 18:40:10.000000000 -0500
25259 @@ -88,6 +88,8 @@ int saa7164_irq_dequeue(struct saa7164_d
25260 u8 tmp[512];
25261 dprintk(DBGLVL_CMD, "%s()\n", __func__);
25262 @@ -30169,10 +30175,10 @@ diff -urNp linux-3.0.9/drivers/media/video/saa7164/saa7164-cmd.c linux-3.0.9/dri
25263 while (loop) {
25264
25265 struct tmComResInfo tRsp = { 0, 0, 0, 0, 0, 0 };
25266 -diff -urNp linux-3.0.9/drivers/media/video/timblogiw.c linux-3.0.9/drivers/media/video/timblogiw.c
25267 ---- linux-3.0.9/drivers/media/video/timblogiw.c 2011-11-11 13:12:24.000000000 -0500
25268 -+++ linux-3.0.9/drivers/media/video/timblogiw.c 2011-11-15 20:02:59.000000000 -0500
25269 -@@ -745,7 +745,7 @@ static int timblogiw_mmap(struct file *f
25270 +diff -urNp linux-3.1.1/drivers/media/video/timblogiw.c linux-3.1.1/drivers/media/video/timblogiw.c
25271 +--- linux-3.1.1/drivers/media/video/timblogiw.c 2011-11-11 15:19:27.000000000 -0500
25272 ++++ linux-3.1.1/drivers/media/video/timblogiw.c 2011-11-16 18:40:10.000000000 -0500
25273 +@@ -744,7 +744,7 @@ static int timblogiw_mmap(struct file *f
25274
25275 /* Platform device functions */
25276
25277 @@ -30181,9 +30187,9 @@ diff -urNp linux-3.0.9/drivers/media/video/timblogiw.c linux-3.0.9/drivers/media
25278 .vidioc_querycap = timblogiw_querycap,
25279 .vidioc_enum_fmt_vid_cap = timblogiw_enum_fmt,
25280 .vidioc_g_fmt_vid_cap = timblogiw_g_fmt,
25281 -diff -urNp linux-3.0.9/drivers/media/video/usbvision/usbvision-core.c linux-3.0.9/drivers/media/video/usbvision/usbvision-core.c
25282 ---- linux-3.0.9/drivers/media/video/usbvision/usbvision-core.c 2011-11-11 13:12:24.000000000 -0500
25283 -+++ linux-3.0.9/drivers/media/video/usbvision/usbvision-core.c 2011-11-15 20:02:59.000000000 -0500
25284 +diff -urNp linux-3.1.1/drivers/media/video/usbvision/usbvision-core.c linux-3.1.1/drivers/media/video/usbvision/usbvision-core.c
25285 +--- linux-3.1.1/drivers/media/video/usbvision/usbvision-core.c 2011-11-11 15:19:27.000000000 -0500
25286 ++++ linux-3.1.1/drivers/media/video/usbvision/usbvision-core.c 2011-11-16 18:40:10.000000000 -0500
25287 @@ -707,6 +707,8 @@ static enum parse_state usbvision_parse_
25288 unsigned char rv, gv, bv;
25289 static unsigned char *Y, *U, *V;
25290 @@ -30193,10 +30199,10 @@ diff -urNp linux-3.0.9/drivers/media/video/usbvision/usbvision-core.c linux-3.0.
25291 frame = usbvision->cur_frame;
25292 image_size = frame->frmwidth * frame->frmheight;
25293 if ((frame->v4l2_format.format == V4L2_PIX_FMT_YUV422P) ||
25294 -diff -urNp linux-3.0.9/drivers/media/video/videobuf-dma-sg.c linux-3.0.9/drivers/media/video/videobuf-dma-sg.c
25295 ---- linux-3.0.9/drivers/media/video/videobuf-dma-sg.c 2011-11-11 13:12:24.000000000 -0500
25296 -+++ linux-3.0.9/drivers/media/video/videobuf-dma-sg.c 2011-11-15 20:02:59.000000000 -0500
25297 -@@ -606,6 +606,8 @@ void *videobuf_sg_alloc(size_t size)
25298 +diff -urNp linux-3.1.1/drivers/media/video/videobuf-dma-sg.c linux-3.1.1/drivers/media/video/videobuf-dma-sg.c
25299 +--- linux-3.1.1/drivers/media/video/videobuf-dma-sg.c 2011-11-11 15:19:27.000000000 -0500
25300 ++++ linux-3.1.1/drivers/media/video/videobuf-dma-sg.c 2011-11-16 18:40:10.000000000 -0500
25301 +@@ -607,6 +607,8 @@ void *videobuf_sg_alloc(size_t size)
25302 {
25303 struct videobuf_queue q;
25304
25305 @@ -30205,9 +30211,9 @@ diff -urNp linux-3.0.9/drivers/media/video/videobuf-dma-sg.c linux-3.0.9/drivers
25306 /* Required to make generic handler to call __videobuf_alloc */
25307 q.int_ops = &sg_ops;
25308
25309 -diff -urNp linux-3.0.9/drivers/message/fusion/mptbase.c linux-3.0.9/drivers/message/fusion/mptbase.c
25310 ---- linux-3.0.9/drivers/message/fusion/mptbase.c 2011-11-11 13:12:24.000000000 -0500
25311 -+++ linux-3.0.9/drivers/message/fusion/mptbase.c 2011-11-15 20:02:59.000000000 -0500
25312 +diff -urNp linux-3.1.1/drivers/message/fusion/mptbase.c linux-3.1.1/drivers/message/fusion/mptbase.c
25313 +--- linux-3.1.1/drivers/message/fusion/mptbase.c 2011-11-11 15:19:27.000000000 -0500
25314 ++++ linux-3.1.1/drivers/message/fusion/mptbase.c 2011-11-16 18:40:10.000000000 -0500
25315 @@ -6681,8 +6681,13 @@ static int mpt_iocinfo_proc_show(struct
25316 seq_printf(m, " MaxChainDepth = 0x%02x frames\n", ioc->facts.MaxChainDepth);
25317 seq_printf(m, " MinBlockSize = 0x%02x bytes\n", 4*ioc->facts.BlockSize);
25318 @@ -30222,9 +30228,9 @@ diff -urNp linux-3.0.9/drivers/message/fusion/mptbase.c linux-3.0.9/drivers/mess
25319 /*
25320 * Rounding UP to nearest 4-kB boundary here...
25321 */
25322 -diff -urNp linux-3.0.9/drivers/message/fusion/mptsas.c linux-3.0.9/drivers/message/fusion/mptsas.c
25323 ---- linux-3.0.9/drivers/message/fusion/mptsas.c 2011-11-11 13:12:24.000000000 -0500
25324 -+++ linux-3.0.9/drivers/message/fusion/mptsas.c 2011-11-15 20:02:59.000000000 -0500
25325 +diff -urNp linux-3.1.1/drivers/message/fusion/mptsas.c linux-3.1.1/drivers/message/fusion/mptsas.c
25326 +--- linux-3.1.1/drivers/message/fusion/mptsas.c 2011-11-11 15:19:27.000000000 -0500
25327 ++++ linux-3.1.1/drivers/message/fusion/mptsas.c 2011-11-16 18:39:07.000000000 -0500
25328 @@ -439,6 +439,23 @@ mptsas_is_end_device(struct mptsas_devin
25329 return 0;
25330 }
25331 @@ -30273,9 +30279,9 @@ diff -urNp linux-3.0.9/drivers/message/fusion/mptsas.c linux-3.0.9/drivers/messa
25332 static inline struct sas_port *
25333 mptsas_get_port(struct mptsas_phyinfo *phy_info)
25334 {
25335 -diff -urNp linux-3.0.9/drivers/message/fusion/mptscsih.c linux-3.0.9/drivers/message/fusion/mptscsih.c
25336 ---- linux-3.0.9/drivers/message/fusion/mptscsih.c 2011-11-11 13:12:24.000000000 -0500
25337 -+++ linux-3.0.9/drivers/message/fusion/mptscsih.c 2011-11-15 20:02:59.000000000 -0500
25338 +diff -urNp linux-3.1.1/drivers/message/fusion/mptscsih.c linux-3.1.1/drivers/message/fusion/mptscsih.c
25339 +--- linux-3.1.1/drivers/message/fusion/mptscsih.c 2011-11-11 15:19:27.000000000 -0500
25340 ++++ linux-3.1.1/drivers/message/fusion/mptscsih.c 2011-11-16 18:39:07.000000000 -0500
25341 @@ -1268,15 +1268,16 @@ mptscsih_info(struct Scsi_Host *SChost)
25342
25343 h = shost_priv(SChost);
25344 @@ -30301,9 +30307,9 @@ diff -urNp linux-3.0.9/drivers/message/fusion/mptscsih.c linux-3.0.9/drivers/mes
25345
25346 return h->info_kbuf;
25347 }
25348 -diff -urNp linux-3.0.9/drivers/message/i2o/i2o_config.c linux-3.0.9/drivers/message/i2o/i2o_config.c
25349 ---- linux-3.0.9/drivers/message/i2o/i2o_config.c 2011-11-11 13:12:24.000000000 -0500
25350 -+++ linux-3.0.9/drivers/message/i2o/i2o_config.c 2011-11-15 20:02:59.000000000 -0500
25351 +diff -urNp linux-3.1.1/drivers/message/i2o/i2o_config.c linux-3.1.1/drivers/message/i2o/i2o_config.c
25352 +--- linux-3.1.1/drivers/message/i2o/i2o_config.c 2011-11-11 15:19:27.000000000 -0500
25353 ++++ linux-3.1.1/drivers/message/i2o/i2o_config.c 2011-11-16 18:40:10.000000000 -0500
25354 @@ -781,6 +781,8 @@ static int i2o_cfg_passthru(unsigned lon
25355 struct i2o_message *msg;
25356 unsigned int iop;
25357 @@ -30313,9 +30319,9 @@ diff -urNp linux-3.0.9/drivers/message/i2o/i2o_config.c linux-3.0.9/drivers/mess
25358 if (get_user(iop, &cmd->iop) || get_user(user_msg, &cmd->msg))
25359 return -EFAULT;
25360
25361 -diff -urNp linux-3.0.9/drivers/message/i2o/i2o_proc.c linux-3.0.9/drivers/message/i2o/i2o_proc.c
25362 ---- linux-3.0.9/drivers/message/i2o/i2o_proc.c 2011-11-11 13:12:24.000000000 -0500
25363 -+++ linux-3.0.9/drivers/message/i2o/i2o_proc.c 2011-11-15 20:02:59.000000000 -0500
25364 +diff -urNp linux-3.1.1/drivers/message/i2o/i2o_proc.c linux-3.1.1/drivers/message/i2o/i2o_proc.c
25365 +--- linux-3.1.1/drivers/message/i2o/i2o_proc.c 2011-11-11 15:19:27.000000000 -0500
25366 ++++ linux-3.1.1/drivers/message/i2o/i2o_proc.c 2011-11-16 18:39:07.000000000 -0500
25367 @@ -255,13 +255,6 @@ static char *scsi_devices[] = {
25368 "Array Controller Device"
25369 };
25370 @@ -30402,9 +30408,9 @@ diff -urNp linux-3.0.9/drivers/message/i2o/i2o_proc.c linux-3.0.9/drivers/messag
25371
25372 return 0;
25373 }
25374 -diff -urNp linux-3.0.9/drivers/message/i2o/iop.c linux-3.0.9/drivers/message/i2o/iop.c
25375 ---- linux-3.0.9/drivers/message/i2o/iop.c 2011-11-11 13:12:24.000000000 -0500
25376 -+++ linux-3.0.9/drivers/message/i2o/iop.c 2011-11-15 20:02:59.000000000 -0500
25377 +diff -urNp linux-3.1.1/drivers/message/i2o/iop.c linux-3.1.1/drivers/message/i2o/iop.c
25378 +--- linux-3.1.1/drivers/message/i2o/iop.c 2011-11-11 15:19:27.000000000 -0500
25379 ++++ linux-3.1.1/drivers/message/i2o/iop.c 2011-11-16 18:39:07.000000000 -0500
25380 @@ -111,10 +111,10 @@ u32 i2o_cntxt_list_add(struct i2o_contro
25381
25382 spin_lock_irqsave(&c->context_list_lock, flags);
25383 @@ -30428,9 +30434,9 @@ diff -urNp linux-3.0.9/drivers/message/i2o/iop.c linux-3.0.9/drivers/message/i2o
25384 INIT_LIST_HEAD(&c->context_list);
25385 #endif
25386
25387 -diff -urNp linux-3.0.9/drivers/mfd/ab3100-core.c linux-3.0.9/drivers/mfd/ab3100-core.c
25388 ---- linux-3.0.9/drivers/mfd/ab3100-core.c 2011-11-11 13:12:24.000000000 -0500
25389 -+++ linux-3.0.9/drivers/mfd/ab3100-core.c 2011-11-15 20:02:59.000000000 -0500
25390 +diff -urNp linux-3.1.1/drivers/mfd/ab3100-core.c linux-3.1.1/drivers/mfd/ab3100-core.c
25391 +--- linux-3.1.1/drivers/mfd/ab3100-core.c 2011-11-11 15:19:27.000000000 -0500
25392 ++++ linux-3.1.1/drivers/mfd/ab3100-core.c 2011-11-16 18:39:07.000000000 -0500
25393 @@ -809,7 +809,7 @@ struct ab_family_id {
25394 char *name;
25395 };
25396 @@ -30440,9 +30446,9 @@ diff -urNp linux-3.0.9/drivers/mfd/ab3100-core.c linux-3.0.9/drivers/mfd/ab3100-
25397 /* AB3100 */
25398 {
25399 .id = 0xc0,
25400 -diff -urNp linux-3.0.9/drivers/mfd/abx500-core.c linux-3.0.9/drivers/mfd/abx500-core.c
25401 ---- linux-3.0.9/drivers/mfd/abx500-core.c 2011-11-11 13:12:24.000000000 -0500
25402 -+++ linux-3.0.9/drivers/mfd/abx500-core.c 2011-11-15 20:02:59.000000000 -0500
25403 +diff -urNp linux-3.1.1/drivers/mfd/abx500-core.c linux-3.1.1/drivers/mfd/abx500-core.c
25404 +--- linux-3.1.1/drivers/mfd/abx500-core.c 2011-11-11 15:19:27.000000000 -0500
25405 ++++ linux-3.1.1/drivers/mfd/abx500-core.c 2011-11-16 18:39:07.000000000 -0500
25406 @@ -14,7 +14,7 @@ static LIST_HEAD(abx500_list);
25407
25408 struct abx500_device_entry {
25409 @@ -30452,9 +30458,9 @@ diff -urNp linux-3.0.9/drivers/mfd/abx500-core.c linux-3.0.9/drivers/mfd/abx500-
25410 struct device *dev;
25411 };
25412
25413 -diff -urNp linux-3.0.9/drivers/mfd/janz-cmodio.c linux-3.0.9/drivers/mfd/janz-cmodio.c
25414 ---- linux-3.0.9/drivers/mfd/janz-cmodio.c 2011-11-11 13:12:24.000000000 -0500
25415 -+++ linux-3.0.9/drivers/mfd/janz-cmodio.c 2011-11-15 20:02:59.000000000 -0500
25416 +diff -urNp linux-3.1.1/drivers/mfd/janz-cmodio.c linux-3.1.1/drivers/mfd/janz-cmodio.c
25417 +--- linux-3.1.1/drivers/mfd/janz-cmodio.c 2011-11-11 15:19:27.000000000 -0500
25418 ++++ linux-3.1.1/drivers/mfd/janz-cmodio.c 2011-11-16 18:39:07.000000000 -0500
25419 @@ -13,6 +13,7 @@
25420
25421 #include <linux/kernel.h>
25422 @@ -30463,9 +30469,9 @@ diff -urNp linux-3.0.9/drivers/mfd/janz-cmodio.c linux-3.0.9/drivers/mfd/janz-cm
25423 #include <linux/init.h>
25424 #include <linux/pci.h>
25425 #include <linux/interrupt.h>
25426 -diff -urNp linux-3.0.9/drivers/mfd/wm8350-i2c.c linux-3.0.9/drivers/mfd/wm8350-i2c.c
25427 ---- linux-3.0.9/drivers/mfd/wm8350-i2c.c 2011-11-11 13:12:24.000000000 -0500
25428 -+++ linux-3.0.9/drivers/mfd/wm8350-i2c.c 2011-11-15 20:02:59.000000000 -0500
25429 +diff -urNp linux-3.1.1/drivers/mfd/wm8350-i2c.c linux-3.1.1/drivers/mfd/wm8350-i2c.c
25430 +--- linux-3.1.1/drivers/mfd/wm8350-i2c.c 2011-11-11 15:19:27.000000000 -0500
25431 ++++ linux-3.1.1/drivers/mfd/wm8350-i2c.c 2011-11-16 18:40:10.000000000 -0500
25432 @@ -44,6 +44,8 @@ static int wm8350_i2c_write_device(struc
25433 u8 msg[(WM8350_MAX_REGISTER << 1) + 1];
25434 int ret;
25435 @@ -30475,9 +30481,9 @@ diff -urNp linux-3.0.9/drivers/mfd/wm8350-i2c.c linux-3.0.9/drivers/mfd/wm8350-i
25436 if (bytes > ((WM8350_MAX_REGISTER << 1) + 1))
25437 return -EINVAL;
25438
25439 -diff -urNp linux-3.0.9/drivers/misc/lis3lv02d/lis3lv02d.c linux-3.0.9/drivers/misc/lis3lv02d/lis3lv02d.c
25440 ---- linux-3.0.9/drivers/misc/lis3lv02d/lis3lv02d.c 2011-11-11 13:12:24.000000000 -0500
25441 -+++ linux-3.0.9/drivers/misc/lis3lv02d/lis3lv02d.c 2011-11-15 20:02:59.000000000 -0500
25442 +diff -urNp linux-3.1.1/drivers/misc/lis3lv02d/lis3lv02d.c linux-3.1.1/drivers/misc/lis3lv02d/lis3lv02d.c
25443 +--- linux-3.1.1/drivers/misc/lis3lv02d/lis3lv02d.c 2011-11-11 15:19:27.000000000 -0500
25444 ++++ linux-3.1.1/drivers/misc/lis3lv02d/lis3lv02d.c 2011-11-16 18:39:07.000000000 -0500
25445 @@ -437,7 +437,7 @@ static irqreturn_t lis302dl_interrupt(in
25446 * the lid is closed. This leads to interrupts as soon as a little move
25447 * is done.
25448 @@ -30514,9 +30520,9 @@ diff -urNp linux-3.0.9/drivers/misc/lis3lv02d/lis3lv02d.c linux-3.0.9/drivers/mi
25449 return POLLIN | POLLRDNORM;
25450 return 0;
25451 }
25452 -diff -urNp linux-3.0.9/drivers/misc/lis3lv02d/lis3lv02d.h linux-3.0.9/drivers/misc/lis3lv02d/lis3lv02d.h
25453 ---- linux-3.0.9/drivers/misc/lis3lv02d/lis3lv02d.h 2011-11-11 13:12:24.000000000 -0500
25454 -+++ linux-3.0.9/drivers/misc/lis3lv02d/lis3lv02d.h 2011-11-15 20:02:59.000000000 -0500
25455 +diff -urNp linux-3.1.1/drivers/misc/lis3lv02d/lis3lv02d.h linux-3.1.1/drivers/misc/lis3lv02d/lis3lv02d.h
25456 +--- linux-3.1.1/drivers/misc/lis3lv02d/lis3lv02d.h 2011-11-11 15:19:27.000000000 -0500
25457 ++++ linux-3.1.1/drivers/misc/lis3lv02d/lis3lv02d.h 2011-11-16 18:39:07.000000000 -0500
25458 @@ -265,7 +265,7 @@ struct lis3lv02d {
25459 struct input_polled_dev *idev; /* input device */
25460 struct platform_device *pdev; /* platform device */
25461 @@ -30526,9 +30532,9 @@ diff -urNp linux-3.0.9/drivers/misc/lis3lv02d/lis3lv02d.h linux-3.0.9/drivers/mi
25462 union axis_conversion ac; /* hw -> logical axis */
25463 int mapped_btns[3];
25464
25465 -diff -urNp linux-3.0.9/drivers/misc/sgi-gru/gruhandles.c linux-3.0.9/drivers/misc/sgi-gru/gruhandles.c
25466 ---- linux-3.0.9/drivers/misc/sgi-gru/gruhandles.c 2011-11-11 13:12:24.000000000 -0500
25467 -+++ linux-3.0.9/drivers/misc/sgi-gru/gruhandles.c 2011-11-15 20:02:59.000000000 -0500
25468 +diff -urNp linux-3.1.1/drivers/misc/sgi-gru/gruhandles.c linux-3.1.1/drivers/misc/sgi-gru/gruhandles.c
25469 +--- linux-3.1.1/drivers/misc/sgi-gru/gruhandles.c 2011-11-11 15:19:27.000000000 -0500
25470 ++++ linux-3.1.1/drivers/misc/sgi-gru/gruhandles.c 2011-11-16 18:39:07.000000000 -0500
25471 @@ -44,8 +44,8 @@ static void update_mcs_stats(enum mcs_op
25472 unsigned long nsec;
25473
25474 @@ -30540,9 +30546,9 @@ diff -urNp linux-3.0.9/drivers/misc/sgi-gru/gruhandles.c linux-3.0.9/drivers/mis
25475 if (mcs_op_statistics[op].max < nsec)
25476 mcs_op_statistics[op].max = nsec;
25477 }
25478 -diff -urNp linux-3.0.9/drivers/misc/sgi-gru/gruprocfs.c linux-3.0.9/drivers/misc/sgi-gru/gruprocfs.c
25479 ---- linux-3.0.9/drivers/misc/sgi-gru/gruprocfs.c 2011-11-11 13:12:24.000000000 -0500
25480 -+++ linux-3.0.9/drivers/misc/sgi-gru/gruprocfs.c 2011-11-15 20:02:59.000000000 -0500
25481 +diff -urNp linux-3.1.1/drivers/misc/sgi-gru/gruprocfs.c linux-3.1.1/drivers/misc/sgi-gru/gruprocfs.c
25482 +--- linux-3.1.1/drivers/misc/sgi-gru/gruprocfs.c 2011-11-11 15:19:27.000000000 -0500
25483 ++++ linux-3.1.1/drivers/misc/sgi-gru/gruprocfs.c 2011-11-16 18:39:07.000000000 -0500
25484 @@ -32,9 +32,9 @@
25485
25486 #define printstat(s, f) printstat_val(s, &gru_stats.f, #f)
25487 @@ -30566,9 +30572,9 @@ diff -urNp linux-3.0.9/drivers/misc/sgi-gru/gruprocfs.c linux-3.0.9/drivers/misc
25488 max = mcs_op_statistics[op].max;
25489 seq_printf(s, "%-20s%12ld%12ld%12ld\n", id[op], count,
25490 count ? total / count : 0, max);
25491 -diff -urNp linux-3.0.9/drivers/misc/sgi-gru/grutables.h linux-3.0.9/drivers/misc/sgi-gru/grutables.h
25492 ---- linux-3.0.9/drivers/misc/sgi-gru/grutables.h 2011-11-11 13:12:24.000000000 -0500
25493 -+++ linux-3.0.9/drivers/misc/sgi-gru/grutables.h 2011-11-15 20:02:59.000000000 -0500
25494 +diff -urNp linux-3.1.1/drivers/misc/sgi-gru/grutables.h linux-3.1.1/drivers/misc/sgi-gru/grutables.h
25495 +--- linux-3.1.1/drivers/misc/sgi-gru/grutables.h 2011-11-11 15:19:27.000000000 -0500
25496 ++++ linux-3.1.1/drivers/misc/sgi-gru/grutables.h 2011-11-16 18:39:07.000000000 -0500
25497 @@ -167,82 +167,82 @@ extern unsigned int gru_max_gids;
25498 * GRU statistics.
25499 */
25500 @@ -30748,9 +30754,9 @@ diff -urNp linux-3.0.9/drivers/misc/sgi-gru/grutables.h linux-3.0.9/drivers/misc
25501 } while (0)
25502
25503 #ifdef CONFIG_SGI_GRU_DEBUG
25504 -diff -urNp linux-3.0.9/drivers/misc/sgi-xp/xpc.h linux-3.0.9/drivers/misc/sgi-xp/xpc.h
25505 ---- linux-3.0.9/drivers/misc/sgi-xp/xpc.h 2011-11-11 13:12:24.000000000 -0500
25506 -+++ linux-3.0.9/drivers/misc/sgi-xp/xpc.h 2011-11-15 20:02:59.000000000 -0500
25507 +diff -urNp linux-3.1.1/drivers/misc/sgi-xp/xpc.h linux-3.1.1/drivers/misc/sgi-xp/xpc.h
25508 +--- linux-3.1.1/drivers/misc/sgi-xp/xpc.h 2011-11-11 15:19:27.000000000 -0500
25509 ++++ linux-3.1.1/drivers/misc/sgi-xp/xpc.h 2011-11-16 18:39:07.000000000 -0500
25510 @@ -835,6 +835,7 @@ struct xpc_arch_operations {
25511 void (*received_payload) (struct xpc_channel *, void *);
25512 void (*notify_senders_of_disconnect) (struct xpc_channel *);
25513 @@ -30768,9 +30774,9 @@ diff -urNp linux-3.0.9/drivers/misc/sgi-xp/xpc.h linux-3.0.9/drivers/misc/sgi-xp
25514 extern int xpc_disengage_timelimit;
25515 extern int xpc_disengage_timedout;
25516 extern int xpc_activate_IRQ_rcvd;
25517 -diff -urNp linux-3.0.9/drivers/misc/sgi-xp/xpc_main.c linux-3.0.9/drivers/misc/sgi-xp/xpc_main.c
25518 ---- linux-3.0.9/drivers/misc/sgi-xp/xpc_main.c 2011-11-11 13:12:24.000000000 -0500
25519 -+++ linux-3.0.9/drivers/misc/sgi-xp/xpc_main.c 2011-11-15 20:02:59.000000000 -0500
25520 +diff -urNp linux-3.1.1/drivers/misc/sgi-xp/xpc_main.c linux-3.1.1/drivers/misc/sgi-xp/xpc_main.c
25521 +--- linux-3.1.1/drivers/misc/sgi-xp/xpc_main.c 2011-11-11 15:19:27.000000000 -0500
25522 ++++ linux-3.1.1/drivers/misc/sgi-xp/xpc_main.c 2011-11-16 18:39:07.000000000 -0500
25523 @@ -162,7 +162,7 @@ static struct notifier_block xpc_die_not
25524 .notifier_call = xpc_system_die,
25525 };
25526 @@ -30780,9 +30786,9 @@ diff -urNp linux-3.0.9/drivers/misc/sgi-xp/xpc_main.c linux-3.0.9/drivers/misc/s
25527
25528 /*
25529 * Timer function to enforce the timelimit on the partition disengage.
25530 -diff -urNp linux-3.0.9/drivers/misc/sgi-xp/xp.h linux-3.0.9/drivers/misc/sgi-xp/xp.h
25531 ---- linux-3.0.9/drivers/misc/sgi-xp/xp.h 2011-11-11 13:12:24.000000000 -0500
25532 -+++ linux-3.0.9/drivers/misc/sgi-xp/xp.h 2011-11-15 20:02:59.000000000 -0500
25533 +diff -urNp linux-3.1.1/drivers/misc/sgi-xp/xp.h linux-3.1.1/drivers/misc/sgi-xp/xp.h
25534 +--- linux-3.1.1/drivers/misc/sgi-xp/xp.h 2011-11-11 15:19:27.000000000 -0500
25535 ++++ linux-3.1.1/drivers/misc/sgi-xp/xp.h 2011-11-16 18:39:07.000000000 -0500
25536 @@ -289,7 +289,7 @@ struct xpc_interface {
25537 xpc_notify_func, void *);
25538 void (*received) (short, int, void *);
25539 @@ -30792,10 +30798,10 @@ diff -urNp linux-3.0.9/drivers/misc/sgi-xp/xp.h linux-3.0.9/drivers/misc/sgi-xp/
25540
25541 extern struct xpc_interface xpc_interface;
25542
25543 -diff -urNp linux-3.0.9/drivers/mmc/host/sdhci-pci.c linux-3.0.9/drivers/mmc/host/sdhci-pci.c
25544 ---- linux-3.0.9/drivers/mmc/host/sdhci-pci.c 2011-11-11 13:12:24.000000000 -0500
25545 -+++ linux-3.0.9/drivers/mmc/host/sdhci-pci.c 2011-11-15 20:02:59.000000000 -0500
25546 -@@ -524,7 +524,7 @@ static const struct sdhci_pci_fixes sdhc
25547 +diff -urNp linux-3.1.1/drivers/mmc/host/sdhci-pci.c linux-3.1.1/drivers/mmc/host/sdhci-pci.c
25548 +--- linux-3.1.1/drivers/mmc/host/sdhci-pci.c 2011-11-11 15:19:27.000000000 -0500
25549 ++++ linux-3.1.1/drivers/mmc/host/sdhci-pci.c 2011-11-16 18:39:07.000000000 -0500
25550 +@@ -542,7 +542,7 @@ static const struct sdhci_pci_fixes sdhc
25551 .probe = via_probe,
25552 };
25553
25554 @@ -30804,9 +30810,9 @@ diff -urNp linux-3.0.9/drivers/mmc/host/sdhci-pci.c linux-3.0.9/drivers/mmc/host
25555 {
25556 .vendor = PCI_VENDOR_ID_RICOH,
25557 .device = PCI_DEVICE_ID_RICOH_R5C822,
25558 -diff -urNp linux-3.0.9/drivers/mtd/chips/cfi_cmdset_0001.c linux-3.0.9/drivers/mtd/chips/cfi_cmdset_0001.c
25559 ---- linux-3.0.9/drivers/mtd/chips/cfi_cmdset_0001.c 2011-11-11 13:12:24.000000000 -0500
25560 -+++ linux-3.0.9/drivers/mtd/chips/cfi_cmdset_0001.c 2011-11-15 20:02:59.000000000 -0500
25561 +diff -urNp linux-3.1.1/drivers/mtd/chips/cfi_cmdset_0001.c linux-3.1.1/drivers/mtd/chips/cfi_cmdset_0001.c
25562 +--- linux-3.1.1/drivers/mtd/chips/cfi_cmdset_0001.c 2011-11-11 15:19:27.000000000 -0500
25563 ++++ linux-3.1.1/drivers/mtd/chips/cfi_cmdset_0001.c 2011-11-16 18:40:10.000000000 -0500
25564 @@ -757,6 +757,8 @@ static int chip_ready (struct map_info *
25565 struct cfi_pri_intelext *cfip = cfi->cmdset_priv;
25566 unsigned long timeo = jiffies + HZ;
25567 @@ -30834,9 +30840,9 @@ diff -urNp linux-3.0.9/drivers/mtd/chips/cfi_cmdset_0001.c linux-3.0.9/drivers/m
25568 adr += chip->start;
25569
25570 retry:
25571 -diff -urNp linux-3.0.9/drivers/mtd/chips/cfi_cmdset_0020.c linux-3.0.9/drivers/mtd/chips/cfi_cmdset_0020.c
25572 ---- linux-3.0.9/drivers/mtd/chips/cfi_cmdset_0020.c 2011-11-11 13:12:24.000000000 -0500
25573 -+++ linux-3.0.9/drivers/mtd/chips/cfi_cmdset_0020.c 2011-11-15 20:02:59.000000000 -0500
25574 +diff -urNp linux-3.1.1/drivers/mtd/chips/cfi_cmdset_0020.c linux-3.1.1/drivers/mtd/chips/cfi_cmdset_0020.c
25575 +--- linux-3.1.1/drivers/mtd/chips/cfi_cmdset_0020.c 2011-11-11 15:19:27.000000000 -0500
25576 ++++ linux-3.1.1/drivers/mtd/chips/cfi_cmdset_0020.c 2011-11-16 18:40:10.000000000 -0500
25577 @@ -255,6 +255,8 @@ static inline int do_read_onechip(struct
25578 unsigned long cmd_addr;
25579 struct cfi_private *cfi = map->fldrv_priv;
25580 @@ -30882,9 +30888,9 @@ diff -urNp linux-3.0.9/drivers/mtd/chips/cfi_cmdset_0020.c linux-3.0.9/drivers/m
25581 adr += chip->start;
25582
25583 /* Let's determine this according to the interleave only once */
25584 -diff -urNp linux-3.0.9/drivers/mtd/devices/doc2000.c linux-3.0.9/drivers/mtd/devices/doc2000.c
25585 ---- linux-3.0.9/drivers/mtd/devices/doc2000.c 2011-11-11 13:12:24.000000000 -0500
25586 -+++ linux-3.0.9/drivers/mtd/devices/doc2000.c 2011-11-15 20:02:59.000000000 -0500
25587 +diff -urNp linux-3.1.1/drivers/mtd/devices/doc2000.c linux-3.1.1/drivers/mtd/devices/doc2000.c
25588 +--- linux-3.1.1/drivers/mtd/devices/doc2000.c 2011-11-11 15:19:27.000000000 -0500
25589 ++++ linux-3.1.1/drivers/mtd/devices/doc2000.c 2011-11-16 18:39:07.000000000 -0500
25590 @@ -776,7 +776,7 @@ static int doc_write(struct mtd_info *mt
25591
25592 /* The ECC will not be calculated correctly if less than 512 is written */
25593 @@ -30894,9 +30900,9 @@ diff -urNp linux-3.0.9/drivers/mtd/devices/doc2000.c linux-3.0.9/drivers/mtd/dev
25594 printk(KERN_WARNING
25595 "ECC needs a full sector write (adr: %lx size %lx)\n",
25596 (long) to, (long) len);
25597 -diff -urNp linux-3.0.9/drivers/mtd/devices/doc2001.c linux-3.0.9/drivers/mtd/devices/doc2001.c
25598 ---- linux-3.0.9/drivers/mtd/devices/doc2001.c 2011-11-11 13:12:24.000000000 -0500
25599 -+++ linux-3.0.9/drivers/mtd/devices/doc2001.c 2011-11-15 20:02:59.000000000 -0500
25600 +diff -urNp linux-3.1.1/drivers/mtd/devices/doc2001.c linux-3.1.1/drivers/mtd/devices/doc2001.c
25601 +--- linux-3.1.1/drivers/mtd/devices/doc2001.c 2011-11-11 15:19:27.000000000 -0500
25602 ++++ linux-3.1.1/drivers/mtd/devices/doc2001.c 2011-11-16 18:39:07.000000000 -0500
25603 @@ -393,7 +393,7 @@ static int doc_read (struct mtd_info *mt
25604 struct Nand *mychip = &this->chips[from >> (this->chipshift)];
25605
25606 @@ -30906,9 +30912,9 @@ diff -urNp linux-3.0.9/drivers/mtd/devices/doc2001.c linux-3.0.9/drivers/mtd/dev
25607 return -EINVAL;
25608
25609 /* Don't allow a single read to cross a 512-byte block boundary */
25610 -diff -urNp linux-3.0.9/drivers/mtd/ftl.c linux-3.0.9/drivers/mtd/ftl.c
25611 ---- linux-3.0.9/drivers/mtd/ftl.c 2011-11-11 13:12:24.000000000 -0500
25612 -+++ linux-3.0.9/drivers/mtd/ftl.c 2011-11-15 20:02:59.000000000 -0500
25613 +diff -urNp linux-3.1.1/drivers/mtd/ftl.c linux-3.1.1/drivers/mtd/ftl.c
25614 +--- linux-3.1.1/drivers/mtd/ftl.c 2011-11-11 15:19:27.000000000 -0500
25615 ++++ linux-3.1.1/drivers/mtd/ftl.c 2011-11-16 18:40:10.000000000 -0500
25616 @@ -474,6 +474,8 @@ static int copy_erase_unit(partition_t *
25617 loff_t offset;
25618 uint16_t srcunitswap = cpu_to_le16(srcunit);
25619 @@ -30918,9 +30924,9 @@ diff -urNp linux-3.0.9/drivers/mtd/ftl.c linux-3.0.9/drivers/mtd/ftl.c
25620 eun = &part->EUNInfo[srcunit];
25621 xfer = &part->XferInfo[xferunit];
25622 DEBUG(2, "ftl_cs: copying block 0x%x to 0x%x\n",
25623 -diff -urNp linux-3.0.9/drivers/mtd/inftlcore.c linux-3.0.9/drivers/mtd/inftlcore.c
25624 ---- linux-3.0.9/drivers/mtd/inftlcore.c 2011-11-11 13:12:24.000000000 -0500
25625 -+++ linux-3.0.9/drivers/mtd/inftlcore.c 2011-11-15 20:02:59.000000000 -0500
25626 +diff -urNp linux-3.1.1/drivers/mtd/inftlcore.c linux-3.1.1/drivers/mtd/inftlcore.c
25627 +--- linux-3.1.1/drivers/mtd/inftlcore.c 2011-11-11 15:19:27.000000000 -0500
25628 ++++ linux-3.1.1/drivers/mtd/inftlcore.c 2011-11-16 18:40:10.000000000 -0500
25629 @@ -259,6 +259,8 @@ static u16 INFTL_foldchain(struct INFTLr
25630 struct inftl_oob oob;
25631 size_t retlen;
25632 @@ -30930,9 +30936,9 @@ diff -urNp linux-3.0.9/drivers/mtd/inftlcore.c linux-3.0.9/drivers/mtd/inftlcore
25633 DEBUG(MTD_DEBUG_LEVEL3, "INFTL: INFTL_foldchain(inftl=%p,thisVUC=%d,"
25634 "pending=%d)\n", inftl, thisVUC, pendingblock);
25635
25636 -diff -urNp linux-3.0.9/drivers/mtd/inftlmount.c linux-3.0.9/drivers/mtd/inftlmount.c
25637 ---- linux-3.0.9/drivers/mtd/inftlmount.c 2011-11-11 13:12:24.000000000 -0500
25638 -+++ linux-3.0.9/drivers/mtd/inftlmount.c 2011-11-15 20:02:59.000000000 -0500
25639 +diff -urNp linux-3.1.1/drivers/mtd/inftlmount.c linux-3.1.1/drivers/mtd/inftlmount.c
25640 +--- linux-3.1.1/drivers/mtd/inftlmount.c 2011-11-11 15:19:27.000000000 -0500
25641 ++++ linux-3.1.1/drivers/mtd/inftlmount.c 2011-11-16 18:40:10.000000000 -0500
25642 @@ -53,6 +53,8 @@ static int find_boot_record(struct INFTL
25643 struct INFTLPartition *ip;
25644 size_t retlen;
25645 @@ -30942,9 +30948,9 @@ diff -urNp linux-3.0.9/drivers/mtd/inftlmount.c linux-3.0.9/drivers/mtd/inftlmou
25646 DEBUG(MTD_DEBUG_LEVEL3, "INFTL: find_boot_record(inftl=%p)\n", inftl);
25647
25648 /*
25649 -diff -urNp linux-3.0.9/drivers/mtd/lpddr/qinfo_probe.c linux-3.0.9/drivers/mtd/lpddr/qinfo_probe.c
25650 ---- linux-3.0.9/drivers/mtd/lpddr/qinfo_probe.c 2011-11-11 13:12:24.000000000 -0500
25651 -+++ linux-3.0.9/drivers/mtd/lpddr/qinfo_probe.c 2011-11-15 20:02:59.000000000 -0500
25652 +diff -urNp linux-3.1.1/drivers/mtd/lpddr/qinfo_probe.c linux-3.1.1/drivers/mtd/lpddr/qinfo_probe.c
25653 +--- linux-3.1.1/drivers/mtd/lpddr/qinfo_probe.c 2011-11-11 15:19:27.000000000 -0500
25654 ++++ linux-3.1.1/drivers/mtd/lpddr/qinfo_probe.c 2011-11-16 18:40:10.000000000 -0500
25655 @@ -106,6 +106,8 @@ static int lpddr_pfow_present(struct map
25656 {
25657 map_word pfow_val[4];
25658 @@ -30954,9 +30960,9 @@ diff -urNp linux-3.0.9/drivers/mtd/lpddr/qinfo_probe.c linux-3.0.9/drivers/mtd/l
25659 /* Check identification string */
25660 pfow_val[0] = map_read(map, map->pfow_base + PFOW_QUERY_STRING_P);
25661 pfow_val[1] = map_read(map, map->pfow_base + PFOW_QUERY_STRING_F);
25662 -diff -urNp linux-3.0.9/drivers/mtd/mtdchar.c linux-3.0.9/drivers/mtd/mtdchar.c
25663 ---- linux-3.0.9/drivers/mtd/mtdchar.c 2011-11-11 13:12:24.000000000 -0500
25664 -+++ linux-3.0.9/drivers/mtd/mtdchar.c 2011-11-15 20:02:59.000000000 -0500
25665 +diff -urNp linux-3.1.1/drivers/mtd/mtdchar.c linux-3.1.1/drivers/mtd/mtdchar.c
25666 +--- linux-3.1.1/drivers/mtd/mtdchar.c 2011-11-11 15:19:27.000000000 -0500
25667 ++++ linux-3.1.1/drivers/mtd/mtdchar.c 2011-11-16 18:40:10.000000000 -0500
25668 @@ -554,6 +554,8 @@ static int mtd_ioctl(struct file *file,
25669 u_long size;
25670 struct mtd_info_user info;
25671 @@ -30966,9 +30972,9 @@ diff -urNp linux-3.0.9/drivers/mtd/mtdchar.c linux-3.0.9/drivers/mtd/mtdchar.c
25672 DEBUG(MTD_DEBUG_LEVEL0, "MTD_ioctl\n");
25673
25674 size = (cmd & IOCSIZE_MASK) >> IOCSIZE_SHIFT;
25675 -diff -urNp linux-3.0.9/drivers/mtd/nand/denali.c linux-3.0.9/drivers/mtd/nand/denali.c
25676 ---- linux-3.0.9/drivers/mtd/nand/denali.c 2011-11-11 13:12:24.000000000 -0500
25677 -+++ linux-3.0.9/drivers/mtd/nand/denali.c 2011-11-15 20:02:59.000000000 -0500
25678 +diff -urNp linux-3.1.1/drivers/mtd/nand/denali.c linux-3.1.1/drivers/mtd/nand/denali.c
25679 +--- linux-3.1.1/drivers/mtd/nand/denali.c 2011-11-11 15:19:27.000000000 -0500
25680 ++++ linux-3.1.1/drivers/mtd/nand/denali.c 2011-11-16 18:39:07.000000000 -0500
25681 @@ -26,6 +26,7 @@
25682 #include <linux/pci.h>
25683 #include <linux/mtd/mtd.h>
25684 @@ -30977,9 +30983,9 @@ diff -urNp linux-3.0.9/drivers/mtd/nand/denali.c linux-3.0.9/drivers/mtd/nand/de
25685
25686 #include "denali.h"
25687
25688 -diff -urNp linux-3.0.9/drivers/mtd/nftlcore.c linux-3.0.9/drivers/mtd/nftlcore.c
25689 ---- linux-3.0.9/drivers/mtd/nftlcore.c 2011-11-11 13:12:24.000000000 -0500
25690 -+++ linux-3.0.9/drivers/mtd/nftlcore.c 2011-11-15 20:02:59.000000000 -0500
25691 +diff -urNp linux-3.1.1/drivers/mtd/nftlcore.c linux-3.1.1/drivers/mtd/nftlcore.c
25692 +--- linux-3.1.1/drivers/mtd/nftlcore.c 2011-11-11 15:19:27.000000000 -0500
25693 ++++ linux-3.1.1/drivers/mtd/nftlcore.c 2011-11-16 18:40:10.000000000 -0500
25694 @@ -264,6 +264,8 @@ static u16 NFTL_foldchain (struct NFTLre
25695 int inplace = 1;
25696 size_t retlen;
25697 @@ -30989,9 +30995,9 @@ diff -urNp linux-3.0.9/drivers/mtd/nftlcore.c linux-3.0.9/drivers/mtd/nftlcore.c
25698 memset(BlockMap, 0xff, sizeof(BlockMap));
25699 memset(BlockFreeFound, 0, sizeof(BlockFreeFound));
25700
25701 -diff -urNp linux-3.0.9/drivers/mtd/nftlmount.c linux-3.0.9/drivers/mtd/nftlmount.c
25702 ---- linux-3.0.9/drivers/mtd/nftlmount.c 2011-11-11 13:12:24.000000000 -0500
25703 -+++ linux-3.0.9/drivers/mtd/nftlmount.c 2011-11-15 20:02:59.000000000 -0500
25704 +diff -urNp linux-3.1.1/drivers/mtd/nftlmount.c linux-3.1.1/drivers/mtd/nftlmount.c
25705 +--- linux-3.1.1/drivers/mtd/nftlmount.c 2011-11-11 15:19:27.000000000 -0500
25706 ++++ linux-3.1.1/drivers/mtd/nftlmount.c 2011-11-16 18:40:10.000000000 -0500
25707 @@ -24,6 +24,7 @@
25708 #include <asm/errno.h>
25709 #include <linux/delay.h>
25710 @@ -31009,10 +31015,10 @@ diff -urNp linux-3.0.9/drivers/mtd/nftlmount.c linux-3.0.9/drivers/mtd/nftlmount
25711 /* Assume logical EraseSize == physical erasesize for starting the scan.
25712 We'll sort it out later if we find a MediaHeader which says otherwise */
25713 /* Actually, we won't. The new DiskOnChip driver has already scanned
25714 -diff -urNp linux-3.0.9/drivers/mtd/ubi/build.c linux-3.0.9/drivers/mtd/ubi/build.c
25715 ---- linux-3.0.9/drivers/mtd/ubi/build.c 2011-11-11 13:12:24.000000000 -0500
25716 -+++ linux-3.0.9/drivers/mtd/ubi/build.c 2011-11-15 20:02:59.000000000 -0500
25717 -@@ -1287,7 +1287,7 @@ module_exit(ubi_exit);
25718 +diff -urNp linux-3.1.1/drivers/mtd/ubi/build.c linux-3.1.1/drivers/mtd/ubi/build.c
25719 +--- linux-3.1.1/drivers/mtd/ubi/build.c 2011-11-11 15:19:27.000000000 -0500
25720 ++++ linux-3.1.1/drivers/mtd/ubi/build.c 2011-11-16 18:39:07.000000000 -0500
25721 +@@ -1311,7 +1311,7 @@ module_exit(ubi_exit);
25722 static int __init bytes_str_to_int(const char *str)
25723 {
25724 char *endp;
25725 @@ -31021,7 +31027,7 @@ diff -urNp linux-3.0.9/drivers/mtd/ubi/build.c linux-3.0.9/drivers/mtd/ubi/build
25726
25727 result = simple_strtoul(str, &endp, 0);
25728 if (str == endp || result >= INT_MAX) {
25729 -@@ -1298,11 +1298,11 @@ static int __init bytes_str_to_int(const
25730 +@@ -1322,11 +1322,11 @@ static int __init bytes_str_to_int(const
25731
25732 switch (*endp) {
25733 case 'G':
25734 @@ -31036,7 +31042,7 @@ diff -urNp linux-3.0.9/drivers/mtd/ubi/build.c linux-3.0.9/drivers/mtd/ubi/build
25735 if (endp[1] == 'i' && endp[2] == 'B')
25736 endp += 2;
25737 case '\0':
25738 -@@ -1313,7 +1313,13 @@ static int __init bytes_str_to_int(const
25739 +@@ -1337,7 +1337,13 @@ static int __init bytes_str_to_int(const
25740 return -EINVAL;
25741 }
25742
25743 @@ -31051,10 +31057,10 @@ diff -urNp linux-3.0.9/drivers/mtd/ubi/build.c linux-3.0.9/drivers/mtd/ubi/build
25744 }
25745
25746 /**
25747 -diff -urNp linux-3.0.9/drivers/net/atlx/atl2.c linux-3.0.9/drivers/net/atlx/atl2.c
25748 ---- linux-3.0.9/drivers/net/atlx/atl2.c 2011-11-11 13:12:24.000000000 -0500
25749 -+++ linux-3.0.9/drivers/net/atlx/atl2.c 2011-11-15 20:02:59.000000000 -0500
25750 -@@ -2840,7 +2840,7 @@ static void atl2_force_ps(struct atl2_hw
25751 +diff -urNp linux-3.1.1/drivers/net/atlx/atl2.c linux-3.1.1/drivers/net/atlx/atl2.c
25752 +--- linux-3.1.1/drivers/net/atlx/atl2.c 2011-11-11 15:19:27.000000000 -0500
25753 ++++ linux-3.1.1/drivers/net/atlx/atl2.c 2011-11-16 18:39:07.000000000 -0500
25754 +@@ -2857,7 +2857,7 @@ static void atl2_force_ps(struct atl2_hw
25755 */
25756
25757 #define ATL2_PARAM(X, desc) \
25758 @@ -31063,9 +31069,9 @@ diff -urNp linux-3.0.9/drivers/net/atlx/atl2.c linux-3.0.9/drivers/net/atlx/atl2
25759 MODULE_PARM(X, "1-" __MODULE_STRING(ATL2_MAX_NIC) "i"); \
25760 MODULE_PARM_DESC(X, desc);
25761 #else
25762 -diff -urNp linux-3.0.9/drivers/net/bna/bfa_ioc_ct.c linux-3.0.9/drivers/net/bna/bfa_ioc_ct.c
25763 ---- linux-3.0.9/drivers/net/bna/bfa_ioc_ct.c 2011-11-11 13:12:24.000000000 -0500
25764 -+++ linux-3.0.9/drivers/net/bna/bfa_ioc_ct.c 2011-11-15 20:02:59.000000000 -0500
25765 +diff -urNp linux-3.1.1/drivers/net/bna/bfa_ioc_ct.c linux-3.1.1/drivers/net/bna/bfa_ioc_ct.c
25766 +--- linux-3.1.1/drivers/net/bna/bfa_ioc_ct.c 2011-11-11 15:19:27.000000000 -0500
25767 ++++ linux-3.1.1/drivers/net/bna/bfa_ioc_ct.c 2011-11-16 18:39:07.000000000 -0500
25768 @@ -48,7 +48,21 @@ static void bfa_ioc_ct_sync_ack(struct b
25769 static bool bfa_ioc_ct_sync_complete(struct bfa_ioc *ioc);
25770 static enum bfa_status bfa_ioc_ct_pll_init(void __iomem *rb, bool fcmode);
25771 @@ -31110,10 +31116,10 @@ diff -urNp linux-3.0.9/drivers/net/bna/bfa_ioc_ct.c linux-3.0.9/drivers/net/bna/
25772 ioc->ioc_hwif = &nw_hwif_ct;
25773 }
25774
25775 -diff -urNp linux-3.0.9/drivers/net/bna/bnad.c linux-3.0.9/drivers/net/bna/bnad.c
25776 ---- linux-3.0.9/drivers/net/bna/bnad.c 2011-11-11 13:12:24.000000000 -0500
25777 -+++ linux-3.0.9/drivers/net/bna/bnad.c 2011-11-15 20:02:59.000000000 -0500
25778 -@@ -1681,7 +1681,14 @@ bnad_setup_tx(struct bnad *bnad, uint tx
25779 +diff -urNp linux-3.1.1/drivers/net/bna/bnad.c linux-3.1.1/drivers/net/bna/bnad.c
25780 +--- linux-3.1.1/drivers/net/bna/bnad.c 2011-11-11 15:19:27.000000000 -0500
25781 ++++ linux-3.1.1/drivers/net/bna/bnad.c 2011-11-16 18:39:07.000000000 -0500
25782 +@@ -1673,7 +1673,14 @@ bnad_setup_tx(struct bnad *bnad, uint tx
25783 struct bna_intr_info *intr_info =
25784 &res_info[BNA_TX_RES_INTR_T_TXCMPL].res_u.intr_info;
25785 struct bna_tx_config *tx_config = &bnad->tx_config[tx_id];
25786 @@ -31129,7 +31135,7 @@ diff -urNp linux-3.0.9/drivers/net/bna/bnad.c linux-3.0.9/drivers/net/bna/bnad.c
25787 struct bna_tx *tx;
25788 unsigned long flags;
25789
25790 -@@ -1690,13 +1697,6 @@ bnad_setup_tx(struct bnad *bnad, uint tx
25791 +@@ -1682,13 +1689,6 @@ bnad_setup_tx(struct bnad *bnad, uint tx
25792 tx_config->txq_depth = bnad->txq_depth;
25793 tx_config->tx_type = BNA_TX_T_REGULAR;
25794
25795 @@ -31143,7 +31149,7 @@ diff -urNp linux-3.0.9/drivers/net/bna/bnad.c linux-3.0.9/drivers/net/bna/bnad.c
25796 /* Get BNA's resource requirement for one tx object */
25797 spin_lock_irqsave(&bnad->bna_lock, flags);
25798 bna_tx_res_req(bnad->num_txq_per_tx,
25799 -@@ -1827,21 +1827,21 @@ bnad_setup_rx(struct bnad *bnad, uint rx
25800 +@@ -1819,21 +1819,21 @@ bnad_setup_rx(struct bnad *bnad, uint rx
25801 struct bna_intr_info *intr_info =
25802 &res_info[BNA_RX_RES_T_INTR].res_u.intr_info;
25803 struct bna_rx_config *rx_config = &bnad->rx_config[rx_id];
25804 @@ -31174,10 +31180,10 @@ diff -urNp linux-3.0.9/drivers/net/bna/bnad.c linux-3.0.9/drivers/net/bna/bnad.c
25805 /* Get BNA's resource requirement for one Rx object */
25806 spin_lock_irqsave(&bnad->bna_lock, flags);
25807 bna_rx_res_req(rx_config, res_info);
25808 -diff -urNp linux-3.0.9/drivers/net/bnx2.c linux-3.0.9/drivers/net/bnx2.c
25809 ---- linux-3.0.9/drivers/net/bnx2.c 2011-11-11 13:12:24.000000000 -0500
25810 -+++ linux-3.0.9/drivers/net/bnx2.c 2011-11-15 20:02:59.000000000 -0500
25811 -@@ -5831,6 +5831,8 @@ bnx2_test_nvram(struct bnx2 *bp)
25812 +diff -urNp linux-3.1.1/drivers/net/bnx2.c linux-3.1.1/drivers/net/bnx2.c
25813 +--- linux-3.1.1/drivers/net/bnx2.c 2011-11-11 15:19:27.000000000 -0500
25814 ++++ linux-3.1.1/drivers/net/bnx2.c 2011-11-16 18:40:11.000000000 -0500
25815 +@@ -5877,6 +5877,8 @@ bnx2_test_nvram(struct bnx2 *bp)
25816 int rc = 0;
25817 u32 magic, csum;
25818
25819 @@ -31186,10 +31192,10 @@ diff -urNp linux-3.0.9/drivers/net/bnx2.c linux-3.0.9/drivers/net/bnx2.c
25820 if ((rc = bnx2_nvram_read(bp, 0, data, 4)) != 0)
25821 goto test_nvram_done;
25822
25823 -diff -urNp linux-3.0.9/drivers/net/bnx2x/bnx2x_ethtool.c linux-3.0.9/drivers/net/bnx2x/bnx2x_ethtool.c
25824 ---- linux-3.0.9/drivers/net/bnx2x/bnx2x_ethtool.c 2011-11-11 13:12:24.000000000 -0500
25825 -+++ linux-3.0.9/drivers/net/bnx2x/bnx2x_ethtool.c 2011-11-15 20:02:59.000000000 -0500
25826 -@@ -1705,6 +1705,8 @@ static int bnx2x_test_nvram(struct bnx2x
25827 +diff -urNp linux-3.1.1/drivers/net/bnx2x/bnx2x_ethtool.c linux-3.1.1/drivers/net/bnx2x/bnx2x_ethtool.c
25828 +--- linux-3.1.1/drivers/net/bnx2x/bnx2x_ethtool.c 2011-11-11 15:19:27.000000000 -0500
25829 ++++ linux-3.1.1/drivers/net/bnx2x/bnx2x_ethtool.c 2011-11-16 18:40:11.000000000 -0500
25830 +@@ -1943,6 +1943,8 @@ static int bnx2x_test_nvram(struct bnx2x
25831 int i, rc;
25832 u32 magic, crc;
25833
25834 @@ -31198,43 +31204,21 @@ diff -urNp linux-3.0.9/drivers/net/bnx2x/bnx2x_ethtool.c linux-3.0.9/drivers/net
25835 if (BP_NOMCP(bp))
25836 return 0;
25837
25838 -diff -urNp linux-3.0.9/drivers/net/can/mscan/mscan.c linux-3.0.9/drivers/net/can/mscan/mscan.c
25839 ---- linux-3.0.9/drivers/net/can/mscan/mscan.c 2011-11-11 13:12:24.000000000 -0500
25840 -+++ linux-3.0.9/drivers/net/can/mscan/mscan.c 2011-11-15 20:02:59.000000000 -0500
25841 -@@ -261,11 +261,13 @@ static netdev_tx_t mscan_start_xmit(stru
25842 - void __iomem *data = &regs->tx.dsr1_0;
25843 - u16 *payload = (u16 *)frame->data;
25844 -
25845 -- /* It is safe to write into dsr[dlc+1] */
25846 -- for (i = 0; i < (frame->can_dlc + 1) / 2; i++) {
25847 -+ for (i = 0; i < frame->can_dlc / 2; i++) {
25848 - out_be16(data, *payload++);
25849 - data += 2 + _MSCAN_RESERVED_DSR_SIZE;
25850 - }
25851 -+ /* write remaining byte if necessary */
25852 -+ if (frame->can_dlc & 1)
25853 -+ out_8(data, frame->data[frame->can_dlc - 1]);
25854 - }
25855 +diff -urNp linux-3.1.1/drivers/net/bnx2x/bnx2x_sp.h linux-3.1.1/drivers/net/bnx2x/bnx2x_sp.h
25856 +--- linux-3.1.1/drivers/net/bnx2x/bnx2x_sp.h 2011-11-11 15:19:27.000000000 -0500
25857 ++++ linux-3.1.1/drivers/net/bnx2x/bnx2x_sp.h 2011-11-16 18:39:07.000000000 -0500
25858 +@@ -449,7 +449,7 @@ struct bnx2x_rx_mode_obj {
25859
25860 - out_8(&regs->tx.dlr, frame->can_dlc);
25861 -@@ -330,10 +332,13 @@ static void mscan_get_rx_frame(struct ne
25862 - void __iomem *data = &regs->rx.dsr1_0;
25863 - u16 *payload = (u16 *)frame->data;
25864 + int (*wait_comp)(struct bnx2x *bp,
25865 + struct bnx2x_rx_mode_ramrod_params *p);
25866 +-};
25867 ++} __no_const;
25868
25869 -- for (i = 0; i < (frame->can_dlc + 1) / 2; i++) {
25870 -+ for (i = 0; i < frame->can_dlc / 2; i++) {
25871 - *payload++ = in_be16(data);
25872 - data += 2 + _MSCAN_RESERVED_DSR_SIZE;
25873 - }
25874 -+ /* read remaining byte if necessary */
25875 -+ if (frame->can_dlc & 1)
25876 -+ frame->data[frame->can_dlc - 1] = in_8(data);
25877 - }
25878 + /********************** Set multicast group ***********************************/
25879
25880 - out_8(&regs->canrflg, MSCAN_RXF);
25881 -diff -urNp linux-3.0.9/drivers/net/cxgb3/l2t.h linux-3.0.9/drivers/net/cxgb3/l2t.h
25882 ---- linux-3.0.9/drivers/net/cxgb3/l2t.h 2011-11-11 13:12:24.000000000 -0500
25883 -+++ linux-3.0.9/drivers/net/cxgb3/l2t.h 2011-11-15 20:02:59.000000000 -0500
25884 +diff -urNp linux-3.1.1/drivers/net/cxgb3/l2t.h linux-3.1.1/drivers/net/cxgb3/l2t.h
25885 +--- linux-3.1.1/drivers/net/cxgb3/l2t.h 2011-11-11 15:19:27.000000000 -0500
25886 ++++ linux-3.1.1/drivers/net/cxgb3/l2t.h 2011-11-16 18:39:07.000000000 -0500
25887 @@ -87,7 +87,7 @@ typedef void (*arp_failure_handler_func)
25888 */
25889 struct l2t_skb_cb {
25890 @@ -31244,9 +31228,9 @@ diff -urNp linux-3.0.9/drivers/net/cxgb3/l2t.h linux-3.0.9/drivers/net/cxgb3/l2t
25891
25892 #define L2T_SKB_CB(skb) ((struct l2t_skb_cb *)(skb)->cb)
25893
25894 -diff -urNp linux-3.0.9/drivers/net/cxgb4/cxgb4_main.c linux-3.0.9/drivers/net/cxgb4/cxgb4_main.c
25895 ---- linux-3.0.9/drivers/net/cxgb4/cxgb4_main.c 2011-11-11 13:12:24.000000000 -0500
25896 -+++ linux-3.0.9/drivers/net/cxgb4/cxgb4_main.c 2011-11-15 20:02:59.000000000 -0500
25897 +diff -urNp linux-3.1.1/drivers/net/cxgb4/cxgb4_main.c linux-3.1.1/drivers/net/cxgb4/cxgb4_main.c
25898 +--- linux-3.1.1/drivers/net/cxgb4/cxgb4_main.c 2011-11-11 15:19:27.000000000 -0500
25899 ++++ linux-3.1.1/drivers/net/cxgb4/cxgb4_main.c 2011-11-16 18:40:22.000000000 -0500
25900 @@ -3396,6 +3396,8 @@ static int __devinit enable_msix(struct
25901 unsigned int nchan = adap->params.nports;
25902 struct msix_entry entries[MAX_INGQ + 1];
25903 @@ -31256,9 +31240,9 @@ diff -urNp linux-3.0.9/drivers/net/cxgb4/cxgb4_main.c linux-3.0.9/drivers/net/cx
25904 for (i = 0; i < ARRAY_SIZE(entries); ++i)
25905 entries[i].entry = i;
25906
25907 -diff -urNp linux-3.0.9/drivers/net/cxgb4/t4_hw.c linux-3.0.9/drivers/net/cxgb4/t4_hw.c
25908 ---- linux-3.0.9/drivers/net/cxgb4/t4_hw.c 2011-11-11 13:12:24.000000000 -0500
25909 -+++ linux-3.0.9/drivers/net/cxgb4/t4_hw.c 2011-11-15 20:02:59.000000000 -0500
25910 +diff -urNp linux-3.1.1/drivers/net/cxgb4/t4_hw.c linux-3.1.1/drivers/net/cxgb4/t4_hw.c
25911 +--- linux-3.1.1/drivers/net/cxgb4/t4_hw.c 2011-11-11 15:19:27.000000000 -0500
25912 ++++ linux-3.1.1/drivers/net/cxgb4/t4_hw.c 2011-11-16 18:40:22.000000000 -0500
25913 @@ -362,6 +362,8 @@ static int get_vpd_params(struct adapter
25914 u8 vpd[VPD_LEN], csum;
25915 unsigned int vpdr_len, kw_offset, id_len;
25916 @@ -31268,9 +31252,9 @@ diff -urNp linux-3.0.9/drivers/net/cxgb4/t4_hw.c linux-3.0.9/drivers/net/cxgb4/t
25917 ret = pci_read_vpd(adapter->pdev, VPD_BASE, sizeof(vpd), vpd);
25918 if (ret < 0)
25919 return ret;
25920 -diff -urNp linux-3.0.9/drivers/net/e1000e/82571.c linux-3.0.9/drivers/net/e1000e/82571.c
25921 ---- linux-3.0.9/drivers/net/e1000e/82571.c 2011-11-11 13:12:24.000000000 -0500
25922 -+++ linux-3.0.9/drivers/net/e1000e/82571.c 2011-11-15 20:02:59.000000000 -0500
25923 +diff -urNp linux-3.1.1/drivers/net/e1000e/82571.c linux-3.1.1/drivers/net/e1000e/82571.c
25924 +--- linux-3.1.1/drivers/net/e1000e/82571.c 2011-11-11 15:19:27.000000000 -0500
25925 ++++ linux-3.1.1/drivers/net/e1000e/82571.c 2011-11-16 18:39:07.000000000 -0500
25926 @@ -239,7 +239,7 @@ static s32 e1000_init_mac_params_82571(s
25927 {
25928 struct e1000_hw *hw = &adapter->hw;
25929 @@ -31280,9 +31264,9 @@ diff -urNp linux-3.0.9/drivers/net/e1000e/82571.c linux-3.0.9/drivers/net/e1000e
25930 u32 swsm = 0;
25931 u32 swsm2 = 0;
25932 bool force_clear_smbi = false;
25933 -diff -urNp linux-3.0.9/drivers/net/e1000e/es2lan.c linux-3.0.9/drivers/net/e1000e/es2lan.c
25934 ---- linux-3.0.9/drivers/net/e1000e/es2lan.c 2011-11-11 13:12:24.000000000 -0500
25935 -+++ linux-3.0.9/drivers/net/e1000e/es2lan.c 2011-11-15 20:02:59.000000000 -0500
25936 +diff -urNp linux-3.1.1/drivers/net/e1000e/es2lan.c linux-3.1.1/drivers/net/e1000e/es2lan.c
25937 +--- linux-3.1.1/drivers/net/e1000e/es2lan.c 2011-11-11 15:19:27.000000000 -0500
25938 ++++ linux-3.1.1/drivers/net/e1000e/es2lan.c 2011-11-16 18:39:07.000000000 -0500
25939 @@ -205,7 +205,7 @@ static s32 e1000_init_mac_params_80003es
25940 {
25941 struct e1000_hw *hw = &adapter->hw;
25942 @@ -31292,18 +31276,18 @@ diff -urNp linux-3.0.9/drivers/net/e1000e/es2lan.c linux-3.0.9/drivers/net/e1000
25943
25944 /* Set media type */
25945 switch (adapter->pdev->device) {
25946 -diff -urNp linux-3.0.9/drivers/net/e1000e/hw.h linux-3.0.9/drivers/net/e1000e/hw.h
25947 ---- linux-3.0.9/drivers/net/e1000e/hw.h 2011-11-11 13:12:24.000000000 -0500
25948 -+++ linux-3.0.9/drivers/net/e1000e/hw.h 2011-11-15 20:02:59.000000000 -0500
25949 -@@ -776,6 +776,7 @@ struct e1000_mac_operations {
25950 +diff -urNp linux-3.1.1/drivers/net/e1000e/hw.h linux-3.1.1/drivers/net/e1000e/hw.h
25951 +--- linux-3.1.1/drivers/net/e1000e/hw.h 2011-11-11 15:19:27.000000000 -0500
25952 ++++ linux-3.1.1/drivers/net/e1000e/hw.h 2011-11-16 18:39:07.000000000 -0500
25953 +@@ -778,6 +778,7 @@ struct e1000_mac_operations {
25954 void (*write_vfta)(struct e1000_hw *, u32, u32);
25955 s32 (*read_mac_addr)(struct e1000_hw *);
25956 };
25957 +typedef struct e1000_mac_operations __no_const e1000_mac_operations_no_const;
25958
25959 - /* Function pointers for the PHY. */
25960 - struct e1000_phy_operations {
25961 -@@ -799,6 +800,7 @@ struct e1000_phy_operations {
25962 + /*
25963 + * When to use various PHY register access functions:
25964 +@@ -818,6 +819,7 @@ struct e1000_phy_operations {
25965 void (*power_up)(struct e1000_hw *);
25966 void (*power_down)(struct e1000_hw *);
25967 };
25968 @@ -31311,7 +31295,7 @@ diff -urNp linux-3.0.9/drivers/net/e1000e/hw.h linux-3.0.9/drivers/net/e1000e/hw
25969
25970 /* Function pointers for the NVM. */
25971 struct e1000_nvm_operations {
25972 -@@ -810,9 +812,10 @@ struct e1000_nvm_operations {
25973 +@@ -829,9 +831,10 @@ struct e1000_nvm_operations {
25974 s32 (*validate)(struct e1000_hw *);
25975 s32 (*write)(struct e1000_hw *, u16, u16, u16 *);
25976 };
25977 @@ -31323,7 +31307,7 @@ diff -urNp linux-3.0.9/drivers/net/e1000e/hw.h linux-3.0.9/drivers/net/e1000e/hw
25978 u8 addr[ETH_ALEN];
25979 u8 perm_addr[ETH_ALEN];
25980
25981 -@@ -853,7 +856,7 @@ struct e1000_mac_info {
25982 +@@ -872,7 +875,7 @@ struct e1000_mac_info {
25983 };
25984
25985 struct e1000_phy_info {
25986 @@ -31332,7 +31316,7 @@ diff -urNp linux-3.0.9/drivers/net/e1000e/hw.h linux-3.0.9/drivers/net/e1000e/hw
25987
25988 enum e1000_phy_type type;
25989
25990 -@@ -887,7 +890,7 @@ struct e1000_phy_info {
25991 +@@ -906,7 +909,7 @@ struct e1000_phy_info {
25992 };
25993
25994 struct e1000_nvm_info {
25995 @@ -31341,9 +31325,9 @@ diff -urNp linux-3.0.9/drivers/net/e1000e/hw.h linux-3.0.9/drivers/net/e1000e/hw
25996
25997 enum e1000_nvm_type type;
25998 enum e1000_nvm_override override;
25999 -diff -urNp linux-3.0.9/drivers/net/fealnx.c linux-3.0.9/drivers/net/fealnx.c
26000 ---- linux-3.0.9/drivers/net/fealnx.c 2011-11-11 13:12:24.000000000 -0500
26001 -+++ linux-3.0.9/drivers/net/fealnx.c 2011-11-15 20:02:59.000000000 -0500
26002 +diff -urNp linux-3.1.1/drivers/net/fealnx.c linux-3.1.1/drivers/net/fealnx.c
26003 +--- linux-3.1.1/drivers/net/fealnx.c 2011-11-11 15:19:27.000000000 -0500
26004 ++++ linux-3.1.1/drivers/net/fealnx.c 2011-11-16 18:39:07.000000000 -0500
26005 @@ -150,7 +150,7 @@ struct chip_info {
26006 int flags;
26007 };
26008 @@ -31353,9 +31337,9 @@ diff -urNp linux-3.0.9/drivers/net/fealnx.c linux-3.0.9/drivers/net/fealnx.c
26009 { "100/10M Ethernet PCI Adapter", HAS_MII_XCVR },
26010 { "100/10M Ethernet PCI Adapter", HAS_CHIP_XCVR },
26011 { "1000/100/10M Ethernet PCI Adapter", HAS_MII_XCVR },
26012 -diff -urNp linux-3.0.9/drivers/net/hamradio/6pack.c linux-3.0.9/drivers/net/hamradio/6pack.c
26013 ---- linux-3.0.9/drivers/net/hamradio/6pack.c 2011-11-11 13:12:24.000000000 -0500
26014 -+++ linux-3.0.9/drivers/net/hamradio/6pack.c 2011-11-15 20:02:59.000000000 -0500
26015 +diff -urNp linux-3.1.1/drivers/net/hamradio/6pack.c linux-3.1.1/drivers/net/hamradio/6pack.c
26016 +--- linux-3.1.1/drivers/net/hamradio/6pack.c 2011-11-11 15:19:27.000000000 -0500
26017 ++++ linux-3.1.1/drivers/net/hamradio/6pack.c 2011-11-16 18:40:22.000000000 -0500
26018 @@ -463,6 +463,8 @@ static void sixpack_receive_buf(struct t
26019 unsigned char buf[512];
26020 int count1;
26021 @@ -31365,9 +31349,9 @@ diff -urNp linux-3.0.9/drivers/net/hamradio/6pack.c linux-3.0.9/drivers/net/hamr
26022 if (!count)
26023 return;
26024
26025 -diff -urNp linux-3.0.9/drivers/net/igb/e1000_hw.h linux-3.0.9/drivers/net/igb/e1000_hw.h
26026 ---- linux-3.0.9/drivers/net/igb/e1000_hw.h 2011-11-11 13:12:24.000000000 -0500
26027 -+++ linux-3.0.9/drivers/net/igb/e1000_hw.h 2011-11-15 20:02:59.000000000 -0500
26028 +diff -urNp linux-3.1.1/drivers/net/igb/e1000_hw.h linux-3.1.1/drivers/net/igb/e1000_hw.h
26029 +--- linux-3.1.1/drivers/net/igb/e1000_hw.h 2011-11-11 15:19:27.000000000 -0500
26030 ++++ linux-3.1.1/drivers/net/igb/e1000_hw.h 2011-11-16 18:39:07.000000000 -0500
26031 @@ -314,6 +314,7 @@ struct e1000_mac_operations {
26032 s32 (*read_mac_addr)(struct e1000_hw *);
26033 s32 (*get_speed_and_duplex)(struct e1000_hw *, u16 *, u16 *);
26034 @@ -31436,9 +31420,9 @@ diff -urNp linux-3.0.9/drivers/net/igb/e1000_hw.h linux-3.0.9/drivers/net/igb/e1
26035 struct e1000_mbx_stats stats;
26036 u32 timeout;
26037 u32 usec_delay;
26038 -diff -urNp linux-3.0.9/drivers/net/igbvf/vf.h linux-3.0.9/drivers/net/igbvf/vf.h
26039 ---- linux-3.0.9/drivers/net/igbvf/vf.h 2011-11-11 13:12:24.000000000 -0500
26040 -+++ linux-3.0.9/drivers/net/igbvf/vf.h 2011-11-15 20:02:59.000000000 -0500
26041 +diff -urNp linux-3.1.1/drivers/net/igbvf/vf.h linux-3.1.1/drivers/net/igbvf/vf.h
26042 +--- linux-3.1.1/drivers/net/igbvf/vf.h 2011-11-11 15:19:27.000000000 -0500
26043 ++++ linux-3.1.1/drivers/net/igbvf/vf.h 2011-11-16 18:39:07.000000000 -0500
26044 @@ -189,9 +189,10 @@ struct e1000_mac_operations {
26045 s32 (*read_mac_addr)(struct e1000_hw *);
26046 s32 (*set_vfta)(struct e1000_hw *, u16, bool);
26047 @@ -31468,9 +31452,9 @@ diff -urNp linux-3.0.9/drivers/net/igbvf/vf.h linux-3.0.9/drivers/net/igbvf/vf.h
26048 struct e1000_mbx_stats stats;
26049 u32 timeout;
26050 u32 usec_delay;
26051 -diff -urNp linux-3.0.9/drivers/net/ixgb/ixgb_main.c linux-3.0.9/drivers/net/ixgb/ixgb_main.c
26052 ---- linux-3.0.9/drivers/net/ixgb/ixgb_main.c 2011-11-11 13:12:24.000000000 -0500
26053 -+++ linux-3.0.9/drivers/net/ixgb/ixgb_main.c 2011-11-15 20:02:59.000000000 -0500
26054 +diff -urNp linux-3.1.1/drivers/net/ixgb/ixgb_main.c linux-3.1.1/drivers/net/ixgb/ixgb_main.c
26055 +--- linux-3.1.1/drivers/net/ixgb/ixgb_main.c 2011-11-11 15:19:27.000000000 -0500
26056 ++++ linux-3.1.1/drivers/net/ixgb/ixgb_main.c 2011-11-16 18:40:22.000000000 -0500
26057 @@ -1070,6 +1070,8 @@ ixgb_set_multi(struct net_device *netdev
26058 u32 rctl;
26059 int i;
26060 @@ -31480,9 +31464,9 @@ diff -urNp linux-3.0.9/drivers/net/ixgb/ixgb_main.c linux-3.0.9/drivers/net/ixgb
26061 /* Check for Promiscuous and All Multicast modes */
26062
26063 rctl = IXGB_READ_REG(hw, RCTL);
26064 -diff -urNp linux-3.0.9/drivers/net/ixgb/ixgb_param.c linux-3.0.9/drivers/net/ixgb/ixgb_param.c
26065 ---- linux-3.0.9/drivers/net/ixgb/ixgb_param.c 2011-11-11 13:12:24.000000000 -0500
26066 -+++ linux-3.0.9/drivers/net/ixgb/ixgb_param.c 2011-11-15 20:02:59.000000000 -0500
26067 +diff -urNp linux-3.1.1/drivers/net/ixgb/ixgb_param.c linux-3.1.1/drivers/net/ixgb/ixgb_param.c
26068 +--- linux-3.1.1/drivers/net/ixgb/ixgb_param.c 2011-11-11 15:19:27.000000000 -0500
26069 ++++ linux-3.1.1/drivers/net/ixgb/ixgb_param.c 2011-11-16 18:40:22.000000000 -0500
26070 @@ -261,6 +261,9 @@ void __devinit
26071 ixgb_check_options(struct ixgb_adapter *adapter)
26072 {
26073 @@ -31493,10 +31477,10 @@ diff -urNp linux-3.0.9/drivers/net/ixgb/ixgb_param.c linux-3.0.9/drivers/net/ixg
26074 if (bd >= IXGB_MAX_NIC) {
26075 pr_notice("Warning: no configuration for board #%i\n", bd);
26076 pr_notice("Using defaults for all values\n");
26077 -diff -urNp linux-3.0.9/drivers/net/ixgbe/ixgbe_type.h linux-3.0.9/drivers/net/ixgbe/ixgbe_type.h
26078 ---- linux-3.0.9/drivers/net/ixgbe/ixgbe_type.h 2011-11-11 13:12:24.000000000 -0500
26079 -+++ linux-3.0.9/drivers/net/ixgbe/ixgbe_type.h 2011-11-15 20:02:59.000000000 -0500
26080 -@@ -2584,6 +2584,7 @@ struct ixgbe_eeprom_operations {
26081 +diff -urNp linux-3.1.1/drivers/net/ixgbe/ixgbe_type.h linux-3.1.1/drivers/net/ixgbe/ixgbe_type.h
26082 +--- linux-3.1.1/drivers/net/ixgbe/ixgbe_type.h 2011-11-11 15:19:27.000000000 -0500
26083 ++++ linux-3.1.1/drivers/net/ixgbe/ixgbe_type.h 2011-11-16 18:39:07.000000000 -0500
26084 +@@ -2642,6 +2642,7 @@ struct ixgbe_eeprom_operations {
26085 s32 (*update_checksum)(struct ixgbe_hw *);
26086 u16 (*calc_checksum)(struct ixgbe_hw *);
26087 };
26088 @@ -31504,15 +31488,15 @@ diff -urNp linux-3.0.9/drivers/net/ixgbe/ixgbe_type.h linux-3.0.9/drivers/net/ix
26089
26090 struct ixgbe_mac_operations {
26091 s32 (*init_hw)(struct ixgbe_hw *);
26092 -@@ -2639,6 +2640,7 @@ struct ixgbe_mac_operations {
26093 - /* Flow Control */
26094 - s32 (*fc_enable)(struct ixgbe_hw *, s32);
26095 +@@ -2703,6 +2704,7 @@ struct ixgbe_mac_operations {
26096 + /* Manageability interface */
26097 + s32 (*set_fw_drv_ver)(struct ixgbe_hw *, u8, u8, u8, u8);
26098 };
26099 +typedef struct ixgbe_mac_operations __no_const ixgbe_mac_operations_no_const;
26100
26101 struct ixgbe_phy_operations {
26102 s32 (*identify)(struct ixgbe_hw *);
26103 -@@ -2658,9 +2660,10 @@ struct ixgbe_phy_operations {
26104 +@@ -2722,9 +2724,10 @@ struct ixgbe_phy_operations {
26105 s32 (*write_i2c_eeprom)(struct ixgbe_hw *, u8, u8);
26106 s32 (*check_overtemp)(struct ixgbe_hw *);
26107 };
26108 @@ -31524,7 +31508,7 @@ diff -urNp linux-3.0.9/drivers/net/ixgbe/ixgbe_type.h linux-3.0.9/drivers/net/ix
26109 enum ixgbe_eeprom_type type;
26110 u32 semaphore_delay;
26111 u16 word_size;
26112 -@@ -2670,7 +2673,7 @@ struct ixgbe_eeprom_info {
26113 +@@ -2734,7 +2737,7 @@ struct ixgbe_eeprom_info {
26114
26115 #define IXGBE_FLAGS_DOUBLE_RESET_REQUIRED 0x01
26116 struct ixgbe_mac_info {
26117 @@ -31533,7 +31517,7 @@ diff -urNp linux-3.0.9/drivers/net/ixgbe/ixgbe_type.h linux-3.0.9/drivers/net/ix
26118 enum ixgbe_mac_type type;
26119 u8 addr[IXGBE_ETH_LENGTH_OF_ADDRESS];
26120 u8 perm_addr[IXGBE_ETH_LENGTH_OF_ADDRESS];
26121 -@@ -2698,7 +2701,7 @@ struct ixgbe_mac_info {
26122 +@@ -2762,7 +2765,7 @@ struct ixgbe_mac_info {
26123 };
26124
26125 struct ixgbe_phy_info {
26126 @@ -31542,7 +31526,7 @@ diff -urNp linux-3.0.9/drivers/net/ixgbe/ixgbe_type.h linux-3.0.9/drivers/net/ix
26127 struct mdio_if_info mdio;
26128 enum ixgbe_phy_type type;
26129 u32 id;
26130 -@@ -2726,6 +2729,7 @@ struct ixgbe_mbx_operations {
26131 +@@ -2790,6 +2793,7 @@ struct ixgbe_mbx_operations {
26132 s32 (*check_for_ack)(struct ixgbe_hw *, u16);
26133 s32 (*check_for_rst)(struct ixgbe_hw *, u16);
26134 };
26135 @@ -31550,7 +31534,7 @@ diff -urNp linux-3.0.9/drivers/net/ixgbe/ixgbe_type.h linux-3.0.9/drivers/net/ix
26136
26137 struct ixgbe_mbx_stats {
26138 u32 msgs_tx;
26139 -@@ -2737,7 +2741,7 @@ struct ixgbe_mbx_stats {
26140 +@@ -2801,7 +2805,7 @@ struct ixgbe_mbx_stats {
26141 };
26142
26143 struct ixgbe_mbx_info {
26144 @@ -31559,9 +31543,9 @@ diff -urNp linux-3.0.9/drivers/net/ixgbe/ixgbe_type.h linux-3.0.9/drivers/net/ix
26145 struct ixgbe_mbx_stats stats;
26146 u32 timeout;
26147 u32 usec_delay;
26148 -diff -urNp linux-3.0.9/drivers/net/ixgbevf/vf.h linux-3.0.9/drivers/net/ixgbevf/vf.h
26149 ---- linux-3.0.9/drivers/net/ixgbevf/vf.h 2011-11-11 13:12:24.000000000 -0500
26150 -+++ linux-3.0.9/drivers/net/ixgbevf/vf.h 2011-11-15 20:02:59.000000000 -0500
26151 +diff -urNp linux-3.1.1/drivers/net/ixgbevf/vf.h linux-3.1.1/drivers/net/ixgbevf/vf.h
26152 +--- linux-3.1.1/drivers/net/ixgbevf/vf.h 2011-11-11 15:19:27.000000000 -0500
26153 ++++ linux-3.1.1/drivers/net/ixgbevf/vf.h 2011-11-16 18:39:07.000000000 -0500
26154 @@ -70,6 +70,7 @@ struct ixgbe_mac_operations {
26155 s32 (*clear_vfta)(struct ixgbe_hw *);
26156 s32 (*set_vfta)(struct ixgbe_hw *, u32, u32, bool);
26157 @@ -31596,10 +31580,10 @@ diff -urNp linux-3.0.9/drivers/net/ixgbevf/vf.h linux-3.0.9/drivers/net/ixgbevf/
26158 struct ixgbe_mbx_stats stats;
26159 u32 timeout;
26160 u32 udelay;
26161 -diff -urNp linux-3.0.9/drivers/net/ksz884x.c linux-3.0.9/drivers/net/ksz884x.c
26162 ---- linux-3.0.9/drivers/net/ksz884x.c 2011-11-11 13:12:24.000000000 -0500
26163 -+++ linux-3.0.9/drivers/net/ksz884x.c 2011-11-15 20:02:59.000000000 -0500
26164 -@@ -6534,6 +6534,8 @@ static void netdev_get_ethtool_stats(str
26165 +diff -urNp linux-3.1.1/drivers/net/ksz884x.c linux-3.1.1/drivers/net/ksz884x.c
26166 +--- linux-3.1.1/drivers/net/ksz884x.c 2011-11-11 15:19:27.000000000 -0500
26167 ++++ linux-3.1.1/drivers/net/ksz884x.c 2011-11-16 18:40:22.000000000 -0500
26168 +@@ -6533,6 +6533,8 @@ static void netdev_get_ethtool_stats(str
26169 int rc;
26170 u64 counter[TOTAL_PORT_COUNTER_NUM];
26171
26172 @@ -31608,9 +31592,9 @@ diff -urNp linux-3.0.9/drivers/net/ksz884x.c linux-3.0.9/drivers/net/ksz884x.c
26173 mutex_lock(&hw_priv->lock);
26174 n = SWITCH_PORT_NUM;
26175 for (i = 0, p = port->first_port; i < port->mib_port_cnt; i++, p++) {
26176 -diff -urNp linux-3.0.9/drivers/net/mlx4/main.c linux-3.0.9/drivers/net/mlx4/main.c
26177 ---- linux-3.0.9/drivers/net/mlx4/main.c 2011-11-11 13:12:24.000000000 -0500
26178 -+++ linux-3.0.9/drivers/net/mlx4/main.c 2011-11-15 20:02:59.000000000 -0500
26179 +diff -urNp linux-3.1.1/drivers/net/mlx4/main.c linux-3.1.1/drivers/net/mlx4/main.c
26180 +--- linux-3.1.1/drivers/net/mlx4/main.c 2011-11-11 15:19:27.000000000 -0500
26181 ++++ linux-3.1.1/drivers/net/mlx4/main.c 2011-11-16 18:40:22.000000000 -0500
26182 @@ -40,6 +40,7 @@
26183 #include <linux/dma-mapping.h>
26184 #include <linux/slab.h>
26185 @@ -31619,7 +31603,7 @@ diff -urNp linux-3.0.9/drivers/net/mlx4/main.c linux-3.0.9/drivers/net/mlx4/main
26186
26187 #include <linux/mlx4/device.h>
26188 #include <linux/mlx4/doorbell.h>
26189 -@@ -764,6 +765,8 @@ static int mlx4_init_hca(struct mlx4_dev
26190 +@@ -762,6 +763,8 @@ static int mlx4_init_hca(struct mlx4_dev
26191 u64 icm_size;
26192 int err;
26193
26194 @@ -31628,10 +31612,10 @@ diff -urNp linux-3.0.9/drivers/net/mlx4/main.c linux-3.0.9/drivers/net/mlx4/main
26195 err = mlx4_QUERY_FW(dev);
26196 if (err) {
26197 if (err == -EACCES)
26198 -diff -urNp linux-3.0.9/drivers/net/niu.c linux-3.0.9/drivers/net/niu.c
26199 ---- linux-3.0.9/drivers/net/niu.c 2011-11-11 13:12:24.000000000 -0500
26200 -+++ linux-3.0.9/drivers/net/niu.c 2011-11-15 20:02:59.000000000 -0500
26201 -@@ -9056,6 +9056,8 @@ static void __devinit niu_try_msix(struc
26202 +diff -urNp linux-3.1.1/drivers/net/niu.c linux-3.1.1/drivers/net/niu.c
26203 +--- linux-3.1.1/drivers/net/niu.c 2011-11-11 15:19:27.000000000 -0500
26204 ++++ linux-3.1.1/drivers/net/niu.c 2011-11-16 18:40:22.000000000 -0500
26205 +@@ -9061,6 +9061,8 @@ static void __devinit niu_try_msix(struc
26206 int i, num_irqs, err;
26207 u8 first_ldg;
26208
26209 @@ -31640,18 +31624,9 @@ diff -urNp linux-3.0.9/drivers/net/niu.c linux-3.0.9/drivers/net/niu.c
26210 first_ldg = (NIU_NUM_LDG / parent->num_ports) * np->port;
26211 for (i = 0; i < (NIU_NUM_LDG / parent->num_ports); i++)
26212 ldg_num_map[i] = first_ldg + i;
26213 -diff -urNp linux-3.0.9/drivers/net/pcnet32.c linux-3.0.9/drivers/net/pcnet32.c
26214 ---- linux-3.0.9/drivers/net/pcnet32.c 2011-11-11 13:12:24.000000000 -0500
26215 -+++ linux-3.0.9/drivers/net/pcnet32.c 2011-11-15 20:02:59.000000000 -0500
26216 -@@ -82,7 +82,7 @@ static int cards_found;
26217 - /*
26218 - * VLB I/O addresses
26219 - */
26220 --static unsigned int pcnet32_portlist[] __initdata =
26221 -+static unsigned int pcnet32_portlist[] __devinitdata =
26222 - { 0x300, 0x320, 0x340, 0x360, 0 };
26223 -
26224 - static int pcnet32_debug;
26225 +diff -urNp linux-3.1.1/drivers/net/pcnet32.c linux-3.1.1/drivers/net/pcnet32.c
26226 +--- linux-3.1.1/drivers/net/pcnet32.c 2011-11-11 15:19:27.000000000 -0500
26227 ++++ linux-3.1.1/drivers/net/pcnet32.c 2011-11-16 18:39:07.000000000 -0500
26228 @@ -270,7 +270,7 @@ struct pcnet32_private {
26229 struct sk_buff **rx_skbuff;
26230 dma_addr_t *tx_dma_addr;
26231 @@ -32159,7 +32134,7 @@ diff -urNp linux-3.0.9/drivers/net/pcnet32.c linux-3.0.9/drivers/net/pcnet32.c
26232 spin_unlock_irqrestore(&lp->lock, flags);
26233
26234 return &dev->stats;
26235 -@@ -2578,10 +2578,10 @@ static void pcnet32_load_multicast(struc
26236 +@@ -2577,10 +2577,10 @@ static void pcnet32_load_multicast(struc
26237 if (dev->flags & IFF_ALLMULTI) {
26238 ib->filter[0] = cpu_to_le32(~0U);
26239 ib->filter[1] = cpu_to_le32(~0U);
26240 @@ -32174,7 +32149,7 @@ diff -urNp linux-3.0.9/drivers/net/pcnet32.c linux-3.0.9/drivers/net/pcnet32.c
26241 return;
26242 }
26243 /* clear the multicast filter */
26244 -@@ -2601,7 +2601,7 @@ static void pcnet32_load_multicast(struc
26245 +@@ -2594,7 +2594,7 @@ static void pcnet32_load_multicast(struc
26246 mcast_table[crc >> 4] |= cpu_to_le16(1 << (crc & 0xf));
26247 }
26248 for (i = 0; i < 4; i++)
26249 @@ -32183,7 +32158,7 @@ diff -urNp linux-3.0.9/drivers/net/pcnet32.c linux-3.0.9/drivers/net/pcnet32.c
26250 le16_to_cpu(mcast_table[i]));
26251 }
26252
26253 -@@ -2616,28 +2616,28 @@ static void pcnet32_set_multicast_list(s
26254 +@@ -2609,28 +2609,28 @@ static void pcnet32_set_multicast_list(s
26255
26256 spin_lock_irqsave(&lp->lock, flags);
26257 suspended = pcnet32_suspend(dev, &flags, 0);
26258 @@ -32218,7 +32193,7 @@ diff -urNp linux-3.0.9/drivers/net/pcnet32.c linux-3.0.9/drivers/net/pcnet32.c
26259 pcnet32_restart(dev, CSR0_NORMAL);
26260 netif_wake_queue(dev);
26261 }
26262 -@@ -2655,8 +2655,8 @@ static int mdio_read(struct net_device *
26263 +@@ -2648,8 +2648,8 @@ static int mdio_read(struct net_device *
26264 if (!lp->mii)
26265 return 0;
26266
26267 @@ -32229,7 +32204,7 @@ diff -urNp linux-3.0.9/drivers/net/pcnet32.c linux-3.0.9/drivers/net/pcnet32.c
26268
26269 return val_out;
26270 }
26271 -@@ -2670,8 +2670,8 @@ static void mdio_write(struct net_device
26272 +@@ -2663,8 +2663,8 @@ static void mdio_write(struct net_device
26273 if (!lp->mii)
26274 return;
26275
26276 @@ -32240,7 +32215,7 @@ diff -urNp linux-3.0.9/drivers/net/pcnet32.c linux-3.0.9/drivers/net/pcnet32.c
26277 }
26278
26279 static int pcnet32_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
26280 -@@ -2748,7 +2748,7 @@ static void pcnet32_check_media(struct n
26281 +@@ -2741,7 +2741,7 @@ static void pcnet32_check_media(struct n
26282 curr_link = mii_link_ok(&lp->mii_if);
26283 } else {
26284 ulong ioaddr = dev->base_addr; /* card base I/O address */
26285 @@ -32249,7 +32224,7 @@ diff -urNp linux-3.0.9/drivers/net/pcnet32.c linux-3.0.9/drivers/net/pcnet32.c
26286 }
26287 if (!curr_link) {
26288 if (prev_link || verbose) {
26289 -@@ -2771,13 +2771,13 @@ static void pcnet32_check_media(struct n
26290 +@@ -2764,13 +2764,13 @@ static void pcnet32_check_media(struct n
26291 (ecmd.duplex == DUPLEX_FULL)
26292 ? "full" : "half");
26293 }
26294 @@ -32265,9 +32240,9 @@ diff -urNp linux-3.0.9/drivers/net/pcnet32.c linux-3.0.9/drivers/net/pcnet32.c
26295 }
26296 } else {
26297 netif_info(lp, link, dev, "link up\n");
26298 -diff -urNp linux-3.0.9/drivers/net/ppp_generic.c linux-3.0.9/drivers/net/ppp_generic.c
26299 ---- linux-3.0.9/drivers/net/ppp_generic.c 2011-11-11 13:12:24.000000000 -0500
26300 -+++ linux-3.0.9/drivers/net/ppp_generic.c 2011-11-15 20:02:59.000000000 -0500
26301 +diff -urNp linux-3.1.1/drivers/net/ppp_generic.c linux-3.1.1/drivers/net/ppp_generic.c
26302 +--- linux-3.1.1/drivers/net/ppp_generic.c 2011-11-11 15:19:27.000000000 -0500
26303 ++++ linux-3.1.1/drivers/net/ppp_generic.c 2011-11-16 18:39:07.000000000 -0500
26304 @@ -987,7 +987,6 @@ ppp_net_ioctl(struct net_device *dev, st
26305 void __user *addr = (void __user *) ifr->ifr_ifru.ifru_data;
26306 struct ppp_stats stats;
26307 @@ -32286,10 +32261,10 @@ diff -urNp linux-3.0.9/drivers/net/ppp_generic.c linux-3.0.9/drivers/net/ppp_gen
26308 break;
26309 err = 0;
26310 break;
26311 -diff -urNp linux-3.0.9/drivers/net/r8169.c linux-3.0.9/drivers/net/r8169.c
26312 ---- linux-3.0.9/drivers/net/r8169.c 2011-11-11 13:12:24.000000000 -0500
26313 -+++ linux-3.0.9/drivers/net/r8169.c 2011-11-15 20:02:59.000000000 -0500
26314 -@@ -645,12 +645,12 @@ struct rtl8169_private {
26315 +diff -urNp linux-3.1.1/drivers/net/r8169.c linux-3.1.1/drivers/net/r8169.c
26316 +--- linux-3.1.1/drivers/net/r8169.c 2011-11-11 15:19:27.000000000 -0500
26317 ++++ linux-3.1.1/drivers/net/r8169.c 2011-11-16 18:39:07.000000000 -0500
26318 +@@ -663,12 +663,12 @@ struct rtl8169_private {
26319 struct mdio_ops {
26320 void (*write)(void __iomem *, int, int);
26321 int (*read)(void __iomem *, int);
26322 @@ -32304,10 +32279,10 @@ diff -urNp linux-3.0.9/drivers/net/r8169.c linux-3.0.9/drivers/net/r8169.c
26323
26324 int (*set_speed)(struct net_device *, u8 aneg, u16 sp, u8 dpx, u32 adv);
26325 int (*get_settings)(struct net_device *, struct ethtool_cmd *);
26326 -diff -urNp linux-3.0.9/drivers/net/sis190.c linux-3.0.9/drivers/net/sis190.c
26327 ---- linux-3.0.9/drivers/net/sis190.c 2011-11-11 13:12:24.000000000 -0500
26328 -+++ linux-3.0.9/drivers/net/sis190.c 2011-11-15 20:02:59.000000000 -0500
26329 -@@ -1623,7 +1623,7 @@ static int __devinit sis190_get_mac_addr
26330 +diff -urNp linux-3.1.1/drivers/net/sis190.c linux-3.1.1/drivers/net/sis190.c
26331 +--- linux-3.1.1/drivers/net/sis190.c 2011-11-11 15:19:27.000000000 -0500
26332 ++++ linux-3.1.1/drivers/net/sis190.c 2011-11-16 18:39:07.000000000 -0500
26333 +@@ -1624,7 +1624,7 @@ static int __devinit sis190_get_mac_addr
26334 static int __devinit sis190_get_mac_addr_from_apc(struct pci_dev *pdev,
26335 struct net_device *dev)
26336 {
26337 @@ -32316,9 +32291,9 @@ diff -urNp linux-3.0.9/drivers/net/sis190.c linux-3.0.9/drivers/net/sis190.c
26338 struct sis190_private *tp = netdev_priv(dev);
26339 struct pci_dev *isa_bridge;
26340 u8 reg, tmp8;
26341 -diff -urNp linux-3.0.9/drivers/net/sundance.c linux-3.0.9/drivers/net/sundance.c
26342 ---- linux-3.0.9/drivers/net/sundance.c 2011-11-11 13:12:24.000000000 -0500
26343 -+++ linux-3.0.9/drivers/net/sundance.c 2011-11-15 20:02:59.000000000 -0500
26344 +diff -urNp linux-3.1.1/drivers/net/sundance.c linux-3.1.1/drivers/net/sundance.c
26345 +--- linux-3.1.1/drivers/net/sundance.c 2011-11-11 15:19:27.000000000 -0500
26346 ++++ linux-3.1.1/drivers/net/sundance.c 2011-11-16 18:39:07.000000000 -0500
26347 @@ -218,7 +218,7 @@ enum {
26348 struct pci_id_info {
26349 const char *name;
26350 @@ -32328,9 +32303,9 @@ diff -urNp linux-3.0.9/drivers/net/sundance.c linux-3.0.9/drivers/net/sundance.c
26351 {"D-Link DFE-550TX FAST Ethernet Adapter"},
26352 {"D-Link DFE-550FX 100Mbps Fiber-optics Adapter"},
26353 {"D-Link DFE-580TX 4 port Server Adapter"},
26354 -diff -urNp linux-3.0.9/drivers/net/tg3.h linux-3.0.9/drivers/net/tg3.h
26355 ---- linux-3.0.9/drivers/net/tg3.h 2011-11-11 13:12:24.000000000 -0500
26356 -+++ linux-3.0.9/drivers/net/tg3.h 2011-11-15 20:02:59.000000000 -0500
26357 +diff -urNp linux-3.1.1/drivers/net/tg3.h linux-3.1.1/drivers/net/tg3.h
26358 +--- linux-3.1.1/drivers/net/tg3.h 2011-11-11 15:19:27.000000000 -0500
26359 ++++ linux-3.1.1/drivers/net/tg3.h 2011-11-16 18:39:07.000000000 -0500
26360 @@ -134,6 +134,7 @@
26361 #define CHIPREV_ID_5750_A0 0x4000
26362 #define CHIPREV_ID_5750_A1 0x4001
26363 @@ -32339,9 +32314,9 @@ diff -urNp linux-3.0.9/drivers/net/tg3.h linux-3.0.9/drivers/net/tg3.h
26364 #define CHIPREV_ID_5750_C2 0x4202
26365 #define CHIPREV_ID_5752_A0_HW 0x5000
26366 #define CHIPREV_ID_5752_A0 0x6000
26367 -diff -urNp linux-3.0.9/drivers/net/tokenring/abyss.c linux-3.0.9/drivers/net/tokenring/abyss.c
26368 ---- linux-3.0.9/drivers/net/tokenring/abyss.c 2011-11-11 13:12:24.000000000 -0500
26369 -+++ linux-3.0.9/drivers/net/tokenring/abyss.c 2011-11-15 20:02:59.000000000 -0500
26370 +diff -urNp linux-3.1.1/drivers/net/tokenring/abyss.c linux-3.1.1/drivers/net/tokenring/abyss.c
26371 +--- linux-3.1.1/drivers/net/tokenring/abyss.c 2011-11-11 15:19:27.000000000 -0500
26372 ++++ linux-3.1.1/drivers/net/tokenring/abyss.c 2011-11-16 18:39:07.000000000 -0500
26373 @@ -451,10 +451,12 @@ static struct pci_driver abyss_driver =
26374
26375 static int __init abyss_init (void)
26376 @@ -32358,9 +32333,9 @@ diff -urNp linux-3.0.9/drivers/net/tokenring/abyss.c linux-3.0.9/drivers/net/tok
26377
26378 return pci_register_driver(&abyss_driver);
26379 }
26380 -diff -urNp linux-3.0.9/drivers/net/tokenring/madgemc.c linux-3.0.9/drivers/net/tokenring/madgemc.c
26381 ---- linux-3.0.9/drivers/net/tokenring/madgemc.c 2011-11-11 13:12:24.000000000 -0500
26382 -+++ linux-3.0.9/drivers/net/tokenring/madgemc.c 2011-11-15 20:02:59.000000000 -0500
26383 +diff -urNp linux-3.1.1/drivers/net/tokenring/madgemc.c linux-3.1.1/drivers/net/tokenring/madgemc.c
26384 +--- linux-3.1.1/drivers/net/tokenring/madgemc.c 2011-11-11 15:19:27.000000000 -0500
26385 ++++ linux-3.1.1/drivers/net/tokenring/madgemc.c 2011-11-16 18:39:07.000000000 -0500
26386 @@ -744,9 +744,11 @@ static struct mca_driver madgemc_driver
26387
26388 static int __init madgemc_init (void)
26389 @@ -32376,9 +32351,9 @@ diff -urNp linux-3.0.9/drivers/net/tokenring/madgemc.c linux-3.0.9/drivers/net/t
26390
26391 return mca_register_driver (&madgemc_driver);
26392 }
26393 -diff -urNp linux-3.0.9/drivers/net/tokenring/proteon.c linux-3.0.9/drivers/net/tokenring/proteon.c
26394 ---- linux-3.0.9/drivers/net/tokenring/proteon.c 2011-11-11 13:12:24.000000000 -0500
26395 -+++ linux-3.0.9/drivers/net/tokenring/proteon.c 2011-11-15 20:02:59.000000000 -0500
26396 +diff -urNp linux-3.1.1/drivers/net/tokenring/proteon.c linux-3.1.1/drivers/net/tokenring/proteon.c
26397 +--- linux-3.1.1/drivers/net/tokenring/proteon.c 2011-11-11 15:19:27.000000000 -0500
26398 ++++ linux-3.1.1/drivers/net/tokenring/proteon.c 2011-11-16 18:39:07.000000000 -0500
26399 @@ -353,9 +353,11 @@ static int __init proteon_init(void)
26400 struct platform_device *pdev;
26401 int i, num = 0, err = 0;
26402 @@ -32394,9 +32369,9 @@ diff -urNp linux-3.0.9/drivers/net/tokenring/proteon.c linux-3.0.9/drivers/net/t
26403
26404 err = platform_driver_register(&proteon_driver);
26405 if (err)
26406 -diff -urNp linux-3.0.9/drivers/net/tokenring/skisa.c linux-3.0.9/drivers/net/tokenring/skisa.c
26407 ---- linux-3.0.9/drivers/net/tokenring/skisa.c 2011-11-11 13:12:24.000000000 -0500
26408 -+++ linux-3.0.9/drivers/net/tokenring/skisa.c 2011-11-15 20:02:59.000000000 -0500
26409 +diff -urNp linux-3.1.1/drivers/net/tokenring/skisa.c linux-3.1.1/drivers/net/tokenring/skisa.c
26410 +--- linux-3.1.1/drivers/net/tokenring/skisa.c 2011-11-11 15:19:27.000000000 -0500
26411 ++++ linux-3.1.1/drivers/net/tokenring/skisa.c 2011-11-16 18:39:07.000000000 -0500
26412 @@ -363,9 +363,11 @@ static int __init sk_isa_init(void)
26413 struct platform_device *pdev;
26414 int i, num = 0, err = 0;
26415 @@ -32412,10 +32387,10 @@ diff -urNp linux-3.0.9/drivers/net/tokenring/skisa.c linux-3.0.9/drivers/net/tok
26416
26417 err = platform_driver_register(&sk_isa_driver);
26418 if (err)
26419 -diff -urNp linux-3.0.9/drivers/net/tulip/de2104x.c linux-3.0.9/drivers/net/tulip/de2104x.c
26420 ---- linux-3.0.9/drivers/net/tulip/de2104x.c 2011-11-11 13:12:24.000000000 -0500
26421 -+++ linux-3.0.9/drivers/net/tulip/de2104x.c 2011-11-15 20:02:59.000000000 -0500
26422 -@@ -1794,6 +1794,8 @@ static void __devinit de21041_get_srom_i
26423 +diff -urNp linux-3.1.1/drivers/net/tulip/de2104x.c linux-3.1.1/drivers/net/tulip/de2104x.c
26424 +--- linux-3.1.1/drivers/net/tulip/de2104x.c 2011-11-11 15:19:27.000000000 -0500
26425 ++++ linux-3.1.1/drivers/net/tulip/de2104x.c 2011-11-16 18:40:22.000000000 -0500
26426 +@@ -1795,6 +1795,8 @@ static void __devinit de21041_get_srom_i
26427 struct de_srom_info_leaf *il;
26428 void *bufp;
26429
26430 @@ -32424,10 +32399,10 @@ diff -urNp linux-3.0.9/drivers/net/tulip/de2104x.c linux-3.0.9/drivers/net/tulip
26431 /* download entire eeprom */
26432 for (i = 0; i < DE_EEPROM_WORDS; i++)
26433 ((__le16 *)ee_data)[i] =
26434 -diff -urNp linux-3.0.9/drivers/net/tulip/de4x5.c linux-3.0.9/drivers/net/tulip/de4x5.c
26435 ---- linux-3.0.9/drivers/net/tulip/de4x5.c 2011-11-11 13:12:24.000000000 -0500
26436 -+++ linux-3.0.9/drivers/net/tulip/de4x5.c 2011-11-15 20:02:59.000000000 -0500
26437 -@@ -5401,7 +5401,7 @@ de4x5_ioctl(struct net_device *dev, stru
26438 +diff -urNp linux-3.1.1/drivers/net/tulip/de4x5.c linux-3.1.1/drivers/net/tulip/de4x5.c
26439 +--- linux-3.1.1/drivers/net/tulip/de4x5.c 2011-11-11 15:19:27.000000000 -0500
26440 ++++ linux-3.1.1/drivers/net/tulip/de4x5.c 2011-11-16 18:39:07.000000000 -0500
26441 +@@ -5397,7 +5397,7 @@ de4x5_ioctl(struct net_device *dev, stru
26442 for (i=0; i<ETH_ALEN; i++) {
26443 tmp.addr[i] = dev->dev_addr[i];
26444 }
26445 @@ -32436,7 +32411,7 @@ diff -urNp linux-3.0.9/drivers/net/tulip/de4x5.c linux-3.0.9/drivers/net/tulip/d
26446 break;
26447
26448 case DE4X5_SET_HWADDR: /* Set the hardware address */
26449 -@@ -5441,7 +5441,7 @@ de4x5_ioctl(struct net_device *dev, stru
26450 +@@ -5437,7 +5437,7 @@ de4x5_ioctl(struct net_device *dev, stru
26451 spin_lock_irqsave(&lp->lock, flags);
26452 memcpy(&statbuf, &lp->pktStats, ioc->len);
26453 spin_unlock_irqrestore(&lp->lock, flags);
26454 @@ -32445,9 +32420,9 @@ diff -urNp linux-3.0.9/drivers/net/tulip/de4x5.c linux-3.0.9/drivers/net/tulip/d
26455 return -EFAULT;
26456 break;
26457 }
26458 -diff -urNp linux-3.0.9/drivers/net/tulip/eeprom.c linux-3.0.9/drivers/net/tulip/eeprom.c
26459 ---- linux-3.0.9/drivers/net/tulip/eeprom.c 2011-11-11 13:12:24.000000000 -0500
26460 -+++ linux-3.0.9/drivers/net/tulip/eeprom.c 2011-11-15 20:02:59.000000000 -0500
26461 +diff -urNp linux-3.1.1/drivers/net/tulip/eeprom.c linux-3.1.1/drivers/net/tulip/eeprom.c
26462 +--- linux-3.1.1/drivers/net/tulip/eeprom.c 2011-11-11 15:19:27.000000000 -0500
26463 ++++ linux-3.1.1/drivers/net/tulip/eeprom.c 2011-11-16 18:39:07.000000000 -0500
26464 @@ -81,7 +81,7 @@ static struct eeprom_fixup eeprom_fixups
26465 {NULL}};
26466
26467 @@ -32457,9 +32432,9 @@ diff -urNp linux-3.0.9/drivers/net/tulip/eeprom.c linux-3.0.9/drivers/net/tulip/
26468 "21140 non-MII",
26469 "21140 MII PHY",
26470 "21142 Serial PHY",
26471 -diff -urNp linux-3.0.9/drivers/net/tulip/winbond-840.c linux-3.0.9/drivers/net/tulip/winbond-840.c
26472 ---- linux-3.0.9/drivers/net/tulip/winbond-840.c 2011-11-11 13:12:24.000000000 -0500
26473 -+++ linux-3.0.9/drivers/net/tulip/winbond-840.c 2011-11-15 20:02:59.000000000 -0500
26474 +diff -urNp linux-3.1.1/drivers/net/tulip/winbond-840.c linux-3.1.1/drivers/net/tulip/winbond-840.c
26475 +--- linux-3.1.1/drivers/net/tulip/winbond-840.c 2011-11-11 15:19:27.000000000 -0500
26476 ++++ linux-3.1.1/drivers/net/tulip/winbond-840.c 2011-11-16 18:39:07.000000000 -0500
26477 @@ -236,7 +236,7 @@ struct pci_id_info {
26478 int drv_flags; /* Driver use, intended as capability flags. */
26479 };
26480 @@ -32469,9 +32444,9 @@ diff -urNp linux-3.0.9/drivers/net/tulip/winbond-840.c linux-3.0.9/drivers/net/t
26481 { /* Sometime a Level-One switch card. */
26482 "Winbond W89c840", CanHaveMII | HasBrokenTx | FDXOnNoMII},
26483 { "Winbond W89c840", CanHaveMII | HasBrokenTx},
26484 -diff -urNp linux-3.0.9/drivers/net/usb/hso.c linux-3.0.9/drivers/net/usb/hso.c
26485 ---- linux-3.0.9/drivers/net/usb/hso.c 2011-11-11 13:12:24.000000000 -0500
26486 -+++ linux-3.0.9/drivers/net/usb/hso.c 2011-11-15 20:02:59.000000000 -0500
26487 +diff -urNp linux-3.1.1/drivers/net/usb/hso.c linux-3.1.1/drivers/net/usb/hso.c
26488 +--- linux-3.1.1/drivers/net/usb/hso.c 2011-11-11 15:19:27.000000000 -0500
26489 ++++ linux-3.1.1/drivers/net/usb/hso.c 2011-11-16 18:39:07.000000000 -0500
26490 @@ -71,7 +71,7 @@
26491 #include <asm/byteorder.h>
26492 #include <linux/serial_core.h>
26493 @@ -32568,10 +32543,10 @@ diff -urNp linux-3.0.9/drivers/net/usb/hso.c linux-3.0.9/drivers/net/usb/hso.c
26494 result =
26495 hso_start_serial_device(serial_table[i], GFP_NOIO);
26496 hso_kick_transmit(dev2ser(serial_table[i]));
26497 -diff -urNp linux-3.0.9/drivers/net/vmxnet3/vmxnet3_ethtool.c linux-3.0.9/drivers/net/vmxnet3/vmxnet3_ethtool.c
26498 ---- linux-3.0.9/drivers/net/vmxnet3/vmxnet3_ethtool.c 2011-11-11 13:12:24.000000000 -0500
26499 -+++ linux-3.0.9/drivers/net/vmxnet3/vmxnet3_ethtool.c 2011-11-15 20:02:59.000000000 -0500
26500 -@@ -594,8 +594,7 @@ vmxnet3_set_rss_indir(struct net_device
26501 +diff -urNp linux-3.1.1/drivers/net/vmxnet3/vmxnet3_ethtool.c linux-3.1.1/drivers/net/vmxnet3/vmxnet3_ethtool.c
26502 +--- linux-3.1.1/drivers/net/vmxnet3/vmxnet3_ethtool.c 2011-11-11 15:19:27.000000000 -0500
26503 ++++ linux-3.1.1/drivers/net/vmxnet3/vmxnet3_ethtool.c 2011-11-16 18:39:07.000000000 -0500
26504 +@@ -601,8 +601,7 @@ vmxnet3_set_rss_indir(struct net_device
26505 * Return with error code if any of the queue indices
26506 * is out of range
26507 */
26508 @@ -32581,10 +32556,10 @@ diff -urNp linux-3.0.9/drivers/net/vmxnet3/vmxnet3_ethtool.c linux-3.0.9/drivers
26509 return -EINVAL;
26510 }
26511
26512 -diff -urNp linux-3.0.9/drivers/net/vxge/vxge-config.h linux-3.0.9/drivers/net/vxge/vxge-config.h
26513 ---- linux-3.0.9/drivers/net/vxge/vxge-config.h 2011-11-11 13:12:24.000000000 -0500
26514 -+++ linux-3.0.9/drivers/net/vxge/vxge-config.h 2011-11-15 20:02:59.000000000 -0500
26515 -@@ -512,7 +512,7 @@ struct vxge_hw_uld_cbs {
26516 +diff -urNp linux-3.1.1/drivers/net/vxge/vxge-config.h linux-3.1.1/drivers/net/vxge/vxge-config.h
26517 +--- linux-3.1.1/drivers/net/vxge/vxge-config.h 2011-11-11 15:19:27.000000000 -0500
26518 ++++ linux-3.1.1/drivers/net/vxge/vxge-config.h 2011-11-16 18:39:07.000000000 -0500
26519 +@@ -514,7 +514,7 @@ struct vxge_hw_uld_cbs {
26520 void (*link_down)(struct __vxge_hw_device *devh);
26521 void (*crit_err)(struct __vxge_hw_device *devh,
26522 enum vxge_hw_event type, u64 ext_data);
26523 @@ -32593,10 +32568,10 @@ diff -urNp linux-3.0.9/drivers/net/vxge/vxge-config.h linux-3.0.9/drivers/net/vx
26524
26525 /*
26526 * struct __vxge_hw_blockpool_entry - Block private data structure
26527 -diff -urNp linux-3.0.9/drivers/net/vxge/vxge-main.c linux-3.0.9/drivers/net/vxge/vxge-main.c
26528 ---- linux-3.0.9/drivers/net/vxge/vxge-main.c 2011-11-11 13:12:24.000000000 -0500
26529 -+++ linux-3.0.9/drivers/net/vxge/vxge-main.c 2011-11-15 20:02:59.000000000 -0500
26530 -@@ -98,6 +98,8 @@ static inline void VXGE_COMPLETE_VPATH_T
26531 +diff -urNp linux-3.1.1/drivers/net/vxge/vxge-main.c linux-3.1.1/drivers/net/vxge/vxge-main.c
26532 +--- linux-3.1.1/drivers/net/vxge/vxge-main.c 2011-11-11 15:19:27.000000000 -0500
26533 ++++ linux-3.1.1/drivers/net/vxge/vxge-main.c 2011-11-16 18:40:22.000000000 -0500
26534 +@@ -100,6 +100,8 @@ static inline void VXGE_COMPLETE_VPATH_T
26535 struct sk_buff *completed[NR_SKB_COMPLETED];
26536 int more;
26537
26538 @@ -32605,7 +32580,7 @@ diff -urNp linux-3.0.9/drivers/net/vxge/vxge-main.c linux-3.0.9/drivers/net/vxge
26539 do {
26540 more = 0;
26541 skb_ptr = completed;
26542 -@@ -1920,6 +1922,8 @@ static enum vxge_hw_status vxge_rth_conf
26543 +@@ -1915,6 +1917,8 @@ static enum vxge_hw_status vxge_rth_conf
26544 u8 mtable[256] = {0}; /* CPU to vpath mapping */
26545 int index;
26546
26547 @@ -32614,9 +32589,9 @@ diff -urNp linux-3.0.9/drivers/net/vxge/vxge-main.c linux-3.0.9/drivers/net/vxge
26548 /*
26549 * Filling
26550 * - itable with bucket numbers
26551 -diff -urNp linux-3.0.9/drivers/net/vxge/vxge-traffic.h linux-3.0.9/drivers/net/vxge/vxge-traffic.h
26552 ---- linux-3.0.9/drivers/net/vxge/vxge-traffic.h 2011-11-11 13:12:24.000000000 -0500
26553 -+++ linux-3.0.9/drivers/net/vxge/vxge-traffic.h 2011-11-15 20:02:59.000000000 -0500
26554 +diff -urNp linux-3.1.1/drivers/net/vxge/vxge-traffic.h linux-3.1.1/drivers/net/vxge/vxge-traffic.h
26555 +--- linux-3.1.1/drivers/net/vxge/vxge-traffic.h 2011-11-11 15:19:27.000000000 -0500
26556 ++++ linux-3.1.1/drivers/net/vxge/vxge-traffic.h 2011-11-16 18:39:07.000000000 -0500
26557 @@ -2088,7 +2088,7 @@ struct vxge_hw_mempool_cbs {
26558 struct vxge_hw_mempool_dma *dma_object,
26559 u32 index,
26560 @@ -32626,22 +32601,10 @@ diff -urNp linux-3.0.9/drivers/net/vxge/vxge-traffic.h linux-3.0.9/drivers/net/v
26561
26562 #define VXGE_HW_VIRTUAL_PATH_HANDLE(vpath) \
26563 ((struct __vxge_hw_vpath_handle *)(vpath)->vpath_handles.next)
26564 -diff -urNp linux-3.0.9/drivers/net/wan/cycx_x25.c linux-3.0.9/drivers/net/wan/cycx_x25.c
26565 ---- linux-3.0.9/drivers/net/wan/cycx_x25.c 2011-11-11 13:12:24.000000000 -0500
26566 -+++ linux-3.0.9/drivers/net/wan/cycx_x25.c 2011-11-15 20:02:59.000000000 -0500
26567 -@@ -1018,6 +1018,8 @@ static void hex_dump(char *msg, unsigned
26568 - unsigned char hex[1024],
26569 - * phex = hex;
26570 -
26571 -+ pax_track_stack();
26572 -+
26573 - if (len >= (sizeof(hex) / 2))
26574 - len = (sizeof(hex) / 2) - 1;
26575 -
26576 -diff -urNp linux-3.0.9/drivers/net/wan/hdlc_x25.c linux-3.0.9/drivers/net/wan/hdlc_x25.c
26577 ---- linux-3.0.9/drivers/net/wan/hdlc_x25.c 2011-11-11 13:12:24.000000000 -0500
26578 -+++ linux-3.0.9/drivers/net/wan/hdlc_x25.c 2011-11-15 20:02:59.000000000 -0500
26579 -@@ -136,16 +136,16 @@ static netdev_tx_t x25_xmit(struct sk_bu
26580 +diff -urNp linux-3.1.1/drivers/net/wan/hdlc_x25.c linux-3.1.1/drivers/net/wan/hdlc_x25.c
26581 +--- linux-3.1.1/drivers/net/wan/hdlc_x25.c 2011-11-11 15:19:27.000000000 -0500
26582 ++++ linux-3.1.1/drivers/net/wan/hdlc_x25.c 2011-11-16 18:39:07.000000000 -0500
26583 +@@ -134,16 +134,16 @@ static netdev_tx_t x25_xmit(struct sk_bu
26584
26585 static int x25_open(struct net_device *dev)
26586 {
26587 @@ -32666,9 +32629,9 @@ diff -urNp linux-3.0.9/drivers/net/wan/hdlc_x25.c linux-3.0.9/drivers/net/wan/hd
26588 result = lapb_register(dev, &cb);
26589 if (result != LAPB_OK)
26590 return result;
26591 -diff -urNp linux-3.0.9/drivers/net/wimax/i2400m/usb-fw.c linux-3.0.9/drivers/net/wimax/i2400m/usb-fw.c
26592 ---- linux-3.0.9/drivers/net/wimax/i2400m/usb-fw.c 2011-11-11 13:12:24.000000000 -0500
26593 -+++ linux-3.0.9/drivers/net/wimax/i2400m/usb-fw.c 2011-11-15 20:02:59.000000000 -0500
26594 +diff -urNp linux-3.1.1/drivers/net/wimax/i2400m/usb-fw.c linux-3.1.1/drivers/net/wimax/i2400m/usb-fw.c
26595 +--- linux-3.1.1/drivers/net/wimax/i2400m/usb-fw.c 2011-11-11 15:19:27.000000000 -0500
26596 ++++ linux-3.1.1/drivers/net/wimax/i2400m/usb-fw.c 2011-11-16 18:40:22.000000000 -0500
26597 @@ -287,6 +287,8 @@ ssize_t i2400mu_bus_bm_wait_for_ack(stru
26598 int do_autopm = 1;
26599 DECLARE_COMPLETION_ONSTACK(notif_completion);
26600 @@ -32678,9 +32641,9 @@ diff -urNp linux-3.0.9/drivers/net/wimax/i2400m/usb-fw.c linux-3.0.9/drivers/net
26601 d_fnstart(8, dev, "(i2400m %p ack %p size %zu)\n",
26602 i2400m, ack, ack_size);
26603 BUG_ON(_ack == i2400m->bm_ack_buf);
26604 -diff -urNp linux-3.0.9/drivers/net/wireless/airo.c linux-3.0.9/drivers/net/wireless/airo.c
26605 ---- linux-3.0.9/drivers/net/wireless/airo.c 2011-11-11 13:12:24.000000000 -0500
26606 -+++ linux-3.0.9/drivers/net/wireless/airo.c 2011-11-15 20:02:59.000000000 -0500
26607 +diff -urNp linux-3.1.1/drivers/net/wireless/airo.c linux-3.1.1/drivers/net/wireless/airo.c
26608 +--- linux-3.1.1/drivers/net/wireless/airo.c 2011-11-11 15:19:27.000000000 -0500
26609 ++++ linux-3.1.1/drivers/net/wireless/airo.c 2011-11-16 18:40:22.000000000 -0500
26610 @@ -3003,6 +3003,8 @@ static void airo_process_scan_results (s
26611 BSSListElement * loop_net;
26612 BSSListElement * tmp_net;
26613 @@ -32735,75 +32698,66 @@ diff -urNp linux-3.0.9/drivers/net/wireless/airo.c linux-3.0.9/drivers/net/wirel
26614 /* Get stats out of the card */
26615 clear_bit(JOB_WSTATS, &local->jobs);
26616 if (local->power.event) {
26617 -diff -urNp linux-3.0.9/drivers/net/wireless/ath/ath5k/debug.c linux-3.0.9/drivers/net/wireless/ath/ath5k/debug.c
26618 ---- linux-3.0.9/drivers/net/wireless/ath/ath5k/debug.c 2011-11-11 13:12:24.000000000 -0500
26619 -+++ linux-3.0.9/drivers/net/wireless/ath/ath5k/debug.c 2011-11-15 20:02:59.000000000 -0500
26620 -@@ -204,6 +204,8 @@ static ssize_t read_file_beacon(struct f
26621 +diff -urNp linux-3.1.1/drivers/net/wireless/ath/ath5k/debug.c linux-3.1.1/drivers/net/wireless/ath/ath5k/debug.c
26622 +--- linux-3.1.1/drivers/net/wireless/ath/ath5k/debug.c 2011-11-11 15:19:27.000000000 -0500
26623 ++++ linux-3.1.1/drivers/net/wireless/ath/ath5k/debug.c 2011-11-16 19:08:21.000000000 -0500
26624 +@@ -203,6 +203,8 @@ static ssize_t read_file_beacon(struct f
26625 unsigned int v;
26626 u64 tsf;
26627
26628 + pax_track_stack();
26629 +
26630 - v = ath5k_hw_reg_read(sc->ah, AR5K_BEACON);
26631 - len += snprintf(buf+len, sizeof(buf)-len,
26632 + v = ath5k_hw_reg_read(ah, AR5K_BEACON);
26633 + len += snprintf(buf + len, sizeof(buf) - len,
26634 "%-24s0x%08x\tintval: %d\tTIM: 0x%x\n",
26635 -@@ -323,6 +325,8 @@ static ssize_t read_file_debug(struct fi
26636 +@@ -321,6 +323,8 @@ static ssize_t read_file_debug(struct fi
26637 unsigned int len = 0;
26638 unsigned int i;
26639
26640 + pax_track_stack();
26641 +
26642 - len += snprintf(buf+len, sizeof(buf)-len,
26643 - "DEBUG LEVEL: 0x%08x\n\n", sc->debug.level);
26644 -
26645 -@@ -384,6 +388,8 @@ static ssize_t read_file_antenna(struct
26646 - unsigned int i;
26647 - unsigned int v;
26648 + len += snprintf(buf + len, sizeof(buf) - len,
26649 + "DEBUG LEVEL: 0x%08x\n\n", ah->debug.level);
26650
26651 -+ pax_track_stack();
26652 -+
26653 - len += snprintf(buf+len, sizeof(buf)-len, "antenna mode\t%d\n",
26654 - sc->ah->ah_ant_mode);
26655 - len += snprintf(buf+len, sizeof(buf)-len, "default antenna\t%d\n",
26656 -@@ -494,6 +500,8 @@ static ssize_t read_file_misc(struct fil
26657 +@@ -492,6 +496,8 @@ static ssize_t read_file_misc(struct fil
26658 unsigned int len = 0;
26659 - u32 filt = ath5k_hw_get_rx_filter(sc->ah);
26660 + u32 filt = ath5k_hw_get_rx_filter(ah);
26661
26662 + pax_track_stack();
26663 +
26664 - len += snprintf(buf+len, sizeof(buf)-len, "bssid-mask: %pM\n",
26665 - sc->bssidmask);
26666 - len += snprintf(buf+len, sizeof(buf)-len, "filter-flags: 0x%x ",
26667 -@@ -550,6 +558,8 @@ static ssize_t read_file_frameerrors(str
26668 + len += snprintf(buf + len, sizeof(buf) - len, "bssid-mask: %pM\n",
26669 + ah->bssidmask);
26670 + len += snprintf(buf + len, sizeof(buf) - len, "filter-flags: 0x%x ",
26671 +@@ -548,6 +554,8 @@ static ssize_t read_file_frameerrors(str
26672 unsigned int len = 0;
26673 int i;
26674
26675 + pax_track_stack();
26676 +
26677 - len += snprintf(buf+len, sizeof(buf)-len,
26678 + len += snprintf(buf + len, sizeof(buf) - len,
26679 "RX\n---------------------\n");
26680 - len += snprintf(buf+len, sizeof(buf)-len, "CRC\t%u\t(%u%%)\n",
26681 -@@ -667,6 +677,8 @@ static ssize_t read_file_ani(struct file
26682 + len += snprintf(buf + len, sizeof(buf) - len, "CRC\t%u\t(%u%%)\n",
26683 +@@ -665,6 +673,8 @@ static ssize_t read_file_ani(struct file
26684 char buf[700];
26685 unsigned int len = 0;
26686
26687 + pax_track_stack();
26688 +
26689 - len += snprintf(buf+len, sizeof(buf)-len,
26690 + len += snprintf(buf + len, sizeof(buf) - len,
26691 "HW has PHY error counters:\t%s\n",
26692 - sc->ah->ah_capabilities.cap_has_phyerr_counters ?
26693 -@@ -827,6 +839,8 @@ static ssize_t read_file_queue(struct fi
26694 + ah->ah_capabilities.cap_has_phyerr_counters ?
26695 +@@ -829,6 +839,8 @@ static ssize_t read_file_queue(struct fi
26696 struct ath5k_buf *bf, *bf0;
26697 int i, n;
26698
26699 + pax_track_stack();
26700 +
26701 - len += snprintf(buf+len, sizeof(buf)-len,
26702 - "available txbuffers: %d\n", sc->txbuf_len);
26703 + len += snprintf(buf + len, sizeof(buf) - len,
26704 + "available txbuffers: %d\n", ah->txbuf_len);
26705
26706 -diff -urNp linux-3.0.9/drivers/net/wireless/ath/ath9k/ar9003_calib.c linux-3.0.9/drivers/net/wireless/ath/ath9k/ar9003_calib.c
26707 ---- linux-3.0.9/drivers/net/wireless/ath/ath9k/ar9003_calib.c 2011-11-11 13:12:24.000000000 -0500
26708 -+++ linux-3.0.9/drivers/net/wireless/ath/ath9k/ar9003_calib.c 2011-11-15 20:02:59.000000000 -0500
26709 +diff -urNp linux-3.1.1/drivers/net/wireless/ath/ath9k/ar9003_calib.c linux-3.1.1/drivers/net/wireless/ath/ath9k/ar9003_calib.c
26710 +--- linux-3.1.1/drivers/net/wireless/ath/ath9k/ar9003_calib.c 2011-11-11 15:19:27.000000000 -0500
26711 ++++ linux-3.1.1/drivers/net/wireless/ath/ath9k/ar9003_calib.c 2011-11-16 18:40:22.000000000 -0500
26712 @@ -758,6 +758,8 @@ static void ar9003_hw_tx_iq_cal_post_pro
26713 int i, im, j;
26714 int nmeasurement;
26715 @@ -32813,10 +32767,10 @@ diff -urNp linux-3.0.9/drivers/net/wireless/ath/ath9k/ar9003_calib.c linux-3.0.9
26716 for (i = 0; i < AR9300_MAX_CHAINS; i++) {
26717 if (ah->txchainmask & (1 << i))
26718 num_chains++;
26719 -diff -urNp linux-3.0.9/drivers/net/wireless/ath/ath9k/ar9003_paprd.c linux-3.0.9/drivers/net/wireless/ath/ath9k/ar9003_paprd.c
26720 ---- linux-3.0.9/drivers/net/wireless/ath/ath9k/ar9003_paprd.c 2011-11-11 13:12:24.000000000 -0500
26721 -+++ linux-3.0.9/drivers/net/wireless/ath/ath9k/ar9003_paprd.c 2011-11-15 20:02:59.000000000 -0500
26722 -@@ -356,6 +356,8 @@ static bool create_pa_curve(u32 *data_L,
26723 +diff -urNp linux-3.1.1/drivers/net/wireless/ath/ath9k/ar9003_paprd.c linux-3.1.1/drivers/net/wireless/ath/ath9k/ar9003_paprd.c
26724 +--- linux-3.1.1/drivers/net/wireless/ath/ath9k/ar9003_paprd.c 2011-11-11 15:19:27.000000000 -0500
26725 ++++ linux-3.1.1/drivers/net/wireless/ath/ath9k/ar9003_paprd.c 2011-11-16 18:40:22.000000000 -0500
26726 +@@ -406,6 +406,8 @@ static bool create_pa_curve(u32 *data_L,
26727 int theta_low_bin = 0;
26728 int i;
26729
26730 @@ -32825,10 +32779,10 @@ diff -urNp linux-3.0.9/drivers/net/wireless/ath/ath9k/ar9003_paprd.c linux-3.0.9
26731 /* disregard any bin that contains <= 16 samples */
26732 thresh_accum_cnt = 16;
26733 scale_factor = 5;
26734 -diff -urNp linux-3.0.9/drivers/net/wireless/ath/ath9k/debug.c linux-3.0.9/drivers/net/wireless/ath/ath9k/debug.c
26735 ---- linux-3.0.9/drivers/net/wireless/ath/ath9k/debug.c 2011-11-11 13:12:24.000000000 -0500
26736 -+++ linux-3.0.9/drivers/net/wireless/ath/ath9k/debug.c 2011-11-15 20:02:59.000000000 -0500
26737 -@@ -337,6 +337,8 @@ static ssize_t read_file_interrupt(struc
26738 +diff -urNp linux-3.1.1/drivers/net/wireless/ath/ath9k/debug.c linux-3.1.1/drivers/net/wireless/ath/ath9k/debug.c
26739 +--- linux-3.1.1/drivers/net/wireless/ath/ath9k/debug.c 2011-11-11 15:19:27.000000000 -0500
26740 ++++ linux-3.1.1/drivers/net/wireless/ath/ath9k/debug.c 2011-11-16 18:40:22.000000000 -0500
26741 +@@ -387,6 +387,8 @@ static ssize_t read_file_interrupt(struc
26742 char buf[512];
26743 unsigned int len = 0;
26744
26745 @@ -32837,7 +32791,7 @@ diff -urNp linux-3.0.9/drivers/net/wireless/ath/ath9k/debug.c linux-3.0.9/driver
26746 if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) {
26747 len += snprintf(buf + len, sizeof(buf) - len,
26748 "%8s: %10u\n", "RXLP", sc->debug.stats.istats.rxlp);
26749 -@@ -427,6 +429,8 @@ static ssize_t read_file_wiphy(struct fi
26750 +@@ -477,6 +479,8 @@ static ssize_t read_file_wiphy(struct fi
26751 u8 addr[ETH_ALEN];
26752 u32 tmp;
26753
26754 @@ -32846,9 +32800,9 @@ diff -urNp linux-3.0.9/drivers/net/wireless/ath/ath9k/debug.c linux-3.0.9/driver
26755 len += snprintf(buf + len, sizeof(buf) - len,
26756 "%s (chan=%d center-freq: %d MHz channel-type: %d (%s))\n",
26757 wiphy_name(sc->hw->wiphy),
26758 -diff -urNp linux-3.0.9/drivers/net/wireless/ath/ath9k/htc_drv_debug.c linux-3.0.9/drivers/net/wireless/ath/ath9k/htc_drv_debug.c
26759 ---- linux-3.0.9/drivers/net/wireless/ath/ath9k/htc_drv_debug.c 2011-11-11 13:12:24.000000000 -0500
26760 -+++ linux-3.0.9/drivers/net/wireless/ath/ath9k/htc_drv_debug.c 2011-11-15 20:02:59.000000000 -0500
26761 +diff -urNp linux-3.1.1/drivers/net/wireless/ath/ath9k/htc_drv_debug.c linux-3.1.1/drivers/net/wireless/ath/ath9k/htc_drv_debug.c
26762 +--- linux-3.1.1/drivers/net/wireless/ath/ath9k/htc_drv_debug.c 2011-11-11 15:19:27.000000000 -0500
26763 ++++ linux-3.1.1/drivers/net/wireless/ath/ath9k/htc_drv_debug.c 2011-11-16 18:40:22.000000000 -0500
26764 @@ -31,6 +31,8 @@ static ssize_t read_file_tgt_int_stats(s
26765 unsigned int len = 0;
26766 int ret = 0;
26767 @@ -32903,10 +32857,10 @@ diff -urNp linux-3.0.9/drivers/net/wireless/ath/ath9k/htc_drv_debug.c linux-3.0.
26768 len += snprintf(buf + len, sizeof(buf) - len, "%20s : %10u\n",
26769 "Mgmt endpoint", skb_queue_len(&priv->tx.mgmt_ep_queue));
26770
26771 -diff -urNp linux-3.0.9/drivers/net/wireless/ath/ath9k/hw.h linux-3.0.9/drivers/net/wireless/ath/ath9k/hw.h
26772 ---- linux-3.0.9/drivers/net/wireless/ath/ath9k/hw.h 2011-11-11 13:12:24.000000000 -0500
26773 -+++ linux-3.0.9/drivers/net/wireless/ath/ath9k/hw.h 2011-11-15 20:02:59.000000000 -0500
26774 -@@ -585,7 +585,7 @@ struct ath_hw_private_ops {
26775 +diff -urNp linux-3.1.1/drivers/net/wireless/ath/ath9k/hw.h linux-3.1.1/drivers/net/wireless/ath/ath9k/hw.h
26776 +--- linux-3.1.1/drivers/net/wireless/ath/ath9k/hw.h 2011-11-11 15:19:27.000000000 -0500
26777 ++++ linux-3.1.1/drivers/net/wireless/ath/ath9k/hw.h 2011-11-16 18:39:07.000000000 -0500
26778 +@@ -588,7 +588,7 @@ struct ath_hw_private_ops {
26779
26780 /* ANI */
26781 void (*ani_cache_ini_regs)(struct ath_hw *ah);
26782 @@ -32915,7 +32869,7 @@ diff -urNp linux-3.0.9/drivers/net/wireless/ath/ath9k/hw.h linux-3.0.9/drivers/n
26783
26784 /**
26785 * struct ath_hw_ops - callbacks used by hardware code and driver code
26786 -@@ -637,7 +637,7 @@ struct ath_hw_ops {
26787 +@@ -639,7 +639,7 @@ struct ath_hw_ops {
26788 void (*antdiv_comb_conf_set)(struct ath_hw *ah,
26789 struct ath_hw_antcomb_conf *antconf);
26790
26791 @@ -32924,7 +32878,7 @@ diff -urNp linux-3.0.9/drivers/net/wireless/ath/ath9k/hw.h linux-3.0.9/drivers/n
26792
26793 struct ath_nf_limits {
26794 s16 max;
26795 -@@ -650,7 +650,7 @@ struct ath_nf_limits {
26796 +@@ -652,7 +652,7 @@ struct ath_nf_limits {
26797 #define AH_UNPLUGGED 0x2 /* The card has been physically removed. */
26798
26799 struct ath_hw {
26800 @@ -32933,9 +32887,9 @@ diff -urNp linux-3.0.9/drivers/net/wireless/ath/ath9k/hw.h linux-3.0.9/drivers/n
26801
26802 struct ieee80211_hw *hw;
26803 struct ath_common common;
26804 -diff -urNp linux-3.0.9/drivers/net/wireless/ath/ath.h linux-3.0.9/drivers/net/wireless/ath/ath.h
26805 ---- linux-3.0.9/drivers/net/wireless/ath/ath.h 2011-11-11 13:12:24.000000000 -0500
26806 -+++ linux-3.0.9/drivers/net/wireless/ath/ath.h 2011-11-15 20:02:59.000000000 -0500
26807 +diff -urNp linux-3.1.1/drivers/net/wireless/ath/ath.h linux-3.1.1/drivers/net/wireless/ath/ath.h
26808 +--- linux-3.1.1/drivers/net/wireless/ath/ath.h 2011-11-11 15:19:27.000000000 -0500
26809 ++++ linux-3.1.1/drivers/net/wireless/ath/ath.h 2011-11-16 18:39:07.000000000 -0500
26810 @@ -121,6 +121,7 @@ struct ath_ops {
26811 void (*write_flush) (void *);
26812 u32 (*rmw)(void *, u32 reg_offset, u32 set, u32 clr);
26813 @@ -32944,10 +32898,10 @@ diff -urNp linux-3.0.9/drivers/net/wireless/ath/ath.h linux-3.0.9/drivers/net/wi
26814
26815 struct ath_common;
26816 struct ath_bus_ops;
26817 -diff -urNp linux-3.0.9/drivers/net/wireless/ipw2x00/ipw2100.c linux-3.0.9/drivers/net/wireless/ipw2x00/ipw2100.c
26818 ---- linux-3.0.9/drivers/net/wireless/ipw2x00/ipw2100.c 2011-11-11 13:12:24.000000000 -0500
26819 -+++ linux-3.0.9/drivers/net/wireless/ipw2x00/ipw2100.c 2011-11-15 20:02:59.000000000 -0500
26820 -@@ -2100,6 +2100,8 @@ static int ipw2100_set_essid(struct ipw2
26821 +diff -urNp linux-3.1.1/drivers/net/wireless/ipw2x00/ipw2100.c linux-3.1.1/drivers/net/wireless/ipw2x00/ipw2100.c
26822 +--- linux-3.1.1/drivers/net/wireless/ipw2x00/ipw2100.c 2011-11-11 15:19:27.000000000 -0500
26823 ++++ linux-3.1.1/drivers/net/wireless/ipw2x00/ipw2100.c 2011-11-16 18:40:22.000000000 -0500
26824 +@@ -2102,6 +2102,8 @@ static int ipw2100_set_essid(struct ipw2
26825 int err;
26826 DECLARE_SSID_BUF(ssid);
26827
26828 @@ -32956,7 +32910,7 @@ diff -urNp linux-3.0.9/drivers/net/wireless/ipw2x00/ipw2100.c linux-3.0.9/driver
26829 IPW_DEBUG_HC("SSID: '%s'\n", print_ssid(ssid, essid, ssid_len));
26830
26831 if (ssid_len)
26832 -@@ -5449,6 +5451,8 @@ static int ipw2100_set_key(struct ipw210
26833 +@@ -5451,6 +5453,8 @@ static int ipw2100_set_key(struct ipw210
26834 struct ipw2100_wep_key *wep_key = (void *)cmd.host_command_parameters;
26835 int err;
26836
26837 @@ -32965,9 +32919,9 @@ diff -urNp linux-3.0.9/drivers/net/wireless/ipw2x00/ipw2100.c linux-3.0.9/driver
26838 IPW_DEBUG_HC("WEP_KEY_INFO: index = %d, len = %d/%d\n",
26839 idx, keylen, len);
26840
26841 -diff -urNp linux-3.0.9/drivers/net/wireless/ipw2x00/libipw_rx.c linux-3.0.9/drivers/net/wireless/ipw2x00/libipw_rx.c
26842 ---- linux-3.0.9/drivers/net/wireless/ipw2x00/libipw_rx.c 2011-11-11 13:12:24.000000000 -0500
26843 -+++ linux-3.0.9/drivers/net/wireless/ipw2x00/libipw_rx.c 2011-11-15 20:02:59.000000000 -0500
26844 +diff -urNp linux-3.1.1/drivers/net/wireless/ipw2x00/libipw_rx.c linux-3.1.1/drivers/net/wireless/ipw2x00/libipw_rx.c
26845 +--- linux-3.1.1/drivers/net/wireless/ipw2x00/libipw_rx.c 2011-11-11 15:19:27.000000000 -0500
26846 ++++ linux-3.1.1/drivers/net/wireless/ipw2x00/libipw_rx.c 2011-11-16 18:40:22.000000000 -0500
26847 @@ -1565,6 +1565,8 @@ static void libipw_process_probe_respons
26848 unsigned long flags;
26849 DECLARE_SSID_BUF(ssid);
26850 @@ -32977,10 +32931,10 @@ diff -urNp linux-3.0.9/drivers/net/wireless/ipw2x00/libipw_rx.c linux-3.0.9/driv
26851 LIBIPW_DEBUG_SCAN("'%s' (%pM"
26852 "): %c%c%c%c %c%c%c%c-%c%c%c%c %c%c%c%c\n",
26853 print_ssid(ssid, info_element->data, info_element->len),
26854 -diff -urNp linux-3.0.9/drivers/net/wireless/iwlegacy/iwl3945-base.c linux-3.0.9/drivers/net/wireless/iwlegacy/iwl3945-base.c
26855 ---- linux-3.0.9/drivers/net/wireless/iwlegacy/iwl3945-base.c 2011-11-11 13:12:24.000000000 -0500
26856 -+++ linux-3.0.9/drivers/net/wireless/iwlegacy/iwl3945-base.c 2011-11-15 20:02:59.000000000 -0500
26857 -@@ -3962,7 +3962,9 @@ static int iwl3945_pci_probe(struct pci_
26858 +diff -urNp linux-3.1.1/drivers/net/wireless/iwlegacy/iwl3945-base.c linux-3.1.1/drivers/net/wireless/iwlegacy/iwl3945-base.c
26859 +--- linux-3.1.1/drivers/net/wireless/iwlegacy/iwl3945-base.c 2011-11-11 15:19:27.000000000 -0500
26860 ++++ linux-3.1.1/drivers/net/wireless/iwlegacy/iwl3945-base.c 2011-11-16 18:39:07.000000000 -0500
26861 +@@ -3687,7 +3687,9 @@ static int iwl3945_pci_probe(struct pci_
26862 */
26863 if (iwl3945_mod_params.disable_hw_scan) {
26864 IWL_DEBUG_INFO(priv, "Disabling hw_scan\n");
26865 @@ -32991,10 +32945,10 @@ diff -urNp linux-3.0.9/drivers/net/wireless/iwlegacy/iwl3945-base.c linux-3.0.9/
26866 }
26867
26868 IWL_DEBUG_INFO(priv, "*** LOAD DRIVER ***\n");
26869 -diff -urNp linux-3.0.9/drivers/net/wireless/iwlwifi/iwl-agn-rs.c linux-3.0.9/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
26870 ---- linux-3.0.9/drivers/net/wireless/iwlwifi/iwl-agn-rs.c 2011-11-11 13:12:24.000000000 -0500
26871 -+++ linux-3.0.9/drivers/net/wireless/iwlwifi/iwl-agn-rs.c 2011-11-15 20:02:59.000000000 -0500
26872 -@@ -910,6 +910,8 @@ static void rs_tx_status(void *priv_r, s
26873 +diff -urNp linux-3.1.1/drivers/net/wireless/iwlwifi/iwl-agn-rs.c linux-3.1.1/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
26874 +--- linux-3.1.1/drivers/net/wireless/iwlwifi/iwl-agn-rs.c 2011-11-11 15:19:27.000000000 -0500
26875 ++++ linux-3.1.1/drivers/net/wireless/iwlwifi/iwl-agn-rs.c 2011-11-16 18:40:22.000000000 -0500
26876 +@@ -920,6 +920,8 @@ static void rs_tx_status(void *priv_r, s
26877 struct iwl_station_priv *sta_priv = (void *)sta->drv_priv;
26878 struct iwl_rxon_context *ctx = sta_priv->common.ctx;
26879
26880 @@ -33003,7 +32957,7 @@ diff -urNp linux-3.0.9/drivers/net/wireless/iwlwifi/iwl-agn-rs.c linux-3.0.9/dri
26881 IWL_DEBUG_RATE_LIMIT(priv, "get frame ack response, update rate scale window\n");
26882
26883 /* Treat uninitialized rate scaling data same as non-existing. */
26884 -@@ -2918,6 +2920,8 @@ static void rs_fill_link_cmd(struct iwl_
26885 +@@ -2931,6 +2933,8 @@ static void rs_fill_link_cmd(struct iwl_
26886 container_of(lq_sta, struct iwl_station_priv, lq_sta);
26887 struct iwl_link_quality_cmd *lq_cmd = &lq_sta->lq;
26888
26889 @@ -33012,10 +32966,10 @@ diff -urNp linux-3.0.9/drivers/net/wireless/iwlwifi/iwl-agn-rs.c linux-3.0.9/dri
26890 /* Override starting rate (index 0) if needed for debug purposes */
26891 rs_dbgfs_set_mcs(lq_sta, &new_rate, index);
26892
26893 -diff -urNp linux-3.0.9/drivers/net/wireless/iwlwifi/iwl-debugfs.c linux-3.0.9/drivers/net/wireless/iwlwifi/iwl-debugfs.c
26894 ---- linux-3.0.9/drivers/net/wireless/iwlwifi/iwl-debugfs.c 2011-11-11 13:12:24.000000000 -0500
26895 -+++ linux-3.0.9/drivers/net/wireless/iwlwifi/iwl-debugfs.c 2011-11-15 20:02:59.000000000 -0500
26896 -@@ -548,6 +548,8 @@ static ssize_t iwl_dbgfs_status_read(str
26897 +diff -urNp linux-3.1.1/drivers/net/wireless/iwlwifi/iwl-debugfs.c linux-3.1.1/drivers/net/wireless/iwlwifi/iwl-debugfs.c
26898 +--- linux-3.1.1/drivers/net/wireless/iwlwifi/iwl-debugfs.c 2011-11-11 15:19:27.000000000 -0500
26899 ++++ linux-3.1.1/drivers/net/wireless/iwlwifi/iwl-debugfs.c 2011-11-16 18:40:22.000000000 -0500
26900 +@@ -561,6 +561,8 @@ static ssize_t iwl_dbgfs_status_read(str
26901 int pos = 0;
26902 const size_t bufsz = sizeof(buf);
26903
26904 @@ -33024,7 +32978,7 @@ diff -urNp linux-3.0.9/drivers/net/wireless/iwlwifi/iwl-debugfs.c linux-3.0.9/dr
26905 pos += scnprintf(buf + pos, bufsz - pos, "STATUS_HCMD_ACTIVE:\t %d\n",
26906 test_bit(STATUS_HCMD_ACTIVE, &priv->status));
26907 pos += scnprintf(buf + pos, bufsz - pos, "STATUS_INT_ENABLED:\t %d\n",
26908 -@@ -680,6 +682,8 @@ static ssize_t iwl_dbgfs_qos_read(struct
26909 +@@ -693,6 +695,8 @@ static ssize_t iwl_dbgfs_qos_read(struct
26910 char buf[256 * NUM_IWL_RXON_CTX];
26911 const size_t bufsz = sizeof(buf);
26912
26913 @@ -33033,9 +32987,9 @@ diff -urNp linux-3.0.9/drivers/net/wireless/iwlwifi/iwl-debugfs.c linux-3.0.9/dr
26914 for_each_context(priv, ctx) {
26915 pos += scnprintf(buf + pos, bufsz - pos, "context %d:\n",
26916 ctx->ctxid);
26917 -diff -urNp linux-3.0.9/drivers/net/wireless/iwlwifi/iwl-debug.h linux-3.0.9/drivers/net/wireless/iwlwifi/iwl-debug.h
26918 ---- linux-3.0.9/drivers/net/wireless/iwlwifi/iwl-debug.h 2011-11-11 13:12:24.000000000 -0500
26919 -+++ linux-3.0.9/drivers/net/wireless/iwlwifi/iwl-debug.h 2011-11-15 20:02:59.000000000 -0500
26920 +diff -urNp linux-3.1.1/drivers/net/wireless/iwlwifi/iwl-debug.h linux-3.1.1/drivers/net/wireless/iwlwifi/iwl-debug.h
26921 +--- linux-3.1.1/drivers/net/wireless/iwlwifi/iwl-debug.h 2011-11-11 15:19:27.000000000 -0500
26922 ++++ linux-3.1.1/drivers/net/wireless/iwlwifi/iwl-debug.h 2011-11-16 18:39:07.000000000 -0500
26923 @@ -68,8 +68,8 @@ do {
26924 } while (0)
26925
26926 @@ -33047,9 +33001,9 @@ diff -urNp linux-3.0.9/drivers/net/wireless/iwlwifi/iwl-debug.h linux-3.0.9/driv
26927 static inline void iwl_print_hex_dump(struct iwl_priv *priv, int level,
26928 const void *p, u32 len)
26929 {}
26930 -diff -urNp linux-3.0.9/drivers/net/wireless/iwmc3200wifi/debugfs.c linux-3.0.9/drivers/net/wireless/iwmc3200wifi/debugfs.c
26931 ---- linux-3.0.9/drivers/net/wireless/iwmc3200wifi/debugfs.c 2011-11-11 13:12:24.000000000 -0500
26932 -+++ linux-3.0.9/drivers/net/wireless/iwmc3200wifi/debugfs.c 2011-11-15 20:02:59.000000000 -0500
26933 +diff -urNp linux-3.1.1/drivers/net/wireless/iwmc3200wifi/debugfs.c linux-3.1.1/drivers/net/wireless/iwmc3200wifi/debugfs.c
26934 +--- linux-3.1.1/drivers/net/wireless/iwmc3200wifi/debugfs.c 2011-11-11 15:19:27.000000000 -0500
26935 ++++ linux-3.1.1/drivers/net/wireless/iwmc3200wifi/debugfs.c 2011-11-16 18:40:22.000000000 -0500
26936 @@ -327,6 +327,8 @@ static ssize_t iwm_debugfs_fw_err_read(s
26937 int buf_len = 512;
26938 size_t len = 0;
26939 @@ -33059,10 +33013,10 @@ diff -urNp linux-3.0.9/drivers/net/wireless/iwmc3200wifi/debugfs.c linux-3.0.9/d
26940 if (*ppos != 0)
26941 return 0;
26942 if (count < sizeof(buf))
26943 -diff -urNp linux-3.0.9/drivers/net/wireless/mac80211_hwsim.c linux-3.0.9/drivers/net/wireless/mac80211_hwsim.c
26944 ---- linux-3.0.9/drivers/net/wireless/mac80211_hwsim.c 2011-11-11 13:12:24.000000000 -0500
26945 -+++ linux-3.0.9/drivers/net/wireless/mac80211_hwsim.c 2011-11-15 20:02:59.000000000 -0500
26946 -@@ -1260,9 +1260,11 @@ static int __init init_mac80211_hwsim(vo
26947 +diff -urNp linux-3.1.1/drivers/net/wireless/mac80211_hwsim.c linux-3.1.1/drivers/net/wireless/mac80211_hwsim.c
26948 +--- linux-3.1.1/drivers/net/wireless/mac80211_hwsim.c 2011-11-11 15:19:27.000000000 -0500
26949 ++++ linux-3.1.1/drivers/net/wireless/mac80211_hwsim.c 2011-11-16 18:39:07.000000000 -0500
26950 +@@ -1670,9 +1670,11 @@ static int __init init_mac80211_hwsim(vo
26951 return -EINVAL;
26952
26953 if (fake_hw_scan) {
26954 @@ -33077,9 +33031,21 @@ diff -urNp linux-3.0.9/drivers/net/wireless/mac80211_hwsim.c linux-3.0.9/drivers
26955 }
26956
26957 spin_lock_init(&hwsim_radio_lock);
26958 -diff -urNp linux-3.0.9/drivers/net/wireless/rndis_wlan.c linux-3.0.9/drivers/net/wireless/rndis_wlan.c
26959 ---- linux-3.0.9/drivers/net/wireless/rndis_wlan.c 2011-11-11 13:12:24.000000000 -0500
26960 -+++ linux-3.0.9/drivers/net/wireless/rndis_wlan.c 2011-11-15 20:02:59.000000000 -0500
26961 +diff -urNp linux-3.1.1/drivers/net/wireless/mwifiex/main.h linux-3.1.1/drivers/net/wireless/mwifiex/main.h
26962 +--- linux-3.1.1/drivers/net/wireless/mwifiex/main.h 2011-11-11 15:19:27.000000000 -0500
26963 ++++ linux-3.1.1/drivers/net/wireless/mwifiex/main.h 2011-11-16 18:39:07.000000000 -0500
26964 +@@ -560,7 +560,7 @@ struct mwifiex_if_ops {
26965 +
26966 + void (*update_mp_end_port) (struct mwifiex_adapter *, u16);
26967 + void (*cleanup_mpa_buf) (struct mwifiex_adapter *);
26968 +-};
26969 ++} __no_const;
26970 +
26971 + struct mwifiex_adapter {
26972 + struct mwifiex_private *priv[MWIFIEX_MAX_BSS_NUM];
26973 +diff -urNp linux-3.1.1/drivers/net/wireless/rndis_wlan.c linux-3.1.1/drivers/net/wireless/rndis_wlan.c
26974 +--- linux-3.1.1/drivers/net/wireless/rndis_wlan.c 2011-11-11 15:19:27.000000000 -0500
26975 ++++ linux-3.1.1/drivers/net/wireless/rndis_wlan.c 2011-11-16 18:39:07.000000000 -0500
26976 @@ -1277,7 +1277,7 @@ static int set_rts_threshold(struct usbn
26977
26978 netdev_dbg(usbdev->net, "%s(): %i\n", __func__, rts_threshold);
26979 @@ -33089,9 +33055,9 @@ diff -urNp linux-3.0.9/drivers/net/wireless/rndis_wlan.c linux-3.0.9/drivers/net
26980 rts_threshold = 2347;
26981
26982 tmp = cpu_to_le32(rts_threshold);
26983 -diff -urNp linux-3.0.9/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c linux-3.0.9/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c
26984 ---- linux-3.0.9/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c 2011-11-11 13:12:24.000000000 -0500
26985 -+++ linux-3.0.9/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c 2011-11-15 20:02:59.000000000 -0500
26986 +diff -urNp linux-3.1.1/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c linux-3.1.1/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c
26987 +--- linux-3.1.1/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c 2011-11-11 15:19:27.000000000 -0500
26988 ++++ linux-3.1.1/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c 2011-11-16 18:40:22.000000000 -0500
26989 @@ -837,6 +837,8 @@ bool _rtl92c_phy_sw_chnl_step_by_step(st
26990 u8 rfpath;
26991 u8 num_total_rfpath = rtlphy->num_total_rfpath;
26992 @@ -33101,9 +33067,9 @@ diff -urNp linux-3.0.9/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c linux-
26993 precommoncmdcnt = 0;
26994 _rtl92c_phy_set_sw_chnl_cmdarray(precommoncmd, precommoncmdcnt++,
26995 MAX_PRECMD_CNT,
26996 -diff -urNp linux-3.0.9/drivers/net/wireless/wl1251/wl1251.h linux-3.0.9/drivers/net/wireless/wl1251/wl1251.h
26997 ---- linux-3.0.9/drivers/net/wireless/wl1251/wl1251.h 2011-11-11 13:12:24.000000000 -0500
26998 -+++ linux-3.0.9/drivers/net/wireless/wl1251/wl1251.h 2011-11-15 20:02:59.000000000 -0500
26999 +diff -urNp linux-3.1.1/drivers/net/wireless/wl1251/wl1251.h linux-3.1.1/drivers/net/wireless/wl1251/wl1251.h
27000 +--- linux-3.1.1/drivers/net/wireless/wl1251/wl1251.h 2011-11-11 15:19:27.000000000 -0500
27001 ++++ linux-3.1.1/drivers/net/wireless/wl1251/wl1251.h 2011-11-16 18:39:07.000000000 -0500
27002 @@ -266,7 +266,7 @@ struct wl1251_if_operations {
27003 void (*reset)(struct wl1251 *wl);
27004 void (*enable_irq)(struct wl1251 *wl);
27005 @@ -33113,10 +33079,10 @@ diff -urNp linux-3.0.9/drivers/net/wireless/wl1251/wl1251.h linux-3.0.9/drivers/
27006
27007 struct wl1251 {
27008 struct ieee80211_hw *hw;
27009 -diff -urNp linux-3.0.9/drivers/net/wireless/wl12xx/spi.c linux-3.0.9/drivers/net/wireless/wl12xx/spi.c
27010 ---- linux-3.0.9/drivers/net/wireless/wl12xx/spi.c 2011-11-11 13:12:24.000000000 -0500
27011 -+++ linux-3.0.9/drivers/net/wireless/wl12xx/spi.c 2011-11-15 20:02:59.000000000 -0500
27012 -@@ -280,6 +280,8 @@ static void wl1271_spi_raw_write(struct
27013 +diff -urNp linux-3.1.1/drivers/net/wireless/wl12xx/spi.c linux-3.1.1/drivers/net/wireless/wl12xx/spi.c
27014 +--- linux-3.1.1/drivers/net/wireless/wl12xx/spi.c 2011-11-11 15:19:27.000000000 -0500
27015 ++++ linux-3.1.1/drivers/net/wireless/wl12xx/spi.c 2011-11-16 18:40:22.000000000 -0500
27016 +@@ -281,6 +281,8 @@ static void wl1271_spi_raw_write(struct
27017 u32 chunk_len;
27018 int i;
27019
27020 @@ -33125,9 +33091,9 @@ diff -urNp linux-3.0.9/drivers/net/wireless/wl12xx/spi.c linux-3.0.9/drivers/net
27021 WARN_ON(len > WL1271_AGGR_BUFFER_SIZE);
27022
27023 spi_message_init(&m);
27024 -diff -urNp linux-3.0.9/drivers/oprofile/buffer_sync.c linux-3.0.9/drivers/oprofile/buffer_sync.c
27025 ---- linux-3.0.9/drivers/oprofile/buffer_sync.c 2011-11-11 13:12:24.000000000 -0500
27026 -+++ linux-3.0.9/drivers/oprofile/buffer_sync.c 2011-11-15 20:02:59.000000000 -0500
27027 +diff -urNp linux-3.1.1/drivers/oprofile/buffer_sync.c linux-3.1.1/drivers/oprofile/buffer_sync.c
27028 +--- linux-3.1.1/drivers/oprofile/buffer_sync.c 2011-11-11 15:19:27.000000000 -0500
27029 ++++ linux-3.1.1/drivers/oprofile/buffer_sync.c 2011-11-16 18:39:07.000000000 -0500
27030 @@ -343,7 +343,7 @@ static void add_data(struct op_entry *en
27031 if (cookie == NO_COOKIE)
27032 offset = pc;
27033 @@ -33163,9 +33129,9 @@ diff -urNp linux-3.0.9/drivers/oprofile/buffer_sync.c linux-3.0.9/drivers/oprofi
27034 }
27035 }
27036 release_mm(mm);
27037 -diff -urNp linux-3.0.9/drivers/oprofile/event_buffer.c linux-3.0.9/drivers/oprofile/event_buffer.c
27038 ---- linux-3.0.9/drivers/oprofile/event_buffer.c 2011-11-11 13:12:24.000000000 -0500
27039 -+++ linux-3.0.9/drivers/oprofile/event_buffer.c 2011-11-15 20:02:59.000000000 -0500
27040 +diff -urNp linux-3.1.1/drivers/oprofile/event_buffer.c linux-3.1.1/drivers/oprofile/event_buffer.c
27041 +--- linux-3.1.1/drivers/oprofile/event_buffer.c 2011-11-11 15:19:27.000000000 -0500
27042 ++++ linux-3.1.1/drivers/oprofile/event_buffer.c 2011-11-16 18:39:07.000000000 -0500
27043 @@ -53,7 +53,7 @@ void add_event_entry(unsigned long value
27044 }
27045
27046 @@ -33175,9 +33141,9 @@ diff -urNp linux-3.0.9/drivers/oprofile/event_buffer.c linux-3.0.9/drivers/oprof
27047 return;
27048 }
27049
27050 -diff -urNp linux-3.0.9/drivers/oprofile/oprof.c linux-3.0.9/drivers/oprofile/oprof.c
27051 ---- linux-3.0.9/drivers/oprofile/oprof.c 2011-11-11 13:12:24.000000000 -0500
27052 -+++ linux-3.0.9/drivers/oprofile/oprof.c 2011-11-15 20:02:59.000000000 -0500
27053 +diff -urNp linux-3.1.1/drivers/oprofile/oprof.c linux-3.1.1/drivers/oprofile/oprof.c
27054 +--- linux-3.1.1/drivers/oprofile/oprof.c 2011-11-11 15:19:27.000000000 -0500
27055 ++++ linux-3.1.1/drivers/oprofile/oprof.c 2011-11-16 18:39:07.000000000 -0500
27056 @@ -110,7 +110,7 @@ static void switch_worker(struct work_st
27057 if (oprofile_ops.switch_events())
27058 return;
27059 @@ -33187,9 +33153,9 @@ diff -urNp linux-3.0.9/drivers/oprofile/oprof.c linux-3.0.9/drivers/oprofile/opr
27060 start_switch_worker();
27061 }
27062
27063 -diff -urNp linux-3.0.9/drivers/oprofile/oprofilefs.c linux-3.0.9/drivers/oprofile/oprofilefs.c
27064 ---- linux-3.0.9/drivers/oprofile/oprofilefs.c 2011-11-11 13:12:24.000000000 -0500
27065 -+++ linux-3.0.9/drivers/oprofile/oprofilefs.c 2011-11-15 20:02:59.000000000 -0500
27066 +diff -urNp linux-3.1.1/drivers/oprofile/oprofilefs.c linux-3.1.1/drivers/oprofile/oprofilefs.c
27067 +--- linux-3.1.1/drivers/oprofile/oprofilefs.c 2011-11-11 15:19:27.000000000 -0500
27068 ++++ linux-3.1.1/drivers/oprofile/oprofilefs.c 2011-11-16 18:39:07.000000000 -0500
27069 @@ -186,7 +186,7 @@ static const struct file_operations atom
27070
27071
27072 @@ -33199,9 +33165,9 @@ diff -urNp linux-3.0.9/drivers/oprofile/oprofilefs.c linux-3.0.9/drivers/oprofil
27073 {
27074 return __oprofilefs_create_file(sb, root, name,
27075 &atomic_ro_fops, 0444, val);
27076 -diff -urNp linux-3.0.9/drivers/oprofile/oprofile_stats.c linux-3.0.9/drivers/oprofile/oprofile_stats.c
27077 ---- linux-3.0.9/drivers/oprofile/oprofile_stats.c 2011-11-11 13:12:24.000000000 -0500
27078 -+++ linux-3.0.9/drivers/oprofile/oprofile_stats.c 2011-11-15 20:02:59.000000000 -0500
27079 +diff -urNp linux-3.1.1/drivers/oprofile/oprofile_stats.c linux-3.1.1/drivers/oprofile/oprofile_stats.c
27080 +--- linux-3.1.1/drivers/oprofile/oprofile_stats.c 2011-11-11 15:19:27.000000000 -0500
27081 ++++ linux-3.1.1/drivers/oprofile/oprofile_stats.c 2011-11-16 18:39:07.000000000 -0500
27082 @@ -30,11 +30,11 @@ void oprofile_reset_stats(void)
27083 cpu_buf->sample_invalid_eip = 0;
27084 }
27085 @@ -33219,11 +33185,11 @@ diff -urNp linux-3.0.9/drivers/oprofile/oprofile_stats.c linux-3.0.9/drivers/opr
27086 }
27087
27088
27089 -diff -urNp linux-3.0.9/drivers/oprofile/oprofile_stats.h linux-3.0.9/drivers/oprofile/oprofile_stats.h
27090 ---- linux-3.0.9/drivers/oprofile/oprofile_stats.h 2011-11-11 13:12:24.000000000 -0500
27091 -+++ linux-3.0.9/drivers/oprofile/oprofile_stats.h 2011-11-15 20:02:59.000000000 -0500
27092 +diff -urNp linux-3.1.1/drivers/oprofile/oprofile_stats.h linux-3.1.1/drivers/oprofile/oprofile_stats.h
27093 +--- linux-3.1.1/drivers/oprofile/oprofile_stats.h 2011-11-11 15:19:27.000000000 -0500
27094 ++++ linux-3.1.1/drivers/oprofile/oprofile_stats.h 2011-11-16 18:39:07.000000000 -0500
27095 @@ -13,11 +13,11 @@
27096 - #include <asm/atomic.h>
27097 + #include <linux/atomic.h>
27098
27099 struct oprofile_stat_struct {
27100 - atomic_t sample_lost_no_mm;
27101 @@ -33239,9 +33205,9 @@ diff -urNp linux-3.0.9/drivers/oprofile/oprofile_stats.h linux-3.0.9/drivers/opr
27102 };
27103
27104 extern struct oprofile_stat_struct oprofile_stats;
27105 -diff -urNp linux-3.0.9/drivers/parport/procfs.c linux-3.0.9/drivers/parport/procfs.c
27106 ---- linux-3.0.9/drivers/parport/procfs.c 2011-11-11 13:12:24.000000000 -0500
27107 -+++ linux-3.0.9/drivers/parport/procfs.c 2011-11-15 20:02:59.000000000 -0500
27108 +diff -urNp linux-3.1.1/drivers/parport/procfs.c linux-3.1.1/drivers/parport/procfs.c
27109 +--- linux-3.1.1/drivers/parport/procfs.c 2011-11-11 15:19:27.000000000 -0500
27110 ++++ linux-3.1.1/drivers/parport/procfs.c 2011-11-16 18:39:07.000000000 -0500
27111 @@ -64,7 +64,7 @@ static int do_active_device(ctl_table *t
27112
27113 *ppos += len;
27114 @@ -33260,9 +33226,9 @@ diff -urNp linux-3.0.9/drivers/parport/procfs.c linux-3.0.9/drivers/parport/proc
27115 }
27116 #endif /* IEEE1284.3 support. */
27117
27118 -diff -urNp linux-3.0.9/drivers/pci/hotplug/cpci_hotplug.h linux-3.0.9/drivers/pci/hotplug/cpci_hotplug.h
27119 ---- linux-3.0.9/drivers/pci/hotplug/cpci_hotplug.h 2011-11-11 13:12:24.000000000 -0500
27120 -+++ linux-3.0.9/drivers/pci/hotplug/cpci_hotplug.h 2011-11-15 20:02:59.000000000 -0500
27121 +diff -urNp linux-3.1.1/drivers/pci/hotplug/cpci_hotplug.h linux-3.1.1/drivers/pci/hotplug/cpci_hotplug.h
27122 +--- linux-3.1.1/drivers/pci/hotplug/cpci_hotplug.h 2011-11-11 15:19:27.000000000 -0500
27123 ++++ linux-3.1.1/drivers/pci/hotplug/cpci_hotplug.h 2011-11-16 18:39:07.000000000 -0500
27124 @@ -59,7 +59,7 @@ struct cpci_hp_controller_ops {
27125 int (*hardware_test) (struct slot* slot, u32 value);
27126 u8 (*get_power) (struct slot* slot);
27127 @@ -33272,9 +33238,9 @@ diff -urNp linux-3.0.9/drivers/pci/hotplug/cpci_hotplug.h linux-3.0.9/drivers/pc
27128
27129 struct cpci_hp_controller {
27130 unsigned int irq;
27131 -diff -urNp linux-3.0.9/drivers/pci/hotplug/cpqphp_nvram.c linux-3.0.9/drivers/pci/hotplug/cpqphp_nvram.c
27132 ---- linux-3.0.9/drivers/pci/hotplug/cpqphp_nvram.c 2011-11-11 13:12:24.000000000 -0500
27133 -+++ linux-3.0.9/drivers/pci/hotplug/cpqphp_nvram.c 2011-11-15 20:02:59.000000000 -0500
27134 +diff -urNp linux-3.1.1/drivers/pci/hotplug/cpqphp_nvram.c linux-3.1.1/drivers/pci/hotplug/cpqphp_nvram.c
27135 +--- linux-3.1.1/drivers/pci/hotplug/cpqphp_nvram.c 2011-11-11 15:19:27.000000000 -0500
27136 ++++ linux-3.1.1/drivers/pci/hotplug/cpqphp_nvram.c 2011-11-16 18:39:07.000000000 -0500
27137 @@ -428,9 +428,13 @@ static u32 store_HRT (void __iomem *rom_
27138
27139 void compaq_nvram_init (void __iomem *rom_start)
27140 @@ -33289,9 +33255,9 @@ diff -urNp linux-3.0.9/drivers/pci/hotplug/cpqphp_nvram.c linux-3.0.9/drivers/pc
27141 dbg("int15 entry = %p\n", compaq_int15_entry_point);
27142
27143 /* initialize our int15 lock */
27144 -diff -urNp linux-3.0.9/drivers/pci/pcie/aspm.c linux-3.0.9/drivers/pci/pcie/aspm.c
27145 ---- linux-3.0.9/drivers/pci/pcie/aspm.c 2011-11-11 13:12:24.000000000 -0500
27146 -+++ linux-3.0.9/drivers/pci/pcie/aspm.c 2011-11-15 20:02:59.000000000 -0500
27147 +diff -urNp linux-3.1.1/drivers/pci/pcie/aspm.c linux-3.1.1/drivers/pci/pcie/aspm.c
27148 +--- linux-3.1.1/drivers/pci/pcie/aspm.c 2011-11-11 15:19:27.000000000 -0500
27149 ++++ linux-3.1.1/drivers/pci/pcie/aspm.c 2011-11-16 18:39:07.000000000 -0500
27150 @@ -27,9 +27,9 @@
27151 #define MODULE_PARAM_PREFIX "pcie_aspm."
27152
27153 @@ -33305,10 +33271,10 @@ diff -urNp linux-3.0.9/drivers/pci/pcie/aspm.c linux-3.0.9/drivers/pci/pcie/aspm
27154 #define ASPM_STATE_L0S (ASPM_STATE_L0S_UP | ASPM_STATE_L0S_DW)
27155 #define ASPM_STATE_ALL (ASPM_STATE_L0S | ASPM_STATE_L1)
27156
27157 -diff -urNp linux-3.0.9/drivers/pci/probe.c linux-3.0.9/drivers/pci/probe.c
27158 ---- linux-3.0.9/drivers/pci/probe.c 2011-11-11 13:12:24.000000000 -0500
27159 -+++ linux-3.0.9/drivers/pci/probe.c 2011-11-15 20:02:59.000000000 -0500
27160 -@@ -129,7 +129,7 @@ int __pci_read_base(struct pci_dev *dev,
27161 +diff -urNp linux-3.1.1/drivers/pci/probe.c linux-3.1.1/drivers/pci/probe.c
27162 +--- linux-3.1.1/drivers/pci/probe.c 2011-11-11 15:19:27.000000000 -0500
27163 ++++ linux-3.1.1/drivers/pci/probe.c 2011-11-16 18:39:07.000000000 -0500
27164 +@@ -136,7 +136,7 @@ int __pci_read_base(struct pci_dev *dev,
27165 u32 l, sz, mask;
27166 u16 orig_cmd;
27167
27168 @@ -33317,9 +33283,9 @@ diff -urNp linux-3.0.9/drivers/pci/probe.c linux-3.0.9/drivers/pci/probe.c
27169
27170 if (!dev->mmio_always_on) {
27171 pci_read_config_word(dev, PCI_COMMAND, &orig_cmd);
27172 -diff -urNp linux-3.0.9/drivers/pci/proc.c linux-3.0.9/drivers/pci/proc.c
27173 ---- linux-3.0.9/drivers/pci/proc.c 2011-11-11 13:12:24.000000000 -0500
27174 -+++ linux-3.0.9/drivers/pci/proc.c 2011-11-15 20:02:59.000000000 -0500
27175 +diff -urNp linux-3.1.1/drivers/pci/proc.c linux-3.1.1/drivers/pci/proc.c
27176 +--- linux-3.1.1/drivers/pci/proc.c 2011-11-11 15:19:27.000000000 -0500
27177 ++++ linux-3.1.1/drivers/pci/proc.c 2011-11-16 18:40:22.000000000 -0500
27178 @@ -476,7 +476,16 @@ static const struct file_operations proc
27179 static int __init pci_proc_init(void)
27180 {
27181 @@ -33337,9 +33303,9 @@ diff -urNp linux-3.0.9/drivers/pci/proc.c linux-3.0.9/drivers/pci/proc.c
27182 proc_create("devices", 0, proc_bus_pci_dir,
27183 &proc_bus_pci_dev_operations);
27184 proc_initialized = 1;
27185 -diff -urNp linux-3.0.9/drivers/pci/xen-pcifront.c linux-3.0.9/drivers/pci/xen-pcifront.c
27186 ---- linux-3.0.9/drivers/pci/xen-pcifront.c 2011-11-11 13:12:24.000000000 -0500
27187 -+++ linux-3.0.9/drivers/pci/xen-pcifront.c 2011-11-15 20:02:59.000000000 -0500
27188 +diff -urNp linux-3.1.1/drivers/pci/xen-pcifront.c linux-3.1.1/drivers/pci/xen-pcifront.c
27189 +--- linux-3.1.1/drivers/pci/xen-pcifront.c 2011-11-11 15:19:27.000000000 -0500
27190 ++++ linux-3.1.1/drivers/pci/xen-pcifront.c 2011-11-16 18:40:22.000000000 -0500
27191 @@ -187,6 +187,8 @@ static int pcifront_bus_read(struct pci_
27192 struct pcifront_sd *sd = bus->sysdata;
27193 struct pcifront_device *pdev = pcifront_get_pdev(sd);
27194 @@ -33385,9 +33351,9 @@ diff -urNp linux-3.0.9/drivers/pci/xen-pcifront.c linux-3.0.9/drivers/pci/xen-pc
27195 err = do_pci_op(pdev, &op);
27196 if (likely(!err)) {
27197 vector[0] = op.value;
27198 -diff -urNp linux-3.0.9/drivers/platform/x86/thinkpad_acpi.c linux-3.0.9/drivers/platform/x86/thinkpad_acpi.c
27199 ---- linux-3.0.9/drivers/platform/x86/thinkpad_acpi.c 2011-11-11 13:12:24.000000000 -0500
27200 -+++ linux-3.0.9/drivers/platform/x86/thinkpad_acpi.c 2011-11-15 20:02:59.000000000 -0500
27201 +diff -urNp linux-3.1.1/drivers/platform/x86/thinkpad_acpi.c linux-3.1.1/drivers/platform/x86/thinkpad_acpi.c
27202 +--- linux-3.1.1/drivers/platform/x86/thinkpad_acpi.c 2011-11-11 15:19:27.000000000 -0500
27203 ++++ linux-3.1.1/drivers/platform/x86/thinkpad_acpi.c 2011-11-16 18:39:07.000000000 -0500
27204 @@ -2094,7 +2094,7 @@ static int hotkey_mask_get(void)
27205 return 0;
27206 }
27207 @@ -33397,9 +33363,9 @@ diff -urNp linux-3.0.9/drivers/platform/x86/thinkpad_acpi.c linux-3.0.9/drivers/
27208 {
27209 /* log only what the user can fix... */
27210 const u32 wantedmask = hotkey_driver_mask &
27211 -diff -urNp linux-3.0.9/drivers/pnp/pnpbios/bioscalls.c linux-3.0.9/drivers/pnp/pnpbios/bioscalls.c
27212 ---- linux-3.0.9/drivers/pnp/pnpbios/bioscalls.c 2011-11-11 13:12:24.000000000 -0500
27213 -+++ linux-3.0.9/drivers/pnp/pnpbios/bioscalls.c 2011-11-15 20:02:59.000000000 -0500
27214 +diff -urNp linux-3.1.1/drivers/pnp/pnpbios/bioscalls.c linux-3.1.1/drivers/pnp/pnpbios/bioscalls.c
27215 +--- linux-3.1.1/drivers/pnp/pnpbios/bioscalls.c 2011-11-11 15:19:27.000000000 -0500
27216 ++++ linux-3.1.1/drivers/pnp/pnpbios/bioscalls.c 2011-11-16 18:39:07.000000000 -0500
27217 @@ -59,7 +59,7 @@ do { \
27218 set_desc_limit(&gdt[(selname) >> 3], (size) - 1); \
27219 } while(0)
27220 @@ -33456,9 +33422,9 @@ diff -urNp linux-3.0.9/drivers/pnp/pnpbios/bioscalls.c linux-3.0.9/drivers/pnp/p
27221 +
27222 + pax_close_kernel();
27223 }
27224 -diff -urNp linux-3.0.9/drivers/pnp/resource.c linux-3.0.9/drivers/pnp/resource.c
27225 ---- linux-3.0.9/drivers/pnp/resource.c 2011-11-11 13:12:24.000000000 -0500
27226 -+++ linux-3.0.9/drivers/pnp/resource.c 2011-11-15 20:02:59.000000000 -0500
27227 +diff -urNp linux-3.1.1/drivers/pnp/resource.c linux-3.1.1/drivers/pnp/resource.c
27228 +--- linux-3.1.1/drivers/pnp/resource.c 2011-11-11 15:19:27.000000000 -0500
27229 ++++ linux-3.1.1/drivers/pnp/resource.c 2011-11-16 18:39:07.000000000 -0500
27230 @@ -360,7 +360,7 @@ int pnp_check_irq(struct pnp_dev *dev, s
27231 return 1;
27232
27233 @@ -33477,9 +33443,9 @@ diff -urNp linux-3.0.9/drivers/pnp/resource.c linux-3.0.9/drivers/pnp/resource.c
27234 return 0;
27235
27236 /* check if the resource is reserved */
27237 -diff -urNp linux-3.0.9/drivers/power/bq27x00_battery.c linux-3.0.9/drivers/power/bq27x00_battery.c
27238 ---- linux-3.0.9/drivers/power/bq27x00_battery.c 2011-11-11 13:12:24.000000000 -0500
27239 -+++ linux-3.0.9/drivers/power/bq27x00_battery.c 2011-11-15 20:02:59.000000000 -0500
27240 +diff -urNp linux-3.1.1/drivers/power/bq27x00_battery.c linux-3.1.1/drivers/power/bq27x00_battery.c
27241 +--- linux-3.1.1/drivers/power/bq27x00_battery.c 2011-11-11 15:19:27.000000000 -0500
27242 ++++ linux-3.1.1/drivers/power/bq27x00_battery.c 2011-11-16 18:39:07.000000000 -0500
27243 @@ -67,7 +67,7 @@
27244 struct bq27x00_device_info;
27245 struct bq27x00_access_methods {
27246 @@ -33489,9 +33455,9 @@ diff -urNp linux-3.0.9/drivers/power/bq27x00_battery.c linux-3.0.9/drivers/power
27247
27248 enum bq27x00_chip { BQ27000, BQ27500 };
27249
27250 -diff -urNp linux-3.0.9/drivers/regulator/max8660.c linux-3.0.9/drivers/regulator/max8660.c
27251 ---- linux-3.0.9/drivers/regulator/max8660.c 2011-11-11 13:12:24.000000000 -0500
27252 -+++ linux-3.0.9/drivers/regulator/max8660.c 2011-11-15 20:02:59.000000000 -0500
27253 +diff -urNp linux-3.1.1/drivers/regulator/max8660.c linux-3.1.1/drivers/regulator/max8660.c
27254 +--- linux-3.1.1/drivers/regulator/max8660.c 2011-11-11 15:19:27.000000000 -0500
27255 ++++ linux-3.1.1/drivers/regulator/max8660.c 2011-11-16 18:39:07.000000000 -0500
27256 @@ -383,8 +383,10 @@ static int __devinit max8660_probe(struc
27257 max8660->shadow_regs[MAX8660_OVER1] = 5;
27258 } else {
27259 @@ -33505,9 +33471,9 @@ diff -urNp linux-3.0.9/drivers/regulator/max8660.c linux-3.0.9/drivers/regulator
27260 }
27261
27262 /*
27263 -diff -urNp linux-3.0.9/drivers/regulator/mc13892-regulator.c linux-3.0.9/drivers/regulator/mc13892-regulator.c
27264 ---- linux-3.0.9/drivers/regulator/mc13892-regulator.c 2011-11-11 13:12:24.000000000 -0500
27265 -+++ linux-3.0.9/drivers/regulator/mc13892-regulator.c 2011-11-15 20:02:59.000000000 -0500
27266 +diff -urNp linux-3.1.1/drivers/regulator/mc13892-regulator.c linux-3.1.1/drivers/regulator/mc13892-regulator.c
27267 +--- linux-3.1.1/drivers/regulator/mc13892-regulator.c 2011-11-11 15:19:27.000000000 -0500
27268 ++++ linux-3.1.1/drivers/regulator/mc13892-regulator.c 2011-11-16 18:39:07.000000000 -0500
27269 @@ -564,10 +564,12 @@ static int __devinit mc13892_regulator_p
27270 }
27271 mc13xxx_unlock(mc13892);
27272 @@ -33523,9 +33489,9 @@ diff -urNp linux-3.0.9/drivers/regulator/mc13892-regulator.c linux-3.0.9/drivers
27273 for (i = 0; i < pdata->num_regulators; i++) {
27274 init_data = &pdata->regulators[i];
27275 priv->regulators[i] = regulator_register(
27276 -diff -urNp linux-3.0.9/drivers/rtc/rtc-dev.c linux-3.0.9/drivers/rtc/rtc-dev.c
27277 ---- linux-3.0.9/drivers/rtc/rtc-dev.c 2011-11-11 13:12:24.000000000 -0500
27278 -+++ linux-3.0.9/drivers/rtc/rtc-dev.c 2011-11-15 20:02:59.000000000 -0500
27279 +diff -urNp linux-3.1.1/drivers/rtc/rtc-dev.c linux-3.1.1/drivers/rtc/rtc-dev.c
27280 +--- linux-3.1.1/drivers/rtc/rtc-dev.c 2011-11-11 15:19:27.000000000 -0500
27281 ++++ linux-3.1.1/drivers/rtc/rtc-dev.c 2011-11-16 18:40:22.000000000 -0500
27282 @@ -14,6 +14,7 @@
27283 #include <linux/module.h>
27284 #include <linux/rtc.h>
27285 @@ -33543,9 +33509,9 @@ diff -urNp linux-3.0.9/drivers/rtc/rtc-dev.c linux-3.0.9/drivers/rtc/rtc-dev.c
27286 return rtc_set_time(rtc, &tm);
27287
27288 case RTC_PIE_ON:
27289 -diff -urNp linux-3.0.9/drivers/scsi/aacraid/aacraid.h linux-3.0.9/drivers/scsi/aacraid/aacraid.h
27290 ---- linux-3.0.9/drivers/scsi/aacraid/aacraid.h 2011-11-11 13:12:24.000000000 -0500
27291 -+++ linux-3.0.9/drivers/scsi/aacraid/aacraid.h 2011-11-15 20:02:59.000000000 -0500
27292 +diff -urNp linux-3.1.1/drivers/scsi/aacraid/aacraid.h linux-3.1.1/drivers/scsi/aacraid/aacraid.h
27293 +--- linux-3.1.1/drivers/scsi/aacraid/aacraid.h 2011-11-11 15:19:27.000000000 -0500
27294 ++++ linux-3.1.1/drivers/scsi/aacraid/aacraid.h 2011-11-16 18:39:07.000000000 -0500
27295 @@ -492,7 +492,7 @@ struct adapter_ops
27296 int (*adapter_scsi)(struct fib * fib, struct scsi_cmnd * cmd);
27297 /* Administrative operations */
27298 @@ -33555,9 +33521,9 @@ diff -urNp linux-3.0.9/drivers/scsi/aacraid/aacraid.h linux-3.0.9/drivers/scsi/a
27299
27300 /*
27301 * Define which interrupt handler needs to be installed
27302 -diff -urNp linux-3.0.9/drivers/scsi/aacraid/commctrl.c linux-3.0.9/drivers/scsi/aacraid/commctrl.c
27303 ---- linux-3.0.9/drivers/scsi/aacraid/commctrl.c 2011-11-11 13:12:24.000000000 -0500
27304 -+++ linux-3.0.9/drivers/scsi/aacraid/commctrl.c 2011-11-15 20:02:59.000000000 -0500
27305 +diff -urNp linux-3.1.1/drivers/scsi/aacraid/commctrl.c linux-3.1.1/drivers/scsi/aacraid/commctrl.c
27306 +--- linux-3.1.1/drivers/scsi/aacraid/commctrl.c 2011-11-11 15:19:27.000000000 -0500
27307 ++++ linux-3.1.1/drivers/scsi/aacraid/commctrl.c 2011-11-16 18:40:22.000000000 -0500
27308 @@ -482,6 +482,7 @@ static int aac_send_raw_srb(struct aac_d
27309 u32 actual_fibsize64, actual_fibsize = 0;
27310 int i;
27311 @@ -33566,9 +33532,9 @@ diff -urNp linux-3.0.9/drivers/scsi/aacraid/commctrl.c linux-3.0.9/drivers/scsi/
27312
27313 if (dev->in_reset) {
27314 dprintk((KERN_DEBUG"aacraid: send raw srb -EBUSY\n"));
27315 -diff -urNp linux-3.0.9/drivers/scsi/aacraid/linit.c linux-3.0.9/drivers/scsi/aacraid/linit.c
27316 ---- linux-3.0.9/drivers/scsi/aacraid/linit.c 2011-11-11 13:12:24.000000000 -0500
27317 -+++ linux-3.0.9/drivers/scsi/aacraid/linit.c 2011-11-15 20:02:59.000000000 -0500
27318 +diff -urNp linux-3.1.1/drivers/scsi/aacraid/linit.c linux-3.1.1/drivers/scsi/aacraid/linit.c
27319 +--- linux-3.1.1/drivers/scsi/aacraid/linit.c 2011-11-11 15:19:27.000000000 -0500
27320 ++++ linux-3.1.1/drivers/scsi/aacraid/linit.c 2011-11-16 18:39:07.000000000 -0500
27321 @@ -92,7 +92,7 @@ static DECLARE_PCI_DEVICE_TABLE(aac_pci_
27322 #elif defined(__devinitconst)
27323 static const struct pci_device_id aac_pci_tbl[] __devinitconst = {
27324 @@ -33578,9 +33544,9 @@ diff -urNp linux-3.0.9/drivers/scsi/aacraid/linit.c linux-3.0.9/drivers/scsi/aac
27325 #endif
27326 { 0x1028, 0x0001, 0x1028, 0x0001, 0, 0, 0 }, /* PERC 2/Si (Iguana/PERC2Si) */
27327 { 0x1028, 0x0002, 0x1028, 0x0002, 0, 0, 1 }, /* PERC 3/Di (Opal/PERC3Di) */
27328 -diff -urNp linux-3.0.9/drivers/scsi/aic94xx/aic94xx_init.c linux-3.0.9/drivers/scsi/aic94xx/aic94xx_init.c
27329 ---- linux-3.0.9/drivers/scsi/aic94xx/aic94xx_init.c 2011-11-11 13:12:24.000000000 -0500
27330 -+++ linux-3.0.9/drivers/scsi/aic94xx/aic94xx_init.c 2011-11-15 20:02:59.000000000 -0500
27331 +diff -urNp linux-3.1.1/drivers/scsi/aic94xx/aic94xx_init.c linux-3.1.1/drivers/scsi/aic94xx/aic94xx_init.c
27332 +--- linux-3.1.1/drivers/scsi/aic94xx/aic94xx_init.c 2011-11-11 15:19:27.000000000 -0500
27333 ++++ linux-3.1.1/drivers/scsi/aic94xx/aic94xx_init.c 2011-11-16 18:39:07.000000000 -0500
27334 @@ -1012,7 +1012,7 @@ static struct sas_domain_function_templa
27335 .lldd_control_phy = asd_control_phy,
27336 };
27337 @@ -33590,22 +33556,54 @@ diff -urNp linux-3.0.9/drivers/scsi/aic94xx/aic94xx_init.c linux-3.0.9/drivers/s
27338 {PCI_DEVICE(PCI_VENDOR_ID_ADAPTEC2, 0x410),0, 0, 1},
27339 {PCI_DEVICE(PCI_VENDOR_ID_ADAPTEC2, 0x412),0, 0, 1},
27340 {PCI_DEVICE(PCI_VENDOR_ID_ADAPTEC2, 0x416),0, 0, 1},
27341 -diff -urNp linux-3.0.9/drivers/scsi/bfa/bfad.c linux-3.0.9/drivers/scsi/bfa/bfad.c
27342 ---- linux-3.0.9/drivers/scsi/bfa/bfad.c 2011-11-11 13:12:24.000000000 -0500
27343 -+++ linux-3.0.9/drivers/scsi/bfa/bfad.c 2011-11-15 20:02:59.000000000 -0500
27344 -@@ -1032,6 +1032,8 @@ bfad_start_ops(struct bfad_s *bfad) {
27345 +diff -urNp linux-3.1.1/drivers/scsi/bfa/bfad.c linux-3.1.1/drivers/scsi/bfa/bfad.c
27346 +--- linux-3.1.1/drivers/scsi/bfa/bfad.c 2011-11-11 15:19:27.000000000 -0500
27347 ++++ linux-3.1.1/drivers/scsi/bfa/bfad.c 2011-11-16 19:01:15.000000000 -0500
27348 +@@ -1019,6 +1019,8 @@ bfad_start_ops(struct bfad_s *bfad) {
27349 struct bfad_vport_s *vport, *vport_new;
27350 struct bfa_fcs_driver_info_s driver_info;
27351
27352 + pax_track_stack();
27353 +
27354 - /* Fill the driver_info info to fcs*/
27355 - memset(&driver_info, 0, sizeof(driver_info));
27356 - strncpy(driver_info.version, BFAD_DRIVER_VERSION,
27357 -diff -urNp linux-3.0.9/drivers/scsi/bfa/bfa_fcs_lport.c linux-3.0.9/drivers/scsi/bfa/bfa_fcs_lport.c
27358 ---- linux-3.0.9/drivers/scsi/bfa/bfa_fcs_lport.c 2011-11-11 13:12:24.000000000 -0500
27359 -+++ linux-3.0.9/drivers/scsi/bfa/bfa_fcs_lport.c 2011-11-15 20:02:59.000000000 -0500
27360 -@@ -1559,6 +1559,8 @@ bfa_fcs_lport_fdmi_build_rhba_pyld(struc
27361 + /* Limit min/max. xfer size to [64k-32MB] */
27362 + if (max_xfer_size < BFAD_MIN_SECTORS >> 1)
27363 + max_xfer_size = BFAD_MIN_SECTORS >> 1;
27364 +diff -urNp linux-3.1.1/drivers/scsi/bfa/bfa_fcpim.c linux-3.1.1/drivers/scsi/bfa/bfa_fcpim.c
27365 +--- linux-3.1.1/drivers/scsi/bfa/bfa_fcpim.c 2011-11-11 15:19:27.000000000 -0500
27366 ++++ linux-3.1.1/drivers/scsi/bfa/bfa_fcpim.c 2011-11-16 18:39:07.000000000 -0500
27367 +@@ -4179,7 +4179,7 @@ bfa_itn_create(struct bfa_s *bfa, struct
27368 + void (*isr)(struct bfa_s *bfa, struct bfi_msg_s *m))
27369 + {
27370 + struct bfa_fcp_mod_s *fcp = BFA_FCP_MOD(bfa);
27371 +- struct bfa_itn_s *itn;
27372 ++ bfa_itn_s_no_const *itn;
27373 +
27374 + itn = BFA_ITN_FROM_TAG(fcp, rport->rport_tag);
27375 + itn->isr = isr;
27376 +diff -urNp linux-3.1.1/drivers/scsi/bfa/bfa_fcpim.h linux-3.1.1/drivers/scsi/bfa/bfa_fcpim.h
27377 +--- linux-3.1.1/drivers/scsi/bfa/bfa_fcpim.h 2011-11-11 15:19:27.000000000 -0500
27378 ++++ linux-3.1.1/drivers/scsi/bfa/bfa_fcpim.h 2011-11-16 18:39:07.000000000 -0500
27379 +@@ -37,6 +37,7 @@ struct bfa_iotag_s {
27380 + struct bfa_itn_s {
27381 + bfa_isr_func_t isr;
27382 + };
27383 ++typedef struct bfa_itn_s __no_const bfa_itn_s_no_const;
27384 +
27385 + void bfa_itn_create(struct bfa_s *bfa, struct bfa_rport_s *rport,
27386 + void (*isr)(struct bfa_s *bfa, struct bfi_msg_s *m));
27387 +@@ -149,7 +150,7 @@ struct bfa_fcp_mod_s {
27388 + struct list_head iotag_tio_free_q; /* free IO resources */
27389 + struct list_head iotag_unused_q; /* unused IO resources*/
27390 + struct bfa_iotag_s *iotag_arr;
27391 +- struct bfa_itn_s *itn_arr;
27392 ++ bfa_itn_s_no_const *itn_arr;
27393 + int num_ioim_reqs;
27394 + int num_fwtio_reqs;
27395 + int num_itns;
27396 +diff -urNp linux-3.1.1/drivers/scsi/bfa/bfa_fcs_lport.c linux-3.1.1/drivers/scsi/bfa/bfa_fcs_lport.c
27397 +--- linux-3.1.1/drivers/scsi/bfa/bfa_fcs_lport.c 2011-11-11 15:19:27.000000000 -0500
27398 ++++ linux-3.1.1/drivers/scsi/bfa/bfa_fcs_lport.c 2011-11-16 18:40:22.000000000 -0500
27399 +@@ -1700,6 +1700,8 @@ bfa_fcs_lport_fdmi_build_rhba_pyld(struc
27400 u16 len, count;
27401 u16 templen;
27402
27403 @@ -33614,7 +33612,7 @@ diff -urNp linux-3.0.9/drivers/scsi/bfa/bfa_fcs_lport.c linux-3.0.9/drivers/scsi
27404 /*
27405 * get hba attributes
27406 */
27407 -@@ -1836,6 +1838,8 @@ bfa_fcs_lport_fdmi_build_portattr_block(
27408 +@@ -1977,6 +1979,8 @@ bfa_fcs_lport_fdmi_build_portattr_block(
27409 u8 count = 0;
27410 u16 templen;
27411
27412 @@ -33623,10 +33621,10 @@ diff -urNp linux-3.0.9/drivers/scsi/bfa/bfa_fcs_lport.c linux-3.0.9/drivers/scsi
27413 /*
27414 * get port attributes
27415 */
27416 -diff -urNp linux-3.0.9/drivers/scsi/bfa/bfa_fcs_rport.c linux-3.0.9/drivers/scsi/bfa/bfa_fcs_rport.c
27417 ---- linux-3.0.9/drivers/scsi/bfa/bfa_fcs_rport.c 2011-11-11 13:12:24.000000000 -0500
27418 -+++ linux-3.0.9/drivers/scsi/bfa/bfa_fcs_rport.c 2011-11-15 20:02:59.000000000 -0500
27419 -@@ -1844,6 +1844,8 @@ bfa_fcs_rport_process_rpsc(struct bfa_fc
27420 +diff -urNp linux-3.1.1/drivers/scsi/bfa/bfa_fcs_rport.c linux-3.1.1/drivers/scsi/bfa/bfa_fcs_rport.c
27421 +--- linux-3.1.1/drivers/scsi/bfa/bfa_fcs_rport.c 2011-11-11 15:19:27.000000000 -0500
27422 ++++ linux-3.1.1/drivers/scsi/bfa/bfa_fcs_rport.c 2011-11-16 18:40:22.000000000 -0500
27423 +@@ -1871,6 +1871,8 @@ bfa_fcs_rport_process_rpsc(struct bfa_fc
27424 struct fc_rpsc_speed_info_s speeds;
27425 struct bfa_port_attr_s pport_attr;
27426
27427 @@ -33635,22 +33633,22 @@ diff -urNp linux-3.0.9/drivers/scsi/bfa/bfa_fcs_rport.c linux-3.0.9/drivers/scsi
27428 bfa_trc(port->fcs, rx_fchs->s_id);
27429 bfa_trc(port->fcs, rx_fchs->d_id);
27430
27431 -diff -urNp linux-3.0.9/drivers/scsi/bfa/bfa.h linux-3.0.9/drivers/scsi/bfa/bfa.h
27432 ---- linux-3.0.9/drivers/scsi/bfa/bfa.h 2011-11-11 13:12:24.000000000 -0500
27433 -+++ linux-3.0.9/drivers/scsi/bfa/bfa.h 2011-11-15 20:02:59.000000000 -0500
27434 -@@ -238,7 +238,7 @@ struct bfa_hwif_s {
27435 - u32 *nvecs, u32 *maxvec);
27436 - void (*hw_msix_get_rme_range) (struct bfa_s *bfa, u32 *start,
27437 +diff -urNp linux-3.1.1/drivers/scsi/bfa/bfa.h linux-3.1.1/drivers/scsi/bfa/bfa.h
27438 +--- linux-3.1.1/drivers/scsi/bfa/bfa.h 2011-11-11 15:19:27.000000000 -0500
27439 ++++ linux-3.1.1/drivers/scsi/bfa/bfa.h 2011-11-16 18:39:07.000000000 -0500
27440 +@@ -196,7 +196,7 @@ struct bfa_hwif_s {
27441 u32 *end);
27442 + int cpe_vec_q0;
27443 + int rme_vec_q0;
27444 -};
27445 +} __no_const;
27446 typedef void (*bfa_cb_iocfc_t) (void *cbarg, enum bfa_status status);
27447
27448 - struct bfa_iocfc_s {
27449 -diff -urNp linux-3.0.9/drivers/scsi/bfa/bfa_ioc.h linux-3.0.9/drivers/scsi/bfa/bfa_ioc.h
27450 ---- linux-3.0.9/drivers/scsi/bfa/bfa_ioc.h 2011-11-11 13:12:24.000000000 -0500
27451 -+++ linux-3.0.9/drivers/scsi/bfa/bfa_ioc.h 2011-11-15 20:02:59.000000000 -0500
27452 -@@ -196,7 +196,7 @@ struct bfa_ioc_cbfn_s {
27453 + struct bfa_faa_cbfn_s {
27454 +diff -urNp linux-3.1.1/drivers/scsi/bfa/bfa_ioc.h linux-3.1.1/drivers/scsi/bfa/bfa_ioc.h
27455 +--- linux-3.1.1/drivers/scsi/bfa/bfa_ioc.h 2011-11-11 15:19:27.000000000 -0500
27456 ++++ linux-3.1.1/drivers/scsi/bfa/bfa_ioc.h 2011-11-16 18:39:07.000000000 -0500
27457 +@@ -258,7 +258,7 @@ struct bfa_ioc_cbfn_s {
27458 bfa_ioc_disable_cbfn_t disable_cbfn;
27459 bfa_ioc_hbfail_cbfn_t hbfail_cbfn;
27460 bfa_ioc_reset_cbfn_t reset_cbfn;
27461 @@ -33658,19 +33656,19 @@ diff -urNp linux-3.0.9/drivers/scsi/bfa/bfa_ioc.h linux-3.0.9/drivers/scsi/bfa/b
27462 +} __no_const;
27463
27464 /*
27465 - * Heartbeat failure notification queue element.
27466 -@@ -268,7 +268,7 @@ struct bfa_ioc_hwif_s {
27467 - void (*ioc_sync_leave) (struct bfa_ioc_s *ioc);
27468 + * IOC event notification mechanism.
27469 +@@ -346,7 +346,7 @@ struct bfa_ioc_hwif_s {
27470 void (*ioc_sync_ack) (struct bfa_ioc_s *ioc);
27471 bfa_boolean_t (*ioc_sync_complete) (struct bfa_ioc_s *ioc);
27472 + bfa_boolean_t (*ioc_lpu_read_stat) (struct bfa_ioc_s *ioc);
27473 -};
27474 +} __no_const;
27475
27476 - #define bfa_ioc_pcifn(__ioc) ((__ioc)->pcidev.pci_func)
27477 - #define bfa_ioc_devid(__ioc) ((__ioc)->pcidev.device_id)
27478 -diff -urNp linux-3.0.9/drivers/scsi/BusLogic.c linux-3.0.9/drivers/scsi/BusLogic.c
27479 ---- linux-3.0.9/drivers/scsi/BusLogic.c 2011-11-11 13:12:24.000000000 -0500
27480 -+++ linux-3.0.9/drivers/scsi/BusLogic.c 2011-11-15 20:02:59.000000000 -0500
27481 + /*
27482 + * Queue element to wait for room in request queue. FIFO order is
27483 +diff -urNp linux-3.1.1/drivers/scsi/BusLogic.c linux-3.1.1/drivers/scsi/BusLogic.c
27484 +--- linux-3.1.1/drivers/scsi/BusLogic.c 2011-11-11 15:19:27.000000000 -0500
27485 ++++ linux-3.1.1/drivers/scsi/BusLogic.c 2011-11-16 18:40:22.000000000 -0500
27486 @@ -962,6 +962,8 @@ static int __init BusLogic_InitializeFla
27487 static void __init BusLogic_InitializeProbeInfoList(struct BusLogic_HostAdapter
27488 *PrototypeHostAdapter)
27489 @@ -33680,9 +33678,9 @@ diff -urNp linux-3.0.9/drivers/scsi/BusLogic.c linux-3.0.9/drivers/scsi/BusLogic
27490 /*
27491 If a PCI BIOS is present, interrogate it for MultiMaster and FlashPoint
27492 Host Adapters; otherwise, default to the standard ISA MultiMaster probe.
27493 -diff -urNp linux-3.0.9/drivers/scsi/dpt_i2o.c linux-3.0.9/drivers/scsi/dpt_i2o.c
27494 ---- linux-3.0.9/drivers/scsi/dpt_i2o.c 2011-11-11 13:12:24.000000000 -0500
27495 -+++ linux-3.0.9/drivers/scsi/dpt_i2o.c 2011-11-15 20:02:59.000000000 -0500
27496 +diff -urNp linux-3.1.1/drivers/scsi/dpt_i2o.c linux-3.1.1/drivers/scsi/dpt_i2o.c
27497 +--- linux-3.1.1/drivers/scsi/dpt_i2o.c 2011-11-11 15:19:27.000000000 -0500
27498 ++++ linux-3.1.1/drivers/scsi/dpt_i2o.c 2011-11-16 18:40:22.000000000 -0500
27499 @@ -1811,6 +1811,8 @@ static int adpt_i2o_passthru(adpt_hba* p
27500 dma_addr_t addr;
27501 ulong flags = 0;
27502 @@ -33701,9 +33699,9 @@ diff -urNp linux-3.0.9/drivers/scsi/dpt_i2o.c linux-3.0.9/drivers/scsi/dpt_i2o.c
27503 memset(msg, 0 , sizeof(msg));
27504 len = scsi_bufflen(cmd);
27505 direction = 0x00000000;
27506 -diff -urNp linux-3.0.9/drivers/scsi/eata.c linux-3.0.9/drivers/scsi/eata.c
27507 ---- linux-3.0.9/drivers/scsi/eata.c 2011-11-11 13:12:24.000000000 -0500
27508 -+++ linux-3.0.9/drivers/scsi/eata.c 2011-11-15 20:02:59.000000000 -0500
27509 +diff -urNp linux-3.1.1/drivers/scsi/eata.c linux-3.1.1/drivers/scsi/eata.c
27510 +--- linux-3.1.1/drivers/scsi/eata.c 2011-11-11 15:19:27.000000000 -0500
27511 ++++ linux-3.1.1/drivers/scsi/eata.c 2011-11-16 18:40:22.000000000 -0500
27512 @@ -1087,6 +1087,8 @@ static int port_detect(unsigned long por
27513 struct hostdata *ha;
27514 char name[16];
27515 @@ -33713,9 +33711,9 @@ diff -urNp linux-3.0.9/drivers/scsi/eata.c linux-3.0.9/drivers/scsi/eata.c
27516 sprintf(name, "%s%d", driver_name, j);
27517
27518 if (!request_region(port_base, REGION_SIZE, driver_name)) {
27519 -diff -urNp linux-3.0.9/drivers/scsi/fcoe/fcoe_ctlr.c linux-3.0.9/drivers/scsi/fcoe/fcoe_ctlr.c
27520 ---- linux-3.0.9/drivers/scsi/fcoe/fcoe_ctlr.c 2011-11-11 13:12:24.000000000 -0500
27521 -+++ linux-3.0.9/drivers/scsi/fcoe/fcoe_ctlr.c 2011-11-15 20:02:59.000000000 -0500
27522 +diff -urNp linux-3.1.1/drivers/scsi/fcoe/fcoe_ctlr.c linux-3.1.1/drivers/scsi/fcoe/fcoe_ctlr.c
27523 +--- linux-3.1.1/drivers/scsi/fcoe/fcoe_ctlr.c 2011-11-11 15:19:27.000000000 -0500
27524 ++++ linux-3.1.1/drivers/scsi/fcoe/fcoe_ctlr.c 2011-11-16 18:40:22.000000000 -0500
27525 @@ -2503,6 +2503,8 @@ static int fcoe_ctlr_vn_recv(struct fcoe
27526 } buf;
27527 int rc;
27528 @@ -33725,9 +33723,9 @@ diff -urNp linux-3.0.9/drivers/scsi/fcoe/fcoe_ctlr.c linux-3.0.9/drivers/scsi/fc
27529 fiph = (struct fip_header *)skb->data;
27530 sub = fiph->fip_subcode;
27531
27532 -diff -urNp linux-3.0.9/drivers/scsi/gdth.c linux-3.0.9/drivers/scsi/gdth.c
27533 ---- linux-3.0.9/drivers/scsi/gdth.c 2011-11-11 13:12:24.000000000 -0500
27534 -+++ linux-3.0.9/drivers/scsi/gdth.c 2011-11-15 20:02:59.000000000 -0500
27535 +diff -urNp linux-3.1.1/drivers/scsi/gdth.c linux-3.1.1/drivers/scsi/gdth.c
27536 +--- linux-3.1.1/drivers/scsi/gdth.c 2011-11-11 15:19:27.000000000 -0500
27537 ++++ linux-3.1.1/drivers/scsi/gdth.c 2011-11-16 18:40:22.000000000 -0500
27538 @@ -4107,6 +4107,8 @@ static int ioc_lockdrv(void __user *arg)
27539 unsigned long flags;
27540 gdth_ha_str *ha;
27541 @@ -33765,9 +33763,9 @@ diff -urNp linux-3.0.9/drivers/scsi/gdth.c linux-3.0.9/drivers/scsi/gdth.c
27542 memset(cmnd, 0xff, MAX_COMMAND_SIZE);
27543
27544 TRACE2(("gdth_flush() hanum %d\n", ha->hanum));
27545 -diff -urNp linux-3.0.9/drivers/scsi/gdth_proc.c linux-3.0.9/drivers/scsi/gdth_proc.c
27546 ---- linux-3.0.9/drivers/scsi/gdth_proc.c 2011-11-11 13:12:24.000000000 -0500
27547 -+++ linux-3.0.9/drivers/scsi/gdth_proc.c 2011-11-15 20:02:59.000000000 -0500
27548 +diff -urNp linux-3.1.1/drivers/scsi/gdth_proc.c linux-3.1.1/drivers/scsi/gdth_proc.c
27549 +--- linux-3.1.1/drivers/scsi/gdth_proc.c 2011-11-11 15:19:27.000000000 -0500
27550 ++++ linux-3.1.1/drivers/scsi/gdth_proc.c 2011-11-16 18:40:22.000000000 -0500
27551 @@ -47,6 +47,9 @@ static int gdth_set_asc_info(struct Scsi
27552 u64 paddr;
27553
27554 @@ -33787,9 +33785,9 @@ diff -urNp linux-3.0.9/drivers/scsi/gdth_proc.c linux-3.0.9/drivers/scsi/gdth_pr
27555 gdtcmd = kmalloc(sizeof(*gdtcmd), GFP_KERNEL);
27556 estr = kmalloc(sizeof(*estr), GFP_KERNEL);
27557 if (!gdtcmd || !estr)
27558 -diff -urNp linux-3.0.9/drivers/scsi/hosts.c linux-3.0.9/drivers/scsi/hosts.c
27559 ---- linux-3.0.9/drivers/scsi/hosts.c 2011-11-11 13:12:24.000000000 -0500
27560 -+++ linux-3.0.9/drivers/scsi/hosts.c 2011-11-15 20:02:59.000000000 -0500
27561 +diff -urNp linux-3.1.1/drivers/scsi/hosts.c linux-3.1.1/drivers/scsi/hosts.c
27562 +--- linux-3.1.1/drivers/scsi/hosts.c 2011-11-11 15:19:27.000000000 -0500
27563 ++++ linux-3.1.1/drivers/scsi/hosts.c 2011-11-16 18:39:07.000000000 -0500
27564 @@ -42,7 +42,7 @@
27565 #include "scsi_logging.h"
27566
27567 @@ -33808,9 +33806,9 @@ diff -urNp linux-3.0.9/drivers/scsi/hosts.c linux-3.0.9/drivers/scsi/hosts.c
27568 shost->dma_channel = 0xff;
27569
27570 /* These three are default values which can be overridden */
27571 -diff -urNp linux-3.0.9/drivers/scsi/hpsa.c linux-3.0.9/drivers/scsi/hpsa.c
27572 ---- linux-3.0.9/drivers/scsi/hpsa.c 2011-11-11 13:12:24.000000000 -0500
27573 -+++ linux-3.0.9/drivers/scsi/hpsa.c 2011-11-15 20:02:59.000000000 -0500
27574 +diff -urNp linux-3.1.1/drivers/scsi/hpsa.c linux-3.1.1/drivers/scsi/hpsa.c
27575 +--- linux-3.1.1/drivers/scsi/hpsa.c 2011-11-11 15:19:27.000000000 -0500
27576 ++++ linux-3.1.1/drivers/scsi/hpsa.c 2011-11-16 18:39:07.000000000 -0500
27577 @@ -498,7 +498,7 @@ static inline u32 next_command(struct ct
27578 u32 a;
27579
27580 @@ -33925,9 +33923,9 @@ diff -urNp linux-3.0.9/drivers/scsi/hpsa.c linux-3.0.9/drivers/scsi/hpsa.c
27581 h->transMethod = CFGTBL_Trans_Performant;
27582 }
27583
27584 -diff -urNp linux-3.0.9/drivers/scsi/hpsa.h linux-3.0.9/drivers/scsi/hpsa.h
27585 ---- linux-3.0.9/drivers/scsi/hpsa.h 2011-11-11 13:12:24.000000000 -0500
27586 -+++ linux-3.0.9/drivers/scsi/hpsa.h 2011-11-15 20:02:59.000000000 -0500
27587 +diff -urNp linux-3.1.1/drivers/scsi/hpsa.h linux-3.1.1/drivers/scsi/hpsa.h
27588 +--- linux-3.1.1/drivers/scsi/hpsa.h 2011-11-11 15:19:27.000000000 -0500
27589 ++++ linux-3.1.1/drivers/scsi/hpsa.h 2011-11-16 18:39:07.000000000 -0500
27590 @@ -73,7 +73,7 @@ struct ctlr_info {
27591 unsigned int msix_vector;
27592 unsigned int msi_vector;
27593 @@ -33937,9 +33935,9 @@ diff -urNp linux-3.0.9/drivers/scsi/hpsa.h linux-3.0.9/drivers/scsi/hpsa.h
27594
27595 /* queue and queue Info */
27596 struct list_head reqQ;
27597 -diff -urNp linux-3.0.9/drivers/scsi/ips.h linux-3.0.9/drivers/scsi/ips.h
27598 ---- linux-3.0.9/drivers/scsi/ips.h 2011-11-11 13:12:24.000000000 -0500
27599 -+++ linux-3.0.9/drivers/scsi/ips.h 2011-11-15 20:02:59.000000000 -0500
27600 +diff -urNp linux-3.1.1/drivers/scsi/ips.h linux-3.1.1/drivers/scsi/ips.h
27601 +--- linux-3.1.1/drivers/scsi/ips.h 2011-11-11 15:19:27.000000000 -0500
27602 ++++ linux-3.1.1/drivers/scsi/ips.h 2011-11-16 18:39:07.000000000 -0500
27603 @@ -1027,7 +1027,7 @@ typedef struct {
27604 int (*intr)(struct ips_ha *);
27605 void (*enableint)(struct ips_ha *);
27606 @@ -33949,9 +33947,9 @@ diff -urNp linux-3.0.9/drivers/scsi/ips.h linux-3.0.9/drivers/scsi/ips.h
27607
27608 typedef struct ips_ha {
27609 uint8_t ha_id[IPS_MAX_CHANNELS+1];
27610 -diff -urNp linux-3.0.9/drivers/scsi/libfc/fc_exch.c linux-3.0.9/drivers/scsi/libfc/fc_exch.c
27611 ---- linux-3.0.9/drivers/scsi/libfc/fc_exch.c 2011-11-11 13:12:24.000000000 -0500
27612 -+++ linux-3.0.9/drivers/scsi/libfc/fc_exch.c 2011-11-15 20:02:59.000000000 -0500
27613 +diff -urNp linux-3.1.1/drivers/scsi/libfc/fc_exch.c linux-3.1.1/drivers/scsi/libfc/fc_exch.c
27614 +--- linux-3.1.1/drivers/scsi/libfc/fc_exch.c 2011-11-11 15:19:27.000000000 -0500
27615 ++++ linux-3.1.1/drivers/scsi/libfc/fc_exch.c 2011-11-16 18:39:07.000000000 -0500
27616 @@ -105,12 +105,12 @@ struct fc_exch_mgr {
27617 * all together if not used XXX
27618 */
27619 @@ -33971,7 +33969,7 @@ diff -urNp linux-3.0.9/drivers/scsi/libfc/fc_exch.c linux-3.0.9/drivers/scsi/lib
27620 } stats;
27621 };
27622
27623 -@@ -700,7 +700,7 @@ static struct fc_exch *fc_exch_em_alloc(
27624 +@@ -718,7 +718,7 @@ static struct fc_exch *fc_exch_em_alloc(
27625 /* allocate memory for exchange */
27626 ep = mempool_alloc(mp->ep_pool, GFP_ATOMIC);
27627 if (!ep) {
27628 @@ -33980,7 +33978,7 @@ diff -urNp linux-3.0.9/drivers/scsi/libfc/fc_exch.c linux-3.0.9/drivers/scsi/lib
27629 goto out;
27630 }
27631 memset(ep, 0, sizeof(*ep));
27632 -@@ -761,7 +761,7 @@ out:
27633 +@@ -779,7 +779,7 @@ out:
27634 return ep;
27635 err:
27636 spin_unlock_bh(&pool->lock);
27637 @@ -33989,7 +33987,7 @@ diff -urNp linux-3.0.9/drivers/scsi/libfc/fc_exch.c linux-3.0.9/drivers/scsi/lib
27638 mempool_free(ep, mp->ep_pool);
27639 return NULL;
27640 }
27641 -@@ -906,7 +906,7 @@ static enum fc_pf_rjt_reason fc_seq_look
27642 +@@ -922,7 +922,7 @@ static enum fc_pf_rjt_reason fc_seq_look
27643 xid = ntohs(fh->fh_ox_id); /* we originated exch */
27644 ep = fc_exch_find(mp, xid);
27645 if (!ep) {
27646 @@ -33998,7 +33996,7 @@ diff -urNp linux-3.0.9/drivers/scsi/libfc/fc_exch.c linux-3.0.9/drivers/scsi/lib
27647 reject = FC_RJT_OX_ID;
27648 goto out;
27649 }
27650 -@@ -936,7 +936,7 @@ static enum fc_pf_rjt_reason fc_seq_look
27651 +@@ -952,7 +952,7 @@ static enum fc_pf_rjt_reason fc_seq_look
27652 ep = fc_exch_find(mp, xid);
27653 if ((f_ctl & FC_FC_FIRST_SEQ) && fc_sof_is_init(fr_sof(fp))) {
27654 if (ep) {
27655 @@ -34007,7 +34005,7 @@ diff -urNp linux-3.0.9/drivers/scsi/libfc/fc_exch.c linux-3.0.9/drivers/scsi/lib
27656 reject = FC_RJT_RX_ID;
27657 goto rel;
27658 }
27659 -@@ -947,7 +947,7 @@ static enum fc_pf_rjt_reason fc_seq_look
27660 +@@ -963,7 +963,7 @@ static enum fc_pf_rjt_reason fc_seq_look
27661 }
27662 xid = ep->xid; /* get our XID */
27663 } else if (!ep) {
27664 @@ -34016,16 +34014,16 @@ diff -urNp linux-3.0.9/drivers/scsi/libfc/fc_exch.c linux-3.0.9/drivers/scsi/lib
27665 reject = FC_RJT_RX_ID; /* XID not found */
27666 goto out;
27667 }
27668 -@@ -964,7 +964,7 @@ static enum fc_pf_rjt_reason fc_seq_look
27669 +@@ -980,7 +980,7 @@ static enum fc_pf_rjt_reason fc_seq_look
27670 } else {
27671 sp = &ep->seq;
27672 if (sp->id != fh->fh_seq_id) {
27673 - atomic_inc(&mp->stats.seq_not_found);
27674 + atomic_inc_unchecked(&mp->stats.seq_not_found);
27675 - reject = FC_RJT_SEQ_ID; /* sequence/exch should exist */
27676 - goto rel;
27677 - }
27678 -@@ -1392,22 +1392,22 @@ static void fc_exch_recv_seq_resp(struct
27679 + if (f_ctl & FC_FC_END_SEQ) {
27680 + /*
27681 + * Update sequence_id based on incoming last
27682 +@@ -1430,22 +1430,22 @@ static void fc_exch_recv_seq_resp(struct
27683
27684 ep = fc_exch_find(mp, ntohs(fh->fh_ox_id));
27685 if (!ep) {
27686 @@ -34052,7 +34050,7 @@ diff -urNp linux-3.0.9/drivers/scsi/libfc/fc_exch.c linux-3.0.9/drivers/scsi/lib
27687 goto rel;
27688 }
27689 sof = fr_sof(fp);
27690 -@@ -1416,7 +1416,7 @@ static void fc_exch_recv_seq_resp(struct
27691 +@@ -1454,7 +1454,7 @@ static void fc_exch_recv_seq_resp(struct
27692 sp->ssb_stat |= SSB_ST_RESP;
27693 sp->id = fh->fh_seq_id;
27694 } else if (sp->id != fh->fh_seq_id) {
27695 @@ -34061,7 +34059,7 @@ diff -urNp linux-3.0.9/drivers/scsi/libfc/fc_exch.c linux-3.0.9/drivers/scsi/lib
27696 goto rel;
27697 }
27698
27699 -@@ -1480,9 +1480,9 @@ static void fc_exch_recv_resp(struct fc_
27700 +@@ -1518,9 +1518,9 @@ static void fc_exch_recv_resp(struct fc_
27701 sp = fc_seq_lookup_orig(mp, fp); /* doesn't hold sequence */
27702
27703 if (!sp)
27704 @@ -34073,9 +34071,9 @@ diff -urNp linux-3.0.9/drivers/scsi/libfc/fc_exch.c linux-3.0.9/drivers/scsi/lib
27705
27706 fc_frame_free(fp);
27707 }
27708 -diff -urNp linux-3.0.9/drivers/scsi/libsas/sas_ata.c linux-3.0.9/drivers/scsi/libsas/sas_ata.c
27709 ---- linux-3.0.9/drivers/scsi/libsas/sas_ata.c 2011-11-11 13:12:24.000000000 -0500
27710 -+++ linux-3.0.9/drivers/scsi/libsas/sas_ata.c 2011-11-15 20:02:59.000000000 -0500
27711 +diff -urNp linux-3.1.1/drivers/scsi/libsas/sas_ata.c linux-3.1.1/drivers/scsi/libsas/sas_ata.c
27712 +--- linux-3.1.1/drivers/scsi/libsas/sas_ata.c 2011-11-11 15:19:27.000000000 -0500
27713 ++++ linux-3.1.1/drivers/scsi/libsas/sas_ata.c 2011-11-16 18:39:07.000000000 -0500
27714 @@ -368,7 +368,7 @@ static struct ata_port_operations sas_sa
27715 .postreset = ata_std_postreset,
27716 .error_handler = ata_std_error_handler,
27717 @@ -34085,10 +34083,10 @@ diff -urNp linux-3.0.9/drivers/scsi/libsas/sas_ata.c linux-3.0.9/drivers/scsi/li
27718 .qc_prep = ata_noop_qc_prep,
27719 .qc_issue = sas_ata_qc_issue,
27720 .qc_fill_rtf = sas_ata_qc_fill_rtf,
27721 -diff -urNp linux-3.0.9/drivers/scsi/lpfc/lpfc_debugfs.c linux-3.0.9/drivers/scsi/lpfc/lpfc_debugfs.c
27722 ---- linux-3.0.9/drivers/scsi/lpfc/lpfc_debugfs.c 2011-11-11 13:12:24.000000000 -0500
27723 -+++ linux-3.0.9/drivers/scsi/lpfc/lpfc_debugfs.c 2011-11-15 20:02:59.000000000 -0500
27724 -@@ -104,7 +104,7 @@ MODULE_PARM_DESC(lpfc_debugfs_mask_disc_
27725 +diff -urNp linux-3.1.1/drivers/scsi/lpfc/lpfc_debugfs.c linux-3.1.1/drivers/scsi/lpfc/lpfc_debugfs.c
27726 +--- linux-3.1.1/drivers/scsi/lpfc/lpfc_debugfs.c 2011-11-11 15:19:27.000000000 -0500
27727 ++++ linux-3.1.1/drivers/scsi/lpfc/lpfc_debugfs.c 2011-11-16 18:40:22.000000000 -0500
27728 +@@ -105,7 +105,7 @@ MODULE_PARM_DESC(lpfc_debugfs_mask_disc_
27729
27730 #include <linux/debugfs.h>
27731
27732 @@ -34097,7 +34095,7 @@ diff -urNp linux-3.0.9/drivers/scsi/lpfc/lpfc_debugfs.c linux-3.0.9/drivers/scsi
27733 static unsigned long lpfc_debugfs_start_time = 0L;
27734
27735 /* iDiag */
27736 -@@ -141,7 +141,7 @@ lpfc_debugfs_disc_trc_data(struct lpfc_v
27737 +@@ -146,7 +146,7 @@ lpfc_debugfs_disc_trc_data(struct lpfc_v
27738 lpfc_debugfs_enable = 0;
27739
27740 len = 0;
27741 @@ -34106,7 +34104,7 @@ diff -urNp linux-3.0.9/drivers/scsi/lpfc/lpfc_debugfs.c linux-3.0.9/drivers/scsi
27742 (lpfc_debugfs_max_disc_trc - 1);
27743 for (i = index; i < lpfc_debugfs_max_disc_trc; i++) {
27744 dtp = vport->disc_trc + i;
27745 -@@ -202,7 +202,7 @@ lpfc_debugfs_slow_ring_trc_data(struct l
27746 +@@ -212,7 +212,7 @@ lpfc_debugfs_slow_ring_trc_data(struct l
27747 lpfc_debugfs_enable = 0;
27748
27749 len = 0;
27750 @@ -34115,16 +34113,7 @@ diff -urNp linux-3.0.9/drivers/scsi/lpfc/lpfc_debugfs.c linux-3.0.9/drivers/scsi
27751 (lpfc_debugfs_max_slow_ring_trc - 1);
27752 for (i = index; i < lpfc_debugfs_max_slow_ring_trc; i++) {
27753 dtp = phba->slow_ring_trc + i;
27754 -@@ -380,6 +380,8 @@ lpfc_debugfs_dumpHBASlim_data(struct lpf
27755 - uint32_t *ptr;
27756 - char buffer[1024];
27757 -
27758 -+ pax_track_stack();
27759 -+
27760 - off = 0;
27761 - spin_lock_irq(&phba->hbalock);
27762 -
27763 -@@ -617,14 +619,14 @@ lpfc_debugfs_disc_trc(struct lpfc_vport
27764 +@@ -635,14 +635,14 @@ lpfc_debugfs_disc_trc(struct lpfc_vport
27765 !vport || !vport->disc_trc)
27766 return;
27767
27768 @@ -34141,7 +34130,7 @@ diff -urNp linux-3.0.9/drivers/scsi/lpfc/lpfc_debugfs.c linux-3.0.9/drivers/scsi
27769 dtp->jif = jiffies;
27770 #endif
27771 return;
27772 -@@ -655,14 +657,14 @@ lpfc_debugfs_slow_ring_trc(struct lpfc_h
27773 +@@ -673,14 +673,14 @@ lpfc_debugfs_slow_ring_trc(struct lpfc_h
27774 !phba || !phba->slow_ring_trc)
27775 return;
27776
27777 @@ -34158,7 +34147,7 @@ diff -urNp linux-3.0.9/drivers/scsi/lpfc/lpfc_debugfs.c linux-3.0.9/drivers/scsi
27778 dtp->jif = jiffies;
27779 #endif
27780 return;
27781 -@@ -2606,7 +2608,7 @@ lpfc_debugfs_initialize(struct lpfc_vpor
27782 +@@ -3828,7 +3828,7 @@ lpfc_debugfs_initialize(struct lpfc_vpor
27783 "slow_ring buffer\n");
27784 goto debug_failed;
27785 }
27786 @@ -34167,7 +34156,7 @@ diff -urNp linux-3.0.9/drivers/scsi/lpfc/lpfc_debugfs.c linux-3.0.9/drivers/scsi
27787 memset(phba->slow_ring_trc, 0,
27788 (sizeof(struct lpfc_debugfs_trc) *
27789 lpfc_debugfs_max_slow_ring_trc));
27790 -@@ -2652,7 +2654,7 @@ lpfc_debugfs_initialize(struct lpfc_vpor
27791 +@@ -3874,7 +3874,7 @@ lpfc_debugfs_initialize(struct lpfc_vpor
27792 "buffer\n");
27793 goto debug_failed;
27794 }
27795 @@ -34176,9 +34165,9 @@ diff -urNp linux-3.0.9/drivers/scsi/lpfc/lpfc_debugfs.c linux-3.0.9/drivers/scsi
27796
27797 snprintf(name, sizeof(name), "discovery_trace");
27798 vport->debug_disc_trc =
27799 -diff -urNp linux-3.0.9/drivers/scsi/lpfc/lpfc.h linux-3.0.9/drivers/scsi/lpfc/lpfc.h
27800 ---- linux-3.0.9/drivers/scsi/lpfc/lpfc.h 2011-11-11 13:12:24.000000000 -0500
27801 -+++ linux-3.0.9/drivers/scsi/lpfc/lpfc.h 2011-11-15 20:02:59.000000000 -0500
27802 +diff -urNp linux-3.1.1/drivers/scsi/lpfc/lpfc.h linux-3.1.1/drivers/scsi/lpfc/lpfc.h
27803 +--- linux-3.1.1/drivers/scsi/lpfc/lpfc.h 2011-11-11 15:19:27.000000000 -0500
27804 ++++ linux-3.1.1/drivers/scsi/lpfc/lpfc.h 2011-11-16 18:39:07.000000000 -0500
27805 @@ -425,7 +425,7 @@ struct lpfc_vport {
27806 struct dentry *debug_nodelist;
27807 struct dentry *vport_debugfs_root;
27808 @@ -34188,7 +34177,7 @@ diff -urNp linux-3.0.9/drivers/scsi/lpfc/lpfc.h linux-3.0.9/drivers/scsi/lpfc/lp
27809 #endif
27810 uint8_t stat_data_enabled;
27811 uint8_t stat_data_blocked;
27812 -@@ -832,8 +832,8 @@ struct lpfc_hba {
27813 +@@ -835,8 +835,8 @@ struct lpfc_hba {
27814 struct timer_list fabric_block_timer;
27815 unsigned long bit_flags;
27816 #define FABRIC_COMANDS_BLOCKED 0
27817 @@ -34199,7 +34188,7 @@ diff -urNp linux-3.0.9/drivers/scsi/lpfc/lpfc.h linux-3.0.9/drivers/scsi/lpfc/lp
27818 unsigned long last_rsrc_error_time;
27819 unsigned long last_ramp_down_time;
27820 unsigned long last_ramp_up_time;
27821 -@@ -847,7 +847,7 @@ struct lpfc_hba {
27822 +@@ -850,7 +850,7 @@ struct lpfc_hba {
27823 struct dentry *debug_dumpDif; /* BlockGuard BPL*/
27824 struct dentry *debug_slow_ring_trc;
27825 struct lpfc_debugfs_trc *slow_ring_trc;
27826 @@ -34208,10 +34197,10 @@ diff -urNp linux-3.0.9/drivers/scsi/lpfc/lpfc.h linux-3.0.9/drivers/scsi/lpfc/lp
27827 /* iDiag debugfs sub-directory */
27828 struct dentry *idiag_root;
27829 struct dentry *idiag_pci_cfg;
27830 -diff -urNp linux-3.0.9/drivers/scsi/lpfc/lpfc_init.c linux-3.0.9/drivers/scsi/lpfc/lpfc_init.c
27831 ---- linux-3.0.9/drivers/scsi/lpfc/lpfc_init.c 2011-11-11 13:12:24.000000000 -0500
27832 -+++ linux-3.0.9/drivers/scsi/lpfc/lpfc_init.c 2011-11-15 20:02:59.000000000 -0500
27833 -@@ -9971,8 +9971,10 @@ lpfc_init(void)
27834 +diff -urNp linux-3.1.1/drivers/scsi/lpfc/lpfc_init.c linux-3.1.1/drivers/scsi/lpfc/lpfc_init.c
27835 +--- linux-3.1.1/drivers/scsi/lpfc/lpfc_init.c 2011-11-11 15:19:27.000000000 -0500
27836 ++++ linux-3.1.1/drivers/scsi/lpfc/lpfc_init.c 2011-11-16 18:39:07.000000000 -0500
27837 +@@ -9969,8 +9969,10 @@ lpfc_init(void)
27838 printk(LPFC_COPYRIGHT "\n");
27839
27840 if (lpfc_enable_npiv) {
27841 @@ -34224,9 +34213,9 @@ diff -urNp linux-3.0.9/drivers/scsi/lpfc/lpfc_init.c linux-3.0.9/drivers/scsi/lp
27842 }
27843 lpfc_transport_template =
27844 fc_attach_transport(&lpfc_transport_functions);
27845 -diff -urNp linux-3.0.9/drivers/scsi/lpfc/lpfc_scsi.c linux-3.0.9/drivers/scsi/lpfc/lpfc_scsi.c
27846 ---- linux-3.0.9/drivers/scsi/lpfc/lpfc_scsi.c 2011-11-11 13:12:24.000000000 -0500
27847 -+++ linux-3.0.9/drivers/scsi/lpfc/lpfc_scsi.c 2011-11-15 20:02:59.000000000 -0500
27848 +diff -urNp linux-3.1.1/drivers/scsi/lpfc/lpfc_scsi.c linux-3.1.1/drivers/scsi/lpfc/lpfc_scsi.c
27849 +--- linux-3.1.1/drivers/scsi/lpfc/lpfc_scsi.c 2011-11-11 15:19:27.000000000 -0500
27850 ++++ linux-3.1.1/drivers/scsi/lpfc/lpfc_scsi.c 2011-11-16 18:39:07.000000000 -0500
27851 @@ -297,7 +297,7 @@ lpfc_rampdown_queue_depth(struct lpfc_hb
27852 uint32_t evt_posted;
27853
27854 @@ -34278,9 +34267,9 @@ diff -urNp linux-3.0.9/drivers/scsi/lpfc/lpfc_scsi.c linux-3.0.9/drivers/scsi/lp
27855 }
27856
27857 /**
27858 -diff -urNp linux-3.0.9/drivers/scsi/megaraid/megaraid_mbox.c linux-3.0.9/drivers/scsi/megaraid/megaraid_mbox.c
27859 ---- linux-3.0.9/drivers/scsi/megaraid/megaraid_mbox.c 2011-11-11 13:12:24.000000000 -0500
27860 -+++ linux-3.0.9/drivers/scsi/megaraid/megaraid_mbox.c 2011-11-15 20:02:59.000000000 -0500
27861 +diff -urNp linux-3.1.1/drivers/scsi/megaraid/megaraid_mbox.c linux-3.1.1/drivers/scsi/megaraid/megaraid_mbox.c
27862 +--- linux-3.1.1/drivers/scsi/megaraid/megaraid_mbox.c 2011-11-11 15:19:27.000000000 -0500
27863 ++++ linux-3.1.1/drivers/scsi/megaraid/megaraid_mbox.c 2011-11-16 18:40:22.000000000 -0500
27864 @@ -3503,6 +3503,8 @@ megaraid_cmm_register(adapter_t *adapter
27865 int rval;
27866 int i;
27867 @@ -34290,9 +34279,9 @@ diff -urNp linux-3.0.9/drivers/scsi/megaraid/megaraid_mbox.c linux-3.0.9/drivers
27868 // Allocate memory for the base list of scb for management module.
27869 adapter->uscb_list = kcalloc(MBOX_MAX_USER_CMDS, sizeof(scb_t), GFP_KERNEL);
27870
27871 -diff -urNp linux-3.0.9/drivers/scsi/osd/osd_initiator.c linux-3.0.9/drivers/scsi/osd/osd_initiator.c
27872 ---- linux-3.0.9/drivers/scsi/osd/osd_initiator.c 2011-11-11 13:12:24.000000000 -0500
27873 -+++ linux-3.0.9/drivers/scsi/osd/osd_initiator.c 2011-11-15 20:02:59.000000000 -0500
27874 +diff -urNp linux-3.1.1/drivers/scsi/osd/osd_initiator.c linux-3.1.1/drivers/scsi/osd/osd_initiator.c
27875 +--- linux-3.1.1/drivers/scsi/osd/osd_initiator.c 2011-11-11 15:19:27.000000000 -0500
27876 ++++ linux-3.1.1/drivers/scsi/osd/osd_initiator.c 2011-11-16 18:40:22.000000000 -0500
27877 @@ -97,6 +97,8 @@ static int _osd_get_print_system_info(st
27878 int nelem = ARRAY_SIZE(get_attrs), a = 0;
27879 int ret;
27880 @@ -34302,9 +34291,9 @@ diff -urNp linux-3.0.9/drivers/scsi/osd/osd_initiator.c linux-3.0.9/drivers/scsi
27881 or = osd_start_request(od, GFP_KERNEL);
27882 if (!or)
27883 return -ENOMEM;
27884 -diff -urNp linux-3.0.9/drivers/scsi/pmcraid.c linux-3.0.9/drivers/scsi/pmcraid.c
27885 ---- linux-3.0.9/drivers/scsi/pmcraid.c 2011-11-11 13:12:24.000000000 -0500
27886 -+++ linux-3.0.9/drivers/scsi/pmcraid.c 2011-11-15 20:02:59.000000000 -0500
27887 +diff -urNp linux-3.1.1/drivers/scsi/pmcraid.c linux-3.1.1/drivers/scsi/pmcraid.c
27888 +--- linux-3.1.1/drivers/scsi/pmcraid.c 2011-11-11 15:19:27.000000000 -0500
27889 ++++ linux-3.1.1/drivers/scsi/pmcraid.c 2011-11-16 18:39:07.000000000 -0500
27890 @@ -201,8 +201,8 @@ static int pmcraid_slave_alloc(struct sc
27891 res->scsi_dev = scsi_dev;
27892 scsi_dev->hostdata = res;
27893 @@ -34375,9 +34364,9 @@ diff -urNp linux-3.0.9/drivers/scsi/pmcraid.c linux-3.0.9/drivers/scsi/pmcraid.c
27894 schedule_work(&pinstance->worker_q);
27895 return rc;
27896
27897 -diff -urNp linux-3.0.9/drivers/scsi/pmcraid.h linux-3.0.9/drivers/scsi/pmcraid.h
27898 ---- linux-3.0.9/drivers/scsi/pmcraid.h 2011-11-11 13:12:24.000000000 -0500
27899 -+++ linux-3.0.9/drivers/scsi/pmcraid.h 2011-11-15 20:02:59.000000000 -0500
27900 +diff -urNp linux-3.1.1/drivers/scsi/pmcraid.h linux-3.1.1/drivers/scsi/pmcraid.h
27901 +--- linux-3.1.1/drivers/scsi/pmcraid.h 2011-11-11 15:19:27.000000000 -0500
27902 ++++ linux-3.1.1/drivers/scsi/pmcraid.h 2011-11-16 18:39:07.000000000 -0500
27903 @@ -749,7 +749,7 @@ struct pmcraid_instance {
27904 struct pmcraid_isr_param hrrq_vector[PMCRAID_NUM_MSIX_VECTORS];
27905
27906 @@ -34407,9 +34396,9 @@ diff -urNp linux-3.0.9/drivers/scsi/pmcraid.h linux-3.0.9/drivers/scsi/pmcraid.h
27907
27908 /* To indicate add/delete/modify during CCN */
27909 u8 change_detected;
27910 -diff -urNp linux-3.0.9/drivers/scsi/qla2xxx/qla_def.h linux-3.0.9/drivers/scsi/qla2xxx/qla_def.h
27911 ---- linux-3.0.9/drivers/scsi/qla2xxx/qla_def.h 2011-11-11 13:12:24.000000000 -0500
27912 -+++ linux-3.0.9/drivers/scsi/qla2xxx/qla_def.h 2011-11-15 20:02:59.000000000 -0500
27913 +diff -urNp linux-3.1.1/drivers/scsi/qla2xxx/qla_def.h linux-3.1.1/drivers/scsi/qla2xxx/qla_def.h
27914 +--- linux-3.1.1/drivers/scsi/qla2xxx/qla_def.h 2011-11-11 15:19:27.000000000 -0500
27915 ++++ linux-3.1.1/drivers/scsi/qla2xxx/qla_def.h 2011-11-16 18:39:07.000000000 -0500
27916 @@ -2244,7 +2244,7 @@ struct isp_operations {
27917 int (*get_flash_version) (struct scsi_qla_host *, void *);
27918 int (*start_scsi) (srb_t *);
27919 @@ -34419,9 +34408,9 @@ diff -urNp linux-3.0.9/drivers/scsi/qla2xxx/qla_def.h linux-3.0.9/drivers/scsi/q
27920
27921 /* MSI-X Support *************************************************************/
27922
27923 -diff -urNp linux-3.0.9/drivers/scsi/qla4xxx/ql4_def.h linux-3.0.9/drivers/scsi/qla4xxx/ql4_def.h
27924 ---- linux-3.0.9/drivers/scsi/qla4xxx/ql4_def.h 2011-11-11 13:12:24.000000000 -0500
27925 -+++ linux-3.0.9/drivers/scsi/qla4xxx/ql4_def.h 2011-11-15 20:02:59.000000000 -0500
27926 +diff -urNp linux-3.1.1/drivers/scsi/qla4xxx/ql4_def.h linux-3.1.1/drivers/scsi/qla4xxx/ql4_def.h
27927 +--- linux-3.1.1/drivers/scsi/qla4xxx/ql4_def.h 2011-11-11 15:19:27.000000000 -0500
27928 ++++ linux-3.1.1/drivers/scsi/qla4xxx/ql4_def.h 2011-11-16 18:39:07.000000000 -0500
27929 @@ -256,7 +256,7 @@ struct ddb_entry {
27930 atomic_t retry_relogin_timer; /* Min Time between relogins
27931 * (4000 only) */
27932 @@ -34431,9 +34420,9 @@ diff -urNp linux-3.0.9/drivers/scsi/qla4xxx/ql4_def.h linux-3.0.9/drivers/scsi/q
27933 * retried */
27934
27935 uint16_t port;
27936 -diff -urNp linux-3.0.9/drivers/scsi/qla4xxx/ql4_init.c linux-3.0.9/drivers/scsi/qla4xxx/ql4_init.c
27937 ---- linux-3.0.9/drivers/scsi/qla4xxx/ql4_init.c 2011-11-11 13:12:24.000000000 -0500
27938 -+++ linux-3.0.9/drivers/scsi/qla4xxx/ql4_init.c 2011-11-15 20:02:59.000000000 -0500
27939 +diff -urNp linux-3.1.1/drivers/scsi/qla4xxx/ql4_init.c linux-3.1.1/drivers/scsi/qla4xxx/ql4_init.c
27940 +--- linux-3.1.1/drivers/scsi/qla4xxx/ql4_init.c 2011-11-11 15:19:27.000000000 -0500
27941 ++++ linux-3.1.1/drivers/scsi/qla4xxx/ql4_init.c 2011-11-16 18:39:07.000000000 -0500
27942 @@ -680,7 +680,7 @@ static struct ddb_entry * qla4xxx_alloc_
27943 ddb_entry->fw_ddb_index = fw_ddb_index;
27944 atomic_set(&ddb_entry->retry_relogin_timer, INVALID_ENTRY);
27945 @@ -34452,9 +34441,9 @@ diff -urNp linux-3.0.9/drivers/scsi/qla4xxx/ql4_init.c linux-3.0.9/drivers/scsi/
27946 atomic_set(&ddb_entry->relogin_timer, 0);
27947 clear_bit(DF_RELOGIN, &ddb_entry->flags);
27948 iscsi_unblock_session(ddb_entry->sess);
27949 -diff -urNp linux-3.0.9/drivers/scsi/qla4xxx/ql4_os.c linux-3.0.9/drivers/scsi/qla4xxx/ql4_os.c
27950 ---- linux-3.0.9/drivers/scsi/qla4xxx/ql4_os.c 2011-11-11 13:12:24.000000000 -0500
27951 -+++ linux-3.0.9/drivers/scsi/qla4xxx/ql4_os.c 2011-11-15 20:02:59.000000000 -0500
27952 +diff -urNp linux-3.1.1/drivers/scsi/qla4xxx/ql4_os.c linux-3.1.1/drivers/scsi/qla4xxx/ql4_os.c
27953 +--- linux-3.1.1/drivers/scsi/qla4xxx/ql4_os.c 2011-11-11 15:19:27.000000000 -0500
27954 ++++ linux-3.1.1/drivers/scsi/qla4xxx/ql4_os.c 2011-11-16 18:39:07.000000000 -0500
27955 @@ -811,13 +811,13 @@ static void qla4xxx_timer(struct scsi_ql
27956 ddb_entry->fw_ddb_device_state ==
27957 DDB_DS_SESSION_FAILED) {
27958 @@ -34471,9 +34460,9 @@ diff -urNp linux-3.0.9/drivers/scsi/qla4xxx/ql4_os.c linux-3.0.9/drivers/scsi/ql
27959 relogin_retry_count))
27960 );
27961 start_dpc++;
27962 -diff -urNp linux-3.0.9/drivers/scsi/scsi.c linux-3.0.9/drivers/scsi/scsi.c
27963 ---- linux-3.0.9/drivers/scsi/scsi.c 2011-11-11 13:12:24.000000000 -0500
27964 -+++ linux-3.0.9/drivers/scsi/scsi.c 2011-11-15 20:02:59.000000000 -0500
27965 +diff -urNp linux-3.1.1/drivers/scsi/scsi.c linux-3.1.1/drivers/scsi/scsi.c
27966 +--- linux-3.1.1/drivers/scsi/scsi.c 2011-11-11 15:19:27.000000000 -0500
27967 ++++ linux-3.1.1/drivers/scsi/scsi.c 2011-11-16 18:39:07.000000000 -0500
27968 @@ -655,7 +655,7 @@ int scsi_dispatch_cmd(struct scsi_cmnd *
27969 unsigned long timeout;
27970 int rtn = 0;
27971 @@ -34483,9 +34472,9 @@ diff -urNp linux-3.0.9/drivers/scsi/scsi.c linux-3.0.9/drivers/scsi/scsi.c
27972
27973 /* check if the device is still usable */
27974 if (unlikely(cmd->device->sdev_state == SDEV_DEL)) {
27975 -diff -urNp linux-3.0.9/drivers/scsi/scsi_debug.c linux-3.0.9/drivers/scsi/scsi_debug.c
27976 ---- linux-3.0.9/drivers/scsi/scsi_debug.c 2011-11-11 13:12:24.000000000 -0500
27977 -+++ linux-3.0.9/drivers/scsi/scsi_debug.c 2011-11-15 20:02:59.000000000 -0500
27978 +diff -urNp linux-3.1.1/drivers/scsi/scsi_debug.c linux-3.1.1/drivers/scsi/scsi_debug.c
27979 +--- linux-3.1.1/drivers/scsi/scsi_debug.c 2011-11-11 15:19:27.000000000 -0500
27980 ++++ linux-3.1.1/drivers/scsi/scsi_debug.c 2011-11-16 18:40:22.000000000 -0500
27981 @@ -1493,6 +1493,8 @@ static int resp_mode_select(struct scsi_
27982 unsigned char arr[SDEBUG_MAX_MSELECT_SZ];
27983 unsigned char *cmd = (unsigned char *)scp->cmnd;
27984 @@ -34504,10 +34493,10 @@ diff -urNp linux-3.0.9/drivers/scsi/scsi_debug.c linux-3.0.9/drivers/scsi/scsi_d
27985 if ((errsts = check_readiness(scp, 1, devip)))
27986 return errsts;
27987 memset(arr, 0, sizeof(arr));
27988 -diff -urNp linux-3.0.9/drivers/scsi/scsi_lib.c linux-3.0.9/drivers/scsi/scsi_lib.c
27989 ---- linux-3.0.9/drivers/scsi/scsi_lib.c 2011-11-11 13:12:24.000000000 -0500
27990 -+++ linux-3.0.9/drivers/scsi/scsi_lib.c 2011-11-15 20:02:59.000000000 -0500
27991 -@@ -1412,7 +1412,7 @@ static void scsi_kill_request(struct req
27992 +diff -urNp linux-3.1.1/drivers/scsi/scsi_lib.c linux-3.1.1/drivers/scsi/scsi_lib.c
27993 +--- linux-3.1.1/drivers/scsi/scsi_lib.c 2011-11-11 15:19:27.000000000 -0500
27994 ++++ linux-3.1.1/drivers/scsi/scsi_lib.c 2011-11-16 18:39:07.000000000 -0500
27995 +@@ -1413,7 +1413,7 @@ static void scsi_kill_request(struct req
27996 shost = sdev->host;
27997 scsi_init_cmd_errh(cmd);
27998 cmd->result = DID_NO_CONNECT << 16;
27999 @@ -34516,7 +34505,7 @@ diff -urNp linux-3.0.9/drivers/scsi/scsi_lib.c linux-3.0.9/drivers/scsi/scsi_lib
28000
28001 /*
28002 * SCSI request completion path will do scsi_device_unbusy(),
28003 -@@ -1438,9 +1438,9 @@ static void scsi_softirq_done(struct req
28004 +@@ -1439,9 +1439,9 @@ static void scsi_softirq_done(struct req
28005
28006 INIT_LIST_HEAD(&cmd->eh_entry);
28007
28008 @@ -34528,9 +34517,9 @@ diff -urNp linux-3.0.9/drivers/scsi/scsi_lib.c linux-3.0.9/drivers/scsi/scsi_lib
28009
28010 disposition = scsi_decide_disposition(cmd);
28011 if (disposition != SUCCESS &&
28012 -diff -urNp linux-3.0.9/drivers/scsi/scsi_sysfs.c linux-3.0.9/drivers/scsi/scsi_sysfs.c
28013 ---- linux-3.0.9/drivers/scsi/scsi_sysfs.c 2011-11-11 13:12:24.000000000 -0500
28014 -+++ linux-3.0.9/drivers/scsi/scsi_sysfs.c 2011-11-15 20:02:59.000000000 -0500
28015 +diff -urNp linux-3.1.1/drivers/scsi/scsi_sysfs.c linux-3.1.1/drivers/scsi/scsi_sysfs.c
28016 +--- linux-3.1.1/drivers/scsi/scsi_sysfs.c 2011-11-11 15:19:27.000000000 -0500
28017 ++++ linux-3.1.1/drivers/scsi/scsi_sysfs.c 2011-11-16 18:39:07.000000000 -0500
28018 @@ -622,7 +622,7 @@ show_iostat_##field(struct device *dev,
28019 char *buf) \
28020 { \
28021 @@ -34540,9 +34529,9 @@ diff -urNp linux-3.0.9/drivers/scsi/scsi_sysfs.c linux-3.0.9/drivers/scsi/scsi_s
28022 return snprintf(buf, 20, "0x%llx\n", count); \
28023 } \
28024 static DEVICE_ATTR(field, S_IRUGO, show_iostat_##field, NULL)
28025 -diff -urNp linux-3.0.9/drivers/scsi/scsi_tgt_lib.c linux-3.0.9/drivers/scsi/scsi_tgt_lib.c
28026 ---- linux-3.0.9/drivers/scsi/scsi_tgt_lib.c 2011-11-11 13:12:24.000000000 -0500
28027 -+++ linux-3.0.9/drivers/scsi/scsi_tgt_lib.c 2011-11-15 20:02:59.000000000 -0500
28028 +diff -urNp linux-3.1.1/drivers/scsi/scsi_tgt_lib.c linux-3.1.1/drivers/scsi/scsi_tgt_lib.c
28029 +--- linux-3.1.1/drivers/scsi/scsi_tgt_lib.c 2011-11-11 15:19:27.000000000 -0500
28030 ++++ linux-3.1.1/drivers/scsi/scsi_tgt_lib.c 2011-11-16 18:39:07.000000000 -0500
28031 @@ -362,7 +362,7 @@ static int scsi_map_user_pages(struct sc
28032 int err;
28033
28034 @@ -34552,9 +34541,9 @@ diff -urNp linux-3.0.9/drivers/scsi/scsi_tgt_lib.c linux-3.0.9/drivers/scsi/scsi
28035 if (err) {
28036 /*
28037 * TODO: need to fixup sg_tablesize, max_segment_size,
28038 -diff -urNp linux-3.0.9/drivers/scsi/scsi_transport_fc.c linux-3.0.9/drivers/scsi/scsi_transport_fc.c
28039 ---- linux-3.0.9/drivers/scsi/scsi_transport_fc.c 2011-11-11 13:12:24.000000000 -0500
28040 -+++ linux-3.0.9/drivers/scsi/scsi_transport_fc.c 2011-11-15 20:02:59.000000000 -0500
28041 +diff -urNp linux-3.1.1/drivers/scsi/scsi_transport_fc.c linux-3.1.1/drivers/scsi/scsi_transport_fc.c
28042 +--- linux-3.1.1/drivers/scsi/scsi_transport_fc.c 2011-11-11 15:19:27.000000000 -0500
28043 ++++ linux-3.1.1/drivers/scsi/scsi_transport_fc.c 2011-11-16 18:39:07.000000000 -0500
28044 @@ -484,7 +484,7 @@ static DECLARE_TRANSPORT_CLASS(fc_vport_
28045 * Netlink Infrastructure
28046 */
28047 @@ -34591,9 +34580,9 @@ diff -urNp linux-3.0.9/drivers/scsi/scsi_transport_fc.c linux-3.0.9/drivers/scsi
28048 return -EINVAL;
28049 /*
28050 * Check for overflow; dev_loss_tmo is u32
28051 -diff -urNp linux-3.0.9/drivers/scsi/scsi_transport_iscsi.c linux-3.0.9/drivers/scsi/scsi_transport_iscsi.c
28052 ---- linux-3.0.9/drivers/scsi/scsi_transport_iscsi.c 2011-11-11 13:12:24.000000000 -0500
28053 -+++ linux-3.0.9/drivers/scsi/scsi_transport_iscsi.c 2011-11-15 20:02:59.000000000 -0500
28054 +diff -urNp linux-3.1.1/drivers/scsi/scsi_transport_iscsi.c linux-3.1.1/drivers/scsi/scsi_transport_iscsi.c
28055 +--- linux-3.1.1/drivers/scsi/scsi_transport_iscsi.c 2011-11-11 15:19:27.000000000 -0500
28056 ++++ linux-3.1.1/drivers/scsi/scsi_transport_iscsi.c 2011-11-16 18:39:07.000000000 -0500
28057 @@ -83,7 +83,7 @@ struct iscsi_internal {
28058 struct device_attribute *session_attrs[ISCSI_SESSION_ATTRS + 1];
28059 };
28060 @@ -34621,9 +34610,9 @@ diff -urNp linux-3.0.9/drivers/scsi/scsi_transport_iscsi.c linux-3.0.9/drivers/s
28061
28062 err = class_register(&iscsi_transport_class);
28063 if (err)
28064 -diff -urNp linux-3.0.9/drivers/scsi/scsi_transport_srp.c linux-3.0.9/drivers/scsi/scsi_transport_srp.c
28065 ---- linux-3.0.9/drivers/scsi/scsi_transport_srp.c 2011-11-11 13:12:24.000000000 -0500
28066 -+++ linux-3.0.9/drivers/scsi/scsi_transport_srp.c 2011-11-15 20:02:59.000000000 -0500
28067 +diff -urNp linux-3.1.1/drivers/scsi/scsi_transport_srp.c linux-3.1.1/drivers/scsi/scsi_transport_srp.c
28068 +--- linux-3.1.1/drivers/scsi/scsi_transport_srp.c 2011-11-11 15:19:27.000000000 -0500
28069 ++++ linux-3.1.1/drivers/scsi/scsi_transport_srp.c 2011-11-16 18:39:07.000000000 -0500
28070 @@ -33,7 +33,7 @@
28071 #include "scsi_transport_srp_internal.h"
28072
28073 @@ -34651,9 +34640,9 @@ diff -urNp linux-3.0.9/drivers/scsi/scsi_transport_srp.c linux-3.0.9/drivers/scs
28074 dev_set_name(&rport->dev, "port-%d:%d", shost->host_no, id);
28075
28076 transport_setup_device(&rport->dev);
28077 -diff -urNp linux-3.0.9/drivers/scsi/sg.c linux-3.0.9/drivers/scsi/sg.c
28078 ---- linux-3.0.9/drivers/scsi/sg.c 2011-11-11 13:12:24.000000000 -0500
28079 -+++ linux-3.0.9/drivers/scsi/sg.c 2011-11-15 20:02:59.000000000 -0500
28080 +diff -urNp linux-3.1.1/drivers/scsi/sg.c linux-3.1.1/drivers/scsi/sg.c
28081 +--- linux-3.1.1/drivers/scsi/sg.c 2011-11-11 15:19:27.000000000 -0500
28082 ++++ linux-3.1.1/drivers/scsi/sg.c 2011-11-16 18:39:07.000000000 -0500
28083 @@ -1075,7 +1075,7 @@ sg_ioctl(struct file *filp, unsigned int
28084 sdp->disk->disk_name,
28085 MKDEV(SCSI_GENERIC_MAJOR, sdp->index),
28086 @@ -34681,9 +34670,9 @@ diff -urNp linux-3.0.9/drivers/scsi/sg.c linux-3.0.9/drivers/scsi/sg.c
28087
28088 sg_proc_sgp = proc_mkdir(sg_proc_sg_dirname, NULL);
28089 if (!sg_proc_sgp)
28090 -diff -urNp linux-3.0.9/drivers/scsi/sym53c8xx_2/sym_glue.c linux-3.0.9/drivers/scsi/sym53c8xx_2/sym_glue.c
28091 ---- linux-3.0.9/drivers/scsi/sym53c8xx_2/sym_glue.c 2011-11-11 13:12:24.000000000 -0500
28092 -+++ linux-3.0.9/drivers/scsi/sym53c8xx_2/sym_glue.c 2011-11-15 20:02:59.000000000 -0500
28093 +diff -urNp linux-3.1.1/drivers/scsi/sym53c8xx_2/sym_glue.c linux-3.1.1/drivers/scsi/sym53c8xx_2/sym_glue.c
28094 +--- linux-3.1.1/drivers/scsi/sym53c8xx_2/sym_glue.c 2011-11-11 15:19:27.000000000 -0500
28095 ++++ linux-3.1.1/drivers/scsi/sym53c8xx_2/sym_glue.c 2011-11-16 18:40:22.000000000 -0500
28096 @@ -1756,6 +1756,8 @@ static int __devinit sym2_probe(struct p
28097 int do_iounmap = 0;
28098 int do_disable_device = 1;
28099 @@ -34693,9 +34682,9 @@ diff -urNp linux-3.0.9/drivers/scsi/sym53c8xx_2/sym_glue.c linux-3.0.9/drivers/s
28100 memset(&sym_dev, 0, sizeof(sym_dev));
28101 memset(&nvram, 0, sizeof(nvram));
28102 sym_dev.pdev = pdev;
28103 -diff -urNp linux-3.0.9/drivers/scsi/vmw_pvscsi.c linux-3.0.9/drivers/scsi/vmw_pvscsi.c
28104 ---- linux-3.0.9/drivers/scsi/vmw_pvscsi.c 2011-11-11 13:12:24.000000000 -0500
28105 -+++ linux-3.0.9/drivers/scsi/vmw_pvscsi.c 2011-11-15 20:02:59.000000000 -0500
28106 +diff -urNp linux-3.1.1/drivers/scsi/vmw_pvscsi.c linux-3.1.1/drivers/scsi/vmw_pvscsi.c
28107 +--- linux-3.1.1/drivers/scsi/vmw_pvscsi.c 2011-11-11 15:19:27.000000000 -0500
28108 ++++ linux-3.1.1/drivers/scsi/vmw_pvscsi.c 2011-11-16 18:40:22.000000000 -0500
28109 @@ -447,6 +447,8 @@ static void pvscsi_setup_all_rings(const
28110 dma_addr_t base;
28111 unsigned i;
28112 @@ -34705,21 +34694,9 @@ diff -urNp linux-3.0.9/drivers/scsi/vmw_pvscsi.c linux-3.0.9/drivers/scsi/vmw_pv
28113 cmd.ringsStatePPN = adapter->ringStatePA >> PAGE_SHIFT;
28114 cmd.reqRingNumPages = adapter->req_pages;
28115 cmd.cmpRingNumPages = adapter->cmp_pages;
28116 -diff -urNp linux-3.0.9/drivers/spi/dw_spi_pci.c linux-3.0.9/drivers/spi/dw_spi_pci.c
28117 ---- linux-3.0.9/drivers/spi/dw_spi_pci.c 2011-11-11 13:12:24.000000000 -0500
28118 -+++ linux-3.0.9/drivers/spi/dw_spi_pci.c 2011-11-15 20:02:59.000000000 -0500
28119 -@@ -148,7 +148,7 @@ static int spi_resume(struct pci_dev *pd
28120 - #define spi_resume NULL
28121 - #endif
28122 -
28123 --static const struct pci_device_id pci_ids[] __devinitdata = {
28124 -+static const struct pci_device_id pci_ids[] __devinitconst = {
28125 - /* Intel MID platform SPI controller 0 */
28126 - { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x0800) },
28127 - {},
28128 -diff -urNp linux-3.0.9/drivers/spi/spi.c linux-3.0.9/drivers/spi/spi.c
28129 ---- linux-3.0.9/drivers/spi/spi.c 2011-11-11 13:12:24.000000000 -0500
28130 -+++ linux-3.0.9/drivers/spi/spi.c 2011-11-15 20:02:59.000000000 -0500
28131 +diff -urNp linux-3.1.1/drivers/spi/spi.c linux-3.1.1/drivers/spi/spi.c
28132 +--- linux-3.1.1/drivers/spi/spi.c 2011-11-11 15:19:27.000000000 -0500
28133 ++++ linux-3.1.1/drivers/spi/spi.c 2011-11-16 18:39:07.000000000 -0500
28134 @@ -1023,7 +1023,7 @@ int spi_bus_unlock(struct spi_master *ma
28135 EXPORT_SYMBOL_GPL(spi_bus_unlock);
28136
28137 @@ -34729,9 +34706,21 @@ diff -urNp linux-3.0.9/drivers/spi/spi.c linux-3.0.9/drivers/spi/spi.c
28138
28139 static u8 *buf;
28140
28141 -diff -urNp linux-3.0.9/drivers/staging/ath6kl/os/linux/ar6000_drv.c linux-3.0.9/drivers/staging/ath6kl/os/linux/ar6000_drv.c
28142 ---- linux-3.0.9/drivers/staging/ath6kl/os/linux/ar6000_drv.c 2011-11-11 13:12:24.000000000 -0500
28143 -+++ linux-3.0.9/drivers/staging/ath6kl/os/linux/ar6000_drv.c 2011-11-15 20:02:59.000000000 -0500
28144 +diff -urNp linux-3.1.1/drivers/spi/spi-dw-pci.c linux-3.1.1/drivers/spi/spi-dw-pci.c
28145 +--- linux-3.1.1/drivers/spi/spi-dw-pci.c 2011-11-11 15:19:27.000000000 -0500
28146 ++++ linux-3.1.1/drivers/spi/spi-dw-pci.c 2011-11-16 18:39:07.000000000 -0500
28147 +@@ -148,7 +148,7 @@ static int spi_resume(struct pci_dev *pd
28148 + #define spi_resume NULL
28149 + #endif
28150 +
28151 +-static const struct pci_device_id pci_ids[] __devinitdata = {
28152 ++static const struct pci_device_id pci_ids[] __devinitconst = {
28153 + /* Intel MID platform SPI controller 0 */
28154 + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x0800) },
28155 + {},
28156 +diff -urNp linux-3.1.1/drivers/staging/ath6kl/os/linux/ar6000_drv.c linux-3.1.1/drivers/staging/ath6kl/os/linux/ar6000_drv.c
28157 +--- linux-3.1.1/drivers/staging/ath6kl/os/linux/ar6000_drv.c 2011-11-11 15:19:27.000000000 -0500
28158 ++++ linux-3.1.1/drivers/staging/ath6kl/os/linux/ar6000_drv.c 2011-11-16 18:39:07.000000000 -0500
28159 @@ -362,7 +362,7 @@ static struct ar_cookie s_ar_cookie_mem[
28160 (((ar)->arTargetType == TARGET_TYPE_AR6003) ? AR6003_HOST_INTEREST_ITEM_ADDRESS(item) : 0))
28161
28162 @@ -34741,9 +34730,9 @@ diff -urNp linux-3.0.9/drivers/staging/ath6kl/os/linux/ar6000_drv.c linux-3.0.9/
28163 .ndo_init = NULL,
28164 .ndo_open = ar6000_open,
28165 .ndo_stop = ar6000_close,
28166 -diff -urNp linux-3.0.9/drivers/staging/ath6kl/os/linux/include/ar6k_pal.h linux-3.0.9/drivers/staging/ath6kl/os/linux/include/ar6k_pal.h
28167 ---- linux-3.0.9/drivers/staging/ath6kl/os/linux/include/ar6k_pal.h 2011-11-11 13:12:24.000000000 -0500
28168 -+++ linux-3.0.9/drivers/staging/ath6kl/os/linux/include/ar6k_pal.h 2011-11-15 20:02:59.000000000 -0500
28169 +diff -urNp linux-3.1.1/drivers/staging/ath6kl/os/linux/include/ar6k_pal.h linux-3.1.1/drivers/staging/ath6kl/os/linux/include/ar6k_pal.h
28170 +--- linux-3.1.1/drivers/staging/ath6kl/os/linux/include/ar6k_pal.h 2011-11-11 15:19:27.000000000 -0500
28171 ++++ linux-3.1.1/drivers/staging/ath6kl/os/linux/include/ar6k_pal.h 2011-11-16 18:39:07.000000000 -0500
28172 @@ -30,7 +30,7 @@ typedef bool (*ar6k_pal_recv_pkt_t)(void
28173 typedef struct ar6k_pal_config_s
28174 {
28175 @@ -34753,99 +34742,99 @@ diff -urNp linux-3.0.9/drivers/staging/ath6kl/os/linux/include/ar6k_pal.h linux-
28176
28177 void register_pal_cb(ar6k_pal_config_t *palConfig_p);
28178 #endif /* _AR6K_PAL_H_ */
28179 -diff -urNp linux-3.0.9/drivers/staging/brcm80211/brcmfmac/dhd_linux.c linux-3.0.9/drivers/staging/brcm80211/brcmfmac/dhd_linux.c
28180 ---- linux-3.0.9/drivers/staging/brcm80211/brcmfmac/dhd_linux.c 2011-11-11 13:12:24.000000000 -0500
28181 -+++ linux-3.0.9/drivers/staging/brcm80211/brcmfmac/dhd_linux.c 2011-11-15 20:02:59.000000000 -0500
28182 -@@ -853,14 +853,14 @@ static void dhd_op_if(dhd_if_t *ifp)
28183 +diff -urNp linux-3.1.1/drivers/staging/brcm80211/brcmfmac/dhd_linux.c linux-3.1.1/drivers/staging/brcm80211/brcmfmac/dhd_linux.c
28184 +--- linux-3.1.1/drivers/staging/brcm80211/brcmfmac/dhd_linux.c 2011-11-11 15:19:27.000000000 -0500
28185 ++++ linux-3.1.1/drivers/staging/brcm80211/brcmfmac/dhd_linux.c 2011-11-16 18:39:07.000000000 -0500
28186 +@@ -451,14 +451,14 @@ static void brcmf_op_if(struct brcmf_if
28187 free_netdev(ifp->net);
28188 }
28189 /* Allocate etherdev, including space for private structure */
28190 -- ifp->net = alloc_etherdev(sizeof(dhd));
28191 -+ ifp->net = alloc_etherdev(sizeof(*dhd));
28192 +- ifp->net = alloc_etherdev(sizeof(drvr_priv));
28193 ++ ifp->net = alloc_etherdev(sizeof(*drvr_priv));
28194 if (!ifp->net) {
28195 - DHD_ERROR(("%s: OOM - alloc_etherdev\n", __func__));
28196 + BRCMF_ERROR(("%s: OOM - alloc_etherdev\n", __func__));
28197 ret = -ENOMEM;
28198 }
28199 if (ret == 0) {
28200 strcpy(ifp->net->name, ifp->name);
28201 -- memcpy(netdev_priv(ifp->net), &dhd, sizeof(dhd));
28202 -+ memcpy(netdev_priv(ifp->net), dhd, sizeof(*dhd));
28203 - err = dhd_net_attach(&dhd->pub, ifp->idx);
28204 +- memcpy(netdev_priv(ifp->net), &drvr_priv, sizeof(drvr_priv));
28205 ++ memcpy(netdev_priv(ifp->net), &drvr_priv, sizeof(*drvr_priv));
28206 + err = brcmf_net_attach(&drvr_priv->pub, ifp->idx);
28207 if (err != 0) {
28208 - DHD_ERROR(("%s: dhd_net_attach failed, "
28209 -@@ -1872,7 +1872,7 @@ dhd_pub_t *dhd_attach(struct dhd_bus *bu
28210 - strcpy(nv_path, nvram_path);
28211 + BRCMF_ERROR(("%s: brcmf_net_attach failed, "
28212 +@@ -1279,7 +1279,7 @@ struct brcmf_pub *brcmf_attach(struct br
28213 + BRCMF_TRACE(("%s: Enter\n", __func__));
28214
28215 /* Allocate etherdev, including space for private structure */
28216 -- net = alloc_etherdev(sizeof(dhd));
28217 -+ net = alloc_etherdev(sizeof(*dhd));
28218 +- net = alloc_etherdev(sizeof(drvr_priv));
28219 ++ net = alloc_etherdev(sizeof(*drvr_priv));
28220 if (!net) {
28221 - DHD_ERROR(("%s: OOM - alloc_etherdev\n", __func__));
28222 + BRCMF_ERROR(("%s: OOM - alloc_etherdev\n", __func__));
28223 goto fail;
28224 -@@ -1888,7 +1888,7 @@ dhd_pub_t *dhd_attach(struct dhd_bus *bu
28225 +@@ -1295,7 +1295,7 @@ struct brcmf_pub *brcmf_attach(struct br
28226 /*
28227 - * Save the dhd_info into the priv
28228 + * Save the brcmf_info into the priv
28229 */
28230 -- memcpy(netdev_priv(net), &dhd, sizeof(dhd));
28231 -+ memcpy(netdev_priv(net), dhd, sizeof(*dhd));
28232 +- memcpy(netdev_priv(net), &drvr_priv, sizeof(drvr_priv));
28233 ++ memcpy(netdev_priv(net), &drvr_priv, sizeof(*drvr_priv));
28234
28235 /* Set network interface name if it was provided as module parameter */
28236 if (iface_name[0]) {
28237 -@@ -2004,7 +2004,7 @@ dhd_pub_t *dhd_attach(struct dhd_bus *bu
28238 +@@ -1352,7 +1352,7 @@ struct brcmf_pub *brcmf_attach(struct br
28239 /*
28240 - * Save the dhd_info into the priv
28241 + * Save the brcmf_info into the priv
28242 */
28243 -- memcpy(netdev_priv(net), &dhd, sizeof(dhd));
28244 -+ memcpy(netdev_priv(net), dhd, sizeof(*dhd));
28245 -
28246 - #if defined(CUSTOMER_HW2) && defined(CONFIG_WIFI_CONTROL_FUNC)
28247 - g_bus = bus;
28248 -diff -urNp linux-3.0.9/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_int.h linux-3.0.9/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_int.h
28249 ---- linux-3.0.9/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_int.h 2011-11-11 13:12:24.000000000 -0500
28250 -+++ linux-3.0.9/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_int.h 2011-11-15 20:02:59.000000000 -0500
28251 -@@ -593,7 +593,7 @@ struct phy_func_ptr {
28252 +- memcpy(netdev_priv(net), &drvr_priv, sizeof(drvr_priv));
28253 ++ memcpy(netdev_priv(net), &drvr_priv, sizeof(*drvr_priv));
28254 +
28255 + #if defined(CONFIG_PM_SLEEP)
28256 + atomic_set(&brcmf_mmc_suspend, false);
28257 +diff -urNp linux-3.1.1/drivers/staging/brcm80211/brcmfmac/sdio_host.h linux-3.1.1/drivers/staging/brcm80211/brcmfmac/sdio_host.h
28258 +--- linux-3.1.1/drivers/staging/brcm80211/brcmfmac/sdio_host.h 2011-11-11 15:19:27.000000000 -0500
28259 ++++ linux-3.1.1/drivers/staging/brcm80211/brcmfmac/sdio_host.h 2011-11-16 18:39:07.000000000 -0500
28260 +@@ -263,7 +263,7 @@ struct brcmf_sdioh_driver {
28261 + u16 func, uint bustype, u32 regsva, void *param);
28262 + /* detach from device */
28263 + void (*detach) (void *ch);
28264 +-};
28265 ++} __no_const;
28266 +
28267 + struct sdioh_info;
28268 +
28269 +diff -urNp linux-3.1.1/drivers/staging/brcm80211/brcmsmac/phy/phy_int.h linux-3.1.1/drivers/staging/brcm80211/brcmsmac/phy/phy_int.h
28270 +--- linux-3.1.1/drivers/staging/brcm80211/brcmsmac/phy/phy_int.h 2011-11-11 15:19:27.000000000 -0500
28271 ++++ linux-3.1.1/drivers/staging/brcm80211/brcmsmac/phy/phy_int.h 2011-11-16 18:39:07.000000000 -0500
28272 +@@ -591,7 +591,7 @@ struct phy_func_ptr {
28273 initfn_t carrsuppr;
28274 rxsigpwrfn_t rxsigpwr;
28275 detachfn_t detach;
28276 -};
28277 +} __no_const;
28278 - typedef struct phy_func_ptr phy_func_ptr_t;
28279 -
28280 - struct phy_info {
28281 -diff -urNp linux-3.0.9/drivers/staging/brcm80211/include/bcmsdh.h linux-3.0.9/drivers/staging/brcm80211/include/bcmsdh.h
28282 ---- linux-3.0.9/drivers/staging/brcm80211/include/bcmsdh.h 2011-11-11 13:12:24.000000000 -0500
28283 -+++ linux-3.0.9/drivers/staging/brcm80211/include/bcmsdh.h 2011-11-15 20:02:59.000000000 -0500
28284 -@@ -185,7 +185,7 @@ typedef struct {
28285 - u16 func, uint bustype, void *regsva, void *param);
28286 - /* detach from device */
28287 - void (*detach) (void *ch);
28288 --} bcmsdh_driver_t;
28289 -+} __no_const bcmsdh_driver_t;
28290 -
28291 - /* platform specific/high level functions */
28292 - extern int bcmsdh_register(bcmsdh_driver_t *driver);
28293 -diff -urNp linux-3.0.9/drivers/staging/et131x/et1310_tx.c linux-3.0.9/drivers/staging/et131x/et1310_tx.c
28294 ---- linux-3.0.9/drivers/staging/et131x/et1310_tx.c 2011-11-11 13:12:24.000000000 -0500
28295 -+++ linux-3.0.9/drivers/staging/et131x/et1310_tx.c 2011-11-15 20:02:59.000000000 -0500
28296 +
28297 + struct brcms_phy {
28298 + struct brcms_phy_pub pubpi_ro;
28299 +diff -urNp linux-3.1.1/drivers/staging/et131x/et1310_tx.c linux-3.1.1/drivers/staging/et131x/et1310_tx.c
28300 +--- linux-3.1.1/drivers/staging/et131x/et1310_tx.c 2011-11-11 15:19:27.000000000 -0500
28301 ++++ linux-3.1.1/drivers/staging/et131x/et1310_tx.c 2011-11-16 18:39:07.000000000 -0500
28302 @@ -635,11 +635,11 @@ inline void et131x_free_send_packet(stru
28303 struct net_device_stats *stats = &etdev->net_stats;
28304
28305 if (tcb->flags & fMP_DEST_BROAD)
28306 -- atomic_inc(&etdev->Stats.brdcstxmt);
28307 -+ atomic_inc_unchecked(&etdev->Stats.brdcstxmt);
28308 +- atomic_inc(&etdev->stats.brdcstxmt);
28309 ++ atomic_inc_unchecked(&etdev->stats.brdcstxmt);
28310 else if (tcb->flags & fMP_DEST_MULTI)
28311 -- atomic_inc(&etdev->Stats.multixmt);
28312 -+ atomic_inc_unchecked(&etdev->Stats.multixmt);
28313 +- atomic_inc(&etdev->stats.multixmt);
28314 ++ atomic_inc_unchecked(&etdev->stats.multixmt);
28315 else
28316 -- atomic_inc(&etdev->Stats.unixmt);
28317 -+ atomic_inc_unchecked(&etdev->Stats.unixmt);
28318 +- atomic_inc(&etdev->stats.unixmt);
28319 ++ atomic_inc_unchecked(&etdev->stats.unixmt);
28320
28321 if (tcb->skb) {
28322 stats->tx_bytes += tcb->skb->len;
28323 -diff -urNp linux-3.0.9/drivers/staging/et131x/et131x_adapter.h linux-3.0.9/drivers/staging/et131x/et131x_adapter.h
28324 ---- linux-3.0.9/drivers/staging/et131x/et131x_adapter.h 2011-11-11 13:12:24.000000000 -0500
28325 -+++ linux-3.0.9/drivers/staging/et131x/et131x_adapter.h 2011-11-15 20:02:59.000000000 -0500
28326 -@@ -110,11 +110,11 @@ typedef struct _ce_stats_t {
28327 +diff -urNp linux-3.1.1/drivers/staging/et131x/et131x_adapter.h linux-3.1.1/drivers/staging/et131x/et131x_adapter.h
28328 +--- linux-3.1.1/drivers/staging/et131x/et131x_adapter.h 2011-11-11 15:19:27.000000000 -0500
28329 ++++ linux-3.1.1/drivers/staging/et131x/et131x_adapter.h 2011-11-16 18:39:07.000000000 -0500
28330 +@@ -106,11 +106,11 @@ struct ce_stats {
28331 * operations
28332 */
28333 u32 unircv; /* # multicast packets received */
28334 @@ -34860,10 +34849,10 @@ diff -urNp linux-3.0.9/drivers/staging/et131x/et131x_adapter.h linux-3.0.9/drive
28335 u32 norcvbuf; /* # Rx packets discarded */
28336 u32 noxmtbuf; /* # Tx packets discarded */
28337
28338 -diff -urNp linux-3.0.9/drivers/staging/hv/channel.c linux-3.0.9/drivers/staging/hv/channel.c
28339 ---- linux-3.0.9/drivers/staging/hv/channel.c 2011-11-11 13:12:24.000000000 -0500
28340 -+++ linux-3.0.9/drivers/staging/hv/channel.c 2011-11-15 20:02:59.000000000 -0500
28341 -@@ -433,8 +433,8 @@ int vmbus_establish_gpadl(struct vmbus_c
28342 +diff -urNp linux-3.1.1/drivers/staging/hv/channel.c linux-3.1.1/drivers/staging/hv/channel.c
28343 +--- linux-3.1.1/drivers/staging/hv/channel.c 2011-11-11 15:19:27.000000000 -0500
28344 ++++ linux-3.1.1/drivers/staging/hv/channel.c 2011-11-16 18:39:07.000000000 -0500
28345 +@@ -447,8 +447,8 @@ int vmbus_establish_gpadl(struct vmbus_c
28346 int ret = 0;
28347 int t;
28348
28349 @@ -34874,9 +34863,9 @@ diff -urNp linux-3.0.9/drivers/staging/hv/channel.c linux-3.0.9/drivers/staging/
28350
28351 ret = create_gpadl_header(kbuffer, size, &msginfo, &msgcount);
28352 if (ret)
28353 -diff -urNp linux-3.0.9/drivers/staging/hv/hv.c linux-3.0.9/drivers/staging/hv/hv.c
28354 ---- linux-3.0.9/drivers/staging/hv/hv.c 2011-11-11 13:12:24.000000000 -0500
28355 -+++ linux-3.0.9/drivers/staging/hv/hv.c 2011-11-15 20:02:59.000000000 -0500
28356 +diff -urNp linux-3.1.1/drivers/staging/hv/hv.c linux-3.1.1/drivers/staging/hv/hv.c
28357 +--- linux-3.1.1/drivers/staging/hv/hv.c 2011-11-11 15:19:27.000000000 -0500
28358 ++++ linux-3.1.1/drivers/staging/hv/hv.c 2011-11-16 18:39:07.000000000 -0500
28359 @@ -132,7 +132,7 @@ static u64 do_hypercall(u64 control, voi
28360 u64 output_address = (output) ? virt_to_phys(output) : 0;
28361 u32 output_address_hi = output_address >> 32;
28362 @@ -34886,10 +34875,10 @@ diff -urNp linux-3.0.9/drivers/staging/hv/hv.c linux-3.0.9/drivers/staging/hv/hv
28363
28364 __asm__ __volatile__ ("call *%8" : "=d"(hv_status_hi),
28365 "=a"(hv_status_lo) : "d" (control_hi),
28366 -diff -urNp linux-3.0.9/drivers/staging/hv/hv_mouse.c linux-3.0.9/drivers/staging/hv/hv_mouse.c
28367 ---- linux-3.0.9/drivers/staging/hv/hv_mouse.c 2011-11-11 13:12:24.000000000 -0500
28368 -+++ linux-3.0.9/drivers/staging/hv/hv_mouse.c 2011-11-15 20:02:59.000000000 -0500
28369 -@@ -879,8 +879,10 @@ static void reportdesc_callback(struct h
28370 +diff -urNp linux-3.1.1/drivers/staging/hv/hv_mouse.c linux-3.1.1/drivers/staging/hv/hv_mouse.c
28371 +--- linux-3.1.1/drivers/staging/hv/hv_mouse.c 2011-11-11 15:19:27.000000000 -0500
28372 ++++ linux-3.1.1/drivers/staging/hv/hv_mouse.c 2011-11-16 18:39:07.000000000 -0500
28373 +@@ -878,8 +878,10 @@ static void reportdesc_callback(struct h
28374 if (hid_dev) {
28375 DPRINT_INFO(INPUTVSC_DRV, "hid_device created");
28376
28377 @@ -34902,9 +34891,9 @@ diff -urNp linux-3.0.9/drivers/staging/hv/hv_mouse.c linux-3.0.9/drivers/staging
28378
28379 hid_dev->bus = BUS_VIRTUAL;
28380 hid_dev->vendor = input_device_ctx->device_info.vendor;
28381 -diff -urNp linux-3.0.9/drivers/staging/hv/hyperv_vmbus.h linux-3.0.9/drivers/staging/hv/hyperv_vmbus.h
28382 ---- linux-3.0.9/drivers/staging/hv/hyperv_vmbus.h 2011-11-11 13:12:24.000000000 -0500
28383 -+++ linux-3.0.9/drivers/staging/hv/hyperv_vmbus.h 2011-11-15 20:02:59.000000000 -0500
28384 +diff -urNp linux-3.1.1/drivers/staging/hv/hyperv_vmbus.h linux-3.1.1/drivers/staging/hv/hyperv_vmbus.h
28385 +--- linux-3.1.1/drivers/staging/hv/hyperv_vmbus.h 2011-11-11 15:19:27.000000000 -0500
28386 ++++ linux-3.1.1/drivers/staging/hv/hyperv_vmbus.h 2011-11-16 18:39:07.000000000 -0500
28387 @@ -559,7 +559,7 @@ enum vmbus_connect_state {
28388 struct vmbus_connection {
28389 enum vmbus_connect_state conn_state;
28390 @@ -34914,9 +34903,9 @@ diff -urNp linux-3.0.9/drivers/staging/hv/hyperv_vmbus.h linux-3.0.9/drivers/sta
28391
28392 /*
28393 * Represents channel interrupts. Each bit position represents a
28394 -diff -urNp linux-3.0.9/drivers/staging/hv/rndis_filter.c linux-3.0.9/drivers/staging/hv/rndis_filter.c
28395 ---- linux-3.0.9/drivers/staging/hv/rndis_filter.c 2011-11-11 13:12:24.000000000 -0500
28396 -+++ linux-3.0.9/drivers/staging/hv/rndis_filter.c 2011-11-15 20:02:59.000000000 -0500
28397 +diff -urNp linux-3.1.1/drivers/staging/hv/rndis_filter.c linux-3.1.1/drivers/staging/hv/rndis_filter.c
28398 +--- linux-3.1.1/drivers/staging/hv/rndis_filter.c 2011-11-11 15:19:27.000000000 -0500
28399 ++++ linux-3.1.1/drivers/staging/hv/rndis_filter.c 2011-11-16 18:39:07.000000000 -0500
28400 @@ -43,7 +43,7 @@ struct rndis_device {
28401
28402 enum rndis_device_state state;
28403 @@ -34935,7 +34924,7 @@ diff -urNp linux-3.0.9/drivers/staging/hv/rndis_filter.c linux-3.0.9/drivers/sta
28404
28405 /* Add to the request list */
28406 spin_lock_irqsave(&dev->request_lock, flags);
28407 -@@ -637,7 +637,7 @@ static void rndis_filter_halt_device(str
28408 +@@ -622,7 +622,7 @@ static void rndis_filter_halt_device(str
28409
28410 /* Setup the rndis set */
28411 halt = &request->request_msg.msg.halt_req;
28412 @@ -34944,10 +34933,10 @@ diff -urNp linux-3.0.9/drivers/staging/hv/rndis_filter.c linux-3.0.9/drivers/sta
28413
28414 /* Ignore return since this msg is optional. */
28415 rndis_filter_send_request(dev, request);
28416 -diff -urNp linux-3.0.9/drivers/staging/hv/vmbus_drv.c linux-3.0.9/drivers/staging/hv/vmbus_drv.c
28417 ---- linux-3.0.9/drivers/staging/hv/vmbus_drv.c 2011-11-11 13:12:24.000000000 -0500
28418 -+++ linux-3.0.9/drivers/staging/hv/vmbus_drv.c 2011-11-15 20:02:59.000000000 -0500
28419 -@@ -668,11 +668,11 @@ int vmbus_child_device_register(struct h
28420 +diff -urNp linux-3.1.1/drivers/staging/hv/vmbus_drv.c linux-3.1.1/drivers/staging/hv/vmbus_drv.c
28421 +--- linux-3.1.1/drivers/staging/hv/vmbus_drv.c 2011-11-11 15:19:27.000000000 -0500
28422 ++++ linux-3.1.1/drivers/staging/hv/vmbus_drv.c 2011-11-16 18:39:07.000000000 -0500
28423 +@@ -660,11 +660,11 @@ int vmbus_child_device_register(struct h
28424 {
28425 int ret = 0;
28426
28427 @@ -34961,9 +34950,9 @@ diff -urNp linux-3.0.9/drivers/staging/hv/vmbus_drv.c linux-3.0.9/drivers/stagin
28428
28429 /* The new device belongs to this bus */
28430 child_device_obj->device.bus = &hv_bus; /* device->dev.bus; */
28431 -diff -urNp linux-3.0.9/drivers/staging/iio/ring_generic.h linux-3.0.9/drivers/staging/iio/ring_generic.h
28432 ---- linux-3.0.9/drivers/staging/iio/ring_generic.h 2011-11-11 13:12:24.000000000 -0500
28433 -+++ linux-3.0.9/drivers/staging/iio/ring_generic.h 2011-11-15 20:02:59.000000000 -0500
28434 +diff -urNp linux-3.1.1/drivers/staging/iio/ring_generic.h linux-3.1.1/drivers/staging/iio/ring_generic.h
28435 +--- linux-3.1.1/drivers/staging/iio/ring_generic.h 2011-11-11 15:19:27.000000000 -0500
28436 ++++ linux-3.1.1/drivers/staging/iio/ring_generic.h 2011-11-16 18:39:07.000000000 -0500
28437 @@ -62,7 +62,7 @@ struct iio_ring_access_funcs {
28438
28439 int (*is_enabled)(struct iio_ring_buffer *ring);
28440 @@ -34973,9 +34962,9 @@ diff -urNp linux-3.0.9/drivers/staging/iio/ring_generic.h linux-3.0.9/drivers/st
28441
28442 struct iio_ring_setup_ops {
28443 int (*preenable)(struct iio_dev *);
28444 -diff -urNp linux-3.0.9/drivers/staging/octeon/ethernet.c linux-3.0.9/drivers/staging/octeon/ethernet.c
28445 ---- linux-3.0.9/drivers/staging/octeon/ethernet.c 2011-11-11 13:12:24.000000000 -0500
28446 -+++ linux-3.0.9/drivers/staging/octeon/ethernet.c 2011-11-15 20:02:59.000000000 -0500
28447 +diff -urNp linux-3.1.1/drivers/staging/octeon/ethernet.c linux-3.1.1/drivers/staging/octeon/ethernet.c
28448 +--- linux-3.1.1/drivers/staging/octeon/ethernet.c 2011-11-11 15:19:27.000000000 -0500
28449 ++++ linux-3.1.1/drivers/staging/octeon/ethernet.c 2011-11-16 18:39:07.000000000 -0500
28450 @@ -258,11 +258,11 @@ static struct net_device_stats *cvm_oct_
28451 * since the RX tasklet also increments it.
28452 */
28453 @@ -34992,10 +34981,10 @@ diff -urNp linux-3.0.9/drivers/staging/octeon/ethernet.c linux-3.0.9/drivers/sta
28454 #endif
28455 }
28456
28457 -diff -urNp linux-3.0.9/drivers/staging/octeon/ethernet-rx.c linux-3.0.9/drivers/staging/octeon/ethernet-rx.c
28458 ---- linux-3.0.9/drivers/staging/octeon/ethernet-rx.c 2011-11-11 13:12:24.000000000 -0500
28459 -+++ linux-3.0.9/drivers/staging/octeon/ethernet-rx.c 2011-11-15 20:02:59.000000000 -0500
28460 -@@ -417,11 +417,11 @@ static int cvm_oct_napi_poll(struct napi
28461 +diff -urNp linux-3.1.1/drivers/staging/octeon/ethernet-rx.c linux-3.1.1/drivers/staging/octeon/ethernet-rx.c
28462 +--- linux-3.1.1/drivers/staging/octeon/ethernet-rx.c 2011-11-11 15:19:27.000000000 -0500
28463 ++++ linux-3.1.1/drivers/staging/octeon/ethernet-rx.c 2011-11-16 18:39:07.000000000 -0500
28464 +@@ -420,11 +420,11 @@ static int cvm_oct_napi_poll(struct napi
28465 /* Increment RX stats for virtual ports */
28466 if (work->ipprt >= CVMX_PIP_NUM_INPUT_PORTS) {
28467 #ifdef CONFIG_64BIT
28468 @@ -35011,7 +35000,7 @@ diff -urNp linux-3.0.9/drivers/staging/octeon/ethernet-rx.c linux-3.0.9/drivers/
28469 #endif
28470 }
28471 netif_receive_skb(skb);
28472 -@@ -433,9 +433,9 @@ static int cvm_oct_napi_poll(struct napi
28473 +@@ -436,9 +436,9 @@ static int cvm_oct_napi_poll(struct napi
28474 dev->name);
28475 */
28476 #ifdef CONFIG_64BIT
28477 @@ -35023,10 +35012,10 @@ diff -urNp linux-3.0.9/drivers/staging/octeon/ethernet-rx.c linux-3.0.9/drivers/
28478 #endif
28479 dev_kfree_skb_irq(skb);
28480 }
28481 -diff -urNp linux-3.0.9/drivers/staging/pohmelfs/inode.c linux-3.0.9/drivers/staging/pohmelfs/inode.c
28482 ---- linux-3.0.9/drivers/staging/pohmelfs/inode.c 2011-11-11 13:12:24.000000000 -0500
28483 -+++ linux-3.0.9/drivers/staging/pohmelfs/inode.c 2011-11-15 20:02:59.000000000 -0500
28484 -@@ -1856,7 +1856,7 @@ static int pohmelfs_fill_super(struct su
28485 +diff -urNp linux-3.1.1/drivers/staging/pohmelfs/inode.c linux-3.1.1/drivers/staging/pohmelfs/inode.c
28486 +--- linux-3.1.1/drivers/staging/pohmelfs/inode.c 2011-11-11 15:19:27.000000000 -0500
28487 ++++ linux-3.1.1/drivers/staging/pohmelfs/inode.c 2011-11-16 18:39:07.000000000 -0500
28488 +@@ -1861,7 +1861,7 @@ static int pohmelfs_fill_super(struct su
28489 mutex_init(&psb->mcache_lock);
28490 psb->mcache_root = RB_ROOT;
28491 psb->mcache_timeout = msecs_to_jiffies(5000);
28492 @@ -35035,7 +35024,7 @@ diff -urNp linux-3.0.9/drivers/staging/pohmelfs/inode.c linux-3.0.9/drivers/stag
28493
28494 psb->trans_max_pages = 100;
28495
28496 -@@ -1871,7 +1871,7 @@ static int pohmelfs_fill_super(struct su
28497 +@@ -1876,7 +1876,7 @@ static int pohmelfs_fill_super(struct su
28498 INIT_LIST_HEAD(&psb->crypto_ready_list);
28499 INIT_LIST_HEAD(&psb->crypto_active_list);
28500
28501 @@ -35044,9 +35033,9 @@ diff -urNp linux-3.0.9/drivers/staging/pohmelfs/inode.c linux-3.0.9/drivers/stag
28502 atomic_long_set(&psb->total_inodes, 0);
28503
28504 mutex_init(&psb->state_lock);
28505 -diff -urNp linux-3.0.9/drivers/staging/pohmelfs/mcache.c linux-3.0.9/drivers/staging/pohmelfs/mcache.c
28506 ---- linux-3.0.9/drivers/staging/pohmelfs/mcache.c 2011-11-11 13:12:24.000000000 -0500
28507 -+++ linux-3.0.9/drivers/staging/pohmelfs/mcache.c 2011-11-15 20:02:59.000000000 -0500
28508 +diff -urNp linux-3.1.1/drivers/staging/pohmelfs/mcache.c linux-3.1.1/drivers/staging/pohmelfs/mcache.c
28509 +--- linux-3.1.1/drivers/staging/pohmelfs/mcache.c 2011-11-11 15:19:27.000000000 -0500
28510 ++++ linux-3.1.1/drivers/staging/pohmelfs/mcache.c 2011-11-16 18:39:07.000000000 -0500
28511 @@ -121,7 +121,7 @@ struct pohmelfs_mcache *pohmelfs_mcache_
28512 m->data = data;
28513 m->start = start;
28514 @@ -35056,9 +35045,9 @@ diff -urNp linux-3.0.9/drivers/staging/pohmelfs/mcache.c linux-3.0.9/drivers/sta
28515
28516 mutex_lock(&psb->mcache_lock);
28517 err = pohmelfs_mcache_insert(psb, m);
28518 -diff -urNp linux-3.0.9/drivers/staging/pohmelfs/netfs.h linux-3.0.9/drivers/staging/pohmelfs/netfs.h
28519 ---- linux-3.0.9/drivers/staging/pohmelfs/netfs.h 2011-11-11 13:12:24.000000000 -0500
28520 -+++ linux-3.0.9/drivers/staging/pohmelfs/netfs.h 2011-11-15 20:02:59.000000000 -0500
28521 +diff -urNp linux-3.1.1/drivers/staging/pohmelfs/netfs.h linux-3.1.1/drivers/staging/pohmelfs/netfs.h
28522 +--- linux-3.1.1/drivers/staging/pohmelfs/netfs.h 2011-11-11 15:19:27.000000000 -0500
28523 ++++ linux-3.1.1/drivers/staging/pohmelfs/netfs.h 2011-11-16 18:39:07.000000000 -0500
28524 @@ -571,14 +571,14 @@ struct pohmelfs_config;
28525 struct pohmelfs_sb {
28526 struct rb_root mcache_root;
28527 @@ -35076,9 +35065,9 @@ diff -urNp linux-3.0.9/drivers/staging/pohmelfs/netfs.h linux-3.0.9/drivers/stag
28528
28529 unsigned int crypto_attached_size;
28530 unsigned int crypto_align_size;
28531 -diff -urNp linux-3.0.9/drivers/staging/pohmelfs/trans.c linux-3.0.9/drivers/staging/pohmelfs/trans.c
28532 ---- linux-3.0.9/drivers/staging/pohmelfs/trans.c 2011-11-11 13:12:24.000000000 -0500
28533 -+++ linux-3.0.9/drivers/staging/pohmelfs/trans.c 2011-11-15 20:02:59.000000000 -0500
28534 +diff -urNp linux-3.1.1/drivers/staging/pohmelfs/trans.c linux-3.1.1/drivers/staging/pohmelfs/trans.c
28535 +--- linux-3.1.1/drivers/staging/pohmelfs/trans.c 2011-11-11 15:19:27.000000000 -0500
28536 ++++ linux-3.1.1/drivers/staging/pohmelfs/trans.c 2011-11-16 18:39:07.000000000 -0500
28537 @@ -492,7 +492,7 @@ int netfs_trans_finish(struct netfs_tran
28538 int err;
28539 struct netfs_cmd *cmd = t->iovec.iov_base;
28540 @@ -35088,9 +35077,9 @@ diff -urNp linux-3.0.9/drivers/staging/pohmelfs/trans.c linux-3.0.9/drivers/stag
28541
28542 cmd->size = t->iovec.iov_len - sizeof(struct netfs_cmd) +
28543 t->attached_size + t->attached_pages * sizeof(struct netfs_cmd);
28544 -diff -urNp linux-3.0.9/drivers/staging/rtl8712/rtl871x_io.h linux-3.0.9/drivers/staging/rtl8712/rtl871x_io.h
28545 ---- linux-3.0.9/drivers/staging/rtl8712/rtl871x_io.h 2011-11-11 13:12:24.000000000 -0500
28546 -+++ linux-3.0.9/drivers/staging/rtl8712/rtl871x_io.h 2011-11-15 20:02:59.000000000 -0500
28547 +diff -urNp linux-3.1.1/drivers/staging/rtl8712/rtl871x_io.h linux-3.1.1/drivers/staging/rtl8712/rtl871x_io.h
28548 +--- linux-3.1.1/drivers/staging/rtl8712/rtl871x_io.h 2011-11-11 15:19:27.000000000 -0500
28549 ++++ linux-3.1.1/drivers/staging/rtl8712/rtl871x_io.h 2011-11-16 18:39:07.000000000 -0500
28550 @@ -83,7 +83,7 @@ struct _io_ops {
28551 u8 *pmem);
28552 u32 (*_write_port)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt,
28553 @@ -35100,9 +35089,9 @@ diff -urNp linux-3.0.9/drivers/staging/rtl8712/rtl871x_io.h linux-3.0.9/drivers/
28554
28555 struct io_req {
28556 struct list_head list;
28557 -diff -urNp linux-3.0.9/drivers/staging/sbe-2t3e3/netdev.c linux-3.0.9/drivers/staging/sbe-2t3e3/netdev.c
28558 ---- linux-3.0.9/drivers/staging/sbe-2t3e3/netdev.c 2011-11-11 13:12:24.000000000 -0500
28559 -+++ linux-3.0.9/drivers/staging/sbe-2t3e3/netdev.c 2011-11-15 20:02:59.000000000 -0500
28560 +diff -urNp linux-3.1.1/drivers/staging/sbe-2t3e3/netdev.c linux-3.1.1/drivers/staging/sbe-2t3e3/netdev.c
28561 +--- linux-3.1.1/drivers/staging/sbe-2t3e3/netdev.c 2011-11-11 15:19:27.000000000 -0500
28562 ++++ linux-3.1.1/drivers/staging/sbe-2t3e3/netdev.c 2011-11-16 18:39:08.000000000 -0500
28563 @@ -51,7 +51,7 @@ int t3e3_ioctl(struct net_device *dev, s
28564 t3e3_if_config(sc, cmd_2t3e3, (char *)&param, &resp, &rlen);
28565
28566 @@ -35112,22 +35101,10 @@ diff -urNp linux-3.0.9/drivers/staging/sbe-2t3e3/netdev.c linux-3.0.9/drivers/st
28567 return -EFAULT;
28568
28569 return 0;
28570 -diff -urNp linux-3.0.9/drivers/staging/tty/stallion.c linux-3.0.9/drivers/staging/tty/stallion.c
28571 ---- linux-3.0.9/drivers/staging/tty/stallion.c 2011-11-11 13:12:24.000000000 -0500
28572 -+++ linux-3.0.9/drivers/staging/tty/stallion.c 2011-11-15 20:02:59.000000000 -0500
28573 -@@ -2406,6 +2406,8 @@ static int stl_getportstruct(struct stlp
28574 - struct stlport stl_dummyport;
28575 - struct stlport *portp;
28576 -
28577 -+ pax_track_stack();
28578 -+
28579 - if (copy_from_user(&stl_dummyport, arg, sizeof(struct stlport)))
28580 - return -EFAULT;
28581 - portp = stl_getport(stl_dummyport.brdnr, stl_dummyport.panelnr,
28582 -diff -urNp linux-3.0.9/drivers/staging/usbip/usbip_common.h linux-3.0.9/drivers/staging/usbip/usbip_common.h
28583 ---- linux-3.0.9/drivers/staging/usbip/usbip_common.h 2011-11-11 13:12:24.000000000 -0500
28584 -+++ linux-3.0.9/drivers/staging/usbip/usbip_common.h 2011-11-15 20:02:59.000000000 -0500
28585 -@@ -315,7 +315,7 @@ struct usbip_device {
28586 +diff -urNp linux-3.1.1/drivers/staging/usbip/usbip_common.h linux-3.1.1/drivers/staging/usbip/usbip_common.h
28587 +--- linux-3.1.1/drivers/staging/usbip/usbip_common.h 2011-11-11 15:19:27.000000000 -0500
28588 ++++ linux-3.1.1/drivers/staging/usbip/usbip_common.h 2011-11-16 18:39:08.000000000 -0500
28589 +@@ -289,7 +289,7 @@ struct usbip_device {
28590 void (*shutdown)(struct usbip_device *);
28591 void (*reset)(struct usbip_device *);
28592 void (*unusable)(struct usbip_device *);
28593 @@ -35135,11 +35112,11 @@ diff -urNp linux-3.0.9/drivers/staging/usbip/usbip_common.h linux-3.0.9/drivers/
28594 + } __no_const eh_ops;
28595 };
28596
28597 - void usbip_pack_pdu(struct usbip_header *pdu, struct urb *urb, int cmd,
28598 -diff -urNp linux-3.0.9/drivers/staging/usbip/vhci.h linux-3.0.9/drivers/staging/usbip/vhci.h
28599 ---- linux-3.0.9/drivers/staging/usbip/vhci.h 2011-11-11 13:12:24.000000000 -0500
28600 -+++ linux-3.0.9/drivers/staging/usbip/vhci.h 2011-11-15 20:02:59.000000000 -0500
28601 -@@ -94,7 +94,7 @@ struct vhci_hcd {
28602 + #if 0
28603 +diff -urNp linux-3.1.1/drivers/staging/usbip/vhci.h linux-3.1.1/drivers/staging/usbip/vhci.h
28604 +--- linux-3.1.1/drivers/staging/usbip/vhci.h 2011-11-11 15:19:27.000000000 -0500
28605 ++++ linux-3.1.1/drivers/staging/usbip/vhci.h 2011-11-16 18:39:08.000000000 -0500
28606 +@@ -85,7 +85,7 @@ struct vhci_hcd {
28607 unsigned resuming:1;
28608 unsigned long re_timeout;
28609
28610 @@ -35148,10 +35125,10 @@ diff -urNp linux-3.0.9/drivers/staging/usbip/vhci.h linux-3.0.9/drivers/staging/
28611
28612 /*
28613 * NOTE:
28614 -diff -urNp linux-3.0.9/drivers/staging/usbip/vhci_hcd.c linux-3.0.9/drivers/staging/usbip/vhci_hcd.c
28615 ---- linux-3.0.9/drivers/staging/usbip/vhci_hcd.c 2011-11-11 13:12:24.000000000 -0500
28616 -+++ linux-3.0.9/drivers/staging/usbip/vhci_hcd.c 2011-11-15 20:02:59.000000000 -0500
28617 -@@ -511,7 +511,7 @@ static void vhci_tx_urb(struct urb *urb)
28618 +diff -urNp linux-3.1.1/drivers/staging/usbip/vhci_hcd.c linux-3.1.1/drivers/staging/usbip/vhci_hcd.c
28619 +--- linux-3.1.1/drivers/staging/usbip/vhci_hcd.c 2011-11-11 15:19:27.000000000 -0500
28620 ++++ linux-3.1.1/drivers/staging/usbip/vhci_hcd.c 2011-11-16 18:39:08.000000000 -0500
28621 +@@ -527,7 +527,7 @@ static void vhci_tx_urb(struct urb *urb)
28622 return;
28623 }
28624
28625 @@ -35160,7 +35137,7 @@ diff -urNp linux-3.0.9/drivers/staging/usbip/vhci_hcd.c linux-3.0.9/drivers/stag
28626 if (priv->seqnum == 0xffff)
28627 dev_info(&urb->dev->dev, "seqnum max\n");
28628
28629 -@@ -765,7 +765,7 @@ static int vhci_urb_dequeue(struct usb_h
28630 +@@ -779,7 +779,7 @@ static int vhci_urb_dequeue(struct usb_h
28631 return -ENOMEM;
28632 }
28633
28634 @@ -35169,7 +35146,7 @@ diff -urNp linux-3.0.9/drivers/staging/usbip/vhci_hcd.c linux-3.0.9/drivers/stag
28635 if (unlink->seqnum == 0xffff)
28636 pr_info("seqnum max\n");
28637
28638 -@@ -955,7 +955,7 @@ static int vhci_start(struct usb_hcd *hc
28639 +@@ -969,7 +969,7 @@ static int vhci_start(struct usb_hcd *hc
28640 vdev->rhport = rhport;
28641 }
28642
28643 @@ -35178,9 +35155,9 @@ diff -urNp linux-3.0.9/drivers/staging/usbip/vhci_hcd.c linux-3.0.9/drivers/stag
28644 spin_lock_init(&vhci->lock);
28645
28646 hcd->power_budget = 0; /* no limit */
28647 -diff -urNp linux-3.0.9/drivers/staging/usbip/vhci_rx.c linux-3.0.9/drivers/staging/usbip/vhci_rx.c
28648 ---- linux-3.0.9/drivers/staging/usbip/vhci_rx.c 2011-11-11 13:12:24.000000000 -0500
28649 -+++ linux-3.0.9/drivers/staging/usbip/vhci_rx.c 2011-11-15 20:02:59.000000000 -0500
28650 +diff -urNp linux-3.1.1/drivers/staging/usbip/vhci_rx.c linux-3.1.1/drivers/staging/usbip/vhci_rx.c
28651 +--- linux-3.1.1/drivers/staging/usbip/vhci_rx.c 2011-11-11 15:19:27.000000000 -0500
28652 ++++ linux-3.1.1/drivers/staging/usbip/vhci_rx.c 2011-11-16 18:39:08.000000000 -0500
28653 @@ -76,7 +76,7 @@ static void vhci_recv_ret_submit(struct
28654 if (!urb) {
28655 pr_err("cannot find a urb of seqnum %u\n", pdu->base.seqnum);
28656 @@ -35190,9 +35167,9 @@ diff -urNp linux-3.0.9/drivers/staging/usbip/vhci_rx.c linux-3.0.9/drivers/stagi
28657 usbip_event_add(ud, VDEV_EVENT_ERROR_TCP);
28658 return;
28659 }
28660 -diff -urNp linux-3.0.9/drivers/staging/vt6655/hostap.c linux-3.0.9/drivers/staging/vt6655/hostap.c
28661 ---- linux-3.0.9/drivers/staging/vt6655/hostap.c 2011-11-11 13:12:24.000000000 -0500
28662 -+++ linux-3.0.9/drivers/staging/vt6655/hostap.c 2011-11-15 20:02:59.000000000 -0500
28663 +diff -urNp linux-3.1.1/drivers/staging/vt6655/hostap.c linux-3.1.1/drivers/staging/vt6655/hostap.c
28664 +--- linux-3.1.1/drivers/staging/vt6655/hostap.c 2011-11-11 15:19:27.000000000 -0500
28665 ++++ linux-3.1.1/drivers/staging/vt6655/hostap.c 2011-11-16 18:39:08.000000000 -0500
28666 @@ -79,14 +79,13 @@ static int msglevel
28667 *
28668 */
28669 @@ -35219,9 +35196,9 @@ diff -urNp linux-3.0.9/drivers/staging/vt6655/hostap.c linux-3.0.9/drivers/stagi
28670 pDevice->apdev->netdev_ops = &apdev_netdev_ops;
28671
28672 pDevice->apdev->type = ARPHRD_IEEE80211;
28673 -diff -urNp linux-3.0.9/drivers/staging/vt6656/hostap.c linux-3.0.9/drivers/staging/vt6656/hostap.c
28674 ---- linux-3.0.9/drivers/staging/vt6656/hostap.c 2011-11-11 13:12:24.000000000 -0500
28675 -+++ linux-3.0.9/drivers/staging/vt6656/hostap.c 2011-11-15 20:02:59.000000000 -0500
28676 +diff -urNp linux-3.1.1/drivers/staging/vt6656/hostap.c linux-3.1.1/drivers/staging/vt6656/hostap.c
28677 +--- linux-3.1.1/drivers/staging/vt6656/hostap.c 2011-11-11 15:19:27.000000000 -0500
28678 ++++ linux-3.1.1/drivers/staging/vt6656/hostap.c 2011-11-16 18:39:08.000000000 -0500
28679 @@ -80,14 +80,13 @@ static int msglevel
28680 *
28681 */
28682 @@ -35248,9 +35225,9 @@ diff -urNp linux-3.0.9/drivers/staging/vt6656/hostap.c linux-3.0.9/drivers/stagi
28683 pDevice->apdev->netdev_ops = &apdev_netdev_ops;
28684
28685 pDevice->apdev->type = ARPHRD_IEEE80211;
28686 -diff -urNp linux-3.0.9/drivers/staging/wlan-ng/hfa384x_usb.c linux-3.0.9/drivers/staging/wlan-ng/hfa384x_usb.c
28687 ---- linux-3.0.9/drivers/staging/wlan-ng/hfa384x_usb.c 2011-11-11 13:12:24.000000000 -0500
28688 -+++ linux-3.0.9/drivers/staging/wlan-ng/hfa384x_usb.c 2011-11-15 20:02:59.000000000 -0500
28689 +diff -urNp linux-3.1.1/drivers/staging/wlan-ng/hfa384x_usb.c linux-3.1.1/drivers/staging/wlan-ng/hfa384x_usb.c
28690 +--- linux-3.1.1/drivers/staging/wlan-ng/hfa384x_usb.c 2011-11-11 15:19:27.000000000 -0500
28691 ++++ linux-3.1.1/drivers/staging/wlan-ng/hfa384x_usb.c 2011-11-16 18:39:08.000000000 -0500
28692 @@ -204,7 +204,7 @@ static void unlocked_usbctlx_complete(hf
28693
28694 struct usbctlx_completor {
28695 @@ -35260,9 +35237,9 @@ diff -urNp linux-3.0.9/drivers/staging/wlan-ng/hfa384x_usb.c linux-3.0.9/drivers
28696
28697 static int
28698 hfa384x_usbctlx_complete_sync(hfa384x_t *hw,
28699 -diff -urNp linux-3.0.9/drivers/staging/zcache/tmem.c linux-3.0.9/drivers/staging/zcache/tmem.c
28700 ---- linux-3.0.9/drivers/staging/zcache/tmem.c 2011-11-11 13:12:24.000000000 -0500
28701 -+++ linux-3.0.9/drivers/staging/zcache/tmem.c 2011-11-15 20:02:59.000000000 -0500
28702 +diff -urNp linux-3.1.1/drivers/staging/zcache/tmem.c linux-3.1.1/drivers/staging/zcache/tmem.c
28703 +--- linux-3.1.1/drivers/staging/zcache/tmem.c 2011-11-11 15:19:27.000000000 -0500
28704 ++++ linux-3.1.1/drivers/staging/zcache/tmem.c 2011-11-16 18:39:08.000000000 -0500
28705 @@ -39,7 +39,7 @@
28706 * A tmem host implementation must use this function to register callbacks
28707 * for memory allocation.
28708 @@ -35281,18 +35258,18 @@ diff -urNp linux-3.0.9/drivers/staging/zcache/tmem.c linux-3.0.9/drivers/staging
28709
28710 void tmem_register_pamops(struct tmem_pamops *m)
28711 {
28712 -diff -urNp linux-3.0.9/drivers/staging/zcache/tmem.h linux-3.0.9/drivers/staging/zcache/tmem.h
28713 ---- linux-3.0.9/drivers/staging/zcache/tmem.h 2011-11-11 13:12:24.000000000 -0500
28714 -+++ linux-3.0.9/drivers/staging/zcache/tmem.h 2011-11-15 20:02:59.000000000 -0500
28715 -@@ -171,6 +171,7 @@ struct tmem_pamops {
28716 - int (*get_data)(struct page *, void *, struct tmem_pool *);
28717 - void (*free)(void *, struct tmem_pool *);
28718 +diff -urNp linux-3.1.1/drivers/staging/zcache/tmem.h linux-3.1.1/drivers/staging/zcache/tmem.h
28719 +--- linux-3.1.1/drivers/staging/zcache/tmem.h 2011-11-11 15:19:27.000000000 -0500
28720 ++++ linux-3.1.1/drivers/staging/zcache/tmem.h 2011-11-16 18:39:08.000000000 -0500
28721 +@@ -180,6 +180,7 @@ struct tmem_pamops {
28722 + void (*new_obj)(struct tmem_obj *);
28723 + int (*replace_in_obj)(void *, struct tmem_obj *);
28724 };
28725 +typedef struct tmem_pamops __no_const tmem_pamops_no_const;
28726 extern void tmem_register_pamops(struct tmem_pamops *m);
28727
28728 /* memory allocation methods provided by the host implementation */
28729 -@@ -180,6 +181,7 @@ struct tmem_hostops {
28730 +@@ -189,6 +190,7 @@ struct tmem_hostops {
28731 struct tmem_objnode *(*objnode_alloc)(struct tmem_pool *);
28732 void (*objnode_free)(struct tmem_objnode *, struct tmem_pool *);
28733 };
28734 @@ -35300,10 +35277,22 @@ diff -urNp linux-3.0.9/drivers/staging/zcache/tmem.h linux-3.0.9/drivers/staging
28735 extern void tmem_register_hostops(struct tmem_hostops *m);
28736
28737 /* core tmem accessor functions */
28738 -diff -urNp linux-3.0.9/drivers/target/target_core_alua.c linux-3.0.9/drivers/target/target_core_alua.c
28739 ---- linux-3.0.9/drivers/target/target_core_alua.c 2011-11-11 13:12:24.000000000 -0500
28740 -+++ linux-3.0.9/drivers/target/target_core_alua.c 2011-11-15 20:02:59.000000000 -0500
28741 -@@ -695,6 +695,8 @@ static int core_alua_update_tpg_primary_
28742 +diff -urNp linux-3.1.1/drivers/target/iscsi/iscsi_target.c linux-3.1.1/drivers/target/iscsi/iscsi_target.c
28743 +--- linux-3.1.1/drivers/target/iscsi/iscsi_target.c 2011-11-11 15:19:27.000000000 -0500
28744 ++++ linux-3.1.1/drivers/target/iscsi/iscsi_target.c 2011-11-16 18:39:08.000000000 -0500
28745 +@@ -1368,7 +1368,7 @@ static int iscsit_handle_data_out(struct
28746 + * outstanding_r2ts reaches zero, go ahead and send the delayed
28747 + * TASK_ABORTED status.
28748 + */
28749 +- if (atomic_read(&se_cmd->t_transport_aborted) != 0) {
28750 ++ if (atomic_read_unchecked(&se_cmd->t_transport_aborted) != 0) {
28751 + if (hdr->flags & ISCSI_FLAG_CMD_FINAL)
28752 + if (--cmd->outstanding_r2ts < 1) {
28753 + iscsit_stop_dataout_timer(cmd);
28754 +diff -urNp linux-3.1.1/drivers/target/target_core_alua.c linux-3.1.1/drivers/target/target_core_alua.c
28755 +--- linux-3.1.1/drivers/target/target_core_alua.c 2011-11-11 15:19:27.000000000 -0500
28756 ++++ linux-3.1.1/drivers/target/target_core_alua.c 2011-11-16 18:40:29.000000000 -0500
28757 +@@ -723,6 +723,8 @@ static int core_alua_update_tpg_primary_
28758 char path[ALUA_METADATA_PATH_LEN];
28759 int len;
28760
28761 @@ -35312,7 +35301,7 @@ diff -urNp linux-3.0.9/drivers/target/target_core_alua.c linux-3.0.9/drivers/tar
28762 memset(path, 0, ALUA_METADATA_PATH_LEN);
28763
28764 len = snprintf(md_buf, tg_pt_gp->tg_pt_gp_md_buf_len,
28765 -@@ -958,6 +960,8 @@ static int core_alua_update_tpg_secondar
28766 +@@ -986,6 +988,8 @@ static int core_alua_update_tpg_secondar
28767 char path[ALUA_METADATA_PATH_LEN], wwn[ALUA_SECONDARY_METADATA_WWN_LEN];
28768 int len;
28769
28770 @@ -35321,10 +35310,10 @@ diff -urNp linux-3.0.9/drivers/target/target_core_alua.c linux-3.0.9/drivers/tar
28771 memset(path, 0, ALUA_METADATA_PATH_LEN);
28772 memset(wwn, 0, ALUA_SECONDARY_METADATA_WWN_LEN);
28773
28774 -diff -urNp linux-3.0.9/drivers/target/target_core_cdb.c linux-3.0.9/drivers/target/target_core_cdb.c
28775 ---- linux-3.0.9/drivers/target/target_core_cdb.c 2011-11-11 13:12:24.000000000 -0500
28776 -+++ linux-3.0.9/drivers/target/target_core_cdb.c 2011-11-15 20:02:59.000000000 -0500
28777 -@@ -838,6 +838,8 @@ target_emulate_modesense(struct se_cmd *
28778 +diff -urNp linux-3.1.1/drivers/target/target_core_cdb.c linux-3.1.1/drivers/target/target_core_cdb.c
28779 +--- linux-3.1.1/drivers/target/target_core_cdb.c 2011-11-11 15:19:27.000000000 -0500
28780 ++++ linux-3.1.1/drivers/target/target_core_cdb.c 2011-11-16 18:40:29.000000000 -0500
28781 +@@ -933,6 +933,8 @@ target_emulate_modesense(struct se_cmd *
28782 int length = 0;
28783 unsigned char buf[SE_MODE_PAGE_BUF];
28784
28785 @@ -35333,21 +35322,21 @@ diff -urNp linux-3.0.9/drivers/target/target_core_cdb.c linux-3.0.9/drivers/targ
28786 memset(buf, 0, SE_MODE_PAGE_BUF);
28787
28788 switch (cdb[2] & 0x3f) {
28789 -diff -urNp linux-3.0.9/drivers/target/target_core_configfs.c linux-3.0.9/drivers/target/target_core_configfs.c
28790 ---- linux-3.0.9/drivers/target/target_core_configfs.c 2011-11-11 13:12:24.000000000 -0500
28791 -+++ linux-3.0.9/drivers/target/target_core_configfs.c 2011-11-15 20:02:59.000000000 -0500
28792 -@@ -1276,6 +1276,8 @@ static ssize_t target_core_dev_pr_show_a
28793 +diff -urNp linux-3.1.1/drivers/target/target_core_configfs.c linux-3.1.1/drivers/target/target_core_configfs.c
28794 +--- linux-3.1.1/drivers/target/target_core_configfs.c 2011-11-11 15:19:27.000000000 -0500
28795 ++++ linux-3.1.1/drivers/target/target_core_configfs.c 2011-11-16 19:04:37.000000000 -0500
28796 +@@ -1267,6 +1267,8 @@ static ssize_t target_core_dev_pr_show_a
28797 ssize_t len = 0;
28798 int reg_count = 0, prf_isid;
28799
28800 + pax_track_stack();
28801 +
28802 - if (!(su_dev->se_dev_ptr))
28803 + if (!su_dev->se_dev_ptr)
28804 return -ENODEV;
28805
28806 -diff -urNp linux-3.0.9/drivers/target/target_core_pr.c linux-3.0.9/drivers/target/target_core_pr.c
28807 ---- linux-3.0.9/drivers/target/target_core_pr.c 2011-11-11 13:12:24.000000000 -0500
28808 -+++ linux-3.0.9/drivers/target/target_core_pr.c 2011-11-15 20:02:59.000000000 -0500
28809 +diff -urNp linux-3.1.1/drivers/target/target_core_pr.c linux-3.1.1/drivers/target/target_core_pr.c
28810 +--- linux-3.1.1/drivers/target/target_core_pr.c 2011-11-11 15:19:27.000000000 -0500
28811 ++++ linux-3.1.1/drivers/target/target_core_pr.c 2011-11-16 18:40:29.000000000 -0500
28812 @@ -918,6 +918,8 @@ static int __core_scsi3_check_aptpl_regi
28813 unsigned char t_port[PR_APTPL_MAX_TPORT_LEN];
28814 u16 tpgt;
28815 @@ -35357,7 +35346,7 @@ diff -urNp linux-3.0.9/drivers/target/target_core_pr.c linux-3.0.9/drivers/targe
28816 memset(i_port, 0, PR_APTPL_MAX_IPORT_LEN);
28817 memset(t_port, 0, PR_APTPL_MAX_TPORT_LEN);
28818 /*
28819 -@@ -1861,6 +1863,8 @@ static int __core_scsi3_update_aptpl_buf
28820 +@@ -1867,6 +1869,8 @@ static int __core_scsi3_update_aptpl_buf
28821 ssize_t len = 0;
28822 int reg_count = 0;
28823
28824 @@ -35366,7 +35355,7 @@ diff -urNp linux-3.0.9/drivers/target/target_core_pr.c linux-3.0.9/drivers/targe
28825 memset(buf, 0, pr_aptpl_buf_len);
28826 /*
28827 * Called to clear metadata once APTPL has been deactivated.
28828 -@@ -1983,6 +1987,8 @@ static int __core_scsi3_write_aptpl_to_f
28829 +@@ -1989,6 +1993,8 @@ static int __core_scsi3_write_aptpl_to_f
28830 char path[512];
28831 int ret;
28832
28833 @@ -35375,40 +35364,40 @@ diff -urNp linux-3.0.9/drivers/target/target_core_pr.c linux-3.0.9/drivers/targe
28834 memset(iov, 0, sizeof(struct iovec));
28835 memset(path, 0, 512);
28836
28837 -diff -urNp linux-3.0.9/drivers/target/target_core_tmr.c linux-3.0.9/drivers/target/target_core_tmr.c
28838 ---- linux-3.0.9/drivers/target/target_core_tmr.c 2011-11-11 13:12:24.000000000 -0500
28839 -+++ linux-3.0.9/drivers/target/target_core_tmr.c 2011-11-15 20:02:59.000000000 -0500
28840 -@@ -269,7 +269,7 @@ int core_tmr_lun_reset(
28841 - CMD_TFO(cmd)->get_task_tag(cmd), cmd->pr_res_key,
28842 - T_TASK(cmd)->t_task_cdbs,
28843 - atomic_read(&T_TASK(cmd)->t_task_cdbs_left),
28844 -- atomic_read(&T_TASK(cmd)->t_task_cdbs_sent),
28845 -+ atomic_read_unchecked(&T_TASK(cmd)->t_task_cdbs_sent),
28846 - atomic_read(&T_TASK(cmd)->t_transport_active),
28847 - atomic_read(&T_TASK(cmd)->t_transport_stop),
28848 - atomic_read(&T_TASK(cmd)->t_transport_sent));
28849 -@@ -311,7 +311,7 @@ int core_tmr_lun_reset(
28850 - DEBUG_LR("LUN_RESET: got t_transport_active = 1 for"
28851 +diff -urNp linux-3.1.1/drivers/target/target_core_tmr.c linux-3.1.1/drivers/target/target_core_tmr.c
28852 +--- linux-3.1.1/drivers/target/target_core_tmr.c 2011-11-11 15:19:27.000000000 -0500
28853 ++++ linux-3.1.1/drivers/target/target_core_tmr.c 2011-11-16 18:39:08.000000000 -0500
28854 +@@ -255,7 +255,7 @@ static void core_tmr_drain_task_list(
28855 + cmd->se_tfo->get_task_tag(cmd), cmd->pr_res_key,
28856 + cmd->t_task_list_num,
28857 + atomic_read(&cmd->t_task_cdbs_left),
28858 +- atomic_read(&cmd->t_task_cdbs_sent),
28859 ++ atomic_read_unchecked(&cmd->t_task_cdbs_sent),
28860 + atomic_read(&cmd->t_transport_active),
28861 + atomic_read(&cmd->t_transport_stop),
28862 + atomic_read(&cmd->t_transport_sent));
28863 +@@ -291,7 +291,7 @@ static void core_tmr_drain_task_list(
28864 + pr_debug("LUN_RESET: got t_transport_active = 1 for"
28865 " task: %p, t_fe_count: %d dev: %p\n", task,
28866 fe_count, dev);
28867 -- atomic_set(&T_TASK(cmd)->t_transport_aborted, 1);
28868 -+ atomic_set_unchecked(&T_TASK(cmd)->t_transport_aborted, 1);
28869 - spin_unlock_irqrestore(&T_TASK(cmd)->t_state_lock,
28870 - flags);
28871 +- atomic_set(&cmd->t_transport_aborted, 1);
28872 ++ atomic_set_unchecked(&cmd->t_transport_aborted, 1);
28873 + spin_unlock_irqrestore(&cmd->t_state_lock, flags);
28874 +
28875 core_tmr_handle_tas_abort(tmr_nacl, cmd, tas, fe_count);
28876 -@@ -321,7 +321,7 @@ int core_tmr_lun_reset(
28877 +@@ -299,7 +299,7 @@ static void core_tmr_drain_task_list(
28878 }
28879 - DEBUG_LR("LUN_RESET: Got t_transport_active = 0 for task: %p,"
28880 + pr_debug("LUN_RESET: Got t_transport_active = 0 for task: %p,"
28881 " t_fe_count: %d dev: %p\n", task, fe_count, dev);
28882 -- atomic_set(&T_TASK(cmd)->t_transport_aborted, 1);
28883 -+ atomic_set_unchecked(&T_TASK(cmd)->t_transport_aborted, 1);
28884 - spin_unlock_irqrestore(&T_TASK(cmd)->t_state_lock, flags);
28885 - core_tmr_handle_tas_abort(tmr_nacl, cmd, tas, fe_count);
28886 +- atomic_set(&cmd->t_transport_aborted, 1);
28887 ++ atomic_set_unchecked(&cmd->t_transport_aborted, 1);
28888 + spin_unlock_irqrestore(&cmd->t_state_lock, flags);
28889
28890 -diff -urNp linux-3.0.9/drivers/target/target_core_transport.c linux-3.0.9/drivers/target/target_core_transport.c
28891 ---- linux-3.0.9/drivers/target/target_core_transport.c 2011-11-11 13:12:24.000000000 -0500
28892 -+++ linux-3.0.9/drivers/target/target_core_transport.c 2011-11-15 20:02:59.000000000 -0500
28893 -@@ -1681,7 +1681,7 @@ struct se_device *transport_add_device_t
28894 + core_tmr_handle_tas_abort(tmr_nacl, cmd, tas, fe_count);
28895 +diff -urNp linux-3.1.1/drivers/target/target_core_transport.c linux-3.1.1/drivers/target/target_core_transport.c
28896 +--- linux-3.1.1/drivers/target/target_core_transport.c 2011-11-11 15:19:27.000000000 -0500
28897 ++++ linux-3.1.1/drivers/target/target_core_transport.c 2011-11-16 18:39:08.000000000 -0500
28898 +@@ -1445,7 +1445,7 @@ struct se_device *transport_add_device_t
28899
28900 dev->queue_depth = dev_limits->queue_depth;
28901 atomic_set(&dev->depth_left, dev->queue_depth);
28902 @@ -35417,75 +35406,75 @@ diff -urNp linux-3.0.9/drivers/target/target_core_transport.c linux-3.0.9/driver
28903
28904 se_dev_set_default_attribs(dev, dev_limits);
28905
28906 -@@ -1882,7 +1882,7 @@ static int transport_check_alloc_task_at
28907 +@@ -1633,7 +1633,7 @@ static int transport_check_alloc_task_at
28908 * Used to determine when ORDERED commands should go from
28909 * Dormant to Active status.
28910 */
28911 -- cmd->se_ordered_id = atomic_inc_return(&SE_DEV(cmd)->dev_ordered_id);
28912 -+ cmd->se_ordered_id = atomic_inc_return_unchecked(&SE_DEV(cmd)->dev_ordered_id);
28913 +- cmd->se_ordered_id = atomic_inc_return(&cmd->se_dev->dev_ordered_id);
28914 ++ cmd->se_ordered_id = atomic_inc_return_unchecked(&cmd->se_dev->dev_ordered_id);
28915 smp_mb__after_atomic_inc();
28916 - DEBUG_STA("Allocated se_ordered_id: %u for Task Attr: 0x%02x on %s\n",
28917 + pr_debug("Allocated se_ordered_id: %u for Task Attr: 0x%02x on %s\n",
28918 cmd->se_ordered_id, cmd->sam_task_attr,
28919 -@@ -2169,7 +2169,7 @@ static void transport_generic_request_fa
28920 +@@ -1960,7 +1960,7 @@ static void transport_generic_request_fa
28921 " t_transport_active: %d t_transport_stop: %d"
28922 - " t_transport_sent: %d\n", T_TASK(cmd)->t_task_cdbs,
28923 - atomic_read(&T_TASK(cmd)->t_task_cdbs_left),
28924 -- atomic_read(&T_TASK(cmd)->t_task_cdbs_sent),
28925 -+ atomic_read_unchecked(&T_TASK(cmd)->t_task_cdbs_sent),
28926 - atomic_read(&T_TASK(cmd)->t_task_cdbs_ex_left),
28927 - atomic_read(&T_TASK(cmd)->t_transport_active),
28928 - atomic_read(&T_TASK(cmd)->t_transport_stop),
28929 -@@ -2673,9 +2673,9 @@ check_depth:
28930 - spin_lock_irqsave(&T_TASK(cmd)->t_state_lock, flags);
28931 + " t_transport_sent: %d\n", cmd->t_task_list_num,
28932 + atomic_read(&cmd->t_task_cdbs_left),
28933 +- atomic_read(&cmd->t_task_cdbs_sent),
28934 ++ atomic_read_unchecked(&cmd->t_task_cdbs_sent),
28935 + atomic_read(&cmd->t_task_cdbs_ex_left),
28936 + atomic_read(&cmd->t_transport_active),
28937 + atomic_read(&cmd->t_transport_stop),
28938 +@@ -2460,9 +2460,9 @@ check_depth:
28939 + spin_lock_irqsave(&cmd->t_state_lock, flags);
28940 atomic_set(&task->task_active, 1);
28941 atomic_set(&task->task_sent, 1);
28942 -- atomic_inc(&T_TASK(cmd)->t_task_cdbs_sent);
28943 -+ atomic_inc_unchecked(&T_TASK(cmd)->t_task_cdbs_sent);
28944 +- atomic_inc(&cmd->t_task_cdbs_sent);
28945 ++ atomic_inc_unchecked(&cmd->t_task_cdbs_sent);
28946
28947 -- if (atomic_read(&T_TASK(cmd)->t_task_cdbs_sent) ==
28948 -+ if (atomic_read_unchecked(&T_TASK(cmd)->t_task_cdbs_sent) ==
28949 - T_TASK(cmd)->t_task_cdbs)
28950 +- if (atomic_read(&cmd->t_task_cdbs_sent) ==
28951 ++ if (atomic_read_unchecked(&cmd->t_task_cdbs_sent) ==
28952 + cmd->t_task_list_num)
28953 atomic_set(&cmd->transport_sent, 1);
28954
28955 -@@ -5568,7 +5568,7 @@ static void transport_generic_wait_for_t
28956 - atomic_set(&T_TASK(cmd)->transport_lun_stop, 0);
28957 +@@ -4665,7 +4665,7 @@ static void transport_generic_wait_for_t
28958 + atomic_set(&cmd->transport_lun_stop, 0);
28959 }
28960 - if (!atomic_read(&T_TASK(cmd)->t_transport_active) ||
28961 -- atomic_read(&T_TASK(cmd)->t_transport_aborted))
28962 -+ atomic_read_unchecked(&T_TASK(cmd)->t_transport_aborted))
28963 + if (!atomic_read(&cmd->t_transport_active) ||
28964 +- atomic_read(&cmd->t_transport_aborted))
28965 ++ atomic_read_unchecked(&cmd->t_transport_aborted))
28966 goto remove;
28967
28968 - atomic_set(&T_TASK(cmd)->t_transport_stop, 1);
28969 -@@ -5797,7 +5797,7 @@ int transport_check_aborted_status(struc
28970 + atomic_set(&cmd->t_transport_stop, 1);
28971 +@@ -4900,7 +4900,7 @@ int transport_check_aborted_status(struc
28972 {
28973 int ret = 0;
28974
28975 -- if (atomic_read(&T_TASK(cmd)->t_transport_aborted) != 0) {
28976 -+ if (atomic_read_unchecked(&T_TASK(cmd)->t_transport_aborted) != 0) {
28977 - if (!(send_status) ||
28978 +- if (atomic_read(&cmd->t_transport_aborted) != 0) {
28979 ++ if (atomic_read_unchecked(&cmd->t_transport_aborted) != 0) {
28980 + if (!send_status ||
28981 (cmd->se_cmd_flags & SCF_SENT_DELAYED_TAS))
28982 return 1;
28983 -@@ -5825,7 +5825,7 @@ void transport_send_task_abort(struct se
28984 +@@ -4937,7 +4937,7 @@ void transport_send_task_abort(struct se
28985 */
28986 if (cmd->data_direction == DMA_TO_DEVICE) {
28987 - if (CMD_TFO(cmd)->write_pending_status(cmd) != 0) {
28988 -- atomic_inc(&T_TASK(cmd)->t_transport_aborted);
28989 -+ atomic_inc_unchecked(&T_TASK(cmd)->t_transport_aborted);
28990 + if (cmd->se_tfo->write_pending_status(cmd) != 0) {
28991 +- atomic_inc(&cmd->t_transport_aborted);
28992 ++ atomic_inc_unchecked(&cmd->t_transport_aborted);
28993 smp_mb__after_atomic_inc();
28994 cmd->scsi_status = SAM_STAT_TASK_ABORTED;
28995 transport_new_cmd_failure(cmd);
28996 -@@ -5949,7 +5949,7 @@ static void transport_processing_shutdow
28997 - CMD_TFO(cmd)->get_task_tag(cmd),
28998 - T_TASK(cmd)->t_task_cdbs,
28999 - atomic_read(&T_TASK(cmd)->t_task_cdbs_left),
29000 -- atomic_read(&T_TASK(cmd)->t_task_cdbs_sent),
29001 -+ atomic_read_unchecked(&T_TASK(cmd)->t_task_cdbs_sent),
29002 - atomic_read(&T_TASK(cmd)->t_transport_active),
29003 - atomic_read(&T_TASK(cmd)->t_transport_stop),
29004 - atomic_read(&T_TASK(cmd)->t_transport_sent));
29005 -diff -urNp linux-3.0.9/drivers/telephony/ixj.c linux-3.0.9/drivers/telephony/ixj.c
29006 ---- linux-3.0.9/drivers/telephony/ixj.c 2011-11-11 13:12:24.000000000 -0500
29007 -+++ linux-3.0.9/drivers/telephony/ixj.c 2011-11-15 20:02:59.000000000 -0500
29008 +@@ -5051,7 +5051,7 @@ static void transport_processing_shutdow
29009 + cmd->se_tfo->get_task_tag(cmd),
29010 + cmd->t_task_list_num,
29011 + atomic_read(&cmd->t_task_cdbs_left),
29012 +- atomic_read(&cmd->t_task_cdbs_sent),
29013 ++ atomic_read_unchecked(&cmd->t_task_cdbs_sent),
29014 + atomic_read(&cmd->t_transport_active),
29015 + atomic_read(&cmd->t_transport_stop),
29016 + atomic_read(&cmd->t_transport_sent));
29017 +diff -urNp linux-3.1.1/drivers/telephony/ixj.c linux-3.1.1/drivers/telephony/ixj.c
29018 +--- linux-3.1.1/drivers/telephony/ixj.c 2011-11-11 15:19:27.000000000 -0500
29019 ++++ linux-3.1.1/drivers/telephony/ixj.c 2011-11-16 18:40:29.000000000 -0500
29020 @@ -4976,6 +4976,8 @@ static int ixj_daa_cid_read(IXJ *j)
29021 bool mContinue;
29022 char *pIn, *pOut;
29023 @@ -35495,9 +35484,9 @@ diff -urNp linux-3.0.9/drivers/telephony/ixj.c linux-3.0.9/drivers/telephony/ixj
29024 if (!SCI_Prepare(j))
29025 return 0;
29026
29027 -diff -urNp linux-3.0.9/drivers/tty/hvc/hvcs.c linux-3.0.9/drivers/tty/hvc/hvcs.c
29028 ---- linux-3.0.9/drivers/tty/hvc/hvcs.c 2011-11-11 13:12:24.000000000 -0500
29029 -+++ linux-3.0.9/drivers/tty/hvc/hvcs.c 2011-11-15 20:02:59.000000000 -0500
29030 +diff -urNp linux-3.1.1/drivers/tty/hvc/hvcs.c linux-3.1.1/drivers/tty/hvc/hvcs.c
29031 +--- linux-3.1.1/drivers/tty/hvc/hvcs.c 2011-11-11 15:19:27.000000000 -0500
29032 ++++ linux-3.1.1/drivers/tty/hvc/hvcs.c 2011-11-16 18:39:08.000000000 -0500
29033 @@ -83,6 +83,7 @@
29034 #include <asm/hvcserver.h>
29035 #include <asm/uaccess.h>
29036 @@ -35600,9 +35589,9 @@ diff -urNp linux-3.0.9/drivers/tty/hvc/hvcs.c linux-3.0.9/drivers/tty/hvc/hvcs.c
29037 return 0;
29038
29039 return HVCS_BUFF_LEN - hvcsd->chars_in_buffer;
29040 -diff -urNp linux-3.0.9/drivers/tty/ipwireless/tty.c linux-3.0.9/drivers/tty/ipwireless/tty.c
29041 ---- linux-3.0.9/drivers/tty/ipwireless/tty.c 2011-11-11 13:12:24.000000000 -0500
29042 -+++ linux-3.0.9/drivers/tty/ipwireless/tty.c 2011-11-15 20:02:59.000000000 -0500
29043 +diff -urNp linux-3.1.1/drivers/tty/ipwireless/tty.c linux-3.1.1/drivers/tty/ipwireless/tty.c
29044 +--- linux-3.1.1/drivers/tty/ipwireless/tty.c 2011-11-11 15:19:27.000000000 -0500
29045 ++++ linux-3.1.1/drivers/tty/ipwireless/tty.c 2011-11-16 18:39:08.000000000 -0500
29046 @@ -29,6 +29,7 @@
29047 #include <linux/tty_driver.h>
29048 #include <linux/tty_flip.h>
29049 @@ -35725,21 +35714,21 @@ diff -urNp linux-3.0.9/drivers/tty/ipwireless/tty.c linux-3.0.9/drivers/tty/ipwi
29050 do_ipw_close(ttyj);
29051 ipwireless_disassociate_network_ttys(network,
29052 ttyj->channel_idx);
29053 -diff -urNp linux-3.0.9/drivers/tty/n_gsm.c linux-3.0.9/drivers/tty/n_gsm.c
29054 ---- linux-3.0.9/drivers/tty/n_gsm.c 2011-11-11 13:12:24.000000000 -0500
29055 -+++ linux-3.0.9/drivers/tty/n_gsm.c 2011-11-15 20:02:59.000000000 -0500
29056 -@@ -1589,7 +1589,7 @@ static struct gsm_dlci *gsm_dlci_alloc(s
29057 - return NULL;
29058 - spin_lock_init(&dlci->lock);
29059 +diff -urNp linux-3.1.1/drivers/tty/n_gsm.c linux-3.1.1/drivers/tty/n_gsm.c
29060 +--- linux-3.1.1/drivers/tty/n_gsm.c 2011-11-11 15:19:27.000000000 -0500
29061 ++++ linux-3.1.1/drivers/tty/n_gsm.c 2011-11-16 18:39:08.000000000 -0500
29062 +@@ -1625,7 +1625,7 @@ static struct gsm_dlci *gsm_dlci_alloc(s
29063 + kref_init(&dlci->ref);
29064 + mutex_init(&dlci->mutex);
29065 dlci->fifo = &dlci->_fifo;
29066 - if (kfifo_alloc(&dlci->_fifo, 4096, GFP_KERNEL) < 0) {
29067 + if (kfifo_alloc(&dlci->_fifo, 4096, GFP_KERNEL)) {
29068 kfree(dlci);
29069 return NULL;
29070 }
29071 -diff -urNp linux-3.0.9/drivers/tty/n_tty.c linux-3.0.9/drivers/tty/n_tty.c
29072 ---- linux-3.0.9/drivers/tty/n_tty.c 2011-11-11 13:12:24.000000000 -0500
29073 -+++ linux-3.0.9/drivers/tty/n_tty.c 2011-11-15 20:02:59.000000000 -0500
29074 +diff -urNp linux-3.1.1/drivers/tty/n_tty.c linux-3.1.1/drivers/tty/n_tty.c
29075 +--- linux-3.1.1/drivers/tty/n_tty.c 2011-11-11 15:19:27.000000000 -0500
29076 ++++ linux-3.1.1/drivers/tty/n_tty.c 2011-11-16 18:39:08.000000000 -0500
29077 @@ -2123,6 +2123,7 @@ void n_tty_inherit_ops(struct tty_ldisc_
29078 {
29079 *ops = tty_ldisc_N_TTY;
29080 @@ -35749,9 +35738,9 @@ diff -urNp linux-3.0.9/drivers/tty/n_tty.c linux-3.0.9/drivers/tty/n_tty.c
29081 + ops->flags = 0;
29082 }
29083 EXPORT_SYMBOL_GPL(n_tty_inherit_ops);
29084 -diff -urNp linux-3.0.9/drivers/tty/pty.c linux-3.0.9/drivers/tty/pty.c
29085 ---- linux-3.0.9/drivers/tty/pty.c 2011-11-11 13:12:24.000000000 -0500
29086 -+++ linux-3.0.9/drivers/tty/pty.c 2011-11-15 20:02:59.000000000 -0500
29087 +diff -urNp linux-3.1.1/drivers/tty/pty.c linux-3.1.1/drivers/tty/pty.c
29088 +--- linux-3.1.1/drivers/tty/pty.c 2011-11-11 15:19:27.000000000 -0500
29089 ++++ linux-3.1.1/drivers/tty/pty.c 2011-11-16 18:39:08.000000000 -0500
29090 @@ -773,8 +773,10 @@ static void __init unix98_pty_init(void)
29091 register_sysctl_table(pty_root_table);
29092
29093 @@ -35764,9 +35753,9 @@ diff -urNp linux-3.0.9/drivers/tty/pty.c linux-3.0.9/drivers/tty/pty.c
29094
29095 cdev_init(&ptmx_cdev, &ptmx_fops);
29096 if (cdev_add(&ptmx_cdev, MKDEV(TTYAUX_MAJOR, 2), 1) ||
29097 -diff -urNp linux-3.0.9/drivers/tty/rocket.c linux-3.0.9/drivers/tty/rocket.c
29098 ---- linux-3.0.9/drivers/tty/rocket.c 2011-11-11 13:12:24.000000000 -0500
29099 -+++ linux-3.0.9/drivers/tty/rocket.c 2011-11-15 20:02:59.000000000 -0500
29100 +diff -urNp linux-3.1.1/drivers/tty/rocket.c linux-3.1.1/drivers/tty/rocket.c
29101 +--- linux-3.1.1/drivers/tty/rocket.c 2011-11-11 15:19:27.000000000 -0500
29102 ++++ linux-3.1.1/drivers/tty/rocket.c 2011-11-16 18:40:29.000000000 -0500
29103 @@ -1277,6 +1277,8 @@ static int get_ports(struct r_port *info
29104 struct rocket_ports tmp;
29105 int board;
29106 @@ -35776,9 +35765,9 @@ diff -urNp linux-3.0.9/drivers/tty/rocket.c linux-3.0.9/drivers/tty/rocket.c
29107 if (!retports)
29108 return -EFAULT;
29109 memset(&tmp, 0, sizeof (tmp));
29110 -diff -urNp linux-3.0.9/drivers/tty/serial/kgdboc.c linux-3.0.9/drivers/tty/serial/kgdboc.c
29111 ---- linux-3.0.9/drivers/tty/serial/kgdboc.c 2011-11-11 13:12:24.000000000 -0500
29112 -+++ linux-3.0.9/drivers/tty/serial/kgdboc.c 2011-11-15 20:02:59.000000000 -0500
29113 +diff -urNp linux-3.1.1/drivers/tty/serial/kgdboc.c linux-3.1.1/drivers/tty/serial/kgdboc.c
29114 +--- linux-3.1.1/drivers/tty/serial/kgdboc.c 2011-11-11 15:19:27.000000000 -0500
29115 ++++ linux-3.1.1/drivers/tty/serial/kgdboc.c 2011-11-16 18:39:08.000000000 -0500
29116 @@ -23,8 +23,9 @@
29117 #define MAX_CONFIG_LEN 40
29118
29119 @@ -35877,9 +35866,9 @@ diff -urNp linux-3.0.9/drivers/tty/serial/kgdboc.c linux-3.0.9/drivers/tty/seria
29120 #ifdef CONFIG_KGDB_SERIAL_CONSOLE
29121 /* This is only available if kgdboc is a built in for early debugging */
29122 static int __init kgdboc_early_init(char *opt)
29123 -diff -urNp linux-3.0.9/drivers/tty/serial/mfd.c linux-3.0.9/drivers/tty/serial/mfd.c
29124 ---- linux-3.0.9/drivers/tty/serial/mfd.c 2011-11-11 13:12:24.000000000 -0500
29125 -+++ linux-3.0.9/drivers/tty/serial/mfd.c 2011-11-15 20:02:59.000000000 -0500
29126 +diff -urNp linux-3.1.1/drivers/tty/serial/mfd.c linux-3.1.1/drivers/tty/serial/mfd.c
29127 +--- linux-3.1.1/drivers/tty/serial/mfd.c 2011-11-11 15:19:27.000000000 -0500
29128 ++++ linux-3.1.1/drivers/tty/serial/mfd.c 2011-11-16 18:39:08.000000000 -0500
29129 @@ -1423,7 +1423,7 @@ static void serial_hsu_remove(struct pci
29130 }
29131
29132 @@ -35889,9 +35878,9 @@ diff -urNp linux-3.0.9/drivers/tty/serial/mfd.c linux-3.0.9/drivers/tty/serial/m
29133 { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x081B) },
29134 { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x081C) },
29135 { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x081D) },
29136 -diff -urNp linux-3.0.9/drivers/tty/serial/mrst_max3110.c linux-3.0.9/drivers/tty/serial/mrst_max3110.c
29137 ---- linux-3.0.9/drivers/tty/serial/mrst_max3110.c 2011-11-11 13:12:24.000000000 -0500
29138 -+++ linux-3.0.9/drivers/tty/serial/mrst_max3110.c 2011-11-15 20:02:59.000000000 -0500
29139 +diff -urNp linux-3.1.1/drivers/tty/serial/mrst_max3110.c linux-3.1.1/drivers/tty/serial/mrst_max3110.c
29140 +--- linux-3.1.1/drivers/tty/serial/mrst_max3110.c 2011-11-11 15:19:27.000000000 -0500
29141 ++++ linux-3.1.1/drivers/tty/serial/mrst_max3110.c 2011-11-16 18:40:29.000000000 -0500
29142 @@ -393,6 +393,8 @@ static void max3110_con_receive(struct u
29143 int loop = 1, num, total = 0;
29144 u8 recv_buf[512], *pbuf;
29145 @@ -35901,9 +35890,9 @@ diff -urNp linux-3.0.9/drivers/tty/serial/mrst_max3110.c linux-3.0.9/drivers/tty
29146 pbuf = recv_buf;
29147 do {
29148 num = max3110_read_multi(max, pbuf);
29149 -diff -urNp linux-3.0.9/drivers/tty/tty_io.c linux-3.0.9/drivers/tty/tty_io.c
29150 ---- linux-3.0.9/drivers/tty/tty_io.c 2011-11-11 13:12:24.000000000 -0500
29151 -+++ linux-3.0.9/drivers/tty/tty_io.c 2011-11-15 20:02:59.000000000 -0500
29152 +diff -urNp linux-3.1.1/drivers/tty/tty_io.c linux-3.1.1/drivers/tty/tty_io.c
29153 +--- linux-3.1.1/drivers/tty/tty_io.c 2011-11-11 15:19:27.000000000 -0500
29154 ++++ linux-3.1.1/drivers/tty/tty_io.c 2011-11-16 18:39:08.000000000 -0500
29155 @@ -3238,7 +3238,7 @@ EXPORT_SYMBOL_GPL(get_current_tty);
29156
29157 void tty_default_fops(struct file_operations *fops)
29158 @@ -35913,9 +35902,9 @@ diff -urNp linux-3.0.9/drivers/tty/tty_io.c linux-3.0.9/drivers/tty/tty_io.c
29159 }
29160
29161 /*
29162 -diff -urNp linux-3.0.9/drivers/tty/tty_ldisc.c linux-3.0.9/drivers/tty/tty_ldisc.c
29163 ---- linux-3.0.9/drivers/tty/tty_ldisc.c 2011-11-11 13:12:24.000000000 -0500
29164 -+++ linux-3.0.9/drivers/tty/tty_ldisc.c 2011-11-15 20:02:59.000000000 -0500
29165 +diff -urNp linux-3.1.1/drivers/tty/tty_ldisc.c linux-3.1.1/drivers/tty/tty_ldisc.c
29166 +--- linux-3.1.1/drivers/tty/tty_ldisc.c 2011-11-11 15:19:27.000000000 -0500
29167 ++++ linux-3.1.1/drivers/tty/tty_ldisc.c 2011-11-16 18:39:08.000000000 -0500
29168 @@ -74,7 +74,7 @@ static void put_ldisc(struct tty_ldisc *
29169 if (atomic_dec_and_lock(&ld->users, &tty_ldisc_lock)) {
29170 struct tty_ldisc_ops *ldo = ld->ops;
29171 @@ -35961,9 +35950,9 @@ diff -urNp linux-3.0.9/drivers/tty/tty_ldisc.c linux-3.0.9/drivers/tty/tty_ldisc
29172 module_put(ldops->owner);
29173 spin_unlock_irqrestore(&tty_ldisc_lock, flags);
29174 }
29175 -diff -urNp linux-3.0.9/drivers/tty/vt/keyboard.c linux-3.0.9/drivers/tty/vt/keyboard.c
29176 ---- linux-3.0.9/drivers/tty/vt/keyboard.c 2011-11-11 13:12:24.000000000 -0500
29177 -+++ linux-3.0.9/drivers/tty/vt/keyboard.c 2011-11-15 20:02:59.000000000 -0500
29178 +diff -urNp linux-3.1.1/drivers/tty/vt/keyboard.c linux-3.1.1/drivers/tty/vt/keyboard.c
29179 +--- linux-3.1.1/drivers/tty/vt/keyboard.c 2011-11-11 15:19:27.000000000 -0500
29180 ++++ linux-3.1.1/drivers/tty/vt/keyboard.c 2011-11-16 18:40:29.000000000 -0500
29181 @@ -656,6 +656,16 @@ static void k_spec(struct vc_data *vc, u
29182 kbd->kbdmode == VC_OFF) &&
29183 value != KVAL(K_SAK))
29184 @@ -35981,9 +35970,9 @@ diff -urNp linux-3.0.9/drivers/tty/vt/keyboard.c linux-3.0.9/drivers/tty/vt/keyb
29185 fn_handler[value](vc);
29186 }
29187
29188 -diff -urNp linux-3.0.9/drivers/tty/vt/vt.c linux-3.0.9/drivers/tty/vt/vt.c
29189 ---- linux-3.0.9/drivers/tty/vt/vt.c 2011-11-11 13:12:24.000000000 -0500
29190 -+++ linux-3.0.9/drivers/tty/vt/vt.c 2011-11-15 20:02:59.000000000 -0500
29191 +diff -urNp linux-3.1.1/drivers/tty/vt/vt.c linux-3.1.1/drivers/tty/vt/vt.c
29192 +--- linux-3.1.1/drivers/tty/vt/vt.c 2011-11-11 15:19:27.000000000 -0500
29193 ++++ linux-3.1.1/drivers/tty/vt/vt.c 2011-11-16 18:39:08.000000000 -0500
29194 @@ -259,7 +259,7 @@ EXPORT_SYMBOL_GPL(unregister_vt_notifier
29195
29196 static void notify_write(struct vc_data *vc, unsigned int unicode)
29197 @@ -35993,9 +35982,9 @@ diff -urNp linux-3.0.9/drivers/tty/vt/vt.c linux-3.0.9/drivers/tty/vt/vt.c
29198 atomic_notifier_call_chain(&vt_notifier_list, VT_WRITE, &param);
29199 }
29200
29201 -diff -urNp linux-3.0.9/drivers/tty/vt/vt_ioctl.c linux-3.0.9/drivers/tty/vt/vt_ioctl.c
29202 ---- linux-3.0.9/drivers/tty/vt/vt_ioctl.c 2011-11-11 13:12:24.000000000 -0500
29203 -+++ linux-3.0.9/drivers/tty/vt/vt_ioctl.c 2011-11-15 20:02:59.000000000 -0500
29204 +diff -urNp linux-3.1.1/drivers/tty/vt/vt_ioctl.c linux-3.1.1/drivers/tty/vt/vt_ioctl.c
29205 +--- linux-3.1.1/drivers/tty/vt/vt_ioctl.c 2011-11-11 15:19:27.000000000 -0500
29206 ++++ linux-3.1.1/drivers/tty/vt/vt_ioctl.c 2011-11-16 18:40:29.000000000 -0500
29207 @@ -207,9 +207,6 @@ do_kdsk_ioctl(int cmd, struct kbentry __
29208 if (copy_from_user(&tmp, user_kbe, sizeof(struct kbentry)))
29209 return -EFAULT;
29210 @@ -36036,9 +36025,9 @@ diff -urNp linux-3.0.9/drivers/tty/vt/vt_ioctl.c linux-3.0.9/drivers/tty/vt/vt_i
29211 if (!perm) {
29212 ret = -EPERM;
29213 goto reterr;
29214 -diff -urNp linux-3.0.9/drivers/uio/uio.c linux-3.0.9/drivers/uio/uio.c
29215 ---- linux-3.0.9/drivers/uio/uio.c 2011-11-11 13:12:24.000000000 -0500
29216 -+++ linux-3.0.9/drivers/uio/uio.c 2011-11-15 20:02:59.000000000 -0500
29217 +diff -urNp linux-3.1.1/drivers/uio/uio.c linux-3.1.1/drivers/uio/uio.c
29218 +--- linux-3.1.1/drivers/uio/uio.c 2011-11-11 15:19:27.000000000 -0500
29219 ++++ linux-3.1.1/drivers/uio/uio.c 2011-11-16 18:39:08.000000000 -0500
29220 @@ -25,6 +25,7 @@
29221 #include <linux/kobject.h>
29222 #include <linux/cdev.h>
29223 @@ -36130,9 +36119,9 @@ diff -urNp linux-3.0.9/drivers/uio/uio.c linux-3.0.9/drivers/uio/uio.c
29224
29225 ret = uio_get_minor(idev);
29226 if (ret)
29227 -diff -urNp linux-3.0.9/drivers/usb/atm/cxacru.c linux-3.0.9/drivers/usb/atm/cxacru.c
29228 ---- linux-3.0.9/drivers/usb/atm/cxacru.c 2011-11-11 13:12:24.000000000 -0500
29229 -+++ linux-3.0.9/drivers/usb/atm/cxacru.c 2011-11-15 20:02:59.000000000 -0500
29230 +diff -urNp linux-3.1.1/drivers/usb/atm/cxacru.c linux-3.1.1/drivers/usb/atm/cxacru.c
29231 +--- linux-3.1.1/drivers/usb/atm/cxacru.c 2011-11-11 15:19:27.000000000 -0500
29232 ++++ linux-3.1.1/drivers/usb/atm/cxacru.c 2011-11-16 18:39:08.000000000 -0500
29233 @@ -473,7 +473,7 @@ static ssize_t cxacru_sysfs_store_adsl_c
29234 ret = sscanf(buf + pos, "%x=%x%n", &index, &value, &tmp);
29235 if (ret < 2)
29236 @@ -36142,10 +36131,10 @@ diff -urNp linux-3.0.9/drivers/usb/atm/cxacru.c linux-3.0.9/drivers/usb/atm/cxac
29237 return -EINVAL;
29238 pos += tmp;
29239
29240 -diff -urNp linux-3.0.9/drivers/usb/atm/usbatm.c linux-3.0.9/drivers/usb/atm/usbatm.c
29241 ---- linux-3.0.9/drivers/usb/atm/usbatm.c 2011-11-11 13:12:24.000000000 -0500
29242 -+++ linux-3.0.9/drivers/usb/atm/usbatm.c 2011-11-15 20:02:59.000000000 -0500
29243 -@@ -332,7 +332,7 @@ static void usbatm_extract_one_cell(stru
29244 +diff -urNp linux-3.1.1/drivers/usb/atm/usbatm.c linux-3.1.1/drivers/usb/atm/usbatm.c
29245 +--- linux-3.1.1/drivers/usb/atm/usbatm.c 2011-11-11 15:19:27.000000000 -0500
29246 ++++ linux-3.1.1/drivers/usb/atm/usbatm.c 2011-11-16 18:39:08.000000000 -0500
29247 +@@ -333,7 +333,7 @@ static void usbatm_extract_one_cell(stru
29248 if (printk_ratelimit())
29249 atm_warn(instance, "%s: OAM not supported (vpi %d, vci %d)!\n",
29250 __func__, vpi, vci);
29251 @@ -36154,7 +36143,7 @@ diff -urNp linux-3.0.9/drivers/usb/atm/usbatm.c linux-3.0.9/drivers/usb/atm/usba
29252 return;
29253 }
29254
29255 -@@ -360,7 +360,7 @@ static void usbatm_extract_one_cell(stru
29256 +@@ -361,7 +361,7 @@ static void usbatm_extract_one_cell(stru
29257 if (length > ATM_MAX_AAL5_PDU) {
29258 atm_rldbg(instance, "%s: bogus length %u (vcc: 0x%p)!\n",
29259 __func__, length, vcc);
29260 @@ -36163,7 +36152,7 @@ diff -urNp linux-3.0.9/drivers/usb/atm/usbatm.c linux-3.0.9/drivers/usb/atm/usba
29261 goto out;
29262 }
29263
29264 -@@ -369,14 +369,14 @@ static void usbatm_extract_one_cell(stru
29265 +@@ -370,14 +370,14 @@ static void usbatm_extract_one_cell(stru
29266 if (sarb->len < pdu_length) {
29267 atm_rldbg(instance, "%s: bogus pdu_length %u (sarb->len: %u, vcc: 0x%p)!\n",
29268 __func__, pdu_length, sarb->len, vcc);
29269 @@ -36180,7 +36169,7 @@ diff -urNp linux-3.0.9/drivers/usb/atm/usbatm.c linux-3.0.9/drivers/usb/atm/usba
29270 goto out;
29271 }
29272
29273 -@@ -386,7 +386,7 @@ static void usbatm_extract_one_cell(stru
29274 +@@ -387,7 +387,7 @@ static void usbatm_extract_one_cell(stru
29275 if (printk_ratelimit())
29276 atm_err(instance, "%s: no memory for skb (length: %u)!\n",
29277 __func__, length);
29278 @@ -36189,7 +36178,7 @@ diff -urNp linux-3.0.9/drivers/usb/atm/usbatm.c linux-3.0.9/drivers/usb/atm/usba
29279 goto out;
29280 }
29281
29282 -@@ -411,7 +411,7 @@ static void usbatm_extract_one_cell(stru
29283 +@@ -412,7 +412,7 @@ static void usbatm_extract_one_cell(stru
29284
29285 vcc->push(vcc, skb);
29286
29287 @@ -36198,7 +36187,7 @@ diff -urNp linux-3.0.9/drivers/usb/atm/usbatm.c linux-3.0.9/drivers/usb/atm/usba
29288 out:
29289 skb_trim(sarb, 0);
29290 }
29291 -@@ -614,7 +614,7 @@ static void usbatm_tx_process(unsigned l
29292 +@@ -615,7 +615,7 @@ static void usbatm_tx_process(unsigned l
29293 struct atm_vcc *vcc = UDSL_SKB(skb)->atm.vcc;
29294
29295 usbatm_pop(vcc, skb);
29296 @@ -36224,9 +36213,9 @@ diff -urNp linux-3.0.9/drivers/usb/atm/usbatm.c linux-3.0.9/drivers/usb/atm/usba
29297
29298 if (!left--) {
29299 if (instance->disconnected)
29300 -diff -urNp linux-3.0.9/drivers/usb/core/devices.c linux-3.0.9/drivers/usb/core/devices.c
29301 ---- linux-3.0.9/drivers/usb/core/devices.c 2011-11-11 13:12:24.000000000 -0500
29302 -+++ linux-3.0.9/drivers/usb/core/devices.c 2011-11-15 20:02:59.000000000 -0500
29303 +diff -urNp linux-3.1.1/drivers/usb/core/devices.c linux-3.1.1/drivers/usb/core/devices.c
29304 +--- linux-3.1.1/drivers/usb/core/devices.c 2011-11-11 15:19:27.000000000 -0500
29305 ++++ linux-3.1.1/drivers/usb/core/devices.c 2011-11-16 18:39:08.000000000 -0500
29306 @@ -126,7 +126,7 @@ static const char format_endpt[] =
29307 * time it gets called.
29308 */
29309 @@ -36254,9 +36243,9 @@ diff -urNp linux-3.0.9/drivers/usb/core/devices.c linux-3.0.9/drivers/usb/core/d
29310 if (file->f_version != event_count) {
29311 file->f_version = event_count;
29312 return POLLIN | POLLRDNORM;
29313 -diff -urNp linux-3.0.9/drivers/usb/core/message.c linux-3.0.9/drivers/usb/core/message.c
29314 ---- linux-3.0.9/drivers/usb/core/message.c 2011-11-11 13:12:24.000000000 -0500
29315 -+++ linux-3.0.9/drivers/usb/core/message.c 2011-11-15 20:02:59.000000000 -0500
29316 +diff -urNp linux-3.1.1/drivers/usb/core/message.c linux-3.1.1/drivers/usb/core/message.c
29317 +--- linux-3.1.1/drivers/usb/core/message.c 2011-11-11 15:19:27.000000000 -0500
29318 ++++ linux-3.1.1/drivers/usb/core/message.c 2011-11-16 18:39:08.000000000 -0500
29319 @@ -869,8 +869,8 @@ char *usb_cache_string(struct usb_device
29320 buf = kmalloc(MAX_USB_STRING_SIZE, GFP_NOIO);
29321 if (buf) {
29322 @@ -36268,9 +36257,9 @@ diff -urNp linux-3.0.9/drivers/usb/core/message.c linux-3.0.9/drivers/usb/core/m
29323 if (!smallbuf)
29324 return buf;
29325 memcpy(smallbuf, buf, len);
29326 -diff -urNp linux-3.0.9/drivers/usb/early/ehci-dbgp.c linux-3.0.9/drivers/usb/early/ehci-dbgp.c
29327 ---- linux-3.0.9/drivers/usb/early/ehci-dbgp.c 2011-11-11 13:12:24.000000000 -0500
29328 -+++ linux-3.0.9/drivers/usb/early/ehci-dbgp.c 2011-11-15 20:02:59.000000000 -0500
29329 +diff -urNp linux-3.1.1/drivers/usb/early/ehci-dbgp.c linux-3.1.1/drivers/usb/early/ehci-dbgp.c
29330 +--- linux-3.1.1/drivers/usb/early/ehci-dbgp.c 2011-11-11 15:19:27.000000000 -0500
29331 ++++ linux-3.1.1/drivers/usb/early/ehci-dbgp.c 2011-11-16 18:39:08.000000000 -0500
29332 @@ -97,7 +97,8 @@ static inline u32 dbgp_len_update(u32 x,
29333
29334 #ifdef CONFIG_KGDB
29335 @@ -36308,9 +36297,9 @@ diff -urNp linux-3.0.9/drivers/usb/early/ehci-dbgp.c linux-3.0.9/drivers/usb/ear
29336
29337 return 0;
29338 }
29339 -diff -urNp linux-3.0.9/drivers/usb/host/xhci-mem.c linux-3.0.9/drivers/usb/host/xhci-mem.c
29340 ---- linux-3.0.9/drivers/usb/host/xhci-mem.c 2011-11-11 13:12:24.000000000 -0500
29341 -+++ linux-3.0.9/drivers/usb/host/xhci-mem.c 2011-11-15 20:02:59.000000000 -0500
29342 +diff -urNp linux-3.1.1/drivers/usb/host/xhci-mem.c linux-3.1.1/drivers/usb/host/xhci-mem.c
29343 +--- linux-3.1.1/drivers/usb/host/xhci-mem.c 2011-11-11 15:19:27.000000000 -0500
29344 ++++ linux-3.1.1/drivers/usb/host/xhci-mem.c 2011-11-16 18:40:29.000000000 -0500
29345 @@ -1690,6 +1690,8 @@ static int xhci_check_trb_in_td_math(str
29346 unsigned int num_tests;
29347 int i, ret;
29348 @@ -36320,9 +36309,9 @@ diff -urNp linux-3.0.9/drivers/usb/host/xhci-mem.c linux-3.0.9/drivers/usb/host/
29349 num_tests = ARRAY_SIZE(simple_test_vector);
29350 for (i = 0; i < num_tests; i++) {
29351 ret = xhci_test_trb_in_td(xhci,
29352 -diff -urNp linux-3.0.9/drivers/usb/wusbcore/wa-hc.h linux-3.0.9/drivers/usb/wusbcore/wa-hc.h
29353 ---- linux-3.0.9/drivers/usb/wusbcore/wa-hc.h 2011-11-11 13:12:24.000000000 -0500
29354 -+++ linux-3.0.9/drivers/usb/wusbcore/wa-hc.h 2011-11-15 20:02:59.000000000 -0500
29355 +diff -urNp linux-3.1.1/drivers/usb/wusbcore/wa-hc.h linux-3.1.1/drivers/usb/wusbcore/wa-hc.h
29356 +--- linux-3.1.1/drivers/usb/wusbcore/wa-hc.h 2011-11-11 15:19:27.000000000 -0500
29357 ++++ linux-3.1.1/drivers/usb/wusbcore/wa-hc.h 2011-11-16 18:39:08.000000000 -0500
29358 @@ -192,7 +192,7 @@ struct wahc {
29359 struct list_head xfer_delayed_list;
29360 spinlock_t xfer_list_lock;
29361 @@ -36341,10 +36330,10 @@ diff -urNp linux-3.0.9/drivers/usb/wusbcore/wa-hc.h linux-3.0.9/drivers/usb/wusb
29362 }
29363
29364 /**
29365 -diff -urNp linux-3.0.9/drivers/usb/wusbcore/wa-xfer.c linux-3.0.9/drivers/usb/wusbcore/wa-xfer.c
29366 ---- linux-3.0.9/drivers/usb/wusbcore/wa-xfer.c 2011-11-11 13:12:24.000000000 -0500
29367 -+++ linux-3.0.9/drivers/usb/wusbcore/wa-xfer.c 2011-11-15 20:02:59.000000000 -0500
29368 -@@ -294,7 +294,7 @@ out:
29369 +diff -urNp linux-3.1.1/drivers/usb/wusbcore/wa-xfer.c linux-3.1.1/drivers/usb/wusbcore/wa-xfer.c
29370 +--- linux-3.1.1/drivers/usb/wusbcore/wa-xfer.c 2011-11-11 15:19:27.000000000 -0500
29371 ++++ linux-3.1.1/drivers/usb/wusbcore/wa-xfer.c 2011-11-16 18:39:08.000000000 -0500
29372 +@@ -295,7 +295,7 @@ out:
29373 */
29374 static void wa_xfer_id_init(struct wa_xfer *xfer)
29375 {
29376 @@ -36353,11 +36342,11 @@ diff -urNp linux-3.0.9/drivers/usb/wusbcore/wa-xfer.c linux-3.0.9/drivers/usb/wu
29377 }
29378
29379 /*
29380 -diff -urNp linux-3.0.9/drivers/vhost/vhost.c linux-3.0.9/drivers/vhost/vhost.c
29381 ---- linux-3.0.9/drivers/vhost/vhost.c 2011-11-11 13:12:24.000000000 -0500
29382 -+++ linux-3.0.9/drivers/vhost/vhost.c 2011-11-15 20:02:59.000000000 -0500
29383 -@@ -589,7 +589,7 @@ static int init_used(struct vhost_virtqu
29384 - return get_user(vq->last_used_idx, &used->idx);
29385 +diff -urNp linux-3.1.1/drivers/vhost/vhost.c linux-3.1.1/drivers/vhost/vhost.c
29386 +--- linux-3.1.1/drivers/vhost/vhost.c 2011-11-11 15:19:27.000000000 -0500
29387 ++++ linux-3.1.1/drivers/vhost/vhost.c 2011-11-16 18:39:08.000000000 -0500
29388 +@@ -629,7 +629,7 @@ static long vhost_set_memory(struct vhos
29389 + return 0;
29390 }
29391
29392 -static long vhost_set_vring(struct vhost_dev *d, int ioctl, void __user *argp)
29393 @@ -36365,9 +36354,9 @@ diff -urNp linux-3.0.9/drivers/vhost/vhost.c linux-3.0.9/drivers/vhost/vhost.c
29394 {
29395 struct file *eventfp, *filep = NULL,
29396 *pollstart = NULL, *pollstop = NULL;
29397 -diff -urNp linux-3.0.9/drivers/video/aty/aty128fb.c linux-3.0.9/drivers/video/aty/aty128fb.c
29398 ---- linux-3.0.9/drivers/video/aty/aty128fb.c 2011-11-11 13:12:24.000000000 -0500
29399 -+++ linux-3.0.9/drivers/video/aty/aty128fb.c 2011-11-15 20:02:59.000000000 -0500
29400 +diff -urNp linux-3.1.1/drivers/video/aty/aty128fb.c linux-3.1.1/drivers/video/aty/aty128fb.c
29401 +--- linux-3.1.1/drivers/video/aty/aty128fb.c 2011-11-11 15:19:27.000000000 -0500
29402 ++++ linux-3.1.1/drivers/video/aty/aty128fb.c 2011-11-16 18:39:08.000000000 -0500
29403 @@ -148,7 +148,7 @@ enum {
29404 };
29405
29406 @@ -36377,9 +36366,9 @@ diff -urNp linux-3.0.9/drivers/video/aty/aty128fb.c linux-3.0.9/drivers/video/at
29407 "AGP",
29408 "PCI",
29409 "PRO AGP",
29410 -diff -urNp linux-3.0.9/drivers/video/fbcmap.c linux-3.0.9/drivers/video/fbcmap.c
29411 ---- linux-3.0.9/drivers/video/fbcmap.c 2011-11-11 13:12:24.000000000 -0500
29412 -+++ linux-3.0.9/drivers/video/fbcmap.c 2011-11-15 20:02:59.000000000 -0500
29413 +diff -urNp linux-3.1.1/drivers/video/fbcmap.c linux-3.1.1/drivers/video/fbcmap.c
29414 +--- linux-3.1.1/drivers/video/fbcmap.c 2011-11-11 15:19:27.000000000 -0500
29415 ++++ linux-3.1.1/drivers/video/fbcmap.c 2011-11-16 18:39:08.000000000 -0500
29416 @@ -285,8 +285,7 @@ int fb_set_user_cmap(struct fb_cmap_user
29417 rc = -ENODEV;
29418 goto out;
29419 @@ -36390,9 +36379,9 @@ diff -urNp linux-3.0.9/drivers/video/fbcmap.c linux-3.0.9/drivers/video/fbcmap.c
29420 rc = -EINVAL;
29421 goto out1;
29422 }
29423 -diff -urNp linux-3.0.9/drivers/video/fbmem.c linux-3.0.9/drivers/video/fbmem.c
29424 ---- linux-3.0.9/drivers/video/fbmem.c 2011-11-11 13:12:24.000000000 -0500
29425 -+++ linux-3.0.9/drivers/video/fbmem.c 2011-11-15 20:02:59.000000000 -0500
29426 +diff -urNp linux-3.1.1/drivers/video/fbmem.c linux-3.1.1/drivers/video/fbmem.c
29427 +--- linux-3.1.1/drivers/video/fbmem.c 2011-11-11 15:19:27.000000000 -0500
29428 ++++ linux-3.1.1/drivers/video/fbmem.c 2011-11-16 18:40:29.000000000 -0500
29429 @@ -428,7 +428,7 @@ static void fb_do_show_logo(struct fb_in
29430 image->dx += image->width + 8;
29431 }
29432 @@ -36438,9 +36427,9 @@ diff -urNp linux-3.0.9/drivers/video/fbmem.c linux-3.0.9/drivers/video/fbmem.c
29433 return -EINVAL;
29434 if (!registered_fb[con2fb.framebuffer])
29435 request_module("fb%d", con2fb.framebuffer);
29436 -diff -urNp linux-3.0.9/drivers/video/geode/gx1fb_core.c linux-3.0.9/drivers/video/geode/gx1fb_core.c
29437 ---- linux-3.0.9/drivers/video/geode/gx1fb_core.c 2011-11-11 13:12:24.000000000 -0500
29438 -+++ linux-3.0.9/drivers/video/geode/gx1fb_core.c 2011-11-15 20:02:59.000000000 -0500
29439 +diff -urNp linux-3.1.1/drivers/video/geode/gx1fb_core.c linux-3.1.1/drivers/video/geode/gx1fb_core.c
29440 +--- linux-3.1.1/drivers/video/geode/gx1fb_core.c 2011-11-11 15:19:27.000000000 -0500
29441 ++++ linux-3.1.1/drivers/video/geode/gx1fb_core.c 2011-11-16 18:39:08.000000000 -0500
29442 @@ -29,7 +29,7 @@ static int crt_option = 1;
29443 static char panel_option[32] = "";
29444
29445 @@ -36450,9 +36439,9 @@ diff -urNp linux-3.0.9/drivers/video/geode/gx1fb_core.c linux-3.0.9/drivers/vide
29446 /* 640x480-60 VESA */
29447 { NULL, 60, 640, 480, 39682, 48, 16, 33, 10, 96, 2,
29448 0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
29449 -diff -urNp linux-3.0.9/drivers/video/gxt4500.c linux-3.0.9/drivers/video/gxt4500.c
29450 ---- linux-3.0.9/drivers/video/gxt4500.c 2011-11-11 13:12:24.000000000 -0500
29451 -+++ linux-3.0.9/drivers/video/gxt4500.c 2011-11-15 20:02:59.000000000 -0500
29452 +diff -urNp linux-3.1.1/drivers/video/gxt4500.c linux-3.1.1/drivers/video/gxt4500.c
29453 +--- linux-3.1.1/drivers/video/gxt4500.c 2011-11-11 15:19:27.000000000 -0500
29454 ++++ linux-3.1.1/drivers/video/gxt4500.c 2011-11-16 18:39:08.000000000 -0500
29455 @@ -156,7 +156,7 @@ struct gxt4500_par {
29456 static char *mode_option;
29457
29458 @@ -36471,9 +36460,9 @@ diff -urNp linux-3.0.9/drivers/video/gxt4500.c linux-3.0.9/drivers/video/gxt4500
29459 .id = "IBM GXT4500P",
29460 .type = FB_TYPE_PACKED_PIXELS,
29461 .visual = FB_VISUAL_PSEUDOCOLOR,
29462 -diff -urNp linux-3.0.9/drivers/video/i810/i810_accel.c linux-3.0.9/drivers/video/i810/i810_accel.c
29463 ---- linux-3.0.9/drivers/video/i810/i810_accel.c 2011-11-11 13:12:24.000000000 -0500
29464 -+++ linux-3.0.9/drivers/video/i810/i810_accel.c 2011-11-15 20:02:59.000000000 -0500
29465 +diff -urNp linux-3.1.1/drivers/video/i810/i810_accel.c linux-3.1.1/drivers/video/i810/i810_accel.c
29466 +--- linux-3.1.1/drivers/video/i810/i810_accel.c 2011-11-11 15:19:27.000000000 -0500
29467 ++++ linux-3.1.1/drivers/video/i810/i810_accel.c 2011-11-16 18:39:08.000000000 -0500
29468 @@ -73,6 +73,7 @@ static inline int wait_for_space(struct
29469 }
29470 }
29471 @@ -36482,9 +36471,9 @@ diff -urNp linux-3.0.9/drivers/video/i810/i810_accel.c linux-3.0.9/drivers/video
29472 i810_report_error(mmio);
29473 par->dev_flags |= LOCKUP;
29474 info->pixmap.scan_align = 1;
29475 -diff -urNp linux-3.0.9/drivers/video/i810/i810_main.c linux-3.0.9/drivers/video/i810/i810_main.c
29476 ---- linux-3.0.9/drivers/video/i810/i810_main.c 2011-11-11 13:12:24.000000000 -0500
29477 -+++ linux-3.0.9/drivers/video/i810/i810_main.c 2011-11-15 20:02:59.000000000 -0500
29478 +diff -urNp linux-3.1.1/drivers/video/i810/i810_main.c linux-3.1.1/drivers/video/i810/i810_main.c
29479 +--- linux-3.1.1/drivers/video/i810/i810_main.c 2011-11-11 15:19:27.000000000 -0500
29480 ++++ linux-3.1.1/drivers/video/i810/i810_main.c 2011-11-16 18:39:08.000000000 -0500
29481 @@ -97,7 +97,7 @@ static int i810fb_blank (int blank_
29482 static void i810fb_release_resource (struct fb_info *info, struct i810fb_par *par);
29483
29484 @@ -36494,9 +36483,9 @@ diff -urNp linux-3.0.9/drivers/video/i810/i810_main.c linux-3.0.9/drivers/video/
29485 "Intel(R) 810 Framebuffer Device" ,
29486 "Intel(R) 810-DC100 Framebuffer Device" ,
29487 "Intel(R) 810E Framebuffer Device" ,
29488 -diff -urNp linux-3.0.9/drivers/video/jz4740_fb.c linux-3.0.9/drivers/video/jz4740_fb.c
29489 ---- linux-3.0.9/drivers/video/jz4740_fb.c 2011-11-11 13:12:24.000000000 -0500
29490 -+++ linux-3.0.9/drivers/video/jz4740_fb.c 2011-11-15 20:02:59.000000000 -0500
29491 +diff -urNp linux-3.1.1/drivers/video/jz4740_fb.c linux-3.1.1/drivers/video/jz4740_fb.c
29492 +--- linux-3.1.1/drivers/video/jz4740_fb.c 2011-11-11 15:19:27.000000000 -0500
29493 ++++ linux-3.1.1/drivers/video/jz4740_fb.c 2011-11-16 18:39:08.000000000 -0500
29494 @@ -136,7 +136,7 @@ struct jzfb {
29495 uint32_t pseudo_palette[16];
29496 };
29497 @@ -36506,9 +36495,9 @@ diff -urNp linux-3.0.9/drivers/video/jz4740_fb.c linux-3.0.9/drivers/video/jz474
29498 .id = "JZ4740 FB",
29499 .type = FB_TYPE_PACKED_PIXELS,
29500 .visual = FB_VISUAL_TRUECOLOR,
29501 -diff -urNp linux-3.0.9/drivers/video/logo/logo_linux_clut224.ppm linux-3.0.9/drivers/video/logo/logo_linux_clut224.ppm
29502 ---- linux-3.0.9/drivers/video/logo/logo_linux_clut224.ppm 2011-11-11 13:12:24.000000000 -0500
29503 -+++ linux-3.0.9/drivers/video/logo/logo_linux_clut224.ppm 2011-11-15 20:02:59.000000000 -0500
29504 +diff -urNp linux-3.1.1/drivers/video/logo/logo_linux_clut224.ppm linux-3.1.1/drivers/video/logo/logo_linux_clut224.ppm
29505 +--- linux-3.1.1/drivers/video/logo/logo_linux_clut224.ppm 2011-11-11 15:19:27.000000000 -0500
29506 ++++ linux-3.1.1/drivers/video/logo/logo_linux_clut224.ppm 2011-11-16 18:40:29.000000000 -0500
29507 @@ -1,1604 +1,1123 @@
29508 P3
29509 -# Standard 224-color Linux logo
29510 @@ -39234,10 +39223,10 @@ diff -urNp linux-3.0.9/drivers/video/logo/logo_linux_clut224.ppm linux-3.0.9/dri
29511 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
29512 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
29513 +4 4 4 4 4 4
29514 -diff -urNp linux-3.0.9/drivers/video/udlfb.c linux-3.0.9/drivers/video/udlfb.c
29515 ---- linux-3.0.9/drivers/video/udlfb.c 2011-11-11 13:12:24.000000000 -0500
29516 -+++ linux-3.0.9/drivers/video/udlfb.c 2011-11-15 20:02:59.000000000 -0500
29517 -@@ -586,11 +586,11 @@ int dlfb_handle_damage(struct dlfb_data
29518 +diff -urNp linux-3.1.1/drivers/video/udlfb.c linux-3.1.1/drivers/video/udlfb.c
29519 +--- linux-3.1.1/drivers/video/udlfb.c 2011-11-11 15:19:27.000000000 -0500
29520 ++++ linux-3.1.1/drivers/video/udlfb.c 2011-11-16 18:39:08.000000000 -0500
29521 +@@ -585,11 +585,11 @@ int dlfb_handle_damage(struct dlfb_data
29522 dlfb_urb_completion(urb);
29523
29524 error:
29525 @@ -39253,7 +39242,7 @@ diff -urNp linux-3.0.9/drivers/video/udlfb.c linux-3.0.9/drivers/video/udlfb.c
29526 >> 10)), /* Kcycles */
29527 &dev->cpu_kcycles_used);
29528
29529 -@@ -711,11 +711,11 @@ static void dlfb_dpy_deferred_io(struct
29530 +@@ -710,11 +710,11 @@ static void dlfb_dpy_deferred_io(struct
29531 dlfb_urb_completion(urb);
29532
29533 error:
29534 @@ -39269,7 +39258,7 @@ diff -urNp linux-3.0.9/drivers/video/udlfb.c linux-3.0.9/drivers/video/udlfb.c
29535 >> 10)), /* Kcycles */
29536 &dev->cpu_kcycles_used);
29537 }
29538 -@@ -1307,7 +1307,7 @@ static ssize_t metrics_bytes_rendered_sh
29539 +@@ -1306,7 +1306,7 @@ static ssize_t metrics_bytes_rendered_sh
29540 struct fb_info *fb_info = dev_get_drvdata(fbdev);
29541 struct dlfb_data *dev = fb_info->par;
29542 return snprintf(buf, PAGE_SIZE, "%u\n",
29543 @@ -39278,7 +39267,7 @@ diff -urNp linux-3.0.9/drivers/video/udlfb.c linux-3.0.9/drivers/video/udlfb.c
29544 }
29545
29546 static ssize_t metrics_bytes_identical_show(struct device *fbdev,
29547 -@@ -1315,7 +1315,7 @@ static ssize_t metrics_bytes_identical_s
29548 +@@ -1314,7 +1314,7 @@ static ssize_t metrics_bytes_identical_s
29549 struct fb_info *fb_info = dev_get_drvdata(fbdev);
29550 struct dlfb_data *dev = fb_info->par;
29551 return snprintf(buf, PAGE_SIZE, "%u\n",
29552 @@ -39287,7 +39276,7 @@ diff -urNp linux-3.0.9/drivers/video/udlfb.c linux-3.0.9/drivers/video/udlfb.c
29553 }
29554
29555 static ssize_t metrics_bytes_sent_show(struct device *fbdev,
29556 -@@ -1323,7 +1323,7 @@ static ssize_t metrics_bytes_sent_show(s
29557 +@@ -1322,7 +1322,7 @@ static ssize_t metrics_bytes_sent_show(s
29558 struct fb_info *fb_info = dev_get_drvdata(fbdev);
29559 struct dlfb_data *dev = fb_info->par;
29560 return snprintf(buf, PAGE_SIZE, "%u\n",
29561 @@ -39296,7 +39285,7 @@ diff -urNp linux-3.0.9/drivers/video/udlfb.c linux-3.0.9/drivers/video/udlfb.c
29562 }
29563
29564 static ssize_t metrics_cpu_kcycles_used_show(struct device *fbdev,
29565 -@@ -1331,7 +1331,7 @@ static ssize_t metrics_cpu_kcycles_used_
29566 +@@ -1330,7 +1330,7 @@ static ssize_t metrics_cpu_kcycles_used_
29567 struct fb_info *fb_info = dev_get_drvdata(fbdev);
29568 struct dlfb_data *dev = fb_info->par;
29569 return snprintf(buf, PAGE_SIZE, "%u\n",
29570 @@ -39305,7 +39294,7 @@ diff -urNp linux-3.0.9/drivers/video/udlfb.c linux-3.0.9/drivers/video/udlfb.c
29571 }
29572
29573 static ssize_t edid_show(
29574 -@@ -1388,10 +1388,10 @@ static ssize_t metrics_reset_store(struc
29575 +@@ -1387,10 +1387,10 @@ static ssize_t metrics_reset_store(struc
29576 struct fb_info *fb_info = dev_get_drvdata(fbdev);
29577 struct dlfb_data *dev = fb_info->par;
29578
29579 @@ -39320,9 +39309,9 @@ diff -urNp linux-3.0.9/drivers/video/udlfb.c linux-3.0.9/drivers/video/udlfb.c
29580
29581 return count;
29582 }
29583 -diff -urNp linux-3.0.9/drivers/video/uvesafb.c linux-3.0.9/drivers/video/uvesafb.c
29584 ---- linux-3.0.9/drivers/video/uvesafb.c 2011-11-11 13:12:24.000000000 -0500
29585 -+++ linux-3.0.9/drivers/video/uvesafb.c 2011-11-15 20:02:59.000000000 -0500
29586 +diff -urNp linux-3.1.1/drivers/video/uvesafb.c linux-3.1.1/drivers/video/uvesafb.c
29587 +--- linux-3.1.1/drivers/video/uvesafb.c 2011-11-11 15:19:27.000000000 -0500
29588 ++++ linux-3.1.1/drivers/video/uvesafb.c 2011-11-16 18:39:08.000000000 -0500
29589 @@ -19,6 +19,7 @@
29590 #include <linux/io.h>
29591 #include <linux/mutex.h>
29592 @@ -39398,9 +39387,9 @@ diff -urNp linux-3.0.9/drivers/video/uvesafb.c linux-3.0.9/drivers/video/uvesafb
29593 }
29594
29595 framebuffer_release(info);
29596 -diff -urNp linux-3.0.9/drivers/video/vesafb.c linux-3.0.9/drivers/video/vesafb.c
29597 ---- linux-3.0.9/drivers/video/vesafb.c 2011-11-11 13:12:24.000000000 -0500
29598 -+++ linux-3.0.9/drivers/video/vesafb.c 2011-11-15 20:02:59.000000000 -0500
29599 +diff -urNp linux-3.1.1/drivers/video/vesafb.c linux-3.1.1/drivers/video/vesafb.c
29600 +--- linux-3.1.1/drivers/video/vesafb.c 2011-11-11 15:19:27.000000000 -0500
29601 ++++ linux-3.1.1/drivers/video/vesafb.c 2011-11-16 18:39:08.000000000 -0500
29602 @@ -9,6 +9,7 @@
29603 */
29604
29605 @@ -39503,9 +39492,9 @@ diff -urNp linux-3.0.9/drivers/video/vesafb.c linux-3.0.9/drivers/video/vesafb.c
29606 if (info->screen_base)
29607 iounmap(info->screen_base);
29608 framebuffer_release(info);
29609 -diff -urNp linux-3.0.9/drivers/video/via/via_clock.h linux-3.0.9/drivers/video/via/via_clock.h
29610 ---- linux-3.0.9/drivers/video/via/via_clock.h 2011-11-11 13:12:24.000000000 -0500
29611 -+++ linux-3.0.9/drivers/video/via/via_clock.h 2011-11-15 20:02:59.000000000 -0500
29612 +diff -urNp linux-3.1.1/drivers/video/via/via_clock.h linux-3.1.1/drivers/video/via/via_clock.h
29613 +--- linux-3.1.1/drivers/video/via/via_clock.h 2011-11-11 15:19:27.000000000 -0500
29614 ++++ linux-3.1.1/drivers/video/via/via_clock.h 2011-11-16 18:39:08.000000000 -0500
29615 @@ -56,7 +56,7 @@ struct via_clock {
29616
29617 void (*set_engine_pll_state)(u8 state);
29618 @@ -39515,9 +39504,9 @@ diff -urNp linux-3.0.9/drivers/video/via/via_clock.h linux-3.0.9/drivers/video/v
29619
29620
29621 static inline u32 get_pll_internal_frequency(u32 ref_freq,
29622 -diff -urNp linux-3.0.9/drivers/virtio/virtio_balloon.c linux-3.0.9/drivers/virtio/virtio_balloon.c
29623 ---- linux-3.0.9/drivers/virtio/virtio_balloon.c 2011-11-11 13:12:24.000000000 -0500
29624 -+++ linux-3.0.9/drivers/virtio/virtio_balloon.c 2011-11-15 20:02:59.000000000 -0500
29625 +diff -urNp linux-3.1.1/drivers/virtio/virtio_balloon.c linux-3.1.1/drivers/virtio/virtio_balloon.c
29626 +--- linux-3.1.1/drivers/virtio/virtio_balloon.c 2011-11-11 15:19:27.000000000 -0500
29627 ++++ linux-3.1.1/drivers/virtio/virtio_balloon.c 2011-11-16 18:40:29.000000000 -0500
29628 @@ -174,6 +174,8 @@ static void update_balloon_stats(struct
29629 struct sysinfo i;
29630 int idx = 0;
29631 @@ -39527,10 +39516,32 @@ diff -urNp linux-3.0.9/drivers/virtio/virtio_balloon.c linux-3.0.9/drivers/virti
29632 all_vm_events(events);
29633 si_meminfo(&i);
29634
29635 -diff -urNp linux-3.0.9/fs/9p/vfs_inode.c linux-3.0.9/fs/9p/vfs_inode.c
29636 ---- linux-3.0.9/fs/9p/vfs_inode.c 2011-11-11 13:12:24.000000000 -0500
29637 -+++ linux-3.0.9/fs/9p/vfs_inode.c 2011-11-15 20:02:59.000000000 -0500
29638 -@@ -1264,7 +1264,7 @@ static void *v9fs_vfs_follow_link(struct
29639 +diff -urNp linux-3.1.1/drivers/xen/xen-pciback/conf_space.h linux-3.1.1/drivers/xen/xen-pciback/conf_space.h
29640 +--- linux-3.1.1/drivers/xen/xen-pciback/conf_space.h 2011-11-11 15:19:27.000000000 -0500
29641 ++++ linux-3.1.1/drivers/xen/xen-pciback/conf_space.h 2011-11-16 18:39:08.000000000 -0500
29642 +@@ -44,15 +44,15 @@ struct config_field {
29643 + struct {
29644 + conf_dword_write write;
29645 + conf_dword_read read;
29646 +- } dw;
29647 ++ } __no_const dw;
29648 + struct {
29649 + conf_word_write write;
29650 + conf_word_read read;
29651 +- } w;
29652 ++ } __no_const w;
29653 + struct {
29654 + conf_byte_write write;
29655 + conf_byte_read read;
29656 +- } b;
29657 ++ } __no_const b;
29658 + } u;
29659 + struct list_head list;
29660 + };
29661 +diff -urNp linux-3.1.1/fs/9p/vfs_inode.c linux-3.1.1/fs/9p/vfs_inode.c
29662 +--- linux-3.1.1/fs/9p/vfs_inode.c 2011-11-11 15:19:27.000000000 -0500
29663 ++++ linux-3.1.1/fs/9p/vfs_inode.c 2011-11-16 18:39:08.000000000 -0500
29664 +@@ -1288,7 +1288,7 @@ static void *v9fs_vfs_follow_link(struct
29665 void
29666 v9fs_vfs_put_link(struct dentry *dentry, struct nameidata *nd, void *p)
29667 {
29668 @@ -39539,9 +39550,9 @@ diff -urNp linux-3.0.9/fs/9p/vfs_inode.c linux-3.0.9/fs/9p/vfs_inode.c
29669
29670 P9_DPRINTK(P9_DEBUG_VFS, " %s %s\n", dentry->d_name.name,
29671 IS_ERR(s) ? "<error>" : s);
29672 -diff -urNp linux-3.0.9/fs/aio.c linux-3.0.9/fs/aio.c
29673 ---- linux-3.0.9/fs/aio.c 2011-11-11 13:12:24.000000000 -0500
29674 -+++ linux-3.0.9/fs/aio.c 2011-11-15 20:02:59.000000000 -0500
29675 +diff -urNp linux-3.1.1/fs/aio.c linux-3.1.1/fs/aio.c
29676 +--- linux-3.1.1/fs/aio.c 2011-11-11 15:19:27.000000000 -0500
29677 ++++ linux-3.1.1/fs/aio.c 2011-11-16 18:40:29.000000000 -0500
29678 @@ -119,7 +119,7 @@ static int aio_setup_ring(struct kioctx
29679 size += sizeof(struct io_event) * nr_events;
29680 nr_pages = (size + PAGE_SIZE-1) >> PAGE_SHIFT;
29681 @@ -39590,9 +39601,9 @@ diff -urNp linux-3.0.9/fs/aio.c linux-3.0.9/fs/aio.c
29682 kiocb->ki_nr_segs = kiocb->ki_nbytes;
29683 kiocb->ki_cur_seg = 0;
29684 /* ki_nbytes/left now reflect bytes instead of segs */
29685 -diff -urNp linux-3.0.9/fs/attr.c linux-3.0.9/fs/attr.c
29686 ---- linux-3.0.9/fs/attr.c 2011-11-11 13:12:24.000000000 -0500
29687 -+++ linux-3.0.9/fs/attr.c 2011-11-15 20:02:59.000000000 -0500
29688 +diff -urNp linux-3.1.1/fs/attr.c linux-3.1.1/fs/attr.c
29689 +--- linux-3.1.1/fs/attr.c 2011-11-11 15:19:27.000000000 -0500
29690 ++++ linux-3.1.1/fs/attr.c 2011-11-16 18:40:29.000000000 -0500
29691 @@ -98,6 +98,7 @@ int inode_newsize_ok(const struct inode
29692 unsigned long limit;
29693
29694 @@ -39601,9 +39612,9 @@ diff -urNp linux-3.0.9/fs/attr.c linux-3.0.9/fs/attr.c
29695 if (limit != RLIM_INFINITY && offset > limit)
29696 goto out_sig;
29697 if (offset > inode->i_sb->s_maxbytes)
29698 -diff -urNp linux-3.0.9/fs/autofs4/waitq.c linux-3.0.9/fs/autofs4/waitq.c
29699 ---- linux-3.0.9/fs/autofs4/waitq.c 2011-11-11 13:12:24.000000000 -0500
29700 -+++ linux-3.0.9/fs/autofs4/waitq.c 2011-11-15 20:02:59.000000000 -0500
29701 +diff -urNp linux-3.1.1/fs/autofs4/waitq.c linux-3.1.1/fs/autofs4/waitq.c
29702 +--- linux-3.1.1/fs/autofs4/waitq.c 2011-11-11 15:19:27.000000000 -0500
29703 ++++ linux-3.1.1/fs/autofs4/waitq.c 2011-11-16 18:39:08.000000000 -0500
29704 @@ -60,7 +60,7 @@ static int autofs4_write(struct file *fi
29705 {
29706 unsigned long sigpipe, flags;
29707 @@ -39613,9 +39624,9 @@ diff -urNp linux-3.0.9/fs/autofs4/waitq.c linux-3.0.9/fs/autofs4/waitq.c
29708 ssize_t wr = 0;
29709
29710 /** WARNING: this is not safe for writing more than PIPE_BUF bytes! **/
29711 -diff -urNp linux-3.0.9/fs/befs/linuxvfs.c linux-3.0.9/fs/befs/linuxvfs.c
29712 ---- linux-3.0.9/fs/befs/linuxvfs.c 2011-11-11 13:12:24.000000000 -0500
29713 -+++ linux-3.0.9/fs/befs/linuxvfs.c 2011-11-15 20:02:59.000000000 -0500
29714 +diff -urNp linux-3.1.1/fs/befs/linuxvfs.c linux-3.1.1/fs/befs/linuxvfs.c
29715 +--- linux-3.1.1/fs/befs/linuxvfs.c 2011-11-11 15:19:27.000000000 -0500
29716 ++++ linux-3.1.1/fs/befs/linuxvfs.c 2011-11-16 18:39:08.000000000 -0500
29717 @@ -503,7 +503,7 @@ static void befs_put_link(struct dentry
29718 {
29719 befs_inode_info *befs_ino = BEFS_I(dentry->d_inode);
29720 @@ -39625,9 +39636,9 @@ diff -urNp linux-3.0.9/fs/befs/linuxvfs.c linux-3.0.9/fs/befs/linuxvfs.c
29721 if (!IS_ERR(link))
29722 kfree(link);
29723 }
29724 -diff -urNp linux-3.0.9/fs/binfmt_aout.c linux-3.0.9/fs/binfmt_aout.c
29725 ---- linux-3.0.9/fs/binfmt_aout.c 2011-11-11 13:12:24.000000000 -0500
29726 -+++ linux-3.0.9/fs/binfmt_aout.c 2011-11-15 20:02:59.000000000 -0500
29727 +diff -urNp linux-3.1.1/fs/binfmt_aout.c linux-3.1.1/fs/binfmt_aout.c
29728 +--- linux-3.1.1/fs/binfmt_aout.c 2011-11-11 15:19:27.000000000 -0500
29729 ++++ linux-3.1.1/fs/binfmt_aout.c 2011-11-16 18:40:29.000000000 -0500
29730 @@ -16,6 +16,7 @@
29731 #include <linux/string.h>
29732 #include <linux/fs.h>
29733 @@ -39704,9 +39715,9 @@ diff -urNp linux-3.0.9/fs/binfmt_aout.c linux-3.0.9/fs/binfmt_aout.c
29734 MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE | MAP_EXECUTABLE,
29735 fd_offset + ex.a_text);
29736 up_write(&current->mm->mmap_sem);
29737 -diff -urNp linux-3.0.9/fs/binfmt_elf.c linux-3.0.9/fs/binfmt_elf.c
29738 ---- linux-3.0.9/fs/binfmt_elf.c 2011-11-11 13:12:24.000000000 -0500
29739 -+++ linux-3.0.9/fs/binfmt_elf.c 2011-11-15 20:02:59.000000000 -0500
29740 +diff -urNp linux-3.1.1/fs/binfmt_elf.c linux-3.1.1/fs/binfmt_elf.c
29741 +--- linux-3.1.1/fs/binfmt_elf.c 2011-11-11 15:19:27.000000000 -0500
29742 ++++ linux-3.1.1/fs/binfmt_elf.c 2011-11-16 18:40:29.000000000 -0500
29743 @@ -51,6 +51,10 @@ static int elf_core_dump(struct coredump
29744 #define elf_core_dump NULL
29745 #endif
29746 @@ -40057,7 +40068,7 @@ diff -urNp linux-3.0.9/fs/binfmt_elf.c linux-3.0.9/fs/binfmt_elf.c
29747
29748 loc = kmalloc(sizeof(*loc), GFP_KERNEL);
29749 if (!loc) {
29750 -@@ -714,11 +931,81 @@ static int load_elf_binary(struct linux_
29751 +@@ -713,11 +930,81 @@ static int load_elf_binary(struct linux_
29752
29753 /* OK, This is the point of no return */
29754 current->flags &= ~PF_FORKNOEXEC;
29755 @@ -40140,7 +40151,7 @@ diff -urNp linux-3.0.9/fs/binfmt_elf.c linux-3.0.9/fs/binfmt_elf.c
29756 if (elf_read_implies_exec(loc->elf_ex, executable_stack))
29757 current->personality |= READ_IMPLIES_EXEC;
29758
29759 -@@ -809,6 +1096,20 @@ static int load_elf_binary(struct linux_
29760 +@@ -808,6 +1095,20 @@ static int load_elf_binary(struct linux_
29761 #else
29762 load_bias = ELF_PAGESTART(ELF_ET_DYN_BASE - vaddr);
29763 #endif
29764 @@ -40161,7 +40172,7 @@ diff -urNp linux-3.0.9/fs/binfmt_elf.c linux-3.0.9/fs/binfmt_elf.c
29765 }
29766
29767 error = elf_map(bprm->file, load_bias + vaddr, elf_ppnt,
29768 -@@ -841,9 +1142,9 @@ static int load_elf_binary(struct linux_
29769 +@@ -840,9 +1141,9 @@ static int load_elf_binary(struct linux_
29770 * allowed task size. Note that p_filesz must always be
29771 * <= p_memsz so it is only necessary to check p_memsz.
29772 */
29773 @@ -40174,7 +40185,7 @@ diff -urNp linux-3.0.9/fs/binfmt_elf.c linux-3.0.9/fs/binfmt_elf.c
29774 /* set_brk can never work. Avoid overflows. */
29775 send_sig(SIGKILL, current, 0);
29776 retval = -EINVAL;
29777 -@@ -871,6 +1172,11 @@ static int load_elf_binary(struct linux_
29778 +@@ -870,6 +1171,11 @@ static int load_elf_binary(struct linux_
29779 start_data += load_bias;
29780 end_data += load_bias;
29781
29782 @@ -40186,7 +40197,7 @@ diff -urNp linux-3.0.9/fs/binfmt_elf.c linux-3.0.9/fs/binfmt_elf.c
29783 /* Calling set_brk effectively mmaps the pages that we need
29784 * for the bss and break sections. We must do this before
29785 * mapping in the interpreter, to make sure it doesn't wind
29786 -@@ -882,9 +1188,11 @@ static int load_elf_binary(struct linux_
29787 +@@ -881,9 +1187,11 @@ static int load_elf_binary(struct linux_
29788 goto out_free_dentry;
29789 }
29790 if (likely(elf_bss != elf_brk) && unlikely(padzero(elf_bss))) {
29791 @@ -40201,7 +40212,7 @@ diff -urNp linux-3.0.9/fs/binfmt_elf.c linux-3.0.9/fs/binfmt_elf.c
29792 }
29793
29794 if (elf_interpreter) {
29795 -@@ -1099,7 +1407,7 @@ out:
29796 +@@ -1098,7 +1406,7 @@ out:
29797 * Decide what to dump of a segment, part, all or none.
29798 */
29799 static unsigned long vma_dump_size(struct vm_area_struct *vma,
29800 @@ -40210,7 +40221,7 @@ diff -urNp linux-3.0.9/fs/binfmt_elf.c linux-3.0.9/fs/binfmt_elf.c
29801 {
29802 #define FILTER(type) (mm_flags & (1UL << MMF_DUMP_##type))
29803
29804 -@@ -1133,7 +1441,7 @@ static unsigned long vma_dump_size(struc
29805 +@@ -1132,7 +1440,7 @@ static unsigned long vma_dump_size(struc
29806 if (vma->vm_file == NULL)
29807 return 0;
29808
29809 @@ -40219,7 +40230,7 @@ diff -urNp linux-3.0.9/fs/binfmt_elf.c linux-3.0.9/fs/binfmt_elf.c
29810 goto whole;
29811
29812 /*
29813 -@@ -1355,9 +1663,9 @@ static void fill_auxv_note(struct memelf
29814 +@@ -1354,9 +1662,9 @@ static void fill_auxv_note(struct memelf
29815 {
29816 elf_addr_t *auxv = (elf_addr_t *) mm->saved_auxv;
29817 int i = 0;
29818 @@ -40231,7 +40242,7 @@ diff -urNp linux-3.0.9/fs/binfmt_elf.c linux-3.0.9/fs/binfmt_elf.c
29819 fill_note(note, "CORE", NT_AUXV, i * sizeof(elf_addr_t), auxv);
29820 }
29821
29822 -@@ -1863,14 +2171,14 @@ static void fill_extnum_info(struct elfh
29823 +@@ -1862,14 +2170,14 @@ static void fill_extnum_info(struct elfh
29824 }
29825
29826 static size_t elf_core_vma_data_size(struct vm_area_struct *gate_vma,
29827 @@ -40248,7 +40259,7 @@ diff -urNp linux-3.0.9/fs/binfmt_elf.c linux-3.0.9/fs/binfmt_elf.c
29828 return size;
29829 }
29830
29831 -@@ -1964,7 +2272,7 @@ static int elf_core_dump(struct coredump
29832 +@@ -1963,7 +2271,7 @@ static int elf_core_dump(struct coredump
29833
29834 dataoff = offset = roundup(offset, ELF_EXEC_PAGESIZE);
29835
29836 @@ -40257,7 +40268,7 @@ diff -urNp linux-3.0.9/fs/binfmt_elf.c linux-3.0.9/fs/binfmt_elf.c
29837 offset += elf_core_extra_data_size();
29838 e_shoff = offset;
29839
29840 -@@ -1978,10 +2286,12 @@ static int elf_core_dump(struct coredump
29841 +@@ -1977,10 +2285,12 @@ static int elf_core_dump(struct coredump
29842 offset = dataoff;
29843
29844 size += sizeof(*elf);
29845 @@ -40270,7 +40281,7 @@ diff -urNp linux-3.0.9/fs/binfmt_elf.c linux-3.0.9/fs/binfmt_elf.c
29846 if (size > cprm->limit
29847 || !dump_write(cprm->file, phdr4note, sizeof(*phdr4note)))
29848 goto end_coredump;
29849 -@@ -1995,7 +2305,7 @@ static int elf_core_dump(struct coredump
29850 +@@ -1994,7 +2304,7 @@ static int elf_core_dump(struct coredump
29851 phdr.p_offset = offset;
29852 phdr.p_vaddr = vma->vm_start;
29853 phdr.p_paddr = 0;
29854 @@ -40279,7 +40290,7 @@ diff -urNp linux-3.0.9/fs/binfmt_elf.c linux-3.0.9/fs/binfmt_elf.c
29855 phdr.p_memsz = vma->vm_end - vma->vm_start;
29856 offset += phdr.p_filesz;
29857 phdr.p_flags = vma->vm_flags & VM_READ ? PF_R : 0;
29858 -@@ -2006,6 +2316,7 @@ static int elf_core_dump(struct coredump
29859 +@@ -2005,6 +2315,7 @@ static int elf_core_dump(struct coredump
29860 phdr.p_align = ELF_EXEC_PAGESIZE;
29861
29862 size += sizeof(phdr);
29863 @@ -40287,7 +40298,7 @@ diff -urNp linux-3.0.9/fs/binfmt_elf.c linux-3.0.9/fs/binfmt_elf.c
29864 if (size > cprm->limit
29865 || !dump_write(cprm->file, &phdr, sizeof(phdr)))
29866 goto end_coredump;
29867 -@@ -2030,7 +2341,7 @@ static int elf_core_dump(struct coredump
29868 +@@ -2029,7 +2340,7 @@ static int elf_core_dump(struct coredump
29869 unsigned long addr;
29870 unsigned long end;
29871
29872 @@ -40296,7 +40307,7 @@ diff -urNp linux-3.0.9/fs/binfmt_elf.c linux-3.0.9/fs/binfmt_elf.c
29873
29874 for (addr = vma->vm_start; addr < end; addr += PAGE_SIZE) {
29875 struct page *page;
29876 -@@ -2039,6 +2350,7 @@ static int elf_core_dump(struct coredump
29877 +@@ -2038,6 +2349,7 @@ static int elf_core_dump(struct coredump
29878 page = get_dump_page(addr);
29879 if (page) {
29880 void *kaddr = kmap(page);
29881 @@ -40304,7 +40315,7 @@ diff -urNp linux-3.0.9/fs/binfmt_elf.c linux-3.0.9/fs/binfmt_elf.c
29882 stop = ((size += PAGE_SIZE) > cprm->limit) ||
29883 !dump_write(cprm->file, kaddr,
29884 PAGE_SIZE);
29885 -@@ -2056,6 +2368,7 @@ static int elf_core_dump(struct coredump
29886 +@@ -2055,6 +2367,7 @@ static int elf_core_dump(struct coredump
29887
29888 if (e_phnum == PN_XNUM) {
29889 size += sizeof(*shdr4extnum);
29890 @@ -40312,7 +40323,7 @@ diff -urNp linux-3.0.9/fs/binfmt_elf.c linux-3.0.9/fs/binfmt_elf.c
29891 if (size > cprm->limit
29892 || !dump_write(cprm->file, shdr4extnum,
29893 sizeof(*shdr4extnum)))
29894 -@@ -2076,6 +2389,97 @@ out:
29895 +@@ -2075,6 +2388,97 @@ out:
29896
29897 #endif /* CONFIG_ELF_CORE */
29898
29899 @@ -40410,9 +40421,9 @@ diff -urNp linux-3.0.9/fs/binfmt_elf.c linux-3.0.9/fs/binfmt_elf.c
29900 static int __init init_elf_binfmt(void)
29901 {
29902 return register_binfmt(&elf_format);
29903 -diff -urNp linux-3.0.9/fs/binfmt_flat.c linux-3.0.9/fs/binfmt_flat.c
29904 ---- linux-3.0.9/fs/binfmt_flat.c 2011-11-11 13:12:24.000000000 -0500
29905 -+++ linux-3.0.9/fs/binfmt_flat.c 2011-11-15 20:02:59.000000000 -0500
29906 +diff -urNp linux-3.1.1/fs/binfmt_flat.c linux-3.1.1/fs/binfmt_flat.c
29907 +--- linux-3.1.1/fs/binfmt_flat.c 2011-11-11 15:19:27.000000000 -0500
29908 ++++ linux-3.1.1/fs/binfmt_flat.c 2011-11-16 18:39:08.000000000 -0500
29909 @@ -567,7 +567,9 @@ static int load_flat_file(struct linux_b
29910 realdatastart = (unsigned long) -ENOMEM;
29911 printk("Unable to allocate RAM for process data, errno %d\n",
29912 @@ -40445,9 +40456,9 @@ diff -urNp linux-3.0.9/fs/binfmt_flat.c linux-3.0.9/fs/binfmt_flat.c
29913 ret = result;
29914 goto err;
29915 }
29916 -diff -urNp linux-3.0.9/fs/bio.c linux-3.0.9/fs/bio.c
29917 ---- linux-3.0.9/fs/bio.c 2011-11-11 13:12:24.000000000 -0500
29918 -+++ linux-3.0.9/fs/bio.c 2011-11-15 20:02:59.000000000 -0500
29919 +diff -urNp linux-3.1.1/fs/bio.c linux-3.1.1/fs/bio.c
29920 +--- linux-3.1.1/fs/bio.c 2011-11-11 15:19:27.000000000 -0500
29921 ++++ linux-3.1.1/fs/bio.c 2011-11-16 18:39:08.000000000 -0500
29922 @@ -1233,7 +1233,7 @@ static void bio_copy_kern_endio(struct b
29923 const int read = bio_data_dir(bio) == READ;
29924 struct bio_map_data *bmd = bio->bi_private;
29925 @@ -40457,10 +40468,10 @@ diff -urNp linux-3.0.9/fs/bio.c linux-3.0.9/fs/bio.c
29926
29927 __bio_for_each_segment(bvec, bio, i, 0) {
29928 char *addr = page_address(bvec->bv_page);
29929 -diff -urNp linux-3.0.9/fs/block_dev.c linux-3.0.9/fs/block_dev.c
29930 ---- linux-3.0.9/fs/block_dev.c 2011-11-11 13:12:24.000000000 -0500
29931 -+++ linux-3.0.9/fs/block_dev.c 2011-11-15 20:02:59.000000000 -0500
29932 -@@ -671,7 +671,7 @@ static bool bd_may_claim(struct block_de
29933 +diff -urNp linux-3.1.1/fs/block_dev.c linux-3.1.1/fs/block_dev.c
29934 +--- linux-3.1.1/fs/block_dev.c 2011-11-11 15:19:27.000000000 -0500
29935 ++++ linux-3.1.1/fs/block_dev.c 2011-11-16 18:39:08.000000000 -0500
29936 +@@ -681,7 +681,7 @@ static bool bd_may_claim(struct block_de
29937 else if (bdev->bd_contains == bdev)
29938 return true; /* is a whole device which isn't held */
29939
29940 @@ -40469,10 +40480,10 @@ diff -urNp linux-3.0.9/fs/block_dev.c linux-3.0.9/fs/block_dev.c
29941 return true; /* is a partition of a device that is being partitioned */
29942 else if (whole->bd_holder != NULL)
29943 return false; /* is a partition of a held device */
29944 -diff -urNp linux-3.0.9/fs/btrfs/ctree.c linux-3.0.9/fs/btrfs/ctree.c
29945 ---- linux-3.0.9/fs/btrfs/ctree.c 2011-11-11 13:12:24.000000000 -0500
29946 -+++ linux-3.0.9/fs/btrfs/ctree.c 2011-11-15 20:02:59.000000000 -0500
29947 -@@ -454,9 +454,12 @@ static noinline int __btrfs_cow_block(st
29948 +diff -urNp linux-3.1.1/fs/btrfs/ctree.c linux-3.1.1/fs/btrfs/ctree.c
29949 +--- linux-3.1.1/fs/btrfs/ctree.c 2011-11-11 15:19:27.000000000 -0500
29950 ++++ linux-3.1.1/fs/btrfs/ctree.c 2011-11-16 18:39:08.000000000 -0500
29951 +@@ -488,9 +488,12 @@ static noinline int __btrfs_cow_block(st
29952 free_extent_buffer(buf);
29953 add_root_to_dirty_list(root);
29954 } else {
29955 @@ -40488,10 +40499,10 @@ diff -urNp linux-3.0.9/fs/btrfs/ctree.c linux-3.0.9/fs/btrfs/ctree.c
29956 parent_start = 0;
29957
29958 WARN_ON(trans->transid != btrfs_header_generation(parent));
29959 -diff -urNp linux-3.0.9/fs/btrfs/inode.c linux-3.0.9/fs/btrfs/inode.c
29960 ---- linux-3.0.9/fs/btrfs/inode.c 2011-11-11 13:12:24.000000000 -0500
29961 -+++ linux-3.0.9/fs/btrfs/inode.c 2011-11-15 20:02:59.000000000 -0500
29962 -@@ -6896,7 +6896,7 @@ fail:
29963 +diff -urNp linux-3.1.1/fs/btrfs/inode.c linux-3.1.1/fs/btrfs/inode.c
29964 +--- linux-3.1.1/fs/btrfs/inode.c 2011-11-11 15:19:27.000000000 -0500
29965 ++++ linux-3.1.1/fs/btrfs/inode.c 2011-11-16 18:40:29.000000000 -0500
29966 +@@ -6922,7 +6922,7 @@ fail:
29967 return -ENOMEM;
29968 }
29969
29970 @@ -40500,7 +40511,7 @@ diff -urNp linux-3.0.9/fs/btrfs/inode.c linux-3.0.9/fs/btrfs/inode.c
29971 struct dentry *dentry, struct kstat *stat)
29972 {
29973 struct inode *inode = dentry->d_inode;
29974 -@@ -6908,6 +6908,14 @@ static int btrfs_getattr(struct vfsmount
29975 +@@ -6934,6 +6934,14 @@ static int btrfs_getattr(struct vfsmount
29976 return 0;
29977 }
29978
29979 @@ -40515,10 +40526,10 @@ diff -urNp linux-3.0.9/fs/btrfs/inode.c linux-3.0.9/fs/btrfs/inode.c
29980 /*
29981 * If a file is moved, it will inherit the cow and compression flags of the new
29982 * directory.
29983 -diff -urNp linux-3.0.9/fs/btrfs/ioctl.c linux-3.0.9/fs/btrfs/ioctl.c
29984 ---- linux-3.0.9/fs/btrfs/ioctl.c 2011-11-11 13:12:24.000000000 -0500
29985 -+++ linux-3.0.9/fs/btrfs/ioctl.c 2011-11-15 20:02:59.000000000 -0500
29986 -@@ -2676,9 +2676,12 @@ long btrfs_ioctl_space_info(struct btrfs
29987 +diff -urNp linux-3.1.1/fs/btrfs/ioctl.c linux-3.1.1/fs/btrfs/ioctl.c
29988 +--- linux-3.1.1/fs/btrfs/ioctl.c 2011-11-11 15:19:27.000000000 -0500
29989 ++++ linux-3.1.1/fs/btrfs/ioctl.c 2011-11-16 18:40:29.000000000 -0500
29990 +@@ -2704,9 +2704,12 @@ long btrfs_ioctl_space_info(struct btrfs
29991 for (i = 0; i < num_types; i++) {
29992 struct btrfs_space_info *tmp;
29993
29994 @@ -40531,7 +40542,7 @@ diff -urNp linux-3.0.9/fs/btrfs/ioctl.c linux-3.0.9/fs/btrfs/ioctl.c
29995 info = NULL;
29996 rcu_read_lock();
29997 list_for_each_entry_rcu(tmp, &root->fs_info->space_info,
29998 -@@ -2700,15 +2703,12 @@ long btrfs_ioctl_space_info(struct btrfs
29999 +@@ -2728,15 +2731,12 @@ long btrfs_ioctl_space_info(struct btrfs
30000 memcpy(dest, &space, sizeof(space));
30001 dest++;
30002 space_args.total_spaces++;
30003 @@ -40548,9 +40559,9 @@ diff -urNp linux-3.0.9/fs/btrfs/ioctl.c linux-3.0.9/fs/btrfs/ioctl.c
30004 (arg + sizeof(struct btrfs_ioctl_space_args));
30005
30006 if (copy_to_user(user_dest, dest_orig, alloc_size))
30007 -diff -urNp linux-3.0.9/fs/btrfs/relocation.c linux-3.0.9/fs/btrfs/relocation.c
30008 ---- linux-3.0.9/fs/btrfs/relocation.c 2011-11-11 13:12:24.000000000 -0500
30009 -+++ linux-3.0.9/fs/btrfs/relocation.c 2011-11-15 20:02:59.000000000 -0500
30010 +diff -urNp linux-3.1.1/fs/btrfs/relocation.c linux-3.1.1/fs/btrfs/relocation.c
30011 +--- linux-3.1.1/fs/btrfs/relocation.c 2011-11-11 15:19:27.000000000 -0500
30012 ++++ linux-3.1.1/fs/btrfs/relocation.c 2011-11-16 18:39:08.000000000 -0500
30013 @@ -1242,7 +1242,7 @@ static int __update_reloc_root(struct bt
30014 }
30015 spin_unlock(&rc->reloc_root_tree.lock);
30016 @@ -40560,9 +40571,9 @@ diff -urNp linux-3.0.9/fs/btrfs/relocation.c linux-3.0.9/fs/btrfs/relocation.c
30017
30018 if (!del) {
30019 spin_lock(&rc->reloc_root_tree.lock);
30020 -diff -urNp linux-3.0.9/fs/cachefiles/bind.c linux-3.0.9/fs/cachefiles/bind.c
30021 ---- linux-3.0.9/fs/cachefiles/bind.c 2011-11-11 13:12:24.000000000 -0500
30022 -+++ linux-3.0.9/fs/cachefiles/bind.c 2011-11-15 20:02:59.000000000 -0500
30023 +diff -urNp linux-3.1.1/fs/cachefiles/bind.c linux-3.1.1/fs/cachefiles/bind.c
30024 +--- linux-3.1.1/fs/cachefiles/bind.c 2011-11-11 15:19:27.000000000 -0500
30025 ++++ linux-3.1.1/fs/cachefiles/bind.c 2011-11-16 18:39:08.000000000 -0500
30026 @@ -39,13 +39,11 @@ int cachefiles_daemon_bind(struct cachef
30027 args);
30028
30029 @@ -40579,9 +40590,9 @@ diff -urNp linux-3.0.9/fs/cachefiles/bind.c linux-3.0.9/fs/cachefiles/bind.c
30030 cache->bcull_percent < cache->brun_percent &&
30031 cache->brun_percent < 100);
30032
30033 -diff -urNp linux-3.0.9/fs/cachefiles/daemon.c linux-3.0.9/fs/cachefiles/daemon.c
30034 ---- linux-3.0.9/fs/cachefiles/daemon.c 2011-11-11 13:12:24.000000000 -0500
30035 -+++ linux-3.0.9/fs/cachefiles/daemon.c 2011-11-15 20:02:59.000000000 -0500
30036 +diff -urNp linux-3.1.1/fs/cachefiles/daemon.c linux-3.1.1/fs/cachefiles/daemon.c
30037 +--- linux-3.1.1/fs/cachefiles/daemon.c 2011-11-11 15:19:27.000000000 -0500
30038 ++++ linux-3.1.1/fs/cachefiles/daemon.c 2011-11-16 18:39:08.000000000 -0500
30039 @@ -196,7 +196,7 @@ static ssize_t cachefiles_daemon_read(st
30040 if (n > buflen)
30041 return -EMSGSIZE;
30042 @@ -40618,9 +40629,9 @@ diff -urNp linux-3.0.9/fs/cachefiles/daemon.c linux-3.0.9/fs/cachefiles/daemon.c
30043 return cachefiles_daemon_range_error(cache, args);
30044
30045 cache->bstop_percent = bstop;
30046 -diff -urNp linux-3.0.9/fs/cachefiles/internal.h linux-3.0.9/fs/cachefiles/internal.h
30047 ---- linux-3.0.9/fs/cachefiles/internal.h 2011-11-11 13:12:24.000000000 -0500
30048 -+++ linux-3.0.9/fs/cachefiles/internal.h 2011-11-15 20:02:59.000000000 -0500
30049 +diff -urNp linux-3.1.1/fs/cachefiles/internal.h linux-3.1.1/fs/cachefiles/internal.h
30050 +--- linux-3.1.1/fs/cachefiles/internal.h 2011-11-11 15:19:27.000000000 -0500
30051 ++++ linux-3.1.1/fs/cachefiles/internal.h 2011-11-16 18:39:08.000000000 -0500
30052 @@ -57,7 +57,7 @@ struct cachefiles_cache {
30053 wait_queue_head_t daemon_pollwq; /* poll waitqueue for daemon */
30054 struct rb_root active_nodes; /* active nodes (can't be culled) */
30055 @@ -40655,9 +40666,9 @@ diff -urNp linux-3.0.9/fs/cachefiles/internal.h linux-3.0.9/fs/cachefiles/intern
30056 }
30057
30058 #else
30059 -diff -urNp linux-3.0.9/fs/cachefiles/namei.c linux-3.0.9/fs/cachefiles/namei.c
30060 ---- linux-3.0.9/fs/cachefiles/namei.c 2011-11-11 13:12:24.000000000 -0500
30061 -+++ linux-3.0.9/fs/cachefiles/namei.c 2011-11-15 20:02:59.000000000 -0500
30062 +diff -urNp linux-3.1.1/fs/cachefiles/namei.c linux-3.1.1/fs/cachefiles/namei.c
30063 +--- linux-3.1.1/fs/cachefiles/namei.c 2011-11-11 15:19:27.000000000 -0500
30064 ++++ linux-3.1.1/fs/cachefiles/namei.c 2011-11-16 18:39:08.000000000 -0500
30065 @@ -318,7 +318,7 @@ try_again:
30066 /* first step is to make up a grave dentry in the graveyard */
30067 sprintf(nbuffer, "%08x%08x",
30068 @@ -40667,9 +40678,9 @@ diff -urNp linux-3.0.9/fs/cachefiles/namei.c linux-3.0.9/fs/cachefiles/namei.c
30069
30070 /* do the multiway lock magic */
30071 trap = lock_rename(cache->graveyard, dir);
30072 -diff -urNp linux-3.0.9/fs/cachefiles/proc.c linux-3.0.9/fs/cachefiles/proc.c
30073 ---- linux-3.0.9/fs/cachefiles/proc.c 2011-11-11 13:12:24.000000000 -0500
30074 -+++ linux-3.0.9/fs/cachefiles/proc.c 2011-11-15 20:02:59.000000000 -0500
30075 +diff -urNp linux-3.1.1/fs/cachefiles/proc.c linux-3.1.1/fs/cachefiles/proc.c
30076 +--- linux-3.1.1/fs/cachefiles/proc.c 2011-11-11 15:19:27.000000000 -0500
30077 ++++ linux-3.1.1/fs/cachefiles/proc.c 2011-11-16 18:39:08.000000000 -0500
30078 @@ -14,9 +14,9 @@
30079 #include <linux/seq_file.h>
30080 #include "internal.h"
30081 @@ -40696,9 +40707,9 @@ diff -urNp linux-3.0.9/fs/cachefiles/proc.c linux-3.0.9/fs/cachefiles/proc.c
30082 if (x == 0 && y == 0 && z == 0)
30083 return 0;
30084
30085 -diff -urNp linux-3.0.9/fs/cachefiles/rdwr.c linux-3.0.9/fs/cachefiles/rdwr.c
30086 ---- linux-3.0.9/fs/cachefiles/rdwr.c 2011-11-11 13:12:24.000000000 -0500
30087 -+++ linux-3.0.9/fs/cachefiles/rdwr.c 2011-11-15 20:02:59.000000000 -0500
30088 +diff -urNp linux-3.1.1/fs/cachefiles/rdwr.c linux-3.1.1/fs/cachefiles/rdwr.c
30089 +--- linux-3.1.1/fs/cachefiles/rdwr.c 2011-11-11 15:19:27.000000000 -0500
30090 ++++ linux-3.1.1/fs/cachefiles/rdwr.c 2011-11-16 18:39:08.000000000 -0500
30091 @@ -945,7 +945,7 @@ int cachefiles_write_page(struct fscache
30092 old_fs = get_fs();
30093 set_fs(KERNEL_DS);
30094 @@ -40708,10 +40719,10 @@ diff -urNp linux-3.0.9/fs/cachefiles/rdwr.c linux-3.0.9/fs/cachefiles/rdwr.c
30095 set_fs(old_fs);
30096 kunmap(page);
30097 if (ret != len)
30098 -diff -urNp linux-3.0.9/fs/ceph/dir.c linux-3.0.9/fs/ceph/dir.c
30099 ---- linux-3.0.9/fs/ceph/dir.c 2011-11-11 13:12:24.000000000 -0500
30100 -+++ linux-3.0.9/fs/ceph/dir.c 2011-11-15 20:02:59.000000000 -0500
30101 -@@ -226,7 +226,7 @@ static int ceph_readdir(struct file *fil
30102 +diff -urNp linux-3.1.1/fs/ceph/dir.c linux-3.1.1/fs/ceph/dir.c
30103 +--- linux-3.1.1/fs/ceph/dir.c 2011-11-11 15:19:27.000000000 -0500
30104 ++++ linux-3.1.1/fs/ceph/dir.c 2011-11-16 18:39:08.000000000 -0500
30105 +@@ -244,7 +244,7 @@ static int ceph_readdir(struct file *fil
30106 struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
30107 struct ceph_mds_client *mdsc = fsc->mdsc;
30108 unsigned frag = fpos_frag(filp->f_pos);
30109 @@ -40720,9 +40731,9 @@ diff -urNp linux-3.0.9/fs/ceph/dir.c linux-3.0.9/fs/ceph/dir.c
30110 int err;
30111 u32 ftype;
30112 struct ceph_mds_reply_info_parsed *rinfo;
30113 -diff -urNp linux-3.0.9/fs/cifs/cifs_debug.c linux-3.0.9/fs/cifs/cifs_debug.c
30114 ---- linux-3.0.9/fs/cifs/cifs_debug.c 2011-11-11 13:12:24.000000000 -0500
30115 -+++ linux-3.0.9/fs/cifs/cifs_debug.c 2011-11-15 20:02:59.000000000 -0500
30116 +diff -urNp linux-3.1.1/fs/cifs/cifs_debug.c linux-3.1.1/fs/cifs/cifs_debug.c
30117 +--- linux-3.1.1/fs/cifs/cifs_debug.c 2011-11-11 15:19:27.000000000 -0500
30118 ++++ linux-3.1.1/fs/cifs/cifs_debug.c 2011-11-16 18:39:08.000000000 -0500
30119 @@ -265,8 +265,8 @@ static ssize_t cifs_stats_proc_write(str
30120
30121 if (c == '1' || c == 'y' || c == 'Y' || c == '0') {
30122 @@ -40852,10 +40863,10 @@ diff -urNp linux-3.0.9/fs/cifs/cifs_debug.c linux-3.0.9/fs/cifs/cifs_debug.c
30123 }
30124 }
30125 }
30126 -diff -urNp linux-3.0.9/fs/cifs/cifsfs.c linux-3.0.9/fs/cifs/cifsfs.c
30127 ---- linux-3.0.9/fs/cifs/cifsfs.c 2011-11-11 13:12:24.000000000 -0500
30128 -+++ linux-3.0.9/fs/cifs/cifsfs.c 2011-11-15 20:02:59.000000000 -0500
30129 -@@ -996,7 +996,7 @@ cifs_init_request_bufs(void)
30130 +diff -urNp linux-3.1.1/fs/cifs/cifsfs.c linux-3.1.1/fs/cifs/cifsfs.c
30131 +--- linux-3.1.1/fs/cifs/cifsfs.c 2011-11-11 15:19:27.000000000 -0500
30132 ++++ linux-3.1.1/fs/cifs/cifsfs.c 2011-11-16 18:39:08.000000000 -0500
30133 +@@ -981,7 +981,7 @@ cifs_init_request_bufs(void)
30134 cifs_req_cachep = kmem_cache_create("cifs_request",
30135 CIFSMaxBufSize +
30136 MAX_CIFS_HDR_SIZE, 0,
30137 @@ -40864,7 +40875,7 @@ diff -urNp linux-3.0.9/fs/cifs/cifsfs.c linux-3.0.9/fs/cifs/cifsfs.c
30138 if (cifs_req_cachep == NULL)
30139 return -ENOMEM;
30140
30141 -@@ -1023,7 +1023,7 @@ cifs_init_request_bufs(void)
30142 +@@ -1008,7 +1008,7 @@ cifs_init_request_bufs(void)
30143 efficient to alloc 1 per page off the slab compared to 17K (5page)
30144 alloc of large cifs buffers even when page debugging is on */
30145 cifs_sm_req_cachep = kmem_cache_create("cifs_small_rq",
30146 @@ -40873,7 +40884,7 @@ diff -urNp linux-3.0.9/fs/cifs/cifsfs.c linux-3.0.9/fs/cifs/cifsfs.c
30147 NULL);
30148 if (cifs_sm_req_cachep == NULL) {
30149 mempool_destroy(cifs_req_poolp);
30150 -@@ -1108,8 +1108,8 @@ init_cifs(void)
30151 +@@ -1093,8 +1093,8 @@ init_cifs(void)
30152 atomic_set(&bufAllocCount, 0);
30153 atomic_set(&smBufAllocCount, 0);
30154 #ifdef CONFIG_CIFS_STATS2
30155 @@ -40884,9 +40895,9 @@ diff -urNp linux-3.0.9/fs/cifs/cifsfs.c linux-3.0.9/fs/cifs/cifsfs.c
30156 #endif /* CONFIG_CIFS_STATS2 */
30157
30158 atomic_set(&midCount, 0);
30159 -diff -urNp linux-3.0.9/fs/cifs/cifsglob.h linux-3.0.9/fs/cifs/cifsglob.h
30160 ---- linux-3.0.9/fs/cifs/cifsglob.h 2011-11-11 13:12:24.000000000 -0500
30161 -+++ linux-3.0.9/fs/cifs/cifsglob.h 2011-11-15 20:02:59.000000000 -0500
30162 +diff -urNp linux-3.1.1/fs/cifs/cifsglob.h linux-3.1.1/fs/cifs/cifsglob.h
30163 +--- linux-3.1.1/fs/cifs/cifsglob.h 2011-11-11 15:19:27.000000000 -0500
30164 ++++ linux-3.1.1/fs/cifs/cifsglob.h 2011-11-16 18:39:08.000000000 -0500
30165 @@ -381,28 +381,28 @@ struct cifs_tcon {
30166 __u16 Flags; /* optional support bits */
30167 enum statusEnum tidStatus;
30168 @@ -40947,7 +40958,7 @@ diff -urNp linux-3.0.9/fs/cifs/cifsglob.h linux-3.0.9/fs/cifs/cifsglob.h
30169
30170 static inline void cifs_stats_bytes_written(struct cifs_tcon *tcon,
30171 unsigned int bytes)
30172 -@@ -911,8 +911,8 @@ GLOBAL_EXTERN atomic_t tconInfoReconnect
30173 +@@ -953,8 +953,8 @@ GLOBAL_EXTERN atomic_t tconInfoReconnect
30174 /* Various Debug counters */
30175 GLOBAL_EXTERN atomic_t bufAllocCount; /* current number allocated */
30176 #ifdef CONFIG_CIFS_STATS2
30177 @@ -40958,10 +40969,10 @@ diff -urNp linux-3.0.9/fs/cifs/cifsglob.h linux-3.0.9/fs/cifs/cifsglob.h
30178 #endif
30179 GLOBAL_EXTERN atomic_t smBufAllocCount;
30180 GLOBAL_EXTERN atomic_t midCount;
30181 -diff -urNp linux-3.0.9/fs/cifs/link.c linux-3.0.9/fs/cifs/link.c
30182 ---- linux-3.0.9/fs/cifs/link.c 2011-11-11 13:12:24.000000000 -0500
30183 -+++ linux-3.0.9/fs/cifs/link.c 2011-11-15 20:02:59.000000000 -0500
30184 -@@ -587,7 +587,7 @@ symlink_exit:
30185 +diff -urNp linux-3.1.1/fs/cifs/link.c linux-3.1.1/fs/cifs/link.c
30186 +--- linux-3.1.1/fs/cifs/link.c 2011-11-11 15:19:27.000000000 -0500
30187 ++++ linux-3.1.1/fs/cifs/link.c 2011-11-16 18:39:08.000000000 -0500
30188 +@@ -593,7 +593,7 @@ symlink_exit:
30189
30190 void cifs_put_link(struct dentry *direntry, struct nameidata *nd, void *cookie)
30191 {
30192 @@ -40970,9 +40981,9 @@ diff -urNp linux-3.0.9/fs/cifs/link.c linux-3.0.9/fs/cifs/link.c
30193 if (!IS_ERR(p))
30194 kfree(p);
30195 }
30196 -diff -urNp linux-3.0.9/fs/cifs/misc.c linux-3.0.9/fs/cifs/misc.c
30197 ---- linux-3.0.9/fs/cifs/misc.c 2011-11-11 13:12:24.000000000 -0500
30198 -+++ linux-3.0.9/fs/cifs/misc.c 2011-11-15 20:02:59.000000000 -0500
30199 +diff -urNp linux-3.1.1/fs/cifs/misc.c linux-3.1.1/fs/cifs/misc.c
30200 +--- linux-3.1.1/fs/cifs/misc.c 2011-11-11 15:19:27.000000000 -0500
30201 ++++ linux-3.1.1/fs/cifs/misc.c 2011-11-16 18:39:08.000000000 -0500
30202 @@ -156,7 +156,7 @@ cifs_buf_get(void)
30203 memset(ret_buf, 0, sizeof(struct smb_hdr) + 3);
30204 atomic_inc(&bufAllocCount);
30205 @@ -40991,9 +41002,9 @@ diff -urNp linux-3.0.9/fs/cifs/misc.c linux-3.0.9/fs/cifs/misc.c
30206 #endif /* CONFIG_CIFS_STATS2 */
30207
30208 }
30209 -diff -urNp linux-3.0.9/fs/coda/cache.c linux-3.0.9/fs/coda/cache.c
30210 ---- linux-3.0.9/fs/coda/cache.c 2011-11-11 13:12:24.000000000 -0500
30211 -+++ linux-3.0.9/fs/coda/cache.c 2011-11-15 20:02:59.000000000 -0500
30212 +diff -urNp linux-3.1.1/fs/coda/cache.c linux-3.1.1/fs/coda/cache.c
30213 +--- linux-3.1.1/fs/coda/cache.c 2011-11-11 15:19:27.000000000 -0500
30214 ++++ linux-3.1.1/fs/coda/cache.c 2011-11-16 18:39:08.000000000 -0500
30215 @@ -24,7 +24,7 @@
30216 #include "coda_linux.h"
30217 #include "coda_cache.h"
30218 @@ -41038,9 +41049,9 @@ diff -urNp linux-3.0.9/fs/coda/cache.c linux-3.0.9/fs/coda/cache.c
30219 spin_unlock(&cii->c_lock);
30220
30221 return hit;
30222 -diff -urNp linux-3.0.9/fs/compat_binfmt_elf.c linux-3.0.9/fs/compat_binfmt_elf.c
30223 ---- linux-3.0.9/fs/compat_binfmt_elf.c 2011-11-11 13:12:24.000000000 -0500
30224 -+++ linux-3.0.9/fs/compat_binfmt_elf.c 2011-11-15 20:02:59.000000000 -0500
30225 +diff -urNp linux-3.1.1/fs/compat_binfmt_elf.c linux-3.1.1/fs/compat_binfmt_elf.c
30226 +--- linux-3.1.1/fs/compat_binfmt_elf.c 2011-11-11 15:19:27.000000000 -0500
30227 ++++ linux-3.1.1/fs/compat_binfmt_elf.c 2011-11-16 18:39:08.000000000 -0500
30228 @@ -30,11 +30,13 @@
30229 #undef elf_phdr
30230 #undef elf_shdr
30231 @@ -41055,9 +41066,9 @@ diff -urNp linux-3.0.9/fs/compat_binfmt_elf.c linux-3.0.9/fs/compat_binfmt_elf.c
30232 #define elf_addr_t Elf32_Addr
30233
30234 /*
30235 -diff -urNp linux-3.0.9/fs/compat.c linux-3.0.9/fs/compat.c
30236 ---- linux-3.0.9/fs/compat.c 2011-11-11 13:12:24.000000000 -0500
30237 -+++ linux-3.0.9/fs/compat.c 2011-11-15 20:02:59.000000000 -0500
30238 +diff -urNp linux-3.1.1/fs/compat.c linux-3.1.1/fs/compat.c
30239 +--- linux-3.1.1/fs/compat.c 2011-11-11 15:19:27.000000000 -0500
30240 ++++ linux-3.1.1/fs/compat.c 2011-11-16 18:40:29.000000000 -0500
30241 @@ -133,8 +133,8 @@ asmlinkage long compat_sys_utimes(const
30242 static int cp_compat_stat(struct kstat *stat, struct compat_stat __user *ubuf)
30243 {
30244 @@ -41185,19 +41196,10 @@ diff -urNp linux-3.0.9/fs/compat.c linux-3.0.9/fs/compat.c
30245 if (n < 0)
30246 goto out_nofds;
30247
30248 -@@ -1904,7 +1924,7 @@ asmlinkage long compat_sys_nfsservctl(in
30249 - oldfs = get_fs();
30250 - set_fs(KERNEL_DS);
30251 - /* The __user pointer casts are valid because of the set_fs() */
30252 -- err = sys_nfsservctl(cmd, (void __user *) karg, (void __user *) kres);
30253 -+ err = sys_nfsservctl(cmd, (void __force_user *) karg, (void __force_user *) kres);
30254 - set_fs(oldfs);
30255 -
30256 - if (err)
30257 -diff -urNp linux-3.0.9/fs/compat_ioctl.c linux-3.0.9/fs/compat_ioctl.c
30258 ---- linux-3.0.9/fs/compat_ioctl.c 2011-11-11 13:12:24.000000000 -0500
30259 -+++ linux-3.0.9/fs/compat_ioctl.c 2011-11-15 20:02:59.000000000 -0500
30260 -@@ -208,6 +208,8 @@ static int do_video_set_spu_palette(unsi
30261 +diff -urNp linux-3.1.1/fs/compat_ioctl.c linux-3.1.1/fs/compat_ioctl.c
30262 +--- linux-3.1.1/fs/compat_ioctl.c 2011-11-11 15:19:27.000000000 -0500
30263 ++++ linux-3.1.1/fs/compat_ioctl.c 2011-11-16 18:39:08.000000000 -0500
30264 +@@ -210,6 +210,8 @@ static int do_video_set_spu_palette(unsi
30265
30266 err = get_user(palp, &up->palette);
30267 err |= get_user(length, &up->length);
30268 @@ -41206,7 +41208,7 @@ diff -urNp linux-3.0.9/fs/compat_ioctl.c linux-3.0.9/fs/compat_ioctl.c
30269
30270 up_native = compat_alloc_user_space(sizeof(struct video_spu_palette));
30271 err = put_user(compat_ptr(palp), &up_native->palette);
30272 -@@ -619,7 +621,7 @@ static int serial_struct_ioctl(unsigned
30273 +@@ -621,7 +623,7 @@ static int serial_struct_ioctl(unsigned
30274 return -EFAULT;
30275 if (__get_user(udata, &ss32->iomem_base))
30276 return -EFAULT;
30277 @@ -41215,7 +41217,7 @@ diff -urNp linux-3.0.9/fs/compat_ioctl.c linux-3.0.9/fs/compat_ioctl.c
30278 if (__get_user(ss.iomem_reg_shift, &ss32->iomem_reg_shift) ||
30279 __get_user(ss.port_high, &ss32->port_high))
30280 return -EFAULT;
30281 -@@ -794,7 +796,7 @@ static int compat_ioctl_preallocate(stru
30282 +@@ -796,7 +798,7 @@ static int compat_ioctl_preallocate(stru
30283 copy_in_user(&p->l_len, &p32->l_len, sizeof(s64)) ||
30284 copy_in_user(&p->l_sysid, &p32->l_sysid, sizeof(s32)) ||
30285 copy_in_user(&p->l_pid, &p32->l_pid, sizeof(u32)) ||
30286 @@ -41224,7 +41226,7 @@ diff -urNp linux-3.0.9/fs/compat_ioctl.c linux-3.0.9/fs/compat_ioctl.c
30287 return -EFAULT;
30288
30289 return ioctl_preallocate(file, p);
30290 -@@ -1638,8 +1640,8 @@ asmlinkage long compat_sys_ioctl(unsigne
30291 +@@ -1644,8 +1646,8 @@ asmlinkage long compat_sys_ioctl(unsigne
30292 static int __init init_sys32_ioctl_cmp(const void *p, const void *q)
30293 {
30294 unsigned int a, b;
30295 @@ -41235,9 +41237,9 @@ diff -urNp linux-3.0.9/fs/compat_ioctl.c linux-3.0.9/fs/compat_ioctl.c
30296 if (a > b)
30297 return 1;
30298 if (a < b)
30299 -diff -urNp linux-3.0.9/fs/configfs/dir.c linux-3.0.9/fs/configfs/dir.c
30300 ---- linux-3.0.9/fs/configfs/dir.c 2011-11-11 13:12:24.000000000 -0500
30301 -+++ linux-3.0.9/fs/configfs/dir.c 2011-11-15 20:02:59.000000000 -0500
30302 +diff -urNp linux-3.1.1/fs/configfs/dir.c linux-3.1.1/fs/configfs/dir.c
30303 +--- linux-3.1.1/fs/configfs/dir.c 2011-11-11 15:19:27.000000000 -0500
30304 ++++ linux-3.1.1/fs/configfs/dir.c 2011-11-16 18:39:08.000000000 -0500
30305 @@ -1575,7 +1575,8 @@ static int configfs_readdir(struct file
30306 }
30307 for (p=q->next; p!= &parent_sd->s_children; p=p->next) {
30308 @@ -41262,10 +41264,10 @@ diff -urNp linux-3.0.9/fs/configfs/dir.c linux-3.0.9/fs/configfs/dir.c
30309
30310 /*
30311 * We'll have a dentry and an inode for
30312 -diff -urNp linux-3.0.9/fs/dcache.c linux-3.0.9/fs/dcache.c
30313 ---- linux-3.0.9/fs/dcache.c 2011-11-11 13:12:24.000000000 -0500
30314 -+++ linux-3.0.9/fs/dcache.c 2011-11-15 20:02:59.000000000 -0500
30315 -@@ -3089,7 +3089,7 @@ void __init vfs_caches_init(unsigned lon
30316 +diff -urNp linux-3.1.1/fs/dcache.c linux-3.1.1/fs/dcache.c
30317 +--- linux-3.1.1/fs/dcache.c 2011-11-11 15:19:27.000000000 -0500
30318 ++++ linux-3.1.1/fs/dcache.c 2011-11-16 18:39:08.000000000 -0500
30319 +@@ -2998,7 +2998,7 @@ void __init vfs_caches_init(unsigned lon
30320 mempages -= reserve;
30321
30322 names_cachep = kmem_cache_create("names_cache", PATH_MAX, 0,
30323 @@ -41274,10 +41276,10 @@ diff -urNp linux-3.0.9/fs/dcache.c linux-3.0.9/fs/dcache.c
30324
30325 dcache_init();
30326 inode_init();
30327 -diff -urNp linux-3.0.9/fs/ecryptfs/inode.c linux-3.0.9/fs/ecryptfs/inode.c
30328 ---- linux-3.0.9/fs/ecryptfs/inode.c 2011-11-11 13:12:24.000000000 -0500
30329 -+++ linux-3.0.9/fs/ecryptfs/inode.c 2011-11-15 20:02:59.000000000 -0500
30330 -@@ -704,7 +704,7 @@ static int ecryptfs_readlink_lower(struc
30331 +diff -urNp linux-3.1.1/fs/ecryptfs/inode.c linux-3.1.1/fs/ecryptfs/inode.c
30332 +--- linux-3.1.1/fs/ecryptfs/inode.c 2011-11-11 15:19:27.000000000 -0500
30333 ++++ linux-3.1.1/fs/ecryptfs/inode.c 2011-11-16 18:39:08.000000000 -0500
30334 +@@ -681,7 +681,7 @@ static int ecryptfs_readlink_lower(struc
30335 old_fs = get_fs();
30336 set_fs(get_ds());
30337 rc = lower_dentry->d_inode->i_op->readlink(lower_dentry,
30338 @@ -41286,7 +41288,7 @@ diff -urNp linux-3.0.9/fs/ecryptfs/inode.c linux-3.0.9/fs/ecryptfs/inode.c
30339 lower_bufsiz);
30340 set_fs(old_fs);
30341 if (rc < 0)
30342 -@@ -750,7 +750,7 @@ static void *ecryptfs_follow_link(struct
30343 +@@ -727,7 +727,7 @@ static void *ecryptfs_follow_link(struct
30344 }
30345 old_fs = get_fs();
30346 set_fs(get_ds());
30347 @@ -41295,7 +41297,7 @@ diff -urNp linux-3.0.9/fs/ecryptfs/inode.c linux-3.0.9/fs/ecryptfs/inode.c
30348 set_fs(old_fs);
30349 if (rc < 0) {
30350 kfree(buf);
30351 -@@ -765,7 +765,7 @@ out:
30352 +@@ -742,7 +742,7 @@ out:
30353 static void
30354 ecryptfs_put_link(struct dentry *dentry, struct nameidata *nd, void *ptr)
30355 {
30356 @@ -41304,9 +41306,9 @@ diff -urNp linux-3.0.9/fs/ecryptfs/inode.c linux-3.0.9/fs/ecryptfs/inode.c
30357 if (!IS_ERR(buf)) {
30358 /* Free the char* */
30359 kfree(buf);
30360 -diff -urNp linux-3.0.9/fs/ecryptfs/miscdev.c linux-3.0.9/fs/ecryptfs/miscdev.c
30361 ---- linux-3.0.9/fs/ecryptfs/miscdev.c 2011-11-11 13:12:24.000000000 -0500
30362 -+++ linux-3.0.9/fs/ecryptfs/miscdev.c 2011-11-15 20:02:59.000000000 -0500
30363 +diff -urNp linux-3.1.1/fs/ecryptfs/miscdev.c linux-3.1.1/fs/ecryptfs/miscdev.c
30364 +--- linux-3.1.1/fs/ecryptfs/miscdev.c 2011-11-11 15:19:27.000000000 -0500
30365 ++++ linux-3.1.1/fs/ecryptfs/miscdev.c 2011-11-16 18:39:08.000000000 -0500
30366 @@ -328,7 +328,7 @@ check_list:
30367 goto out_unlock_msg_ctx;
30368 i = 5;
30369 @@ -41316,9 +41318,9 @@ diff -urNp linux-3.0.9/fs/ecryptfs/miscdev.c linux-3.0.9/fs/ecryptfs/miscdev.c
30370 goto out_unlock_msg_ctx;
30371 i += packet_length_size;
30372 if (copy_to_user(&buf[i], msg_ctx->msg, msg_ctx->msg_size))
30373 -diff -urNp linux-3.0.9/fs/ecryptfs/read_write.c linux-3.0.9/fs/ecryptfs/read_write.c
30374 ---- linux-3.0.9/fs/ecryptfs/read_write.c 2011-11-11 13:12:24.000000000 -0500
30375 -+++ linux-3.0.9/fs/ecryptfs/read_write.c 2011-11-15 20:02:59.000000000 -0500
30376 +diff -urNp linux-3.1.1/fs/ecryptfs/read_write.c linux-3.1.1/fs/ecryptfs/read_write.c
30377 +--- linux-3.1.1/fs/ecryptfs/read_write.c 2011-11-11 15:19:27.000000000 -0500
30378 ++++ linux-3.1.1/fs/ecryptfs/read_write.c 2011-11-16 18:39:08.000000000 -0500
30379 @@ -48,7 +48,7 @@ int ecryptfs_write_lower(struct inode *e
30380 return -EIO;
30381 fs_save = get_fs();
30382 @@ -41337,9 +41339,9 @@ diff -urNp linux-3.0.9/fs/ecryptfs/read_write.c linux-3.0.9/fs/ecryptfs/read_wri
30383 set_fs(fs_save);
30384 return rc;
30385 }
30386 -diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30387 ---- linux-3.0.9/fs/exec.c 2011-11-11 13:12:24.000000000 -0500
30388 -+++ linux-3.0.9/fs/exec.c 2011-11-15 20:02:59.000000000 -0500
30389 +diff -urNp linux-3.1.1/fs/exec.c linux-3.1.1/fs/exec.c
30390 +--- linux-3.1.1/fs/exec.c 2011-11-11 15:19:27.000000000 -0500
30391 ++++ linux-3.1.1/fs/exec.c 2011-11-16 23:41:58.000000000 -0500
30392 @@ -55,12 +55,24 @@
30393 #include <linux/pipe_fs_i.h>
30394 #include <linux/oom.h>
30395 @@ -41374,16 +41376,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30396
30397 /* The maximal length of core_pattern is also specified in sysctl.c */
30398
30399 -@@ -116,7 +128,7 @@ SYSCALL_DEFINE1(uselib, const char __use
30400 - char *tmp = getname(library);
30401 - int error = PTR_ERR(tmp);
30402 - static const struct open_flags uselib_flags = {
30403 -- .open_flag = O_LARGEFILE | O_RDONLY | __FMODE_EXEC,
30404 -+ .open_flag = O_LARGEFILE | O_RDONLY | __FMODE_EXEC | FMODE_GREXEC,
30405 - .acc_mode = MAY_READ | MAY_EXEC | MAY_OPEN,
30406 - .intent = LOOKUP_OPEN
30407 - };
30408 -@@ -195,18 +207,10 @@ static struct page *get_arg_page(struct
30409 +@@ -188,18 +200,10 @@ static struct page *get_arg_page(struct
30410 int write)
30411 {
30412 struct page *page;
30413 @@ -41405,7 +41398,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30414 return NULL;
30415
30416 if (write) {
30417 -@@ -281,6 +285,11 @@ static int __bprm_mm_init(struct linux_b
30418 +@@ -274,6 +278,11 @@ static int __bprm_mm_init(struct linux_b
30419 vma->vm_end = STACK_TOP_MAX;
30420 vma->vm_start = vma->vm_end - PAGE_SIZE;
30421 vma->vm_flags = VM_STACK_FLAGS | VM_STACK_INCOMPLETE_SETUP;
30422 @@ -41417,7 +41410,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30423 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
30424 INIT_LIST_HEAD(&vma->anon_vma_chain);
30425
30426 -@@ -295,6 +304,12 @@ static int __bprm_mm_init(struct linux_b
30427 +@@ -288,6 +297,12 @@ static int __bprm_mm_init(struct linux_b
30428 mm->stack_vm = mm->total_vm = 1;
30429 up_write(&mm->mmap_sem);
30430 bprm->p = vma->vm_end - sizeof(void *);
30431 @@ -41430,7 +41423,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30432 return 0;
30433 err:
30434 up_write(&mm->mmap_sem);
30435 -@@ -403,19 +418,7 @@ err:
30436 +@@ -396,19 +411,7 @@ err:
30437 return err;
30438 }
30439
30440 @@ -41451,7 +41444,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30441 {
30442 const char __user *native;
30443
30444 -@@ -424,14 +427,14 @@ static const char __user *get_user_arg_p
30445 +@@ -417,14 +420,14 @@ static const char __user *get_user_arg_p
30446 compat_uptr_t compat;
30447
30448 if (get_user(compat, argv.ptr.compat + nr))
30449 @@ -41468,7 +41461,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30450
30451 return native;
30452 }
30453 -@@ -450,7 +453,7 @@ static int count(struct user_arg_ptr arg
30454 +@@ -443,7 +446,7 @@ static int count(struct user_arg_ptr arg
30455 if (!p)
30456 break;
30457
30458 @@ -41477,7 +41470,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30459 return -EFAULT;
30460
30461 if (i++ >= max)
30462 -@@ -484,7 +487,7 @@ static int copy_strings(int argc, struct
30463 +@@ -477,7 +480,7 @@ static int copy_strings(int argc, struct
30464
30465 ret = -EFAULT;
30466 str = get_user_arg_ptr(argv, argc);
30467 @@ -41486,7 +41479,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30468 goto out;
30469
30470 len = strnlen_user(str, MAX_ARG_STRLEN);
30471 -@@ -566,7 +569,7 @@ int copy_strings_kernel(int argc, const
30472 +@@ -559,7 +562,7 @@ int copy_strings_kernel(int argc, const
30473 int r;
30474 mm_segment_t oldfs = get_fs();
30475 struct user_arg_ptr argv = {
30476 @@ -41495,7 +41488,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30477 };
30478
30479 set_fs(KERNEL_DS);
30480 -@@ -601,7 +604,8 @@ static int shift_arg_pages(struct vm_are
30481 +@@ -594,7 +597,8 @@ static int shift_arg_pages(struct vm_are
30482 unsigned long new_end = old_end - shift;
30483 struct mmu_gather tlb;
30484
30485 @@ -41505,7 +41498,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30486
30487 /*
30488 * ensure there are no vmas between where we want to go
30489 -@@ -610,6 +614,10 @@ static int shift_arg_pages(struct vm_are
30490 +@@ -603,6 +607,10 @@ static int shift_arg_pages(struct vm_are
30491 if (vma != find_vma(mm, new_start))
30492 return -EFAULT;
30493
30494 @@ -41516,7 +41509,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30495 /*
30496 * cover the whole range: [new_start, old_end)
30497 */
30498 -@@ -690,10 +698,6 @@ int setup_arg_pages(struct linux_binprm
30499 +@@ -683,10 +691,6 @@ int setup_arg_pages(struct linux_binprm
30500 stack_top = arch_align_stack(stack_top);
30501 stack_top = PAGE_ALIGN(stack_top);
30502
30503 @@ -41527,7 +41520,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30504 stack_shift = vma->vm_end - stack_top;
30505
30506 bprm->p -= stack_shift;
30507 -@@ -705,8 +709,28 @@ int setup_arg_pages(struct linux_binprm
30508 +@@ -698,8 +702,28 @@ int setup_arg_pages(struct linux_binprm
30509 bprm->exec -= stack_shift;
30510
30511 down_write(&mm->mmap_sem);
30512 @@ -41556,7 +41549,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30513 /*
30514 * Adjust stack execute permissions; explicitly enable for
30515 * EXSTACK_ENABLE_X, disable for EXSTACK_DISABLE_X and leave alone
30516 -@@ -725,13 +749,6 @@ int setup_arg_pages(struct linux_binprm
30517 +@@ -718,13 +742,6 @@ int setup_arg_pages(struct linux_binprm
30518 goto out_unlock;
30519 BUG_ON(prev != vma);
30520
30521 @@ -41570,16 +41563,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30522 /* mprotect_fixup is overkill to remove the temporary stack flags */
30523 vma->vm_flags &= ~VM_STACK_INCOMPLETE_SETUP;
30524
30525 -@@ -771,7 +788,7 @@ struct file *open_exec(const char *name)
30526 - struct file *file;
30527 - int err;
30528 - static const struct open_flags open_exec_flags = {
30529 -- .open_flag = O_LARGEFILE | O_RDONLY | __FMODE_EXEC,
30530 -+ .open_flag = O_LARGEFILE | O_RDONLY | __FMODE_EXEC | FMODE_GREXEC,
30531 - .acc_mode = MAY_EXEC | MAY_OPEN,
30532 - .intent = LOOKUP_OPEN
30533 - };
30534 -@@ -812,7 +829,7 @@ int kernel_read(struct file *file, loff_
30535 +@@ -805,7 +822,7 @@ int kernel_read(struct file *file, loff_
30536 old_fs = get_fs();
30537 set_fs(get_ds());
30538 /* The cast to a user pointer is valid due to the set_fs() */
30539 @@ -41588,7 +41572,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30540 set_fs(old_fs);
30541 return result;
30542 }
30543 -@@ -1236,7 +1253,7 @@ int check_unsafe_exec(struct linux_binpr
30544 +@@ -1251,7 +1268,7 @@ int check_unsafe_exec(struct linux_binpr
30545 }
30546 rcu_read_unlock();
30547
30548 @@ -41597,7 +41581,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30549 bprm->unsafe |= LSM_UNSAFE_SHARE;
30550 } else {
30551 res = -EAGAIN;
30552 -@@ -1430,11 +1447,35 @@ static int do_execve_common(const char *
30553 +@@ -1454,6 +1471,11 @@ static int do_execve_common(const char *
30554 struct user_arg_ptr envp,
30555 struct pt_regs *regs)
30556 {
30557 @@ -41609,31 +41593,16 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30558 struct linux_binprm *bprm;
30559 struct file *file;
30560 struct files_struct *displaced;
30561 - bool clear_in_exec;
30562 +@@ -1461,6 +1483,8 @@ static int do_execve_common(const char *
30563 int retval;
30564 -+ const struct cred *cred = current_cred();
30565 -+
30566 + const struct cred *cred = current_cred();
30567 +
30568 + gr_learn_resource(current, RLIMIT_NPROC, atomic_read(&current->cred->user->processes), 1);
30569 +
30570 -+ /*
30571 -+ * We move the actual failure in case of RLIMIT_NPROC excess from
30572 -+ * set*uid() to execve() because too many poorly written programs
30573 -+ * don't check setuid() return code. Here we additionally recheck
30574 -+ * whether NPROC limit is still exceeded.
30575 -+ */
30576 -+ if ((current->flags & PF_NPROC_EXCEEDED) &&
30577 -+ atomic_read(&cred->user->processes) > rlimit(RLIMIT_NPROC)) {
30578 -+ retval = -EAGAIN;
30579 -+ goto out_ret;
30580 -+ }
30581 -+
30582 -+ /* We're below the limit (still or again), so we don't want to make
30583 -+ * further execve() calls fail. */
30584 -+ current->flags &= ~PF_NPROC_EXCEEDED;
30585 -
30586 - retval = unshare_files(&displaced);
30587 - if (retval)
30588 -@@ -1466,6 +1507,16 @@ static int do_execve_common(const char *
30589 + /*
30590 + * We move the actual failure in case of RLIMIT_NPROC excess from
30591 + * set*uid() to execve() because too many poorly written programs
30592 +@@ -1507,6 +1531,16 @@ static int do_execve_common(const char *
30593 bprm->filename = filename;
30594 bprm->interp = filename;
30595
30596 @@ -41650,7 +41619,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30597 retval = bprm_mm_init(bprm);
30598 if (retval)
30599 goto out_file;
30600 -@@ -1495,9 +1546,40 @@ static int do_execve_common(const char *
30601 +@@ -1536,9 +1570,40 @@ static int do_execve_common(const char *
30602 if (retval < 0)
30603 goto out;
30604
30605 @@ -41692,7 +41661,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30606
30607 /* execve succeeded */
30608 current->fs->in_exec = 0;
30609 -@@ -1508,6 +1590,14 @@ static int do_execve_common(const char *
30610 +@@ -1549,6 +1614,14 @@ static int do_execve_common(const char *
30611 put_files_struct(displaced);
30612 return retval;
30613
30614 @@ -41707,7 +41676,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30615 out:
30616 if (bprm->mm) {
30617 acct_arg_size(bprm, 0);
30618 -@@ -1581,7 +1671,7 @@ static int expand_corename(struct core_n
30619 +@@ -1622,7 +1695,7 @@ static int expand_corename(struct core_n
30620 {
30621 char *old_corename = cn->corename;
30622
30623 @@ -41716,7 +41685,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30624 cn->corename = krealloc(old_corename, cn->size, GFP_KERNEL);
30625
30626 if (!cn->corename) {
30627 -@@ -1669,7 +1759,7 @@ static int format_corename(struct core_n
30628 +@@ -1719,7 +1792,7 @@ static int format_corename(struct core_n
30629 int pid_in_pattern = 0;
30630 int err = 0;
30631
30632 @@ -41725,7 +41694,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30633 cn->corename = kmalloc(cn->size, GFP_KERNEL);
30634 cn->used = 0;
30635
30636 -@@ -1760,6 +1850,219 @@ out:
30637 +@@ -1816,6 +1889,219 @@ out:
30638 return ispipe;
30639 }
30640
30641 @@ -41848,7 +41817,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30642 + task_uid(tsk), task_euid(tsk), pc, sp);
30643 + free_page((unsigned long)buffer_exec);
30644 + free_page((unsigned long)buffer_fault);
30645 -+ pax_report_insns(pc, sp);
30646 ++ pax_report_insns(regs, pc, sp);
30647 + do_coredump(SIGKILL, SIGKILL, regs);
30648 +}
30649 +#endif
30650 @@ -41945,7 +41914,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30651 static int zap_process(struct task_struct *start, int exit_code)
30652 {
30653 struct task_struct *t;
30654 -@@ -1971,17 +2274,17 @@ static void wait_for_dump_helpers(struct
30655 +@@ -2027,17 +2313,17 @@ static void wait_for_dump_helpers(struct
30656 pipe = file->f_path.dentry->d_inode->i_pipe;
30657
30658 pipe_lock(pipe);
30659 @@ -41968,7 +41937,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30660 pipe_unlock(pipe);
30661
30662 }
30663 -@@ -2042,7 +2345,7 @@ void do_coredump(long signr, int exit_co
30664 +@@ -2098,7 +2384,7 @@ void do_coredump(long signr, int exit_co
30665 int retval = 0;
30666 int flag = 0;
30667 int ispipe;
30668 @@ -41977,7 +41946,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30669 struct coredump_params cprm = {
30670 .signr = signr,
30671 .regs = regs,
30672 -@@ -2057,6 +2360,9 @@ void do_coredump(long signr, int exit_co
30673 +@@ -2113,6 +2399,9 @@ void do_coredump(long signr, int exit_co
30674
30675 audit_core_dumps(signr);
30676
30677 @@ -41987,16 +41956,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30678 binfmt = mm->binfmt;
30679 if (!binfmt || !binfmt->core_dump)
30680 goto fail;
30681 -@@ -2097,6 +2403,8 @@ void do_coredump(long signr, int exit_co
30682 - goto fail_corename;
30683 - }
30684 -
30685 -+ gr_learn_resource(current, RLIMIT_CORE, binfmt->min_coredump, 1);
30686 -+
30687 - if (ispipe) {
30688 - int dump_count;
30689 - char **helper_argv;
30690 -@@ -2124,7 +2432,7 @@ void do_coredump(long signr, int exit_co
30691 +@@ -2180,7 +2469,7 @@ void do_coredump(long signr, int exit_co
30692 }
30693 cprm.limit = RLIM_INFINITY;
30694
30695 @@ -42005,7 +41965,16 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30696 if (core_pipe_limit && (core_pipe_limit < dump_count)) {
30697 printk(KERN_WARNING "Pid %d(%s) over core_pipe_limit\n",
30698 task_tgid_vnr(current), current->comm);
30699 -@@ -2194,7 +2502,7 @@ close_fail:
30700 +@@ -2207,6 +2496,8 @@ void do_coredump(long signr, int exit_co
30701 + } else {
30702 + struct inode *inode;
30703 +
30704 ++ gr_learn_resource(current, RLIMIT_CORE, binfmt->min_coredump, 1);
30705 ++
30706 + if (cprm.limit < binfmt->min_coredump)
30707 + goto fail_unlock;
30708 +
30709 +@@ -2250,7 +2541,7 @@ close_fail:
30710 filp_close(cprm.file, NULL);
30711 fail_dropcount:
30712 if (ispipe)
30713 @@ -42014,7 +41983,7 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30714 fail_unlock:
30715 kfree(cn.corename);
30716 fail_corename:
30717 -@@ -2213,7 +2521,7 @@ fail:
30718 +@@ -2269,7 +2560,7 @@ fail:
30719 */
30720 int dump_write(struct file *file, const void *addr, int nr)
30721 {
30722 @@ -42023,9 +41992,9 @@ diff -urNp linux-3.0.9/fs/exec.c linux-3.0.9/fs/exec.c
30723 }
30724 EXPORT_SYMBOL(dump_write);
30725
30726 -diff -urNp linux-3.0.9/fs/ext2/balloc.c linux-3.0.9/fs/ext2/balloc.c
30727 ---- linux-3.0.9/fs/ext2/balloc.c 2011-11-11 13:12:24.000000000 -0500
30728 -+++ linux-3.0.9/fs/ext2/balloc.c 2011-11-15 20:02:59.000000000 -0500
30729 +diff -urNp linux-3.1.1/fs/ext2/balloc.c linux-3.1.1/fs/ext2/balloc.c
30730 +--- linux-3.1.1/fs/ext2/balloc.c 2011-11-11 15:19:27.000000000 -0500
30731 ++++ linux-3.1.1/fs/ext2/balloc.c 2011-11-16 18:40:29.000000000 -0500
30732 @@ -1192,7 +1192,7 @@ static int ext2_has_free_blocks(struct e
30733
30734 free_blocks = percpu_counter_read_positive(&sbi->s_freeblocks_counter);
30735 @@ -42035,10 +42004,10 @@ diff -urNp linux-3.0.9/fs/ext2/balloc.c linux-3.0.9/fs/ext2/balloc.c
30736 sbi->s_resuid != current_fsuid() &&
30737 (sbi->s_resgid == 0 || !in_group_p (sbi->s_resgid))) {
30738 return 0;
30739 -diff -urNp linux-3.0.9/fs/ext3/balloc.c linux-3.0.9/fs/ext3/balloc.c
30740 ---- linux-3.0.9/fs/ext3/balloc.c 2011-11-11 13:12:24.000000000 -0500
30741 -+++ linux-3.0.9/fs/ext3/balloc.c 2011-11-15 20:02:59.000000000 -0500
30742 -@@ -1441,7 +1441,7 @@ static int ext3_has_free_blocks(struct e
30743 +diff -urNp linux-3.1.1/fs/ext3/balloc.c linux-3.1.1/fs/ext3/balloc.c
30744 +--- linux-3.1.1/fs/ext3/balloc.c 2011-11-11 15:19:27.000000000 -0500
30745 ++++ linux-3.1.1/fs/ext3/balloc.c 2011-11-16 18:40:29.000000000 -0500
30746 +@@ -1446,7 +1446,7 @@ static int ext3_has_free_blocks(struct e
30747
30748 free_blocks = percpu_counter_read_positive(&sbi->s_freeblocks_counter);
30749 root_blocks = le32_to_cpu(sbi->s_es->s_r_blocks_count);
30750 @@ -42047,30 +42016,9 @@ diff -urNp linux-3.0.9/fs/ext3/balloc.c linux-3.0.9/fs/ext3/balloc.c
30751 sbi->s_resuid != current_fsuid() &&
30752 (sbi->s_resgid == 0 || !in_group_p (sbi->s_resgid))) {
30753 return 0;
30754 -diff -urNp linux-3.0.9/fs/ext3/ioctl.c linux-3.0.9/fs/ext3/ioctl.c
30755 ---- linux-3.0.9/fs/ext3/ioctl.c 2011-11-11 13:12:24.000000000 -0500
30756 -+++ linux-3.0.9/fs/ext3/ioctl.c 2011-11-15 20:02:59.000000000 -0500
30757 -@@ -285,7 +285,7 @@ group_add_out:
30758 - if (!capable(CAP_SYS_ADMIN))
30759 - return -EPERM;
30760 -
30761 -- if (copy_from_user(&range, (struct fstrim_range *)arg,
30762 -+ if (copy_from_user(&range, (struct fstrim_range __user *)arg,
30763 - sizeof(range)))
30764 - return -EFAULT;
30765 -
30766 -@@ -293,7 +293,7 @@ group_add_out:
30767 - if (ret < 0)
30768 - return ret;
30769 -
30770 -- if (copy_to_user((struct fstrim_range *)arg, &range,
30771 -+ if (copy_to_user((struct fstrim_range __user *)arg, &range,
30772 - sizeof(range)))
30773 - return -EFAULT;
30774 -
30775 -diff -urNp linux-3.0.9/fs/ext4/balloc.c linux-3.0.9/fs/ext4/balloc.c
30776 ---- linux-3.0.9/fs/ext4/balloc.c 2011-11-11 13:12:24.000000000 -0500
30777 -+++ linux-3.0.9/fs/ext4/balloc.c 2011-11-15 20:02:59.000000000 -0500
30778 +diff -urNp linux-3.1.1/fs/ext4/balloc.c linux-3.1.1/fs/ext4/balloc.c
30779 +--- linux-3.1.1/fs/ext4/balloc.c 2011-11-11 15:19:27.000000000 -0500
30780 ++++ linux-3.1.1/fs/ext4/balloc.c 2011-11-16 18:40:29.000000000 -0500
30781 @@ -394,8 +394,8 @@ static int ext4_has_free_blocks(struct e
30782 /* Hm, nope. Are (enough) root reserved blocks available? */
30783 if (sbi->s_resuid == current_fsuid() ||
30784 @@ -42082,10 +42030,10 @@ diff -urNp linux-3.0.9/fs/ext4/balloc.c linux-3.0.9/fs/ext4/balloc.c
30785
30786 if (free_blocks >= (nblocks + dirty_blocks))
30787 return 1;
30788 -diff -urNp linux-3.0.9/fs/ext4/ext4.h linux-3.0.9/fs/ext4/ext4.h
30789 ---- linux-3.0.9/fs/ext4/ext4.h 2011-11-11 13:12:24.000000000 -0500
30790 -+++ linux-3.0.9/fs/ext4/ext4.h 2011-11-15 20:02:59.000000000 -0500
30791 -@@ -1177,19 +1177,19 @@ struct ext4_sb_info {
30792 +diff -urNp linux-3.1.1/fs/ext4/ext4.h linux-3.1.1/fs/ext4/ext4.h
30793 +--- linux-3.1.1/fs/ext4/ext4.h 2011-11-11 15:19:27.000000000 -0500
30794 ++++ linux-3.1.1/fs/ext4/ext4.h 2011-11-16 18:39:08.000000000 -0500
30795 +@@ -1180,19 +1180,19 @@ struct ext4_sb_info {
30796 unsigned long s_mb_last_start;
30797
30798 /* stats for buddy allocator */
30799 @@ -42115,9 +42063,9 @@ diff -urNp linux-3.0.9/fs/ext4/ext4.h linux-3.0.9/fs/ext4/ext4.h
30800 atomic_t s_lock_busy;
30801
30802 /* locality groups */
30803 -diff -urNp linux-3.0.9/fs/ext4/file.c linux-3.0.9/fs/ext4/file.c
30804 ---- linux-3.0.9/fs/ext4/file.c 2011-11-11 13:12:24.000000000 -0500
30805 -+++ linux-3.0.9/fs/ext4/file.c 2011-11-15 20:02:59.000000000 -0500
30806 +diff -urNp linux-3.1.1/fs/ext4/file.c linux-3.1.1/fs/ext4/file.c
30807 +--- linux-3.1.1/fs/ext4/file.c 2011-11-11 15:19:27.000000000 -0500
30808 ++++ linux-3.1.1/fs/ext4/file.c 2011-11-16 18:40:29.000000000 -0500
30809 @@ -181,8 +181,8 @@ static int ext4_file_open(struct inode *
30810 path.dentry = mnt->mnt_root;
30811 cp = d_path(&path, buf, sizeof(buf));
30812 @@ -42129,10 +42077,10 @@ diff -urNp linux-3.0.9/fs/ext4/file.c linux-3.0.9/fs/ext4/file.c
30813 ext4_mark_super_dirty(sb);
30814 }
30815 }
30816 -diff -urNp linux-3.0.9/fs/ext4/ioctl.c linux-3.0.9/fs/ext4/ioctl.c
30817 ---- linux-3.0.9/fs/ext4/ioctl.c 2011-11-11 13:12:24.000000000 -0500
30818 -+++ linux-3.0.9/fs/ext4/ioctl.c 2011-11-15 20:02:59.000000000 -0500
30819 -@@ -344,7 +344,7 @@ mext_out:
30820 +diff -urNp linux-3.1.1/fs/ext4/ioctl.c linux-3.1.1/fs/ext4/ioctl.c
30821 +--- linux-3.1.1/fs/ext4/ioctl.c 2011-11-11 15:19:27.000000000 -0500
30822 ++++ linux-3.1.1/fs/ext4/ioctl.c 2011-11-16 18:39:08.000000000 -0500
30823 +@@ -348,7 +348,7 @@ mext_out:
30824 if (!blk_queue_discard(q))
30825 return -EOPNOTSUPP;
30826
30827 @@ -42141,7 +42089,7 @@ diff -urNp linux-3.0.9/fs/ext4/ioctl.c linux-3.0.9/fs/ext4/ioctl.c
30828 sizeof(range)))
30829 return -EFAULT;
30830
30831 -@@ -354,7 +354,7 @@ mext_out:
30832 +@@ -358,7 +358,7 @@ mext_out:
30833 if (ret < 0)
30834 return ret;
30835
30836 @@ -42150,10 +42098,10 @@ diff -urNp linux-3.0.9/fs/ext4/ioctl.c linux-3.0.9/fs/ext4/ioctl.c
30837 sizeof(range)))
30838 return -EFAULT;
30839
30840 -diff -urNp linux-3.0.9/fs/ext4/mballoc.c linux-3.0.9/fs/ext4/mballoc.c
30841 ---- linux-3.0.9/fs/ext4/mballoc.c 2011-11-11 13:12:24.000000000 -0500
30842 -+++ linux-3.0.9/fs/ext4/mballoc.c 2011-11-15 20:02:59.000000000 -0500
30843 -@@ -1793,7 +1793,7 @@ void ext4_mb_simple_scan_group(struct ex
30844 +diff -urNp linux-3.1.1/fs/ext4/mballoc.c linux-3.1.1/fs/ext4/mballoc.c
30845 +--- linux-3.1.1/fs/ext4/mballoc.c 2011-11-11 15:19:27.000000000 -0500
30846 ++++ linux-3.1.1/fs/ext4/mballoc.c 2011-11-16 18:40:29.000000000 -0500
30847 +@@ -1795,7 +1795,7 @@ void ext4_mb_simple_scan_group(struct ex
30848 BUG_ON(ac->ac_b_ex.fe_len != ac->ac_g_ex.fe_len);
30849
30850 if (EXT4_SB(sb)->s_mb_stats)
30851 @@ -42162,7 +42110,7 @@ diff -urNp linux-3.0.9/fs/ext4/mballoc.c linux-3.0.9/fs/ext4/mballoc.c
30852
30853 break;
30854 }
30855 -@@ -2087,7 +2087,7 @@ repeat:
30856 +@@ -2089,7 +2089,7 @@ repeat:
30857 ac->ac_status = AC_STATUS_CONTINUE;
30858 ac->ac_flags |= EXT4_MB_HINT_FIRST;
30859 cr = 3;
30860 @@ -42171,7 +42119,7 @@ diff -urNp linux-3.0.9/fs/ext4/mballoc.c linux-3.0.9/fs/ext4/mballoc.c
30861 goto repeat;
30862 }
30863 }
30864 -@@ -2130,6 +2130,8 @@ static int ext4_mb_seq_groups_show(struc
30865 +@@ -2132,6 +2132,8 @@ static int ext4_mb_seq_groups_show(struc
30866 ext4_grpblk_t counters[16];
30867 } sg;
30868
30869 @@ -42180,19 +42128,19 @@ diff -urNp linux-3.0.9/fs/ext4/mballoc.c linux-3.0.9/fs/ext4/mballoc.c
30870 group--;
30871 if (group == 0)
30872 seq_printf(seq, "#%-5s: %-5s %-5s %-5s "
30873 -@@ -2553,25 +2555,25 @@ int ext4_mb_release(struct super_block *
30874 +@@ -2573,25 +2575,25 @@ int ext4_mb_release(struct super_block *
30875 if (sbi->s_mb_stats) {
30876 - printk(KERN_INFO
30877 - "EXT4-fs: mballoc: %u blocks %u reqs (%u success)\n",
30878 + ext4_msg(sb, KERN_INFO,
30879 + "mballoc: %u blocks %u reqs (%u success)",
30880 - atomic_read(&sbi->s_bal_allocated),
30881 - atomic_read(&sbi->s_bal_reqs),
30882 - atomic_read(&sbi->s_bal_success));
30883 + atomic_read_unchecked(&sbi->s_bal_allocated),
30884 + atomic_read_unchecked(&sbi->s_bal_reqs),
30885 + atomic_read_unchecked(&sbi->s_bal_success));
30886 - printk(KERN_INFO
30887 - "EXT4-fs: mballoc: %u extents scanned, %u goal hits, "
30888 - "%u 2^N hits, %u breaks, %u lost\n",
30889 + ext4_msg(sb, KERN_INFO,
30890 + "mballoc: %u extents scanned, %u goal hits, "
30891 + "%u 2^N hits, %u breaks, %u lost",
30892 - atomic_read(&sbi->s_bal_ex_scanned),
30893 - atomic_read(&sbi->s_bal_goals),
30894 - atomic_read(&sbi->s_bal_2orders),
30895 @@ -42203,12 +42151,12 @@ diff -urNp linux-3.0.9/fs/ext4/mballoc.c linux-3.0.9/fs/ext4/mballoc.c
30896 + atomic_read_unchecked(&sbi->s_bal_2orders),
30897 + atomic_read_unchecked(&sbi->s_bal_breaks),
30898 + atomic_read_unchecked(&sbi->s_mb_lost_chunks));
30899 - printk(KERN_INFO
30900 - "EXT4-fs: mballoc: %lu generated and it took %Lu\n",
30901 - sbi->s_mb_buddies_generated++,
30902 + ext4_msg(sb, KERN_INFO,
30903 + "mballoc: %lu generated and it took %Lu",
30904 + sbi->s_mb_buddies_generated,
30905 sbi->s_mb_generation_time);
30906 - printk(KERN_INFO
30907 - "EXT4-fs: mballoc: %u preallocated, %u discarded\n",
30908 + ext4_msg(sb, KERN_INFO,
30909 + "mballoc: %u preallocated, %u discarded",
30910 - atomic_read(&sbi->s_mb_preallocated),
30911 - atomic_read(&sbi->s_mb_discarded));
30912 + atomic_read_unchecked(&sbi->s_mb_preallocated),
30913 @@ -42216,7 +42164,7 @@ diff -urNp linux-3.0.9/fs/ext4/mballoc.c linux-3.0.9/fs/ext4/mballoc.c
30914 }
30915
30916 free_percpu(sbi->s_locality_groups);
30917 -@@ -3041,16 +3043,16 @@ static void ext4_mb_collect_stats(struct
30918 +@@ -3070,16 +3072,16 @@ static void ext4_mb_collect_stats(struct
30919 struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb);
30920
30921 if (sbi->s_mb_stats && ac->ac_g_ex.fe_len > 1) {
30922 @@ -42239,7 +42187,7 @@ diff -urNp linux-3.0.9/fs/ext4/mballoc.c linux-3.0.9/fs/ext4/mballoc.c
30923 }
30924
30925 if (ac->ac_op == EXT4_MB_HISTORY_ALLOC)
30926 -@@ -3448,7 +3450,7 @@ ext4_mb_new_inode_pa(struct ext4_allocat
30927 +@@ -3477,7 +3479,7 @@ ext4_mb_new_inode_pa(struct ext4_allocat
30928 trace_ext4_mb_new_inode_pa(ac, pa);
30929
30930 ext4_mb_use_inode_pa(ac, pa);
30931 @@ -42248,7 +42196,7 @@ diff -urNp linux-3.0.9/fs/ext4/mballoc.c linux-3.0.9/fs/ext4/mballoc.c
30932
30933 ei = EXT4_I(ac->ac_inode);
30934 grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group);
30935 -@@ -3508,7 +3510,7 @@ ext4_mb_new_group_pa(struct ext4_allocat
30936 +@@ -3537,7 +3539,7 @@ ext4_mb_new_group_pa(struct ext4_allocat
30937 trace_ext4_mb_new_group_pa(ac, pa);
30938
30939 ext4_mb_use_group_pa(ac, pa);
30940 @@ -42257,7 +42205,7 @@ diff -urNp linux-3.0.9/fs/ext4/mballoc.c linux-3.0.9/fs/ext4/mballoc.c
30941
30942 grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group);
30943 lg = ac->ac_lg;
30944 -@@ -3595,7 +3597,7 @@ ext4_mb_release_inode_pa(struct ext4_bud
30945 +@@ -3625,7 +3627,7 @@ ext4_mb_release_inode_pa(struct ext4_bud
30946 * from the bitmap and continue.
30947 */
30948 }
30949 @@ -42266,7 +42214,7 @@ diff -urNp linux-3.0.9/fs/ext4/mballoc.c linux-3.0.9/fs/ext4/mballoc.c
30950
30951 return err;
30952 }
30953 -@@ -3613,7 +3615,7 @@ ext4_mb_release_group_pa(struct ext4_bud
30954 +@@ -3643,7 +3645,7 @@ ext4_mb_release_group_pa(struct ext4_bud
30955 ext4_get_group_no_and_offset(sb, pa->pa_pstart, &group, &bit);
30956 BUG_ON(group != e4b->bd_group && pa->pa_len != 0);
30957 mb_free_blocks(pa->pa_inode, e4b, bit, pa->pa_len);
30958 @@ -42275,9 +42223,9 @@ diff -urNp linux-3.0.9/fs/ext4/mballoc.c linux-3.0.9/fs/ext4/mballoc.c
30959 trace_ext4_mballoc_discard(sb, NULL, group, bit, pa->pa_len);
30960
30961 return 0;
30962 -diff -urNp linux-3.0.9/fs/fcntl.c linux-3.0.9/fs/fcntl.c
30963 ---- linux-3.0.9/fs/fcntl.c 2011-11-11 13:12:24.000000000 -0500
30964 -+++ linux-3.0.9/fs/fcntl.c 2011-11-15 20:02:59.000000000 -0500
30965 +diff -urNp linux-3.1.1/fs/fcntl.c linux-3.1.1/fs/fcntl.c
30966 +--- linux-3.1.1/fs/fcntl.c 2011-11-11 15:19:27.000000000 -0500
30967 ++++ linux-3.1.1/fs/fcntl.c 2011-11-16 23:40:25.000000000 -0500
30968 @@ -224,6 +224,11 @@ int __f_setown(struct file *filp, struct
30969 if (err)
30970 return err;
30971 @@ -42316,26 +42264,9 @@ diff -urNp linux-3.0.9/fs/fcntl.c linux-3.0.9/fs/fcntl.c
30972 if (arg >= rlimit(RLIMIT_NOFILE))
30973 break;
30974 err = alloc_fd(arg, cmd == F_DUPFD_CLOEXEC ? O_CLOEXEC : 0);
30975 -@@ -835,14 +841,14 @@ static int __init fcntl_init(void)
30976 - * Exceptions: O_NONBLOCK is a two bit define on parisc; O_NDELAY
30977 - * is defined as O_NONBLOCK on some platforms and not on others.
30978 - */
30979 -- BUILD_BUG_ON(19 - 1 /* for O_RDONLY being 0 */ != HWEIGHT32(
30980 -+ BUILD_BUG_ON(20 - 1 /* for O_RDONLY being 0 */ != HWEIGHT32(
30981 - O_RDONLY | O_WRONLY | O_RDWR |
30982 - O_CREAT | O_EXCL | O_NOCTTY |
30983 - O_TRUNC | O_APPEND | /* O_NONBLOCK | */
30984 - __O_SYNC | O_DSYNC | FASYNC |
30985 - O_DIRECT | O_LARGEFILE | O_DIRECTORY |
30986 - O_NOFOLLOW | O_NOATIME | O_CLOEXEC |
30987 -- __FMODE_EXEC | O_PATH
30988 -+ __FMODE_EXEC | O_PATH | FMODE_GREXEC
30989 - ));
30990 -
30991 - fasync_cache = kmem_cache_create("fasync_cache",
30992 -diff -urNp linux-3.0.9/fs/fifo.c linux-3.0.9/fs/fifo.c
30993 ---- linux-3.0.9/fs/fifo.c 2011-11-11 13:12:24.000000000 -0500
30994 -+++ linux-3.0.9/fs/fifo.c 2011-11-15 20:02:59.000000000 -0500
30995 +diff -urNp linux-3.1.1/fs/fifo.c linux-3.1.1/fs/fifo.c
30996 +--- linux-3.1.1/fs/fifo.c 2011-11-11 15:19:27.000000000 -0500
30997 ++++ linux-3.1.1/fs/fifo.c 2011-11-16 18:39:08.000000000 -0500
30998 @@ -58,10 +58,10 @@ static int fifo_open(struct inode *inode
30999 */
31000 filp->f_op = &read_pipefifo_fops;
31001 @@ -42406,9 +42337,9 @@ diff -urNp linux-3.0.9/fs/fifo.c linux-3.0.9/fs/fifo.c
31002 free_pipe_info(inode);
31003
31004 err_nocleanup:
31005 -diff -urNp linux-3.0.9/fs/file.c linux-3.0.9/fs/file.c
31006 ---- linux-3.0.9/fs/file.c 2011-11-11 13:12:24.000000000 -0500
31007 -+++ linux-3.0.9/fs/file.c 2011-11-15 20:02:59.000000000 -0500
31008 +diff -urNp linux-3.1.1/fs/file.c linux-3.1.1/fs/file.c
31009 +--- linux-3.1.1/fs/file.c 2011-11-11 15:19:27.000000000 -0500
31010 ++++ linux-3.1.1/fs/file.c 2011-11-16 18:40:29.000000000 -0500
31011 @@ -15,6 +15,7 @@
31012 #include <linux/slab.h>
31013 #include <linux/vmalloc.h>
31014 @@ -42425,9 +42356,9 @@ diff -urNp linux-3.0.9/fs/file.c linux-3.0.9/fs/file.c
31015 if (nr >= rlimit(RLIMIT_NOFILE))
31016 return -EMFILE;
31017
31018 -diff -urNp linux-3.0.9/fs/filesystems.c linux-3.0.9/fs/filesystems.c
31019 ---- linux-3.0.9/fs/filesystems.c 2011-11-11 13:12:24.000000000 -0500
31020 -+++ linux-3.0.9/fs/filesystems.c 2011-11-15 20:02:59.000000000 -0500
31021 +diff -urNp linux-3.1.1/fs/filesystems.c linux-3.1.1/fs/filesystems.c
31022 +--- linux-3.1.1/fs/filesystems.c 2011-11-11 15:19:27.000000000 -0500
31023 ++++ linux-3.1.1/fs/filesystems.c 2011-11-16 18:40:29.000000000 -0500
31024 @@ -274,7 +274,12 @@ struct file_system_type *get_fs_type(con
31025 int len = dot ? dot - name : strlen(name);
31026
31027 @@ -42441,9 +42372,9 @@ diff -urNp linux-3.0.9/fs/filesystems.c linux-3.0.9/fs/filesystems.c
31028 fs = __get_fs_type(name, len);
31029
31030 if (dot && fs && !(fs->fs_flags & FS_HAS_SUBTYPE)) {
31031 -diff -urNp linux-3.0.9/fs/fscache/cookie.c linux-3.0.9/fs/fscache/cookie.c
31032 ---- linux-3.0.9/fs/fscache/cookie.c 2011-11-11 13:12:24.000000000 -0500
31033 -+++ linux-3.0.9/fs/fscache/cookie.c 2011-11-15 20:02:59.000000000 -0500
31034 +diff -urNp linux-3.1.1/fs/fscache/cookie.c linux-3.1.1/fs/fscache/cookie.c
31035 +--- linux-3.1.1/fs/fscache/cookie.c 2011-11-11 15:19:27.000000000 -0500
31036 ++++ linux-3.1.1/fs/fscache/cookie.c 2011-11-16 18:39:08.000000000 -0500
31037 @@ -68,11 +68,11 @@ struct fscache_cookie *__fscache_acquire
31038 parent ? (char *) parent->def->name : "<no-parent>",
31039 def->name, netfs_data);
31040 @@ -42562,9 +42493,9 @@ diff -urNp linux-3.0.9/fs/fscache/cookie.c linux-3.0.9/fs/fscache/cookie.c
31041 wait_on_bit(&cookie->flags, FSCACHE_COOKIE_CREATING,
31042 fscache_wait_bit, TASK_UNINTERRUPTIBLE);
31043 }
31044 -diff -urNp linux-3.0.9/fs/fscache/internal.h linux-3.0.9/fs/fscache/internal.h
31045 ---- linux-3.0.9/fs/fscache/internal.h 2011-11-11 13:12:24.000000000 -0500
31046 -+++ linux-3.0.9/fs/fscache/internal.h 2011-11-15 20:02:59.000000000 -0500
31047 +diff -urNp linux-3.1.1/fs/fscache/internal.h linux-3.1.1/fs/fscache/internal.h
31048 +--- linux-3.1.1/fs/fscache/internal.h 2011-11-11 15:19:27.000000000 -0500
31049 ++++ linux-3.1.1/fs/fscache/internal.h 2011-11-16 18:39:08.000000000 -0500
31050 @@ -144,94 +144,94 @@ extern void fscache_proc_cleanup(void);
31051 extern atomic_t fscache_n_ops_processed[FSCACHE_MAX_THREADS];
31052 extern atomic_t fscache_n_objs_processed[FSCACHE_MAX_THREADS];
31053 @@ -42768,9 +42699,9 @@ diff -urNp linux-3.0.9/fs/fscache/internal.h linux-3.0.9/fs/fscache/internal.h
31054 #define fscache_stat_d(stat) do {} while (0)
31055 #endif
31056
31057 -diff -urNp linux-3.0.9/fs/fscache/object.c linux-3.0.9/fs/fscache/object.c
31058 ---- linux-3.0.9/fs/fscache/object.c 2011-11-11 13:12:24.000000000 -0500
31059 -+++ linux-3.0.9/fs/fscache/object.c 2011-11-15 20:02:59.000000000 -0500
31060 +diff -urNp linux-3.1.1/fs/fscache/object.c linux-3.1.1/fs/fscache/object.c
31061 +--- linux-3.1.1/fs/fscache/object.c 2011-11-11 15:19:27.000000000 -0500
31062 ++++ linux-3.1.1/fs/fscache/object.c 2011-11-16 18:39:08.000000000 -0500
31063 @@ -128,7 +128,7 @@ static void fscache_object_state_machine
31064 /* update the object metadata on disk */
31065 case FSCACHE_OBJECT_UPDATING:
31066 @@ -42882,9 +42813,9 @@ diff -urNp linux-3.0.9/fs/fscache/object.c linux-3.0.9/fs/fscache/object.c
31067 break;
31068
31069 default:
31070 -diff -urNp linux-3.0.9/fs/fscache/operation.c linux-3.0.9/fs/fscache/operation.c
31071 ---- linux-3.0.9/fs/fscache/operation.c 2011-11-11 13:12:24.000000000 -0500
31072 -+++ linux-3.0.9/fs/fscache/operation.c 2011-11-15 20:02:59.000000000 -0500
31073 +diff -urNp linux-3.1.1/fs/fscache/operation.c linux-3.1.1/fs/fscache/operation.c
31074 +--- linux-3.1.1/fs/fscache/operation.c 2011-11-11 15:19:27.000000000 -0500
31075 ++++ linux-3.1.1/fs/fscache/operation.c 2011-11-16 18:39:08.000000000 -0500
31076 @@ -17,7 +17,7 @@
31077 #include <linux/slab.h>
31078 #include "internal.h"
31079 @@ -43000,9 +42931,9 @@ diff -urNp linux-3.0.9/fs/fscache/operation.c linux-3.0.9/fs/fscache/operation.c
31080
31081 ASSERTCMP(atomic_read(&op->usage), ==, 0);
31082
31083 -diff -urNp linux-3.0.9/fs/fscache/page.c linux-3.0.9/fs/fscache/page.c
31084 ---- linux-3.0.9/fs/fscache/page.c 2011-11-11 13:12:24.000000000 -0500
31085 -+++ linux-3.0.9/fs/fscache/page.c 2011-11-15 20:02:59.000000000 -0500
31086 +diff -urNp linux-3.1.1/fs/fscache/page.c linux-3.1.1/fs/fscache/page.c
31087 +--- linux-3.1.1/fs/fscache/page.c 2011-11-11 15:19:27.000000000 -0500
31088 ++++ linux-3.1.1/fs/fscache/page.c 2011-11-16 18:39:08.000000000 -0500
31089 @@ -60,7 +60,7 @@ bool __fscache_maybe_release_page(struct
31090 val = radix_tree_lookup(&cookie->stores, page->index);
31091 if (!val) {
31092 @@ -43386,9 +43317,9 @@ diff -urNp linux-3.0.9/fs/fscache/page.c linux-3.0.9/fs/fscache/page.c
31093 #endif
31094
31095 for (loop = 0; loop < pagevec->nr; loop++) {
31096 -diff -urNp linux-3.0.9/fs/fscache/stats.c linux-3.0.9/fs/fscache/stats.c
31097 ---- linux-3.0.9/fs/fscache/stats.c 2011-11-11 13:12:24.000000000 -0500
31098 -+++ linux-3.0.9/fs/fscache/stats.c 2011-11-15 20:02:59.000000000 -0500
31099 +diff -urNp linux-3.1.1/fs/fscache/stats.c linux-3.1.1/fs/fscache/stats.c
31100 +--- linux-3.1.1/fs/fscache/stats.c 2011-11-11 15:19:27.000000000 -0500
31101 ++++ linux-3.1.1/fs/fscache/stats.c 2011-11-16 18:39:08.000000000 -0500
31102 @@ -18,95 +18,95 @@
31103 /*
31104 * operation counters
31105 @@ -43764,9 +43695,9 @@ diff -urNp linux-3.0.9/fs/fscache/stats.c linux-3.0.9/fs/fscache/stats.c
31106
31107 seq_printf(m, "CacheOp: alo=%d luo=%d luc=%d gro=%d\n",
31108 atomic_read(&fscache_n_cop_alloc_object),
31109 -diff -urNp linux-3.0.9/fs/fs_struct.c linux-3.0.9/fs/fs_struct.c
31110 ---- linux-3.0.9/fs/fs_struct.c 2011-11-11 13:12:24.000000000 -0500
31111 -+++ linux-3.0.9/fs/fs_struct.c 2011-11-15 20:02:59.000000000 -0500
31112 +diff -urNp linux-3.1.1/fs/fs_struct.c linux-3.1.1/fs/fs_struct.c
31113 +--- linux-3.1.1/fs/fs_struct.c 2011-11-11 15:19:27.000000000 -0500
31114 ++++ linux-3.1.1/fs/fs_struct.c 2011-11-16 18:40:29.000000000 -0500
31115 @@ -4,6 +4,7 @@
31116 #include <linux/path.h>
31117 #include <linux/slab.h>
31118 @@ -43856,9 +43787,9 @@ diff -urNp linux-3.0.9/fs/fs_struct.c linux-3.0.9/fs/fs_struct.c
31119 spin_unlock(&fs->lock);
31120
31121 task_unlock(current);
31122 -diff -urNp linux-3.0.9/fs/fuse/cuse.c linux-3.0.9/fs/fuse/cuse.c
31123 ---- linux-3.0.9/fs/fuse/cuse.c 2011-11-11 13:12:24.000000000 -0500
31124 -+++ linux-3.0.9/fs/fuse/cuse.c 2011-11-15 20:02:59.000000000 -0500
31125 +diff -urNp linux-3.1.1/fs/fuse/cuse.c linux-3.1.1/fs/fuse/cuse.c
31126 +--- linux-3.1.1/fs/fuse/cuse.c 2011-11-11 15:19:27.000000000 -0500
31127 ++++ linux-3.1.1/fs/fuse/cuse.c 2011-11-16 18:39:08.000000000 -0500
31128 @@ -586,10 +586,12 @@ static int __init cuse_init(void)
31129 INIT_LIST_HEAD(&cuse_conntbl[i]);
31130
31131 @@ -43876,9 +43807,9 @@ diff -urNp linux-3.0.9/fs/fuse/cuse.c linux-3.0.9/fs/fuse/cuse.c
31132
31133 cuse_class = class_create(THIS_MODULE, "cuse");
31134 if (IS_ERR(cuse_class))
31135 -diff -urNp linux-3.0.9/fs/fuse/dev.c linux-3.0.9/fs/fuse/dev.c
31136 ---- linux-3.0.9/fs/fuse/dev.c 2011-11-11 13:12:24.000000000 -0500
31137 -+++ linux-3.0.9/fs/fuse/dev.c 2011-11-15 20:02:59.000000000 -0500
31138 +diff -urNp linux-3.1.1/fs/fuse/dev.c linux-3.1.1/fs/fuse/dev.c
31139 +--- linux-3.1.1/fs/fuse/dev.c 2011-11-11 15:19:27.000000000 -0500
31140 ++++ linux-3.1.1/fs/fuse/dev.c 2011-11-16 18:39:08.000000000 -0500
31141 @@ -1242,7 +1242,7 @@ static ssize_t fuse_dev_splice_read(stru
31142 ret = 0;
31143 pipe_lock(pipe);
31144 @@ -43888,10 +43819,10 @@ diff -urNp linux-3.0.9/fs/fuse/dev.c linux-3.0.9/fs/fuse/dev.c
31145 send_sig(SIGPIPE, current, 0);
31146 if (!ret)
31147 ret = -EPIPE;
31148 -diff -urNp linux-3.0.9/fs/fuse/dir.c linux-3.0.9/fs/fuse/dir.c
31149 ---- linux-3.0.9/fs/fuse/dir.c 2011-11-11 13:12:24.000000000 -0500
31150 -+++ linux-3.0.9/fs/fuse/dir.c 2011-11-15 20:02:59.000000000 -0500
31151 -@@ -1148,7 +1148,7 @@ static char *read_link(struct dentry *de
31152 +diff -urNp linux-3.1.1/fs/fuse/dir.c linux-3.1.1/fs/fuse/dir.c
31153 +--- linux-3.1.1/fs/fuse/dir.c 2011-11-11 15:19:27.000000000 -0500
31154 ++++ linux-3.1.1/fs/fuse/dir.c 2011-11-16 18:39:08.000000000 -0500
31155 +@@ -1147,7 +1147,7 @@ static char *read_link(struct dentry *de
31156 return link;
31157 }
31158
31159 @@ -43900,10 +43831,10 @@ diff -urNp linux-3.0.9/fs/fuse/dir.c linux-3.0.9/fs/fuse/dir.c
31160 {
31161 if (!IS_ERR(link))
31162 free_page((unsigned long) link);
31163 -diff -urNp linux-3.0.9/fs/gfs2/inode.c linux-3.0.9/fs/gfs2/inode.c
31164 ---- linux-3.0.9/fs/gfs2/inode.c 2011-11-11 13:12:24.000000000 -0500
31165 -+++ linux-3.0.9/fs/gfs2/inode.c 2011-11-15 20:02:59.000000000 -0500
31166 -@@ -1525,7 +1525,7 @@ out:
31167 +diff -urNp linux-3.1.1/fs/gfs2/inode.c linux-3.1.1/fs/gfs2/inode.c
31168 +--- linux-3.1.1/fs/gfs2/inode.c 2011-11-11 15:19:27.000000000 -0500
31169 ++++ linux-3.1.1/fs/gfs2/inode.c 2011-11-16 18:39:08.000000000 -0500
31170 +@@ -1517,7 +1517,7 @@ out:
31171
31172 static void gfs2_put_link(struct dentry *dentry, struct nameidata *nd, void *p)
31173 {
31174 @@ -43912,9 +43843,9 @@ diff -urNp linux-3.0.9/fs/gfs2/inode.c linux-3.0.9/fs/gfs2/inode.c
31175 if (!IS_ERR(s))
31176 kfree(s);
31177 }
31178 -diff -urNp linux-3.0.9/fs/hfsplus/catalog.c linux-3.0.9/fs/hfsplus/catalog.c
31179 ---- linux-3.0.9/fs/hfsplus/catalog.c 2011-11-11 13:12:24.000000000 -0500
31180 -+++ linux-3.0.9/fs/hfsplus/catalog.c 2011-11-15 20:02:59.000000000 -0500
31181 +diff -urNp linux-3.1.1/fs/hfsplus/catalog.c linux-3.1.1/fs/hfsplus/catalog.c
31182 +--- linux-3.1.1/fs/hfsplus/catalog.c 2011-11-11 15:19:27.000000000 -0500
31183 ++++ linux-3.1.1/fs/hfsplus/catalog.c 2011-11-16 19:23:09.000000000 -0500
31184 @@ -179,6 +179,8 @@ int hfsplus_find_cat(struct super_block
31185 int err;
31186 u16 type;
31187 @@ -43932,20 +43863,20 @@ diff -urNp linux-3.0.9/fs/hfsplus/catalog.c linux-3.0.9/fs/hfsplus/catalog.c
31188 +
31189 dprint(DBG_CAT_MOD, "create_cat: %s,%u(%d)\n",
31190 str->name, cnid, inode->i_nlink);
31191 - hfs_find_init(HFSPLUS_SB(sb)->cat_tree, &fd);
31192 -@@ -349,6 +353,8 @@ int hfsplus_rename_cat(u32 cnid,
31193 + err = hfs_find_init(HFSPLUS_SB(sb)->cat_tree, &fd);
31194 +@@ -353,6 +357,8 @@ int hfsplus_rename_cat(u32 cnid,
31195 int entry_size, type;
31196 - int err = 0;
31197 + int err;
31198
31199 + pax_track_stack();
31200 +
31201 dprint(DBG_CAT_MOD, "rename_cat: %u - %lu,%s - %lu,%s\n",
31202 cnid, src_dir->i_ino, src_name->name,
31203 dst_dir->i_ino, dst_name->name);
31204 -diff -urNp linux-3.0.9/fs/hfsplus/dir.c linux-3.0.9/fs/hfsplus/dir.c
31205 ---- linux-3.0.9/fs/hfsplus/dir.c 2011-11-11 13:12:24.000000000 -0500
31206 -+++ linux-3.0.9/fs/hfsplus/dir.c 2011-11-15 20:02:59.000000000 -0500
31207 -@@ -129,6 +129,8 @@ static int hfsplus_readdir(struct file *
31208 +diff -urNp linux-3.1.1/fs/hfsplus/dir.c linux-3.1.1/fs/hfsplus/dir.c
31209 +--- linux-3.1.1/fs/hfsplus/dir.c 2011-11-11 15:19:27.000000000 -0500
31210 ++++ linux-3.1.1/fs/hfsplus/dir.c 2011-11-16 18:40:29.000000000 -0500
31211 +@@ -131,6 +131,8 @@ static int hfsplus_readdir(struct file *
31212 struct hfsplus_readdir_data *rd;
31213 u16 type;
31214
31215 @@ -43954,10 +43885,10 @@ diff -urNp linux-3.0.9/fs/hfsplus/dir.c linux-3.0.9/fs/hfsplus/dir.c
31216 if (filp->f_pos >= inode->i_size)
31217 return 0;
31218
31219 -diff -urNp linux-3.0.9/fs/hfsplus/inode.c linux-3.0.9/fs/hfsplus/inode.c
31220 ---- linux-3.0.9/fs/hfsplus/inode.c 2011-11-11 13:12:24.000000000 -0500
31221 -+++ linux-3.0.9/fs/hfsplus/inode.c 2011-11-15 20:02:59.000000000 -0500
31222 -@@ -489,6 +489,8 @@ int hfsplus_cat_read_inode(struct inode
31223 +diff -urNp linux-3.1.1/fs/hfsplus/inode.c linux-3.1.1/fs/hfsplus/inode.c
31224 +--- linux-3.1.1/fs/hfsplus/inode.c 2011-11-11 15:19:27.000000000 -0500
31225 ++++ linux-3.1.1/fs/hfsplus/inode.c 2011-11-16 18:40:29.000000000 -0500
31226 +@@ -501,6 +501,8 @@ int hfsplus_cat_read_inode(struct inode
31227 int res = 0;
31228 u16 type;
31229
31230 @@ -43966,7 +43897,7 @@ diff -urNp linux-3.0.9/fs/hfsplus/inode.c linux-3.0.9/fs/hfsplus/inode.c
31231 type = hfs_bnode_read_u16(fd->bnode, fd->entryoffset);
31232
31233 HFSPLUS_I(inode)->linkid = 0;
31234 -@@ -552,6 +554,8 @@ int hfsplus_cat_write_inode(struct inode
31235 +@@ -564,6 +566,8 @@ int hfsplus_cat_write_inode(struct inode
31236 struct hfs_find_data fd;
31237 hfsplus_cat_entry entry;
31238
31239 @@ -43975,9 +43906,9 @@ diff -urNp linux-3.0.9/fs/hfsplus/inode.c linux-3.0.9/fs/hfsplus/inode.c
31240 if (HFSPLUS_IS_RSRC(inode))
31241 main_inode = HFSPLUS_I(inode)->rsrc_inode;
31242
31243 -diff -urNp linux-3.0.9/fs/hfsplus/ioctl.c linux-3.0.9/fs/hfsplus/ioctl.c
31244 ---- linux-3.0.9/fs/hfsplus/ioctl.c 2011-11-11 13:12:24.000000000 -0500
31245 -+++ linux-3.0.9/fs/hfsplus/ioctl.c 2011-11-15 20:02:59.000000000 -0500
31246 +diff -urNp linux-3.1.1/fs/hfsplus/ioctl.c linux-3.1.1/fs/hfsplus/ioctl.c
31247 +--- linux-3.1.1/fs/hfsplus/ioctl.c 2011-11-11 15:19:27.000000000 -0500
31248 ++++ linux-3.1.1/fs/hfsplus/ioctl.c 2011-11-16 18:40:29.000000000 -0500
31249 @@ -122,6 +122,8 @@ int hfsplus_setxattr(struct dentry *dent
31250 struct hfsplus_cat_file *file;
31251 int res;
31252 @@ -43996,11 +43927,11 @@ diff -urNp linux-3.0.9/fs/hfsplus/ioctl.c linux-3.0.9/fs/hfsplus/ioctl.c
31253 if (!S_ISREG(inode->i_mode) || HFSPLUS_IS_RSRC(inode))
31254 return -EOPNOTSUPP;
31255
31256 -diff -urNp linux-3.0.9/fs/hfsplus/super.c linux-3.0.9/fs/hfsplus/super.c
31257 ---- linux-3.0.9/fs/hfsplus/super.c 2011-11-11 13:12:24.000000000 -0500
31258 -+++ linux-3.0.9/fs/hfsplus/super.c 2011-11-15 20:02:59.000000000 -0500
31259 -@@ -340,6 +340,8 @@ static int hfsplus_fill_super(struct sup
31260 - struct nls_table *nls = NULL;
31261 +diff -urNp linux-3.1.1/fs/hfsplus/super.c linux-3.1.1/fs/hfsplus/super.c
31262 +--- linux-3.1.1/fs/hfsplus/super.c 2011-11-11 15:19:27.000000000 -0500
31263 ++++ linux-3.1.1/fs/hfsplus/super.c 2011-11-16 19:23:30.000000000 -0500
31264 +@@ -347,6 +347,8 @@ static int hfsplus_fill_super(struct sup
31265 + u64 last_fs_block, last_fs_page;
31266 int err;
31267
31268 + pax_track_stack();
31269 @@ -44008,10 +43939,10 @@ diff -urNp linux-3.0.9/fs/hfsplus/super.c linux-3.0.9/fs/hfsplus/super.c
31270 err = -EINVAL;
31271 sbi = kzalloc(sizeof(*sbi), GFP_KERNEL);
31272 if (!sbi)
31273 -diff -urNp linux-3.0.9/fs/hugetlbfs/inode.c linux-3.0.9/fs/hugetlbfs/inode.c
31274 ---- linux-3.0.9/fs/hugetlbfs/inode.c 2011-11-11 13:12:24.000000000 -0500
31275 -+++ linux-3.0.9/fs/hugetlbfs/inode.c 2011-11-15 20:02:59.000000000 -0500
31276 -@@ -914,7 +914,7 @@ static struct file_system_type hugetlbfs
31277 +diff -urNp linux-3.1.1/fs/hugetlbfs/inode.c linux-3.1.1/fs/hugetlbfs/inode.c
31278 +--- linux-3.1.1/fs/hugetlbfs/inode.c 2011-11-11 15:19:27.000000000 -0500
31279 ++++ linux-3.1.1/fs/hugetlbfs/inode.c 2011-11-16 18:40:29.000000000 -0500
31280 +@@ -915,7 +915,7 @@ static struct file_system_type hugetlbfs
31281 .kill_sb = kill_litter_super,
31282 };
31283
31284 @@ -44020,10 +43951,10 @@ diff -urNp linux-3.0.9/fs/hugetlbfs/inode.c linux-3.0.9/fs/hugetlbfs/inode.c
31285
31286 static int can_do_hugetlb_shm(void)
31287 {
31288 -diff -urNp linux-3.0.9/fs/inode.c linux-3.0.9/fs/inode.c
31289 ---- linux-3.0.9/fs/inode.c 2011-11-11 13:12:24.000000000 -0500
31290 -+++ linux-3.0.9/fs/inode.c 2011-11-15 20:02:59.000000000 -0500
31291 -@@ -829,8 +829,8 @@ unsigned int get_next_ino(void)
31292 +diff -urNp linux-3.1.1/fs/inode.c linux-3.1.1/fs/inode.c
31293 +--- linux-3.1.1/fs/inode.c 2011-11-11 15:19:27.000000000 -0500
31294 ++++ linux-3.1.1/fs/inode.c 2011-11-16 18:39:08.000000000 -0500
31295 +@@ -787,8 +787,8 @@ unsigned int get_next_ino(void)
31296
31297 #ifdef CONFIG_SMP
31298 if (unlikely((res & (LAST_INO_BATCH-1)) == 0)) {
31299 @@ -44034,10 +43965,10 @@ diff -urNp linux-3.0.9/fs/inode.c linux-3.0.9/fs/inode.c
31300
31301 res = next - LAST_INO_BATCH;
31302 }
31303 -diff -urNp linux-3.0.9/fs/jbd/checkpoint.c linux-3.0.9/fs/jbd/checkpoint.c
31304 ---- linux-3.0.9/fs/jbd/checkpoint.c 2011-11-11 13:12:24.000000000 -0500
31305 -+++ linux-3.0.9/fs/jbd/checkpoint.c 2011-11-15 20:02:59.000000000 -0500
31306 -@@ -350,6 +350,8 @@ int log_do_checkpoint(journal_t *journal
31307 +diff -urNp linux-3.1.1/fs/jbd/checkpoint.c linux-3.1.1/fs/jbd/checkpoint.c
31308 +--- linux-3.1.1/fs/jbd/checkpoint.c 2011-11-11 15:19:27.000000000 -0500
31309 ++++ linux-3.1.1/fs/jbd/checkpoint.c 2011-11-16 18:40:29.000000000 -0500
31310 +@@ -358,6 +358,8 @@ int log_do_checkpoint(journal_t *journal
31311 tid_t this_tid;
31312 int result;
31313
31314 @@ -44046,9 +43977,9 @@ diff -urNp linux-3.0.9/fs/jbd/checkpoint.c linux-3.0.9/fs/jbd/checkpoint.c
31315 jbd_debug(1, "Start checkpoint\n");
31316
31317 /*
31318 -diff -urNp linux-3.0.9/fs/jffs2/compr_rtime.c linux-3.0.9/fs/jffs2/compr_rtime.c
31319 ---- linux-3.0.9/fs/jffs2/compr_rtime.c 2011-11-11 13:12:24.000000000 -0500
31320 -+++ linux-3.0.9/fs/jffs2/compr_rtime.c 2011-11-15 20:02:59.000000000 -0500
31321 +diff -urNp linux-3.1.1/fs/jffs2/compr_rtime.c linux-3.1.1/fs/jffs2/compr_rtime.c
31322 +--- linux-3.1.1/fs/jffs2/compr_rtime.c 2011-11-11 15:19:27.000000000 -0500
31323 ++++ linux-3.1.1/fs/jffs2/compr_rtime.c 2011-11-16 18:40:29.000000000 -0500
31324 @@ -37,6 +37,8 @@ static int jffs2_rtime_compress(unsigned
31325 int outpos = 0;
31326 int pos=0;
31327 @@ -44067,9 +43998,9 @@ diff -urNp linux-3.0.9/fs/jffs2/compr_rtime.c linux-3.0.9/fs/jffs2/compr_rtime.c
31328 memset(positions,0,sizeof(positions));
31329
31330 while (outpos<destlen) {
31331 -diff -urNp linux-3.0.9/fs/jffs2/compr_rubin.c linux-3.0.9/fs/jffs2/compr_rubin.c
31332 ---- linux-3.0.9/fs/jffs2/compr_rubin.c 2011-11-11 13:12:24.000000000 -0500
31333 -+++ linux-3.0.9/fs/jffs2/compr_rubin.c 2011-11-15 20:02:59.000000000 -0500
31334 +diff -urNp linux-3.1.1/fs/jffs2/compr_rubin.c linux-3.1.1/fs/jffs2/compr_rubin.c
31335 +--- linux-3.1.1/fs/jffs2/compr_rubin.c 2011-11-11 15:19:27.000000000 -0500
31336 ++++ linux-3.1.1/fs/jffs2/compr_rubin.c 2011-11-16 18:40:29.000000000 -0500
31337 @@ -314,6 +314,8 @@ static int jffs2_dynrubin_compress(unsig
31338 int ret;
31339 uint32_t mysrclen, mydstlen;
31340 @@ -44079,9 +44010,9 @@ diff -urNp linux-3.0.9/fs/jffs2/compr_rubin.c linux-3.0.9/fs/jffs2/compr_rubin.c
31341 mysrclen = *sourcelen;
31342 mydstlen = *dstlen - 8;
31343
31344 -diff -urNp linux-3.0.9/fs/jffs2/erase.c linux-3.0.9/fs/jffs2/erase.c
31345 ---- linux-3.0.9/fs/jffs2/erase.c 2011-11-11 13:12:24.000000000 -0500
31346 -+++ linux-3.0.9/fs/jffs2/erase.c 2011-11-15 20:02:59.000000000 -0500
31347 +diff -urNp linux-3.1.1/fs/jffs2/erase.c linux-3.1.1/fs/jffs2/erase.c
31348 +--- linux-3.1.1/fs/jffs2/erase.c 2011-11-11 15:19:27.000000000 -0500
31349 ++++ linux-3.1.1/fs/jffs2/erase.c 2011-11-16 18:39:08.000000000 -0500
31350 @@ -439,7 +439,8 @@ static void jffs2_mark_erased_block(stru
31351 struct jffs2_unknown_node marker = {
31352 .magic = cpu_to_je16(JFFS2_MAGIC_BITMASK),
31353 @@ -44092,9 +44023,9 @@ diff -urNp linux-3.0.9/fs/jffs2/erase.c linux-3.0.9/fs/jffs2/erase.c
31354 };
31355
31356 jffs2_prealloc_raw_node_refs(c, jeb, 1);
31357 -diff -urNp linux-3.0.9/fs/jffs2/wbuf.c linux-3.0.9/fs/jffs2/wbuf.c
31358 ---- linux-3.0.9/fs/jffs2/wbuf.c 2011-11-11 13:12:24.000000000 -0500
31359 -+++ linux-3.0.9/fs/jffs2/wbuf.c 2011-11-15 20:02:59.000000000 -0500
31360 +diff -urNp linux-3.1.1/fs/jffs2/wbuf.c linux-3.1.1/fs/jffs2/wbuf.c
31361 +--- linux-3.1.1/fs/jffs2/wbuf.c 2011-11-11 15:19:27.000000000 -0500
31362 ++++ linux-3.1.1/fs/jffs2/wbuf.c 2011-11-16 18:39:08.000000000 -0500
31363 @@ -1012,7 +1012,8 @@ static const struct jffs2_unknown_node o
31364 {
31365 .magic = constant_cpu_to_je16(JFFS2_MAGIC_BITMASK),
31366 @@ -44105,9 +44036,9 @@ diff -urNp linux-3.0.9/fs/jffs2/wbuf.c linux-3.0.9/fs/jffs2/wbuf.c
31367 };
31368
31369 /*
31370 -diff -urNp linux-3.0.9/fs/jffs2/xattr.c linux-3.0.9/fs/jffs2/xattr.c
31371 ---- linux-3.0.9/fs/jffs2/xattr.c 2011-11-11 13:12:24.000000000 -0500
31372 -+++ linux-3.0.9/fs/jffs2/xattr.c 2011-11-15 20:02:59.000000000 -0500
31373 +diff -urNp linux-3.1.1/fs/jffs2/xattr.c linux-3.1.1/fs/jffs2/xattr.c
31374 +--- linux-3.1.1/fs/jffs2/xattr.c 2011-11-11 15:19:27.000000000 -0500
31375 ++++ linux-3.1.1/fs/jffs2/xattr.c 2011-11-16 18:40:29.000000000 -0500
31376 @@ -773,6 +773,8 @@ void jffs2_build_xattr_subsystem(struct
31377
31378 BUG_ON(!(c->flags & JFFS2_SB_FLAG_BUILDING));
31379 @@ -44117,9 +44048,9 @@ diff -urNp linux-3.0.9/fs/jffs2/xattr.c linux-3.0.9/fs/jffs2/xattr.c
31380 /* Phase.1 : Merge same xref */
31381 for (i=0; i < XREF_TMPHASH_SIZE; i++)
31382 xref_tmphash[i] = NULL;
31383 -diff -urNp linux-3.0.9/fs/jfs/super.c linux-3.0.9/fs/jfs/super.c
31384 ---- linux-3.0.9/fs/jfs/super.c 2011-11-11 13:12:24.000000000 -0500
31385 -+++ linux-3.0.9/fs/jfs/super.c 2011-11-15 20:02:59.000000000 -0500
31386 +diff -urNp linux-3.1.1/fs/jfs/super.c linux-3.1.1/fs/jfs/super.c
31387 +--- linux-3.1.1/fs/jfs/super.c 2011-11-11 15:19:27.000000000 -0500
31388 ++++ linux-3.1.1/fs/jfs/super.c 2011-11-16 18:39:08.000000000 -0500
31389 @@ -803,7 +803,7 @@ static int __init init_jfs_fs(void)
31390
31391 jfs_inode_cachep =
31392 @@ -44129,9 +44060,9 @@ diff -urNp linux-3.0.9/fs/jfs/super.c linux-3.0.9/fs/jfs/super.c
31393 init_once);
31394 if (jfs_inode_cachep == NULL)
31395 return -ENOMEM;
31396 -diff -urNp linux-3.0.9/fs/Kconfig.binfmt linux-3.0.9/fs/Kconfig.binfmt
31397 ---- linux-3.0.9/fs/Kconfig.binfmt 2011-11-11 13:12:24.000000000 -0500
31398 -+++ linux-3.0.9/fs/Kconfig.binfmt 2011-11-15 20:02:59.000000000 -0500
31399 +diff -urNp linux-3.1.1/fs/Kconfig.binfmt linux-3.1.1/fs/Kconfig.binfmt
31400 +--- linux-3.1.1/fs/Kconfig.binfmt 2011-11-11 15:19:27.000000000 -0500
31401 ++++ linux-3.1.1/fs/Kconfig.binfmt 2011-11-16 18:39:08.000000000 -0500
31402 @@ -86,7 +86,7 @@ config HAVE_AOUT
31403
31404 config BINFMT_AOUT
31405 @@ -44141,10 +44072,10 @@ diff -urNp linux-3.0.9/fs/Kconfig.binfmt linux-3.0.9/fs/Kconfig.binfmt
31406 ---help---
31407 A.out (Assembler.OUTput) is a set of formats for libraries and
31408 executables used in the earliest versions of UNIX. Linux used
31409 -diff -urNp linux-3.0.9/fs/libfs.c linux-3.0.9/fs/libfs.c
31410 ---- linux-3.0.9/fs/libfs.c 2011-11-11 13:12:24.000000000 -0500
31411 -+++ linux-3.0.9/fs/libfs.c 2011-11-15 20:02:59.000000000 -0500
31412 -@@ -163,6 +163,9 @@ int dcache_readdir(struct file * filp, v
31413 +diff -urNp linux-3.1.1/fs/libfs.c linux-3.1.1/fs/libfs.c
31414 +--- linux-3.1.1/fs/libfs.c 2011-11-11 15:19:27.000000000 -0500
31415 ++++ linux-3.1.1/fs/libfs.c 2011-11-16 18:39:08.000000000 -0500
31416 +@@ -165,6 +165,9 @@ int dcache_readdir(struct file * filp, v
31417
31418 for (p=q->next; p != &dentry->d_subdirs; p=p->next) {
31419 struct dentry *next;
31420 @@ -44154,7 +44085,7 @@ diff -urNp linux-3.0.9/fs/libfs.c linux-3.0.9/fs/libfs.c
31421 next = list_entry(p, struct dentry, d_u.d_child);
31422 spin_lock_nested(&next->d_lock, DENTRY_D_LOCK_NESTED);
31423 if (!simple_positive(next)) {
31424 -@@ -172,7 +175,12 @@ int dcache_readdir(struct file * filp, v
31425 +@@ -174,7 +177,12 @@ int dcache_readdir(struct file * filp, v
31426
31427 spin_unlock(&next->d_lock);
31428 spin_unlock(&dentry->d_lock);
31429 @@ -44168,9 +44099,9 @@ diff -urNp linux-3.0.9/fs/libfs.c linux-3.0.9/fs/libfs.c
31430 next->d_name.len, filp->f_pos,
31431 next->d_inode->i_ino,
31432 dt_type(next->d_inode)) < 0)
31433 -diff -urNp linux-3.0.9/fs/lockd/clntproc.c linux-3.0.9/fs/lockd/clntproc.c
31434 ---- linux-3.0.9/fs/lockd/clntproc.c 2011-11-11 13:12:24.000000000 -0500
31435 -+++ linux-3.0.9/fs/lockd/clntproc.c 2011-11-15 20:02:59.000000000 -0500
31436 +diff -urNp linux-3.1.1/fs/lockd/clntproc.c linux-3.1.1/fs/lockd/clntproc.c
31437 +--- linux-3.1.1/fs/lockd/clntproc.c 2011-11-11 15:19:27.000000000 -0500
31438 ++++ linux-3.1.1/fs/lockd/clntproc.c 2011-11-16 18:40:29.000000000 -0500
31439 @@ -36,11 +36,11 @@ static const struct rpc_call_ops nlmclnt
31440 /*
31441 * Cookie counter for NLM requests
31442 @@ -44185,7 +44116,7 @@ diff -urNp linux-3.0.9/fs/lockd/clntproc.c linux-3.0.9/fs/lockd/clntproc.c
31443
31444 memcpy(c->data, &cookie, 4);
31445 c->len=4;
31446 -@@ -620,6 +620,8 @@ nlmclnt_reclaim(struct nlm_host *host, s
31447 +@@ -621,6 +621,8 @@ nlmclnt_reclaim(struct nlm_host *host, s
31448 struct nlm_rqst reqst, *req;
31449 int status;
31450
31451 @@ -44194,10 +44125,10 @@ diff -urNp linux-3.0.9/fs/lockd/clntproc.c linux-3.0.9/fs/lockd/clntproc.c
31452 req = &reqst;
31453 memset(req, 0, sizeof(*req));
31454 locks_init_lock(&req->a_args.lock.fl);
31455 -diff -urNp linux-3.0.9/fs/locks.c linux-3.0.9/fs/locks.c
31456 ---- linux-3.0.9/fs/locks.c 2011-11-11 13:12:24.000000000 -0500
31457 -+++ linux-3.0.9/fs/locks.c 2011-11-15 20:02:59.000000000 -0500
31458 -@@ -2043,16 +2043,16 @@ void locks_remove_flock(struct file *fil
31459 +diff -urNp linux-3.1.1/fs/locks.c linux-3.1.1/fs/locks.c
31460 +--- linux-3.1.1/fs/locks.c 2011-11-11 15:19:27.000000000 -0500
31461 ++++ linux-3.1.1/fs/locks.c 2011-11-16 18:39:08.000000000 -0500
31462 +@@ -2022,16 +2022,16 @@ void locks_remove_flock(struct file *fil
31463 return;
31464
31465 if (filp->f_op && filp->f_op->flock) {
31466 @@ -44218,9 +44149,9 @@ diff -urNp linux-3.0.9/fs/locks.c linux-3.0.9/fs/locks.c
31467 }
31468
31469 lock_flocks();
31470 -diff -urNp linux-3.0.9/fs/logfs/super.c linux-3.0.9/fs/logfs/super.c
31471 ---- linux-3.0.9/fs/logfs/super.c 2011-11-11 13:12:24.000000000 -0500
31472 -+++ linux-3.0.9/fs/logfs/super.c 2011-11-15 20:02:59.000000000 -0500
31473 +diff -urNp linux-3.1.1/fs/logfs/super.c linux-3.1.1/fs/logfs/super.c
31474 +--- linux-3.1.1/fs/logfs/super.c 2011-11-11 15:19:27.000000000 -0500
31475 ++++ linux-3.1.1/fs/logfs/super.c 2011-11-16 18:40:29.000000000 -0500
31476 @@ -266,6 +266,8 @@ static int logfs_recover_sb(struct super
31477 struct logfs_disk_super _ds1, *ds1 = &_ds1;
31478 int err, valid0, valid1;
31479 @@ -44230,58 +44161,50 @@ diff -urNp linux-3.0.9/fs/logfs/super.c linux-3.0.9/fs/logfs/super.c
31480 /* read first superblock */
31481 err = wbuf_read(sb, super->s_sb_ofs[0], sizeof(*ds0), ds0);
31482 if (err)
31483 -diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
31484 ---- linux-3.0.9/fs/namei.c 2011-11-11 13:12:24.000000000 -0500
31485 -+++ linux-3.0.9/fs/namei.c 2011-11-15 20:02:59.000000000 -0500
31486 -@@ -239,21 +239,23 @@ int generic_permission(struct inode *ino
31487 - return ret;
31488 +diff -urNp linux-3.1.1/fs/namei.c linux-3.1.1/fs/namei.c
31489 +--- linux-3.1.1/fs/namei.c 2011-11-11 15:19:27.000000000 -0500
31490 ++++ linux-3.1.1/fs/namei.c 2011-11-17 00:36:54.000000000 -0500
31491 +@@ -283,14 +283,22 @@ int generic_permission(struct inode *ino
31492
31493 + if (S_ISDIR(inode->i_mode)) {
31494 + /* DACs are overridable for directories */
31495 +- if (ns_capable(inode_userns(inode), CAP_DAC_OVERRIDE))
31496 +- return 0;
31497 + if (!(mask & MAY_WRITE))
31498 + if (ns_capable(inode_userns(inode), CAP_DAC_READ_SEARCH))
31499 + return 0;
31500 ++ if (ns_capable(inode_userns(inode), CAP_DAC_OVERRIDE))
31501 ++ return 0;
31502 + return -EACCES;
31503 + }
31504 /*
31505 -- * Read/write DACs are always overridable.
31506 -- * Executable DACs are overridable for all directories and
31507 -- * for non-directories that have least one exec bit set.
31508 + * Searching includes executable on directories, else just read.
31509 - */
31510 -- if (!(mask & MAY_EXEC) || execute_ok(inode))
31511 -- if (ns_capable(inode_userns(inode), CAP_DAC_OVERRIDE))
31512 ++ */
31513 + mask &= MAY_READ | MAY_WRITE | MAY_EXEC;
31514 -+ if (mask == MAY_READ || (S_ISDIR(inode->i_mode) && !(mask & MAY_WRITE))) {
31515 ++ if (mask == MAY_READ)
31516 + if (ns_capable(inode_userns(inode), CAP_DAC_READ_SEARCH))
31517 ++ return 0;
31518 ++
31519 ++ /*
31520 + * Read/write DACs are always overridable.
31521 + * Executable DACs are overridable when there is
31522 + * at least one exec bit set.
31523 +@@ -299,14 +307,6 @@ int generic_permission(struct inode *ino
31524 + if (ns_capable(inode_userns(inode), CAP_DAC_OVERRIDE))
31525 return 0;
31526 -+ }
31527
31528 - /*
31529 +- /*
31530 - * Searching includes executable on directories, else just read.
31531 -+ * Read/write DACs are always overridable.
31532 -+ * Executable DACs are overridable for all directories and
31533 -+ * for non-directories that have least one exec bit set.
31534 - */
31535 +- */
31536 - mask &= MAY_READ | MAY_WRITE | MAY_EXEC;
31537 -- if (mask == MAY_READ || (S_ISDIR(inode->i_mode) && !(mask & MAY_WRITE)))
31538 +- if (mask == MAY_READ)
31539 - if (ns_capable(inode_userns(inode), CAP_DAC_READ_SEARCH))
31540 -+ if (!(mask & MAY_EXEC) || execute_ok(inode)) {
31541 -+ if (ns_capable(inode_userns(inode), CAP_DAC_OVERRIDE))
31542 - return 0;
31543 -+ }
31544 -
31545 +- return 0;
31546 +-
31547 return -EACCES;
31548 }
31549 -@@ -595,9 +597,12 @@ static inline int exec_permission(struct
31550 - if (ret == -ECHILD)
31551 - return ret;
31552 -
31553 -- if (ns_capable(ns, CAP_DAC_OVERRIDE) ||
31554 -- ns_capable(ns, CAP_DAC_READ_SEARCH))
31555 -+ if (ns_capable_nolog(ns, CAP_DAC_OVERRIDE))
31556 - goto ok;
31557 -+ else {
31558 -+ if (ns_capable(ns, CAP_DAC_READ_SEARCH) || ns_capable(ns, CAP_DAC_OVERRIDE))
31559 -+ goto ok;
31560 -+ }
31561
31562 - return ret;
31563 - ok:
31564 -@@ -705,11 +710,19 @@ follow_link(struct path *link, struct na
31565 +@@ -653,11 +653,19 @@ follow_link(struct path *link, struct na
31566 return error;
31567 }
31568
31569 @@ -44302,7 +44225,7 @@ diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
31570 error = 0;
31571 if (s)
31572 error = __vfs_follow_link(nd, s);
31573 -@@ -1606,6 +1619,12 @@ static int path_lookupat(int dfd, const
31574 +@@ -1622,6 +1630,12 @@ static int path_lookupat(int dfd, const
31575 if (!err)
31576 err = complete_walk(nd);
31577
31578 @@ -44315,7 +44238,7 @@ diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
31579 if (!err && nd->flags & LOOKUP_DIRECTORY) {
31580 if (!nd->inode->i_op->lookup) {
31581 path_put(&nd->path);
31582 -@@ -1633,6 +1652,9 @@ static int do_path_lookup(int dfd, const
31583 +@@ -1649,6 +1663,9 @@ static int do_path_lookup(int dfd, const
31584 retval = path_lookupat(dfd, name, flags | LOOKUP_REVAL, nd);
31585
31586 if (likely(!retval)) {
31587 @@ -44325,38 +44248,7 @@ diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
31588 if (unlikely(!audit_dummy_context())) {
31589 if (nd->path.dentry && nd->inode)
31590 audit_inode(name, nd->path.dentry);
31591 -@@ -1949,6 +1971,30 @@ int vfs_create(struct inode *dir, struct
31592 - return error;
31593 - }
31594 -
31595 -+/*
31596 -+ * Note that while the flag value (low two bits) for sys_open means:
31597 -+ * 00 - read-only
31598 -+ * 01 - write-only
31599 -+ * 10 - read-write
31600 -+ * 11 - special
31601 -+ * it is changed into
31602 -+ * 00 - no permissions needed
31603 -+ * 01 - read-permission
31604 -+ * 10 - write-permission
31605 -+ * 11 - read-write
31606 -+ * for the internal routines (ie open_namei()/follow_link() etc)
31607 -+ * This is more logical, and also allows the 00 "no perm needed"
31608 -+ * to be used for symlinks (where the permissions are checked
31609 -+ * later).
31610 -+ *
31611 -+*/
31612 -+static inline int open_to_namei_flags(int flag)
31613 -+{
31614 -+ if ((flag+1) & O_ACCMODE)
31615 -+ flag++;
31616 -+ return flag;
31617 -+}
31618 -+
31619 - static int may_open(struct path *path, int acc_mode, int flag)
31620 - {
31621 - struct dentry *dentry = path->dentry;
31622 -@@ -2001,7 +2047,27 @@ static int may_open(struct path *path, i
31623 +@@ -2049,7 +2066,27 @@ static int may_open(struct path *path, i
31624 /*
31625 * Ensure there are no outstanding leases on the file.
31626 */
31627 @@ -44376,7 +44268,7 @@ diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
31628 + goto exit;
31629 + }
31630 +
31631 -+ if (!gr_acl_handle_open(dentry, path->mnt, open_to_namei_flags(flag))) {
31632 ++ if (!gr_acl_handle_open(dentry, path->mnt, acc_mode)) {
31633 + error = -EACCES;
31634 + goto exit;
31635 + }
31636 @@ -44385,46 +44277,7 @@ diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
31637 }
31638
31639 static int handle_truncate(struct file *filp)
31640 -@@ -2027,30 +2093,6 @@ static int handle_truncate(struct file *
31641 - }
31642 -
31643 - /*
31644 -- * Note that while the flag value (low two bits) for sys_open means:
31645 -- * 00 - read-only
31646 -- * 01 - write-only
31647 -- * 10 - read-write
31648 -- * 11 - special
31649 -- * it is changed into
31650 -- * 00 - no permissions needed
31651 -- * 01 - read-permission
31652 -- * 10 - write-permission
31653 -- * 11 - read-write
31654 -- * for the internal routines (ie open_namei()/follow_link() etc)
31655 -- * This is more logical, and also allows the 00 "no perm needed"
31656 -- * to be used for symlinks (where the permissions are checked
31657 -- * later).
31658 -- *
31659 --*/
31660 --static inline int open_to_namei_flags(int flag)
31661 --{
31662 -- if ((flag+1) & O_ACCMODE)
31663 -- flag++;
31664 -- return flag;
31665 --}
31666 --
31667 --/*
31668 - * Handle the last step of open()
31669 - */
31670 - static struct file *do_last(struct nameidata *nd, struct path *path,
31671 -@@ -2059,6 +2101,7 @@ static struct file *do_last(struct namei
31672 - struct dentry *dir = nd->path.dentry;
31673 - struct dentry *dentry;
31674 - int open_flag = op->open_flag;
31675 -+ int flag = open_to_namei_flags(open_flag);
31676 - int will_truncate = open_flag & O_TRUNC;
31677 - int want_write = 0;
31678 - int acc_mode = op->acc_mode;
31679 -@@ -2079,6 +2122,10 @@ static struct file *do_last(struct namei
31680 +@@ -2110,6 +2147,10 @@ static struct file *do_last(struct namei
31681 error = complete_walk(nd);
31682 if (error)
31683 return ERR_PTR(error);
31684 @@ -44435,7 +44288,7 @@ diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
31685 audit_inode(pathname, nd->path.dentry);
31686 if (open_flag & O_CREAT) {
31687 error = -EISDIR;
31688 -@@ -2089,6 +2136,10 @@ static struct file *do_last(struct namei
31689 +@@ -2120,6 +2161,10 @@ static struct file *do_last(struct namei
31690 error = complete_walk(nd);
31691 if (error)
31692 return ERR_PTR(error);
31693 @@ -44446,7 +44299,7 @@ diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
31694 audit_inode(pathname, dir);
31695 goto ok;
31696 }
31697 -@@ -2111,6 +2162,11 @@ static struct file *do_last(struct namei
31698 +@@ -2142,6 +2187,11 @@ static struct file *do_last(struct namei
31699 if (error)
31700 return ERR_PTR(-ECHILD);
31701
31702 @@ -44458,12 +44311,12 @@ diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
31703 error = -ENOTDIR;
31704 if (nd->flags & LOOKUP_DIRECTORY) {
31705 if (!nd->inode->i_op->lookup)
31706 -@@ -2150,6 +2206,12 @@ static struct file *do_last(struct namei
31707 +@@ -2181,6 +2231,12 @@ static struct file *do_last(struct namei
31708 /* Negative dentry, just create the file */
31709 if (!dentry->d_inode) {
31710 int mode = op->mode;
31711 +
31712 -+ if (!gr_acl_handle_creat(path->dentry, nd->path.dentry, path->mnt, flag, mode)) {
31713 ++ if (!gr_acl_handle_creat(path->dentry, nd->path.dentry, path->mnt, open_flag, acc_mode, mode)) {
31714 + error = -EACCES;
31715 + goto exit_mutex_unlock;
31716 + }
31717 @@ -44471,7 +44324,7 @@ diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
31718 if (!IS_POSIXACL(dir->d_inode))
31719 mode &= ~current_umask();
31720 /*
31721 -@@ -2173,6 +2235,8 @@ static struct file *do_last(struct namei
31722 +@@ -2204,6 +2260,8 @@ static struct file *do_last(struct namei
31723 error = vfs_create(dir->d_inode, dentry, mode, nd);
31724 if (error)
31725 goto exit_mutex_unlock;
31726 @@ -44480,7 +44333,7 @@ diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
31727 mutex_unlock(&dir->d_inode->i_mutex);
31728 dput(nd->path.dentry);
31729 nd->path.dentry = dentry;
31730 -@@ -2182,6 +2246,19 @@ static struct file *do_last(struct namei
31731 +@@ -2213,6 +2271,19 @@ static struct file *do_last(struct namei
31732 /*
31733 * It already exists.
31734 */
31735 @@ -44492,7 +44345,7 @@ diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
31736 +
31737 + /* only check if O_CREAT is specified, all other checks need to go
31738 + into may_open */
31739 -+ if (gr_handle_fifo(path->dentry, path->mnt, dir, flag, acc_mode)) {
31740 ++ if (gr_handle_fifo(path->dentry, path->mnt, dir, open_flag, acc_mode)) {
31741 + error = -EACCES;
31742 + goto exit_mutex_unlock;
31743 + }
31744 @@ -44500,69 +44353,90 @@ diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
31745 mutex_unlock(&dir->d_inode->i_mutex);
31746 audit_inode(pathname, path->dentry);
31747
31748 -@@ -2398,6 +2475,10 @@ struct dentry *lookup_create(struct name
31749 - }
31750 +@@ -2425,6 +2496,11 @@ struct dentry *kern_path_create(int dfd,
31751 + *path = nd.path;
31752 return dentry;
31753 eexist:
31754 -+ if (!gr_acl_handle_hidden_file(dentry, nd->path.mnt)) {
31755 ++ if (!gr_acl_handle_hidden_file(dentry, nd.path.mnt)) {
31756 + dput(dentry);
31757 -+ return ERR_PTR(-ENOENT);
31758 ++ dentry = ERR_PTR(-ENOENT);
31759 ++ goto fail;
31760 + }
31761 dput(dentry);
31762 dentry = ERR_PTR(-EEXIST);
31763 fail:
31764 -@@ -2475,6 +2556,17 @@ SYSCALL_DEFINE4(mknodat, int, dfd, const
31765 - error = may_mknod(mode);
31766 +@@ -2447,6 +2523,20 @@ struct dentry *user_path_create(int dfd,
31767 + }
31768 + EXPORT_SYMBOL(user_path_create);
31769 +
31770 ++static struct dentry *user_path_create_with_name(int dfd, const char __user *pathname, struct path *path, char **to, int is_dir)
31771 ++{
31772 ++ char *tmp = getname(pathname);
31773 ++ struct dentry *res;
31774 ++ if (IS_ERR(tmp))
31775 ++ return ERR_CAST(tmp);
31776 ++ res = kern_path_create(dfd, tmp, path, is_dir);
31777 ++ if (IS_ERR(res))
31778 ++ putname(tmp);
31779 ++ else
31780 ++ *to = tmp;
31781 ++ return res;
31782 ++}
31783 ++
31784 + int vfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t dev)
31785 + {
31786 + int error = may_create(dir, dentry);
31787 +@@ -2514,6 +2604,17 @@ SYSCALL_DEFINE4(mknodat, int, dfd, const
31788 + error = mnt_want_write(path.mnt);
31789 if (error)
31790 goto out_dput;
31791 +
31792 -+ if (gr_handle_chroot_mknod(dentry, nd.path.mnt, mode)) {
31793 ++ if (gr_handle_chroot_mknod(dentry, path.mnt, mode)) {
31794 + error = -EPERM;
31795 -+ goto out_dput;
31796 ++ goto out_drop_write;
31797 + }
31798 +
31799 -+ if (!gr_acl_handle_mknod(dentry, nd.path.dentry, nd.path.mnt, mode)) {
31800 ++ if (!gr_acl_handle_mknod(dentry, path.dentry, path.mnt, mode)) {
31801 + error = -EACCES;
31802 -+ goto out_dput;
31803 ++ goto out_drop_write;
31804 + }
31805 +
31806 - error = mnt_want_write(nd.path.mnt);
31807 + error = security_path_mknod(&path, dentry, mode, dev);
31808 if (error)
31809 - goto out_dput;
31810 -@@ -2495,6 +2587,9 @@ SYSCALL_DEFINE4(mknodat, int, dfd, const
31811 + goto out_drop_write;
31812 +@@ -2531,6 +2632,9 @@ SYSCALL_DEFINE4(mknodat, int, dfd, const
31813 }
31814 out_drop_write:
31815 - mnt_drop_write(nd.path.mnt);
31816 + mnt_drop_write(path.mnt);
31817 +
31818 + if (!error)
31819 -+ gr_handle_create(dentry, nd.path.mnt);
31820 ++ gr_handle_create(dentry, path.mnt);
31821 out_dput:
31822 dput(dentry);
31823 - out_unlock:
31824 -@@ -2547,6 +2642,11 @@ SYSCALL_DEFINE3(mkdirat, int, dfd, const
31825 - if (IS_ERR(dentry))
31826 - goto out_unlock;
31827 -
31828 -+ if (!gr_acl_handle_mkdir(dentry, nd.path.dentry, nd.path.mnt)) {
31829 + mutex_unlock(&path.dentry->d_inode->i_mutex);
31830 +@@ -2580,12 +2684,21 @@ SYSCALL_DEFINE3(mkdirat, int, dfd, const
31831 + error = mnt_want_write(path.mnt);
31832 + if (error)
31833 + goto out_dput;
31834 ++
31835 ++ if (!gr_acl_handle_mkdir(dentry, path.dentry, path.mnt)) {
31836 + error = -EACCES;
31837 -+ goto out_dput;
31838 ++ goto out_drop_write;
31839 + }
31840 +
31841 - if (!IS_POSIXACL(nd.path.dentry->d_inode))
31842 - mode &= ~current_umask();
31843 - error = mnt_want_write(nd.path.mnt);
31844 -@@ -2558,6 +2658,10 @@ SYSCALL_DEFINE3(mkdirat, int, dfd, const
31845 - error = vfs_mkdir(nd.path.dentry->d_inode, dentry, mode);
31846 + error = security_path_mkdir(&path, dentry, mode);
31847 + if (error)
31848 + goto out_drop_write;
31849 + error = vfs_mkdir(path.dentry->d_inode, dentry, mode);
31850 out_drop_write:
31851 - mnt_drop_write(nd.path.mnt);
31852 + mnt_drop_write(path.mnt);
31853 +
31854 + if (!error)
31855 -+ gr_handle_create(dentry, nd.path.mnt);
31856 -+
31857 ++ gr_handle_create(dentry, path.mnt);
31858 out_dput:
31859 dput(dentry);
31860 - out_unlock:
31861 -@@ -2640,6 +2744,8 @@ static long do_rmdir(int dfd, const char
31862 + mutex_unlock(&path.dentry->d_inode->i_mutex);
31863 +@@ -2665,6 +2778,8 @@ static long do_rmdir(int dfd, const char
31864 char * name;
31865 struct dentry *dentry;
31866 struct nameidata nd;
31867 @@ -44571,15 +44445,13 @@ diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
31868
31869 error = user_path_parent(dfd, pathname, &nd, &name);
31870 if (error)
31871 -@@ -2668,6 +2774,17 @@ static long do_rmdir(int dfd, const char
31872 +@@ -2693,6 +2808,15 @@ static long do_rmdir(int dfd, const char
31873 error = -ENOENT;
31874 goto exit3;
31875 }
31876 +
31877 -+ if (dentry->d_inode->i_nlink <= 1) {
31878 -+ saved_ino = dentry->d_inode->i_ino;
31879 -+ saved_dev = gr_get_dev_from_dentry(dentry);
31880 -+ }
31881 ++ saved_ino = dentry->d_inode->i_ino;
31882 ++ saved_dev = gr_get_dev_from_dentry(dentry);
31883 +
31884 + if (!gr_acl_handle_rmdir(dentry, nd.path.mnt)) {
31885 + error = -EACCES;
31886 @@ -44589,7 +44461,7 @@ diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
31887 error = mnt_want_write(nd.path.mnt);
31888 if (error)
31889 goto exit3;
31890 -@@ -2675,6 +2792,8 @@ static long do_rmdir(int dfd, const char
31891 +@@ -2700,6 +2824,8 @@ static long do_rmdir(int dfd, const char
31892 if (error)
31893 goto exit4;
31894 error = vfs_rmdir(nd.path.dentry->d_inode, dentry);
31895 @@ -44598,7 +44470,7 @@ diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
31896 exit4:
31897 mnt_drop_write(nd.path.mnt);
31898 exit3:
31899 -@@ -2737,6 +2856,8 @@ static long do_unlinkat(int dfd, const c
31900 +@@ -2762,6 +2888,8 @@ static long do_unlinkat(int dfd, const c
31901 struct dentry *dentry;
31902 struct nameidata nd;
31903 struct inode *inode = NULL;
31904 @@ -44607,7 +44479,7 @@ diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
31905
31906 error = user_path_parent(dfd, pathname, &nd, &name);
31907 if (error)
31908 -@@ -2759,6 +2880,16 @@ static long do_unlinkat(int dfd, const c
31909 +@@ -2784,6 +2912,16 @@ static long do_unlinkat(int dfd, const c
31910 if (!inode)
31911 goto slashes;
31912 ihold(inode);
31913 @@ -44624,7 +44496,7 @@ diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
31914 error = mnt_want_write(nd.path.mnt);
31915 if (error)
31916 goto exit2;
31917 -@@ -2766,6 +2897,8 @@ static long do_unlinkat(int dfd, const c
31918 +@@ -2791,6 +2929,8 @@ static long do_unlinkat(int dfd, const c
31919 if (error)
31920 goto exit3;
31921 error = vfs_unlink(nd.path.dentry->d_inode, dentry);
31922 @@ -44633,58 +44505,74 @@ diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
31923 exit3:
31924 mnt_drop_write(nd.path.mnt);
31925 exit2:
31926 -@@ -2843,6 +2976,11 @@ SYSCALL_DEFINE3(symlinkat, const char __
31927 - if (IS_ERR(dentry))
31928 - goto out_unlock;
31929 -
31930 -+ if (!gr_acl_handle_symlink(dentry, nd.path.dentry, nd.path.mnt, from)) {
31931 +@@ -2866,10 +3006,18 @@ SYSCALL_DEFINE3(symlinkat, const char __
31932 + error = mnt_want_write(path.mnt);
31933 + if (error)
31934 + goto out_dput;
31935 ++
31936 ++ if (!gr_acl_handle_symlink(dentry, path.dentry, path.mnt, from)) {
31937 + error = -EACCES;
31938 -+ goto out_dput;
31939 ++ goto out_drop_write;
31940 + }
31941 +
31942 - error = mnt_want_write(nd.path.mnt);
31943 - if (error)
31944 - goto out_dput;
31945 -@@ -2850,6 +2988,8 @@ SYSCALL_DEFINE3(symlinkat, const char __
31946 + error = security_path_symlink(&path, dentry, from);
31947 if (error)
31948 goto out_drop_write;
31949 - error = vfs_symlink(nd.path.dentry->d_inode, dentry, from);
31950 + error = vfs_symlink(path.dentry->d_inode, dentry, from);
31951 + if (!error)
31952 -+ gr_handle_create(dentry, nd.path.mnt);
31953 ++ gr_handle_create(dentry, path.mnt);
31954 out_drop_write:
31955 - mnt_drop_write(nd.path.mnt);
31956 + mnt_drop_write(path.mnt);
31957 out_dput:
31958 -@@ -2958,6 +3098,20 @@ SYSCALL_DEFINE5(linkat, int, olddfd, con
31959 +@@ -2941,6 +3089,7 @@ SYSCALL_DEFINE5(linkat, int, olddfd, con
31960 + {
31961 + struct dentry *new_dentry;
31962 + struct path old_path, new_path;
31963 ++ char *to;
31964 + int how = 0;
31965 + int error;
31966 +
31967 +@@ -2964,7 +3113,7 @@ SYSCALL_DEFINE5(linkat, int, olddfd, con
31968 + if (error)
31969 + return error;
31970 +
31971 +- new_dentry = user_path_create(newdfd, newname, &new_path, 0);
31972 ++ new_dentry = user_path_create_with_name(newdfd, newname, &new_path, &to, 0);
31973 error = PTR_ERR(new_dentry);
31974 if (IS_ERR(new_dentry))
31975 - goto out_unlock;
31976 + goto out;
31977 +@@ -2975,13 +3124,30 @@ SYSCALL_DEFINE5(linkat, int, olddfd, con
31978 + error = mnt_want_write(new_path.mnt);
31979 + if (error)
31980 + goto out_dput;
31981 +
31982 + if (gr_handle_hardlink(old_path.dentry, old_path.mnt,
31983 + old_path.dentry->d_inode,
31984 + old_path.dentry->d_inode->i_mode, to)) {
31985 + error = -EACCES;
31986 -+ goto out_dput;
31987 ++ goto out_drop_write;
31988 + }
31989 +
31990 -+ if (!gr_acl_handle_link(new_dentry, nd.path.dentry, nd.path.mnt,
31991 ++ if (!gr_acl_handle_link(new_dentry, new_path.dentry, new_path.mnt,
31992 + old_path.dentry, old_path.mnt, to)) {
31993 + error = -EACCES;
31994 -+ goto out_dput;
31995 ++ goto out_drop_write;
31996 + }
31997 +
31998 - error = mnt_want_write(nd.path.mnt);
31999 - if (error)
32000 - goto out_dput;
32001 -@@ -2965,6 +3119,8 @@ SYSCALL_DEFINE5(linkat, int, olddfd, con
32002 + error = security_path_link(old_path.dentry, &new_path, new_dentry);
32003 if (error)
32004 goto out_drop_write;
32005 - error = vfs_link(old_path.dentry, nd.path.dentry->d_inode, new_dentry);
32006 + error = vfs_link(old_path.dentry, new_path.dentry->d_inode, new_dentry);
32007 + if (!error)
32008 -+ gr_handle_create(new_dentry, nd.path.mnt);
32009 ++ gr_handle_create(new_dentry, new_path.mnt);
32010 out_drop_write:
32011 - mnt_drop_write(nd.path.mnt);
32012 + mnt_drop_write(new_path.mnt);
32013 out_dput:
32014 -@@ -3142,6 +3298,8 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
32015 ++ putname(to);
32016 + dput(new_dentry);
32017 + mutex_unlock(&new_path.dentry->d_inode->i_mutex);
32018 + path_put(&new_path);
32019 +@@ -3153,6 +3319,8 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
32020 char *to;
32021 int error;
32022
32023 @@ -44693,7 +44581,7 @@ diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
32024 error = user_path_parent(olddfd, oldname, &oldnd, &from);
32025 if (error)
32026 goto exit;
32027 -@@ -3198,6 +3356,12 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
32028 +@@ -3209,6 +3377,12 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
32029 if (new_dentry == trap)
32030 goto exit5;
32031
32032 @@ -44706,7 +44594,7 @@ diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
32033 error = mnt_want_write(oldnd.path.mnt);
32034 if (error)
32035 goto exit5;
32036 -@@ -3207,6 +3371,9 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
32037 +@@ -3218,6 +3392,9 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
32038 goto exit6;
32039 error = vfs_rename(old_dir->d_inode, old_dentry,
32040 new_dir->d_inode, new_dentry);
32041 @@ -44716,7 +44604,7 @@ diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
32042 exit6:
32043 mnt_drop_write(oldnd.path.mnt);
32044 exit5:
32045 -@@ -3232,6 +3399,8 @@ SYSCALL_DEFINE2(rename, const char __use
32046 +@@ -3243,6 +3420,8 @@ SYSCALL_DEFINE2(rename, const char __use
32047
32048 int vfs_readlink(struct dentry *dentry, char __user *buffer, int buflen, const char *link)
32049 {
32050 @@ -44725,7 +44613,7 @@ diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
32051 int len;
32052
32053 len = PTR_ERR(link);
32054 -@@ -3241,7 +3410,14 @@ int vfs_readlink(struct dentry *dentry,
32055 +@@ -3252,7 +3431,14 @@ int vfs_readlink(struct dentry *dentry,
32056 len = strlen(link);
32057 if (len > (unsigned) buflen)
32058 len = buflen;
32059 @@ -44741,9 +44629,9 @@ diff -urNp linux-3.0.9/fs/namei.c linux-3.0.9/fs/namei.c
32060 len = -EFAULT;
32061 out:
32062 return len;
32063 -diff -urNp linux-3.0.9/fs/namespace.c linux-3.0.9/fs/namespace.c
32064 ---- linux-3.0.9/fs/namespace.c 2011-11-11 13:12:24.000000000 -0500
32065 -+++ linux-3.0.9/fs/namespace.c 2011-11-15 20:02:59.000000000 -0500
32066 +diff -urNp linux-3.1.1/fs/namespace.c linux-3.1.1/fs/namespace.c
32067 +--- linux-3.1.1/fs/namespace.c 2011-11-11 15:19:27.000000000 -0500
32068 ++++ linux-3.1.1/fs/namespace.c 2011-11-16 18:40:29.000000000 -0500
32069 @@ -1329,6 +1329,9 @@ static int do_umount(struct vfsmount *mn
32070 if (!(sb->s_flags & MS_RDONLY))
32071 retval = do_remount_sb(sb, MS_RDONLY, NULL, 0);
32072 @@ -44803,9 +44691,9 @@ diff -urNp linux-3.0.9/fs/namespace.c linux-3.0.9/fs/namespace.c
32073 get_fs_root(current->fs, &root);
32074 error = lock_mount(&old);
32075 if (error)
32076 -diff -urNp linux-3.0.9/fs/ncpfs/dir.c linux-3.0.9/fs/ncpfs/dir.c
32077 ---- linux-3.0.9/fs/ncpfs/dir.c 2011-11-11 13:12:24.000000000 -0500
32078 -+++ linux-3.0.9/fs/ncpfs/dir.c 2011-11-15 20:02:59.000000000 -0500
32079 +diff -urNp linux-3.1.1/fs/ncpfs/dir.c linux-3.1.1/fs/ncpfs/dir.c
32080 +--- linux-3.1.1/fs/ncpfs/dir.c 2011-11-11 15:19:27.000000000 -0500
32081 ++++ linux-3.1.1/fs/ncpfs/dir.c 2011-11-16 18:40:29.000000000 -0500
32082 @@ -299,6 +299,8 @@ ncp_lookup_validate(struct dentry *dentr
32083 int res, val = 0, len;
32084 __u8 __name[NCP_MAXPATHLEN + 1];
32085 @@ -44851,9 +44739,9 @@ diff -urNp linux-3.0.9/fs/ncpfs/dir.c linux-3.0.9/fs/ncpfs/dir.c
32086 DPRINTK("ncp_rename: %s/%s to %s/%s\n",
32087 old_dentry->d_parent->d_name.name, old_dentry->d_name.name,
32088 new_dentry->d_parent->d_name.name, new_dentry->d_name.name);
32089 -diff -urNp linux-3.0.9/fs/ncpfs/inode.c linux-3.0.9/fs/ncpfs/inode.c
32090 ---- linux-3.0.9/fs/ncpfs/inode.c 2011-11-11 13:12:24.000000000 -0500
32091 -+++ linux-3.0.9/fs/ncpfs/inode.c 2011-11-15 20:02:59.000000000 -0500
32092 +diff -urNp linux-3.1.1/fs/ncpfs/inode.c linux-3.1.1/fs/ncpfs/inode.c
32093 +--- linux-3.1.1/fs/ncpfs/inode.c 2011-11-11 15:19:27.000000000 -0500
32094 ++++ linux-3.1.1/fs/ncpfs/inode.c 2011-11-16 18:40:29.000000000 -0500
32095 @@ -461,6 +461,8 @@ static int ncp_fill_super(struct super_b
32096 #endif
32097 struct ncp_entry_info finfo;
32098 @@ -44863,9 +44751,21 @@ diff -urNp linux-3.0.9/fs/ncpfs/inode.c linux-3.0.9/fs/ncpfs/inode.c
32099 memset(&data, 0, sizeof(data));
32100 server = kzalloc(sizeof(struct ncp_server), GFP_KERNEL);
32101 if (!server)
32102 -diff -urNp linux-3.0.9/fs/nfs/inode.c linux-3.0.9/fs/nfs/inode.c
32103 ---- linux-3.0.9/fs/nfs/inode.c 2011-11-11 13:12:24.000000000 -0500
32104 -+++ linux-3.0.9/fs/nfs/inode.c 2011-11-15 20:02:59.000000000 -0500
32105 +diff -urNp linux-3.1.1/fs/nfs/blocklayout/blocklayout.c linux-3.1.1/fs/nfs/blocklayout/blocklayout.c
32106 +--- linux-3.1.1/fs/nfs/blocklayout/blocklayout.c 2011-11-11 15:19:27.000000000 -0500
32107 ++++ linux-3.1.1/fs/nfs/blocklayout/blocklayout.c 2011-11-16 18:39:08.000000000 -0500
32108 +@@ -90,7 +90,7 @@ static int is_writable(struct pnfs_block
32109 + */
32110 + struct parallel_io {
32111 + struct kref refcnt;
32112 +- struct rpc_call_ops call_ops;
32113 ++ rpc_call_ops_no_const call_ops;
32114 + void (*pnfs_callback) (void *data);
32115 + void *data;
32116 + };
32117 +diff -urNp linux-3.1.1/fs/nfs/inode.c linux-3.1.1/fs/nfs/inode.c
32118 +--- linux-3.1.1/fs/nfs/inode.c 2011-11-11 15:19:27.000000000 -0500
32119 ++++ linux-3.1.1/fs/nfs/inode.c 2011-11-16 18:39:08.000000000 -0500
32120 @@ -150,7 +150,7 @@ static void nfs_zap_caches_locked(struct
32121 nfsi->attrtimeo = NFS_MINATTRTIMEO(inode);
32122 nfsi->attrtimeo_timestamp = jiffies;
32123 @@ -44875,7 +44775,7 @@ diff -urNp linux-3.0.9/fs/nfs/inode.c linux-3.0.9/fs/nfs/inode.c
32124 if (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode))
32125 nfsi->cache_validity |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA|NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL|NFS_INO_REVAL_PAGECACHE;
32126 else
32127 -@@ -1000,16 +1000,16 @@ static int nfs_size_need_update(const st
32128 +@@ -1002,16 +1002,16 @@ static int nfs_size_need_update(const st
32129 return nfs_size_to_loff_t(fattr->size) > i_size_read(inode);
32130 }
32131
32132 @@ -44895,10 +44795,10 @@ diff -urNp linux-3.0.9/fs/nfs/inode.c linux-3.0.9/fs/nfs/inode.c
32133 }
32134
32135 void nfs_fattr_init(struct nfs_fattr *fattr)
32136 -diff -urNp linux-3.0.9/fs/nfsd/nfs4state.c linux-3.0.9/fs/nfsd/nfs4state.c
32137 ---- linux-3.0.9/fs/nfsd/nfs4state.c 2011-11-11 13:12:24.000000000 -0500
32138 -+++ linux-3.0.9/fs/nfsd/nfs4state.c 2011-11-15 20:02:59.000000000 -0500
32139 -@@ -3804,6 +3804,8 @@ nfsd4_lock(struct svc_rqst *rqstp, struc
32140 +diff -urNp linux-3.1.1/fs/nfsd/nfs4state.c linux-3.1.1/fs/nfsd/nfs4state.c
32141 +--- linux-3.1.1/fs/nfsd/nfs4state.c 2011-11-11 15:19:27.000000000 -0500
32142 ++++ linux-3.1.1/fs/nfsd/nfs4state.c 2011-11-16 18:40:29.000000000 -0500
32143 +@@ -3999,6 +3999,8 @@ nfsd4_lock(struct svc_rqst *rqstp, struc
32144 unsigned int strhashval;
32145 int err;
32146
32147 @@ -44907,10 +44807,10 @@ diff -urNp linux-3.0.9/fs/nfsd/nfs4state.c linux-3.0.9/fs/nfsd/nfs4state.c
32148 dprintk("NFSD: nfsd4_lock: start=%Ld length=%Ld\n",
32149 (long long) lock->lk_offset,
32150 (long long) lock->lk_length);
32151 -diff -urNp linux-3.0.9/fs/nfsd/nfs4xdr.c linux-3.0.9/fs/nfsd/nfs4xdr.c
32152 ---- linux-3.0.9/fs/nfsd/nfs4xdr.c 2011-11-11 13:12:24.000000000 -0500
32153 -+++ linux-3.0.9/fs/nfsd/nfs4xdr.c 2011-11-15 20:02:59.000000000 -0500
32154 -@@ -1800,6 +1800,8 @@ nfsd4_encode_fattr(struct svc_fh *fhp, s
32155 +diff -urNp linux-3.1.1/fs/nfsd/nfs4xdr.c linux-3.1.1/fs/nfsd/nfs4xdr.c
32156 +--- linux-3.1.1/fs/nfsd/nfs4xdr.c 2011-11-11 15:19:27.000000000 -0500
32157 ++++ linux-3.1.1/fs/nfsd/nfs4xdr.c 2011-11-16 18:40:29.000000000 -0500
32158 +@@ -1875,6 +1875,8 @@ nfsd4_encode_fattr(struct svc_fh *fhp, s
32159 .dentry = dentry,
32160 };
32161
32162 @@ -44919,9 +44819,9 @@ diff -urNp linux-3.0.9/fs/nfsd/nfs4xdr.c linux-3.0.9/fs/nfsd/nfs4xdr.c
32163 BUG_ON(bmval1 & NFSD_WRITEONLY_ATTRS_WORD1);
32164 BUG_ON(bmval0 & ~nfsd_suppattrs0(minorversion));
32165 BUG_ON(bmval1 & ~nfsd_suppattrs1(minorversion));
32166 -diff -urNp linux-3.0.9/fs/nfsd/vfs.c linux-3.0.9/fs/nfsd/vfs.c
32167 ---- linux-3.0.9/fs/nfsd/vfs.c 2011-11-11 13:12:24.000000000 -0500
32168 -+++ linux-3.0.9/fs/nfsd/vfs.c 2011-11-15 20:02:59.000000000 -0500
32169 +diff -urNp linux-3.1.1/fs/nfsd/vfs.c linux-3.1.1/fs/nfsd/vfs.c
32170 +--- linux-3.1.1/fs/nfsd/vfs.c 2011-11-11 15:19:27.000000000 -0500
32171 ++++ linux-3.1.1/fs/nfsd/vfs.c 2011-11-16 18:39:08.000000000 -0500
32172 @@ -896,7 +896,7 @@ nfsd_vfs_read(struct svc_rqst *rqstp, st
32173 } else {
32174 oldfs = get_fs();
32175 @@ -44949,9 +44849,9 @@ diff -urNp linux-3.0.9/fs/nfsd/vfs.c linux-3.0.9/fs/nfsd/vfs.c
32176 set_fs(oldfs);
32177
32178 if (host_err < 0)
32179 -diff -urNp linux-3.0.9/fs/notify/fanotify/fanotify_user.c linux-3.0.9/fs/notify/fanotify/fanotify_user.c
32180 ---- linux-3.0.9/fs/notify/fanotify/fanotify_user.c 2011-11-11 13:12:24.000000000 -0500
32181 -+++ linux-3.0.9/fs/notify/fanotify/fanotify_user.c 2011-11-15 20:02:59.000000000 -0500
32182 +diff -urNp linux-3.1.1/fs/notify/fanotify/fanotify_user.c linux-3.1.1/fs/notify/fanotify/fanotify_user.c
32183 +--- linux-3.1.1/fs/notify/fanotify/fanotify_user.c 2011-11-11 15:19:27.000000000 -0500
32184 ++++ linux-3.1.1/fs/notify/fanotify/fanotify_user.c 2011-11-16 18:39:08.000000000 -0500
32185 @@ -276,7 +276,8 @@ static ssize_t copy_event_to_user(struct
32186 goto out_close_fd;
32187
32188 @@ -44962,9 +44862,9 @@ diff -urNp linux-3.0.9/fs/notify/fanotify/fanotify_user.c linux-3.0.9/fs/notify/
32189 fanotify_event_metadata.event_len))
32190 goto out_kill_access_response;
32191
32192 -diff -urNp linux-3.0.9/fs/notify/notification.c linux-3.0.9/fs/notify/notification.c
32193 ---- linux-3.0.9/fs/notify/notification.c 2011-11-11 13:12:24.000000000 -0500
32194 -+++ linux-3.0.9/fs/notify/notification.c 2011-11-15 20:02:59.000000000 -0500
32195 +diff -urNp linux-3.1.1/fs/notify/notification.c linux-3.1.1/fs/notify/notification.c
32196 +--- linux-3.1.1/fs/notify/notification.c 2011-11-11 15:19:27.000000000 -0500
32197 ++++ linux-3.1.1/fs/notify/notification.c 2011-11-16 18:39:08.000000000 -0500
32198 @@ -57,7 +57,7 @@ static struct kmem_cache *fsnotify_event
32199 * get set to 0 so it will never get 'freed'
32200 */
32201 @@ -44983,9 +44883,9 @@ diff -urNp linux-3.0.9/fs/notify/notification.c linux-3.0.9/fs/notify/notificati
32202 }
32203 EXPORT_SYMBOL_GPL(fsnotify_get_cookie);
32204
32205 -diff -urNp linux-3.0.9/fs/ntfs/dir.c linux-3.0.9/fs/ntfs/dir.c
32206 ---- linux-3.0.9/fs/ntfs/dir.c 2011-11-11 13:12:24.000000000 -0500
32207 -+++ linux-3.0.9/fs/ntfs/dir.c 2011-11-15 20:02:59.000000000 -0500
32208 +diff -urNp linux-3.1.1/fs/ntfs/dir.c linux-3.1.1/fs/ntfs/dir.c
32209 +--- linux-3.1.1/fs/ntfs/dir.c 2011-11-11 15:19:27.000000000 -0500
32210 ++++ linux-3.1.1/fs/ntfs/dir.c 2011-11-16 18:39:08.000000000 -0500
32211 @@ -1329,7 +1329,7 @@ find_next_index_buffer:
32212 ia = (INDEX_ALLOCATION*)(kaddr + (ia_pos & ~PAGE_CACHE_MASK &
32213 ~(s64)(ndir->itype.index.block_size - 1)));
32214 @@ -44995,10 +44895,10 @@ diff -urNp linux-3.0.9/fs/ntfs/dir.c linux-3.0.9/fs/ntfs/dir.c
32215 ntfs_error(sb, "Out of bounds check failed. Corrupt directory "
32216 "inode 0x%lx or driver bug.", vdir->i_ino);
32217 goto err_out;
32218 -diff -urNp linux-3.0.9/fs/ntfs/file.c linux-3.0.9/fs/ntfs/file.c
32219 ---- linux-3.0.9/fs/ntfs/file.c 2011-11-11 13:12:24.000000000 -0500
32220 -+++ linux-3.0.9/fs/ntfs/file.c 2011-11-15 20:02:59.000000000 -0500
32221 -@@ -2222,6 +2222,6 @@ const struct inode_operations ntfs_file_
32222 +diff -urNp linux-3.1.1/fs/ntfs/file.c linux-3.1.1/fs/ntfs/file.c
32223 +--- linux-3.1.1/fs/ntfs/file.c 2011-11-11 15:19:27.000000000 -0500
32224 ++++ linux-3.1.1/fs/ntfs/file.c 2011-11-16 18:39:08.000000000 -0500
32225 +@@ -2229,6 +2229,6 @@ const struct inode_operations ntfs_file_
32226 #endif /* NTFS_RW */
32227 };
32228
32229 @@ -45007,9 +44907,9 @@ diff -urNp linux-3.0.9/fs/ntfs/file.c linux-3.0.9/fs/ntfs/file.c
32230
32231 -const struct inode_operations ntfs_empty_inode_ops = {};
32232 +const struct inode_operations ntfs_empty_inode_ops __read_only;
32233 -diff -urNp linux-3.0.9/fs/ocfs2/localalloc.c linux-3.0.9/fs/ocfs2/localalloc.c
32234 ---- linux-3.0.9/fs/ocfs2/localalloc.c 2011-11-11 13:12:24.000000000 -0500
32235 -+++ linux-3.0.9/fs/ocfs2/localalloc.c 2011-11-15 20:02:59.000000000 -0500
32236 +diff -urNp linux-3.1.1/fs/ocfs2/localalloc.c linux-3.1.1/fs/ocfs2/localalloc.c
32237 +--- linux-3.1.1/fs/ocfs2/localalloc.c 2011-11-11 15:19:27.000000000 -0500
32238 ++++ linux-3.1.1/fs/ocfs2/localalloc.c 2011-11-16 18:39:08.000000000 -0500
32239 @@ -1283,7 +1283,7 @@ static int ocfs2_local_alloc_slide_windo
32240 goto bail;
32241 }
32242 @@ -45019,9 +44919,9 @@ diff -urNp linux-3.0.9/fs/ocfs2/localalloc.c linux-3.0.9/fs/ocfs2/localalloc.c
32243
32244 bail:
32245 if (handle)
32246 -diff -urNp linux-3.0.9/fs/ocfs2/namei.c linux-3.0.9/fs/ocfs2/namei.c
32247 ---- linux-3.0.9/fs/ocfs2/namei.c 2011-11-11 13:12:24.000000000 -0500
32248 -+++ linux-3.0.9/fs/ocfs2/namei.c 2011-11-15 20:02:59.000000000 -0500
32249 +diff -urNp linux-3.1.1/fs/ocfs2/namei.c linux-3.1.1/fs/ocfs2/namei.c
32250 +--- linux-3.1.1/fs/ocfs2/namei.c 2011-11-11 15:19:27.000000000 -0500
32251 ++++ linux-3.1.1/fs/ocfs2/namei.c 2011-11-16 18:40:29.000000000 -0500
32252 @@ -1063,6 +1063,8 @@ static int ocfs2_rename(struct inode *ol
32253 struct ocfs2_dir_lookup_result orphan_insert = { NULL, };
32254 struct ocfs2_dir_lookup_result target_insert = { NULL, };
32255 @@ -45031,9 +44931,9 @@ diff -urNp linux-3.0.9/fs/ocfs2/namei.c linux-3.0.9/fs/ocfs2/namei.c
32256 /* At some point it might be nice to break this function up a
32257 * bit. */
32258
32259 -diff -urNp linux-3.0.9/fs/ocfs2/ocfs2.h linux-3.0.9/fs/ocfs2/ocfs2.h
32260 ---- linux-3.0.9/fs/ocfs2/ocfs2.h 2011-11-11 13:12:24.000000000 -0500
32261 -+++ linux-3.0.9/fs/ocfs2/ocfs2.h 2011-11-15 20:02:59.000000000 -0500
32262 +diff -urNp linux-3.1.1/fs/ocfs2/ocfs2.h linux-3.1.1/fs/ocfs2/ocfs2.h
32263 +--- linux-3.1.1/fs/ocfs2/ocfs2.h 2011-11-11 15:19:27.000000000 -0500
32264 ++++ linux-3.1.1/fs/ocfs2/ocfs2.h 2011-11-16 18:39:08.000000000 -0500
32265 @@ -235,11 +235,11 @@ enum ocfs2_vol_state
32266
32267 struct ocfs2_alloc_stats
32268 @@ -45051,9 +44951,9 @@ diff -urNp linux-3.0.9/fs/ocfs2/ocfs2.h linux-3.0.9/fs/ocfs2/ocfs2.h
32269 };
32270
32271 enum ocfs2_local_alloc_state
32272 -diff -urNp linux-3.0.9/fs/ocfs2/suballoc.c linux-3.0.9/fs/ocfs2/suballoc.c
32273 ---- linux-3.0.9/fs/ocfs2/suballoc.c 2011-11-11 13:12:24.000000000 -0500
32274 -+++ linux-3.0.9/fs/ocfs2/suballoc.c 2011-11-15 20:02:59.000000000 -0500
32275 +diff -urNp linux-3.1.1/fs/ocfs2/suballoc.c linux-3.1.1/fs/ocfs2/suballoc.c
32276 +--- linux-3.1.1/fs/ocfs2/suballoc.c 2011-11-11 15:19:27.000000000 -0500
32277 ++++ linux-3.1.1/fs/ocfs2/suballoc.c 2011-11-16 18:39:08.000000000 -0500
32278 @@ -872,7 +872,7 @@ static int ocfs2_reserve_suballoc_bits(s
32279 mlog_errno(status);
32280 goto bail;
32281 @@ -45108,9 +45008,9 @@ diff -urNp linux-3.0.9/fs/ocfs2/suballoc.c linux-3.0.9/fs/ocfs2/suballoc.c
32282 *num_clusters = res.sr_bits;
32283 }
32284 }
32285 -diff -urNp linux-3.0.9/fs/ocfs2/super.c linux-3.0.9/fs/ocfs2/super.c
32286 ---- linux-3.0.9/fs/ocfs2/super.c 2011-11-11 13:12:24.000000000 -0500
32287 -+++ linux-3.0.9/fs/ocfs2/super.c 2011-11-15 20:02:59.000000000 -0500
32288 +diff -urNp linux-3.1.1/fs/ocfs2/super.c linux-3.1.1/fs/ocfs2/super.c
32289 +--- linux-3.1.1/fs/ocfs2/super.c 2011-11-11 15:19:27.000000000 -0500
32290 ++++ linux-3.1.1/fs/ocfs2/super.c 2011-11-16 18:39:08.000000000 -0500
32291 @@ -300,11 +300,11 @@ static int ocfs2_osb_dump(struct ocfs2_s
32292 "%10s => GlobalAllocs: %d LocalAllocs: %d "
32293 "SubAllocs: %d LAWinMoves: %d SAExtends: %d\n",
32294 @@ -45145,9 +45045,9 @@ diff -urNp linux-3.0.9/fs/ocfs2/super.c linux-3.0.9/fs/ocfs2/super.c
32295
32296 /* Copy the blockcheck stats from the superblock probe */
32297 osb->osb_ecc_stats = *stats;
32298 -diff -urNp linux-3.0.9/fs/ocfs2/symlink.c linux-3.0.9/fs/ocfs2/symlink.c
32299 ---- linux-3.0.9/fs/ocfs2/symlink.c 2011-11-11 13:12:24.000000000 -0500
32300 -+++ linux-3.0.9/fs/ocfs2/symlink.c 2011-11-15 20:02:59.000000000 -0500
32301 +diff -urNp linux-3.1.1/fs/ocfs2/symlink.c linux-3.1.1/fs/ocfs2/symlink.c
32302 +--- linux-3.1.1/fs/ocfs2/symlink.c 2011-11-11 15:19:27.000000000 -0500
32303 ++++ linux-3.1.1/fs/ocfs2/symlink.c 2011-11-16 18:39:08.000000000 -0500
32304 @@ -142,7 +142,7 @@ bail:
32305
32306 static void ocfs2_fast_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie)
32307 @@ -45157,9 +45057,9 @@ diff -urNp linux-3.0.9/fs/ocfs2/symlink.c linux-3.0.9/fs/ocfs2/symlink.c
32308 if (!IS_ERR(link))
32309 kfree(link);
32310 }
32311 -diff -urNp linux-3.0.9/fs/open.c linux-3.0.9/fs/open.c
32312 ---- linux-3.0.9/fs/open.c 2011-11-11 13:12:24.000000000 -0500
32313 -+++ linux-3.0.9/fs/open.c 2011-11-15 20:02:59.000000000 -0500
32314 +diff -urNp linux-3.1.1/fs/open.c linux-3.1.1/fs/open.c
32315 +--- linux-3.1.1/fs/open.c 2011-11-11 15:19:27.000000000 -0500
32316 ++++ linux-3.1.1/fs/open.c 2011-11-16 23:40:57.000000000 -0500
32317 @@ -112,6 +112,10 @@ static long do_sys_truncate(const char _
32318 error = locks_verify_truncate(inode, NULL, length);
32319 if (!error)
32320 @@ -45218,59 +45118,24 @@ diff -urNp linux-3.0.9/fs/open.c linux-3.0.9/fs/open.c
32321 error = 0;
32322 dput_and_out:
32323 path_put(&path);
32324 -@@ -466,12 +488,25 @@ SYSCALL_DEFINE2(fchmod, unsigned int, fd
32325 - err = mnt_want_write_file(file);
32326 - if (err)
32327 - goto out_putf;
32328 -+
32329 - mutex_lock(&inode->i_mutex);
32330 -+
32331 -+ if (!gr_acl_handle_fchmod(dentry, file->f_vfsmnt, mode)) {
32332 -+ err = -EACCES;
32333 -+ goto out_unlock;
32334 -+ }
32335 -+
32336 - err = security_path_chmod(dentry, file->f_vfsmnt, mode);
32337 - if (err)
32338 - goto out_unlock;
32339 - if (mode == (mode_t) -1)
32340 - mode = inode->i_mode;
32341 -+
32342 -+ if (gr_handle_chroot_chmod(dentry, file->f_vfsmnt, mode)) {
32343 -+ err = -EACCES;
32344 -+ goto out_unlock;
32345 -+ }
32346 -+
32347 - newattrs.ia_mode = (mode & S_IALLUGO) | (inode->i_mode & ~S_IALLUGO);
32348 - newattrs.ia_valid = ATTR_MODE | ATTR_CTIME;
32349 - err = notify_change(dentry, &newattrs);
32350 -@@ -499,12 +534,25 @@ SYSCALL_DEFINE3(fchmodat, int, dfd, cons
32351 - error = mnt_want_write(path.mnt);
32352 +@@ -456,6 +478,16 @@ static int chmod_common(struct path *pat
32353 if (error)
32354 - goto dput_and_out;
32355 -+
32356 + return error;
32357 mutex_lock(&inode->i_mutex);
32358 +
32359 -+ if (!gr_acl_handle_chmod(path.dentry, path.mnt, mode)) {
32360 ++ if (!gr_acl_handle_fchmod(path->dentry, path->mnt, mode)) {
32361 + error = -EACCES;
32362 + goto out_unlock;
32363 + }
32364 -+
32365 - error = security_path_chmod(path.dentry, path.mnt, mode);
32366 - if (error)
32367 - goto out_unlock;
32368 - if (mode == (mode_t) -1)
32369 - mode = inode->i_mode;
32370 -+
32371 -+ if (gr_handle_chroot_chmod(path.dentry, path.mnt, mode)) {
32372 ++ if (gr_handle_chroot_chmod(path->dentry, path->mnt, mode)) {
32373 + error = -EACCES;
32374 + goto out_unlock;
32375 + }
32376 +
32377 - newattrs.ia_mode = (mode & S_IALLUGO) | (inode->i_mode & ~S_IALLUGO);
32378 - newattrs.ia_valid = ATTR_MODE | ATTR_CTIME;
32379 - error = notify_change(path.dentry, &newattrs);
32380 -@@ -528,6 +576,9 @@ static int chown_common(struct path *pat
32381 + error = security_path_chmod(path->dentry, path->mnt, mode);
32382 + if (error)
32383 + goto out_unlock;
32384 +@@ -506,6 +538,9 @@ static int chown_common(struct path *pat
32385 int error;
32386 struct iattr newattrs;
32387
32388 @@ -45280,21 +45145,19 @@ diff -urNp linux-3.0.9/fs/open.c linux-3.0.9/fs/open.c
32389 newattrs.ia_valid = ATTR_CTIME;
32390 if (user != (uid_t) -1) {
32391 newattrs.ia_valid |= ATTR_UID;
32392 -@@ -998,7 +1049,10 @@ long do_sys_open(int dfd, const char __u
32393 +@@ -976,7 +1011,8 @@ long do_sys_open(int dfd, const char __u
32394 if (!IS_ERR(tmp)) {
32395 fd = get_unused_fd_flags(flags);
32396 if (fd >= 0) {
32397 - struct file *f = do_filp_open(dfd, tmp, &op, lookup);
32398 + struct file *f;
32399 -+ /* don't allow to be set by userland */
32400 -+ flags &= ~FMODE_GREXEC;
32401 + f = do_filp_open(dfd, tmp, &op, lookup);
32402 if (IS_ERR(f)) {
32403 put_unused_fd(fd);
32404 fd = PTR_ERR(f);
32405 -diff -urNp linux-3.0.9/fs/partitions/ldm.c linux-3.0.9/fs/partitions/ldm.c
32406 ---- linux-3.0.9/fs/partitions/ldm.c 2011-11-11 13:12:24.000000000 -0500
32407 -+++ linux-3.0.9/fs/partitions/ldm.c 2011-11-15 20:02:59.000000000 -0500
32408 +diff -urNp linux-3.1.1/fs/partitions/ldm.c linux-3.1.1/fs/partitions/ldm.c
32409 +--- linux-3.1.1/fs/partitions/ldm.c 2011-11-11 15:19:27.000000000 -0500
32410 ++++ linux-3.1.1/fs/partitions/ldm.c 2011-11-16 18:40:29.000000000 -0500
32411 @@ -1311,6 +1311,7 @@ static bool ldm_frag_add (const u8 *data
32412 ldm_error ("A VBLK claims to have %d parts.", num);
32413 return false;
32414 @@ -45312,9 +45175,9 @@ diff -urNp linux-3.0.9/fs/partitions/ldm.c linux-3.0.9/fs/partitions/ldm.c
32415 if (!f) {
32416 ldm_crit ("Out of memory.");
32417 return false;
32418 -diff -urNp linux-3.0.9/fs/pipe.c linux-3.0.9/fs/pipe.c
32419 ---- linux-3.0.9/fs/pipe.c 2011-11-11 13:12:24.000000000 -0500
32420 -+++ linux-3.0.9/fs/pipe.c 2011-11-15 20:02:59.000000000 -0500
32421 +diff -urNp linux-3.1.1/fs/pipe.c linux-3.1.1/fs/pipe.c
32422 +--- linux-3.1.1/fs/pipe.c 2011-11-11 15:19:27.000000000 -0500
32423 ++++ linux-3.1.1/fs/pipe.c 2011-11-16 18:40:29.000000000 -0500
32424 @@ -420,9 +420,9 @@ redo:
32425 }
32426 if (bufs) /* More to do? */
32427 @@ -45438,9 +45301,9 @@ diff -urNp linux-3.0.9/fs/pipe.c linux-3.0.9/fs/pipe.c
32428 inode->i_fop = &rdwr_pipefifo_fops;
32429
32430 /*
32431 -diff -urNp linux-3.0.9/fs/proc/array.c linux-3.0.9/fs/proc/array.c
32432 ---- linux-3.0.9/fs/proc/array.c 2011-11-11 13:12:24.000000000 -0500
32433 -+++ linux-3.0.9/fs/proc/array.c 2011-11-15 20:02:59.000000000 -0500
32434 +diff -urNp linux-3.1.1/fs/proc/array.c linux-3.1.1/fs/proc/array.c
32435 +--- linux-3.1.1/fs/proc/array.c 2011-11-11 15:19:27.000000000 -0500
32436 ++++ linux-3.1.1/fs/proc/array.c 2011-11-16 18:40:29.000000000 -0500
32437 @@ -60,6 +60,7 @@
32438 #include <linux/tty.h>
32439 #include <linux/string.h>
32440 @@ -45564,9 +45427,9 @@ diff -urNp linux-3.0.9/fs/proc/array.c linux-3.0.9/fs/proc/array.c
32441 + return sprintf(buffer, "%pI4\n", &curr_ip);
32442 +}
32443 +#endif
32444 -diff -urNp linux-3.0.9/fs/proc/base.c linux-3.0.9/fs/proc/base.c
32445 ---- linux-3.0.9/fs/proc/base.c 2011-11-11 13:12:24.000000000 -0500
32446 -+++ linux-3.0.9/fs/proc/base.c 2011-11-15 20:02:59.000000000 -0500
32447 +diff -urNp linux-3.1.1/fs/proc/base.c linux-3.1.1/fs/proc/base.c
32448 +--- linux-3.1.1/fs/proc/base.c 2011-11-11 15:19:27.000000000 -0500
32449 ++++ linux-3.1.1/fs/proc/base.c 2011-11-16 19:25:48.000000000 -0500
32450 @@ -107,6 +107,22 @@ struct pid_entry {
32451 union proc_op op;
32452 };
32453 @@ -45697,7 +45560,7 @@ diff -urNp linux-3.0.9/fs/proc/base.c linux-3.0.9/fs/proc/base.c
32454 ret = -ENOMEM;
32455 page = (char *)__get_free_page(GFP_TEMPORARY);
32456 if (!page)
32457 -@@ -1614,7 +1658,7 @@ static void *proc_pid_follow_link(struct
32458 +@@ -1613,7 +1657,7 @@ static void *proc_pid_follow_link(struct
32459 path_put(&nd->path);
32460
32461 /* Are we allowed to snoop on the tasks file descriptors? */
32462 @@ -45706,7 +45569,7 @@ diff -urNp linux-3.0.9/fs/proc/base.c linux-3.0.9/fs/proc/base.c
32463 goto out;
32464
32465 error = PROC_I(inode)->op.proc_get_link(inode, &nd->path);
32466 -@@ -1653,8 +1697,18 @@ static int proc_pid_readlink(struct dent
32467 +@@ -1652,8 +1696,18 @@ static int proc_pid_readlink(struct dent
32468 struct path path;
32469
32470 /* Are we allowed to snoop on the tasks file descriptors? */
32471 @@ -45727,7 +45590,7 @@ diff -urNp linux-3.0.9/fs/proc/base.c linux-3.0.9/fs/proc/base.c
32472
32473 error = PROC_I(inode)->op.proc_get_link(inode, &path);
32474 if (error)
32475 -@@ -1719,7 +1773,11 @@ struct inode *proc_pid_make_inode(struct
32476 +@@ -1718,7 +1772,11 @@ struct inode *proc_pid_make_inode(struct
32477 rcu_read_lock();
32478 cred = __task_cred(task);
32479 inode->i_uid = cred->euid;
32480 @@ -45739,7 +45602,7 @@ diff -urNp linux-3.0.9/fs/proc/base.c linux-3.0.9/fs/proc/base.c
32481 rcu_read_unlock();
32482 }
32483 security_task_to_inode(task, inode);
32484 -@@ -1737,6 +1795,9 @@ int pid_getattr(struct vfsmount *mnt, st
32485 +@@ -1736,6 +1794,9 @@ int pid_getattr(struct vfsmount *mnt, st
32486 struct inode *inode = dentry->d_inode;
32487 struct task_struct *task;
32488 const struct cred *cred;
32489 @@ -45749,7 +45612,7 @@ diff -urNp linux-3.0.9/fs/proc/base.c linux-3.0.9/fs/proc/base.c
32490
32491 generic_fillattr(inode, stat);
32492
32493 -@@ -1744,13 +1805,41 @@ int pid_getattr(struct vfsmount *mnt, st
32494 +@@ -1743,13 +1804,41 @@ int pid_getattr(struct vfsmount *mnt, st
32495 stat->uid = 0;
32496 stat->gid = 0;
32497 task = pid_task(proc_pid(inode), PIDTYPE_PID);
32498 @@ -45792,7 +45655,7 @@ diff -urNp linux-3.0.9/fs/proc/base.c linux-3.0.9/fs/proc/base.c
32499 }
32500 rcu_read_unlock();
32501 return 0;
32502 -@@ -1787,11 +1876,20 @@ int pid_revalidate(struct dentry *dentry
32503 +@@ -1786,11 +1875,20 @@ int pid_revalidate(struct dentry *dentry
32504
32505 if (task) {
32506 if ((inode->i_mode == (S_IFDIR|S_IRUGO|S_IXUGO)) ||
32507 @@ -45813,7 +45676,7 @@ diff -urNp linux-3.0.9/fs/proc/base.c linux-3.0.9/fs/proc/base.c
32508 rcu_read_unlock();
32509 } else {
32510 inode->i_uid = 0;
32511 -@@ -1909,7 +2007,8 @@ static int proc_fd_info(struct inode *in
32512 +@@ -1908,7 +2006,8 @@ static int proc_fd_info(struct inode *in
32513 int fd = proc_fd(inode);
32514
32515 if (task) {
32516 @@ -45823,12 +45686,12 @@ diff -urNp linux-3.0.9/fs/proc/base.c linux-3.0.9/fs/proc/base.c
32517 put_task_struct(task);
32518 }
32519 if (files) {
32520 -@@ -2177,11 +2276,21 @@ static const struct file_operations proc
32521 +@@ -2176,11 +2275,21 @@ static const struct file_operations proc
32522 */
32523 - static int proc_fd_permission(struct inode *inode, int mask, unsigned int flags)
32524 + static int proc_fd_permission(struct inode *inode, int mask)
32525 {
32526 + struct task_struct *task;
32527 - int rv = generic_permission(inode, mask, flags, NULL);
32528 + int rv = generic_permission(inode, mask);
32529 - if (rv == 0)
32530 - return 0;
32531 +
32532 @@ -45847,7 +45710,7 @@ diff -urNp linux-3.0.9/fs/proc/base.c linux-3.0.9/fs/proc/base.c
32533 return rv;
32534 }
32535
32536 -@@ -2291,6 +2400,9 @@ static struct dentry *proc_pident_lookup
32537 +@@ -2290,6 +2399,9 @@ static struct dentry *proc_pident_lookup
32538 if (!task)
32539 goto out_no_task;
32540
32541 @@ -45857,7 +45720,7 @@ diff -urNp linux-3.0.9/fs/proc/base.c linux-3.0.9/fs/proc/base.c
32542 /*
32543 * Yes, it does not scale. And it should not. Don't add
32544 * new entries into /proc/<tgid>/ without very good reasons.
32545 -@@ -2335,6 +2447,9 @@ static int proc_pident_readdir(struct fi
32546 +@@ -2334,6 +2446,9 @@ static int proc_pident_readdir(struct fi
32547 if (!task)
32548 goto out_no_task;
32549
32550 @@ -45867,7 +45730,7 @@ diff -urNp linux-3.0.9/fs/proc/base.c linux-3.0.9/fs/proc/base.c
32551 ret = 0;
32552 i = filp->f_pos;
32553 switch (i) {
32554 -@@ -2605,7 +2720,7 @@ static void *proc_self_follow_link(struc
32555 +@@ -2604,7 +2719,7 @@ static void *proc_self_follow_link(struc
32556 static void proc_self_put_link(struct dentry *dentry, struct nameidata *nd,
32557 void *cookie)
32558 {
32559 @@ -45876,7 +45739,7 @@ diff -urNp linux-3.0.9/fs/proc/base.c linux-3.0.9/fs/proc/base.c
32560 if (!IS_ERR(s))
32561 __putname(s);
32562 }
32563 -@@ -2664,6 +2779,7 @@ static struct dentry *proc_base_instanti
32564 +@@ -2663,6 +2778,7 @@ static struct dentry *proc_base_instanti
32565 if (p->fop)
32566 inode->i_fop = p->fop;
32567 ei->op = p->op;
32568 @@ -45884,7 +45747,7 @@ diff -urNp linux-3.0.9/fs/proc/base.c linux-3.0.9/fs/proc/base.c
32569 d_add(dentry, inode);
32570 error = NULL;
32571 out:
32572 -@@ -2803,7 +2919,7 @@ static const struct pid_entry tgid_base_
32573 +@@ -2802,7 +2918,7 @@ static const struct pid_entry tgid_base_
32574 REG("autogroup", S_IRUGO|S_IWUSR, proc_pid_sched_autogroup_operations),
32575 #endif
32576 REG("comm", S_IRUGO|S_IWUSR, proc_pid_set_comm_operations),
32577 @@ -45893,7 +45756,7 @@ diff -urNp linux-3.0.9/fs/proc/base.c linux-3.0.9/fs/proc/base.c
32578 INF("syscall", S_IRUGO, proc_pid_syscall),
32579 #endif
32580 INF("cmdline", S_IRUGO, proc_pid_cmdline),
32581 -@@ -2828,10 +2944,10 @@ static const struct pid_entry tgid_base_
32582 +@@ -2827,10 +2943,10 @@ static const struct pid_entry tgid_base_
32583 #ifdef CONFIG_SECURITY
32584 DIR("attr", S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations),
32585 #endif
32586 @@ -45906,7 +45769,7 @@ diff -urNp linux-3.0.9/fs/proc/base.c linux-3.0.9/fs/proc/base.c
32587 ONE("stack", S_IRUGO, proc_pid_stack),
32588 #endif
32589 #ifdef CONFIG_SCHEDSTATS
32590 -@@ -2865,6 +2981,9 @@ static const struct pid_entry tgid_base_
32591 +@@ -2864,6 +2980,9 @@ static const struct pid_entry tgid_base_
32592 #ifdef CONFIG_HARDWALL
32593 INF("hardwall", S_IRUGO, proc_pid_hardwall),
32594 #endif
32595 @@ -45916,7 +45779,7 @@ diff -urNp linux-3.0.9/fs/proc/base.c linux-3.0.9/fs/proc/base.c
32596 };
32597
32598 static int proc_tgid_base_readdir(struct file * filp,
32599 -@@ -2990,7 +3109,14 @@ static struct dentry *proc_pid_instantia
32600 +@@ -2989,7 +3108,14 @@ static struct dentry *proc_pid_instantia
32601 if (!inode)
32602 goto out;
32603
32604 @@ -45931,7 +45794,7 @@ diff -urNp linux-3.0.9/fs/proc/base.c linux-3.0.9/fs/proc/base.c
32605 inode->i_op = &proc_tgid_base_inode_operations;
32606 inode->i_fop = &proc_tgid_base_operations;
32607 inode->i_flags|=S_IMMUTABLE;
32608 -@@ -3032,7 +3158,14 @@ struct dentry *proc_pid_lookup(struct in
32609 +@@ -3031,7 +3157,14 @@ struct dentry *proc_pid_lookup(struct in
32610 if (!task)
32611 goto out;
32612
32613 @@ -45946,7 +45809,7 @@ diff -urNp linux-3.0.9/fs/proc/base.c linux-3.0.9/fs/proc/base.c
32614 put_task_struct(task);
32615 out:
32616 return result;
32617 -@@ -3097,6 +3230,11 @@ int proc_pid_readdir(struct file * filp,
32618 +@@ -3096,6 +3229,11 @@ int proc_pid_readdir(struct file * filp,
32619 {
32620 unsigned int nr;
32621 struct task_struct *reaper;
32622 @@ -45958,7 +45821,7 @@ diff -urNp linux-3.0.9/fs/proc/base.c linux-3.0.9/fs/proc/base.c
32623 struct tgid_iter iter;
32624 struct pid_namespace *ns;
32625
32626 -@@ -3120,8 +3258,27 @@ int proc_pid_readdir(struct file * filp,
32627 +@@ -3119,8 +3257,27 @@ int proc_pid_readdir(struct file * filp,
32628 for (iter = next_tgid(ns, iter);
32629 iter.task;
32630 iter.tgid += 1, iter = next_tgid(ns, iter)) {
32631 @@ -45987,7 +45850,7 @@ diff -urNp linux-3.0.9/fs/proc/base.c linux-3.0.9/fs/proc/base.c
32632 put_task_struct(iter.task);
32633 goto out;
32634 }
32635 -@@ -3149,7 +3306,7 @@ static const struct pid_entry tid_base_s
32636 +@@ -3148,7 +3305,7 @@ static const struct pid_entry tid_base_s
32637 REG("sched", S_IRUGO|S_IWUSR, proc_pid_sched_operations),
32638 #endif
32639 REG("comm", S_IRUGO|S_IWUSR, proc_pid_set_comm_operations),
32640 @@ -45996,7 +45859,7 @@ diff -urNp linux-3.0.9/fs/proc/base.c linux-3.0.9/fs/proc/base.c
32641 INF("syscall", S_IRUGO, proc_pid_syscall),
32642 #endif
32643 INF("cmdline", S_IRUGO, proc_pid_cmdline),
32644 -@@ -3173,10 +3330,10 @@ static const struct pid_entry tid_base_s
32645 +@@ -3172,10 +3329,10 @@ static const struct pid_entry tid_base_s
32646 #ifdef CONFIG_SECURITY
32647 DIR("attr", S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations),
32648 #endif
32649 @@ -46009,9 +45872,9 @@ diff -urNp linux-3.0.9/fs/proc/base.c linux-3.0.9/fs/proc/base.c
32650 ONE("stack", S_IRUGO, proc_pid_stack),
32651 #endif
32652 #ifdef CONFIG_SCHEDSTATS
32653 -diff -urNp linux-3.0.9/fs/proc/cmdline.c linux-3.0.9/fs/proc/cmdline.c
32654 ---- linux-3.0.9/fs/proc/cmdline.c 2011-11-11 13:12:24.000000000 -0500
32655 -+++ linux-3.0.9/fs/proc/cmdline.c 2011-11-15 20:02:59.000000000 -0500
32656 +diff -urNp linux-3.1.1/fs/proc/cmdline.c linux-3.1.1/fs/proc/cmdline.c
32657 +--- linux-3.1.1/fs/proc/cmdline.c 2011-11-11 15:19:27.000000000 -0500
32658 ++++ linux-3.1.1/fs/proc/cmdline.c 2011-11-16 18:40:29.000000000 -0500
32659 @@ -23,7 +23,11 @@ static const struct file_operations cmdl
32660
32661 static int __init proc_cmdline_init(void)
32662 @@ -46024,9 +45887,9 @@ diff -urNp linux-3.0.9/fs/proc/cmdline.c linux-3.0.9/fs/proc/cmdline.c
32663 return 0;
32664 }
32665 module_init(proc_cmdline_init);
32666 -diff -urNp linux-3.0.9/fs/proc/devices.c linux-3.0.9/fs/proc/devices.c
32667 ---- linux-3.0.9/fs/proc/devices.c 2011-11-11 13:12:24.000000000 -0500
32668 -+++ linux-3.0.9/fs/proc/devices.c 2011-11-15 20:02:59.000000000 -0500
32669 +diff -urNp linux-3.1.1/fs/proc/devices.c linux-3.1.1/fs/proc/devices.c
32670 +--- linux-3.1.1/fs/proc/devices.c 2011-11-11 15:19:27.000000000 -0500
32671 ++++ linux-3.1.1/fs/proc/devices.c 2011-11-16 18:40:29.000000000 -0500
32672 @@ -64,7 +64,11 @@ static const struct file_operations proc
32673
32674 static int __init proc_devices_init(void)
32675 @@ -46039,9 +45902,9 @@ diff -urNp linux-3.0.9/fs/proc/devices.c linux-3.0.9/fs/proc/devices.c
32676 return 0;
32677 }
32678 module_init(proc_devices_init);
32679 -diff -urNp linux-3.0.9/fs/proc/inode.c linux-3.0.9/fs/proc/inode.c
32680 ---- linux-3.0.9/fs/proc/inode.c 2011-11-11 13:12:24.000000000 -0500
32681 -+++ linux-3.0.9/fs/proc/inode.c 2011-11-15 20:02:59.000000000 -0500
32682 +diff -urNp linux-3.1.1/fs/proc/inode.c linux-3.1.1/fs/proc/inode.c
32683 +--- linux-3.1.1/fs/proc/inode.c 2011-11-11 15:19:27.000000000 -0500
32684 ++++ linux-3.1.1/fs/proc/inode.c 2011-11-16 18:40:29.000000000 -0500
32685 @@ -18,12 +18,18 @@
32686 #include <linux/module.h>
32687 #include <linux/sysctl.h>
32688 @@ -46087,9 +45950,9 @@ diff -urNp linux-3.0.9/fs/proc/inode.c linux-3.0.9/fs/proc/inode.c
32689 }
32690 if (de->size)
32691 inode->i_size = de->size;
32692 -diff -urNp linux-3.0.9/fs/proc/internal.h linux-3.0.9/fs/proc/internal.h
32693 ---- linux-3.0.9/fs/proc/internal.h 2011-11-11 13:12:24.000000000 -0500
32694 -+++ linux-3.0.9/fs/proc/internal.h 2011-11-15 20:02:59.000000000 -0500
32695 +diff -urNp linux-3.1.1/fs/proc/internal.h linux-3.1.1/fs/proc/internal.h
32696 +--- linux-3.1.1/fs/proc/internal.h 2011-11-11 15:19:27.000000000 -0500
32697 ++++ linux-3.1.1/fs/proc/internal.h 2011-11-16 18:40:29.000000000 -0500
32698 @@ -51,6 +51,9 @@ extern int proc_pid_status(struct seq_fi
32699 struct pid *pid, struct task_struct *task);
32700 extern int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns,
32701 @@ -46100,9 +45963,9 @@ diff -urNp linux-3.0.9/fs/proc/internal.h linux-3.0.9/fs/proc/internal.h
32702 extern loff_t mem_lseek(struct file *file, loff_t offset, int orig);
32703
32704 extern const struct file_operations proc_maps_operations;
32705 -diff -urNp linux-3.0.9/fs/proc/Kconfig linux-3.0.9/fs/proc/Kconfig
32706 ---- linux-3.0.9/fs/proc/Kconfig 2011-11-11 13:12:24.000000000 -0500
32707 -+++ linux-3.0.9/fs/proc/Kconfig 2011-11-15 20:02:59.000000000 -0500
32708 +diff -urNp linux-3.1.1/fs/proc/Kconfig linux-3.1.1/fs/proc/Kconfig
32709 +--- linux-3.1.1/fs/proc/Kconfig 2011-11-11 15:19:27.000000000 -0500
32710 ++++ linux-3.1.1/fs/proc/Kconfig 2011-11-16 18:40:29.000000000 -0500
32711 @@ -30,12 +30,12 @@ config PROC_FS
32712
32713 config PROC_KCORE
32714 @@ -46130,9 +45993,9 @@ diff -urNp linux-3.0.9/fs/proc/Kconfig linux-3.0.9/fs/proc/Kconfig
32715 bool "Enable /proc page monitoring" if EXPERT
32716 help
32717 Various /proc files exist to monitor process memory utilization:
32718 -diff -urNp linux-3.0.9/fs/proc/kcore.c linux-3.0.9/fs/proc/kcore.c
32719 ---- linux-3.0.9/fs/proc/kcore.c 2011-11-11 13:12:24.000000000 -0500
32720 -+++ linux-3.0.9/fs/proc/kcore.c 2011-11-15 20:02:59.000000000 -0500
32721 +diff -urNp linux-3.1.1/fs/proc/kcore.c linux-3.1.1/fs/proc/kcore.c
32722 +--- linux-3.1.1/fs/proc/kcore.c 2011-11-11 15:19:27.000000000 -0500
32723 ++++ linux-3.1.1/fs/proc/kcore.c 2011-11-16 18:40:29.000000000 -0500
32724 @@ -321,6 +321,8 @@ static void elf_kcore_store_hdr(char *bu
32725 off_t offset = 0;
32726 struct kcore_list *m;
32727 @@ -46200,9 +46063,9 @@ diff -urNp linux-3.0.9/fs/proc/kcore.c linux-3.0.9/fs/proc/kcore.c
32728 if (!capable(CAP_SYS_RAWIO))
32729 return -EPERM;
32730 if (kcore_need_update)
32731 -diff -urNp linux-3.0.9/fs/proc/meminfo.c linux-3.0.9/fs/proc/meminfo.c
32732 ---- linux-3.0.9/fs/proc/meminfo.c 2011-11-11 13:12:24.000000000 -0500
32733 -+++ linux-3.0.9/fs/proc/meminfo.c 2011-11-15 20:02:59.000000000 -0500
32734 +diff -urNp linux-3.1.1/fs/proc/meminfo.c linux-3.1.1/fs/proc/meminfo.c
32735 +--- linux-3.1.1/fs/proc/meminfo.c 2011-11-11 15:19:27.000000000 -0500
32736 ++++ linux-3.1.1/fs/proc/meminfo.c 2011-11-16 18:40:29.000000000 -0500
32737 @@ -29,6 +29,8 @@ static int meminfo_proc_show(struct seq_
32738 unsigned long pages[NR_LRU_LISTS];
32739 int lru;
32740 @@ -46221,9 +46084,9 @@ diff -urNp linux-3.0.9/fs/proc/meminfo.c linux-3.0.9/fs/proc/meminfo.c
32741 #endif
32742 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
32743 ,K(global_page_state(NR_ANON_TRANSPARENT_HUGEPAGES) *
32744 -diff -urNp linux-3.0.9/fs/proc/nommu.c linux-3.0.9/fs/proc/nommu.c
32745 ---- linux-3.0.9/fs/proc/nommu.c 2011-11-11 13:12:24.000000000 -0500
32746 -+++ linux-3.0.9/fs/proc/nommu.c 2011-11-15 20:02:59.000000000 -0500
32747 +diff -urNp linux-3.1.1/fs/proc/nommu.c linux-3.1.1/fs/proc/nommu.c
32748 +--- linux-3.1.1/fs/proc/nommu.c 2011-11-11 15:19:27.000000000 -0500
32749 ++++ linux-3.1.1/fs/proc/nommu.c 2011-11-16 18:39:08.000000000 -0500
32750 @@ -66,7 +66,7 @@ static int nommu_region_show(struct seq_
32751 if (len < 1)
32752 len = 1;
32753 @@ -46233,9 +46096,9 @@ diff -urNp linux-3.0.9/fs/proc/nommu.c linux-3.0.9/fs/proc/nommu.c
32754 }
32755
32756 seq_putc(m, '\n');
32757 -diff -urNp linux-3.0.9/fs/proc/proc_net.c linux-3.0.9/fs/proc/proc_net.c
32758 ---- linux-3.0.9/fs/proc/proc_net.c 2011-11-11 13:12:24.000000000 -0500
32759 -+++ linux-3.0.9/fs/proc/proc_net.c 2011-11-15 20:02:59.000000000 -0500
32760 +diff -urNp linux-3.1.1/fs/proc/proc_net.c linux-3.1.1/fs/proc/proc_net.c
32761 +--- linux-3.1.1/fs/proc/proc_net.c 2011-11-11 15:19:27.000000000 -0500
32762 ++++ linux-3.1.1/fs/proc/proc_net.c 2011-11-16 18:40:29.000000000 -0500
32763 @@ -105,6 +105,17 @@ static struct net *get_proc_task_net(str
32764 struct task_struct *task;
32765 struct nsproxy *ns;
32766 @@ -46254,9 +46117,9 @@ diff -urNp linux-3.0.9/fs/proc/proc_net.c linux-3.0.9/fs/proc/proc_net.c
32767
32768 rcu_read_lock();
32769 task = pid_task(proc_pid(dir), PIDTYPE_PID);
32770 -diff -urNp linux-3.0.9/fs/proc/proc_sysctl.c linux-3.0.9/fs/proc/proc_sysctl.c
32771 ---- linux-3.0.9/fs/proc/proc_sysctl.c 2011-11-11 13:12:24.000000000 -0500
32772 -+++ linux-3.0.9/fs/proc/proc_sysctl.c 2011-11-15 20:02:59.000000000 -0500
32773 +diff -urNp linux-3.1.1/fs/proc/proc_sysctl.c linux-3.1.1/fs/proc/proc_sysctl.c
32774 +--- linux-3.1.1/fs/proc/proc_sysctl.c 2011-11-11 15:19:27.000000000 -0500
32775 ++++ linux-3.1.1/fs/proc/proc_sysctl.c 2011-11-16 18:40:29.000000000 -0500
32776 @@ -8,11 +8,13 @@
32777 #include <linux/namei.h>
32778 #include "internal.h"
32779 @@ -46334,9 +46197,9 @@ diff -urNp linux-3.0.9/fs/proc/proc_sysctl.c linux-3.0.9/fs/proc/proc_sysctl.c
32780 .lookup = proc_sys_lookup,
32781 .permission = proc_sys_permission,
32782 .setattr = proc_sys_setattr,
32783 -diff -urNp linux-3.0.9/fs/proc/root.c linux-3.0.9/fs/proc/root.c
32784 ---- linux-3.0.9/fs/proc/root.c 2011-11-11 13:12:24.000000000 -0500
32785 -+++ linux-3.0.9/fs/proc/root.c 2011-11-15 20:02:59.000000000 -0500
32786 +diff -urNp linux-3.1.1/fs/proc/root.c linux-3.1.1/fs/proc/root.c
32787 +--- linux-3.1.1/fs/proc/root.c 2011-11-11 15:19:27.000000000 -0500
32788 ++++ linux-3.1.1/fs/proc/root.c 2011-11-16 18:40:29.000000000 -0500
32789 @@ -123,7 +123,15 @@ void __init proc_root_init(void)
32790 #ifdef CONFIG_PROC_DEVICETREE
32791 proc_device_tree_init();
32792 @@ -46353,9 +46216,9 @@ diff -urNp linux-3.0.9/fs/proc/root.c linux-3.0.9/fs/proc/root.c
32793 proc_sys_init();
32794 }
32795
32796 -diff -urNp linux-3.0.9/fs/proc/task_mmu.c linux-3.0.9/fs/proc/task_mmu.c
32797 ---- linux-3.0.9/fs/proc/task_mmu.c 2011-11-11 13:12:24.000000000 -0500
32798 -+++ linux-3.0.9/fs/proc/task_mmu.c 2011-11-15 20:02:59.000000000 -0500
32799 +diff -urNp linux-3.1.1/fs/proc/task_mmu.c linux-3.1.1/fs/proc/task_mmu.c
32800 +--- linux-3.1.1/fs/proc/task_mmu.c 2011-11-11 15:19:27.000000000 -0500
32801 ++++ linux-3.1.1/fs/proc/task_mmu.c 2011-11-16 18:40:29.000000000 -0500
32802 @@ -51,8 +51,13 @@ void task_mem(struct seq_file *m, struct
32803 "VmExe:\t%8lu kB\n"
32804 "VmLib:\t%8lu kB\n"
32805 @@ -46495,9 +46358,9 @@ diff -urNp linux-3.0.9/fs/proc/task_mmu.c linux-3.0.9/fs/proc/task_mmu.c
32806 } else if (vma->vm_start <= mm->brk && vma->vm_end >= mm->start_brk) {
32807 seq_printf(m, " heap");
32808 } else if (vma->vm_start <= mm->start_stack &&
32809 -diff -urNp linux-3.0.9/fs/proc/task_nommu.c linux-3.0.9/fs/proc/task_nommu.c
32810 ---- linux-3.0.9/fs/proc/task_nommu.c 2011-11-11 13:12:24.000000000 -0500
32811 -+++ linux-3.0.9/fs/proc/task_nommu.c 2011-11-15 20:02:59.000000000 -0500
32812 +diff -urNp linux-3.1.1/fs/proc/task_nommu.c linux-3.1.1/fs/proc/task_nommu.c
32813 +--- linux-3.1.1/fs/proc/task_nommu.c 2011-11-11 15:19:27.000000000 -0500
32814 ++++ linux-3.1.1/fs/proc/task_nommu.c 2011-11-16 18:39:08.000000000 -0500
32815 @@ -51,7 +51,7 @@ void task_mem(struct seq_file *m, struct
32816 else
32817 bytes += kobjsize(mm);
32818 @@ -46516,9 +46379,9 @@ diff -urNp linux-3.0.9/fs/proc/task_nommu.c linux-3.0.9/fs/proc/task_nommu.c
32819 } else if (mm) {
32820 if (vma->vm_start <= mm->start_stack &&
32821 vma->vm_end >= mm->start_stack) {
32822 -diff -urNp linux-3.0.9/fs/quota/netlink.c linux-3.0.9/fs/quota/netlink.c
32823 ---- linux-3.0.9/fs/quota/netlink.c 2011-11-11 13:12:24.000000000 -0500
32824 -+++ linux-3.0.9/fs/quota/netlink.c 2011-11-15 20:02:59.000000000 -0500
32825 +diff -urNp linux-3.1.1/fs/quota/netlink.c linux-3.1.1/fs/quota/netlink.c
32826 +--- linux-3.1.1/fs/quota/netlink.c 2011-11-11 15:19:27.000000000 -0500
32827 ++++ linux-3.1.1/fs/quota/netlink.c 2011-11-16 18:39:08.000000000 -0500
32828 @@ -33,7 +33,7 @@ static struct genl_family quota_genl_fam
32829 void quota_send_warning(short type, unsigned int id, dev_t dev,
32830 const char warntype)
32831 @@ -46537,9 +46400,9 @@ diff -urNp linux-3.0.9/fs/quota/netlink.c linux-3.0.9/fs/quota/netlink.c
32832 &quota_genl_family, 0, QUOTA_NL_C_WARNING);
32833 if (!msg_head) {
32834 printk(KERN_ERR
32835 -diff -urNp linux-3.0.9/fs/readdir.c linux-3.0.9/fs/readdir.c
32836 ---- linux-3.0.9/fs/readdir.c 2011-11-11 13:12:24.000000000 -0500
32837 -+++ linux-3.0.9/fs/readdir.c 2011-11-15 20:02:59.000000000 -0500
32838 +diff -urNp linux-3.1.1/fs/readdir.c linux-3.1.1/fs/readdir.c
32839 +--- linux-3.1.1/fs/readdir.c 2011-11-11 15:19:27.000000000 -0500
32840 ++++ linux-3.1.1/fs/readdir.c 2011-11-16 18:40:29.000000000 -0500
32841 @@ -17,6 +17,7 @@
32842 #include <linux/security.h>
32843 #include <linux/syscalls.h>
32844 @@ -46638,10 +46501,10 @@ diff -urNp linux-3.0.9/fs/readdir.c linux-3.0.9/fs/readdir.c
32845 if (__put_user(d_off, &lastdirent->d_off))
32846 error = -EFAULT;
32847 else
32848 -diff -urNp linux-3.0.9/fs/reiserfs/dir.c linux-3.0.9/fs/reiserfs/dir.c
32849 ---- linux-3.0.9/fs/reiserfs/dir.c 2011-11-11 13:12:24.000000000 -0500
32850 -+++ linux-3.0.9/fs/reiserfs/dir.c 2011-11-15 20:02:59.000000000 -0500
32851 -@@ -66,6 +66,8 @@ int reiserfs_readdir_dentry(struct dentr
32852 +diff -urNp linux-3.1.1/fs/reiserfs/dir.c linux-3.1.1/fs/reiserfs/dir.c
32853 +--- linux-3.1.1/fs/reiserfs/dir.c 2011-11-11 15:19:27.000000000 -0500
32854 ++++ linux-3.1.1/fs/reiserfs/dir.c 2011-11-16 18:40:29.000000000 -0500
32855 +@@ -75,6 +75,8 @@ int reiserfs_readdir_dentry(struct dentr
32856 struct reiserfs_dir_entry de;
32857 int ret = 0;
32858
32859 @@ -46650,9 +46513,9 @@ diff -urNp linux-3.0.9/fs/reiserfs/dir.c linux-3.0.9/fs/reiserfs/dir.c
32860 reiserfs_write_lock(inode->i_sb);
32861
32862 reiserfs_check_lock_depth(inode->i_sb, "readdir");
32863 -diff -urNp linux-3.0.9/fs/reiserfs/do_balan.c linux-3.0.9/fs/reiserfs/do_balan.c
32864 ---- linux-3.0.9/fs/reiserfs/do_balan.c 2011-11-11 13:12:24.000000000 -0500
32865 -+++ linux-3.0.9/fs/reiserfs/do_balan.c 2011-11-15 20:02:59.000000000 -0500
32866 +diff -urNp linux-3.1.1/fs/reiserfs/do_balan.c linux-3.1.1/fs/reiserfs/do_balan.c
32867 +--- linux-3.1.1/fs/reiserfs/do_balan.c 2011-11-11 15:19:27.000000000 -0500
32868 ++++ linux-3.1.1/fs/reiserfs/do_balan.c 2011-11-16 18:39:08.000000000 -0500
32869 @@ -2051,7 +2051,7 @@ void do_balance(struct tree_balance *tb,
32870 return;
32871 }
32872 @@ -46662,10 +46525,10 @@ diff -urNp linux-3.0.9/fs/reiserfs/do_balan.c linux-3.0.9/fs/reiserfs/do_balan.c
32873 do_balance_starts(tb);
32874
32875 /* balance leaf returns 0 except if combining L R and S into
32876 -diff -urNp linux-3.0.9/fs/reiserfs/journal.c linux-3.0.9/fs/reiserfs/journal.c
32877 ---- linux-3.0.9/fs/reiserfs/journal.c 2011-11-11 13:12:24.000000000 -0500
32878 -+++ linux-3.0.9/fs/reiserfs/journal.c 2011-11-15 20:02:59.000000000 -0500
32879 -@@ -2299,6 +2299,8 @@ static struct buffer_head *reiserfs_brea
32880 +diff -urNp linux-3.1.1/fs/reiserfs/journal.c linux-3.1.1/fs/reiserfs/journal.c
32881 +--- linux-3.1.1/fs/reiserfs/journal.c 2011-11-11 15:19:27.000000000 -0500
32882 ++++ linux-3.1.1/fs/reiserfs/journal.c 2011-11-16 18:40:29.000000000 -0500
32883 +@@ -2289,6 +2289,8 @@ static struct buffer_head *reiserfs_brea
32884 struct buffer_head *bh;
32885 int i, j;
32886
32887 @@ -46674,9 +46537,9 @@ diff -urNp linux-3.0.9/fs/reiserfs/journal.c linux-3.0.9/fs/reiserfs/journal.c
32888 bh = __getblk(dev, block, bufsize);
32889 if (buffer_uptodate(bh))
32890 return (bh);
32891 -diff -urNp linux-3.0.9/fs/reiserfs/namei.c linux-3.0.9/fs/reiserfs/namei.c
32892 ---- linux-3.0.9/fs/reiserfs/namei.c 2011-11-11 13:12:24.000000000 -0500
32893 -+++ linux-3.0.9/fs/reiserfs/namei.c 2011-11-15 20:02:59.000000000 -0500
32894 +diff -urNp linux-3.1.1/fs/reiserfs/namei.c linux-3.1.1/fs/reiserfs/namei.c
32895 +--- linux-3.1.1/fs/reiserfs/namei.c 2011-11-11 15:19:27.000000000 -0500
32896 ++++ linux-3.1.1/fs/reiserfs/namei.c 2011-11-16 18:40:29.000000000 -0500
32897 @@ -1225,6 +1225,8 @@ static int reiserfs_rename(struct inode
32898 unsigned long savelink = 1;
32899 struct timespec ctime;
32900 @@ -46686,9 +46549,9 @@ diff -urNp linux-3.0.9/fs/reiserfs/namei.c linux-3.0.9/fs/reiserfs/namei.c
32901 /* three balancings: (1) old name removal, (2) new name insertion
32902 and (3) maybe "save" link insertion
32903 stat data updates: (1) old directory,
32904 -diff -urNp linux-3.0.9/fs/reiserfs/procfs.c linux-3.0.9/fs/reiserfs/procfs.c
32905 ---- linux-3.0.9/fs/reiserfs/procfs.c 2011-11-11 13:12:24.000000000 -0500
32906 -+++ linux-3.0.9/fs/reiserfs/procfs.c 2011-11-15 20:02:59.000000000 -0500
32907 +diff -urNp linux-3.1.1/fs/reiserfs/procfs.c linux-3.1.1/fs/reiserfs/procfs.c
32908 +--- linux-3.1.1/fs/reiserfs/procfs.c 2011-11-11 15:19:27.000000000 -0500
32909 ++++ linux-3.1.1/fs/reiserfs/procfs.c 2011-11-16 18:40:29.000000000 -0500
32910 @@ -113,7 +113,7 @@ static int show_super(struct seq_file *m
32911 "SMALL_TAILS " : "NO_TAILS ",
32912 replay_only(sb) ? "REPLAY_ONLY " : "",
32913 @@ -46707,9 +46570,9 @@ diff -urNp linux-3.0.9/fs/reiserfs/procfs.c linux-3.0.9/fs/reiserfs/procfs.c
32914 seq_printf(m, /* on-disk fields */
32915 "jp_journal_1st_block: \t%i\n"
32916 "jp_journal_dev: \t%s[%x]\n"
32917 -diff -urNp linux-3.0.9/fs/reiserfs/stree.c linux-3.0.9/fs/reiserfs/stree.c
32918 ---- linux-3.0.9/fs/reiserfs/stree.c 2011-11-11 13:12:24.000000000 -0500
32919 -+++ linux-3.0.9/fs/reiserfs/stree.c 2011-11-15 20:02:59.000000000 -0500
32920 +diff -urNp linux-3.1.1/fs/reiserfs/stree.c linux-3.1.1/fs/reiserfs/stree.c
32921 +--- linux-3.1.1/fs/reiserfs/stree.c 2011-11-11 15:19:27.000000000 -0500
32922 ++++ linux-3.1.1/fs/reiserfs/stree.c 2011-11-16 18:40:29.000000000 -0500
32923 @@ -1196,6 +1196,8 @@ int reiserfs_delete_item(struct reiserfs
32924 int iter = 0;
32925 #endif
32926 @@ -46755,9 +46618,9 @@ diff -urNp linux-3.0.9/fs/reiserfs/stree.c linux-3.0.9/fs/reiserfs/stree.c
32927 BUG_ON(!th->t_trans_id);
32928
32929 if (inode) { /* Do we count quotas for item? */
32930 -diff -urNp linux-3.0.9/fs/reiserfs/super.c linux-3.0.9/fs/reiserfs/super.c
32931 ---- linux-3.0.9/fs/reiserfs/super.c 2011-11-11 13:12:24.000000000 -0500
32932 -+++ linux-3.0.9/fs/reiserfs/super.c 2011-11-15 20:02:59.000000000 -0500
32933 +diff -urNp linux-3.1.1/fs/reiserfs/super.c linux-3.1.1/fs/reiserfs/super.c
32934 +--- linux-3.1.1/fs/reiserfs/super.c 2011-11-11 15:19:27.000000000 -0500
32935 ++++ linux-3.1.1/fs/reiserfs/super.c 2011-11-16 18:40:29.000000000 -0500
32936 @@ -927,6 +927,8 @@ static int reiserfs_parse_options(struct
32937 {.option_name = NULL}
32938 };
32939 @@ -46767,9 +46630,9 @@ diff -urNp linux-3.0.9/fs/reiserfs/super.c linux-3.0.9/fs/reiserfs/super.c
32940 *blocks = 0;
32941 if (!options || !*options)
32942 /* use default configuration: create tails, journaling on, no
32943 -diff -urNp linux-3.0.9/fs/select.c linux-3.0.9/fs/select.c
32944 ---- linux-3.0.9/fs/select.c 2011-11-11 13:12:24.000000000 -0500
32945 -+++ linux-3.0.9/fs/select.c 2011-11-15 20:02:59.000000000 -0500
32946 +diff -urNp linux-3.1.1/fs/select.c linux-3.1.1/fs/select.c
32947 +--- linux-3.1.1/fs/select.c 2011-11-11 15:19:27.000000000 -0500
32948 ++++ linux-3.1.1/fs/select.c 2011-11-16 18:40:29.000000000 -0500
32949 @@ -20,6 +20,7 @@
32950 #include <linux/module.h>
32951 #include <linux/slab.h>
32952 @@ -46806,9 +46669,9 @@ diff -urNp linux-3.0.9/fs/select.c linux-3.0.9/fs/select.c
32953 if (nfds > rlimit(RLIMIT_NOFILE))
32954 return -EINVAL;
32955
32956 -diff -urNp linux-3.0.9/fs/seq_file.c linux-3.0.9/fs/seq_file.c
32957 ---- linux-3.0.9/fs/seq_file.c 2011-11-11 13:12:24.000000000 -0500
32958 -+++ linux-3.0.9/fs/seq_file.c 2011-11-15 20:02:59.000000000 -0500
32959 +diff -urNp linux-3.1.1/fs/seq_file.c linux-3.1.1/fs/seq_file.c
32960 +--- linux-3.1.1/fs/seq_file.c 2011-11-11 15:19:27.000000000 -0500
32961 ++++ linux-3.1.1/fs/seq_file.c 2011-11-16 18:39:08.000000000 -0500
32962 @@ -76,7 +76,8 @@ static int traverse(struct seq_file *m,
32963 return 0;
32964 }
32965 @@ -46858,9 +46721,9 @@ diff -urNp linux-3.0.9/fs/seq_file.c linux-3.0.9/fs/seq_file.c
32966 int res = -ENOMEM;
32967
32968 if (op) {
32969 -diff -urNp linux-3.0.9/fs/splice.c linux-3.0.9/fs/splice.c
32970 ---- linux-3.0.9/fs/splice.c 2011-11-11 13:12:24.000000000 -0500
32971 -+++ linux-3.0.9/fs/splice.c 2011-11-15 20:02:59.000000000 -0500
32972 +diff -urNp linux-3.1.1/fs/splice.c linux-3.1.1/fs/splice.c
32973 +--- linux-3.1.1/fs/splice.c 2011-11-11 15:19:27.000000000 -0500
32974 ++++ linux-3.1.1/fs/splice.c 2011-11-16 18:40:29.000000000 -0500
32975 @@ -194,7 +194,7 @@ ssize_t splice_to_pipe(struct pipe_inode
32976 pipe_lock(pipe);
32977
32978 @@ -47026,9 +46889,9 @@ diff -urNp linux-3.0.9/fs/splice.c linux-3.0.9/fs/splice.c
32979 ret = -EAGAIN;
32980
32981 pipe_unlock(ipipe);
32982 -diff -urNp linux-3.0.9/fs/sysfs/file.c linux-3.0.9/fs/sysfs/file.c
32983 ---- linux-3.0.9/fs/sysfs/file.c 2011-11-11 13:12:24.000000000 -0500
32984 -+++ linux-3.0.9/fs/sysfs/file.c 2011-11-15 20:02:59.000000000 -0500
32985 +diff -urNp linux-3.1.1/fs/sysfs/file.c linux-3.1.1/fs/sysfs/file.c
32986 +--- linux-3.1.1/fs/sysfs/file.c 2011-11-11 15:19:27.000000000 -0500
32987 ++++ linux-3.1.1/fs/sysfs/file.c 2011-11-16 18:39:08.000000000 -0500
32988 @@ -37,7 +37,7 @@ static DEFINE_SPINLOCK(sysfs_open_dirent
32989
32990 struct sysfs_open_dirent {
32991 @@ -47074,9 +46937,9 @@ diff -urNp linux-3.0.9/fs/sysfs/file.c linux-3.0.9/fs/sysfs/file.c
32992 wake_up_interruptible(&od->poll);
32993 }
32994
32995 -diff -urNp linux-3.0.9/fs/sysfs/mount.c linux-3.0.9/fs/sysfs/mount.c
32996 ---- linux-3.0.9/fs/sysfs/mount.c 2011-11-11 13:12:24.000000000 -0500
32997 -+++ linux-3.0.9/fs/sysfs/mount.c 2011-11-15 20:02:59.000000000 -0500
32998 +diff -urNp linux-3.1.1/fs/sysfs/mount.c linux-3.1.1/fs/sysfs/mount.c
32999 +--- linux-3.1.1/fs/sysfs/mount.c 2011-11-11 15:19:27.000000000 -0500
33000 ++++ linux-3.1.1/fs/sysfs/mount.c 2011-11-16 18:40:29.000000000 -0500
33001 @@ -36,7 +36,11 @@ struct sysfs_dirent sysfs_root = {
33002 .s_name = "",
33003 .s_count = ATOMIC_INIT(1),
33004 @@ -47089,9 +46952,9 @@ diff -urNp linux-3.0.9/fs/sysfs/mount.c linux-3.0.9/fs/sysfs/mount.c
33005 .s_ino = 1,
33006 };
33007
33008 -diff -urNp linux-3.0.9/fs/sysfs/symlink.c linux-3.0.9/fs/sysfs/symlink.c
33009 ---- linux-3.0.9/fs/sysfs/symlink.c 2011-11-11 13:12:24.000000000 -0500
33010 -+++ linux-3.0.9/fs/sysfs/symlink.c 2011-11-15 20:02:59.000000000 -0500
33011 +diff -urNp linux-3.1.1/fs/sysfs/symlink.c linux-3.1.1/fs/sysfs/symlink.c
33012 +--- linux-3.1.1/fs/sysfs/symlink.c 2011-11-11 15:19:27.000000000 -0500
33013 ++++ linux-3.1.1/fs/sysfs/symlink.c 2011-11-16 18:39:08.000000000 -0500
33014 @@ -286,7 +286,7 @@ static void *sysfs_follow_link(struct de
33015
33016 static void sysfs_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie)
33017 @@ -47101,9 +46964,9 @@ diff -urNp linux-3.0.9/fs/sysfs/symlink.c linux-3.0.9/fs/sysfs/symlink.c
33018 if (!IS_ERR(page))
33019 free_page((unsigned long)page);
33020 }
33021 -diff -urNp linux-3.0.9/fs/udf/inode.c linux-3.0.9/fs/udf/inode.c
33022 ---- linux-3.0.9/fs/udf/inode.c 2011-11-11 13:12:24.000000000 -0500
33023 -+++ linux-3.0.9/fs/udf/inode.c 2011-11-15 20:02:59.000000000 -0500
33024 +diff -urNp linux-3.1.1/fs/udf/inode.c linux-3.1.1/fs/udf/inode.c
33025 +--- linux-3.1.1/fs/udf/inode.c 2011-11-11 15:19:27.000000000 -0500
33026 ++++ linux-3.1.1/fs/udf/inode.c 2011-11-16 18:40:29.000000000 -0500
33027 @@ -560,6 +560,8 @@ static struct buffer_head *inode_getblk(
33028 int goal = 0, pgoal = iinfo->i_location.logicalBlockNum;
33029 int lastblock = 0;
33030 @@ -47113,9 +46976,9 @@ diff -urNp linux-3.0.9/fs/udf/inode.c linux-3.0.9/fs/udf/inode.c
33031 prev_epos.offset = udf_file_entry_alloc_offset(inode);
33032 prev_epos.block = iinfo->i_location;
33033 prev_epos.bh = NULL;
33034 -diff -urNp linux-3.0.9/fs/udf/misc.c linux-3.0.9/fs/udf/misc.c
33035 ---- linux-3.0.9/fs/udf/misc.c 2011-11-11 13:12:24.000000000 -0500
33036 -+++ linux-3.0.9/fs/udf/misc.c 2011-11-15 20:02:59.000000000 -0500
33037 +diff -urNp linux-3.1.1/fs/udf/misc.c linux-3.1.1/fs/udf/misc.c
33038 +--- linux-3.1.1/fs/udf/misc.c 2011-11-11 15:19:27.000000000 -0500
33039 ++++ linux-3.1.1/fs/udf/misc.c 2011-11-16 18:39:08.000000000 -0500
33040 @@ -286,7 +286,7 @@ void udf_new_tag(char *data, uint16_t id
33041
33042 u8 udf_tag_checksum(const struct tag *t)
33043 @@ -47125,9 +46988,9 @@ diff -urNp linux-3.0.9/fs/udf/misc.c linux-3.0.9/fs/udf/misc.c
33044 u8 checksum = 0;
33045 int i;
33046 for (i = 0; i < sizeof(struct tag); ++i)
33047 -diff -urNp linux-3.0.9/fs/utimes.c linux-3.0.9/fs/utimes.c
33048 ---- linux-3.0.9/fs/utimes.c 2011-11-11 13:12:24.000000000 -0500
33049 -+++ linux-3.0.9/fs/utimes.c 2011-11-15 20:02:59.000000000 -0500
33050 +diff -urNp linux-3.1.1/fs/utimes.c linux-3.1.1/fs/utimes.c
33051 +--- linux-3.1.1/fs/utimes.c 2011-11-11 15:19:27.000000000 -0500
33052 ++++ linux-3.1.1/fs/utimes.c 2011-11-16 18:40:29.000000000 -0500
33053 @@ -1,6 +1,7 @@
33054 #include <linux/compiler.h>
33055 #include <linux/file.h>
33056 @@ -47149,9 +47012,9 @@ diff -urNp linux-3.0.9/fs/utimes.c linux-3.0.9/fs/utimes.c
33057 mutex_lock(&inode->i_mutex);
33058 error = notify_change(path->dentry, &newattrs);
33059 mutex_unlock(&inode->i_mutex);
33060 -diff -urNp linux-3.0.9/fs/xattr_acl.c linux-3.0.9/fs/xattr_acl.c
33061 ---- linux-3.0.9/fs/xattr_acl.c 2011-11-11 13:12:24.000000000 -0500
33062 -+++ linux-3.0.9/fs/xattr_acl.c 2011-11-15 20:02:59.000000000 -0500
33063 +diff -urNp linux-3.1.1/fs/xattr_acl.c linux-3.1.1/fs/xattr_acl.c
33064 +--- linux-3.1.1/fs/xattr_acl.c 2011-11-11 15:19:27.000000000 -0500
33065 ++++ linux-3.1.1/fs/xattr_acl.c 2011-11-16 18:39:08.000000000 -0500
33066 @@ -17,8 +17,8 @@
33067 struct posix_acl *
33068 posix_acl_from_xattr(const void *value, size_t size)
33069 @@ -47163,9 +47026,9 @@ diff -urNp linux-3.0.9/fs/xattr_acl.c linux-3.0.9/fs/xattr_acl.c
33070 int count;
33071 struct posix_acl *acl;
33072 struct posix_acl_entry *acl_e;
33073 -diff -urNp linux-3.0.9/fs/xattr.c linux-3.0.9/fs/xattr.c
33074 ---- linux-3.0.9/fs/xattr.c 2011-11-11 13:12:24.000000000 -0500
33075 -+++ linux-3.0.9/fs/xattr.c 2011-11-15 20:02:59.000000000 -0500
33076 +diff -urNp linux-3.1.1/fs/xattr.c linux-3.1.1/fs/xattr.c
33077 +--- linux-3.1.1/fs/xattr.c 2011-11-11 15:19:27.000000000 -0500
33078 ++++ linux-3.1.1/fs/xattr.c 2011-11-16 18:40:29.000000000 -0500
33079 @@ -254,7 +254,7 @@ EXPORT_SYMBOL_GPL(vfs_removexattr);
33080 * Extended attribute SET operations
33081 */
33082 @@ -47228,45 +47091,10 @@ diff -urNp linux-3.0.9/fs/xattr.c linux-3.0.9/fs/xattr.c
33083 mnt_drop_write(f->f_path.mnt);
33084 }
33085 fput(f);
33086 -diff -urNp linux-3.0.9/fs/xfs/linux-2.6/xfs_ioctl32.c linux-3.0.9/fs/xfs/linux-2.6/xfs_ioctl32.c
33087 ---- linux-3.0.9/fs/xfs/linux-2.6/xfs_ioctl32.c 2011-11-11 13:12:24.000000000 -0500
33088 -+++ linux-3.0.9/fs/xfs/linux-2.6/xfs_ioctl32.c 2011-11-15 20:02:59.000000000 -0500
33089 -@@ -73,6 +73,7 @@ xfs_compat_ioc_fsgeometry_v1(
33090 - xfs_fsop_geom_t fsgeo;
33091 - int error;
33092 -
33093 -+ memset(&fsgeo, 0, sizeof(fsgeo));
33094 - error = xfs_fs_geometry(mp, &fsgeo, 3);
33095 - if (error)
33096 - return -error;
33097 -diff -urNp linux-3.0.9/fs/xfs/linux-2.6/xfs_ioctl.c linux-3.0.9/fs/xfs/linux-2.6/xfs_ioctl.c
33098 ---- linux-3.0.9/fs/xfs/linux-2.6/xfs_ioctl.c 2011-11-11 13:12:24.000000000 -0500
33099 -+++ linux-3.0.9/fs/xfs/linux-2.6/xfs_ioctl.c 2011-11-15 20:02:59.000000000 -0500
33100 -@@ -128,7 +128,7 @@ xfs_find_handle(
33101 - }
33102 -
33103 - error = -EFAULT;
33104 -- if (copy_to_user(hreq->ohandle, &handle, hsize) ||
33105 -+ if (hsize > sizeof handle || copy_to_user(hreq->ohandle, &handle, hsize) ||
33106 - copy_to_user(hreq->ohandlen, &hsize, sizeof(__s32)))
33107 - goto out_put;
33108 -
33109 -diff -urNp linux-3.0.9/fs/xfs/linux-2.6/xfs_iops.c linux-3.0.9/fs/xfs/linux-2.6/xfs_iops.c
33110 ---- linux-3.0.9/fs/xfs/linux-2.6/xfs_iops.c 2011-11-11 13:12:24.000000000 -0500
33111 -+++ linux-3.0.9/fs/xfs/linux-2.6/xfs_iops.c 2011-11-15 20:02:59.000000000 -0500
33112 -@@ -437,7 +437,7 @@ xfs_vn_put_link(
33113 - struct nameidata *nd,
33114 - void *p)
33115 - {
33116 -- char *s = nd_get_link(nd);
33117 -+ const char *s = nd_get_link(nd);
33118 -
33119 - if (!IS_ERR(s))
33120 - kfree(s);
33121 -diff -urNp linux-3.0.9/fs/xfs/xfs_bmap.c linux-3.0.9/fs/xfs/xfs_bmap.c
33122 ---- linux-3.0.9/fs/xfs/xfs_bmap.c 2011-11-11 13:12:24.000000000 -0500
33123 -+++ linux-3.0.9/fs/xfs/xfs_bmap.c 2011-11-15 20:02:59.000000000 -0500
33124 -@@ -253,7 +253,7 @@ xfs_bmap_validate_ret(
33125 +diff -urNp linux-3.1.1/fs/xfs/xfs_bmap.c linux-3.1.1/fs/xfs/xfs_bmap.c
33126 +--- linux-3.1.1/fs/xfs/xfs_bmap.c 2011-11-11 15:19:27.000000000 -0500
33127 ++++ linux-3.1.1/fs/xfs/xfs_bmap.c 2011-11-16 18:39:08.000000000 -0500
33128 +@@ -250,7 +250,7 @@ xfs_bmap_validate_ret(
33129 int nmap,
33130 int ret_nmap);
33131 #else
33132 @@ -47275,13 +47103,13 @@ diff -urNp linux-3.0.9/fs/xfs/xfs_bmap.c linux-3.0.9/fs/xfs/xfs_bmap.c
33133 #endif /* DEBUG */
33134
33135 STATIC int
33136 -diff -urNp linux-3.0.9/fs/xfs/xfs_dir2_sf.c linux-3.0.9/fs/xfs/xfs_dir2_sf.c
33137 ---- linux-3.0.9/fs/xfs/xfs_dir2_sf.c 2011-11-11 13:12:24.000000000 -0500
33138 -+++ linux-3.0.9/fs/xfs/xfs_dir2_sf.c 2011-11-15 20:02:59.000000000 -0500
33139 -@@ -780,7 +780,15 @@ xfs_dir2_sf_getdents(
33140 +diff -urNp linux-3.1.1/fs/xfs/xfs_dir2_sf.c linux-3.1.1/fs/xfs/xfs_dir2_sf.c
33141 +--- linux-3.1.1/fs/xfs/xfs_dir2_sf.c 2011-11-11 15:19:27.000000000 -0500
33142 ++++ linux-3.1.1/fs/xfs/xfs_dir2_sf.c 2011-11-16 18:39:08.000000000 -0500
33143 +@@ -852,7 +852,15 @@ xfs_dir2_sf_getdents(
33144 }
33145
33146 - ino = xfs_dir2_sf_get_inumber(sfp, xfs_dir2_sf_inumberp(sfep));
33147 + ino = xfs_dir2_sfe_get_ino(sfp, sfep);
33148 - if (filldir(dirent, (char *)sfep->name, sfep->namelen,
33149 + if (dp->i_df.if_u1.if_data == dp->i_df.if_u2.if_inline_data) {
33150 + char name[sfep->namelen];
33151 @@ -47295,9 +47123,33 @@ diff -urNp linux-3.0.9/fs/xfs/xfs_dir2_sf.c linux-3.0.9/fs/xfs/xfs_dir2_sf.c
33152 off & 0x7fffffff, ino, DT_UNKNOWN)) {
33153 *offset = off & 0x7fffffff;
33154 return 0;
33155 -diff -urNp linux-3.0.9/grsecurity/gracl_alloc.c linux-3.0.9/grsecurity/gracl_alloc.c
33156 ---- linux-3.0.9/grsecurity/gracl_alloc.c 1969-12-31 19:00:00.000000000 -0500
33157 -+++ linux-3.0.9/grsecurity/gracl_alloc.c 2011-11-15 20:02:59.000000000 -0500
33158 +diff -urNp linux-3.1.1/fs/xfs/xfs_ioctl.c linux-3.1.1/fs/xfs/xfs_ioctl.c
33159 +--- linux-3.1.1/fs/xfs/xfs_ioctl.c 2011-11-11 15:19:27.000000000 -0500
33160 ++++ linux-3.1.1/fs/xfs/xfs_ioctl.c 2011-11-16 18:39:08.000000000 -0500
33161 +@@ -128,7 +128,7 @@ xfs_find_handle(
33162 + }
33163 +
33164 + error = -EFAULT;
33165 +- if (copy_to_user(hreq->ohandle, &handle, hsize) ||
33166 ++ if (hsize > sizeof handle || copy_to_user(hreq->ohandle, &handle, hsize) ||
33167 + copy_to_user(hreq->ohandlen, &hsize, sizeof(__s32)))
33168 + goto out_put;
33169 +
33170 +diff -urNp linux-3.1.1/fs/xfs/xfs_iops.c linux-3.1.1/fs/xfs/xfs_iops.c
33171 +--- linux-3.1.1/fs/xfs/xfs_iops.c 2011-11-11 15:19:27.000000000 -0500
33172 ++++ linux-3.1.1/fs/xfs/xfs_iops.c 2011-11-16 18:39:08.000000000 -0500
33173 +@@ -446,7 +446,7 @@ xfs_vn_put_link(
33174 + struct nameidata *nd,
33175 + void *p)
33176 + {
33177 +- char *s = nd_get_link(nd);
33178 ++ const char *s = nd_get_link(nd);
33179 +
33180 + if (!IS_ERR(s))
33181 + kfree(s);
33182 +diff -urNp linux-3.1.1/grsecurity/gracl_alloc.c linux-3.1.1/grsecurity/gracl_alloc.c
33183 +--- linux-3.1.1/grsecurity/gracl_alloc.c 1969-12-31 19:00:00.000000000 -0500
33184 ++++ linux-3.1.1/grsecurity/gracl_alloc.c 2011-11-16 18:40:31.000000000 -0500
33185 @@ -0,0 +1,105 @@
33186 +#include <linux/kernel.h>
33187 +#include <linux/mm.h>
33188 @@ -47404,10 +47256,10 @@ diff -urNp linux-3.0.9/grsecurity/gracl_alloc.c linux-3.0.9/grsecurity/gracl_all
33189 + else
33190 + return 1;
33191 +}
33192 -diff -urNp linux-3.0.9/grsecurity/gracl.c linux-3.0.9/grsecurity/gracl.c
33193 ---- linux-3.0.9/grsecurity/gracl.c 1969-12-31 19:00:00.000000000 -0500
33194 -+++ linux-3.0.9/grsecurity/gracl.c 2011-11-15 20:02:59.000000000 -0500
33195 -@@ -0,0 +1,4154 @@
33196 +diff -urNp linux-3.1.1/grsecurity/gracl.c linux-3.1.1/grsecurity/gracl.c
33197 +--- linux-3.1.1/grsecurity/gracl.c 1969-12-31 19:00:00.000000000 -0500
33198 ++++ linux-3.1.1/grsecurity/gracl.c 2011-11-16 19:31:00.000000000 -0500
33199 +@@ -0,0 +1,4156 @@
33200 +#include <linux/kernel.h>
33201 +#include <linux/module.h>
33202 +#include <linux/sched.h>
33203 @@ -50243,6 +50095,7 @@ diff -urNp linux-3.0.9/grsecurity/gracl.c linux-3.0.9/grsecurity/gracl.c
33204 +{
33205 + struct name_entry *matchn;
33206 + struct inodev_entry *inodev;
33207 ++ struct inode *inode = new_dentry->d_inode;
33208 + ino_t old_ino = old_dentry->d_inode->i_ino;
33209 + dev_t old_dev = __get_dev(old_dentry);
33210 +
33211 @@ -50265,17 +50118,17 @@ diff -urNp linux-3.0.9/grsecurity/gracl.c linux-3.0.9/grsecurity/gracl.c
33212 + */
33213 +
33214 + write_lock(&gr_inode_lock);
33215 -+ if (unlikely(replace && new_dentry->d_inode)) {
33216 -+ ino_t new_ino = new_dentry->d_inode->i_ino;
33217 ++ if (unlikely(replace && inode)) {
33218 ++ ino_t new_ino = inode->i_ino;
33219 + dev_t new_dev = __get_dev(new_dentry);
33220 +
33221 + inodev = lookup_inodev_entry(new_ino, new_dev);
33222 -+ if (inodev != NULL && (new_dentry->d_inode->i_nlink <= 1))
33223 ++ if (inodev != NULL && ((inode->i_nlink <= 1) || S_ISDIR(inode->i_mode)))
33224 + do_handle_delete(inodev, new_ino, new_dev);
33225 + }
33226 +
33227 + inodev = lookup_inodev_entry(old_ino, old_dev);
33228 -+ if (inodev != NULL && (old_dentry->d_inode->i_nlink <= 1))
33229 ++ if (inodev != NULL && ((old_dentry->d_inode->i_nlink <= 1) || S_ISDIR(old_dentry->d_inode->i_mode)))
33230 + do_handle_delete(inodev, old_ino, old_dev);
33231 +
33232 + if (unlikely((unsigned long)matchn))
33233 @@ -51265,6 +51118,7 @@ diff -urNp linux-3.0.9/grsecurity/gracl.c linux-3.0.9/grsecurity/gracl.c
33234 +
33235 + if (retmode & GR_PTRACERD) {
33236 + switch (request) {
33237 ++ case PTRACE_SEIZE:
33238 + case PTRACE_POKETEXT:
33239 + case PTRACE_POKEDATA:
33240 + case PTRACE_POKEUSR:
33241 @@ -51562,9 +51416,9 @@ diff -urNp linux-3.0.9/grsecurity/gracl.c linux-3.0.9/grsecurity/gracl.c
33242 +EXPORT_SYMBOL(gr_check_group_change);
33243 +#endif
33244 +
33245 -diff -urNp linux-3.0.9/grsecurity/gracl_cap.c linux-3.0.9/grsecurity/gracl_cap.c
33246 ---- linux-3.0.9/grsecurity/gracl_cap.c 1969-12-31 19:00:00.000000000 -0500
33247 -+++ linux-3.0.9/grsecurity/gracl_cap.c 2011-11-15 20:02:59.000000000 -0500
33248 +diff -urNp linux-3.1.1/grsecurity/gracl_cap.c linux-3.1.1/grsecurity/gracl_cap.c
33249 +--- linux-3.1.1/grsecurity/gracl_cap.c 1969-12-31 19:00:00.000000000 -0500
33250 ++++ linux-3.1.1/grsecurity/gracl_cap.c 2011-11-16 18:40:31.000000000 -0500
33251 @@ -0,0 +1,101 @@
33252 +#include <linux/kernel.h>
33253 +#include <linux/module.h>
33254 @@ -51667,10 +51521,10 @@ diff -urNp linux-3.0.9/grsecurity/gracl_cap.c linux-3.0.9/grsecurity/gracl_cap.c
33255 + return 0;
33256 +}
33257 +
33258 -diff -urNp linux-3.0.9/grsecurity/gracl_fs.c linux-3.0.9/grsecurity/gracl_fs.c
33259 ---- linux-3.0.9/grsecurity/gracl_fs.c 1969-12-31 19:00:00.000000000 -0500
33260 -+++ linux-3.0.9/grsecurity/gracl_fs.c 2011-11-15 20:02:59.000000000 -0500
33261 -@@ -0,0 +1,431 @@
33262 +diff -urNp linux-3.1.1/grsecurity/gracl_fs.c linux-3.1.1/grsecurity/gracl_fs.c
33263 +--- linux-3.1.1/grsecurity/gracl_fs.c 1969-12-31 19:00:00.000000000 -0500
33264 ++++ linux-3.1.1/grsecurity/gracl_fs.c 2011-11-17 00:25:32.000000000 -0500
33265 +@@ -0,0 +1,433 @@
33266 +#include <linux/kernel.h>
33267 +#include <linux/sched.h>
33268 +#include <linux/types.h>
33269 @@ -51707,7 +51561,7 @@ diff -urNp linux-3.0.9/grsecurity/gracl_fs.c linux-3.0.9/grsecurity/gracl_fs.c
33270 +
33271 +__u32
33272 +gr_acl_handle_open(const struct dentry * dentry, const struct vfsmount * mnt,
33273 -+ const int fmode)
33274 ++ int acc_mode)
33275 +{
33276 + __u32 reqmode = GR_FIND;
33277 + __u32 mode;
33278 @@ -51715,14 +51569,13 @@ diff -urNp linux-3.0.9/grsecurity/gracl_fs.c linux-3.0.9/grsecurity/gracl_fs.c
33279 + if (unlikely(!dentry->d_inode))
33280 + return reqmode;
33281 +
33282 -+ if (unlikely(fmode & O_APPEND))
33283 ++ if (acc_mode & MAY_APPEND)
33284 + reqmode |= GR_APPEND;
33285 -+ else if (unlikely(fmode & FMODE_WRITE))
33286 ++ else if (acc_mode & MAY_WRITE)
33287 + reqmode |= GR_WRITE;
33288 -+ if (likely((fmode & FMODE_READ) && !(fmode & O_DIRECTORY)))
33289 ++ if ((acc_mode & MAY_READ) && !S_ISDIR(dentry->d_inode->i_mode))
33290 + reqmode |= GR_READ;
33291 -+ if ((fmode & FMODE_GREXEC) && (fmode & __FMODE_EXEC))
33292 -+ reqmode &= ~GR_READ;
33293 ++
33294 + mode =
33295 + gr_search_file(dentry, reqmode | to_gr_audit(reqmode) | GR_SUPPRESS,
33296 + mnt);
33297 @@ -51750,17 +51603,20 @@ diff -urNp linux-3.0.9/grsecurity/gracl_fs.c linux-3.0.9/grsecurity/gracl_fs.c
33298 +__u32
33299 +gr_acl_handle_creat(const struct dentry * dentry,
33300 + const struct dentry * p_dentry,
33301 -+ const struct vfsmount * p_mnt, const int fmode,
33302 ++ const struct vfsmount * p_mnt, int open_flags, int acc_mode,
33303 + const int imode)
33304 +{
33305 + __u32 reqmode = GR_WRITE | GR_CREATE;
33306 + __u32 mode;
33307 +
33308 -+ if (unlikely(fmode & O_APPEND))
33309 ++ if (acc_mode & MAY_APPEND)
33310 + reqmode |= GR_APPEND;
33311 -+ if (unlikely((fmode & FMODE_READ) && !(fmode & O_DIRECTORY)))
33312 ++ // if a directory was required or the directory already exists, then
33313 ++ // don't count this open as a read
33314 ++ if ((acc_mode & MAY_READ) &&
33315 ++ !((open_flags & O_DIRECTORY) || (dentry->d_inode && S_ISDIR(dentry->d_inode->i_mode))))
33316 + reqmode |= GR_READ;
33317 -+ if (unlikely((fmode & O_CREAT) && (imode & (S_ISUID | S_ISGID))))
33318 ++ if ((open_flags & O_CREAT) && (imode & (S_ISUID | S_ISGID)))
33319 + reqmode |= GR_SETID;
33320 +
33321 + mode =
33322 @@ -52102,9 +51958,9 @@ diff -urNp linux-3.0.9/grsecurity/gracl_fs.c linux-3.0.9/grsecurity/gracl_fs.c
33323 +
33324 + return 0;
33325 +}
33326 -diff -urNp linux-3.0.9/grsecurity/gracl_ip.c linux-3.0.9/grsecurity/gracl_ip.c
33327 ---- linux-3.0.9/grsecurity/gracl_ip.c 1969-12-31 19:00:00.000000000 -0500
33328 -+++ linux-3.0.9/grsecurity/gracl_ip.c 2011-11-15 20:02:59.000000000 -0500
33329 +diff -urNp linux-3.1.1/grsecurity/gracl_ip.c linux-3.1.1/grsecurity/gracl_ip.c
33330 +--- linux-3.1.1/grsecurity/gracl_ip.c 1969-12-31 19:00:00.000000000 -0500
33331 ++++ linux-3.1.1/grsecurity/gracl_ip.c 2011-11-16 18:40:31.000000000 -0500
33332 @@ -0,0 +1,381 @@
33333 +#include <linux/kernel.h>
33334 +#include <asm/uaccess.h>
33335 @@ -52487,9 +52343,9 @@ diff -urNp linux-3.0.9/grsecurity/gracl_ip.c linux-3.0.9/grsecurity/gracl_ip.c
33336 +
33337 + return gr_search_connectbind(GR_CONNECT | GR_CONNECTOVERRIDE, sk, &sin, SOCK_DGRAM);
33338 +}
33339 -diff -urNp linux-3.0.9/grsecurity/gracl_learn.c linux-3.0.9/grsecurity/gracl_learn.c
33340 ---- linux-3.0.9/grsecurity/gracl_learn.c 1969-12-31 19:00:00.000000000 -0500
33341 -+++ linux-3.0.9/grsecurity/gracl_learn.c 2011-11-15 20:02:59.000000000 -0500
33342 +diff -urNp linux-3.1.1/grsecurity/gracl_learn.c linux-3.1.1/grsecurity/gracl_learn.c
33343 +--- linux-3.1.1/grsecurity/gracl_learn.c 1969-12-31 19:00:00.000000000 -0500
33344 ++++ linux-3.1.1/grsecurity/gracl_learn.c 2011-11-16 18:40:31.000000000 -0500
33345 @@ -0,0 +1,207 @@
33346 +#include <linux/kernel.h>
33347 +#include <linux/mm.h>
33348 @@ -52698,9 +52554,9 @@ diff -urNp linux-3.0.9/grsecurity/gracl_learn.c linux-3.0.9/grsecurity/gracl_lea
33349 + .release = close_learn,
33350 + .poll = poll_learn,
33351 +};
33352 -diff -urNp linux-3.0.9/grsecurity/gracl_res.c linux-3.0.9/grsecurity/gracl_res.c
33353 ---- linux-3.0.9/grsecurity/gracl_res.c 1969-12-31 19:00:00.000000000 -0500
33354 -+++ linux-3.0.9/grsecurity/gracl_res.c 2011-11-15 20:02:59.000000000 -0500
33355 +diff -urNp linux-3.1.1/grsecurity/gracl_res.c linux-3.1.1/grsecurity/gracl_res.c
33356 +--- linux-3.1.1/grsecurity/gracl_res.c 1969-12-31 19:00:00.000000000 -0500
33357 ++++ linux-3.1.1/grsecurity/gracl_res.c 2011-11-16 18:40:31.000000000 -0500
33358 @@ -0,0 +1,68 @@
33359 +#include <linux/kernel.h>
33360 +#include <linux/sched.h>
33361 @@ -52770,9 +52626,9 @@ diff -urNp linux-3.0.9/grsecurity/gracl_res.c linux-3.0.9/grsecurity/gracl_res.c
33362 + rcu_read_unlock();
33363 + return;
33364 +}
33365 -diff -urNp linux-3.0.9/grsecurity/gracl_segv.c linux-3.0.9/grsecurity/gracl_segv.c
33366 ---- linux-3.0.9/grsecurity/gracl_segv.c 1969-12-31 19:00:00.000000000 -0500
33367 -+++ linux-3.0.9/grsecurity/gracl_segv.c 2011-11-15 20:02:59.000000000 -0500
33368 +diff -urNp linux-3.1.1/grsecurity/gracl_segv.c linux-3.1.1/grsecurity/gracl_segv.c
33369 +--- linux-3.1.1/grsecurity/gracl_segv.c 1969-12-31 19:00:00.000000000 -0500
33370 ++++ linux-3.1.1/grsecurity/gracl_segv.c 2011-11-16 18:40:31.000000000 -0500
33371 @@ -0,0 +1,299 @@
33372 +#include <linux/kernel.h>
33373 +#include <linux/mm.h>
33374 @@ -53073,9 +52929,9 @@ diff -urNp linux-3.0.9/grsecurity/gracl_segv.c linux-3.0.9/grsecurity/gracl_segv
33375 +
33376 + return;
33377 +}
33378 -diff -urNp linux-3.0.9/grsecurity/gracl_shm.c linux-3.0.9/grsecurity/gracl_shm.c
33379 ---- linux-3.0.9/grsecurity/gracl_shm.c 1969-12-31 19:00:00.000000000 -0500
33380 -+++ linux-3.0.9/grsecurity/gracl_shm.c 2011-11-15 20:02:59.000000000 -0500
33381 +diff -urNp linux-3.1.1/grsecurity/gracl_shm.c linux-3.1.1/grsecurity/gracl_shm.c
33382 +--- linux-3.1.1/grsecurity/gracl_shm.c 1969-12-31 19:00:00.000000000 -0500
33383 ++++ linux-3.1.1/grsecurity/gracl_shm.c 2011-11-16 18:40:31.000000000 -0500
33384 @@ -0,0 +1,40 @@
33385 +#include <linux/kernel.h>
33386 +#include <linux/mm.h>
33387 @@ -53117,9 +52973,9 @@ diff -urNp linux-3.0.9/grsecurity/gracl_shm.c linux-3.0.9/grsecurity/gracl_shm.c
33388 +
33389 + return 1;
33390 +}
33391 -diff -urNp linux-3.0.9/grsecurity/grsec_chdir.c linux-3.0.9/grsecurity/grsec_chdir.c
33392 ---- linux-3.0.9/grsecurity/grsec_chdir.c 1969-12-31 19:00:00.000000000 -0500
33393 -+++ linux-3.0.9/grsecurity/grsec_chdir.c 2011-11-15 20:02:59.000000000 -0500
33394 +diff -urNp linux-3.1.1/grsecurity/grsec_chdir.c linux-3.1.1/grsecurity/grsec_chdir.c
33395 +--- linux-3.1.1/grsecurity/grsec_chdir.c 1969-12-31 19:00:00.000000000 -0500
33396 ++++ linux-3.1.1/grsecurity/grsec_chdir.c 2011-11-16 18:40:31.000000000 -0500
33397 @@ -0,0 +1,19 @@
33398 +#include <linux/kernel.h>
33399 +#include <linux/sched.h>
33400 @@ -53140,9 +52996,9 @@ diff -urNp linux-3.0.9/grsecurity/grsec_chdir.c linux-3.0.9/grsecurity/grsec_chd
33401 +#endif
33402 + return;
33403 +}
33404 -diff -urNp linux-3.0.9/grsecurity/grsec_chroot.c linux-3.0.9/grsecurity/grsec_chroot.c
33405 ---- linux-3.0.9/grsecurity/grsec_chroot.c 1969-12-31 19:00:00.000000000 -0500
33406 -+++ linux-3.0.9/grsecurity/grsec_chroot.c 2011-11-15 20:02:59.000000000 -0500
33407 +diff -urNp linux-3.1.1/grsecurity/grsec_chroot.c linux-3.1.1/grsecurity/grsec_chroot.c
33408 +--- linux-3.1.1/grsecurity/grsec_chroot.c 1969-12-31 19:00:00.000000000 -0500
33409 ++++ linux-3.1.1/grsecurity/grsec_chroot.c 2011-11-16 18:40:31.000000000 -0500
33410 @@ -0,0 +1,351 @@
33411 +#include <linux/kernel.h>
33412 +#include <linux/module.h>
33413 @@ -53495,9 +53351,9 @@ diff -urNp linux-3.0.9/grsecurity/grsec_chroot.c linux-3.0.9/grsecurity/grsec_ch
33414 +#endif
33415 + return 0;
33416 +}
33417 -diff -urNp linux-3.0.9/grsecurity/grsec_disabled.c linux-3.0.9/grsecurity/grsec_disabled.c
33418 ---- linux-3.0.9/grsecurity/grsec_disabled.c 1969-12-31 19:00:00.000000000 -0500
33419 -+++ linux-3.0.9/grsecurity/grsec_disabled.c 2011-11-15 20:02:59.000000000 -0500
33420 +diff -urNp linux-3.1.1/grsecurity/grsec_disabled.c linux-3.1.1/grsecurity/grsec_disabled.c
33421 +--- linux-3.1.1/grsecurity/grsec_disabled.c 1969-12-31 19:00:00.000000000 -0500
33422 ++++ linux-3.1.1/grsecurity/grsec_disabled.c 2011-11-17 00:16:25.000000000 -0500
33423 @@ -0,0 +1,439 @@
33424 +#include <linux/kernel.h>
33425 +#include <linux/module.h>
33426 @@ -53693,7 +53549,7 @@ diff -urNp linux-3.0.9/grsecurity/grsec_disabled.c linux-3.0.9/grsecurity/grsec_
33427 +
33428 +__u32
33429 +gr_acl_handle_open(const struct dentry * dentry, const struct vfsmount * mnt,
33430 -+ const int fmode)
33431 ++ int acc_mode)
33432 +{
33433 + return 1;
33434 +}
33435 @@ -53862,7 +53718,7 @@ diff -urNp linux-3.0.9/grsecurity/grsec_disabled.c linux-3.0.9/grsecurity/grsec_
33436 +__u32
33437 +gr_acl_handle_creat(const struct dentry * dentry,
33438 + const struct dentry * p_dentry,
33439 -+ const struct vfsmount * p_mnt, const int fmode,
33440 ++ const struct vfsmount * p_mnt, int open_flags, int acc_mode,
33441 + const int imode)
33442 +{
33443 + return 1;
33444 @@ -53938,9 +53794,9 @@ diff -urNp linux-3.0.9/grsecurity/grsec_disabled.c linux-3.0.9/grsecurity/grsec_
33445 +EXPORT_SYMBOL(gr_check_user_change);
33446 +EXPORT_SYMBOL(gr_check_group_change);
33447 +#endif
33448 -diff -urNp linux-3.0.9/grsecurity/grsec_exec.c linux-3.0.9/grsecurity/grsec_exec.c
33449 ---- linux-3.0.9/grsecurity/grsec_exec.c 1969-12-31 19:00:00.000000000 -0500
33450 -+++ linux-3.0.9/grsecurity/grsec_exec.c 2011-11-15 20:02:59.000000000 -0500
33451 +diff -urNp linux-3.1.1/grsecurity/grsec_exec.c linux-3.1.1/grsecurity/grsec_exec.c
33452 +--- linux-3.1.1/grsecurity/grsec_exec.c 1969-12-31 19:00:00.000000000 -0500
33453 ++++ linux-3.1.1/grsecurity/grsec_exec.c 2011-11-16 18:40:31.000000000 -0500
33454 @@ -0,0 +1,146 @@
33455 +#include <linux/kernel.h>
33456 +#include <linux/sched.h>
33457 @@ -54088,9 +53944,9 @@ diff -urNp linux-3.0.9/grsecurity/grsec_exec.c linux-3.0.9/grsecurity/grsec_exec
33458 +
33459 +EXPORT_SYMBOL(gr_is_capable);
33460 +EXPORT_SYMBOL(gr_is_capable_nolog);
33461 -diff -urNp linux-3.0.9/grsecurity/grsec_fifo.c linux-3.0.9/grsecurity/grsec_fifo.c
33462 ---- linux-3.0.9/grsecurity/grsec_fifo.c 1969-12-31 19:00:00.000000000 -0500
33463 -+++ linux-3.0.9/grsecurity/grsec_fifo.c 2011-11-15 20:02:59.000000000 -0500
33464 +diff -urNp linux-3.1.1/grsecurity/grsec_fifo.c linux-3.1.1/grsecurity/grsec_fifo.c
33465 +--- linux-3.1.1/grsecurity/grsec_fifo.c 1969-12-31 19:00:00.000000000 -0500
33466 ++++ linux-3.1.1/grsecurity/grsec_fifo.c 2011-11-16 18:40:31.000000000 -0500
33467 @@ -0,0 +1,24 @@
33468 +#include <linux/kernel.h>
33469 +#include <linux/sched.h>
33470 @@ -54116,9 +53972,9 @@ diff -urNp linux-3.0.9/grsecurity/grsec_fifo.c linux-3.0.9/grsecurity/grsec_fifo
33471 +#endif
33472 + return 0;
33473 +}
33474 -diff -urNp linux-3.0.9/grsecurity/grsec_fork.c linux-3.0.9/grsecurity/grsec_fork.c
33475 ---- linux-3.0.9/grsecurity/grsec_fork.c 1969-12-31 19:00:00.000000000 -0500
33476 -+++ linux-3.0.9/grsecurity/grsec_fork.c 2011-11-15 20:02:59.000000000 -0500
33477 +diff -urNp linux-3.1.1/grsecurity/grsec_fork.c linux-3.1.1/grsecurity/grsec_fork.c
33478 +--- linux-3.1.1/grsecurity/grsec_fork.c 1969-12-31 19:00:00.000000000 -0500
33479 ++++ linux-3.1.1/grsecurity/grsec_fork.c 2011-11-16 18:40:31.000000000 -0500
33480 @@ -0,0 +1,23 @@
33481 +#include <linux/kernel.h>
33482 +#include <linux/sched.h>
33483 @@ -54143,9 +53999,9 @@ diff -urNp linux-3.0.9/grsecurity/grsec_fork.c linux-3.0.9/grsecurity/grsec_fork
33484 +#endif
33485 + return;
33486 +}
33487 -diff -urNp linux-3.0.9/grsecurity/grsec_init.c linux-3.0.9/grsecurity/grsec_init.c
33488 ---- linux-3.0.9/grsecurity/grsec_init.c 1969-12-31 19:00:00.000000000 -0500
33489 -+++ linux-3.0.9/grsecurity/grsec_init.c 2011-11-15 20:02:59.000000000 -0500
33490 +diff -urNp linux-3.1.1/grsecurity/grsec_init.c linux-3.1.1/grsecurity/grsec_init.c
33491 +--- linux-3.1.1/grsecurity/grsec_init.c 1969-12-31 19:00:00.000000000 -0500
33492 ++++ linux-3.1.1/grsecurity/grsec_init.c 2011-11-16 18:40:31.000000000 -0500
33493 @@ -0,0 +1,269 @@
33494 +#include <linux/kernel.h>
33495 +#include <linux/sched.h>
33496 @@ -54416,9 +54272,9 @@ diff -urNp linux-3.0.9/grsecurity/grsec_init.c linux-3.0.9/grsecurity/grsec_init
33497 +
33498 + return;
33499 +}
33500 -diff -urNp linux-3.0.9/grsecurity/grsec_link.c linux-3.0.9/grsecurity/grsec_link.c
33501 ---- linux-3.0.9/grsecurity/grsec_link.c 1969-12-31 19:00:00.000000000 -0500
33502 -+++ linux-3.0.9/grsecurity/grsec_link.c 2011-11-15 20:02:59.000000000 -0500
33503 +diff -urNp linux-3.1.1/grsecurity/grsec_link.c linux-3.1.1/grsecurity/grsec_link.c
33504 +--- linux-3.1.1/grsecurity/grsec_link.c 1969-12-31 19:00:00.000000000 -0500
33505 ++++ linux-3.1.1/grsecurity/grsec_link.c 2011-11-16 18:40:31.000000000 -0500
33506 @@ -0,0 +1,43 @@
33507 +#include <linux/kernel.h>
33508 +#include <linux/sched.h>
33509 @@ -54463,9 +54319,9 @@ diff -urNp linux-3.0.9/grsecurity/grsec_link.c linux-3.0.9/grsecurity/grsec_link
33510 +#endif
33511 + return 0;
33512 +}
33513 -diff -urNp linux-3.0.9/grsecurity/grsec_log.c linux-3.0.9/grsecurity/grsec_log.c
33514 ---- linux-3.0.9/grsecurity/grsec_log.c 1969-12-31 19:00:00.000000000 -0500
33515 -+++ linux-3.0.9/grsecurity/grsec_log.c 2011-11-15 20:02:59.000000000 -0500
33516 +diff -urNp linux-3.1.1/grsecurity/grsec_log.c linux-3.1.1/grsecurity/grsec_log.c
33517 +--- linux-3.1.1/grsecurity/grsec_log.c 1969-12-31 19:00:00.000000000 -0500
33518 ++++ linux-3.1.1/grsecurity/grsec_log.c 2011-11-16 18:40:31.000000000 -0500
33519 @@ -0,0 +1,322 @@
33520 +#include <linux/kernel.h>
33521 +#include <linux/sched.h>
33522 @@ -54789,9 +54645,9 @@ diff -urNp linux-3.0.9/grsecurity/grsec_log.c linux-3.0.9/grsecurity/grsec_log.c
33523 + gr_log_end(audit, 1);
33524 + END_LOCKS(audit);
33525 +}
33526 -diff -urNp linux-3.0.9/grsecurity/grsec_mem.c linux-3.0.9/grsecurity/grsec_mem.c
33527 ---- linux-3.0.9/grsecurity/grsec_mem.c 1969-12-31 19:00:00.000000000 -0500
33528 -+++ linux-3.0.9/grsecurity/grsec_mem.c 2011-11-15 20:02:59.000000000 -0500
33529 +diff -urNp linux-3.1.1/grsecurity/grsec_mem.c linux-3.1.1/grsecurity/grsec_mem.c
33530 +--- linux-3.1.1/grsecurity/grsec_mem.c 1969-12-31 19:00:00.000000000 -0500
33531 ++++ linux-3.1.1/grsecurity/grsec_mem.c 2011-11-16 18:40:31.000000000 -0500
33532 @@ -0,0 +1,33 @@
33533 +#include <linux/kernel.h>
33534 +#include <linux/sched.h>
33535 @@ -54826,9 +54682,9 @@ diff -urNp linux-3.0.9/grsecurity/grsec_mem.c linux-3.0.9/grsecurity/grsec_mem.c
33536 + gr_log_noargs(GR_DONT_AUDIT, GR_VM86_MSG);
33537 + return;
33538 +}
33539 -diff -urNp linux-3.0.9/grsecurity/grsec_mount.c linux-3.0.9/grsecurity/grsec_mount.c
33540 ---- linux-3.0.9/grsecurity/grsec_mount.c 1969-12-31 19:00:00.000000000 -0500
33541 -+++ linux-3.0.9/grsecurity/grsec_mount.c 2011-11-15 20:02:59.000000000 -0500
33542 +diff -urNp linux-3.1.1/grsecurity/grsec_mount.c linux-3.1.1/grsecurity/grsec_mount.c
33543 +--- linux-3.1.1/grsecurity/grsec_mount.c 1969-12-31 19:00:00.000000000 -0500
33544 ++++ linux-3.1.1/grsecurity/grsec_mount.c 2011-11-16 18:40:31.000000000 -0500
33545 @@ -0,0 +1,62 @@
33546 +#include <linux/kernel.h>
33547 +#include <linux/sched.h>
33548 @@ -54892,9 +54748,9 @@ diff -urNp linux-3.0.9/grsecurity/grsec_mount.c linux-3.0.9/grsecurity/grsec_mou
33549 +#endif
33550 + return 0;
33551 +}
33552 -diff -urNp linux-3.0.9/grsecurity/grsec_pax.c linux-3.0.9/grsecurity/grsec_pax.c
33553 ---- linux-3.0.9/grsecurity/grsec_pax.c 1969-12-31 19:00:00.000000000 -0500
33554 -+++ linux-3.0.9/grsecurity/grsec_pax.c 2011-11-15 20:02:59.000000000 -0500
33555 +diff -urNp linux-3.1.1/grsecurity/grsec_pax.c linux-3.1.1/grsecurity/grsec_pax.c
33556 +--- linux-3.1.1/grsecurity/grsec_pax.c 1969-12-31 19:00:00.000000000 -0500
33557 ++++ linux-3.1.1/grsecurity/grsec_pax.c 2011-11-16 18:40:31.000000000 -0500
33558 @@ -0,0 +1,36 @@
33559 +#include <linux/kernel.h>
33560 +#include <linux/sched.h>
33561 @@ -54932,9 +54788,9 @@ diff -urNp linux-3.0.9/grsecurity/grsec_pax.c linux-3.0.9/grsecurity/grsec_pax.c
33562 +#endif
33563 + return;
33564 +}
33565 -diff -urNp linux-3.0.9/grsecurity/grsec_ptrace.c linux-3.0.9/grsecurity/grsec_ptrace.c
33566 ---- linux-3.0.9/grsecurity/grsec_ptrace.c 1969-12-31 19:00:00.000000000 -0500
33567 -+++ linux-3.0.9/grsecurity/grsec_ptrace.c 2011-11-15 20:02:59.000000000 -0500
33568 +diff -urNp linux-3.1.1/grsecurity/grsec_ptrace.c linux-3.1.1/grsecurity/grsec_ptrace.c
33569 +--- linux-3.1.1/grsecurity/grsec_ptrace.c 1969-12-31 19:00:00.000000000 -0500
33570 ++++ linux-3.1.1/grsecurity/grsec_ptrace.c 2011-11-16 18:40:31.000000000 -0500
33571 @@ -0,0 +1,14 @@
33572 +#include <linux/kernel.h>
33573 +#include <linux/sched.h>
33574 @@ -54950,9 +54806,9 @@ diff -urNp linux-3.0.9/grsecurity/grsec_ptrace.c linux-3.0.9/grsecurity/grsec_pt
33575 +#endif
33576 + return;
33577 +}
33578 -diff -urNp linux-3.0.9/grsecurity/grsec_sig.c linux-3.0.9/grsecurity/grsec_sig.c
33579 ---- linux-3.0.9/grsecurity/grsec_sig.c 1969-12-31 19:00:00.000000000 -0500
33580 -+++ linux-3.0.9/grsecurity/grsec_sig.c 2011-11-15 20:02:59.000000000 -0500
33581 +diff -urNp linux-3.1.1/grsecurity/grsec_sig.c linux-3.1.1/grsecurity/grsec_sig.c
33582 +--- linux-3.1.1/grsecurity/grsec_sig.c 1969-12-31 19:00:00.000000000 -0500
33583 ++++ linux-3.1.1/grsecurity/grsec_sig.c 2011-11-16 18:40:31.000000000 -0500
33584 @@ -0,0 +1,206 @@
33585 +#include <linux/kernel.h>
33586 +#include <linux/sched.h>
33587 @@ -55160,9 +55016,9 @@ diff -urNp linux-3.0.9/grsecurity/grsec_sig.c linux-3.0.9/grsecurity/grsec_sig.c
33588 +#endif
33589 + return 0;
33590 +}
33591 -diff -urNp linux-3.0.9/grsecurity/grsec_sock.c linux-3.0.9/grsecurity/grsec_sock.c
33592 ---- linux-3.0.9/grsecurity/grsec_sock.c 1969-12-31 19:00:00.000000000 -0500
33593 -+++ linux-3.0.9/grsecurity/grsec_sock.c 2011-11-15 20:02:59.000000000 -0500
33594 +diff -urNp linux-3.1.1/grsecurity/grsec_sock.c linux-3.1.1/grsecurity/grsec_sock.c
33595 +--- linux-3.1.1/grsecurity/grsec_sock.c 1969-12-31 19:00:00.000000000 -0500
33596 ++++ linux-3.1.1/grsecurity/grsec_sock.c 2011-11-16 18:40:31.000000000 -0500
33597 @@ -0,0 +1,244 @@
33598 +#include <linux/kernel.h>
33599 +#include <linux/module.h>
33600 @@ -55408,9 +55264,9 @@ diff -urNp linux-3.0.9/grsecurity/grsec_sock.c linux-3.0.9/grsecurity/grsec_sock
33601 +#endif
33602 + return 0;
33603 +}
33604 -diff -urNp linux-3.0.9/grsecurity/grsec_sysctl.c linux-3.0.9/grsecurity/grsec_sysctl.c
33605 ---- linux-3.0.9/grsecurity/grsec_sysctl.c 1969-12-31 19:00:00.000000000 -0500
33606 -+++ linux-3.0.9/grsecurity/grsec_sysctl.c 2011-11-15 20:02:59.000000000 -0500
33607 +diff -urNp linux-3.1.1/grsecurity/grsec_sysctl.c linux-3.1.1/grsecurity/grsec_sysctl.c
33608 +--- linux-3.1.1/grsecurity/grsec_sysctl.c 1969-12-31 19:00:00.000000000 -0500
33609 ++++ linux-3.1.1/grsecurity/grsec_sysctl.c 2011-11-16 18:40:31.000000000 -0500
33610 @@ -0,0 +1,433 @@
33611 +#include <linux/kernel.h>
33612 +#include <linux/sched.h>
33613 @@ -55845,9 +55701,9 @@ diff -urNp linux-3.0.9/grsecurity/grsec_sysctl.c linux-3.0.9/grsecurity/grsec_sy
33614 + { }
33615 +};
33616 +#endif
33617 -diff -urNp linux-3.0.9/grsecurity/grsec_time.c linux-3.0.9/grsecurity/grsec_time.c
33618 ---- linux-3.0.9/grsecurity/grsec_time.c 1969-12-31 19:00:00.000000000 -0500
33619 -+++ linux-3.0.9/grsecurity/grsec_time.c 2011-11-15 20:02:59.000000000 -0500
33620 +diff -urNp linux-3.1.1/grsecurity/grsec_time.c linux-3.1.1/grsecurity/grsec_time.c
33621 +--- linux-3.1.1/grsecurity/grsec_time.c 1969-12-31 19:00:00.000000000 -0500
33622 ++++ linux-3.1.1/grsecurity/grsec_time.c 2011-11-16 18:40:31.000000000 -0500
33623 @@ -0,0 +1,16 @@
33624 +#include <linux/kernel.h>
33625 +#include <linux/sched.h>
33626 @@ -55865,9 +55721,9 @@ diff -urNp linux-3.0.9/grsecurity/grsec_time.c linux-3.0.9/grsecurity/grsec_time
33627 +}
33628 +
33629 +EXPORT_SYMBOL(gr_log_timechange);
33630 -diff -urNp linux-3.0.9/grsecurity/grsec_tpe.c linux-3.0.9/grsecurity/grsec_tpe.c
33631 ---- linux-3.0.9/grsecurity/grsec_tpe.c 1969-12-31 19:00:00.000000000 -0500
33632 -+++ linux-3.0.9/grsecurity/grsec_tpe.c 2011-11-15 20:02:59.000000000 -0500
33633 +diff -urNp linux-3.1.1/grsecurity/grsec_tpe.c linux-3.1.1/grsecurity/grsec_tpe.c
33634 +--- linux-3.1.1/grsecurity/grsec_tpe.c 1969-12-31 19:00:00.000000000 -0500
33635 ++++ linux-3.1.1/grsecurity/grsec_tpe.c 2011-11-16 18:40:31.000000000 -0500
33636 @@ -0,0 +1,39 @@
33637 +#include <linux/kernel.h>
33638 +#include <linux/sched.h>
33639 @@ -55908,9 +55764,9 @@ diff -urNp linux-3.0.9/grsecurity/grsec_tpe.c linux-3.0.9/grsecurity/grsec_tpe.c
33640 +#endif
33641 + return 1;
33642 +}
33643 -diff -urNp linux-3.0.9/grsecurity/grsum.c linux-3.0.9/grsecurity/grsum.c
33644 ---- linux-3.0.9/grsecurity/grsum.c 1969-12-31 19:00:00.000000000 -0500
33645 -+++ linux-3.0.9/grsecurity/grsum.c 2011-11-15 20:02:59.000000000 -0500
33646 +diff -urNp linux-3.1.1/grsecurity/grsum.c linux-3.1.1/grsecurity/grsum.c
33647 +--- linux-3.1.1/grsecurity/grsum.c 1969-12-31 19:00:00.000000000 -0500
33648 ++++ linux-3.1.1/grsecurity/grsum.c 2011-11-16 18:40:31.000000000 -0500
33649 @@ -0,0 +1,61 @@
33650 +#include <linux/err.h>
33651 +#include <linux/kernel.h>
33652 @@ -55973,9 +55829,9 @@ diff -urNp linux-3.0.9/grsecurity/grsum.c linux-3.0.9/grsecurity/grsum.c
33653 +
33654 + return retval;
33655 +}
33656 -diff -urNp linux-3.0.9/grsecurity/Kconfig linux-3.0.9/grsecurity/Kconfig
33657 ---- linux-3.0.9/grsecurity/Kconfig 1969-12-31 19:00:00.000000000 -0500
33658 -+++ linux-3.0.9/grsecurity/Kconfig 2011-11-15 20:02:59.000000000 -0500
33659 +diff -urNp linux-3.1.1/grsecurity/Kconfig linux-3.1.1/grsecurity/Kconfig
33660 +--- linux-3.1.1/grsecurity/Kconfig 1969-12-31 19:00:00.000000000 -0500
33661 ++++ linux-3.1.1/grsecurity/Kconfig 2011-11-16 18:40:31.000000000 -0500
33662 @@ -0,0 +1,1037 @@
33663 +#
33664 +# grecurity configuration
33665 @@ -57014,9 +56870,9 @@ diff -urNp linux-3.0.9/grsecurity/Kconfig linux-3.0.9/grsecurity/Kconfig
33666 +endmenu
33667 +
33668 +endmenu
33669 -diff -urNp linux-3.0.9/grsecurity/Makefile linux-3.0.9/grsecurity/Makefile
33670 ---- linux-3.0.9/grsecurity/Makefile 1969-12-31 19:00:00.000000000 -0500
33671 -+++ linux-3.0.9/grsecurity/Makefile 2011-11-15 20:02:59.000000000 -0500
33672 +diff -urNp linux-3.1.1/grsecurity/Makefile linux-3.1.1/grsecurity/Makefile
33673 +--- linux-3.1.1/grsecurity/Makefile 1969-12-31 19:00:00.000000000 -0500
33674 ++++ linux-3.1.1/grsecurity/Makefile 2011-11-16 18:40:31.000000000 -0500
33675 @@ -0,0 +1,36 @@
33676 +# grsecurity's ACL system was originally written in 2001 by Michael Dalton
33677 +# during 2001-2009 it has been completely redesigned by Brad Spengler
33678 @@ -57054,9 +56910,9 @@ diff -urNp linux-3.0.9/grsecurity/Makefile linux-3.0.9/grsecurity/Makefile
33679 + @-chmod -f 700 .
33680 + @echo ' grsec: protected kernel image paths'
33681 +endif
33682 -diff -urNp linux-3.0.9/include/acpi/acpi_bus.h linux-3.0.9/include/acpi/acpi_bus.h
33683 ---- linux-3.0.9/include/acpi/acpi_bus.h 2011-11-11 13:12:24.000000000 -0500
33684 -+++ linux-3.0.9/include/acpi/acpi_bus.h 2011-11-15 20:02:59.000000000 -0500
33685 +diff -urNp linux-3.1.1/include/acpi/acpi_bus.h linux-3.1.1/include/acpi/acpi_bus.h
33686 +--- linux-3.1.1/include/acpi/acpi_bus.h 2011-11-11 15:19:27.000000000 -0500
33687 ++++ linux-3.1.1/include/acpi/acpi_bus.h 2011-11-16 18:39:08.000000000 -0500
33688 @@ -107,7 +107,7 @@ struct acpi_device_ops {
33689 acpi_op_bind bind;
33690 acpi_op_unbind unbind;
33691 @@ -57066,9 +56922,9 @@ diff -urNp linux-3.0.9/include/acpi/acpi_bus.h linux-3.0.9/include/acpi/acpi_bus
33692
33693 #define ACPI_DRIVER_ALL_NOTIFY_EVENTS 0x1 /* system AND device events */
33694
33695 -diff -urNp linux-3.0.9/include/asm-generic/atomic-long.h linux-3.0.9/include/asm-generic/atomic-long.h
33696 ---- linux-3.0.9/include/asm-generic/atomic-long.h 2011-11-11 13:12:24.000000000 -0500
33697 -+++ linux-3.0.9/include/asm-generic/atomic-long.h 2011-11-15 20:02:59.000000000 -0500
33698 +diff -urNp linux-3.1.1/include/asm-generic/atomic-long.h linux-3.1.1/include/asm-generic/atomic-long.h
33699 +--- linux-3.1.1/include/asm-generic/atomic-long.h 2011-11-11 15:19:27.000000000 -0500
33700 ++++ linux-3.1.1/include/asm-generic/atomic-long.h 2011-11-16 18:39:08.000000000 -0500
33701 @@ -22,6 +22,12 @@
33702
33703 typedef atomic64_t atomic_long_t;
33704 @@ -57369,9 +57225,9 @@ diff -urNp linux-3.0.9/include/asm-generic/atomic-long.h linux-3.0.9/include/asm
33705 +#endif
33706 +
33707 #endif /* _ASM_GENERIC_ATOMIC_LONG_H */
33708 -diff -urNp linux-3.0.9/include/asm-generic/cache.h linux-3.0.9/include/asm-generic/cache.h
33709 ---- linux-3.0.9/include/asm-generic/cache.h 2011-11-11 13:12:24.000000000 -0500
33710 -+++ linux-3.0.9/include/asm-generic/cache.h 2011-11-15 20:02:59.000000000 -0500
33711 +diff -urNp linux-3.1.1/include/asm-generic/cache.h linux-3.1.1/include/asm-generic/cache.h
33712 +--- linux-3.1.1/include/asm-generic/cache.h 2011-11-11 15:19:27.000000000 -0500
33713 ++++ linux-3.1.1/include/asm-generic/cache.h 2011-11-16 18:39:08.000000000 -0500
33714 @@ -6,7 +6,7 @@
33715 * cache lines need to provide their own cache.h.
33716 */
33717 @@ -57382,9 +57238,9 @@ diff -urNp linux-3.0.9/include/asm-generic/cache.h linux-3.0.9/include/asm-gener
33718 +#define L1_CACHE_BYTES (1UL << L1_CACHE_SHIFT)
33719
33720 #endif /* __ASM_GENERIC_CACHE_H */
33721 -diff -urNp linux-3.0.9/include/asm-generic/int-l64.h linux-3.0.9/include/asm-generic/int-l64.h
33722 ---- linux-3.0.9/include/asm-generic/int-l64.h 2011-11-11 13:12:24.000000000 -0500
33723 -+++ linux-3.0.9/include/asm-generic/int-l64.h 2011-11-15 20:02:59.000000000 -0500
33724 +diff -urNp linux-3.1.1/include/asm-generic/int-l64.h linux-3.1.1/include/asm-generic/int-l64.h
33725 +--- linux-3.1.1/include/asm-generic/int-l64.h 2011-11-11 15:19:27.000000000 -0500
33726 ++++ linux-3.1.1/include/asm-generic/int-l64.h 2011-11-16 18:39:08.000000000 -0500
33727 @@ -46,6 +46,8 @@ typedef unsigned int u32;
33728 typedef signed long s64;
33729 typedef unsigned long u64;
33730 @@ -57394,9 +57250,9 @@ diff -urNp linux-3.0.9/include/asm-generic/int-l64.h linux-3.0.9/include/asm-gen
33731 #define S8_C(x) x
33732 #define U8_C(x) x ## U
33733 #define S16_C(x) x
33734 -diff -urNp linux-3.0.9/include/asm-generic/int-ll64.h linux-3.0.9/include/asm-generic/int-ll64.h
33735 ---- linux-3.0.9/include/asm-generic/int-ll64.h 2011-11-11 13:12:24.000000000 -0500
33736 -+++ linux-3.0.9/include/asm-generic/int-ll64.h 2011-11-15 20:02:59.000000000 -0500
33737 +diff -urNp linux-3.1.1/include/asm-generic/int-ll64.h linux-3.1.1/include/asm-generic/int-ll64.h
33738 +--- linux-3.1.1/include/asm-generic/int-ll64.h 2011-11-11 15:19:27.000000000 -0500
33739 ++++ linux-3.1.1/include/asm-generic/int-ll64.h 2011-11-16 18:39:08.000000000 -0500
33740 @@ -51,6 +51,8 @@ typedef unsigned int u32;
33741 typedef signed long long s64;
33742 typedef unsigned long long u64;
33743 @@ -57406,9 +57262,9 @@ diff -urNp linux-3.0.9/include/asm-generic/int-ll64.h linux-3.0.9/include/asm-ge
33744 #define S8_C(x) x
33745 #define U8_C(x) x ## U
33746 #define S16_C(x) x
33747 -diff -urNp linux-3.0.9/include/asm-generic/kmap_types.h linux-3.0.9/include/asm-generic/kmap_types.h
33748 ---- linux-3.0.9/include/asm-generic/kmap_types.h 2011-11-11 13:12:24.000000000 -0500
33749 -+++ linux-3.0.9/include/asm-generic/kmap_types.h 2011-11-15 20:02:59.000000000 -0500
33750 +diff -urNp linux-3.1.1/include/asm-generic/kmap_types.h linux-3.1.1/include/asm-generic/kmap_types.h
33751 +--- linux-3.1.1/include/asm-generic/kmap_types.h 2011-11-11 15:19:27.000000000 -0500
33752 ++++ linux-3.1.1/include/asm-generic/kmap_types.h 2011-11-16 18:39:08.000000000 -0500
33753 @@ -29,10 +29,11 @@ KMAP_D(16) KM_IRQ_PTE,
33754 KMAP_D(17) KM_NMI,
33755 KMAP_D(18) KM_NMI_PTE,
33756 @@ -57422,9 +57278,9 @@ diff -urNp linux-3.0.9/include/asm-generic/kmap_types.h linux-3.0.9/include/asm-
33757 };
33758
33759 #undef KMAP_D
33760 -diff -urNp linux-3.0.9/include/asm-generic/pgtable.h linux-3.0.9/include/asm-generic/pgtable.h
33761 ---- linux-3.0.9/include/asm-generic/pgtable.h 2011-11-11 13:12:24.000000000 -0500
33762 -+++ linux-3.0.9/include/asm-generic/pgtable.h 2011-11-15 20:02:59.000000000 -0500
33763 +diff -urNp linux-3.1.1/include/asm-generic/pgtable.h linux-3.1.1/include/asm-generic/pgtable.h
33764 +--- linux-3.1.1/include/asm-generic/pgtable.h 2011-11-11 15:19:27.000000000 -0500
33765 ++++ linux-3.1.1/include/asm-generic/pgtable.h 2011-11-16 18:39:08.000000000 -0500
33766 @@ -443,6 +443,14 @@ static inline int pmd_write(pmd_t pmd)
33767 #endif /* __HAVE_ARCH_PMD_WRITE */
33768 #endif
33769 @@ -57440,9 +57296,9 @@ diff -urNp linux-3.0.9/include/asm-generic/pgtable.h linux-3.0.9/include/asm-gen
33770 #endif /* !__ASSEMBLY__ */
33771
33772 #endif /* _ASM_GENERIC_PGTABLE_H */
33773 -diff -urNp linux-3.0.9/include/asm-generic/pgtable-nopmd.h linux-3.0.9/include/asm-generic/pgtable-nopmd.h
33774 ---- linux-3.0.9/include/asm-generic/pgtable-nopmd.h 2011-11-11 13:12:24.000000000 -0500
33775 -+++ linux-3.0.9/include/asm-generic/pgtable-nopmd.h 2011-11-15 20:02:59.000000000 -0500
33776 +diff -urNp linux-3.1.1/include/asm-generic/pgtable-nopmd.h linux-3.1.1/include/asm-generic/pgtable-nopmd.h
33777 +--- linux-3.1.1/include/asm-generic/pgtable-nopmd.h 2011-11-11 15:19:27.000000000 -0500
33778 ++++ linux-3.1.1/include/asm-generic/pgtable-nopmd.h 2011-11-16 18:39:08.000000000 -0500
33779 @@ -1,14 +1,19 @@
33780 #ifndef _PGTABLE_NOPMD_H
33781 #define _PGTABLE_NOPMD_H
33782 @@ -57479,9 +57335,9 @@ diff -urNp linux-3.0.9/include/asm-generic/pgtable-nopmd.h linux-3.0.9/include/a
33783 /*
33784 * The "pud_xxx()" functions here are trivial for a folded two-level
33785 * setup: the pmd is never bad, and a pmd always exists (as it's folded
33786 -diff -urNp linux-3.0.9/include/asm-generic/pgtable-nopud.h linux-3.0.9/include/asm-generic/pgtable-nopud.h
33787 ---- linux-3.0.9/include/asm-generic/pgtable-nopud.h 2011-11-11 13:12:24.000000000 -0500
33788 -+++ linux-3.0.9/include/asm-generic/pgtable-nopud.h 2011-11-15 20:02:59.000000000 -0500
33789 +diff -urNp linux-3.1.1/include/asm-generic/pgtable-nopud.h linux-3.1.1/include/asm-generic/pgtable-nopud.h
33790 +--- linux-3.1.1/include/asm-generic/pgtable-nopud.h 2011-11-11 15:19:27.000000000 -0500
33791 ++++ linux-3.1.1/include/asm-generic/pgtable-nopud.h 2011-11-16 18:39:08.000000000 -0500
33792 @@ -1,10 +1,15 @@
33793 #ifndef _PGTABLE_NOPUD_H
33794 #define _PGTABLE_NOPUD_H
33795 @@ -57512,9 +57368,9 @@ diff -urNp linux-3.0.9/include/asm-generic/pgtable-nopud.h linux-3.0.9/include/a
33796 /*
33797 * The "pgd_xxx()" functions here are trivial for a folded two-level
33798 * setup: the pud is never bad, and a pud always exists (as it's folded
33799 -diff -urNp linux-3.0.9/include/asm-generic/vmlinux.lds.h linux-3.0.9/include/asm-generic/vmlinux.lds.h
33800 ---- linux-3.0.9/include/asm-generic/vmlinux.lds.h 2011-11-11 13:12:24.000000000 -0500
33801 -+++ linux-3.0.9/include/asm-generic/vmlinux.lds.h 2011-11-15 20:02:59.000000000 -0500
33802 +diff -urNp linux-3.1.1/include/asm-generic/vmlinux.lds.h linux-3.1.1/include/asm-generic/vmlinux.lds.h
33803 +--- linux-3.1.1/include/asm-generic/vmlinux.lds.h 2011-11-11 15:19:27.000000000 -0500
33804 ++++ linux-3.1.1/include/asm-generic/vmlinux.lds.h 2011-11-16 18:39:08.000000000 -0500
33805 @@ -217,6 +217,7 @@
33806 .rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \
33807 VMLINUX_SYMBOL(__start_rodata) = .; \
33808 @@ -57546,9 +57402,9 @@ diff -urNp linux-3.0.9/include/asm-generic/vmlinux.lds.h linux-3.0.9/include/asm
33809
33810 /**
33811 * PERCPU_SECTION - define output section for percpu area, simple version
33812 -diff -urNp linux-3.0.9/include/drm/drm_crtc_helper.h linux-3.0.9/include/drm/drm_crtc_helper.h
33813 ---- linux-3.0.9/include/drm/drm_crtc_helper.h 2011-11-11 13:12:24.000000000 -0500
33814 -+++ linux-3.0.9/include/drm/drm_crtc_helper.h 2011-11-15 20:02:59.000000000 -0500
33815 +diff -urNp linux-3.1.1/include/drm/drm_crtc_helper.h linux-3.1.1/include/drm/drm_crtc_helper.h
33816 +--- linux-3.1.1/include/drm/drm_crtc_helper.h 2011-11-11 15:19:27.000000000 -0500
33817 ++++ linux-3.1.1/include/drm/drm_crtc_helper.h 2011-11-16 18:39:08.000000000 -0500
33818 @@ -74,7 +74,7 @@ struct drm_crtc_helper_funcs {
33819
33820 /* disable crtc when not in use - more explicit than dpms off */
33821 @@ -57567,9 +57423,9 @@ diff -urNp linux-3.0.9/include/drm/drm_crtc_helper.h linux-3.0.9/include/drm/drm
33822
33823 struct drm_connector_helper_funcs {
33824 int (*get_modes)(struct drm_connector *connector);
33825 -diff -urNp linux-3.0.9/include/drm/drmP.h linux-3.0.9/include/drm/drmP.h
33826 ---- linux-3.0.9/include/drm/drmP.h 2011-11-11 13:12:24.000000000 -0500
33827 -+++ linux-3.0.9/include/drm/drmP.h 2011-11-15 20:02:59.000000000 -0500
33828 +diff -urNp linux-3.1.1/include/drm/drmP.h linux-3.1.1/include/drm/drmP.h
33829 +--- linux-3.1.1/include/drm/drmP.h 2011-11-11 15:19:27.000000000 -0500
33830 ++++ linux-3.1.1/include/drm/drmP.h 2011-11-16 18:39:08.000000000 -0500
33831 @@ -73,6 +73,7 @@
33832 #include <linux/workqueue.h>
33833 #include <linux/poll.h>
33834 @@ -57578,7 +57434,7 @@ diff -urNp linux-3.0.9/include/drm/drmP.h linux-3.0.9/include/drm/drmP.h
33835 #include "drm.h"
33836
33837 #include <linux/idr.h>
33838 -@@ -1033,7 +1034,7 @@ struct drm_device {
33839 +@@ -1035,7 +1036,7 @@ struct drm_device {
33840
33841 /** \name Usage Counters */
33842 /*@{ */
33843 @@ -57587,7 +57443,7 @@ diff -urNp linux-3.0.9/include/drm/drmP.h linux-3.0.9/include/drm/drmP.h
33844 atomic_t ioctl_count; /**< Outstanding IOCTLs pending */
33845 atomic_t vma_count; /**< Outstanding vma areas open */
33846 int buf_use; /**< Buffers in use -- cannot alloc */
33847 -@@ -1044,7 +1045,7 @@ struct drm_device {
33848 +@@ -1046,7 +1047,7 @@ struct drm_device {
33849 /*@{ */
33850 unsigned long counters;
33851 enum drm_stat_type types[15];
33852 @@ -57596,9 +57452,9 @@ diff -urNp linux-3.0.9/include/drm/drmP.h linux-3.0.9/include/drm/drmP.h
33853 /*@} */
33854
33855 struct list_head filelist;
33856 -diff -urNp linux-3.0.9/include/drm/ttm/ttm_memory.h linux-3.0.9/include/drm/ttm/ttm_memory.h
33857 ---- linux-3.0.9/include/drm/ttm/ttm_memory.h 2011-11-11 13:12:24.000000000 -0500
33858 -+++ linux-3.0.9/include/drm/ttm/ttm_memory.h 2011-11-15 20:02:59.000000000 -0500
33859 +diff -urNp linux-3.1.1/include/drm/ttm/ttm_memory.h linux-3.1.1/include/drm/ttm/ttm_memory.h
33860 +--- linux-3.1.1/include/drm/ttm/ttm_memory.h 2011-11-11 15:19:27.000000000 -0500
33861 ++++ linux-3.1.1/include/drm/ttm/ttm_memory.h 2011-11-16 18:39:08.000000000 -0500
33862 @@ -47,7 +47,7 @@
33863
33864 struct ttm_mem_shrink {
33865 @@ -57608,9 +57464,9 @@ diff -urNp linux-3.0.9/include/drm/ttm/ttm_memory.h linux-3.0.9/include/drm/ttm/
33866
33867 /**
33868 * struct ttm_mem_global - Global memory accounting structure.
33869 -diff -urNp linux-3.0.9/include/linux/a.out.h linux-3.0.9/include/linux/a.out.h
33870 ---- linux-3.0.9/include/linux/a.out.h 2011-11-11 13:12:24.000000000 -0500
33871 -+++ linux-3.0.9/include/linux/a.out.h 2011-11-15 20:02:59.000000000 -0500
33872 +diff -urNp linux-3.1.1/include/linux/a.out.h linux-3.1.1/include/linux/a.out.h
33873 +--- linux-3.1.1/include/linux/a.out.h 2011-11-11 15:19:27.000000000 -0500
33874 ++++ linux-3.1.1/include/linux/a.out.h 2011-11-16 18:39:08.000000000 -0500
33875 @@ -39,6 +39,14 @@ enum machine_type {
33876 M_MIPS2 = 152 /* MIPS R6000/R4000 binary */
33877 };
33878 @@ -57626,9 +57482,9 @@ diff -urNp linux-3.0.9/include/linux/a.out.h linux-3.0.9/include/linux/a.out.h
33879 #if !defined (N_MAGIC)
33880 #define N_MAGIC(exec) ((exec).a_info & 0xffff)
33881 #endif
33882 -diff -urNp linux-3.0.9/include/linux/atmdev.h linux-3.0.9/include/linux/atmdev.h
33883 ---- linux-3.0.9/include/linux/atmdev.h 2011-11-11 13:12:24.000000000 -0500
33884 -+++ linux-3.0.9/include/linux/atmdev.h 2011-11-15 20:02:59.000000000 -0500
33885 +diff -urNp linux-3.1.1/include/linux/atmdev.h linux-3.1.1/include/linux/atmdev.h
33886 +--- linux-3.1.1/include/linux/atmdev.h 2011-11-11 15:19:27.000000000 -0500
33887 ++++ linux-3.1.1/include/linux/atmdev.h 2011-11-16 18:39:08.000000000 -0500
33888 @@ -237,7 +237,7 @@ struct compat_atm_iobuf {
33889 #endif
33890
33891 @@ -57638,9 +57494,9 @@ diff -urNp linux-3.0.9/include/linux/atmdev.h linux-3.0.9/include/linux/atmdev.h
33892 __AAL_STAT_ITEMS
33893 #undef __HANDLE_ITEM
33894 };
33895 -diff -urNp linux-3.0.9/include/linux/binfmts.h linux-3.0.9/include/linux/binfmts.h
33896 ---- linux-3.0.9/include/linux/binfmts.h 2011-11-11 13:12:24.000000000 -0500
33897 -+++ linux-3.0.9/include/linux/binfmts.h 2011-11-15 20:02:59.000000000 -0500
33898 +diff -urNp linux-3.1.1/include/linux/binfmts.h linux-3.1.1/include/linux/binfmts.h
33899 +--- linux-3.1.1/include/linux/binfmts.h 2011-11-11 15:19:27.000000000 -0500
33900 ++++ linux-3.1.1/include/linux/binfmts.h 2011-11-16 18:39:08.000000000 -0500
33901 @@ -88,6 +88,7 @@ struct linux_binfmt {
33902 int (*load_binary)(struct linux_binprm *, struct pt_regs * regs);
33903 int (*load_shlib)(struct file *);
33904 @@ -57649,10 +57505,10 @@ diff -urNp linux-3.0.9/include/linux/binfmts.h linux-3.0.9/include/linux/binfmts
33905 unsigned long min_coredump; /* minimal dump size */
33906 };
33907
33908 -diff -urNp linux-3.0.9/include/linux/blkdev.h linux-3.0.9/include/linux/blkdev.h
33909 ---- linux-3.0.9/include/linux/blkdev.h 2011-11-11 13:12:24.000000000 -0500
33910 -+++ linux-3.0.9/include/linux/blkdev.h 2011-11-15 20:02:59.000000000 -0500
33911 -@@ -1308,7 +1308,7 @@ struct block_device_operations {
33912 +diff -urNp linux-3.1.1/include/linux/blkdev.h linux-3.1.1/include/linux/blkdev.h
33913 +--- linux-3.1.1/include/linux/blkdev.h 2011-11-11 15:19:27.000000000 -0500
33914 ++++ linux-3.1.1/include/linux/blkdev.h 2011-11-16 18:39:08.000000000 -0500
33915 +@@ -1321,7 +1321,7 @@ struct block_device_operations {
33916 /* this callback is with swap_lock and sometimes page table lock held */
33917 void (*swap_slot_free_notify) (struct block_device *, unsigned long);
33918 struct module *owner;
33919 @@ -57661,10 +57517,10 @@ diff -urNp linux-3.0.9/include/linux/blkdev.h linux-3.0.9/include/linux/blkdev.h
33920
33921 extern int __blkdev_driver_ioctl(struct block_device *, fmode_t, unsigned int,
33922 unsigned long);
33923 -diff -urNp linux-3.0.9/include/linux/blktrace_api.h linux-3.0.9/include/linux/blktrace_api.h
33924 ---- linux-3.0.9/include/linux/blktrace_api.h 2011-11-11 13:12:24.000000000 -0500
33925 -+++ linux-3.0.9/include/linux/blktrace_api.h 2011-11-15 20:02:59.000000000 -0500
33926 -@@ -161,7 +161,7 @@ struct blk_trace {
33927 +diff -urNp linux-3.1.1/include/linux/blktrace_api.h linux-3.1.1/include/linux/blktrace_api.h
33928 +--- linux-3.1.1/include/linux/blktrace_api.h 2011-11-11 15:19:27.000000000 -0500
33929 ++++ linux-3.1.1/include/linux/blktrace_api.h 2011-11-16 18:39:08.000000000 -0500
33930 +@@ -162,7 +162,7 @@ struct blk_trace {
33931 struct dentry *dir;
33932 struct dentry *dropped_file;
33933 struct dentry *msg_file;
33934 @@ -57673,9 +57529,9 @@ diff -urNp linux-3.0.9/include/linux/blktrace_api.h linux-3.0.9/include/linux/bl
33935 };
33936
33937 extern int blk_trace_ioctl(struct block_device *, unsigned, char __user *);
33938 -diff -urNp linux-3.0.9/include/linux/byteorder/little_endian.h linux-3.0.9/include/linux/byteorder/little_endian.h
33939 ---- linux-3.0.9/include/linux/byteorder/little_endian.h 2011-11-11 13:12:24.000000000 -0500
33940 -+++ linux-3.0.9/include/linux/byteorder/little_endian.h 2011-11-15 20:02:59.000000000 -0500
33941 +diff -urNp linux-3.1.1/include/linux/byteorder/little_endian.h linux-3.1.1/include/linux/byteorder/little_endian.h
33942 +--- linux-3.1.1/include/linux/byteorder/little_endian.h 2011-11-11 15:19:27.000000000 -0500
33943 ++++ linux-3.1.1/include/linux/byteorder/little_endian.h 2011-11-16 18:39:08.000000000 -0500
33944 @@ -42,51 +42,51 @@
33945
33946 static inline __le64 __cpu_to_le64p(const __u64 *p)
33947 @@ -57740,9 +57596,9 @@ diff -urNp linux-3.0.9/include/linux/byteorder/little_endian.h linux-3.0.9/inclu
33948 }
33949 #define __cpu_to_le64s(x) do { (void)(x); } while (0)
33950 #define __le64_to_cpus(x) do { (void)(x); } while (0)
33951 -diff -urNp linux-3.0.9/include/linux/cache.h linux-3.0.9/include/linux/cache.h
33952 ---- linux-3.0.9/include/linux/cache.h 2011-11-11 13:12:24.000000000 -0500
33953 -+++ linux-3.0.9/include/linux/cache.h 2011-11-15 20:02:59.000000000 -0500
33954 +diff -urNp linux-3.1.1/include/linux/cache.h linux-3.1.1/include/linux/cache.h
33955 +--- linux-3.1.1/include/linux/cache.h 2011-11-11 15:19:27.000000000 -0500
33956 ++++ linux-3.1.1/include/linux/cache.h 2011-11-16 18:39:08.000000000 -0500
33957 @@ -16,6 +16,10 @@
33958 #define __read_mostly
33959 #endif
33960 @@ -57754,9 +57610,9 @@ diff -urNp linux-3.0.9/include/linux/cache.h linux-3.0.9/include/linux/cache.h
33961 #ifndef ____cacheline_aligned
33962 #define ____cacheline_aligned __attribute__((__aligned__(SMP_CACHE_BYTES)))
33963 #endif
33964 -diff -urNp linux-3.0.9/include/linux/capability.h linux-3.0.9/include/linux/capability.h
33965 ---- linux-3.0.9/include/linux/capability.h 2011-11-11 13:12:24.000000000 -0500
33966 -+++ linux-3.0.9/include/linux/capability.h 2011-11-15 20:02:59.000000000 -0500
33967 +diff -urNp linux-3.1.1/include/linux/capability.h linux-3.1.1/include/linux/capability.h
33968 +--- linux-3.1.1/include/linux/capability.h 2011-11-11 15:19:27.000000000 -0500
33969 ++++ linux-3.1.1/include/linux/capability.h 2011-11-16 18:40:31.000000000 -0500
33970 @@ -547,6 +547,9 @@ extern bool capable(int cap);
33971 extern bool ns_capable(struct user_namespace *ns, int cap);
33972 extern bool task_ns_capable(struct task_struct *t, int cap);
33973 @@ -57767,9 +57623,9 @@ diff -urNp linux-3.0.9/include/linux/capability.h linux-3.0.9/include/linux/capa
33974
33975 /* audit system wants to get cap info from files as well */
33976 extern int get_vfs_caps_from_disk(const struct dentry *dentry, struct cpu_vfs_cap_data *cpu_caps);
33977 -diff -urNp linux-3.0.9/include/linux/cleancache.h linux-3.0.9/include/linux/cleancache.h
33978 ---- linux-3.0.9/include/linux/cleancache.h 2011-11-11 13:12:24.000000000 -0500
33979 -+++ linux-3.0.9/include/linux/cleancache.h 2011-11-15 20:02:59.000000000 -0500
33980 +diff -urNp linux-3.1.1/include/linux/cleancache.h linux-3.1.1/include/linux/cleancache.h
33981 +--- linux-3.1.1/include/linux/cleancache.h 2011-11-11 15:19:27.000000000 -0500
33982 ++++ linux-3.1.1/include/linux/cleancache.h 2011-11-16 18:39:08.000000000 -0500
33983 @@ -31,7 +31,7 @@ struct cleancache_ops {
33984 void (*flush_page)(int, struct cleancache_filekey, pgoff_t);
33985 void (*flush_inode)(int, struct cleancache_filekey);
33986 @@ -57779,9 +57635,9 @@ diff -urNp linux-3.0.9/include/linux/cleancache.h linux-3.0.9/include/linux/clea
33987
33988 extern struct cleancache_ops
33989 cleancache_register_ops(struct cleancache_ops *ops);
33990 -diff -urNp linux-3.0.9/include/linux/compiler-gcc4.h linux-3.0.9/include/linux/compiler-gcc4.h
33991 ---- linux-3.0.9/include/linux/compiler-gcc4.h 2011-11-11 13:12:24.000000000 -0500
33992 -+++ linux-3.0.9/include/linux/compiler-gcc4.h 2011-11-15 20:02:59.000000000 -0500
33993 +diff -urNp linux-3.1.1/include/linux/compiler-gcc4.h linux-3.1.1/include/linux/compiler-gcc4.h
33994 +--- linux-3.1.1/include/linux/compiler-gcc4.h 2011-11-11 15:19:27.000000000 -0500
33995 ++++ linux-3.1.1/include/linux/compiler-gcc4.h 2011-11-16 18:39:08.000000000 -0500
33996 @@ -31,6 +31,12 @@
33997
33998
33999 @@ -57807,9 +57663,9 @@ diff -urNp linux-3.0.9/include/linux/compiler-gcc4.h linux-3.0.9/include/linux/c
34000 #endif
34001
34002 #if __GNUC_MINOR__ > 0
34003 -diff -urNp linux-3.0.9/include/linux/compiler.h linux-3.0.9/include/linux/compiler.h
34004 ---- linux-3.0.9/include/linux/compiler.h 2011-11-11 13:12:24.000000000 -0500
34005 -+++ linux-3.0.9/include/linux/compiler.h 2011-11-15 20:02:59.000000000 -0500
34006 +diff -urNp linux-3.1.1/include/linux/compiler.h linux-3.1.1/include/linux/compiler.h
34007 +--- linux-3.1.1/include/linux/compiler.h 2011-11-11 15:19:27.000000000 -0500
34008 ++++ linux-3.1.1/include/linux/compiler.h 2011-11-16 18:39:08.000000000 -0500
34009 @@ -5,31 +5,62 @@
34010
34011 #ifdef __CHECKER__
34012 @@ -57930,9 +57786,9 @@ diff -urNp linux-3.0.9/include/linux/compiler.h linux-3.0.9/include/linux/compil
34013 +#define ACCESS_ONCE_RW(x) (*(volatile typeof(x) *)&(x))
34014
34015 #endif /* __LINUX_COMPILER_H */
34016 -diff -urNp linux-3.0.9/include/linux/cpuset.h linux-3.0.9/include/linux/cpuset.h
34017 ---- linux-3.0.9/include/linux/cpuset.h 2011-11-11 13:12:24.000000000 -0500
34018 -+++ linux-3.0.9/include/linux/cpuset.h 2011-11-15 20:02:59.000000000 -0500
34019 +diff -urNp linux-3.1.1/include/linux/cpuset.h linux-3.1.1/include/linux/cpuset.h
34020 +--- linux-3.1.1/include/linux/cpuset.h 2011-11-11 15:19:27.000000000 -0500
34021 ++++ linux-3.1.1/include/linux/cpuset.h 2011-11-16 18:39:08.000000000 -0500
34022 @@ -118,7 +118,7 @@ static inline void put_mems_allowed(void
34023 * nodemask.
34024 */
34025 @@ -57942,9 +57798,9 @@ diff -urNp linux-3.0.9/include/linux/cpuset.h linux-3.0.9/include/linux/cpuset.h
34026 }
34027
34028 static inline void set_mems_allowed(nodemask_t nodemask)
34029 -diff -urNp linux-3.0.9/include/linux/crypto.h linux-3.0.9/include/linux/crypto.h
34030 ---- linux-3.0.9/include/linux/crypto.h 2011-11-11 13:12:24.000000000 -0500
34031 -+++ linux-3.0.9/include/linux/crypto.h 2011-11-15 20:02:59.000000000 -0500
34032 +diff -urNp linux-3.1.1/include/linux/crypto.h linux-3.1.1/include/linux/crypto.h
34033 +--- linux-3.1.1/include/linux/crypto.h 2011-11-11 15:19:27.000000000 -0500
34034 ++++ linux-3.1.1/include/linux/crypto.h 2011-11-16 18:39:08.000000000 -0500
34035 @@ -361,7 +361,7 @@ struct cipher_tfm {
34036 const u8 *key, unsigned int keylen);
34037 void (*cit_encrypt_one)(struct crypto_tfm *tfm, u8 *dst, const u8 *src);
34038 @@ -57970,9 +57826,9 @@ diff -urNp linux-3.0.9/include/linux/crypto.h linux-3.0.9/include/linux/crypto.h
34039
34040 #define crt_ablkcipher crt_u.ablkcipher
34041 #define crt_aead crt_u.aead
34042 -diff -urNp linux-3.0.9/include/linux/decompress/mm.h linux-3.0.9/include/linux/decompress/mm.h
34043 ---- linux-3.0.9/include/linux/decompress/mm.h 2011-11-11 13:12:24.000000000 -0500
34044 -+++ linux-3.0.9/include/linux/decompress/mm.h 2011-11-15 20:02:59.000000000 -0500
34045 +diff -urNp linux-3.1.1/include/linux/decompress/mm.h linux-3.1.1/include/linux/decompress/mm.h
34046 +--- linux-3.1.1/include/linux/decompress/mm.h 2011-11-11 15:19:27.000000000 -0500
34047 ++++ linux-3.1.1/include/linux/decompress/mm.h 2011-11-16 18:39:08.000000000 -0500
34048 @@ -77,7 +77,7 @@ static void free(void *where)
34049 * warnings when not needed (indeed large_malloc / large_free are not
34050 * needed by inflate */
34051 @@ -57982,10 +57838,10 @@ diff -urNp linux-3.0.9/include/linux/decompress/mm.h linux-3.0.9/include/linux/d
34052 #define free(a) kfree(a)
34053
34054 #define large_malloc(a) vmalloc(a)
34055 -diff -urNp linux-3.0.9/include/linux/dma-mapping.h linux-3.0.9/include/linux/dma-mapping.h
34056 ---- linux-3.0.9/include/linux/dma-mapping.h 2011-11-11 13:12:24.000000000 -0500
34057 -+++ linux-3.0.9/include/linux/dma-mapping.h 2011-11-15 20:02:59.000000000 -0500
34058 -@@ -50,7 +50,7 @@ struct dma_map_ops {
34059 +diff -urNp linux-3.1.1/include/linux/dma-mapping.h linux-3.1.1/include/linux/dma-mapping.h
34060 +--- linux-3.1.1/include/linux/dma-mapping.h 2011-11-11 15:19:27.000000000 -0500
34061 ++++ linux-3.1.1/include/linux/dma-mapping.h 2011-11-16 18:39:08.000000000 -0500
34062 +@@ -42,7 +42,7 @@ struct dma_map_ops {
34063 int (*dma_supported)(struct device *dev, u64 mask);
34064 int (*set_dma_mask)(struct device *dev, u64 mask);
34065 int is_phys;
34066 @@ -57994,10 +57850,10 @@ diff -urNp linux-3.0.9/include/linux/dma-mapping.h linux-3.0.9/include/linux/dma
34067
34068 #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
34069
34070 -diff -urNp linux-3.0.9/include/linux/efi.h linux-3.0.9/include/linux/efi.h
34071 ---- linux-3.0.9/include/linux/efi.h 2011-11-11 13:12:24.000000000 -0500
34072 -+++ linux-3.0.9/include/linux/efi.h 2011-11-15 20:02:59.000000000 -0500
34073 -@@ -410,7 +410,7 @@ struct efivar_operations {
34074 +diff -urNp linux-3.1.1/include/linux/efi.h linux-3.1.1/include/linux/efi.h
34075 +--- linux-3.1.1/include/linux/efi.h 2011-11-11 15:19:27.000000000 -0500
34076 ++++ linux-3.1.1/include/linux/efi.h 2011-11-16 18:39:08.000000000 -0500
34077 +@@ -446,7 +446,7 @@ struct efivar_operations {
34078 efi_get_variable_t *get_variable;
34079 efi_get_next_variable_t *get_next_variable;
34080 efi_set_variable_t *set_variable;
34081 @@ -58006,9 +57862,9 @@ diff -urNp linux-3.0.9/include/linux/efi.h linux-3.0.9/include/linux/efi.h
34082
34083 struct efivars {
34084 /*
34085 -diff -urNp linux-3.0.9/include/linux/elf.h linux-3.0.9/include/linux/elf.h
34086 ---- linux-3.0.9/include/linux/elf.h 2011-11-11 13:12:24.000000000 -0500
34087 -+++ linux-3.0.9/include/linux/elf.h 2011-11-15 20:03:00.000000000 -0500
34088 +diff -urNp linux-3.1.1/include/linux/elf.h linux-3.1.1/include/linux/elf.h
34089 +--- linux-3.1.1/include/linux/elf.h 2011-11-11 15:19:27.000000000 -0500
34090 ++++ linux-3.1.1/include/linux/elf.h 2011-11-16 18:39:08.000000000 -0500
34091 @@ -49,6 +49,17 @@ typedef __s64 Elf64_Sxword;
34092 #define PT_GNU_EH_FRAME 0x6474e550
34093
34094 @@ -58081,9 +57937,9 @@ diff -urNp linux-3.0.9/include/linux/elf.h linux-3.0.9/include/linux/elf.h
34095
34096 #endif
34097
34098 -diff -urNp linux-3.0.9/include/linux/firewire.h linux-3.0.9/include/linux/firewire.h
34099 ---- linux-3.0.9/include/linux/firewire.h 2011-11-11 13:12:24.000000000 -0500
34100 -+++ linux-3.0.9/include/linux/firewire.h 2011-11-15 20:03:00.000000000 -0500
34101 +diff -urNp linux-3.1.1/include/linux/firewire.h linux-3.1.1/include/linux/firewire.h
34102 +--- linux-3.1.1/include/linux/firewire.h 2011-11-11 15:19:27.000000000 -0500
34103 ++++ linux-3.1.1/include/linux/firewire.h 2011-11-16 18:39:08.000000000 -0500
34104 @@ -428,7 +428,7 @@ struct fw_iso_context {
34105 union {
34106 fw_iso_callback_t sc;
34107 @@ -58093,9 +57949,9 @@ diff -urNp linux-3.0.9/include/linux/firewire.h linux-3.0.9/include/linux/firewi
34108 void *callback_data;
34109 };
34110
34111 -diff -urNp linux-3.0.9/include/linux/fscache-cache.h linux-3.0.9/include/linux/fscache-cache.h
34112 ---- linux-3.0.9/include/linux/fscache-cache.h 2011-11-11 13:12:24.000000000 -0500
34113 -+++ linux-3.0.9/include/linux/fscache-cache.h 2011-11-15 20:03:00.000000000 -0500
34114 +diff -urNp linux-3.1.1/include/linux/fscache-cache.h linux-3.1.1/include/linux/fscache-cache.h
34115 +--- linux-3.1.1/include/linux/fscache-cache.h 2011-11-11 15:19:27.000000000 -0500
34116 ++++ linux-3.1.1/include/linux/fscache-cache.h 2011-11-16 18:39:08.000000000 -0500
34117 @@ -102,7 +102,7 @@ struct fscache_operation {
34118 fscache_operation_release_t release;
34119 };
34120 @@ -58114,22 +57970,10 @@ diff -urNp linux-3.0.9/include/linux/fscache-cache.h linux-3.0.9/include/linux/f
34121 op->processor = processor;
34122 op->release = release;
34123 INIT_LIST_HEAD(&op->pend_link);
34124 -diff -urNp linux-3.0.9/include/linux/fs.h linux-3.0.9/include/linux/fs.h
34125 ---- linux-3.0.9/include/linux/fs.h 2011-11-11 13:12:24.000000000 -0500
34126 -+++ linux-3.0.9/include/linux/fs.h 2011-11-15 20:03:00.000000000 -0500
34127 -@@ -109,6 +109,11 @@ struct inodes_stat_t {
34128 - /* File was opened by fanotify and shouldn't generate fanotify events */
34129 - #define FMODE_NONOTIFY ((__force fmode_t)0x1000000)
34130 -
34131 -+/* Hack for grsec so as not to require read permission simply to execute
34132 -+ * a binary
34133 -+ */
34134 -+#define FMODE_GREXEC ((__force fmode_t)0x2000000)
34135 -+
34136 - /*
34137 - * The below are the various read and write types that we support. Some of
34138 - * them include behavioral modifiers that send information down to the
34139 -@@ -1571,7 +1576,8 @@ struct file_operations {
34140 +diff -urNp linux-3.1.1/include/linux/fs.h linux-3.1.1/include/linux/fs.h
34141 +--- linux-3.1.1/include/linux/fs.h 2011-11-11 15:19:27.000000000 -0500
34142 ++++ linux-3.1.1/include/linux/fs.h 2011-11-16 23:39:39.000000000 -0500
34143 +@@ -1588,7 +1588,8 @@ struct file_operations {
34144 int (*setlease)(struct file *, long, struct file_lock **);
34145 long (*fallocate)(struct file *file, int mode, loff_t offset,
34146 loff_t len);
34147 @@ -58137,11 +57981,11 @@ diff -urNp linux-3.0.9/include/linux/fs.h linux-3.0.9/include/linux/fs.h
34148 +} __do_const;
34149 +typedef struct file_operations __no_const file_operations_no_const;
34150
34151 - #define IPERM_FLAG_RCU 0x0001
34152 -
34153 -diff -urNp linux-3.0.9/include/linux/fsnotify.h linux-3.0.9/include/linux/fsnotify.h
34154 ---- linux-3.0.9/include/linux/fsnotify.h 2011-11-11 13:12:24.000000000 -0500
34155 -+++ linux-3.0.9/include/linux/fsnotify.h 2011-11-15 20:03:00.000000000 -0500
34156 + struct inode_operations {
34157 + struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameidata *);
34158 +diff -urNp linux-3.1.1/include/linux/fsnotify.h linux-3.1.1/include/linux/fsnotify.h
34159 +--- linux-3.1.1/include/linux/fsnotify.h 2011-11-11 15:19:27.000000000 -0500
34160 ++++ linux-3.1.1/include/linux/fsnotify.h 2011-11-16 18:39:08.000000000 -0500
34161 @@ -314,7 +314,7 @@ static inline void fsnotify_change(struc
34162 */
34163 static inline const unsigned char *fsnotify_oldname_init(const unsigned char *name)
34164 @@ -58151,9 +57995,9 @@ diff -urNp linux-3.0.9/include/linux/fsnotify.h linux-3.0.9/include/linux/fsnoti
34165 }
34166
34167 /*
34168 -diff -urNp linux-3.0.9/include/linux/fs_struct.h linux-3.0.9/include/linux/fs_struct.h
34169 ---- linux-3.0.9/include/linux/fs_struct.h 2011-11-11 13:12:24.000000000 -0500
34170 -+++ linux-3.0.9/include/linux/fs_struct.h 2011-11-15 20:03:00.000000000 -0500
34171 +diff -urNp linux-3.1.1/include/linux/fs_struct.h linux-3.1.1/include/linux/fs_struct.h
34172 +--- linux-3.1.1/include/linux/fs_struct.h 2011-11-11 15:19:27.000000000 -0500
34173 ++++ linux-3.1.1/include/linux/fs_struct.h 2011-11-16 18:39:08.000000000 -0500
34174 @@ -6,7 +6,7 @@
34175 #include <linux/seqlock.h>
34176
34177 @@ -58163,10 +58007,10 @@ diff -urNp linux-3.0.9/include/linux/fs_struct.h linux-3.0.9/include/linux/fs_st
34178 spinlock_t lock;
34179 seqcount_t seq;
34180 int umask;
34181 -diff -urNp linux-3.0.9/include/linux/ftrace_event.h linux-3.0.9/include/linux/ftrace_event.h
34182 ---- linux-3.0.9/include/linux/ftrace_event.h 2011-11-11 13:12:24.000000000 -0500
34183 -+++ linux-3.0.9/include/linux/ftrace_event.h 2011-11-15 20:03:00.000000000 -0500
34184 -@@ -96,7 +96,7 @@ struct trace_event_functions {
34185 +diff -urNp linux-3.1.1/include/linux/ftrace_event.h linux-3.1.1/include/linux/ftrace_event.h
34186 +--- linux-3.1.1/include/linux/ftrace_event.h 2011-11-11 15:19:27.000000000 -0500
34187 ++++ linux-3.1.1/include/linux/ftrace_event.h 2011-11-16 18:39:08.000000000 -0500
34188 +@@ -97,7 +97,7 @@ struct trace_event_functions {
34189 trace_print_func raw;
34190 trace_print_func hex;
34191 trace_print_func binary;
34192 @@ -58175,7 +58019,7 @@ diff -urNp linux-3.0.9/include/linux/ftrace_event.h linux-3.0.9/include/linux/ft
34193
34194 struct trace_event {
34195 struct hlist_node node;
34196 -@@ -247,7 +247,7 @@ extern int trace_define_field(struct ftr
34197 +@@ -252,7 +252,7 @@ extern int trace_define_field(struct ftr
34198 extern int trace_add_event_call(struct ftrace_event_call *call);
34199 extern void trace_remove_event_call(struct ftrace_event_call *call);
34200
34201 @@ -58184,9 +58028,9 @@ diff -urNp linux-3.0.9/include/linux/ftrace_event.h linux-3.0.9/include/linux/ft
34202
34203 int trace_set_clr_event(const char *system, const char *event, int set);
34204
34205 -diff -urNp linux-3.0.9/include/linux/genhd.h linux-3.0.9/include/linux/genhd.h
34206 ---- linux-3.0.9/include/linux/genhd.h 2011-11-11 13:12:24.000000000 -0500
34207 -+++ linux-3.0.9/include/linux/genhd.h 2011-11-15 20:03:00.000000000 -0500
34208 +diff -urNp linux-3.1.1/include/linux/genhd.h linux-3.1.1/include/linux/genhd.h
34209 +--- linux-3.1.1/include/linux/genhd.h 2011-11-11 15:19:27.000000000 -0500
34210 ++++ linux-3.1.1/include/linux/genhd.h 2011-11-16 18:39:08.000000000 -0500
34211 @@ -184,7 +184,7 @@ struct gendisk {
34212 struct kobject *slave_dir;
34213
34214 @@ -58196,9 +58040,9 @@ diff -urNp linux-3.0.9/include/linux/genhd.h linux-3.0.9/include/linux/genhd.h
34215 struct disk_events *ev;
34216 #ifdef CONFIG_BLK_DEV_INTEGRITY
34217 struct blk_integrity *integrity;
34218 -diff -urNp linux-3.0.9/include/linux/gracl.h linux-3.0.9/include/linux/gracl.h
34219 ---- linux-3.0.9/include/linux/gracl.h 1969-12-31 19:00:00.000000000 -0500
34220 -+++ linux-3.0.9/include/linux/gracl.h 2011-11-15 20:03:00.000000000 -0500
34221 +diff -urNp linux-3.1.1/include/linux/gracl.h linux-3.1.1/include/linux/gracl.h
34222 +--- linux-3.1.1/include/linux/gracl.h 1969-12-31 19:00:00.000000000 -0500
34223 ++++ linux-3.1.1/include/linux/gracl.h 2011-11-16 18:40:31.000000000 -0500
34224 @@ -0,0 +1,317 @@
34225 +#ifndef GR_ACL_H
34226 +#define GR_ACL_H
34227 @@ -58517,9 +58361,9 @@ diff -urNp linux-3.0.9/include/linux/gracl.h linux-3.0.9/include/linux/gracl.h
34228 +
34229 +#endif
34230 +
34231 -diff -urNp linux-3.0.9/include/linux/gralloc.h linux-3.0.9/include/linux/gralloc.h
34232 ---- linux-3.0.9/include/linux/gralloc.h 1969-12-31 19:00:00.000000000 -0500
34233 -+++ linux-3.0.9/include/linux/gralloc.h 2011-11-15 20:03:00.000000000 -0500
34234 +diff -urNp linux-3.1.1/include/linux/gralloc.h linux-3.1.1/include/linux/gralloc.h
34235 +--- linux-3.1.1/include/linux/gralloc.h 1969-12-31 19:00:00.000000000 -0500
34236 ++++ linux-3.1.1/include/linux/gralloc.h 2011-11-16 18:40:31.000000000 -0500
34237 @@ -0,0 +1,9 @@
34238 +#ifndef __GRALLOC_H
34239 +#define __GRALLOC_H
34240 @@ -58530,9 +58374,9 @@ diff -urNp linux-3.0.9/include/linux/gralloc.h linux-3.0.9/include/linux/gralloc
34241 +void *acl_alloc_num(unsigned long num, unsigned long len);
34242 +
34243 +#endif
34244 -diff -urNp linux-3.0.9/include/linux/grdefs.h linux-3.0.9/include/linux/grdefs.h
34245 ---- linux-3.0.9/include/linux/grdefs.h 1969-12-31 19:00:00.000000000 -0500
34246 -+++ linux-3.0.9/include/linux/grdefs.h 2011-11-15 20:03:00.000000000 -0500
34247 +diff -urNp linux-3.1.1/include/linux/grdefs.h linux-3.1.1/include/linux/grdefs.h
34248 +--- linux-3.1.1/include/linux/grdefs.h 1969-12-31 19:00:00.000000000 -0500
34249 ++++ linux-3.1.1/include/linux/grdefs.h 2011-11-16 18:40:31.000000000 -0500
34250 @@ -0,0 +1,140 @@
34251 +#ifndef GRDEFS_H
34252 +#define GRDEFS_H
34253 @@ -58674,9 +58518,9 @@ diff -urNp linux-3.0.9/include/linux/grdefs.h linux-3.0.9/include/linux/grdefs.h
34254 +};
34255 +
34256 +#endif
34257 -diff -urNp linux-3.0.9/include/linux/grinternal.h linux-3.0.9/include/linux/grinternal.h
34258 ---- linux-3.0.9/include/linux/grinternal.h 1969-12-31 19:00:00.000000000 -0500
34259 -+++ linux-3.0.9/include/linux/grinternal.h 2011-11-15 20:03:00.000000000 -0500
34260 +diff -urNp linux-3.1.1/include/linux/grinternal.h linux-3.1.1/include/linux/grinternal.h
34261 +--- linux-3.1.1/include/linux/grinternal.h 1969-12-31 19:00:00.000000000 -0500
34262 ++++ linux-3.1.1/include/linux/grinternal.h 2011-11-16 18:40:31.000000000 -0500
34263 @@ -0,0 +1,220 @@
34264 +#ifndef __GRINTERNAL_H
34265 +#define __GRINTERNAL_H
34266 @@ -58898,9 +58742,9 @@ diff -urNp linux-3.0.9/include/linux/grinternal.h linux-3.0.9/include/linux/grin
34267 +#endif
34268 +
34269 +#endif
34270 -diff -urNp linux-3.0.9/include/linux/grmsg.h linux-3.0.9/include/linux/grmsg.h
34271 ---- linux-3.0.9/include/linux/grmsg.h 1969-12-31 19:00:00.000000000 -0500
34272 -+++ linux-3.0.9/include/linux/grmsg.h 2011-11-15 20:03:00.000000000 -0500
34273 +diff -urNp linux-3.1.1/include/linux/grmsg.h linux-3.1.1/include/linux/grmsg.h
34274 +--- linux-3.1.1/include/linux/grmsg.h 1969-12-31 19:00:00.000000000 -0500
34275 ++++ linux-3.1.1/include/linux/grmsg.h 2011-11-16 18:40:31.000000000 -0500
34276 @@ -0,0 +1,108 @@
34277 +#define DEFAULTSECMSG "%.256s[%.16s:%d] uid/euid:%u/%u gid/egid:%u/%u, parent %.256s[%.16s:%d] uid/euid:%u/%u gid/egid:%u/%u"
34278 +#define GR_ACL_PROCACCT_MSG "%.256s[%.16s:%d] IP:%pI4 TTY:%.64s uid/euid:%u/%u gid/egid:%u/%u run time:[%ud %uh %um %us] cpu time:[%ud %uh %um %us] %s with exit code %ld, parent %.256s[%.16s:%d] IP:%pI4 TTY:%.64s uid/euid:%u/%u gid/egid:%u/%u"
34279 @@ -59010,9 +58854,9 @@ diff -urNp linux-3.0.9/include/linux/grmsg.h linux-3.0.9/include/linux/grmsg.h
34280 +#define GR_VM86_MSG "denied use of vm86 by "
34281 +#define GR_PTRACE_AUDIT_MSG "process %.950s(%.16s:%d) attached to via ptrace by "
34282 +#define GR_INIT_TRANSFER_MSG "persistent special role transferred privilege to init by "
34283 -diff -urNp linux-3.0.9/include/linux/grsecurity.h linux-3.0.9/include/linux/grsecurity.h
34284 ---- linux-3.0.9/include/linux/grsecurity.h 1969-12-31 19:00:00.000000000 -0500
34285 -+++ linux-3.0.9/include/linux/grsecurity.h 2011-11-15 20:03:00.000000000 -0500
34286 +diff -urNp linux-3.1.1/include/linux/grsecurity.h linux-3.1.1/include/linux/grsecurity.h
34287 +--- linux-3.1.1/include/linux/grsecurity.h 1969-12-31 19:00:00.000000000 -0500
34288 ++++ linux-3.1.1/include/linux/grsecurity.h 2011-11-17 00:16:10.000000000 -0500
34289 @@ -0,0 +1,228 @@
34290 +#ifndef GR_SECURITY_H
34291 +#define GR_SECURITY_H
34292 @@ -59171,11 +59015,11 @@ diff -urNp linux-3.0.9/include/linux/grsecurity.h linux-3.0.9/include/linux/grse
34293 +__u32 gr_acl_handle_hidden_file(const struct dentry *dentry,
34294 + const struct vfsmount *mnt);
34295 +__u32 gr_acl_handle_open(const struct dentry *dentry,
34296 -+ const struct vfsmount *mnt, const int fmode);
34297 ++ const struct vfsmount *mnt, int acc_mode);
34298 +__u32 gr_acl_handle_creat(const struct dentry *dentry,
34299 + const struct dentry *p_dentry,
34300 -+ const struct vfsmount *p_mnt, const int fmode,
34301 -+ const int imode);
34302 ++ const struct vfsmount *p_mnt,
34303 ++ int open_flags, int acc_mode, const int imode);
34304 +void gr_handle_create(const struct dentry *dentry,
34305 + const struct vfsmount *mnt);
34306 +void gr_handle_proc_create(const struct dentry *dentry,
34307 @@ -59242,9 +59086,9 @@ diff -urNp linux-3.0.9/include/linux/grsecurity.h linux-3.0.9/include/linux/grse
34308 +#endif
34309 +
34310 +#endif
34311 -diff -urNp linux-3.0.9/include/linux/grsock.h linux-3.0.9/include/linux/grsock.h
34312 ---- linux-3.0.9/include/linux/grsock.h 1969-12-31 19:00:00.000000000 -0500
34313 -+++ linux-3.0.9/include/linux/grsock.h 2011-11-15 20:03:00.000000000 -0500
34314 +diff -urNp linux-3.1.1/include/linux/grsock.h linux-3.1.1/include/linux/grsock.h
34315 +--- linux-3.1.1/include/linux/grsock.h 1969-12-31 19:00:00.000000000 -0500
34316 ++++ linux-3.1.1/include/linux/grsock.h 2011-11-16 18:40:31.000000000 -0500
34317 @@ -0,0 +1,19 @@
34318 +#ifndef __GRSOCK_H
34319 +#define __GRSOCK_H
34320 @@ -59265,10 +59109,10 @@ diff -urNp linux-3.0.9/include/linux/grsock.h linux-3.0.9/include/linux/grsock.h
34321 + const int protocol);
34322 +
34323 +#endif
34324 -diff -urNp linux-3.0.9/include/linux/hid.h linux-3.0.9/include/linux/hid.h
34325 ---- linux-3.0.9/include/linux/hid.h 2011-11-11 13:12:24.000000000 -0500
34326 -+++ linux-3.0.9/include/linux/hid.h 2011-11-15 20:03:00.000000000 -0500
34327 -@@ -675,7 +675,7 @@ struct hid_ll_driver {
34328 +diff -urNp linux-3.1.1/include/linux/hid.h linux-3.1.1/include/linux/hid.h
34329 +--- linux-3.1.1/include/linux/hid.h 2011-11-11 15:19:27.000000000 -0500
34330 ++++ linux-3.1.1/include/linux/hid.h 2011-11-16 18:39:08.000000000 -0500
34331 +@@ -676,7 +676,7 @@ struct hid_ll_driver {
34332 unsigned int code, int value);
34333
34334 int (*parse)(struct hid_device *hdev);
34335 @@ -59277,9 +59121,9 @@ diff -urNp linux-3.0.9/include/linux/hid.h linux-3.0.9/include/linux/hid.h
34336
34337 #define PM_HINT_FULLON 1<<5
34338 #define PM_HINT_NORMAL 1<<1
34339 -diff -urNp linux-3.0.9/include/linux/highmem.h linux-3.0.9/include/linux/highmem.h
34340 ---- linux-3.0.9/include/linux/highmem.h 2011-11-11 13:12:24.000000000 -0500
34341 -+++ linux-3.0.9/include/linux/highmem.h 2011-11-15 20:03:00.000000000 -0500
34342 +diff -urNp linux-3.1.1/include/linux/highmem.h linux-3.1.1/include/linux/highmem.h
34343 +--- linux-3.1.1/include/linux/highmem.h 2011-11-11 15:19:27.000000000 -0500
34344 ++++ linux-3.1.1/include/linux/highmem.h 2011-11-16 18:39:08.000000000 -0500
34345 @@ -185,6 +185,18 @@ static inline void clear_highpage(struct
34346 kunmap_atomic(kaddr, KM_USER0);
34347 }
34348 @@ -59299,9 +59143,9 @@ diff -urNp linux-3.0.9/include/linux/highmem.h linux-3.0.9/include/linux/highmem
34349 static inline void zero_user_segments(struct page *page,
34350 unsigned start1, unsigned end1,
34351 unsigned start2, unsigned end2)
34352 -diff -urNp linux-3.0.9/include/linux/i2c.h linux-3.0.9/include/linux/i2c.h
34353 ---- linux-3.0.9/include/linux/i2c.h 2011-11-11 13:12:24.000000000 -0500
34354 -+++ linux-3.0.9/include/linux/i2c.h 2011-11-15 20:03:00.000000000 -0500
34355 +diff -urNp linux-3.1.1/include/linux/i2c.h linux-3.1.1/include/linux/i2c.h
34356 +--- linux-3.1.1/include/linux/i2c.h 2011-11-11 15:19:27.000000000 -0500
34357 ++++ linux-3.1.1/include/linux/i2c.h 2011-11-16 18:39:08.000000000 -0500
34358 @@ -346,6 +346,7 @@ struct i2c_algorithm {
34359 /* To determine what the adapter supports */
34360 u32 (*functionality) (struct i2c_adapter *);
34361 @@ -59310,9 +59154,9 @@ diff -urNp linux-3.0.9/include/linux/i2c.h linux-3.0.9/include/linux/i2c.h
34362
34363 /*
34364 * i2c_adapter is the structure used to identify a physical i2c bus along
34365 -diff -urNp linux-3.0.9/include/linux/i2o.h linux-3.0.9/include/linux/i2o.h
34366 ---- linux-3.0.9/include/linux/i2o.h 2011-11-11 13:12:24.000000000 -0500
34367 -+++ linux-3.0.9/include/linux/i2o.h 2011-11-15 20:03:00.000000000 -0500
34368 +diff -urNp linux-3.1.1/include/linux/i2o.h linux-3.1.1/include/linux/i2o.h
34369 +--- linux-3.1.1/include/linux/i2o.h 2011-11-11 15:19:27.000000000 -0500
34370 ++++ linux-3.1.1/include/linux/i2o.h 2011-11-16 18:39:08.000000000 -0500
34371 @@ -564,7 +564,7 @@ struct i2o_controller {
34372 struct i2o_device *exec; /* Executive */
34373 #if BITS_PER_LONG == 64
34374 @@ -59322,9 +59166,9 @@ diff -urNp linux-3.0.9/include/linux/i2o.h linux-3.0.9/include/linux/i2o.h
34375 struct list_head context_list; /* list of context id's
34376 and pointers */
34377 #endif
34378 -diff -urNp linux-3.0.9/include/linux/init.h linux-3.0.9/include/linux/init.h
34379 ---- linux-3.0.9/include/linux/init.h 2011-11-11 13:12:24.000000000 -0500
34380 -+++ linux-3.0.9/include/linux/init.h 2011-11-15 20:03:00.000000000 -0500
34381 +diff -urNp linux-3.1.1/include/linux/init.h linux-3.1.1/include/linux/init.h
34382 +--- linux-3.1.1/include/linux/init.h 2011-11-11 15:19:27.000000000 -0500
34383 ++++ linux-3.1.1/include/linux/init.h 2011-11-16 18:39:08.000000000 -0500
34384 @@ -293,13 +293,13 @@ void __init parse_early_options(char *cm
34385
34386 /* Each module must use one module_init(). */
34387 @@ -59341,9 +59185,9 @@ diff -urNp linux-3.0.9/include/linux/init.h linux-3.0.9/include/linux/init.h
34388 { return exitfn; } \
34389 void cleanup_module(void) __attribute__((alias(#exitfn)));
34390
34391 -diff -urNp linux-3.0.9/include/linux/init_task.h linux-3.0.9/include/linux/init_task.h
34392 ---- linux-3.0.9/include/linux/init_task.h 2011-11-11 13:12:24.000000000 -0500
34393 -+++ linux-3.0.9/include/linux/init_task.h 2011-11-15 20:03:00.000000000 -0500
34394 +diff -urNp linux-3.1.1/include/linux/init_task.h linux-3.1.1/include/linux/init_task.h
34395 +--- linux-3.1.1/include/linux/init_task.h 2011-11-11 15:19:27.000000000 -0500
34396 ++++ linux-3.1.1/include/linux/init_task.h 2011-11-16 18:39:08.000000000 -0500
34397 @@ -126,6 +126,12 @@ extern struct cred init_cred;
34398 # define INIT_PERF_EVENTS(tsk)
34399 #endif
34400 @@ -59365,9 +59209,9 @@ diff -urNp linux-3.0.9/include/linux/init_task.h linux-3.0.9/include/linux/init_
34401 .fs = &init_fs, \
34402 .files = &init_files, \
34403 .signal = &init_signals, \
34404 -diff -urNp linux-3.0.9/include/linux/intel-iommu.h linux-3.0.9/include/linux/intel-iommu.h
34405 ---- linux-3.0.9/include/linux/intel-iommu.h 2011-11-11 13:12:24.000000000 -0500
34406 -+++ linux-3.0.9/include/linux/intel-iommu.h 2011-11-15 20:03:00.000000000 -0500
34407 +diff -urNp linux-3.1.1/include/linux/intel-iommu.h linux-3.1.1/include/linux/intel-iommu.h
34408 +--- linux-3.1.1/include/linux/intel-iommu.h 2011-11-11 15:19:27.000000000 -0500
34409 ++++ linux-3.1.1/include/linux/intel-iommu.h 2011-11-16 18:39:08.000000000 -0500
34410 @@ -296,7 +296,7 @@ struct iommu_flush {
34411 u8 fm, u64 type);
34412 void (*flush_iotlb)(struct intel_iommu *iommu, u16 did, u64 addr,
34413 @@ -59377,9 +59221,9 @@ diff -urNp linux-3.0.9/include/linux/intel-iommu.h linux-3.0.9/include/linux/int
34414
34415 enum {
34416 SR_DMAR_FECTL_REG,
34417 -diff -urNp linux-3.0.9/include/linux/interrupt.h linux-3.0.9/include/linux/interrupt.h
34418 ---- linux-3.0.9/include/linux/interrupt.h 2011-11-11 13:12:24.000000000 -0500
34419 -+++ linux-3.0.9/include/linux/interrupt.h 2011-11-15 20:03:00.000000000 -0500
34420 +diff -urNp linux-3.1.1/include/linux/interrupt.h linux-3.1.1/include/linux/interrupt.h
34421 +--- linux-3.1.1/include/linux/interrupt.h 2011-11-11 15:19:27.000000000 -0500
34422 ++++ linux-3.1.1/include/linux/interrupt.h 2011-11-16 18:39:08.000000000 -0500
34423 @@ -425,7 +425,7 @@ enum
34424 /* map softirq index to softirq name. update 'softirq_to_name' in
34425 * kernel/softirq.c when adding a new softirq.
34426 @@ -59404,9 +59248,9 @@ diff -urNp linux-3.0.9/include/linux/interrupt.h linux-3.0.9/include/linux/inter
34427 extern void softirq_init(void);
34428 static inline void __raise_softirq_irqoff(unsigned int nr)
34429 {
34430 -diff -urNp linux-3.0.9/include/linux/kallsyms.h linux-3.0.9/include/linux/kallsyms.h
34431 ---- linux-3.0.9/include/linux/kallsyms.h 2011-11-11 13:12:24.000000000 -0500
34432 -+++ linux-3.0.9/include/linux/kallsyms.h 2011-11-15 20:03:00.000000000 -0500
34433 +diff -urNp linux-3.1.1/include/linux/kallsyms.h linux-3.1.1/include/linux/kallsyms.h
34434 +--- linux-3.1.1/include/linux/kallsyms.h 2011-11-11 15:19:27.000000000 -0500
34435 ++++ linux-3.1.1/include/linux/kallsyms.h 2011-11-16 18:40:31.000000000 -0500
34436 @@ -15,7 +15,8 @@
34437
34438 struct module;
34439 @@ -59434,9 +59278,9 @@ diff -urNp linux-3.0.9/include/linux/kallsyms.h linux-3.0.9/include/linux/kallsy
34440
34441 /* This macro allows us to keep printk typechecking */
34442 static void __check_printsym_format(const char *fmt, ...)
34443 -diff -urNp linux-3.0.9/include/linux/kgdb.h linux-3.0.9/include/linux/kgdb.h
34444 ---- linux-3.0.9/include/linux/kgdb.h 2011-11-11 13:12:24.000000000 -0500
34445 -+++ linux-3.0.9/include/linux/kgdb.h 2011-11-15 20:03:00.000000000 -0500
34446 +diff -urNp linux-3.1.1/include/linux/kgdb.h linux-3.1.1/include/linux/kgdb.h
34447 +--- linux-3.1.1/include/linux/kgdb.h 2011-11-11 15:19:27.000000000 -0500
34448 ++++ linux-3.1.1/include/linux/kgdb.h 2011-11-16 18:39:08.000000000 -0500
34449 @@ -53,7 +53,7 @@ extern int kgdb_connected;
34450 extern int kgdb_io_module_registered;
34451
34452 @@ -59464,9 +59308,9 @@ diff -urNp linux-3.0.9/include/linux/kgdb.h linux-3.0.9/include/linux/kgdb.h
34453
34454 extern struct kgdb_arch arch_kgdb_ops;
34455
34456 -diff -urNp linux-3.0.9/include/linux/kmod.h linux-3.0.9/include/linux/kmod.h
34457 ---- linux-3.0.9/include/linux/kmod.h 2011-11-11 13:12:24.000000000 -0500
34458 -+++ linux-3.0.9/include/linux/kmod.h 2011-11-15 20:03:00.000000000 -0500
34459 +diff -urNp linux-3.1.1/include/linux/kmod.h linux-3.1.1/include/linux/kmod.h
34460 +--- linux-3.1.1/include/linux/kmod.h 2011-11-11 15:19:27.000000000 -0500
34461 ++++ linux-3.1.1/include/linux/kmod.h 2011-11-16 18:40:31.000000000 -0500
34462 @@ -34,6 +34,8 @@ extern char modprobe_path[]; /* for sysc
34463 * usually useless though. */
34464 extern int __request_module(bool wait, const char *name, ...) \
34465 @@ -59476,10 +59320,10 @@ diff -urNp linux-3.0.9/include/linux/kmod.h linux-3.0.9/include/linux/kmod.h
34466 #define request_module(mod...) __request_module(true, mod)
34467 #define request_module_nowait(mod...) __request_module(false, mod)
34468 #define try_then_request_module(x, mod...) \
34469 -diff -urNp linux-3.0.9/include/linux/kvm_host.h linux-3.0.9/include/linux/kvm_host.h
34470 ---- linux-3.0.9/include/linux/kvm_host.h 2011-11-11 13:12:24.000000000 -0500
34471 -+++ linux-3.0.9/include/linux/kvm_host.h 2011-11-15 20:03:00.000000000 -0500
34472 -@@ -307,7 +307,7 @@ void kvm_vcpu_uninit(struct kvm_vcpu *vc
34473 +diff -urNp linux-3.1.1/include/linux/kvm_host.h linux-3.1.1/include/linux/kvm_host.h
34474 +--- linux-3.1.1/include/linux/kvm_host.h 2011-11-11 15:19:27.000000000 -0500
34475 ++++ linux-3.1.1/include/linux/kvm_host.h 2011-11-16 18:39:08.000000000 -0500
34476 +@@ -308,7 +308,7 @@ void kvm_vcpu_uninit(struct kvm_vcpu *vc
34477 void vcpu_load(struct kvm_vcpu *vcpu);
34478 void vcpu_put(struct kvm_vcpu *vcpu);
34479
34480 @@ -59488,7 +59332,7 @@ diff -urNp linux-3.0.9/include/linux/kvm_host.h linux-3.0.9/include/linux/kvm_ho
34481 struct module *module);
34482 void kvm_exit(void);
34483
34484 -@@ -446,7 +446,7 @@ int kvm_arch_vcpu_ioctl_set_guest_debug(
34485 +@@ -454,7 +454,7 @@ int kvm_arch_vcpu_ioctl_set_guest_debug(
34486 struct kvm_guest_debug *dbg);
34487 int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run);
34488
34489 @@ -59497,10 +59341,10 @@ diff -urNp linux-3.0.9/include/linux/kvm_host.h linux-3.0.9/include/linux/kvm_ho
34490 void kvm_arch_exit(void);
34491
34492 int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu);
34493 -diff -urNp linux-3.0.9/include/linux/libata.h linux-3.0.9/include/linux/libata.h
34494 ---- linux-3.0.9/include/linux/libata.h 2011-11-11 13:12:24.000000000 -0500
34495 -+++ linux-3.0.9/include/linux/libata.h 2011-11-15 20:03:00.000000000 -0500
34496 -@@ -899,7 +899,7 @@ struct ata_port_operations {
34497 +diff -urNp linux-3.1.1/include/linux/libata.h linux-3.1.1/include/linux/libata.h
34498 +--- linux-3.1.1/include/linux/libata.h 2011-11-11 15:19:27.000000000 -0500
34499 ++++ linux-3.1.1/include/linux/libata.h 2011-11-16 18:39:08.000000000 -0500
34500 +@@ -909,7 +909,7 @@ struct ata_port_operations {
34501 * fields must be pointers.
34502 */
34503 const struct ata_port_operations *inherits;
34504 @@ -59509,9 +59353,9 @@ diff -urNp linux-3.0.9/include/linux/libata.h linux-3.0.9/include/linux/libata.h
34505
34506 struct ata_port_info {
34507 unsigned long flags;
34508 -diff -urNp linux-3.0.9/include/linux/mca.h linux-3.0.9/include/linux/mca.h
34509 ---- linux-3.0.9/include/linux/mca.h 2011-11-11 13:12:24.000000000 -0500
34510 -+++ linux-3.0.9/include/linux/mca.h 2011-11-15 20:03:00.000000000 -0500
34511 +diff -urNp linux-3.1.1/include/linux/mca.h linux-3.1.1/include/linux/mca.h
34512 +--- linux-3.1.1/include/linux/mca.h 2011-11-11 15:19:27.000000000 -0500
34513 ++++ linux-3.1.1/include/linux/mca.h 2011-11-16 18:39:08.000000000 -0500
34514 @@ -80,7 +80,7 @@ struct mca_bus_accessor_functions {
34515 int region);
34516 void * (*mca_transform_memory)(struct mca_device *,
34517 @@ -59521,9 +59365,9 @@ diff -urNp linux-3.0.9/include/linux/mca.h linux-3.0.9/include/linux/mca.h
34518
34519 struct mca_bus {
34520 u64 default_dma_mask;
34521 -diff -urNp linux-3.0.9/include/linux/memory.h linux-3.0.9/include/linux/memory.h
34522 ---- linux-3.0.9/include/linux/memory.h 2011-11-11 13:12:24.000000000 -0500
34523 -+++ linux-3.0.9/include/linux/memory.h 2011-11-15 20:03:00.000000000 -0500
34524 +diff -urNp linux-3.1.1/include/linux/memory.h linux-3.1.1/include/linux/memory.h
34525 +--- linux-3.1.1/include/linux/memory.h 2011-11-11 15:19:27.000000000 -0500
34526 ++++ linux-3.1.1/include/linux/memory.h 2011-11-16 18:39:08.000000000 -0500
34527 @@ -144,7 +144,7 @@ struct memory_accessor {
34528 size_t count);
34529 ssize_t (*write)(struct memory_accessor *, const char *buf,
34530 @@ -59533,9 +59377,9 @@ diff -urNp linux-3.0.9/include/linux/memory.h linux-3.0.9/include/linux/memory.h
34531
34532 /*
34533 * Kernel text modification mutex, used for code patching. Users of this lock
34534 -diff -urNp linux-3.0.9/include/linux/mfd/abx500.h linux-3.0.9/include/linux/mfd/abx500.h
34535 ---- linux-3.0.9/include/linux/mfd/abx500.h 2011-11-11 13:12:24.000000000 -0500
34536 -+++ linux-3.0.9/include/linux/mfd/abx500.h 2011-11-15 20:03:00.000000000 -0500
34537 +diff -urNp linux-3.1.1/include/linux/mfd/abx500.h linux-3.1.1/include/linux/mfd/abx500.h
34538 +--- linux-3.1.1/include/linux/mfd/abx500.h 2011-11-11 15:19:27.000000000 -0500
34539 ++++ linux-3.1.1/include/linux/mfd/abx500.h 2011-11-16 18:39:08.000000000 -0500
34540 @@ -234,6 +234,7 @@ struct abx500_ops {
34541 int (*event_registers_startup_state_get) (struct device *, u8 *);
34542 int (*startup_irq_enabled) (struct device *, unsigned int);
34543 @@ -59544,10 +59388,10 @@ diff -urNp linux-3.0.9/include/linux/mfd/abx500.h linux-3.0.9/include/linux/mfd/
34544
34545 int abx500_register_ops(struct device *core_dev, struct abx500_ops *ops);
34546 void abx500_remove_ops(struct device *dev);
34547 -diff -urNp linux-3.0.9/include/linux/mm.h linux-3.0.9/include/linux/mm.h
34548 ---- linux-3.0.9/include/linux/mm.h 2011-11-11 13:12:24.000000000 -0500
34549 -+++ linux-3.0.9/include/linux/mm.h 2011-11-15 20:03:00.000000000 -0500
34550 -@@ -113,7 +113,14 @@ extern unsigned int kobjsize(const void
34551 +diff -urNp linux-3.1.1/include/linux/mm.h linux-3.1.1/include/linux/mm.h
34552 +--- linux-3.1.1/include/linux/mm.h 2011-11-11 15:19:27.000000000 -0500
34553 ++++ linux-3.1.1/include/linux/mm.h 2011-11-16 18:39:08.000000000 -0500
34554 +@@ -114,7 +114,14 @@ extern unsigned int kobjsize(const void
34555
34556 #define VM_CAN_NONLINEAR 0x08000000 /* Has ->fault & does nonlinear pages */
34557 #define VM_MIXEDMAP 0x10000000 /* Can contain "struct page" and pure PFN pages */
34558 @@ -59562,7 +59406,7 @@ diff -urNp linux-3.0.9/include/linux/mm.h linux-3.0.9/include/linux/mm.h
34559 #define VM_PFN_AT_MMAP 0x40000000 /* PFNMAP vma that is fully mapped at mmap time */
34560 #define VM_MERGEABLE 0x80000000 /* KSM may merge identical pages */
34561
34562 -@@ -1008,34 +1015,6 @@ int set_page_dirty(struct page *page);
34563 +@@ -1011,34 +1018,6 @@ int set_page_dirty(struct page *page);
34564 int set_page_dirty_lock(struct page *page);
34565 int clear_page_dirty_for_io(struct page *page);
34566
34567 @@ -59597,9 +59441,9 @@ diff -urNp linux-3.0.9/include/linux/mm.h linux-3.0.9/include/linux/mm.h
34568 extern unsigned long move_page_tables(struct vm_area_struct *vma,
34569 unsigned long old_addr, struct vm_area_struct *new_vma,
34570 unsigned long new_addr, unsigned long len);
34571 -@@ -1168,6 +1147,15 @@ struct shrinker {
34572 - extern void register_shrinker(struct shrinker *);
34573 - extern void unregister_shrinker(struct shrinker *);
34574 +@@ -1133,6 +1112,15 @@ static inline void sync_mm_rss(struct ta
34575 + }
34576 + #endif
34577
34578 +#ifdef CONFIG_MMU
34579 +pgprot_t vm_get_page_prot(vm_flags_t vm_flags);
34580 @@ -59613,7 +59457,7 @@ diff -urNp linux-3.0.9/include/linux/mm.h linux-3.0.9/include/linux/mm.h
34581 int vma_wants_writenotify(struct vm_area_struct *vma);
34582
34583 extern pte_t *__get_locked_pte(struct mm_struct *mm, unsigned long addr,
34584 -@@ -1451,6 +1439,7 @@ out:
34585 +@@ -1417,6 +1405,7 @@ out:
34586 }
34587
34588 extern int do_munmap(struct mm_struct *, unsigned long, size_t);
34589 @@ -59621,7 +59465,7 @@ diff -urNp linux-3.0.9/include/linux/mm.h linux-3.0.9/include/linux/mm.h
34590
34591 extern unsigned long do_brk(unsigned long, unsigned long);
34592
34593 -@@ -1509,6 +1498,10 @@ extern struct vm_area_struct * find_vma(
34594 +@@ -1474,6 +1463,10 @@ extern struct vm_area_struct * find_vma(
34595 extern struct vm_area_struct * find_vma_prev(struct mm_struct * mm, unsigned long addr,
34596 struct vm_area_struct **pprev);
34597
34598 @@ -59632,7 +59476,7 @@ diff -urNp linux-3.0.9/include/linux/mm.h linux-3.0.9/include/linux/mm.h
34599 /* Look up the first VMA which intersects the interval start_addr..end_addr-1,
34600 NULL if none. Assume start_addr < end_addr. */
34601 static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * mm, unsigned long start_addr, unsigned long end_addr)
34602 -@@ -1525,15 +1518,6 @@ static inline unsigned long vma_pages(st
34603 +@@ -1490,15 +1483,6 @@ static inline unsigned long vma_pages(st
34604 return (vma->vm_end - vma->vm_start) >> PAGE_SHIFT;
34605 }
34606
34607 @@ -59648,7 +59492,7 @@ diff -urNp linux-3.0.9/include/linux/mm.h linux-3.0.9/include/linux/mm.h
34608 struct vm_area_struct *find_extend_vma(struct mm_struct *, unsigned long addr);
34609 int remap_pfn_range(struct vm_area_struct *, unsigned long addr,
34610 unsigned long pfn, unsigned long size, pgprot_t);
34611 -@@ -1646,7 +1630,7 @@ extern int unpoison_memory(unsigned long
34612 +@@ -1612,7 +1596,7 @@ extern int unpoison_memory(unsigned long
34613 extern int sysctl_memory_failure_early_kill;
34614 extern int sysctl_memory_failure_recovery;
34615 extern void shake_page(struct page *p, int access);
34616 @@ -59657,7 +59501,7 @@ diff -urNp linux-3.0.9/include/linux/mm.h linux-3.0.9/include/linux/mm.h
34617 extern int soft_offline_page(struct page *page, int flags);
34618
34619 extern void dump_page(struct page *page);
34620 -@@ -1660,5 +1644,11 @@ extern void copy_user_huge_page(struct p
34621 +@@ -1626,5 +1610,11 @@ extern void copy_user_huge_page(struct p
34622 unsigned int pages_per_huge_page);
34623 #endif /* CONFIG_TRANSPARENT_HUGEPAGE || CONFIG_HUGETLBFS */
34624
34625 @@ -59669,10 +59513,10 @@ diff -urNp linux-3.0.9/include/linux/mm.h linux-3.0.9/include/linux/mm.h
34626 +
34627 #endif /* __KERNEL__ */
34628 #endif /* _LINUX_MM_H */
34629 -diff -urNp linux-3.0.9/include/linux/mm_types.h linux-3.0.9/include/linux/mm_types.h
34630 ---- linux-3.0.9/include/linux/mm_types.h 2011-11-11 13:12:24.000000000 -0500
34631 -+++ linux-3.0.9/include/linux/mm_types.h 2011-11-15 20:03:00.000000000 -0500
34632 -@@ -198,6 +198,8 @@ struct vm_area_struct {
34633 +diff -urNp linux-3.1.1/include/linux/mm_types.h linux-3.1.1/include/linux/mm_types.h
34634 +--- linux-3.1.1/include/linux/mm_types.h 2011-11-11 15:19:27.000000000 -0500
34635 ++++ linux-3.1.1/include/linux/mm_types.h 2011-11-16 18:39:08.000000000 -0500
34636 +@@ -230,6 +230,8 @@ struct vm_area_struct {
34637 #ifdef CONFIG_NUMA
34638 struct mempolicy *vm_policy; /* NUMA policy for the VMA */
34639 #endif
34640 @@ -59681,7 +59525,7 @@ diff -urNp linux-3.0.9/include/linux/mm_types.h linux-3.0.9/include/linux/mm_typ
34641 };
34642
34643 struct core_thread {
34644 -@@ -330,6 +332,24 @@ struct mm_struct {
34645 +@@ -362,6 +364,24 @@ struct mm_struct {
34646 #ifdef CONFIG_CPUMASK_OFFSTACK
34647 struct cpumask cpumask_allocation;
34648 #endif
34649 @@ -59706,9 +59550,9 @@ diff -urNp linux-3.0.9/include/linux/mm_types.h linux-3.0.9/include/linux/mm_typ
34650 };
34651
34652 static inline void mm_init_cpumask(struct mm_struct *mm)
34653 -diff -urNp linux-3.0.9/include/linux/mmu_notifier.h linux-3.0.9/include/linux/mmu_notifier.h
34654 ---- linux-3.0.9/include/linux/mmu_notifier.h 2011-11-11 13:12:24.000000000 -0500
34655 -+++ linux-3.0.9/include/linux/mmu_notifier.h 2011-11-15 20:03:00.000000000 -0500
34656 +diff -urNp linux-3.1.1/include/linux/mmu_notifier.h linux-3.1.1/include/linux/mmu_notifier.h
34657 +--- linux-3.1.1/include/linux/mmu_notifier.h 2011-11-11 15:19:27.000000000 -0500
34658 ++++ linux-3.1.1/include/linux/mmu_notifier.h 2011-11-16 18:39:08.000000000 -0500
34659 @@ -255,12 +255,12 @@ static inline void mmu_notifier_mm_destr
34660 */
34661 #define ptep_clear_flush_notify(__vma, __address, __ptep) \
34662 @@ -59725,10 +59569,10 @@ diff -urNp linux-3.0.9/include/linux/mmu_notifier.h linux-3.0.9/include/linux/mm
34663 })
34664
34665 #define pmdp_clear_flush_notify(__vma, __address, __pmdp) \
34666 -diff -urNp linux-3.0.9/include/linux/mmzone.h linux-3.0.9/include/linux/mmzone.h
34667 ---- linux-3.0.9/include/linux/mmzone.h 2011-11-11 13:12:24.000000000 -0500
34668 -+++ linux-3.0.9/include/linux/mmzone.h 2011-11-15 20:03:00.000000000 -0500
34669 -@@ -350,7 +350,7 @@ struct zone {
34670 +diff -urNp linux-3.1.1/include/linux/mmzone.h linux-3.1.1/include/linux/mmzone.h
34671 +--- linux-3.1.1/include/linux/mmzone.h 2011-11-11 15:19:27.000000000 -0500
34672 ++++ linux-3.1.1/include/linux/mmzone.h 2011-11-16 18:39:08.000000000 -0500
34673 +@@ -356,7 +356,7 @@ struct zone {
34674 unsigned long flags; /* zone flags, see below */
34675
34676 /* Zone statistics */
34677 @@ -59737,9 +59581,9 @@ diff -urNp linux-3.0.9/include/linux/mmzone.h linux-3.0.9/include/linux/mmzone.h
34678
34679 /*
34680 * The target ratio of ACTIVE_ANON to INACTIVE_ANON pages on
34681 -diff -urNp linux-3.0.9/include/linux/mod_devicetable.h linux-3.0.9/include/linux/mod_devicetable.h
34682 ---- linux-3.0.9/include/linux/mod_devicetable.h 2011-11-11 13:12:24.000000000 -0500
34683 -+++ linux-3.0.9/include/linux/mod_devicetable.h 2011-11-15 20:03:00.000000000 -0500
34684 +diff -urNp linux-3.1.1/include/linux/mod_devicetable.h linux-3.1.1/include/linux/mod_devicetable.h
34685 +--- linux-3.1.1/include/linux/mod_devicetable.h 2011-11-11 15:19:27.000000000 -0500
34686 ++++ linux-3.1.1/include/linux/mod_devicetable.h 2011-11-16 18:39:08.000000000 -0500
34687 @@ -12,7 +12,7 @@
34688 typedef unsigned long kernel_ulong_t;
34689 #endif
34690 @@ -59758,9 +59602,9 @@ diff -urNp linux-3.0.9/include/linux/mod_devicetable.h linux-3.0.9/include/linux
34691
34692 struct hid_device_id {
34693 __u16 bus;
34694 -diff -urNp linux-3.0.9/include/linux/module.h linux-3.0.9/include/linux/module.h
34695 ---- linux-3.0.9/include/linux/module.h 2011-11-11 13:12:24.000000000 -0500
34696 -+++ linux-3.0.9/include/linux/module.h 2011-11-15 20:03:00.000000000 -0500
34697 +diff -urNp linux-3.1.1/include/linux/module.h linux-3.1.1/include/linux/module.h
34698 +--- linux-3.1.1/include/linux/module.h 2011-11-11 15:19:27.000000000 -0500
34699 ++++ linux-3.1.1/include/linux/module.h 2011-11-16 18:39:08.000000000 -0500
34700 @@ -16,6 +16,7 @@
34701 #include <linux/kobject.h>
34702 #include <linux/moduleparam.h>
34703 @@ -59769,7 +59613,7 @@ diff -urNp linux-3.0.9/include/linux/module.h linux-3.0.9/include/linux/module.h
34704
34705 #include <linux/percpu.h>
34706 #include <asm/module.h>
34707 -@@ -325,19 +326,16 @@ struct module
34708 +@@ -327,19 +328,16 @@ struct module
34709 int (*init)(void);
34710
34711 /* If this is non-NULL, vfree after init() returns */
34712 @@ -59793,7 +59637,7 @@ diff -urNp linux-3.0.9/include/linux/module.h linux-3.0.9/include/linux/module.h
34713
34714 /* Arch-specific module values */
34715 struct mod_arch_specific arch;
34716 -@@ -393,6 +391,10 @@ struct module
34717 +@@ -395,6 +393,10 @@ struct module
34718 #ifdef CONFIG_EVENT_TRACING
34719 struct ftrace_event_call **trace_events;
34720 unsigned int num_trace_events;
34721 @@ -59804,7 +59648,7 @@ diff -urNp linux-3.0.9/include/linux/module.h linux-3.0.9/include/linux/module.h
34722 #endif
34723 #ifdef CONFIG_FTRACE_MCOUNT_RECORD
34724 unsigned int num_ftrace_callsites;
34725 -@@ -443,16 +445,46 @@ bool is_module_address(unsigned long add
34726 +@@ -445,16 +447,46 @@ bool is_module_address(unsigned long add
34727 bool is_module_percpu_address(unsigned long addr);
34728 bool is_module_text_address(unsigned long addr);
34729
34730 @@ -59855,10 +59699,10 @@ diff -urNp linux-3.0.9/include/linux/module.h linux-3.0.9/include/linux/module.h
34731 }
34732
34733 /* Search for module by name: must hold module_mutex. */
34734 -diff -urNp linux-3.0.9/include/linux/moduleloader.h linux-3.0.9/include/linux/moduleloader.h
34735 ---- linux-3.0.9/include/linux/moduleloader.h 2011-11-11 13:12:24.000000000 -0500
34736 -+++ linux-3.0.9/include/linux/moduleloader.h 2011-11-15 20:03:00.000000000 -0500
34737 -@@ -20,9 +20,21 @@ unsigned int arch_mod_section_prepend(st
34738 +diff -urNp linux-3.1.1/include/linux/moduleloader.h linux-3.1.1/include/linux/moduleloader.h
34739 +--- linux-3.1.1/include/linux/moduleloader.h 2011-11-11 15:19:27.000000000 -0500
34740 ++++ linux-3.1.1/include/linux/moduleloader.h 2011-11-16 18:39:08.000000000 -0500
34741 +@@ -25,9 +25,21 @@ unsigned int arch_mod_section_prepend(st
34742 sections. Returns NULL on failure. */
34743 void *module_alloc(unsigned long size);
34744
34745 @@ -59880,9 +59724,9 @@ diff -urNp linux-3.0.9/include/linux/moduleloader.h linux-3.0.9/include/linux/mo
34746 /* Apply the given relocation to the (simplified) ELF. Return -error
34747 or 0. */
34748 int apply_relocate(Elf_Shdr *sechdrs,
34749 -diff -urNp linux-3.0.9/include/linux/moduleparam.h linux-3.0.9/include/linux/moduleparam.h
34750 ---- linux-3.0.9/include/linux/moduleparam.h 2011-11-11 13:12:24.000000000 -0500
34751 -+++ linux-3.0.9/include/linux/moduleparam.h 2011-11-15 20:03:00.000000000 -0500
34752 +diff -urNp linux-3.1.1/include/linux/moduleparam.h linux-3.1.1/include/linux/moduleparam.h
34753 +--- linux-3.1.1/include/linux/moduleparam.h 2011-11-11 15:19:27.000000000 -0500
34754 ++++ linux-3.1.1/include/linux/moduleparam.h 2011-11-16 18:39:08.000000000 -0500
34755 @@ -255,7 +255,7 @@ static inline void __kernel_param_unlock
34756 * @len is usually just sizeof(string).
34757 */
34758 @@ -59901,9 +59745,9 @@ diff -urNp linux-3.0.9/include/linux/moduleparam.h linux-3.0.9/include/linux/mod
34759 = { .max = ARRAY_SIZE(array), .num = nump, \
34760 .ops = &param_ops_##type, \
34761 .elemsize = sizeof(array[0]), .elem = array }; \
34762 -diff -urNp linux-3.0.9/include/linux/namei.h linux-3.0.9/include/linux/namei.h
34763 ---- linux-3.0.9/include/linux/namei.h 2011-11-11 13:12:24.000000000 -0500
34764 -+++ linux-3.0.9/include/linux/namei.h 2011-11-15 20:03:00.000000000 -0500
34765 +diff -urNp linux-3.1.1/include/linux/namei.h linux-3.1.1/include/linux/namei.h
34766 +--- linux-3.1.1/include/linux/namei.h 2011-11-11 15:19:27.000000000 -0500
34767 ++++ linux-3.1.1/include/linux/namei.h 2011-11-16 18:39:08.000000000 -0500
34768 @@ -24,7 +24,7 @@ struct nameidata {
34769 unsigned seq;
34770 int last_type;
34771 @@ -59913,7 +59757,7 @@ diff -urNp linux-3.0.9/include/linux/namei.h linux-3.0.9/include/linux/namei.h
34772
34773 /* Intent data */
34774 union {
34775 -@@ -93,12 +93,12 @@ extern int follow_up(struct path *);
34776 +@@ -94,12 +94,12 @@ extern int follow_up(struct path *);
34777 extern struct dentry *lock_rename(struct dentry *, struct dentry *);
34778 extern void unlock_rename(struct dentry *, struct dentry *);
34779
34780 @@ -59928,10 +59772,10 @@ diff -urNp linux-3.0.9/include/linux/namei.h linux-3.0.9/include/linux/namei.h
34781 {
34782 return nd->saved_names[nd->depth];
34783 }
34784 -diff -urNp linux-3.0.9/include/linux/netdevice.h linux-3.0.9/include/linux/netdevice.h
34785 ---- linux-3.0.9/include/linux/netdevice.h 2011-11-11 13:12:24.000000000 -0500
34786 -+++ linux-3.0.9/include/linux/netdevice.h 2011-11-15 20:03:00.000000000 -0500
34787 -@@ -979,6 +979,7 @@ struct net_device_ops {
34788 +diff -urNp linux-3.1.1/include/linux/netdevice.h linux-3.1.1/include/linux/netdevice.h
34789 +--- linux-3.1.1/include/linux/netdevice.h 2011-11-11 15:19:27.000000000 -0500
34790 ++++ linux-3.1.1/include/linux/netdevice.h 2011-11-16 18:39:08.000000000 -0500
34791 +@@ -944,6 +944,7 @@ struct net_device_ops {
34792 int (*ndo_set_features)(struct net_device *dev,
34793 u32 features);
34794 };
34795 @@ -59939,9 +59783,9 @@ diff -urNp linux-3.0.9/include/linux/netdevice.h linux-3.0.9/include/linux/netde
34796
34797 /*
34798 * The DEVICE structure.
34799 -diff -urNp linux-3.0.9/include/linux/netfilter/xt_gradm.h linux-3.0.9/include/linux/netfilter/xt_gradm.h
34800 ---- linux-3.0.9/include/linux/netfilter/xt_gradm.h 1969-12-31 19:00:00.000000000 -0500
34801 -+++ linux-3.0.9/include/linux/netfilter/xt_gradm.h 2011-11-15 20:03:00.000000000 -0500
34802 +diff -urNp linux-3.1.1/include/linux/netfilter/xt_gradm.h linux-3.1.1/include/linux/netfilter/xt_gradm.h
34803 +--- linux-3.1.1/include/linux/netfilter/xt_gradm.h 1969-12-31 19:00:00.000000000 -0500
34804 ++++ linux-3.1.1/include/linux/netfilter/xt_gradm.h 2011-11-16 18:40:31.000000000 -0500
34805 @@ -0,0 +1,9 @@
34806 +#ifndef _LINUX_NETFILTER_XT_GRADM_H
34807 +#define _LINUX_NETFILTER_XT_GRADM_H 1
34808 @@ -59952,9 +59796,9 @@ diff -urNp linux-3.0.9/include/linux/netfilter/xt_gradm.h linux-3.0.9/include/li
34809 +};
34810 +
34811 +#endif
34812 -diff -urNp linux-3.0.9/include/linux/of_pdt.h linux-3.0.9/include/linux/of_pdt.h
34813 ---- linux-3.0.9/include/linux/of_pdt.h 2011-11-11 13:12:24.000000000 -0500
34814 -+++ linux-3.0.9/include/linux/of_pdt.h 2011-11-15 20:03:00.000000000 -0500
34815 +diff -urNp linux-3.1.1/include/linux/of_pdt.h linux-3.1.1/include/linux/of_pdt.h
34816 +--- linux-3.1.1/include/linux/of_pdt.h 2011-11-11 15:19:27.000000000 -0500
34817 ++++ linux-3.1.1/include/linux/of_pdt.h 2011-11-16 18:39:08.000000000 -0500
34818 @@ -32,7 +32,7 @@ struct of_pdt_ops {
34819
34820 /* return 0 on success; fill in 'len' with number of bytes in path */
34821 @@ -59964,9 +59808,9 @@ diff -urNp linux-3.0.9/include/linux/of_pdt.h linux-3.0.9/include/linux/of_pdt.h
34822
34823 extern void *prom_early_alloc(unsigned long size);
34824
34825 -diff -urNp linux-3.0.9/include/linux/oprofile.h linux-3.0.9/include/linux/oprofile.h
34826 ---- linux-3.0.9/include/linux/oprofile.h 2011-11-11 13:12:24.000000000 -0500
34827 -+++ linux-3.0.9/include/linux/oprofile.h 2011-11-15 20:03:00.000000000 -0500
34828 +diff -urNp linux-3.1.1/include/linux/oprofile.h linux-3.1.1/include/linux/oprofile.h
34829 +--- linux-3.1.1/include/linux/oprofile.h 2011-11-11 15:19:27.000000000 -0500
34830 ++++ linux-3.1.1/include/linux/oprofile.h 2011-11-16 18:39:08.000000000 -0500
34831 @@ -139,9 +139,9 @@ int oprofilefs_create_ulong(struct super
34832 int oprofilefs_create_ro_ulong(struct super_block * sb, struct dentry * root,
34833 char const * name, ulong * val);
34834 @@ -59979,9 +59823,9 @@ diff -urNp linux-3.0.9/include/linux/oprofile.h linux-3.0.9/include/linux/oprofi
34835
34836 /** create a directory */
34837 struct dentry * oprofilefs_mkdir(struct super_block * sb, struct dentry * root,
34838 -diff -urNp linux-3.0.9/include/linux/padata.h linux-3.0.9/include/linux/padata.h
34839 ---- linux-3.0.9/include/linux/padata.h 2011-11-11 13:12:24.000000000 -0500
34840 -+++ linux-3.0.9/include/linux/padata.h 2011-11-15 20:03:00.000000000 -0500
34841 +diff -urNp linux-3.1.1/include/linux/padata.h linux-3.1.1/include/linux/padata.h
34842 +--- linux-3.1.1/include/linux/padata.h 2011-11-11 15:19:27.000000000 -0500
34843 ++++ linux-3.1.1/include/linux/padata.h 2011-11-16 18:39:08.000000000 -0500
34844 @@ -129,7 +129,7 @@ struct parallel_data {
34845 struct padata_instance *pinst;
34846 struct padata_parallel_queue __percpu *pqueue;
34847 @@ -59991,10 +59835,10 @@ diff -urNp linux-3.0.9/include/linux/padata.h linux-3.0.9/include/linux/padata.h
34848 atomic_t reorder_objects;
34849 atomic_t refcnt;
34850 unsigned int max_seq_nr;
34851 -diff -urNp linux-3.0.9/include/linux/perf_event.h linux-3.0.9/include/linux/perf_event.h
34852 ---- linux-3.0.9/include/linux/perf_event.h 2011-11-11 13:12:24.000000000 -0500
34853 -+++ linux-3.0.9/include/linux/perf_event.h 2011-11-15 20:03:00.000000000 -0500
34854 -@@ -761,8 +761,8 @@ struct perf_event {
34855 +diff -urNp linux-3.1.1/include/linux/perf_event.h linux-3.1.1/include/linux/perf_event.h
34856 +--- linux-3.1.1/include/linux/perf_event.h 2011-11-11 15:19:27.000000000 -0500
34857 ++++ linux-3.1.1/include/linux/perf_event.h 2011-11-16 18:39:08.000000000 -0500
34858 +@@ -745,8 +745,8 @@ struct perf_event {
34859
34860 enum perf_event_active_state state;
34861 unsigned int attach_state;
34862 @@ -60005,7 +59849,7 @@ diff -urNp linux-3.0.9/include/linux/perf_event.h linux-3.0.9/include/linux/perf
34863
34864 /*
34865 * These are the total time in nanoseconds that the event
34866 -@@ -813,8 +813,8 @@ struct perf_event {
34867 +@@ -797,8 +797,8 @@ struct perf_event {
34868 * These accumulate total time (in nanoseconds) that children
34869 * events have been enabled and running, respectively.
34870 */
34871 @@ -60016,9 +59860,9 @@ diff -urNp linux-3.0.9/include/linux/perf_event.h linux-3.0.9/include/linux/perf
34872
34873 /*
34874 * Protect attach/detach and child_list:
34875 -diff -urNp linux-3.0.9/include/linux/pipe_fs_i.h linux-3.0.9/include/linux/pipe_fs_i.h
34876 ---- linux-3.0.9/include/linux/pipe_fs_i.h 2011-11-11 13:12:24.000000000 -0500
34877 -+++ linux-3.0.9/include/linux/pipe_fs_i.h 2011-11-15 20:03:00.000000000 -0500
34878 +diff -urNp linux-3.1.1/include/linux/pipe_fs_i.h linux-3.1.1/include/linux/pipe_fs_i.h
34879 +--- linux-3.1.1/include/linux/pipe_fs_i.h 2011-11-11 15:19:27.000000000 -0500
34880 ++++ linux-3.1.1/include/linux/pipe_fs_i.h 2011-11-16 18:39:08.000000000 -0500
34881 @@ -46,9 +46,9 @@ struct pipe_buffer {
34882 struct pipe_inode_info {
34883 wait_queue_head_t wait;
34884 @@ -60032,10 +59876,10 @@ diff -urNp linux-3.0.9/include/linux/pipe_fs_i.h linux-3.0.9/include/linux/pipe_
34885 unsigned int r_counter;
34886 unsigned int w_counter;
34887 struct page *tmp_page;
34888 -diff -urNp linux-3.0.9/include/linux/pm_runtime.h linux-3.0.9/include/linux/pm_runtime.h
34889 ---- linux-3.0.9/include/linux/pm_runtime.h 2011-11-11 13:12:24.000000000 -0500
34890 -+++ linux-3.0.9/include/linux/pm_runtime.h 2011-11-15 20:03:00.000000000 -0500
34891 -@@ -94,7 +94,7 @@ static inline bool pm_runtime_callbacks_
34892 +diff -urNp linux-3.1.1/include/linux/pm_runtime.h linux-3.1.1/include/linux/pm_runtime.h
34893 +--- linux-3.1.1/include/linux/pm_runtime.h 2011-11-11 15:19:27.000000000 -0500
34894 ++++ linux-3.1.1/include/linux/pm_runtime.h 2011-11-16 18:39:08.000000000 -0500
34895 +@@ -99,7 +99,7 @@ static inline bool pm_runtime_callbacks_
34896
34897 static inline void pm_runtime_mark_last_busy(struct device *dev)
34898 {
34899 @@ -60044,9 +59888,9 @@ diff -urNp linux-3.0.9/include/linux/pm_runtime.h linux-3.0.9/include/linux/pm_r
34900 }
34901
34902 #else /* !CONFIG_PM_RUNTIME */
34903 -diff -urNp linux-3.0.9/include/linux/poison.h linux-3.0.9/include/linux/poison.h
34904 ---- linux-3.0.9/include/linux/poison.h 2011-11-11 13:12:24.000000000 -0500
34905 -+++ linux-3.0.9/include/linux/poison.h 2011-11-15 20:03:00.000000000 -0500
34906 +diff -urNp linux-3.1.1/include/linux/poison.h linux-3.1.1/include/linux/poison.h
34907 +--- linux-3.1.1/include/linux/poison.h 2011-11-11 15:19:27.000000000 -0500
34908 ++++ linux-3.1.1/include/linux/poison.h 2011-11-16 18:39:08.000000000 -0500
34909 @@ -19,8 +19,8 @@
34910 * under normal circumstances, used to verify that nobody uses
34911 * non-initialized list entries.
34912 @@ -60058,10 +59902,10 @@ diff -urNp linux-3.0.9/include/linux/poison.h linux-3.0.9/include/linux/poison.h
34913
34914 /********** include/linux/timer.h **********/
34915 /*
34916 -diff -urNp linux-3.0.9/include/linux/preempt.h linux-3.0.9/include/linux/preempt.h
34917 ---- linux-3.0.9/include/linux/preempt.h 2011-11-11 13:12:24.000000000 -0500
34918 -+++ linux-3.0.9/include/linux/preempt.h 2011-11-15 20:03:00.000000000 -0500
34919 -@@ -115,7 +115,7 @@ struct preempt_ops {
34920 +diff -urNp linux-3.1.1/include/linux/preempt.h linux-3.1.1/include/linux/preempt.h
34921 +--- linux-3.1.1/include/linux/preempt.h 2011-11-11 15:19:27.000000000 -0500
34922 ++++ linux-3.1.1/include/linux/preempt.h 2011-11-16 18:39:08.000000000 -0500
34923 +@@ -123,7 +123,7 @@ struct preempt_ops {
34924 void (*sched_in)(struct preempt_notifier *notifier, int cpu);
34925 void (*sched_out)(struct preempt_notifier *notifier,
34926 struct task_struct *next);
34927 @@ -60070,9 +59914,9 @@ diff -urNp linux-3.0.9/include/linux/preempt.h linux-3.0.9/include/linux/preempt
34928
34929 /**
34930 * preempt_notifier - key for installing preemption notifiers
34931 -diff -urNp linux-3.0.9/include/linux/proc_fs.h linux-3.0.9/include/linux/proc_fs.h
34932 ---- linux-3.0.9/include/linux/proc_fs.h 2011-11-11 13:12:24.000000000 -0500
34933 -+++ linux-3.0.9/include/linux/proc_fs.h 2011-11-15 20:03:00.000000000 -0500
34934 +diff -urNp linux-3.1.1/include/linux/proc_fs.h linux-3.1.1/include/linux/proc_fs.h
34935 +--- linux-3.1.1/include/linux/proc_fs.h 2011-11-11 15:19:27.000000000 -0500
34936 ++++ linux-3.1.1/include/linux/proc_fs.h 2011-11-16 18:40:31.000000000 -0500
34937 @@ -155,6 +155,19 @@ static inline struct proc_dir_entry *pro
34938 return proc_create_data(name, mode, parent, proc_fops, NULL);
34939 }
34940 @@ -60102,10 +59946,10 @@ diff -urNp linux-3.0.9/include/linux/proc_fs.h linux-3.0.9/include/linux/proc_fs
34941
34942 struct ctl_table_header;
34943 struct ctl_table;
34944 -diff -urNp linux-3.0.9/include/linux/ptrace.h linux-3.0.9/include/linux/ptrace.h
34945 ---- linux-3.0.9/include/linux/ptrace.h 2011-11-11 13:12:24.000000000 -0500
34946 -+++ linux-3.0.9/include/linux/ptrace.h 2011-11-15 20:03:00.000000000 -0500
34947 -@@ -115,10 +115,10 @@ extern void __ptrace_unlink(struct task_
34948 +diff -urNp linux-3.1.1/include/linux/ptrace.h linux-3.1.1/include/linux/ptrace.h
34949 +--- linux-3.1.1/include/linux/ptrace.h 2011-11-11 15:19:27.000000000 -0500
34950 ++++ linux-3.1.1/include/linux/ptrace.h 2011-11-16 18:40:31.000000000 -0500
34951 +@@ -129,10 +129,10 @@ extern void __ptrace_unlink(struct task_
34952 extern void exit_ptrace(struct task_struct *tracer);
34953 #define PTRACE_MODE_READ 1
34954 #define PTRACE_MODE_ATTACH 2
34955 @@ -60118,9 +59962,9 @@ diff -urNp linux-3.0.9/include/linux/ptrace.h linux-3.0.9/include/linux/ptrace.h
34956
34957 static inline int ptrace_reparented(struct task_struct *child)
34958 {
34959 -diff -urNp linux-3.0.9/include/linux/random.h linux-3.0.9/include/linux/random.h
34960 ---- linux-3.0.9/include/linux/random.h 2011-11-11 13:12:24.000000000 -0500
34961 -+++ linux-3.0.9/include/linux/random.h 2011-11-15 20:03:00.000000000 -0500
34962 +diff -urNp linux-3.1.1/include/linux/random.h linux-3.1.1/include/linux/random.h
34963 +--- linux-3.1.1/include/linux/random.h 2011-11-11 15:19:27.000000000 -0500
34964 ++++ linux-3.1.1/include/linux/random.h 2011-11-16 18:39:08.000000000 -0500
34965 @@ -69,12 +69,17 @@ void srandom32(u32 seed);
34966
34967 u32 prandom32(struct rnd_state *);
34968 @@ -60140,10 +59984,10 @@ diff -urNp linux-3.0.9/include/linux/random.h linux-3.0.9/include/linux/random.h
34969 }
34970
34971 /**
34972 -diff -urNp linux-3.0.9/include/linux/reboot.h linux-3.0.9/include/linux/reboot.h
34973 ---- linux-3.0.9/include/linux/reboot.h 2011-11-11 13:12:24.000000000 -0500
34974 -+++ linux-3.0.9/include/linux/reboot.h 2011-11-15 20:03:00.000000000 -0500
34975 -@@ -47,9 +47,9 @@ extern int unregister_reboot_notifier(st
34976 +diff -urNp linux-3.1.1/include/linux/reboot.h linux-3.1.1/include/linux/reboot.h
34977 +--- linux-3.1.1/include/linux/reboot.h 2011-11-11 15:19:27.000000000 -0500
34978 ++++ linux-3.1.1/include/linux/reboot.h 2011-11-16 18:39:08.000000000 -0500
34979 +@@ -52,9 +52,9 @@ extern int unregister_reboot_notifier(st
34980 * Architecture-specific implementations of sys_reboot commands.
34981 */
34982
34983 @@ -60156,7 +60000,7 @@ diff -urNp linux-3.0.9/include/linux/reboot.h linux-3.0.9/include/linux/reboot.h
34984
34985 extern void machine_shutdown(void);
34986 struct pt_regs;
34987 -@@ -60,9 +60,9 @@ extern void machine_crash_shutdown(struc
34988 +@@ -65,9 +65,9 @@ extern void machine_crash_shutdown(struc
34989 */
34990
34991 extern void kernel_restart_prepare(char *cmd);
34992 @@ -60169,7 +60013,7 @@ diff -urNp linux-3.0.9/include/linux/reboot.h linux-3.0.9/include/linux/reboot.h
34993
34994 extern int C_A_D; /* for sysctl */
34995 void ctrl_alt_del(void);
34996 -@@ -76,7 +76,7 @@ extern int orderly_poweroff(bool force);
34997 +@@ -81,7 +81,7 @@ extern int orderly_poweroff(bool force);
34998 * Emergency restart, callable from an interrupt handler.
34999 */
35000
35001 @@ -60178,9 +60022,9 @@ diff -urNp linux-3.0.9/include/linux/reboot.h linux-3.0.9/include/linux/reboot.h
35002 #include <asm/emergency-restart.h>
35003
35004 #endif
35005 -diff -urNp linux-3.0.9/include/linux/reiserfs_fs.h linux-3.0.9/include/linux/reiserfs_fs.h
35006 ---- linux-3.0.9/include/linux/reiserfs_fs.h 2011-11-11 13:12:24.000000000 -0500
35007 -+++ linux-3.0.9/include/linux/reiserfs_fs.h 2011-11-15 20:03:00.000000000 -0500
35008 +diff -urNp linux-3.1.1/include/linux/reiserfs_fs.h linux-3.1.1/include/linux/reiserfs_fs.h
35009 +--- linux-3.1.1/include/linux/reiserfs_fs.h 2011-11-11 15:19:27.000000000 -0500
35010 ++++ linux-3.1.1/include/linux/reiserfs_fs.h 2011-11-16 18:39:08.000000000 -0500
35011 @@ -1406,7 +1406,7 @@ static inline loff_t max_reiserfs_offset
35012 #define REISERFS_USER_MEM 1 /* reiserfs user memory mode */
35013
35014 @@ -60190,9 +60034,9 @@ diff -urNp linux-3.0.9/include/linux/reiserfs_fs.h linux-3.0.9/include/linux/rei
35015 #define FILESYSTEM_CHANGED_TB(tb) (get_generation((tb)->tb_sb) != (tb)->fs_gen)
35016 #define __fs_changed(gen,s) (gen != get_generation (s))
35017 #define fs_changed(gen,s) \
35018 -diff -urNp linux-3.0.9/include/linux/reiserfs_fs_sb.h linux-3.0.9/include/linux/reiserfs_fs_sb.h
35019 ---- linux-3.0.9/include/linux/reiserfs_fs_sb.h 2011-11-11 13:12:24.000000000 -0500
35020 -+++ linux-3.0.9/include/linux/reiserfs_fs_sb.h 2011-11-15 20:03:00.000000000 -0500
35021 +diff -urNp linux-3.1.1/include/linux/reiserfs_fs_sb.h linux-3.1.1/include/linux/reiserfs_fs_sb.h
35022 +--- linux-3.1.1/include/linux/reiserfs_fs_sb.h 2011-11-11 15:19:27.000000000 -0500
35023 ++++ linux-3.1.1/include/linux/reiserfs_fs_sb.h 2011-11-16 18:39:08.000000000 -0500
35024 @@ -386,7 +386,7 @@ struct reiserfs_sb_info {
35025 /* Comment? -Hans */
35026 wait_queue_head_t s_wait;
35027 @@ -60202,9 +60046,9 @@ diff -urNp linux-3.0.9/include/linux/reiserfs_fs_sb.h linux-3.0.9/include/linux/
35028 // tree gets re-balanced
35029 unsigned long s_properties; /* File system properties. Currently holds
35030 on-disk FS format */
35031 -diff -urNp linux-3.0.9/include/linux/relay.h linux-3.0.9/include/linux/relay.h
35032 ---- linux-3.0.9/include/linux/relay.h 2011-11-11 13:12:24.000000000 -0500
35033 -+++ linux-3.0.9/include/linux/relay.h 2011-11-15 20:03:00.000000000 -0500
35034 +diff -urNp linux-3.1.1/include/linux/relay.h linux-3.1.1/include/linux/relay.h
35035 +--- linux-3.1.1/include/linux/relay.h 2011-11-11 15:19:27.000000000 -0500
35036 ++++ linux-3.1.1/include/linux/relay.h 2011-11-16 18:39:08.000000000 -0500
35037 @@ -159,7 +159,7 @@ struct rchan_callbacks
35038 * The callback should return 0 if successful, negative if not.
35039 */
35040 @@ -60214,9 +60058,9 @@ diff -urNp linux-3.0.9/include/linux/relay.h linux-3.0.9/include/linux/relay.h
35041
35042 /*
35043 * CONFIG_RELAY kernel API, kernel/relay.c
35044 -diff -urNp linux-3.0.9/include/linux/rfkill.h linux-3.0.9/include/linux/rfkill.h
35045 ---- linux-3.0.9/include/linux/rfkill.h 2011-11-11 13:12:24.000000000 -0500
35046 -+++ linux-3.0.9/include/linux/rfkill.h 2011-11-15 20:03:00.000000000 -0500
35047 +diff -urNp linux-3.1.1/include/linux/rfkill.h linux-3.1.1/include/linux/rfkill.h
35048 +--- linux-3.1.1/include/linux/rfkill.h 2011-11-11 15:19:27.000000000 -0500
35049 ++++ linux-3.1.1/include/linux/rfkill.h 2011-11-16 18:39:08.000000000 -0500
35050 @@ -147,6 +147,7 @@ struct rfkill_ops {
35051 void (*query)(struct rfkill *rfkill, void *data);
35052 int (*set_block)(void *data, bool blocked);
35053 @@ -60225,9 +60069,9 @@ diff -urNp linux-3.0.9/include/linux/rfkill.h linux-3.0.9/include/linux/rfkill.h
35054
35055 #if defined(CONFIG_RFKILL) || defined(CONFIG_RFKILL_MODULE)
35056 /**
35057 -diff -urNp linux-3.0.9/include/linux/rmap.h linux-3.0.9/include/linux/rmap.h
35058 ---- linux-3.0.9/include/linux/rmap.h 2011-11-11 13:12:24.000000000 -0500
35059 -+++ linux-3.0.9/include/linux/rmap.h 2011-11-15 20:03:00.000000000 -0500
35060 +diff -urNp linux-3.1.1/include/linux/rmap.h linux-3.1.1/include/linux/rmap.h
35061 +--- linux-3.1.1/include/linux/rmap.h 2011-11-11 15:19:27.000000000 -0500
35062 ++++ linux-3.1.1/include/linux/rmap.h 2011-11-16 18:39:08.000000000 -0500
35063 @@ -119,8 +119,8 @@ static inline void anon_vma_unlock(struc
35064 void anon_vma_init(void); /* create anon_vma_cachep */
35065 int anon_vma_prepare(struct vm_area_struct *);
35066 @@ -60239,9 +60083,9 @@ diff -urNp linux-3.0.9/include/linux/rmap.h linux-3.0.9/include/linux/rmap.h
35067 void __anon_vma_link(struct vm_area_struct *);
35068
35069 static inline void anon_vma_merge(struct vm_area_struct *vma,
35070 -diff -urNp linux-3.0.9/include/linux/sched.h linux-3.0.9/include/linux/sched.h
35071 ---- linux-3.0.9/include/linux/sched.h 2011-11-11 13:12:24.000000000 -0500
35072 -+++ linux-3.0.9/include/linux/sched.h 2011-11-15 20:03:00.000000000 -0500
35073 +diff -urNp linux-3.1.1/include/linux/sched.h linux-3.1.1/include/linux/sched.h
35074 +--- linux-3.1.1/include/linux/sched.h 2011-11-11 15:19:27.000000000 -0500
35075 ++++ linux-3.1.1/include/linux/sched.h 2011-11-16 18:40:31.000000000 -0500
35076 @@ -100,6 +100,7 @@ struct bio_list;
35077 struct fs_struct;
35078 struct perf_event_context;
35079 @@ -60348,7 +60192,7 @@ diff -urNp linux-3.0.9/include/linux/sched.h linux-3.0.9/include/linux/sched.h
35080 #ifdef CONFIG_DEBUG_MUTEXES
35081 /* mutex deadlock detection */
35082 struct mutex_waiter *blocked_on;
35083 -@@ -1538,6 +1564,21 @@ struct task_struct {
35084 +@@ -1537,6 +1563,21 @@ struct task_struct {
35085 unsigned long default_timer_slack_ns;
35086
35087 struct list_head *scm_work_list;
35088 @@ -60370,7 +60214,7 @@ diff -urNp linux-3.0.9/include/linux/sched.h linux-3.0.9/include/linux/sched.h
35089 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
35090 /* Index of current stored address in ret_stack */
35091 int curr_ret_stack;
35092 -@@ -1572,6 +1613,57 @@ struct task_struct {
35093 +@@ -1571,6 +1612,57 @@ struct task_struct {
35094 #endif
35095 };
35096
35097 @@ -60415,7 +60259,7 @@ diff -urNp linux-3.0.9/include/linux/sched.h linux-3.0.9/include/linux/sched.h
35098 +#endif
35099 +
35100 +extern void pax_report_fault(struct pt_regs *regs, void *pc, void *sp);
35101 -+extern void pax_report_insns(void *pc, void *sp);
35102 ++extern void pax_report_insns(struct pt_regs *regs, void *pc, void *sp);
35103 +extern void pax_report_refcount_overflow(struct pt_regs *regs);
35104 +extern NORET_TYPE void pax_report_usercopy(const void *ptr, unsigned long len, bool to, const char *type) ATTRIB_NORET;
35105 +
35106 @@ -60428,15 +60272,7 @@ diff -urNp linux-3.0.9/include/linux/sched.h linux-3.0.9/include/linux/sched.h
35107 /* Future-safe accessor for struct task_struct's cpus_allowed. */
35108 #define tsk_cpus_allowed(tsk) (&(tsk)->cpus_allowed)
35109
35110 -@@ -1768,6 +1860,7 @@ extern void thread_group_times(struct ta
35111 - #define PF_DUMPCORE 0x00000200 /* dumped core */
35112 - #define PF_SIGNALED 0x00000400 /* killed by a signal */
35113 - #define PF_MEMALLOC 0x00000800 /* Allocating memory */
35114 -+#define PF_NPROC_EXCEEDED 0x00001000 /* set_user noticed that RLIMIT_NPROC was exceeded */
35115 - #define PF_USED_MATH 0x00002000 /* if unset the fpu must be initialized before use */
35116 - #define PF_FREEZING 0x00004000 /* freeze in progress. do not account to load */
35117 - #define PF_NOFREEZE 0x00008000 /* this thread should not be frozen */
35118 -@@ -2055,7 +2148,9 @@ void yield(void);
35119 +@@ -2074,7 +2166,9 @@ void yield(void);
35120 extern struct exec_domain default_exec_domain;
35121
35122 union thread_union {
35123 @@ -60446,7 +60282,7 @@ diff -urNp linux-3.0.9/include/linux/sched.h linux-3.0.9/include/linux/sched.h
35124 unsigned long stack[THREAD_SIZE/sizeof(long)];
35125 };
35126
35127 -@@ -2088,6 +2183,7 @@ extern struct pid_namespace init_pid_ns;
35128 +@@ -2107,6 +2201,7 @@ extern struct pid_namespace init_pid_ns;
35129 */
35130
35131 extern struct task_struct *find_task_by_vpid(pid_t nr);
35132 @@ -60454,7 +60290,7 @@ diff -urNp linux-3.0.9/include/linux/sched.h linux-3.0.9/include/linux/sched.h
35133 extern struct task_struct *find_task_by_pid_ns(pid_t nr,
35134 struct pid_namespace *ns);
35135
35136 -@@ -2224,7 +2320,7 @@ extern void __cleanup_sighand(struct sig
35137 +@@ -2243,7 +2338,7 @@ extern void __cleanup_sighand(struct sig
35138 extern void exit_itimers(struct signal_struct *);
35139 extern void flush_itimer_signals(void);
35140
35141 @@ -60463,7 +60299,7 @@ diff -urNp linux-3.0.9/include/linux/sched.h linux-3.0.9/include/linux/sched.h
35142
35143 extern void daemonize(const char *, ...);
35144 extern int allow_signal(int);
35145 -@@ -2392,13 +2488,17 @@ static inline unsigned long *end_of_stac
35146 +@@ -2408,13 +2503,17 @@ static inline unsigned long *end_of_stac
35147
35148 #endif
35149
35150 @@ -60483,9 +60319,9 @@ diff -urNp linux-3.0.9/include/linux/sched.h linux-3.0.9/include/linux/sched.h
35151 extern void thread_info_cache_init(void);
35152
35153 #ifdef CONFIG_DEBUG_STACK_USAGE
35154 -diff -urNp linux-3.0.9/include/linux/screen_info.h linux-3.0.9/include/linux/screen_info.h
35155 ---- linux-3.0.9/include/linux/screen_info.h 2011-11-11 13:12:24.000000000 -0500
35156 -+++ linux-3.0.9/include/linux/screen_info.h 2011-11-15 20:03:00.000000000 -0500
35157 +diff -urNp linux-3.1.1/include/linux/screen_info.h linux-3.1.1/include/linux/screen_info.h
35158 +--- linux-3.1.1/include/linux/screen_info.h 2011-11-11 15:19:27.000000000 -0500
35159 ++++ linux-3.1.1/include/linux/screen_info.h 2011-11-16 18:39:08.000000000 -0500
35160 @@ -43,7 +43,8 @@ struct screen_info {
35161 __u16 pages; /* 0x32 */
35162 __u16 vesa_attributes; /* 0x34 */
35163 @@ -60496,9 +60332,9 @@ diff -urNp linux-3.0.9/include/linux/screen_info.h linux-3.0.9/include/linux/scr
35164 } __attribute__((packed));
35165
35166 #define VIDEO_TYPE_MDA 0x10 /* Monochrome Text Display */
35167 -diff -urNp linux-3.0.9/include/linux/security.h linux-3.0.9/include/linux/security.h
35168 ---- linux-3.0.9/include/linux/security.h 2011-11-11 13:12:24.000000000 -0500
35169 -+++ linux-3.0.9/include/linux/security.h 2011-11-15 20:03:00.000000000 -0500
35170 +diff -urNp linux-3.1.1/include/linux/security.h linux-3.1.1/include/linux/security.h
35171 +--- linux-3.1.1/include/linux/security.h 2011-11-11 15:19:27.000000000 -0500
35172 ++++ linux-3.1.1/include/linux/security.h 2011-11-16 18:40:31.000000000 -0500
35173 @@ -36,6 +36,7 @@
35174 #include <linux/key.h>
35175 #include <linux/xfrm.h>
35176 @@ -60507,10 +60343,10 @@ diff -urNp linux-3.0.9/include/linux/security.h linux-3.0.9/include/linux/securi
35177 #include <net/flow.h>
35178
35179 /* Maximum number of letters for an LSM name string */
35180 -diff -urNp linux-3.0.9/include/linux/seq_file.h linux-3.0.9/include/linux/seq_file.h
35181 ---- linux-3.0.9/include/linux/seq_file.h 2011-11-11 13:12:24.000000000 -0500
35182 -+++ linux-3.0.9/include/linux/seq_file.h 2011-11-15 20:03:00.000000000 -0500
35183 -@@ -32,6 +32,7 @@ struct seq_operations {
35184 +diff -urNp linux-3.1.1/include/linux/seq_file.h linux-3.1.1/include/linux/seq_file.h
35185 +--- linux-3.1.1/include/linux/seq_file.h 2011-11-11 15:19:27.000000000 -0500
35186 ++++ linux-3.1.1/include/linux/seq_file.h 2011-11-16 18:39:08.000000000 -0500
35187 +@@ -33,6 +33,7 @@ struct seq_operations {
35188 void * (*next) (struct seq_file *m, void *v, loff_t *pos);
35189 int (*show) (struct seq_file *m, void *v);
35190 };
35191 @@ -60518,25 +60354,13 @@ diff -urNp linux-3.0.9/include/linux/seq_file.h linux-3.0.9/include/linux/seq_fi
35192
35193 #define SEQ_SKIP 1
35194
35195 -diff -urNp linux-3.0.9/include/linux/shmem_fs.h linux-3.0.9/include/linux/shmem_fs.h
35196 ---- linux-3.0.9/include/linux/shmem_fs.h 2011-11-11 13:12:24.000000000 -0500
35197 -+++ linux-3.0.9/include/linux/shmem_fs.h 2011-11-15 20:03:00.000000000 -0500
35198 -@@ -10,7 +10,7 @@
35199 -
35200 - #define SHMEM_NR_DIRECT 16
35201 +diff -urNp linux-3.1.1/include/linux/shm.h linux-3.1.1/include/linux/shm.h
35202 +--- linux-3.1.1/include/linux/shm.h 2011-11-11 15:19:27.000000000 -0500
35203 ++++ linux-3.1.1/include/linux/shm.h 2011-11-16 18:59:58.000000000 -0500
35204 +@@ -98,6 +98,10 @@ struct shmid_kernel /* private to the ke
35205
35206 --#define SHMEM_SYMLINK_INLINE_LEN (SHMEM_NR_DIRECT * sizeof(swp_entry_t))
35207 -+#define SHMEM_SYMLINK_INLINE_LEN 64
35208 -
35209 - struct shmem_inode_info {
35210 - spinlock_t lock;
35211 -diff -urNp linux-3.0.9/include/linux/shm.h linux-3.0.9/include/linux/shm.h
35212 ---- linux-3.0.9/include/linux/shm.h 2011-11-11 13:12:24.000000000 -0500
35213 -+++ linux-3.0.9/include/linux/shm.h 2011-11-15 20:03:00.000000000 -0500
35214 -@@ -95,6 +95,10 @@ struct shmid_kernel /* private to the ke
35215 - pid_t shm_cprid;
35216 - pid_t shm_lprid;
35217 - struct user_struct *mlock_user;
35218 + /* The task created the shm object. NULL if the task is dead. */
35219 + struct task_struct *shm_creator;
35220 +#ifdef CONFIG_GRKERNSEC
35221 + time_t shm_createtime;
35222 + pid_t shm_lapid;
35223 @@ -60544,10 +60368,10 @@ diff -urNp linux-3.0.9/include/linux/shm.h linux-3.0.9/include/linux/shm.h
35224 };
35225
35226 /* shm_mode upper byte flags */
35227 -diff -urNp linux-3.0.9/include/linux/skbuff.h linux-3.0.9/include/linux/skbuff.h
35228 ---- linux-3.0.9/include/linux/skbuff.h 2011-11-11 13:12:24.000000000 -0500
35229 -+++ linux-3.0.9/include/linux/skbuff.h 2011-11-15 20:03:00.000000000 -0500
35230 -@@ -592,7 +592,7 @@ static inline struct skb_shared_hwtstamp
35231 +diff -urNp linux-3.1.1/include/linux/skbuff.h linux-3.1.1/include/linux/skbuff.h
35232 +--- linux-3.1.1/include/linux/skbuff.h 2011-11-11 15:19:27.000000000 -0500
35233 ++++ linux-3.1.1/include/linux/skbuff.h 2011-11-16 18:39:08.000000000 -0500
35234 +@@ -610,7 +610,7 @@ static inline struct skb_shared_hwtstamp
35235 */
35236 static inline int skb_queue_empty(const struct sk_buff_head *list)
35237 {
35238 @@ -60556,7 +60380,7 @@ diff -urNp linux-3.0.9/include/linux/skbuff.h linux-3.0.9/include/linux/skbuff.h
35239 }
35240
35241 /**
35242 -@@ -605,7 +605,7 @@ static inline int skb_queue_empty(const
35243 +@@ -623,7 +623,7 @@ static inline int skb_queue_empty(const
35244 static inline bool skb_queue_is_last(const struct sk_buff_head *list,
35245 const struct sk_buff *skb)
35246 {
35247 @@ -60565,7 +60389,7 @@ diff -urNp linux-3.0.9/include/linux/skbuff.h linux-3.0.9/include/linux/skbuff.h
35248 }
35249
35250 /**
35251 -@@ -618,7 +618,7 @@ static inline bool skb_queue_is_last(con
35252 +@@ -636,7 +636,7 @@ static inline bool skb_queue_is_last(con
35253 static inline bool skb_queue_is_first(const struct sk_buff_head *list,
35254 const struct sk_buff *skb)
35255 {
35256 @@ -60574,7 +60398,7 @@ diff -urNp linux-3.0.9/include/linux/skbuff.h linux-3.0.9/include/linux/skbuff.h
35257 }
35258
35259 /**
35260 -@@ -1440,7 +1440,7 @@ static inline int pskb_network_may_pull(
35261 +@@ -1458,7 +1458,7 @@ static inline int pskb_network_may_pull(
35262 * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
35263 */
35264 #ifndef NET_SKB_PAD
35265 @@ -60583,10 +60407,10 @@ diff -urNp linux-3.0.9/include/linux/skbuff.h linux-3.0.9/include/linux/skbuff.h
35266 #endif
35267
35268 extern int ___pskb_trim(struct sk_buff *skb, unsigned int len);
35269 -diff -urNp linux-3.0.9/include/linux/slab_def.h linux-3.0.9/include/linux/slab_def.h
35270 ---- linux-3.0.9/include/linux/slab_def.h 2011-11-11 13:12:24.000000000 -0500
35271 -+++ linux-3.0.9/include/linux/slab_def.h 2011-11-15 20:03:00.000000000 -0500
35272 -@@ -96,10 +96,10 @@ struct kmem_cache {
35273 +diff -urNp linux-3.1.1/include/linux/slab_def.h linux-3.1.1/include/linux/slab_def.h
35274 +--- linux-3.1.1/include/linux/slab_def.h 2011-11-11 15:19:27.000000000 -0500
35275 ++++ linux-3.1.1/include/linux/slab_def.h 2011-11-16 18:39:08.000000000 -0500
35276 +@@ -68,10 +68,10 @@ struct kmem_cache {
35277 unsigned long node_allocs;
35278 unsigned long node_frees;
35279 unsigned long node_overflow;
35280 @@ -60601,9 +60425,9 @@ diff -urNp linux-3.0.9/include/linux/slab_def.h linux-3.0.9/include/linux/slab_d
35281
35282 /*
35283 * If debugging is enabled, then the allocator can add additional
35284 -diff -urNp linux-3.0.9/include/linux/slab.h linux-3.0.9/include/linux/slab.h
35285 ---- linux-3.0.9/include/linux/slab.h 2011-11-11 13:12:24.000000000 -0500
35286 -+++ linux-3.0.9/include/linux/slab.h 2011-11-15 20:03:00.000000000 -0500
35287 +diff -urNp linux-3.1.1/include/linux/slab.h linux-3.1.1/include/linux/slab.h
35288 +--- linux-3.1.1/include/linux/slab.h 2011-11-11 15:19:27.000000000 -0500
35289 ++++ linux-3.1.1/include/linux/slab.h 2011-11-16 18:39:08.000000000 -0500
35290 @@ -11,12 +11,20 @@
35291
35292 #include <linux/gfp.h>
35293 @@ -60642,7 +60466,7 @@ diff -urNp linux-3.0.9/include/linux/slab.h linux-3.0.9/include/linux/slab.h
35294
35295 /*
35296 * struct kmem_cache related prototypes
35297 -@@ -141,6 +152,7 @@ void * __must_check krealloc(const void
35298 +@@ -161,6 +172,7 @@ void * __must_check krealloc(const void
35299 void kfree(const void *);
35300 void kzfree(const void *);
35301 size_t ksize(const void *);
35302 @@ -60650,7 +60474,7 @@ diff -urNp linux-3.0.9/include/linux/slab.h linux-3.0.9/include/linux/slab.h
35303
35304 /*
35305 * Allocator specific definitions. These are mainly used to establish optimized
35306 -@@ -333,4 +345,59 @@ static inline void *kzalloc_node(size_t
35307 +@@ -353,4 +365,59 @@ static inline void *kzalloc_node(size_t
35308
35309 void __init kmem_cache_init_late(void);
35310
35311 @@ -60710,10 +60534,10 @@ diff -urNp linux-3.0.9/include/linux/slab.h linux-3.0.9/include/linux/slab.h
35312 +})
35313 +
35314 #endif /* _LINUX_SLAB_H */
35315 -diff -urNp linux-3.0.9/include/linux/slub_def.h linux-3.0.9/include/linux/slub_def.h
35316 ---- linux-3.0.9/include/linux/slub_def.h 2011-11-11 13:12:24.000000000 -0500
35317 -+++ linux-3.0.9/include/linux/slub_def.h 2011-11-15 20:03:00.000000000 -0500
35318 -@@ -82,7 +82,7 @@ struct kmem_cache {
35319 +diff -urNp linux-3.1.1/include/linux/slub_def.h linux-3.1.1/include/linux/slub_def.h
35320 +--- linux-3.1.1/include/linux/slub_def.h 2011-11-11 15:19:27.000000000 -0500
35321 ++++ linux-3.1.1/include/linux/slub_def.h 2011-11-16 18:39:08.000000000 -0500
35322 +@@ -85,7 +85,7 @@ struct kmem_cache {
35323 struct kmem_cache_order_objects max;
35324 struct kmem_cache_order_objects min;
35325 gfp_t allocflags; /* gfp flags to use on each alloc */
35326 @@ -60722,7 +60546,7 @@ diff -urNp linux-3.0.9/include/linux/slub_def.h linux-3.0.9/include/linux/slub_d
35327 void (*ctor)(void *);
35328 int inuse; /* Offset to metadata */
35329 int align; /* Alignment */
35330 -@@ -218,7 +218,7 @@ static __always_inline struct kmem_cache
35331 +@@ -211,7 +211,7 @@ static __always_inline struct kmem_cache
35332 }
35333
35334 void *kmem_cache_alloc(struct kmem_cache *, gfp_t);
35335 @@ -60731,11 +60555,11 @@ diff -urNp linux-3.0.9/include/linux/slub_def.h linux-3.0.9/include/linux/slub_d
35336
35337 static __always_inline void *
35338 kmalloc_order(size_t size, gfp_t flags, unsigned int order)
35339 -diff -urNp linux-3.0.9/include/linux/sonet.h linux-3.0.9/include/linux/sonet.h
35340 ---- linux-3.0.9/include/linux/sonet.h 2011-11-11 13:12:24.000000000 -0500
35341 -+++ linux-3.0.9/include/linux/sonet.h 2011-11-15 20:03:00.000000000 -0500
35342 +diff -urNp linux-3.1.1/include/linux/sonet.h linux-3.1.1/include/linux/sonet.h
35343 +--- linux-3.1.1/include/linux/sonet.h 2011-11-11 15:19:27.000000000 -0500
35344 ++++ linux-3.1.1/include/linux/sonet.h 2011-11-16 18:39:08.000000000 -0500
35345 @@ -61,7 +61,7 @@ struct sonet_stats {
35346 - #include <asm/atomic.h>
35347 + #include <linux/atomic.h>
35348
35349 struct k_sonet_stats {
35350 -#define __HANDLE_ITEM(i) atomic_t i
35351 @@ -60743,9 +60567,9 @@ diff -urNp linux-3.0.9/include/linux/sonet.h linux-3.0.9/include/linux/sonet.h
35352 __SONET_ITEMS
35353 #undef __HANDLE_ITEM
35354 };
35355 -diff -urNp linux-3.0.9/include/linux/sunrpc/clnt.h linux-3.0.9/include/linux/sunrpc/clnt.h
35356 ---- linux-3.0.9/include/linux/sunrpc/clnt.h 2011-11-11 13:12:24.000000000 -0500
35357 -+++ linux-3.0.9/include/linux/sunrpc/clnt.h 2011-11-15 20:03:00.000000000 -0500
35358 +diff -urNp linux-3.1.1/include/linux/sunrpc/clnt.h linux-3.1.1/include/linux/sunrpc/clnt.h
35359 +--- linux-3.1.1/include/linux/sunrpc/clnt.h 2011-11-11 15:19:27.000000000 -0500
35360 ++++ linux-3.1.1/include/linux/sunrpc/clnt.h 2011-11-16 18:39:08.000000000 -0500
35361 @@ -169,9 +169,9 @@ static inline unsigned short rpc_get_por
35362 {
35363 switch (sap->sa_family) {
35364 @@ -60776,9 +60600,20 @@ diff -urNp linux-3.0.9/include/linux/sunrpc/clnt.h linux-3.0.9/include/linux/sun
35365 }
35366
35367 #endif /* __KERNEL__ */
35368 -diff -urNp linux-3.0.9/include/linux/sunrpc/svc_rdma.h linux-3.0.9/include/linux/sunrpc/svc_rdma.h
35369 ---- linux-3.0.9/include/linux/sunrpc/svc_rdma.h 2011-11-11 13:12:24.000000000 -0500
35370 -+++ linux-3.0.9/include/linux/sunrpc/svc_rdma.h 2011-11-15 20:03:00.000000000 -0500
35371 +diff -urNp linux-3.1.1/include/linux/sunrpc/sched.h linux-3.1.1/include/linux/sunrpc/sched.h
35372 +--- linux-3.1.1/include/linux/sunrpc/sched.h 2011-11-11 15:19:27.000000000 -0500
35373 ++++ linux-3.1.1/include/linux/sunrpc/sched.h 2011-11-16 18:39:08.000000000 -0500
35374 +@@ -105,6 +105,7 @@ struct rpc_call_ops {
35375 + void (*rpc_call_done)(struct rpc_task *, void *);
35376 + void (*rpc_release)(void *);
35377 + };
35378 ++typedef struct rpc_call_ops __no_const rpc_call_ops_no_const;
35379 +
35380 + struct rpc_task_setup {
35381 + struct rpc_task *task;
35382 +diff -urNp linux-3.1.1/include/linux/sunrpc/svc_rdma.h linux-3.1.1/include/linux/sunrpc/svc_rdma.h
35383 +--- linux-3.1.1/include/linux/sunrpc/svc_rdma.h 2011-11-11 15:19:27.000000000 -0500
35384 ++++ linux-3.1.1/include/linux/sunrpc/svc_rdma.h 2011-11-16 18:39:08.000000000 -0500
35385 @@ -53,15 +53,15 @@ extern unsigned int svcrdma_ord;
35386 extern unsigned int svcrdma_max_requests;
35387 extern unsigned int svcrdma_max_req_size;
35388 @@ -60804,9 +60639,9 @@ diff -urNp linux-3.0.9/include/linux/sunrpc/svc_rdma.h linux-3.0.9/include/linux
35389
35390 #define RPCRDMA_VERSION 1
35391
35392 -diff -urNp linux-3.0.9/include/linux/sysctl.h linux-3.0.9/include/linux/sysctl.h
35393 ---- linux-3.0.9/include/linux/sysctl.h 2011-11-11 13:12:24.000000000 -0500
35394 -+++ linux-3.0.9/include/linux/sysctl.h 2011-11-15 20:03:00.000000000 -0500
35395 +diff -urNp linux-3.1.1/include/linux/sysctl.h linux-3.1.1/include/linux/sysctl.h
35396 +--- linux-3.1.1/include/linux/sysctl.h 2011-11-11 15:19:27.000000000 -0500
35397 ++++ linux-3.1.1/include/linux/sysctl.h 2011-11-16 18:40:31.000000000 -0500
35398 @@ -155,7 +155,11 @@ enum
35399 KERN_PANIC_ON_NMI=76, /* int: whether we will panic on an unrecovered */
35400 };
35401 @@ -60829,9 +60664,9 @@ diff -urNp linux-3.0.9/include/linux/sysctl.h linux-3.0.9/include/linux/sysctl.h
35402 extern int proc_dointvec(struct ctl_table *, int,
35403 void __user *, size_t *, loff_t *);
35404 extern int proc_dointvec_minmax(struct ctl_table *, int,
35405 -diff -urNp linux-3.0.9/include/linux/tty_ldisc.h linux-3.0.9/include/linux/tty_ldisc.h
35406 ---- linux-3.0.9/include/linux/tty_ldisc.h 2011-11-11 13:12:24.000000000 -0500
35407 -+++ linux-3.0.9/include/linux/tty_ldisc.h 2011-11-15 20:03:00.000000000 -0500
35408 +diff -urNp linux-3.1.1/include/linux/tty_ldisc.h linux-3.1.1/include/linux/tty_ldisc.h
35409 +--- linux-3.1.1/include/linux/tty_ldisc.h 2011-11-11 15:19:27.000000000 -0500
35410 ++++ linux-3.1.1/include/linux/tty_ldisc.h 2011-11-16 18:39:08.000000000 -0500
35411 @@ -148,7 +148,7 @@ struct tty_ldisc_ops {
35412
35413 struct module *owner;
35414 @@ -60841,9 +60676,9 @@ diff -urNp linux-3.0.9/include/linux/tty_ldisc.h linux-3.0.9/include/linux/tty_l
35415 };
35416
35417 struct tty_ldisc {
35418 -diff -urNp linux-3.0.9/include/linux/types.h linux-3.0.9/include/linux/types.h
35419 ---- linux-3.0.9/include/linux/types.h 2011-11-11 13:12:24.000000000 -0500
35420 -+++ linux-3.0.9/include/linux/types.h 2011-11-15 20:03:00.000000000 -0500
35421 +diff -urNp linux-3.1.1/include/linux/types.h linux-3.1.1/include/linux/types.h
35422 +--- linux-3.1.1/include/linux/types.h 2011-11-11 15:19:27.000000000 -0500
35423 ++++ linux-3.1.1/include/linux/types.h 2011-11-16 18:39:08.000000000 -0500
35424 @@ -213,10 +213,26 @@ typedef struct {
35425 int counter;
35426 } atomic_t;
35427 @@ -60871,9 +60706,9 @@ diff -urNp linux-3.0.9/include/linux/types.h linux-3.0.9/include/linux/types.h
35428 #endif
35429
35430 struct list_head {
35431 -diff -urNp linux-3.0.9/include/linux/uaccess.h linux-3.0.9/include/linux/uaccess.h
35432 ---- linux-3.0.9/include/linux/uaccess.h 2011-11-11 13:12:24.000000000 -0500
35433 -+++ linux-3.0.9/include/linux/uaccess.h 2011-11-15 20:03:00.000000000 -0500
35434 +diff -urNp linux-3.1.1/include/linux/uaccess.h linux-3.1.1/include/linux/uaccess.h
35435 +--- linux-3.1.1/include/linux/uaccess.h 2011-11-11 15:19:27.000000000 -0500
35436 ++++ linux-3.1.1/include/linux/uaccess.h 2011-11-16 18:39:08.000000000 -0500
35437 @@ -76,11 +76,11 @@ static inline unsigned long __copy_from_
35438 long ret; \
35439 mm_segment_t old_fs = get_fs(); \
35440 @@ -60889,9 +60724,9 @@ diff -urNp linux-3.0.9/include/linux/uaccess.h linux-3.0.9/include/linux/uaccess
35441 ret; \
35442 })
35443
35444 -diff -urNp linux-3.0.9/include/linux/unaligned/access_ok.h linux-3.0.9/include/linux/unaligned/access_ok.h
35445 ---- linux-3.0.9/include/linux/unaligned/access_ok.h 2011-11-11 13:12:24.000000000 -0500
35446 -+++ linux-3.0.9/include/linux/unaligned/access_ok.h 2011-11-15 20:03:00.000000000 -0500
35447 +diff -urNp linux-3.1.1/include/linux/unaligned/access_ok.h linux-3.1.1/include/linux/unaligned/access_ok.h
35448 +--- linux-3.1.1/include/linux/unaligned/access_ok.h 2011-11-11 15:19:27.000000000 -0500
35449 ++++ linux-3.1.1/include/linux/unaligned/access_ok.h 2011-11-16 18:39:08.000000000 -0500
35450 @@ -6,32 +6,32 @@
35451
35452 static inline u16 get_unaligned_le16(const void *p)
35453 @@ -60931,10 +60766,10 @@ diff -urNp linux-3.0.9/include/linux/unaligned/access_ok.h linux-3.0.9/include/l
35454 }
35455
35456 static inline void put_unaligned_le16(u16 val, void *p)
35457 -diff -urNp linux-3.0.9/include/linux/vermagic.h linux-3.0.9/include/linux/vermagic.h
35458 ---- linux-3.0.9/include/linux/vermagic.h 2011-11-11 13:12:24.000000000 -0500
35459 -+++ linux-3.0.9/include/linux/vermagic.h 2011-11-15 20:03:00.000000000 -0500
35460 -@@ -26,9 +26,28 @@
35461 +diff -urNp linux-3.1.1/include/linux/vermagic.h linux-3.1.1/include/linux/vermagic.h
35462 +--- linux-3.1.1/include/linux/vermagic.h 2011-11-11 15:19:27.000000000 -0500
35463 ++++ linux-3.1.1/include/linux/vermagic.h 2011-11-16 18:54:54.000000000 -0500
35464 +@@ -26,9 +26,35 @@
35465 #define MODULE_ARCH_VERMAGIC ""
35466 #endif
35467
35468 @@ -60950,6 +60785,12 @@ diff -urNp linux-3.0.9/include/linux/vermagic.h linux-3.0.9/include/linux/vermag
35469 +#define MODULE_CONSTIFY_PLUGIN ""
35470 +#endif
35471 +
35472 ++#ifdef STACKLEAK_PLUGIN
35473 ++#define MODULE_STACKLEAK_PLUGIN "STACKLEAK_PLUGIN "
35474 ++#else
35475 ++#define MODULE_STACKLEAK_PLUGIN ""
35476 ++#endif
35477 ++
35478 +#ifdef CONFIG_GRKERNSEC
35479 +#define MODULE_GRSEC "GRSEC "
35480 +#else
35481 @@ -60962,18 +60803,19 @@ diff -urNp linux-3.0.9/include/linux/vermagic.h linux-3.0.9/include/linux/vermag
35482 MODULE_VERMAGIC_MODULE_UNLOAD MODULE_VERMAGIC_MODVERSIONS \
35483 - MODULE_ARCH_VERMAGIC
35484 + MODULE_ARCH_VERMAGIC \
35485 -+ MODULE_PAX_REFCOUNT MODULE_CONSTIFY_PLUGIN MODULE_GRSEC
35486 ++ MODULE_PAX_REFCOUNT MODULE_CONSTIFY_PLUGIN MODULE_STACKLEAK_PLUGIN \
35487 ++ MODULE_GRSEC
35488
35489 -diff -urNp linux-3.0.9/include/linux/vmalloc.h linux-3.0.9/include/linux/vmalloc.h
35490 ---- linux-3.0.9/include/linux/vmalloc.h 2011-11-11 13:12:24.000000000 -0500
35491 -+++ linux-3.0.9/include/linux/vmalloc.h 2011-11-15 20:03:00.000000000 -0500
35492 +diff -urNp linux-3.1.1/include/linux/vmalloc.h linux-3.1.1/include/linux/vmalloc.h
35493 +--- linux-3.1.1/include/linux/vmalloc.h 2011-11-11 15:19:27.000000000 -0500
35494 ++++ linux-3.1.1/include/linux/vmalloc.h 2011-11-16 18:39:08.000000000 -0500
35495 @@ -14,6 +14,11 @@ struct vm_area_struct; /* vma defining
35496 #define VM_USERMAP 0x00000008 /* suitable for remap_vmalloc_range */
35497 #define VM_VPAGES 0x00000010 /* buffer for pages was vmalloc'ed */
35498 #define VM_UNLIST 0x00000020 /* vm_struct is not listed in vmlist */
35499 +
35500 +#if defined(CONFIG_MODULES) && defined(CONFIG_X86) && defined(CONFIG_PAX_KERNEXEC)
35501 -+#define VM_KERNEXEC 0x00000040 /* allocate from executable kernel memory range */
35502 ++#define VM_KERNEXEC 0x00000040 /* allocate from executable kernel memory range */
35503 +#endif
35504 +
35505 /* bits [20..32] reserved for arch specific ioremap internals */
35506 @@ -61083,9 +60925,9 @@ diff -urNp linux-3.0.9/include/linux/vmalloc.h linux-3.0.9/include/linux/vmalloc
35507 +})
35508 +
35509 #endif /* _LINUX_VMALLOC_H */
35510 -diff -urNp linux-3.0.9/include/linux/vmstat.h linux-3.0.9/include/linux/vmstat.h
35511 ---- linux-3.0.9/include/linux/vmstat.h 2011-11-11 13:12:24.000000000 -0500
35512 -+++ linux-3.0.9/include/linux/vmstat.h 2011-11-15 20:03:00.000000000 -0500
35513 +diff -urNp linux-3.1.1/include/linux/vmstat.h linux-3.1.1/include/linux/vmstat.h
35514 +--- linux-3.1.1/include/linux/vmstat.h 2011-11-11 15:19:27.000000000 -0500
35515 ++++ linux-3.1.1/include/linux/vmstat.h 2011-11-16 18:39:08.000000000 -0500
35516 @@ -87,18 +87,18 @@ static inline void vm_events_fold_cpu(in
35517 /*
35518 * Zone based page accounting with per cpu differentials.
35519 @@ -61149,9 +60991,9 @@ diff -urNp linux-3.0.9/include/linux/vmstat.h linux-3.0.9/include/linux/vmstat.h
35520 }
35521
35522 static inline void __dec_zone_page_state(struct page *page,
35523 -diff -urNp linux-3.0.9/include/media/saa7146_vv.h linux-3.0.9/include/media/saa7146_vv.h
35524 ---- linux-3.0.9/include/media/saa7146_vv.h 2011-11-11 13:12:24.000000000 -0500
35525 -+++ linux-3.0.9/include/media/saa7146_vv.h 2011-11-15 20:03:00.000000000 -0500
35526 +diff -urNp linux-3.1.1/include/media/saa7146_vv.h linux-3.1.1/include/media/saa7146_vv.h
35527 +--- linux-3.1.1/include/media/saa7146_vv.h 2011-11-11 15:19:27.000000000 -0500
35528 ++++ linux-3.1.1/include/media/saa7146_vv.h 2011-11-16 18:39:08.000000000 -0500
35529 @@ -163,7 +163,7 @@ struct saa7146_ext_vv
35530 int (*std_callback)(struct saa7146_dev*, struct saa7146_standard *);
35531
35532 @@ -61161,9 +61003,9 @@ diff -urNp linux-3.0.9/include/media/saa7146_vv.h linux-3.0.9/include/media/saa7
35533 /* pointer to the saa7146 core ops */
35534 const struct v4l2_ioctl_ops *core_ops;
35535
35536 -diff -urNp linux-3.0.9/include/media/v4l2-dev.h linux-3.0.9/include/media/v4l2-dev.h
35537 ---- linux-3.0.9/include/media/v4l2-dev.h 2011-11-11 13:12:24.000000000 -0500
35538 -+++ linux-3.0.9/include/media/v4l2-dev.h 2011-11-15 20:03:00.000000000 -0500
35539 +diff -urNp linux-3.1.1/include/media/v4l2-dev.h linux-3.1.1/include/media/v4l2-dev.h
35540 +--- linux-3.1.1/include/media/v4l2-dev.h 2011-11-11 15:19:27.000000000 -0500
35541 ++++ linux-3.1.1/include/media/v4l2-dev.h 2011-11-16 18:39:08.000000000 -0500
35542 @@ -56,7 +56,7 @@ int v4l2_prio_check(struct v4l2_prio_sta
35543
35544
35545 @@ -61181,9 +61023,9 @@ diff -urNp linux-3.0.9/include/media/v4l2-dev.h linux-3.0.9/include/media/v4l2-d
35546
35547 /*
35548 * Newer version of video_device, handled by videodev2.c
35549 -diff -urNp linux-3.0.9/include/media/v4l2-ioctl.h linux-3.0.9/include/media/v4l2-ioctl.h
35550 ---- linux-3.0.9/include/media/v4l2-ioctl.h 2011-11-11 13:12:24.000000000 -0500
35551 -+++ linux-3.0.9/include/media/v4l2-ioctl.h 2011-11-15 20:03:00.000000000 -0500
35552 +diff -urNp linux-3.1.1/include/media/v4l2-ioctl.h linux-3.1.1/include/media/v4l2-ioctl.h
35553 +--- linux-3.1.1/include/media/v4l2-ioctl.h 2011-11-11 15:19:27.000000000 -0500
35554 ++++ linux-3.1.1/include/media/v4l2-ioctl.h 2011-11-16 18:40:44.000000000 -0500
35555 @@ -272,6 +272,7 @@ struct v4l2_ioctl_ops {
35556 long (*vidioc_default) (struct file *file, void *fh,
35557 bool valid_prio, int cmd, void *arg);
35558 @@ -61192,9 +61034,21 @@ diff -urNp linux-3.0.9/include/media/v4l2-ioctl.h linux-3.0.9/include/media/v4l2
35559
35560
35561 /* v4l debugging and diagnostics */
35562 -diff -urNp linux-3.0.9/include/net/caif/cfctrl.h linux-3.0.9/include/net/caif/cfctrl.h
35563 ---- linux-3.0.9/include/net/caif/cfctrl.h 2011-11-11 13:12:24.000000000 -0500
35564 -+++ linux-3.0.9/include/net/caif/cfctrl.h 2011-11-15 20:03:00.000000000 -0500
35565 +diff -urNp linux-3.1.1/include/net/caif/caif_hsi.h linux-3.1.1/include/net/caif/caif_hsi.h
35566 +--- linux-3.1.1/include/net/caif/caif_hsi.h 2011-11-11 15:19:27.000000000 -0500
35567 ++++ linux-3.1.1/include/net/caif/caif_hsi.h 2011-11-16 18:39:08.000000000 -0500
35568 +@@ -94,7 +94,7 @@ struct cfhsi_drv {
35569 + void (*rx_done_cb) (struct cfhsi_drv *drv);
35570 + void (*wake_up_cb) (struct cfhsi_drv *drv);
35571 + void (*wake_down_cb) (struct cfhsi_drv *drv);
35572 +-};
35573 ++} __no_const;
35574 +
35575 + /* Structure implemented by HSI device. */
35576 + struct cfhsi_dev {
35577 +diff -urNp linux-3.1.1/include/net/caif/cfctrl.h linux-3.1.1/include/net/caif/cfctrl.h
35578 +--- linux-3.1.1/include/net/caif/cfctrl.h 2011-11-11 15:19:27.000000000 -0500
35579 ++++ linux-3.1.1/include/net/caif/cfctrl.h 2011-11-16 18:39:08.000000000 -0500
35580 @@ -52,7 +52,7 @@ struct cfctrl_rsp {
35581 void (*radioset_rsp)(void);
35582 void (*reject_rsp)(struct cflayer *layer, u8 linkid,
35583 @@ -61215,9 +61069,9 @@ diff -urNp linux-3.0.9/include/net/caif/cfctrl.h linux-3.0.9/include/net/caif/cf
35584 struct list_head list;
35585 /* Protects from simultaneous access to first_req list */
35586 spinlock_t info_list_lock;
35587 -diff -urNp linux-3.0.9/include/net/flow.h linux-3.0.9/include/net/flow.h
35588 ---- linux-3.0.9/include/net/flow.h 2011-11-11 13:12:24.000000000 -0500
35589 -+++ linux-3.0.9/include/net/flow.h 2011-11-15 20:03:00.000000000 -0500
35590 +diff -urNp linux-3.1.1/include/net/flow.h linux-3.1.1/include/net/flow.h
35591 +--- linux-3.1.1/include/net/flow.h 2011-11-11 15:19:27.000000000 -0500
35592 ++++ linux-3.1.1/include/net/flow.h 2011-11-16 18:39:08.000000000 -0500
35593 @@ -207,6 +207,6 @@ extern struct flow_cache_object *flow_ca
35594 u8 dir, flow_resolve_t resolver, void *ctx);
35595
35596 @@ -61226,10 +61080,10 @@ diff -urNp linux-3.0.9/include/net/flow.h linux-3.0.9/include/net/flow.h
35597 +extern atomic_unchecked_t flow_cache_genid;
35598
35599 #endif
35600 -diff -urNp linux-3.0.9/include/net/inetpeer.h linux-3.0.9/include/net/inetpeer.h
35601 ---- linux-3.0.9/include/net/inetpeer.h 2011-11-11 13:12:24.000000000 -0500
35602 -+++ linux-3.0.9/include/net/inetpeer.h 2011-11-15 20:03:00.000000000 -0500
35603 -@@ -43,8 +43,8 @@ struct inet_peer {
35604 +diff -urNp linux-3.1.1/include/net/inetpeer.h linux-3.1.1/include/net/inetpeer.h
35605 +--- linux-3.1.1/include/net/inetpeer.h 2011-11-11 15:19:27.000000000 -0500
35606 ++++ linux-3.1.1/include/net/inetpeer.h 2011-11-16 18:39:08.000000000 -0500
35607 +@@ -47,8 +47,8 @@ struct inet_peer {
35608 */
35609 union {
35610 struct {
35611 @@ -61239,19 +61093,24 @@ diff -urNp linux-3.0.9/include/net/inetpeer.h linux-3.0.9/include/net/inetpeer.h
35612 + atomic_unchecked_t ip_id_count; /* IP ID for the next packet */
35613 __u32 tcp_ts;
35614 __u32 tcp_ts_stamp;
35615 - u32 metrics[RTAX_MAX];
35616 -@@ -108,7 +108,7 @@ static inline __u16 inet_getid(struct in
35617 - {
35618 + };
35619 +@@ -112,11 +112,11 @@ static inline int inet_getid(struct inet
35620 more++;
35621 inet_peer_refcheck(p);
35622 -- return atomic_add_return(more, &p->ip_id_count) - more;
35623 -+ return atomic_add_return_unchecked(more, &p->ip_id_count) - more;
35624 - }
35625 -
35626 - #endif /* _NET_INETPEER_H */
35627 -diff -urNp linux-3.0.9/include/net/ip_fib.h linux-3.0.9/include/net/ip_fib.h
35628 ---- linux-3.0.9/include/net/ip_fib.h 2011-11-11 13:12:24.000000000 -0500
35629 -+++ linux-3.0.9/include/net/ip_fib.h 2011-11-15 20:03:00.000000000 -0500
35630 + do {
35631 +- old = atomic_read(&p->ip_id_count);
35632 ++ old = atomic_read_unchecked(&p->ip_id_count);
35633 + new = old + more;
35634 + if (!new)
35635 + new = 1;
35636 +- } while (atomic_cmpxchg(&p->ip_id_count, old, new) != old);
35637 ++ } while (atomic_cmpxchg_unchecked(&p->ip_id_count, old, new) != old);
35638 + return new;
35639 + }
35640 +
35641 +diff -urNp linux-3.1.1/include/net/ip_fib.h linux-3.1.1/include/net/ip_fib.h
35642 +--- linux-3.1.1/include/net/ip_fib.h 2011-11-11 15:19:27.000000000 -0500
35643 ++++ linux-3.1.1/include/net/ip_fib.h 2011-11-16 18:39:08.000000000 -0500
35644 @@ -146,7 +146,7 @@ extern __be32 fib_info_update_nh_saddr(s
35645
35646 #define FIB_RES_SADDR(net, res) \
35647 @@ -61261,9 +61120,9 @@ diff -urNp linux-3.0.9/include/net/ip_fib.h linux-3.0.9/include/net/ip_fib.h
35648 FIB_RES_NH(res).nh_saddr : \
35649 fib_info_update_nh_saddr((net), &FIB_RES_NH(res)))
35650 #define FIB_RES_GW(res) (FIB_RES_NH(res).nh_gw)
35651 -diff -urNp linux-3.0.9/include/net/ip_vs.h linux-3.0.9/include/net/ip_vs.h
35652 ---- linux-3.0.9/include/net/ip_vs.h 2011-11-11 13:12:24.000000000 -0500
35653 -+++ linux-3.0.9/include/net/ip_vs.h 2011-11-15 20:03:00.000000000 -0500
35654 +diff -urNp linux-3.1.1/include/net/ip_vs.h linux-3.1.1/include/net/ip_vs.h
35655 +--- linux-3.1.1/include/net/ip_vs.h 2011-11-11 15:19:27.000000000 -0500
35656 ++++ linux-3.1.1/include/net/ip_vs.h 2011-11-16 18:39:08.000000000 -0500
35657 @@ -509,7 +509,7 @@ struct ip_vs_conn {
35658 struct ip_vs_conn *control; /* Master control connection */
35659 atomic_t n_control; /* Number of controlled ones */
35660 @@ -61282,9 +61141,9 @@ diff -urNp linux-3.0.9/include/net/ip_vs.h linux-3.0.9/include/net/ip_vs.h
35661 atomic_t weight; /* server weight */
35662
35663 atomic_t refcnt; /* reference counter */
35664 -diff -urNp linux-3.0.9/include/net/irda/ircomm_core.h linux-3.0.9/include/net/irda/ircomm_core.h
35665 ---- linux-3.0.9/include/net/irda/ircomm_core.h 2011-11-11 13:12:24.000000000 -0500
35666 -+++ linux-3.0.9/include/net/irda/ircomm_core.h 2011-11-15 20:03:00.000000000 -0500
35667 +diff -urNp linux-3.1.1/include/net/irda/ircomm_core.h linux-3.1.1/include/net/irda/ircomm_core.h
35668 +--- linux-3.1.1/include/net/irda/ircomm_core.h 2011-11-11 15:19:27.000000000 -0500
35669 ++++ linux-3.1.1/include/net/irda/ircomm_core.h 2011-11-16 18:39:08.000000000 -0500
35670 @@ -51,7 +51,7 @@ typedef struct {
35671 int (*connect_response)(struct ircomm_cb *, struct sk_buff *);
35672 int (*disconnect_request)(struct ircomm_cb *, struct sk_buff *,
35673 @@ -61294,9 +61153,9 @@ diff -urNp linux-3.0.9/include/net/irda/ircomm_core.h linux-3.0.9/include/net/ir
35674
35675 struct ircomm_cb {
35676 irda_queue_t queue;
35677 -diff -urNp linux-3.0.9/include/net/irda/ircomm_tty.h linux-3.0.9/include/net/irda/ircomm_tty.h
35678 ---- linux-3.0.9/include/net/irda/ircomm_tty.h 2011-11-11 13:12:24.000000000 -0500
35679 -+++ linux-3.0.9/include/net/irda/ircomm_tty.h 2011-11-15 20:03:00.000000000 -0500
35680 +diff -urNp linux-3.1.1/include/net/irda/ircomm_tty.h linux-3.1.1/include/net/irda/ircomm_tty.h
35681 +--- linux-3.1.1/include/net/irda/ircomm_tty.h 2011-11-11 15:19:27.000000000 -0500
35682 ++++ linux-3.1.1/include/net/irda/ircomm_tty.h 2011-11-16 18:39:08.000000000 -0500
35683 @@ -35,6 +35,7 @@
35684 #include <linux/termios.h>
35685 #include <linux/timer.h>
35686 @@ -61316,9 +61175,9 @@ diff -urNp linux-3.0.9/include/net/irda/ircomm_tty.h linux-3.0.9/include/net/ird
35687
35688 /* Protect concurent access to :
35689 * o self->open_count
35690 -diff -urNp linux-3.0.9/include/net/iucv/af_iucv.h linux-3.0.9/include/net/iucv/af_iucv.h
35691 ---- linux-3.0.9/include/net/iucv/af_iucv.h 2011-11-11 13:12:24.000000000 -0500
35692 -+++ linux-3.0.9/include/net/iucv/af_iucv.h 2011-11-15 20:03:00.000000000 -0500
35693 +diff -urNp linux-3.1.1/include/net/iucv/af_iucv.h linux-3.1.1/include/net/iucv/af_iucv.h
35694 +--- linux-3.1.1/include/net/iucv/af_iucv.h 2011-11-11 15:19:27.000000000 -0500
35695 ++++ linux-3.1.1/include/net/iucv/af_iucv.h 2011-11-16 18:39:08.000000000 -0500
35696 @@ -87,7 +87,7 @@ struct iucv_sock {
35697 struct iucv_sock_list {
35698 struct hlist_head head;
35699 @@ -61328,9 +61187,9 @@ diff -urNp linux-3.0.9/include/net/iucv/af_iucv.h linux-3.0.9/include/net/iucv/a
35700 };
35701
35702 unsigned int iucv_sock_poll(struct file *file, struct socket *sock,
35703 -diff -urNp linux-3.0.9/include/net/lapb.h linux-3.0.9/include/net/lapb.h
35704 ---- linux-3.0.9/include/net/lapb.h 2011-11-11 13:12:24.000000000 -0500
35705 -+++ linux-3.0.9/include/net/lapb.h 2011-11-15 20:03:00.000000000 -0500
35706 +diff -urNp linux-3.1.1/include/net/lapb.h linux-3.1.1/include/net/lapb.h
35707 +--- linux-3.1.1/include/net/lapb.h 2011-11-11 15:19:27.000000000 -0500
35708 ++++ linux-3.1.1/include/net/lapb.h 2011-11-16 18:39:08.000000000 -0500
35709 @@ -95,7 +95,7 @@ struct lapb_cb {
35710 struct sk_buff_head write_queue;
35711 struct sk_buff_head ack_queue;
35712 @@ -61340,21 +61199,21 @@ diff -urNp linux-3.0.9/include/net/lapb.h linux-3.0.9/include/net/lapb.h
35713
35714 /* FRMR control information */
35715 struct lapb_frame frmr_data;
35716 -diff -urNp linux-3.0.9/include/net/neighbour.h linux-3.0.9/include/net/neighbour.h
35717 ---- linux-3.0.9/include/net/neighbour.h 2011-11-11 13:12:24.000000000 -0500
35718 -+++ linux-3.0.9/include/net/neighbour.h 2011-11-15 20:03:00.000000000 -0500
35719 -@@ -124,7 +124,7 @@ struct neigh_ops {
35720 - int (*connected_output)(struct sk_buff*);
35721 - int (*hh_output)(struct sk_buff*);
35722 - int (*queue_xmit)(struct sk_buff*);
35723 +diff -urNp linux-3.1.1/include/net/neighbour.h linux-3.1.1/include/net/neighbour.h
35724 +--- linux-3.1.1/include/net/neighbour.h 2011-11-11 15:19:27.000000000 -0500
35725 ++++ linux-3.1.1/include/net/neighbour.h 2011-11-16 18:39:08.000000000 -0500
35726 +@@ -122,7 +122,7 @@ struct neigh_ops {
35727 + void (*error_report)(struct neighbour *, struct sk_buff *);
35728 + int (*output)(struct neighbour *, struct sk_buff *);
35729 + int (*connected_output)(struct neighbour *, struct sk_buff *);
35730 -};
35731 +} __do_const;
35732
35733 struct pneigh_entry {
35734 struct pneigh_entry *next;
35735 -diff -urNp linux-3.0.9/include/net/netlink.h linux-3.0.9/include/net/netlink.h
35736 ---- linux-3.0.9/include/net/netlink.h 2011-11-11 13:12:24.000000000 -0500
35737 -+++ linux-3.0.9/include/net/netlink.h 2011-11-15 20:03:00.000000000 -0500
35738 +diff -urNp linux-3.1.1/include/net/netlink.h linux-3.1.1/include/net/netlink.h
35739 +--- linux-3.1.1/include/net/netlink.h 2011-11-11 15:19:27.000000000 -0500
35740 ++++ linux-3.1.1/include/net/netlink.h 2011-11-16 18:39:08.000000000 -0500
35741 @@ -562,7 +562,7 @@ static inline void *nlmsg_get_pos(struct
35742 static inline void nlmsg_trim(struct sk_buff *skb, const void *mark)
35743 {
35744 @@ -61364,9 +61223,9 @@ diff -urNp linux-3.0.9/include/net/netlink.h linux-3.0.9/include/net/netlink.h
35745 }
35746
35747 /**
35748 -diff -urNp linux-3.0.9/include/net/netns/ipv4.h linux-3.0.9/include/net/netns/ipv4.h
35749 ---- linux-3.0.9/include/net/netns/ipv4.h 2011-11-11 13:12:24.000000000 -0500
35750 -+++ linux-3.0.9/include/net/netns/ipv4.h 2011-11-15 20:03:00.000000000 -0500
35751 +diff -urNp linux-3.1.1/include/net/netns/ipv4.h linux-3.1.1/include/net/netns/ipv4.h
35752 +--- linux-3.1.1/include/net/netns/ipv4.h 2011-11-11 15:19:27.000000000 -0500
35753 ++++ linux-3.1.1/include/net/netns/ipv4.h 2011-11-16 18:39:08.000000000 -0500
35754 @@ -56,8 +56,8 @@ struct netns_ipv4 {
35755
35756 unsigned int sysctl_ping_group_range[2];
35757 @@ -61378,10 +61237,10 @@ diff -urNp linux-3.0.9/include/net/netns/ipv4.h linux-3.0.9/include/net/netns/ip
35758
35759 #ifdef CONFIG_IP_MROUTE
35760 #ifndef CONFIG_IP_MROUTE_MULTIPLE_TABLES
35761 -diff -urNp linux-3.0.9/include/net/sctp/sctp.h linux-3.0.9/include/net/sctp/sctp.h
35762 ---- linux-3.0.9/include/net/sctp/sctp.h 2011-11-11 13:12:24.000000000 -0500
35763 -+++ linux-3.0.9/include/net/sctp/sctp.h 2011-11-15 20:03:00.000000000 -0500
35764 -@@ -315,9 +315,9 @@ do { \
35765 +diff -urNp linux-3.1.1/include/net/sctp/sctp.h linux-3.1.1/include/net/sctp/sctp.h
35766 +--- linux-3.1.1/include/net/sctp/sctp.h 2011-11-11 15:19:27.000000000 -0500
35767 ++++ linux-3.1.1/include/net/sctp/sctp.h 2011-11-16 18:39:08.000000000 -0500
35768 +@@ -318,9 +318,9 @@ do { \
35769
35770 #else /* SCTP_DEBUG */
35771
35772 @@ -61394,10 +61253,10 @@ diff -urNp linux-3.0.9/include/net/sctp/sctp.h linux-3.0.9/include/net/sctp/sctp
35773 #define SCTP_ENABLE_DEBUG
35774 #define SCTP_DISABLE_DEBUG
35775 #define SCTP_ASSERT(expr, str, func)
35776 -diff -urNp linux-3.0.9/include/net/sock.h linux-3.0.9/include/net/sock.h
35777 ---- linux-3.0.9/include/net/sock.h 2011-11-11 13:12:24.000000000 -0500
35778 -+++ linux-3.0.9/include/net/sock.h 2011-11-15 20:03:00.000000000 -0500
35779 -@@ -277,7 +277,7 @@ struct sock {
35780 +diff -urNp linux-3.1.1/include/net/sock.h linux-3.1.1/include/net/sock.h
35781 +--- linux-3.1.1/include/net/sock.h 2011-11-11 15:19:27.000000000 -0500
35782 ++++ linux-3.1.1/include/net/sock.h 2011-11-16 18:39:08.000000000 -0500
35783 +@@ -278,7 +278,7 @@ struct sock {
35784 #ifdef CONFIG_RPS
35785 __u32 sk_rxhash;
35786 #endif
35787 @@ -61406,7 +61265,7 @@ diff -urNp linux-3.0.9/include/net/sock.h linux-3.0.9/include/net/sock.h
35788 int sk_rcvbuf;
35789
35790 struct sk_filter __rcu *sk_filter;
35791 -@@ -1390,7 +1390,7 @@ static inline void sk_nocaps_add(struct
35792 +@@ -1391,7 +1391,7 @@ static inline void sk_nocaps_add(struct
35793 }
35794
35795 static inline int skb_do_copy_data_nocache(struct sock *sk, struct sk_buff *skb,
35796 @@ -61415,10 +61274,10 @@ diff -urNp linux-3.0.9/include/net/sock.h linux-3.0.9/include/net/sock.h
35797 int copy, int offset)
35798 {
35799 if (skb->ip_summed == CHECKSUM_NONE) {
35800 -diff -urNp linux-3.0.9/include/net/tcp.h linux-3.0.9/include/net/tcp.h
35801 ---- linux-3.0.9/include/net/tcp.h 2011-11-11 13:12:24.000000000 -0500
35802 -+++ linux-3.0.9/include/net/tcp.h 2011-11-15 20:03:00.000000000 -0500
35803 -@@ -1374,8 +1374,8 @@ enum tcp_seq_states {
35804 +diff -urNp linux-3.1.1/include/net/tcp.h linux-3.1.1/include/net/tcp.h
35805 +--- linux-3.1.1/include/net/tcp.h 2011-11-11 15:19:27.000000000 -0500
35806 ++++ linux-3.1.1/include/net/tcp.h 2011-11-16 18:39:08.000000000 -0500
35807 +@@ -1401,8 +1401,8 @@ enum tcp_seq_states {
35808 struct tcp_seq_afinfo {
35809 char *name;
35810 sa_family_t family;
35811 @@ -61429,9 +61288,9 @@ diff -urNp linux-3.0.9/include/net/tcp.h linux-3.0.9/include/net/tcp.h
35812 };
35813
35814 struct tcp_iter_state {
35815 -diff -urNp linux-3.0.9/include/net/udp.h linux-3.0.9/include/net/udp.h
35816 ---- linux-3.0.9/include/net/udp.h 2011-11-11 13:12:24.000000000 -0500
35817 -+++ linux-3.0.9/include/net/udp.h 2011-11-15 20:03:00.000000000 -0500
35818 +diff -urNp linux-3.1.1/include/net/udp.h linux-3.1.1/include/net/udp.h
35819 +--- linux-3.1.1/include/net/udp.h 2011-11-11 15:19:27.000000000 -0500
35820 ++++ linux-3.1.1/include/net/udp.h 2011-11-16 18:39:08.000000000 -0500
35821 @@ -234,8 +234,8 @@ struct udp_seq_afinfo {
35822 char *name;
35823 sa_family_t family;
35824 @@ -61443,9 +61302,9 @@ diff -urNp linux-3.0.9/include/net/udp.h linux-3.0.9/include/net/udp.h
35825 };
35826
35827 struct udp_iter_state {
35828 -diff -urNp linux-3.0.9/include/net/xfrm.h linux-3.0.9/include/net/xfrm.h
35829 ---- linux-3.0.9/include/net/xfrm.h 2011-11-11 13:12:24.000000000 -0500
35830 -+++ linux-3.0.9/include/net/xfrm.h 2011-11-15 20:03:00.000000000 -0500
35831 +diff -urNp linux-3.1.1/include/net/xfrm.h linux-3.1.1/include/net/xfrm.h
35832 +--- linux-3.1.1/include/net/xfrm.h 2011-11-11 15:19:27.000000000 -0500
35833 ++++ linux-3.1.1/include/net/xfrm.h 2011-11-16 18:39:08.000000000 -0500
35834 @@ -505,7 +505,7 @@ struct xfrm_policy {
35835 struct timer_list timer;
35836
35837 @@ -61455,9 +61314,9 @@ diff -urNp linux-3.0.9/include/net/xfrm.h linux-3.0.9/include/net/xfrm.h
35838 u32 priority;
35839 u32 index;
35840 struct xfrm_mark mark;
35841 -diff -urNp linux-3.0.9/include/rdma/iw_cm.h linux-3.0.9/include/rdma/iw_cm.h
35842 ---- linux-3.0.9/include/rdma/iw_cm.h 2011-11-11 13:12:24.000000000 -0500
35843 -+++ linux-3.0.9/include/rdma/iw_cm.h 2011-11-15 20:03:00.000000000 -0500
35844 +diff -urNp linux-3.1.1/include/rdma/iw_cm.h linux-3.1.1/include/rdma/iw_cm.h
35845 +--- linux-3.1.1/include/rdma/iw_cm.h 2011-11-11 15:19:27.000000000 -0500
35846 ++++ linux-3.1.1/include/rdma/iw_cm.h 2011-11-16 18:39:08.000000000 -0500
35847 @@ -120,7 +120,7 @@ struct iw_cm_verbs {
35848 int backlog);
35849
35850 @@ -61467,10 +61326,10 @@ diff -urNp linux-3.0.9/include/rdma/iw_cm.h linux-3.0.9/include/rdma/iw_cm.h
35851
35852 /**
35853 * iw_create_cm_id - Create an IW CM identifier.
35854 -diff -urNp linux-3.0.9/include/scsi/libfc.h linux-3.0.9/include/scsi/libfc.h
35855 ---- linux-3.0.9/include/scsi/libfc.h 2011-11-11 13:12:24.000000000 -0500
35856 -+++ linux-3.0.9/include/scsi/libfc.h 2011-11-15 20:03:00.000000000 -0500
35857 -@@ -750,6 +750,7 @@ struct libfc_function_template {
35858 +diff -urNp linux-3.1.1/include/scsi/libfc.h linux-3.1.1/include/scsi/libfc.h
35859 +--- linux-3.1.1/include/scsi/libfc.h 2011-11-11 15:19:27.000000000 -0500
35860 ++++ linux-3.1.1/include/scsi/libfc.h 2011-11-16 18:39:08.000000000 -0500
35861 +@@ -758,6 +758,7 @@ struct libfc_function_template {
35862 */
35863 void (*disc_stop_final) (struct fc_lport *);
35864 };
35865 @@ -61478,7 +61337,7 @@ diff -urNp linux-3.0.9/include/scsi/libfc.h linux-3.0.9/include/scsi/libfc.h
35866
35867 /**
35868 * struct fc_disc - Discovery context
35869 -@@ -853,7 +854,7 @@ struct fc_lport {
35870 +@@ -861,7 +862,7 @@ struct fc_lport {
35871 struct fc_vport *vport;
35872
35873 /* Operational Information */
35874 @@ -61487,9 +61346,9 @@ diff -urNp linux-3.0.9/include/scsi/libfc.h linux-3.0.9/include/scsi/libfc.h
35875 u8 link_up;
35876 u8 qfull;
35877 enum fc_lport_state state;
35878 -diff -urNp linux-3.0.9/include/scsi/scsi_device.h linux-3.0.9/include/scsi/scsi_device.h
35879 ---- linux-3.0.9/include/scsi/scsi_device.h 2011-11-11 13:12:24.000000000 -0500
35880 -+++ linux-3.0.9/include/scsi/scsi_device.h 2011-11-15 20:03:00.000000000 -0500
35881 +diff -urNp linux-3.1.1/include/scsi/scsi_device.h linux-3.1.1/include/scsi/scsi_device.h
35882 +--- linux-3.1.1/include/scsi/scsi_device.h 2011-11-11 15:19:27.000000000 -0500
35883 ++++ linux-3.1.1/include/scsi/scsi_device.h 2011-11-16 18:39:08.000000000 -0500
35884 @@ -161,9 +161,9 @@ struct scsi_device {
35885 unsigned int max_device_blocked; /* what device_blocked counts down from */
35886 #define SCSI_DEFAULT_DEVICE_BLOCKED 3
35887 @@ -61503,9 +61362,9 @@ diff -urNp linux-3.0.9/include/scsi/scsi_device.h linux-3.0.9/include/scsi/scsi_
35888
35889 struct device sdev_gendev,
35890 sdev_dev;
35891 -diff -urNp linux-3.0.9/include/scsi/scsi_transport_fc.h linux-3.0.9/include/scsi/scsi_transport_fc.h
35892 ---- linux-3.0.9/include/scsi/scsi_transport_fc.h 2011-11-11 13:12:24.000000000 -0500
35893 -+++ linux-3.0.9/include/scsi/scsi_transport_fc.h 2011-11-15 20:03:00.000000000 -0500
35894 +diff -urNp linux-3.1.1/include/scsi/scsi_transport_fc.h linux-3.1.1/include/scsi/scsi_transport_fc.h
35895 +--- linux-3.1.1/include/scsi/scsi_transport_fc.h 2011-11-11 15:19:27.000000000 -0500
35896 ++++ linux-3.1.1/include/scsi/scsi_transport_fc.h 2011-11-16 18:39:08.000000000 -0500
35897 @@ -711,7 +711,7 @@ struct fc_function_template {
35898 unsigned long show_host_system_hostname:1;
35899
35900 @@ -61515,9 +61374,9 @@ diff -urNp linux-3.0.9/include/scsi/scsi_transport_fc.h linux-3.0.9/include/scsi
35901
35902
35903 /**
35904 -diff -urNp linux-3.0.9/include/sound/ak4xxx-adda.h linux-3.0.9/include/sound/ak4xxx-adda.h
35905 ---- linux-3.0.9/include/sound/ak4xxx-adda.h 2011-11-11 13:12:24.000000000 -0500
35906 -+++ linux-3.0.9/include/sound/ak4xxx-adda.h 2011-11-15 20:03:00.000000000 -0500
35907 +diff -urNp linux-3.1.1/include/sound/ak4xxx-adda.h linux-3.1.1/include/sound/ak4xxx-adda.h
35908 +--- linux-3.1.1/include/sound/ak4xxx-adda.h 2011-11-11 15:19:27.000000000 -0500
35909 ++++ linux-3.1.1/include/sound/ak4xxx-adda.h 2011-11-16 18:39:08.000000000 -0500
35910 @@ -35,7 +35,7 @@ struct snd_ak4xxx_ops {
35911 void (*write)(struct snd_akm4xxx *ak, int chip, unsigned char reg,
35912 unsigned char val);
35913 @@ -61527,9 +61386,9 @@ diff -urNp linux-3.0.9/include/sound/ak4xxx-adda.h linux-3.0.9/include/sound/ak4
35914
35915 #define AK4XXX_IMAGE_SIZE (AK4XXX_MAX_CHIPS * 16) /* 64 bytes */
35916
35917 -diff -urNp linux-3.0.9/include/sound/hwdep.h linux-3.0.9/include/sound/hwdep.h
35918 ---- linux-3.0.9/include/sound/hwdep.h 2011-11-11 13:12:24.000000000 -0500
35919 -+++ linux-3.0.9/include/sound/hwdep.h 2011-11-15 20:03:00.000000000 -0500
35920 +diff -urNp linux-3.1.1/include/sound/hwdep.h linux-3.1.1/include/sound/hwdep.h
35921 +--- linux-3.1.1/include/sound/hwdep.h 2011-11-11 15:19:27.000000000 -0500
35922 ++++ linux-3.1.1/include/sound/hwdep.h 2011-11-16 18:39:08.000000000 -0500
35923 @@ -49,7 +49,7 @@ struct snd_hwdep_ops {
35924 struct snd_hwdep_dsp_status *status);
35925 int (*dsp_load)(struct snd_hwdep *hw,
35926 @@ -61539,9 +61398,9 @@ diff -urNp linux-3.0.9/include/sound/hwdep.h linux-3.0.9/include/sound/hwdep.h
35927
35928 struct snd_hwdep {
35929 struct snd_card *card;
35930 -diff -urNp linux-3.0.9/include/sound/info.h linux-3.0.9/include/sound/info.h
35931 ---- linux-3.0.9/include/sound/info.h 2011-11-11 13:12:24.000000000 -0500
35932 -+++ linux-3.0.9/include/sound/info.h 2011-11-15 20:03:00.000000000 -0500
35933 +diff -urNp linux-3.1.1/include/sound/info.h linux-3.1.1/include/sound/info.h
35934 +--- linux-3.1.1/include/sound/info.h 2011-11-11 15:19:27.000000000 -0500
35935 ++++ linux-3.1.1/include/sound/info.h 2011-11-16 18:39:08.000000000 -0500
35936 @@ -44,7 +44,7 @@ struct snd_info_entry_text {
35937 struct snd_info_buffer *buffer);
35938 void (*write)(struct snd_info_entry *entry,
35939 @@ -61551,9 +61410,9 @@ diff -urNp linux-3.0.9/include/sound/info.h linux-3.0.9/include/sound/info.h
35940
35941 struct snd_info_entry_ops {
35942 int (*open)(struct snd_info_entry *entry,
35943 -diff -urNp linux-3.0.9/include/sound/pcm.h linux-3.0.9/include/sound/pcm.h
35944 ---- linux-3.0.9/include/sound/pcm.h 2011-11-11 13:12:24.000000000 -0500
35945 -+++ linux-3.0.9/include/sound/pcm.h 2011-11-15 20:03:00.000000000 -0500
35946 +diff -urNp linux-3.1.1/include/sound/pcm.h linux-3.1.1/include/sound/pcm.h
35947 +--- linux-3.1.1/include/sound/pcm.h 2011-11-11 15:19:27.000000000 -0500
35948 ++++ linux-3.1.1/include/sound/pcm.h 2011-11-16 18:39:08.000000000 -0500
35949 @@ -81,6 +81,7 @@ struct snd_pcm_ops {
35950 int (*mmap)(struct snd_pcm_substream *substream, struct vm_area_struct *vma);
35951 int (*ack)(struct snd_pcm_substream *substream);
35952 @@ -61562,9 +61421,9 @@ diff -urNp linux-3.0.9/include/sound/pcm.h linux-3.0.9/include/sound/pcm.h
35953
35954 /*
35955 *
35956 -diff -urNp linux-3.0.9/include/sound/sb16_csp.h linux-3.0.9/include/sound/sb16_csp.h
35957 ---- linux-3.0.9/include/sound/sb16_csp.h 2011-11-11 13:12:24.000000000 -0500
35958 -+++ linux-3.0.9/include/sound/sb16_csp.h 2011-11-15 20:03:00.000000000 -0500
35959 +diff -urNp linux-3.1.1/include/sound/sb16_csp.h linux-3.1.1/include/sound/sb16_csp.h
35960 +--- linux-3.1.1/include/sound/sb16_csp.h 2011-11-11 15:19:27.000000000 -0500
35961 ++++ linux-3.1.1/include/sound/sb16_csp.h 2011-11-16 18:39:08.000000000 -0500
35962 @@ -146,7 +146,7 @@ struct snd_sb_csp_ops {
35963 int (*csp_start) (struct snd_sb_csp * p, int sample_width, int channels);
35964 int (*csp_stop) (struct snd_sb_csp * p);
35965 @@ -61574,21 +61433,21 @@ diff -urNp linux-3.0.9/include/sound/sb16_csp.h linux-3.0.9/include/sound/sb16_c
35966
35967 /*
35968 * CSP private data
35969 -diff -urNp linux-3.0.9/include/sound/soc.h linux-3.0.9/include/sound/soc.h
35970 ---- linux-3.0.9/include/sound/soc.h 2011-11-11 13:12:24.000000000 -0500
35971 -+++ linux-3.0.9/include/sound/soc.h 2011-11-15 20:03:00.000000000 -0500
35972 -@@ -636,7 +636,7 @@ struct snd_soc_platform_driver {
35973 -
35974 - /* platform stream ops */
35975 - struct snd_pcm_ops *ops;
35976 +diff -urNp linux-3.1.1/include/sound/soc.h linux-3.1.1/include/sound/soc.h
35977 +--- linux-3.1.1/include/sound/soc.h 2011-11-11 15:19:27.000000000 -0500
35978 ++++ linux-3.1.1/include/sound/soc.h 2011-11-16 18:39:08.000000000 -0500
35979 +@@ -676,7 +676,7 @@ struct snd_soc_platform_driver {
35980 + /* platform IO - used for platform DAPM */
35981 + unsigned int (*read)(struct snd_soc_platform *, unsigned int);
35982 + int (*write)(struct snd_soc_platform *, unsigned int, unsigned int);
35983 -};
35984 +} __do_const;
35985
35986 struct snd_soc_platform {
35987 const char *name;
35988 -diff -urNp linux-3.0.9/include/sound/ymfpci.h linux-3.0.9/include/sound/ymfpci.h
35989 ---- linux-3.0.9/include/sound/ymfpci.h 2011-11-11 13:12:24.000000000 -0500
35990 -+++ linux-3.0.9/include/sound/ymfpci.h 2011-11-15 20:03:00.000000000 -0500
35991 +diff -urNp linux-3.1.1/include/sound/ymfpci.h linux-3.1.1/include/sound/ymfpci.h
35992 +--- linux-3.1.1/include/sound/ymfpci.h 2011-11-11 15:19:27.000000000 -0500
35993 ++++ linux-3.1.1/include/sound/ymfpci.h 2011-11-16 18:39:08.000000000 -0500
35994 @@ -358,7 +358,7 @@ struct snd_ymfpci {
35995 spinlock_t reg_lock;
35996 spinlock_t voice_lock;
35997 @@ -61598,19 +61457,19 @@ diff -urNp linux-3.0.9/include/sound/ymfpci.h linux-3.0.9/include/sound/ymfpci.h
35998 struct snd_info_entry *proc_entry;
35999 const struct firmware *dsp_microcode;
36000 const struct firmware *controller_microcode;
36001 -diff -urNp linux-3.0.9/include/target/target_core_base.h linux-3.0.9/include/target/target_core_base.h
36002 ---- linux-3.0.9/include/target/target_core_base.h 2011-11-11 13:12:24.000000000 -0500
36003 -+++ linux-3.0.9/include/target/target_core_base.h 2011-11-15 20:03:00.000000000 -0500
36004 -@@ -364,7 +364,7 @@ struct t10_reservation_ops {
36005 +diff -urNp linux-3.1.1/include/target/target_core_base.h linux-3.1.1/include/target/target_core_base.h
36006 +--- linux-3.1.1/include/target/target_core_base.h 2011-11-11 15:19:27.000000000 -0500
36007 ++++ linux-3.1.1/include/target/target_core_base.h 2011-11-16 18:39:08.000000000 -0500
36008 +@@ -356,7 +356,7 @@ struct t10_reservation_ops {
36009 int (*t10_seq_non_holder)(struct se_cmd *, unsigned char *, u32);
36010 int (*t10_pr_register)(struct se_cmd *);
36011 int (*t10_pr_clear)(struct se_cmd *);
36012 -};
36013 +} __no_const;
36014
36015 - struct t10_reservation_template {
36016 + struct t10_reservation {
36017 /* Reservation effects all target ports */
36018 -@@ -432,8 +432,8 @@ struct se_transport_task {
36019 +@@ -496,8 +496,8 @@ struct se_cmd {
36020 atomic_t t_task_cdbs_left;
36021 atomic_t t_task_cdbs_ex_left;
36022 atomic_t t_task_cdbs_timeout_left;
36023 @@ -61621,7 +61480,7 @@ diff -urNp linux-3.0.9/include/target/target_core_base.h linux-3.0.9/include/tar
36024 atomic_t t_transport_active;
36025 atomic_t t_transport_complete;
36026 atomic_t t_transport_queue_active;
36027 -@@ -774,7 +774,7 @@ struct se_device {
36028 +@@ -744,7 +744,7 @@ struct se_device {
36029 atomic_t active_cmds;
36030 atomic_t simple_cmds;
36031 atomic_t depth_left;
36032 @@ -61630,9 +61489,9 @@ diff -urNp linux-3.0.9/include/target/target_core_base.h linux-3.0.9/include/tar
36033 atomic_t dev_tur_active;
36034 atomic_t execute_tasks;
36035 atomic_t dev_status_thr_count;
36036 -diff -urNp linux-3.0.9/include/trace/events/irq.h linux-3.0.9/include/trace/events/irq.h
36037 ---- linux-3.0.9/include/trace/events/irq.h 2011-11-11 13:12:24.000000000 -0500
36038 -+++ linux-3.0.9/include/trace/events/irq.h 2011-11-15 20:03:00.000000000 -0500
36039 +diff -urNp linux-3.1.1/include/trace/events/irq.h linux-3.1.1/include/trace/events/irq.h
36040 +--- linux-3.1.1/include/trace/events/irq.h 2011-11-11 15:19:27.000000000 -0500
36041 ++++ linux-3.1.1/include/trace/events/irq.h 2011-11-16 18:39:08.000000000 -0500
36042 @@ -36,7 +36,7 @@ struct softirq_action;
36043 */
36044 TRACE_EVENT(irq_handler_entry,
36045 @@ -61651,9 +61510,9 @@ diff -urNp linux-3.0.9/include/trace/events/irq.h linux-3.0.9/include/trace/even
36046
36047 TP_ARGS(irq, action, ret),
36048
36049 -diff -urNp linux-3.0.9/include/video/udlfb.h linux-3.0.9/include/video/udlfb.h
36050 ---- linux-3.0.9/include/video/udlfb.h 2011-11-11 13:12:24.000000000 -0500
36051 -+++ linux-3.0.9/include/video/udlfb.h 2011-11-15 20:03:00.000000000 -0500
36052 +diff -urNp linux-3.1.1/include/video/udlfb.h linux-3.1.1/include/video/udlfb.h
36053 +--- linux-3.1.1/include/video/udlfb.h 2011-11-11 15:19:27.000000000 -0500
36054 ++++ linux-3.1.1/include/video/udlfb.h 2011-11-16 18:39:08.000000000 -0500
36055 @@ -51,10 +51,10 @@ struct dlfb_data {
36056 int base8;
36057 u32 pseudo_palette[256];
36058 @@ -61669,9 +61528,9 @@ diff -urNp linux-3.0.9/include/video/udlfb.h linux-3.0.9/include/video/udlfb.h
36059 };
36060
36061 #define NR_USB_REQUEST_I2C_SUB_IO 0x02
36062 -diff -urNp linux-3.0.9/include/video/uvesafb.h linux-3.0.9/include/video/uvesafb.h
36063 ---- linux-3.0.9/include/video/uvesafb.h 2011-11-11 13:12:24.000000000 -0500
36064 -+++ linux-3.0.9/include/video/uvesafb.h 2011-11-15 20:03:00.000000000 -0500
36065 +diff -urNp linux-3.1.1/include/video/uvesafb.h linux-3.1.1/include/video/uvesafb.h
36066 +--- linux-3.1.1/include/video/uvesafb.h 2011-11-11 15:19:27.000000000 -0500
36067 ++++ linux-3.1.1/include/video/uvesafb.h 2011-11-16 18:39:08.000000000 -0500
36068 @@ -177,6 +177,7 @@ struct uvesafb_par {
36069 u8 ypan; /* 0 - nothing, 1 - ypan, 2 - ywrap */
36070 u8 pmi_setpal; /* PMI for palette changes */
36071 @@ -61680,9 +61539,9 @@ diff -urNp linux-3.0.9/include/video/uvesafb.h linux-3.0.9/include/video/uvesafb
36072 void *pmi_start;
36073 void *pmi_pal;
36074 u8 *vbe_state_orig; /*
36075 -diff -urNp linux-3.0.9/init/do_mounts.c linux-3.0.9/init/do_mounts.c
36076 ---- linux-3.0.9/init/do_mounts.c 2011-11-11 13:12:24.000000000 -0500
36077 -+++ linux-3.0.9/init/do_mounts.c 2011-11-15 20:03:00.000000000 -0500
36078 +diff -urNp linux-3.1.1/init/do_mounts.c linux-3.1.1/init/do_mounts.c
36079 +--- linux-3.1.1/init/do_mounts.c 2011-11-11 15:19:27.000000000 -0500
36080 ++++ linux-3.1.1/init/do_mounts.c 2011-11-16 18:39:08.000000000 -0500
36081 @@ -287,11 +287,11 @@ static void __init get_fs_names(char *pa
36082
36083 static int __init do_mount_root(char *name, char *fs, int flags, void *data)
36084 @@ -61728,9 +61587,9 @@ diff -urNp linux-3.0.9/init/do_mounts.c linux-3.0.9/init/do_mounts.c
36085 + sys_mount((char __force_user *)".", (char __force_user *)"/", NULL, MS_MOVE, NULL);
36086 + sys_chroot((const char __force_user *)".");
36087 }
36088 -diff -urNp linux-3.0.9/init/do_mounts.h linux-3.0.9/init/do_mounts.h
36089 ---- linux-3.0.9/init/do_mounts.h 2011-11-11 13:12:24.000000000 -0500
36090 -+++ linux-3.0.9/init/do_mounts.h 2011-11-15 20:03:00.000000000 -0500
36091 +diff -urNp linux-3.1.1/init/do_mounts.h linux-3.1.1/init/do_mounts.h
36092 +--- linux-3.1.1/init/do_mounts.h 2011-11-11 15:19:27.000000000 -0500
36093 ++++ linux-3.1.1/init/do_mounts.h 2011-11-16 18:39:08.000000000 -0500
36094 @@ -15,15 +15,15 @@ extern int root_mountflags;
36095
36096 static inline int create_dev(char *name, dev_t dev)
36097 @@ -61759,9 +61618,9 @@ diff -urNp linux-3.0.9/init/do_mounts.h linux-3.0.9/init/do_mounts.h
36098 return 0;
36099 if (!S_ISBLK(stat.st_mode))
36100 return 0;
36101 -diff -urNp linux-3.0.9/init/do_mounts_initrd.c linux-3.0.9/init/do_mounts_initrd.c
36102 ---- linux-3.0.9/init/do_mounts_initrd.c 2011-11-11 13:12:24.000000000 -0500
36103 -+++ linux-3.0.9/init/do_mounts_initrd.c 2011-11-15 20:03:00.000000000 -0500
36104 +diff -urNp linux-3.1.1/init/do_mounts_initrd.c linux-3.1.1/init/do_mounts_initrd.c
36105 +--- linux-3.1.1/init/do_mounts_initrd.c 2011-11-11 15:19:27.000000000 -0500
36106 ++++ linux-3.1.1/init/do_mounts_initrd.c 2011-11-16 18:39:08.000000000 -0500
36107 @@ -44,13 +44,13 @@ static void __init handle_initrd(void)
36108 create_dev("/dev/root.old", Root_RAM0);
36109 /* mount initrd on rootfs' /root */
36110 @@ -61836,9 +61695,9 @@ diff -urNp linux-3.0.9/init/do_mounts_initrd.c linux-3.0.9/init/do_mounts_initrd
36111 + sys_unlink((const char __force_user *)"/initrd.image");
36112 return 0;
36113 }
36114 -diff -urNp linux-3.0.9/init/do_mounts_md.c linux-3.0.9/init/do_mounts_md.c
36115 ---- linux-3.0.9/init/do_mounts_md.c 2011-11-11 13:12:24.000000000 -0500
36116 -+++ linux-3.0.9/init/do_mounts_md.c 2011-11-15 20:03:00.000000000 -0500
36117 +diff -urNp linux-3.1.1/init/do_mounts_md.c linux-3.1.1/init/do_mounts_md.c
36118 +--- linux-3.1.1/init/do_mounts_md.c 2011-11-11 15:19:27.000000000 -0500
36119 ++++ linux-3.1.1/init/do_mounts_md.c 2011-11-16 18:39:08.000000000 -0500
36120 @@ -170,7 +170,7 @@ static void __init md_setup_drive(void)
36121 partitioned ? "_d" : "", minor,
36122 md_setup_args[ent].device_names);
36123 @@ -61866,9 +61725,9 @@ diff -urNp linux-3.0.9/init/do_mounts_md.c linux-3.0.9/init/do_mounts_md.c
36124 if (fd >= 0) {
36125 sys_ioctl(fd, RAID_AUTORUN, raid_autopart);
36126 sys_close(fd);
36127 -diff -urNp linux-3.0.9/init/initramfs.c linux-3.0.9/init/initramfs.c
36128 ---- linux-3.0.9/init/initramfs.c 2011-11-11 13:12:24.000000000 -0500
36129 -+++ linux-3.0.9/init/initramfs.c 2011-11-15 20:03:00.000000000 -0500
36130 +diff -urNp linux-3.1.1/init/initramfs.c linux-3.1.1/init/initramfs.c
36131 +--- linux-3.1.1/init/initramfs.c 2011-11-11 15:19:27.000000000 -0500
36132 ++++ linux-3.1.1/init/initramfs.c 2011-11-16 18:39:08.000000000 -0500
36133 @@ -74,7 +74,7 @@ static void __init free_hash(void)
36134 }
36135 }
36136 @@ -61977,10 +61836,10 @@ diff -urNp linux-3.0.9/init/initramfs.c linux-3.0.9/init/initramfs.c
36137 state = SkipIt;
36138 next_state = Reset;
36139 return 0;
36140 -diff -urNp linux-3.0.9/init/Kconfig linux-3.0.9/init/Kconfig
36141 ---- linux-3.0.9/init/Kconfig 2011-11-11 13:12:24.000000000 -0500
36142 -+++ linux-3.0.9/init/Kconfig 2011-11-15 20:03:00.000000000 -0500
36143 -@@ -1195,7 +1195,7 @@ config SLUB_DEBUG
36144 +diff -urNp linux-3.1.1/init/Kconfig linux-3.1.1/init/Kconfig
36145 +--- linux-3.1.1/init/Kconfig 2011-11-11 15:19:27.000000000 -0500
36146 ++++ linux-3.1.1/init/Kconfig 2011-11-16 18:39:08.000000000 -0500
36147 +@@ -1202,7 +1202,7 @@ config SLUB_DEBUG
36148
36149 config COMPAT_BRK
36150 bool "Disable heap randomization"
36151 @@ -61989,9 +61848,9 @@ diff -urNp linux-3.0.9/init/Kconfig linux-3.0.9/init/Kconfig
36152 help
36153 Randomizing heap placement makes heap exploits harder, but it
36154 also breaks ancient binaries (including anything libc5 based).
36155 -diff -urNp linux-3.0.9/init/main.c linux-3.0.9/init/main.c
36156 ---- linux-3.0.9/init/main.c 2011-11-11 13:12:24.000000000 -0500
36157 -+++ linux-3.0.9/init/main.c 2011-11-15 20:03:00.000000000 -0500
36158 +diff -urNp linux-3.1.1/init/main.c linux-3.1.1/init/main.c
36159 +--- linux-3.1.1/init/main.c 2011-11-11 15:19:27.000000000 -0500
36160 ++++ linux-3.1.1/init/main.c 2011-11-16 18:40:44.000000000 -0500
36161 @@ -96,6 +96,8 @@ static inline void mark_rodata_ro(void)
36162 extern void tc_init(void);
36163 #endif
36164 @@ -62051,7 +61910,7 @@ diff -urNp linux-3.0.9/init/main.c linux-3.0.9/init/main.c
36165 static const char * argv_init[MAX_INIT_ARGS+2] = { "init", NULL, };
36166 const char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, };
36167 static const char *panic_later, *panic_param;
36168 -@@ -667,6 +712,7 @@ int __init_or_module do_one_initcall(ini
36169 +@@ -678,6 +723,7 @@ int __init_or_module do_one_initcall(ini
36170 {
36171 int count = preempt_count();
36172 int ret;
36173 @@ -62059,7 +61918,7 @@ diff -urNp linux-3.0.9/init/main.c linux-3.0.9/init/main.c
36174
36175 if (initcall_debug)
36176 ret = do_one_initcall_debug(fn);
36177 -@@ -679,15 +725,15 @@ int __init_or_module do_one_initcall(ini
36178 +@@ -690,15 +736,15 @@ int __init_or_module do_one_initcall(ini
36179 sprintf(msgbuf, "error code %d ", ret);
36180
36181 if (preempt_count() != count) {
36182 @@ -62079,7 +61938,7 @@ diff -urNp linux-3.0.9/init/main.c linux-3.0.9/init/main.c
36183 }
36184
36185 return ret;
36186 -@@ -805,7 +851,7 @@ static int __init kernel_init(void * unu
36187 +@@ -817,7 +863,7 @@ static int __init kernel_init(void * unu
36188 do_basic_setup();
36189
36190 /* Open the /dev/console on the rootfs, this should never fail */
36191 @@ -62088,7 +61947,7 @@ diff -urNp linux-3.0.9/init/main.c linux-3.0.9/init/main.c
36192 printk(KERN_WARNING "Warning: unable to open an initial console.\n");
36193
36194 (void) sys_dup(0);
36195 -@@ -818,11 +864,13 @@ static int __init kernel_init(void * unu
36196 +@@ -830,11 +876,13 @@ static int __init kernel_init(void * unu
36197 if (!ramdisk_execute_command)
36198 ramdisk_execute_command = "/init";
36199
36200 @@ -62103,9 +61962,9 @@ diff -urNp linux-3.0.9/init/main.c linux-3.0.9/init/main.c
36201 /*
36202 * Ok, we have completed the initial bootup, and
36203 * we're essentially up and running. Get rid of the
36204 -diff -urNp linux-3.0.9/ipc/mqueue.c linux-3.0.9/ipc/mqueue.c
36205 ---- linux-3.0.9/ipc/mqueue.c 2011-11-11 13:12:24.000000000 -0500
36206 -+++ linux-3.0.9/ipc/mqueue.c 2011-11-15 20:03:00.000000000 -0500
36207 +diff -urNp linux-3.1.1/ipc/mqueue.c linux-3.1.1/ipc/mqueue.c
36208 +--- linux-3.1.1/ipc/mqueue.c 2011-11-11 15:19:27.000000000 -0500
36209 ++++ linux-3.1.1/ipc/mqueue.c 2011-11-16 18:40:44.000000000 -0500
36210 @@ -156,6 +156,7 @@ static struct inode *mqueue_get_inode(st
36211 mq_bytes = (mq_msg_tblsz +
36212 (info->attr.mq_maxmsg * info->attr.mq_msgsize));
36213 @@ -62114,9 +61973,9 @@ diff -urNp linux-3.0.9/ipc/mqueue.c linux-3.0.9/ipc/mqueue.c
36214 spin_lock(&mq_lock);
36215 if (u->mq_bytes + mq_bytes < u->mq_bytes ||
36216 u->mq_bytes + mq_bytes > task_rlimit(p, RLIMIT_MSGQUEUE)) {
36217 -diff -urNp linux-3.0.9/ipc/msg.c linux-3.0.9/ipc/msg.c
36218 ---- linux-3.0.9/ipc/msg.c 2011-11-11 13:12:24.000000000 -0500
36219 -+++ linux-3.0.9/ipc/msg.c 2011-11-15 20:03:00.000000000 -0500
36220 +diff -urNp linux-3.1.1/ipc/msg.c linux-3.1.1/ipc/msg.c
36221 +--- linux-3.1.1/ipc/msg.c 2011-11-11 15:19:27.000000000 -0500
36222 ++++ linux-3.1.1/ipc/msg.c 2011-11-16 18:39:08.000000000 -0500
36223 @@ -309,18 +309,19 @@ static inline int msg_security(struct ke
36224 return security_msg_queue_associate(msq, msgflg);
36225 }
36226 @@ -62142,9 +62001,9 @@ diff -urNp linux-3.0.9/ipc/msg.c linux-3.0.9/ipc/msg.c
36227 msg_params.key = key;
36228 msg_params.flg = msgflg;
36229
36230 -diff -urNp linux-3.0.9/ipc/sem.c linux-3.0.9/ipc/sem.c
36231 ---- linux-3.0.9/ipc/sem.c 2011-11-11 13:12:24.000000000 -0500
36232 -+++ linux-3.0.9/ipc/sem.c 2011-11-15 20:03:00.000000000 -0500
36233 +diff -urNp linux-3.1.1/ipc/sem.c linux-3.1.1/ipc/sem.c
36234 +--- linux-3.1.1/ipc/sem.c 2011-11-11 15:19:27.000000000 -0500
36235 ++++ linux-3.1.1/ipc/sem.c 2011-11-16 18:40:44.000000000 -0500
36236 @@ -318,10 +318,15 @@ static inline int sem_more_checks(struct
36237 return 0;
36238 }
36239 @@ -62173,7 +62032,7 @@ diff -urNp linux-3.0.9/ipc/sem.c linux-3.0.9/ipc/sem.c
36240 sem_params.key = key;
36241 sem_params.flg = semflg;
36242 sem_params.u.nsems = nsems;
36243 -@@ -854,6 +855,8 @@ static int semctl_main(struct ipc_namesp
36244 +@@ -848,6 +849,8 @@ static int semctl_main(struct ipc_namesp
36245 int nsems;
36246 struct list_head tasks;
36247
36248 @@ -62182,7 +62041,7 @@ diff -urNp linux-3.0.9/ipc/sem.c linux-3.0.9/ipc/sem.c
36249 sma = sem_lock_check(ns, semid);
36250 if (IS_ERR(sma))
36251 return PTR_ERR(sma);
36252 -@@ -1301,6 +1304,8 @@ SYSCALL_DEFINE4(semtimedop, int, semid,
36253 +@@ -1295,6 +1298,8 @@ SYSCALL_DEFINE4(semtimedop, int, semid,
36254 struct ipc_namespace *ns;
36255 struct list_head tasks;
36256
36257 @@ -62191,9 +62050,9 @@ diff -urNp linux-3.0.9/ipc/sem.c linux-3.0.9/ipc/sem.c
36258 ns = current->nsproxy->ipc_ns;
36259
36260 if (nsops < 1 || semid < 0)
36261 -diff -urNp linux-3.0.9/ipc/shm.c linux-3.0.9/ipc/shm.c
36262 ---- linux-3.0.9/ipc/shm.c 2011-11-11 13:12:24.000000000 -0500
36263 -+++ linux-3.0.9/ipc/shm.c 2011-11-15 20:03:00.000000000 -0500
36264 +diff -urNp linux-3.1.1/ipc/shm.c linux-3.1.1/ipc/shm.c
36265 +--- linux-3.1.1/ipc/shm.c 2011-11-11 15:19:27.000000000 -0500
36266 ++++ linux-3.1.1/ipc/shm.c 2011-11-16 18:40:44.000000000 -0500
36267 @@ -69,6 +69,14 @@ static void shm_destroy (struct ipc_name
36268 static int sysvipc_shm_proc_show(struct seq_file *s, void *it);
36269 #endif
36270 @@ -62209,7 +62068,7 @@ diff -urNp linux-3.0.9/ipc/shm.c linux-3.0.9/ipc/shm.c
36271 void shm_init_ns(struct ipc_namespace *ns)
36272 {
36273 ns->shm_ctlmax = SHMMAX;
36274 -@@ -401,6 +409,14 @@ static int newseg(struct ipc_namespace *
36275 +@@ -508,6 +516,14 @@ static int newseg(struct ipc_namespace *
36276 shp->shm_lprid = 0;
36277 shp->shm_atim = shp->shm_dtim = 0;
36278 shp->shm_ctim = get_seconds();
36279 @@ -62224,7 +62083,7 @@ diff -urNp linux-3.0.9/ipc/shm.c linux-3.0.9/ipc/shm.c
36280 shp->shm_segsz = size;
36281 shp->shm_nattch = 0;
36282 shp->shm_file = file;
36283 -@@ -451,18 +467,19 @@ static inline int shm_more_checks(struct
36284 +@@ -559,18 +575,19 @@ static inline int shm_more_checks(struct
36285 return 0;
36286 }
36287
36288 @@ -62249,7 +62108,7 @@ diff -urNp linux-3.0.9/ipc/shm.c linux-3.0.9/ipc/shm.c
36289 shm_params.key = key;
36290 shm_params.flg = shmflg;
36291 shm_params.u.size = size;
36292 -@@ -762,8 +779,6 @@ SYSCALL_DEFINE3(shmctl, int, shmid, int,
36293 +@@ -870,8 +887,6 @@ SYSCALL_DEFINE3(shmctl, int, shmid, int,
36294 case SHM_LOCK:
36295 case SHM_UNLOCK:
36296 {
36297 @@ -62258,7 +62117,7 @@ diff -urNp linux-3.0.9/ipc/shm.c linux-3.0.9/ipc/shm.c
36298 lru_add_drain_all(); /* drain pagevecs to lru lists */
36299
36300 shp = shm_lock_check(ns, shmid);
36301 -@@ -896,9 +911,21 @@ long do_shmat(int shmid, char __user *sh
36302 +@@ -1004,9 +1019,21 @@ long do_shmat(int shmid, char __user *sh
36303 if (err)
36304 goto out_unlock;
36305
36306 @@ -62280,9 +62139,9 @@ diff -urNp linux-3.0.9/ipc/shm.c linux-3.0.9/ipc/shm.c
36307 size = i_size_read(path.dentry->d_inode);
36308 shm_unlock(shp);
36309
36310 -diff -urNp linux-3.0.9/kernel/acct.c linux-3.0.9/kernel/acct.c
36311 ---- linux-3.0.9/kernel/acct.c 2011-11-11 13:12:24.000000000 -0500
36312 -+++ linux-3.0.9/kernel/acct.c 2011-11-15 20:03:00.000000000 -0500
36313 +diff -urNp linux-3.1.1/kernel/acct.c linux-3.1.1/kernel/acct.c
36314 +--- linux-3.1.1/kernel/acct.c 2011-11-11 15:19:27.000000000 -0500
36315 ++++ linux-3.1.1/kernel/acct.c 2011-11-16 18:39:08.000000000 -0500
36316 @@ -570,7 +570,7 @@ static void do_acct_process(struct bsd_a
36317 */
36318 flim = current->signal->rlim[RLIMIT_FSIZE].rlim_cur;
36319 @@ -62292,10 +62151,10 @@ diff -urNp linux-3.0.9/kernel/acct.c linux-3.0.9/kernel/acct.c
36320 sizeof(acct_t), &file->f_pos);
36321 current->signal->rlim[RLIMIT_FSIZE].rlim_cur = flim;
36322 set_fs(fs);
36323 -diff -urNp linux-3.0.9/kernel/audit.c linux-3.0.9/kernel/audit.c
36324 ---- linux-3.0.9/kernel/audit.c 2011-11-11 13:12:24.000000000 -0500
36325 -+++ linux-3.0.9/kernel/audit.c 2011-11-15 20:03:00.000000000 -0500
36326 -@@ -112,7 +112,7 @@ u32 audit_sig_sid = 0;
36327 +diff -urNp linux-3.1.1/kernel/audit.c linux-3.1.1/kernel/audit.c
36328 +--- linux-3.1.1/kernel/audit.c 2011-11-11 15:19:27.000000000 -0500
36329 ++++ linux-3.1.1/kernel/audit.c 2011-11-16 18:39:08.000000000 -0500
36330 +@@ -115,7 +115,7 @@ u32 audit_sig_sid = 0;
36331 3) suppressed due to audit_rate_limit
36332 4) suppressed due to audit_backlog_limit
36333 */
36334 @@ -62304,7 +62163,7 @@ diff -urNp linux-3.0.9/kernel/audit.c linux-3.0.9/kernel/audit.c
36335
36336 /* The netlink socket. */
36337 static struct sock *audit_sock;
36338 -@@ -234,7 +234,7 @@ void audit_log_lost(const char *message)
36339 +@@ -237,7 +237,7 @@ void audit_log_lost(const char *message)
36340 unsigned long now;
36341 int print;
36342
36343 @@ -62313,7 +62172,7 @@ diff -urNp linux-3.0.9/kernel/audit.c linux-3.0.9/kernel/audit.c
36344
36345 print = (audit_failure == AUDIT_FAIL_PANIC || !audit_rate_limit);
36346
36347 -@@ -253,7 +253,7 @@ void audit_log_lost(const char *message)
36348 +@@ -256,7 +256,7 @@ void audit_log_lost(const char *message)
36349 printk(KERN_WARNING
36350 "audit: audit_lost=%d audit_rate_limit=%d "
36351 "audit_backlog_limit=%d\n",
36352 @@ -62322,7 +62181,7 @@ diff -urNp linux-3.0.9/kernel/audit.c linux-3.0.9/kernel/audit.c
36353 audit_rate_limit,
36354 audit_backlog_limit);
36355 audit_panic(message);
36356 -@@ -686,7 +686,7 @@ static int audit_receive_msg(struct sk_b
36357 +@@ -689,7 +689,7 @@ static int audit_receive_msg(struct sk_b
36358 status_set.pid = audit_pid;
36359 status_set.rate_limit = audit_rate_limit;
36360 status_set.backlog_limit = audit_backlog_limit;
36361 @@ -62331,9 +62190,9 @@ diff -urNp linux-3.0.9/kernel/audit.c linux-3.0.9/kernel/audit.c
36362 status_set.backlog = skb_queue_len(&audit_skb_queue);
36363 audit_send_reply(NETLINK_CB(skb).pid, seq, AUDIT_GET, 0, 0,
36364 &status_set, sizeof(status_set));
36365 -diff -urNp linux-3.0.9/kernel/auditsc.c linux-3.0.9/kernel/auditsc.c
36366 ---- linux-3.0.9/kernel/auditsc.c 2011-11-11 13:12:24.000000000 -0500
36367 -+++ linux-3.0.9/kernel/auditsc.c 2011-11-15 20:03:00.000000000 -0500
36368 +diff -urNp linux-3.1.1/kernel/auditsc.c linux-3.1.1/kernel/auditsc.c
36369 +--- linux-3.1.1/kernel/auditsc.c 2011-11-11 15:19:27.000000000 -0500
36370 ++++ linux-3.1.1/kernel/auditsc.c 2011-11-16 18:39:08.000000000 -0500
36371 @@ -2118,7 +2118,7 @@ int auditsc_get_stamp(struct audit_conte
36372 }
36373
36374 @@ -62352,9 +62211,9 @@ diff -urNp linux-3.0.9/kernel/auditsc.c linux-3.0.9/kernel/auditsc.c
36375 struct audit_context *context = task->audit_context;
36376
36377 if (context && context->in_syscall) {
36378 -diff -urNp linux-3.0.9/kernel/capability.c linux-3.0.9/kernel/capability.c
36379 ---- linux-3.0.9/kernel/capability.c 2011-11-11 13:12:24.000000000 -0500
36380 -+++ linux-3.0.9/kernel/capability.c 2011-11-15 20:03:00.000000000 -0500
36381 +diff -urNp linux-3.1.1/kernel/capability.c linux-3.1.1/kernel/capability.c
36382 +--- linux-3.1.1/kernel/capability.c 2011-11-11 15:19:27.000000000 -0500
36383 ++++ linux-3.1.1/kernel/capability.c 2011-11-16 18:40:44.000000000 -0500
36384 @@ -202,6 +202,9 @@ SYSCALL_DEFINE2(capget, cap_user_header_
36385 * before modification is attempted and the application
36386 * fails.
36387 @@ -62415,10 +62274,10 @@ diff -urNp linux-3.0.9/kernel/capability.c linux-3.0.9/kernel/capability.c
36388 /**
36389 * nsown_capable - Check superior capability to one's own user_ns
36390 * @cap: The capability in question
36391 -diff -urNp linux-3.0.9/kernel/cgroup.c linux-3.0.9/kernel/cgroup.c
36392 ---- linux-3.0.9/kernel/cgroup.c 2011-11-11 13:12:24.000000000 -0500
36393 -+++ linux-3.0.9/kernel/cgroup.c 2011-11-15 20:03:00.000000000 -0500
36394 -@@ -593,6 +593,8 @@ static struct css_set *find_css_set(
36395 +diff -urNp linux-3.1.1/kernel/cgroup.c linux-3.1.1/kernel/cgroup.c
36396 +--- linux-3.1.1/kernel/cgroup.c 2011-11-11 15:19:27.000000000 -0500
36397 ++++ linux-3.1.1/kernel/cgroup.c 2011-11-16 18:40:44.000000000 -0500
36398 +@@ -595,6 +595,8 @@ static struct css_set *find_css_set(
36399 struct hlist_head *hhead;
36400 struct cg_cgroup_link *link;
36401
36402 @@ -62427,9 +62286,9 @@ diff -urNp linux-3.0.9/kernel/cgroup.c linux-3.0.9/kernel/cgroup.c
36403 /* First see if we already have a cgroup group that matches
36404 * the desired set */
36405 read_lock(&css_set_lock);
36406 -diff -urNp linux-3.0.9/kernel/compat.c linux-3.0.9/kernel/compat.c
36407 ---- linux-3.0.9/kernel/compat.c 2011-11-11 13:12:24.000000000 -0500
36408 -+++ linux-3.0.9/kernel/compat.c 2011-11-15 20:03:00.000000000 -0500
36409 +diff -urNp linux-3.1.1/kernel/compat.c linux-3.1.1/kernel/compat.c
36410 +--- linux-3.1.1/kernel/compat.c 2011-11-11 15:19:27.000000000 -0500
36411 ++++ linux-3.1.1/kernel/compat.c 2011-11-16 18:40:44.000000000 -0500
36412 @@ -13,6 +13,7 @@
36413
36414 #include <linux/linkage.h>
36415 @@ -62438,7 +62297,7 @@ diff -urNp linux-3.0.9/kernel/compat.c linux-3.0.9/kernel/compat.c
36416 #include <linux/errno.h>
36417 #include <linux/time.h>
36418 #include <linux/signal.h>
36419 -@@ -166,7 +167,7 @@ static long compat_nanosleep_restart(str
36420 +@@ -167,7 +168,7 @@ static long compat_nanosleep_restart(str
36421 mm_segment_t oldfs;
36422 long ret;
36423
36424 @@ -62447,7 +62306,7 @@ diff -urNp linux-3.0.9/kernel/compat.c linux-3.0.9/kernel/compat.c
36425 oldfs = get_fs();
36426 set_fs(KERNEL_DS);
36427 ret = hrtimer_nanosleep_restart(restart);
36428 -@@ -198,7 +199,7 @@ asmlinkage long compat_sys_nanosleep(str
36429 +@@ -199,7 +200,7 @@ asmlinkage long compat_sys_nanosleep(str
36430 oldfs = get_fs();
36431 set_fs(KERNEL_DS);
36432 ret = hrtimer_nanosleep(&tu,
36433 @@ -62456,7 +62315,7 @@ diff -urNp linux-3.0.9/kernel/compat.c linux-3.0.9/kernel/compat.c
36434 HRTIMER_MODE_REL, CLOCK_MONOTONIC);
36435 set_fs(oldfs);
36436
36437 -@@ -307,7 +308,7 @@ asmlinkage long compat_sys_sigpending(co
36438 +@@ -308,7 +309,7 @@ asmlinkage long compat_sys_sigpending(co
36439 mm_segment_t old_fs = get_fs();
36440
36441 set_fs(KERNEL_DS);
36442 @@ -62465,7 +62324,7 @@ diff -urNp linux-3.0.9/kernel/compat.c linux-3.0.9/kernel/compat.c
36443 set_fs(old_fs);
36444 if (ret == 0)
36445 ret = put_user(s, set);
36446 -@@ -330,8 +331,8 @@ asmlinkage long compat_sys_sigprocmask(i
36447 +@@ -331,8 +332,8 @@ asmlinkage long compat_sys_sigprocmask(i
36448 old_fs = get_fs();
36449 set_fs(KERNEL_DS);
36450 ret = sys_sigprocmask(how,
36451 @@ -62476,7 +62335,7 @@ diff -urNp linux-3.0.9/kernel/compat.c linux-3.0.9/kernel/compat.c
36452 set_fs(old_fs);
36453 if (ret == 0)
36454 if (oset)
36455 -@@ -368,7 +369,7 @@ asmlinkage long compat_sys_old_getrlimit
36456 +@@ -369,7 +370,7 @@ asmlinkage long compat_sys_old_getrlimit
36457 mm_segment_t old_fs = get_fs();
36458
36459 set_fs(KERNEL_DS);
36460 @@ -62485,7 +62344,7 @@ diff -urNp linux-3.0.9/kernel/compat.c linux-3.0.9/kernel/compat.c
36461 set_fs(old_fs);
36462
36463 if (!ret) {
36464 -@@ -440,7 +441,7 @@ asmlinkage long compat_sys_getrusage(int
36465 +@@ -441,7 +442,7 @@ asmlinkage long compat_sys_getrusage(int
36466 mm_segment_t old_fs = get_fs();
36467
36468 set_fs(KERNEL_DS);
36469 @@ -62494,7 +62353,7 @@ diff -urNp linux-3.0.9/kernel/compat.c linux-3.0.9/kernel/compat.c
36470 set_fs(old_fs);
36471
36472 if (ret)
36473 -@@ -467,8 +468,8 @@ compat_sys_wait4(compat_pid_t pid, compa
36474 +@@ -468,8 +469,8 @@ compat_sys_wait4(compat_pid_t pid, compa
36475 set_fs (KERNEL_DS);
36476 ret = sys_wait4(pid,
36477 (stat_addr ?
36478 @@ -62505,7 +62364,7 @@ diff -urNp linux-3.0.9/kernel/compat.c linux-3.0.9/kernel/compat.c
36479 set_fs (old_fs);
36480
36481 if (ret > 0) {
36482 -@@ -493,8 +494,8 @@ asmlinkage long compat_sys_waitid(int wh
36483 +@@ -494,8 +495,8 @@ asmlinkage long compat_sys_waitid(int wh
36484 memset(&info, 0, sizeof(info));
36485
36486 set_fs(KERNEL_DS);
36487 @@ -62516,7 +62375,7 @@ diff -urNp linux-3.0.9/kernel/compat.c linux-3.0.9/kernel/compat.c
36488 set_fs(old_fs);
36489
36490 if ((ret < 0) || (info.si_signo == 0))
36491 -@@ -624,8 +625,8 @@ long compat_sys_timer_settime(timer_t ti
36492 +@@ -625,8 +626,8 @@ long compat_sys_timer_settime(timer_t ti
36493 oldfs = get_fs();
36494 set_fs(KERNEL_DS);
36495 err = sys_timer_settime(timer_id, flags,
36496 @@ -62527,7 +62386,7 @@ diff -urNp linux-3.0.9/kernel/compat.c linux-3.0.9/kernel/compat.c
36497 set_fs(oldfs);
36498 if (!err && old && put_compat_itimerspec(old, &oldts))
36499 return -EFAULT;
36500 -@@ -642,7 +643,7 @@ long compat_sys_timer_gettime(timer_t ti
36501 +@@ -643,7 +644,7 @@ long compat_sys_timer_gettime(timer_t ti
36502 oldfs = get_fs();
36503 set_fs(KERNEL_DS);
36504 err = sys_timer_gettime(timer_id,
36505 @@ -62536,7 +62395,7 @@ diff -urNp linux-3.0.9/kernel/compat.c linux-3.0.9/kernel/compat.c
36506 set_fs(oldfs);
36507 if (!err && put_compat_itimerspec(setting, &ts))
36508 return -EFAULT;
36509 -@@ -661,7 +662,7 @@ long compat_sys_clock_settime(clockid_t
36510 +@@ -662,7 +663,7 @@ long compat_sys_clock_settime(clockid_t
36511 oldfs = get_fs();
36512 set_fs(KERNEL_DS);
36513 err = sys_clock_settime(which_clock,
36514 @@ -62545,7 +62404,7 @@ diff -urNp linux-3.0.9/kernel/compat.c linux-3.0.9/kernel/compat.c
36515 set_fs(oldfs);
36516 return err;
36517 }
36518 -@@ -676,7 +677,7 @@ long compat_sys_clock_gettime(clockid_t
36519 +@@ -677,7 +678,7 @@ long compat_sys_clock_gettime(clockid_t
36520 oldfs = get_fs();
36521 set_fs(KERNEL_DS);
36522 err = sys_clock_gettime(which_clock,
36523 @@ -62554,7 +62413,7 @@ diff -urNp linux-3.0.9/kernel/compat.c linux-3.0.9/kernel/compat.c
36524 set_fs(oldfs);
36525 if (!err && put_compat_timespec(&ts, tp))
36526 return -EFAULT;
36527 -@@ -696,7 +697,7 @@ long compat_sys_clock_adjtime(clockid_t
36528 +@@ -697,7 +698,7 @@ long compat_sys_clock_adjtime(clockid_t
36529
36530 oldfs = get_fs();
36531 set_fs(KERNEL_DS);
36532 @@ -62563,7 +62422,7 @@ diff -urNp linux-3.0.9/kernel/compat.c linux-3.0.9/kernel/compat.c
36533 set_fs(oldfs);
36534
36535 err = compat_put_timex(utp, &txc);
36536 -@@ -716,7 +717,7 @@ long compat_sys_clock_getres(clockid_t w
36537 +@@ -717,7 +718,7 @@ long compat_sys_clock_getres(clockid_t w
36538 oldfs = get_fs();
36539 set_fs(KERNEL_DS);
36540 err = sys_clock_getres(which_clock,
36541 @@ -62572,7 +62431,7 @@ diff -urNp linux-3.0.9/kernel/compat.c linux-3.0.9/kernel/compat.c
36542 set_fs(oldfs);
36543 if (!err && tp && put_compat_timespec(&ts, tp))
36544 return -EFAULT;
36545 -@@ -728,9 +729,9 @@ static long compat_clock_nanosleep_resta
36546 +@@ -729,9 +730,9 @@ static long compat_clock_nanosleep_resta
36547 long err;
36548 mm_segment_t oldfs;
36549 struct timespec tu;
36550 @@ -62584,7 +62443,7 @@ diff -urNp linux-3.0.9/kernel/compat.c linux-3.0.9/kernel/compat.c
36551 oldfs = get_fs();
36552 set_fs(KERNEL_DS);
36553 err = clock_nanosleep_restart(restart);
36554 -@@ -762,8 +763,8 @@ long compat_sys_clock_nanosleep(clockid_
36555 +@@ -763,8 +764,8 @@ long compat_sys_clock_nanosleep(clockid_
36556 oldfs = get_fs();
36557 set_fs(KERNEL_DS);
36558 err = sys_clock_nanosleep(which_clock, flags,
36559 @@ -62595,9 +62454,9 @@ diff -urNp linux-3.0.9/kernel/compat.c linux-3.0.9/kernel/compat.c
36560 set_fs(oldfs);
36561
36562 if ((err == -ERESTART_RESTARTBLOCK) && rmtp &&
36563 -diff -urNp linux-3.0.9/kernel/configs.c linux-3.0.9/kernel/configs.c
36564 ---- linux-3.0.9/kernel/configs.c 2011-11-11 13:12:24.000000000 -0500
36565 -+++ linux-3.0.9/kernel/configs.c 2011-11-15 20:03:00.000000000 -0500
36566 +diff -urNp linux-3.1.1/kernel/configs.c linux-3.1.1/kernel/configs.c
36567 +--- linux-3.1.1/kernel/configs.c 2011-11-11 15:19:27.000000000 -0500
36568 ++++ linux-3.1.1/kernel/configs.c 2011-11-16 18:40:44.000000000 -0500
36569 @@ -74,8 +74,19 @@ static int __init ikconfig_init(void)
36570 struct proc_dir_entry *entry;
36571
36572 @@ -62618,9 +62477,9 @@ diff -urNp linux-3.0.9/kernel/configs.c linux-3.0.9/kernel/configs.c
36573 if (!entry)
36574 return -ENOMEM;
36575
36576 -diff -urNp linux-3.0.9/kernel/cred.c linux-3.0.9/kernel/cred.c
36577 ---- linux-3.0.9/kernel/cred.c 2011-11-11 13:12:24.000000000 -0500
36578 -+++ linux-3.0.9/kernel/cred.c 2011-11-15 20:03:00.000000000 -0500
36579 +diff -urNp linux-3.1.1/kernel/cred.c linux-3.1.1/kernel/cred.c
36580 +--- linux-3.1.1/kernel/cred.c 2011-11-11 15:19:27.000000000 -0500
36581 ++++ linux-3.1.1/kernel/cred.c 2011-11-16 18:40:44.000000000 -0500
36582 @@ -158,6 +158,8 @@ static void put_cred_rcu(struct rcu_head
36583 */
36584 void __put_cred(struct cred *cred)
36585 @@ -62702,20 +62561,7 @@ diff -urNp linux-3.0.9/kernel/cred.c linux-3.0.9/kernel/cred.c
36586 /* dumpability changes */
36587 if (old->euid != new->euid ||
36588 old->egid != new->egid ||
36589 -@@ -508,10 +526,8 @@ int commit_creds(struct cred *new)
36590 - key_fsgid_changed(task);
36591 -
36592 - /* do it
36593 -- * - What if a process setreuid()'s and this brings the
36594 -- * new uid over his NPROC rlimit? We can check this now
36595 -- * cheaply with the new uid cache, so if it matters
36596 -- * we should be checking for it. -DaveM
36597 -+ * RLIMIT_NPROC limits on user->processes have already been checked
36598 -+ * in set_user().
36599 - */
36600 - alter_cred_subscribers(new, 2);
36601 - if (new->user != old->user)
36602 -@@ -551,6 +567,8 @@ EXPORT_SYMBOL(commit_creds);
36603 +@@ -549,6 +567,8 @@ EXPORT_SYMBOL(commit_creds);
36604 */
36605 void abort_creds(struct cred *new)
36606 {
36607 @@ -62724,7 +62570,7 @@ diff -urNp linux-3.0.9/kernel/cred.c linux-3.0.9/kernel/cred.c
36608 kdebug("abort_creds(%p{%d,%d})", new,
36609 atomic_read(&new->usage),
36610 read_cred_subscribers(new));
36611 -@@ -574,6 +592,8 @@ const struct cred *override_creds(const
36612 +@@ -572,6 +592,8 @@ const struct cred *override_creds(const
36613 {
36614 const struct cred *old = current->cred;
36615
36616 @@ -62733,7 +62579,7 @@ diff -urNp linux-3.0.9/kernel/cred.c linux-3.0.9/kernel/cred.c
36617 kdebug("override_creds(%p{%d,%d})", new,
36618 atomic_read(&new->usage),
36619 read_cred_subscribers(new));
36620 -@@ -603,6 +623,8 @@ void revert_creds(const struct cred *old
36621 +@@ -601,6 +623,8 @@ void revert_creds(const struct cred *old
36622 {
36623 const struct cred *override = current->cred;
36624
36625 @@ -62742,7 +62588,7 @@ diff -urNp linux-3.0.9/kernel/cred.c linux-3.0.9/kernel/cred.c
36626 kdebug("revert_creds(%p{%d,%d})", old,
36627 atomic_read(&old->usage),
36628 read_cred_subscribers(old));
36629 -@@ -649,6 +671,8 @@ struct cred *prepare_kernel_cred(struct
36630 +@@ -647,6 +671,8 @@ struct cred *prepare_kernel_cred(struct
36631 const struct cred *old;
36632 struct cred *new;
36633
36634 @@ -62751,7 +62597,7 @@ diff -urNp linux-3.0.9/kernel/cred.c linux-3.0.9/kernel/cred.c
36635 new = kmem_cache_alloc(cred_jar, GFP_KERNEL);
36636 if (!new)
36637 return NULL;
36638 -@@ -703,6 +727,8 @@ EXPORT_SYMBOL(prepare_kernel_cred);
36639 +@@ -701,6 +727,8 @@ EXPORT_SYMBOL(prepare_kernel_cred);
36640 */
36641 int set_security_override(struct cred *new, u32 secid)
36642 {
36643 @@ -62760,7 +62606,7 @@ diff -urNp linux-3.0.9/kernel/cred.c linux-3.0.9/kernel/cred.c
36644 return security_kernel_act_as(new, secid);
36645 }
36646 EXPORT_SYMBOL(set_security_override);
36647 -@@ -722,6 +748,8 @@ int set_security_override_from_ctx(struc
36648 +@@ -720,6 +748,8 @@ int set_security_override_from_ctx(struc
36649 u32 secid;
36650 int ret;
36651
36652 @@ -62769,9 +62615,9 @@ diff -urNp linux-3.0.9/kernel/cred.c linux-3.0.9/kernel/cred.c
36653 ret = security_secctx_to_secid(secctx, strlen(secctx), &secid);
36654 if (ret < 0)
36655 return ret;
36656 -diff -urNp linux-3.0.9/kernel/debug/debug_core.c linux-3.0.9/kernel/debug/debug_core.c
36657 ---- linux-3.0.9/kernel/debug/debug_core.c 2011-11-11 13:12:24.000000000 -0500
36658 -+++ linux-3.0.9/kernel/debug/debug_core.c 2011-11-15 20:03:00.000000000 -0500
36659 +diff -urNp linux-3.1.1/kernel/debug/debug_core.c linux-3.1.1/kernel/debug/debug_core.c
36660 +--- linux-3.1.1/kernel/debug/debug_core.c 2011-11-11 15:19:27.000000000 -0500
36661 ++++ linux-3.1.1/kernel/debug/debug_core.c 2011-11-16 18:39:08.000000000 -0500
36662 @@ -119,7 +119,7 @@ static DEFINE_RAW_SPINLOCK(dbg_slave_loc
36663 */
36664 static atomic_t masters_in_kgdb;
36665 @@ -62832,9 +62678,9 @@ diff -urNp linux-3.0.9/kernel/debug/debug_core.c linux-3.0.9/kernel/debug/debug_
36666 tasklet_schedule(&kgdb_tasklet_breakpoint);
36667 }
36668 EXPORT_SYMBOL_GPL(kgdb_schedule_breakpoint);
36669 -diff -urNp linux-3.0.9/kernel/debug/kdb/kdb_main.c linux-3.0.9/kernel/debug/kdb/kdb_main.c
36670 ---- linux-3.0.9/kernel/debug/kdb/kdb_main.c 2011-11-11 13:12:24.000000000 -0500
36671 -+++ linux-3.0.9/kernel/debug/kdb/kdb_main.c 2011-11-15 20:03:00.000000000 -0500
36672 +diff -urNp linux-3.1.1/kernel/debug/kdb/kdb_main.c linux-3.1.1/kernel/debug/kdb/kdb_main.c
36673 +--- linux-3.1.1/kernel/debug/kdb/kdb_main.c 2011-11-11 15:19:27.000000000 -0500
36674 ++++ linux-3.1.1/kernel/debug/kdb/kdb_main.c 2011-11-16 18:39:08.000000000 -0500
36675 @@ -1980,7 +1980,7 @@ static int kdb_lsmod(int argc, const cha
36676 list_for_each_entry(mod, kdb_modules, list) {
36677
36678 @@ -62853,10 +62699,10 @@ diff -urNp linux-3.0.9/kernel/debug/kdb/kdb_main.c linux-3.0.9/kernel/debug/kdb/
36679
36680 #ifdef CONFIG_MODULE_UNLOAD
36681 {
36682 -diff -urNp linux-3.0.9/kernel/events/core.c linux-3.0.9/kernel/events/core.c
36683 ---- linux-3.0.9/kernel/events/core.c 2011-11-11 13:12:24.000000000 -0500
36684 -+++ linux-3.0.9/kernel/events/core.c 2011-11-15 20:03:00.000000000 -0500
36685 -@@ -170,7 +170,7 @@ int perf_proc_update_handler(struct ctl_
36686 +diff -urNp linux-3.1.1/kernel/events/core.c linux-3.1.1/kernel/events/core.c
36687 +--- linux-3.1.1/kernel/events/core.c 2011-11-11 15:19:27.000000000 -0500
36688 ++++ linux-3.1.1/kernel/events/core.c 2011-11-16 18:39:08.000000000 -0500
36689 +@@ -172,7 +172,7 @@ int perf_proc_update_handler(struct ctl_
36690 return 0;
36691 }
36692
36693 @@ -62865,7 +62711,7 @@ diff -urNp linux-3.0.9/kernel/events/core.c linux-3.0.9/kernel/events/core.c
36694
36695 static void cpu_ctx_sched_out(struct perf_cpu_context *cpuctx,
36696 enum event_type_t event_type);
36697 -@@ -2488,7 +2488,7 @@ static void __perf_event_read(void *info
36698 +@@ -2535,7 +2535,7 @@ static void __perf_event_read(void *info
36699
36700 static inline u64 perf_event_count(struct perf_event *event)
36701 {
36702 @@ -62874,7 +62720,7 @@ diff -urNp linux-3.0.9/kernel/events/core.c linux-3.0.9/kernel/events/core.c
36703 }
36704
36705 static u64 perf_event_read(struct perf_event *event)
36706 -@@ -3023,9 +3023,9 @@ u64 perf_event_read_value(struct perf_ev
36707 +@@ -3060,9 +3060,9 @@ u64 perf_event_read_value(struct perf_ev
36708 mutex_lock(&event->child_mutex);
36709 total += perf_event_read(event);
36710 *enabled += event->total_time_enabled +
36711 @@ -62886,20 +62732,20 @@ diff -urNp linux-3.0.9/kernel/events/core.c linux-3.0.9/kernel/events/core.c
36712
36713 list_for_each_entry(child, &event->child_list, child_list) {
36714 total += perf_event_read(child);
36715 -@@ -3388,10 +3388,10 @@ void perf_event_update_userpage(struct p
36716 +@@ -3448,10 +3448,10 @@ void perf_event_update_userpage(struct p
36717 userpg->offset -= local64_read(&event->hw.prev_count);
36718
36719 - userpg->time_enabled = event->total_time_enabled +
36720 + userpg->time_enabled = enabled +
36721 - atomic64_read(&event->child_total_time_enabled);
36722 + atomic64_read_unchecked(&event->child_total_time_enabled);
36723
36724 - userpg->time_running = event->total_time_running +
36725 + userpg->time_running = running +
36726 - atomic64_read(&event->child_total_time_running);
36727 + atomic64_read_unchecked(&event->child_total_time_running);
36728
36729 barrier();
36730 ++userpg->lock;
36731 -@@ -4188,11 +4188,11 @@ static void perf_output_read_one(struct
36732 +@@ -3822,11 +3822,11 @@ static void perf_output_read_one(struct
36733 values[n++] = perf_event_count(event);
36734 if (read_format & PERF_FORMAT_TOTAL_TIME_ENABLED) {
36735 values[n++] = enabled +
36736 @@ -62913,7 +62759,7 @@ diff -urNp linux-3.0.9/kernel/events/core.c linux-3.0.9/kernel/events/core.c
36737 }
36738 if (read_format & PERF_FORMAT_ID)
36739 values[n++] = primary_event_id(event);
36740 -@@ -4833,12 +4833,12 @@ static void perf_event_mmap_event(struct
36741 +@@ -4477,12 +4477,12 @@ static void perf_event_mmap_event(struct
36742 * need to add enough zero bytes after the string to handle
36743 * the 64bit alignment we do later.
36744 */
36745 @@ -62928,7 +62774,7 @@ diff -urNp linux-3.0.9/kernel/events/core.c linux-3.0.9/kernel/events/core.c
36746 if (IS_ERR(name)) {
36747 name = strncpy(tmp, "//toolong", sizeof(tmp));
36748 goto got_name;
36749 -@@ -6190,7 +6190,7 @@ perf_event_alloc(struct perf_event_attr
36750 +@@ -5833,7 +5833,7 @@ perf_event_alloc(struct perf_event_attr
36751 event->parent = parent_event;
36752
36753 event->ns = get_pid_ns(current->nsproxy->pid_ns);
36754 @@ -62937,7 +62783,7 @@ diff -urNp linux-3.0.9/kernel/events/core.c linux-3.0.9/kernel/events/core.c
36755
36756 event->state = PERF_EVENT_STATE_INACTIVE;
36757
36758 -@@ -6713,10 +6713,10 @@ static void sync_child_event(struct perf
36759 +@@ -6355,10 +6355,10 @@ static void sync_child_event(struct perf
36760 /*
36761 * Add back the child's count to the parent's count:
36762 */
36763 @@ -62951,9 +62797,9 @@ diff -urNp linux-3.0.9/kernel/events/core.c linux-3.0.9/kernel/events/core.c
36764 &parent_event->child_total_time_running);
36765
36766 /*
36767 -diff -urNp linux-3.0.9/kernel/exit.c linux-3.0.9/kernel/exit.c
36768 ---- linux-3.0.9/kernel/exit.c 2011-11-11 13:12:24.000000000 -0500
36769 -+++ linux-3.0.9/kernel/exit.c 2011-11-15 20:03:00.000000000 -0500
36770 +diff -urNp linux-3.1.1/kernel/exit.c linux-3.1.1/kernel/exit.c
36771 +--- linux-3.1.1/kernel/exit.c 2011-11-11 15:19:27.000000000 -0500
36772 ++++ linux-3.1.1/kernel/exit.c 2011-11-16 19:33:48.000000000 -0500
36773 @@ -57,6 +57,10 @@
36774 #include <asm/pgtable.h>
36775 #include <asm/mmu_context.h>
36776 @@ -62965,7 +62811,7 @@ diff -urNp linux-3.0.9/kernel/exit.c linux-3.0.9/kernel/exit.c
36777 static void exit_mm(struct task_struct * tsk);
36778
36779 static void __unhash_process(struct task_struct *p, bool group_dead)
36780 -@@ -169,6 +173,10 @@ void release_task(struct task_struct * p
36781 +@@ -168,6 +172,10 @@ void release_task(struct task_struct * p
36782 struct task_struct *leader;
36783 int zap_leader;
36784 repeat:
36785 @@ -62973,10 +62819,10 @@ diff -urNp linux-3.0.9/kernel/exit.c linux-3.0.9/kernel/exit.c
36786 + gr_del_task_from_ip_table(p);
36787 +#endif
36788 +
36789 - tracehook_prepare_release_task(p);
36790 /* don't need to get the RCU readlock here - the process is dead and
36791 * can't be modifying its own credentials. But shut RCU-lockdep up */
36792 -@@ -338,11 +346,22 @@ static void reparent_to_kthreadd(void)
36793 + rcu_read_lock();
36794 +@@ -324,11 +332,22 @@ static void reparent_to_kthreadd(void)
36795 {
36796 write_lock_irq(&tasklist_lock);
36797
36798 @@ -62999,7 +62845,7 @@ diff -urNp linux-3.0.9/kernel/exit.c linux-3.0.9/kernel/exit.c
36799 /* Set the exit signal to SIGCHLD so we signal init on exit */
36800 current->exit_signal = SIGCHLD;
36801
36802 -@@ -394,7 +413,7 @@ int allow_signal(int sig)
36803 +@@ -380,7 +399,7 @@ int allow_signal(int sig)
36804 * know it'll be handled, so that they don't get converted to
36805 * SIGKILL or just silently dropped.
36806 */
36807 @@ -63008,7 +62854,7 @@ diff -urNp linux-3.0.9/kernel/exit.c linux-3.0.9/kernel/exit.c
36808 recalc_sigpending();
36809 spin_unlock_irq(&current->sighand->siglock);
36810 return 0;
36811 -@@ -430,6 +449,17 @@ void daemonize(const char *name, ...)
36812 +@@ -416,6 +435,17 @@ void daemonize(const char *name, ...)
36813 vsnprintf(current->comm, sizeof(current->comm), name, args);
36814 va_end(args);
36815
36816 @@ -63026,38 +62872,24 @@ diff -urNp linux-3.0.9/kernel/exit.c linux-3.0.9/kernel/exit.c
36817 /*
36818 * If we were started as result of loading a module, close all of the
36819 * user space pages. We don't need them, and if we didn't close them
36820 -@@ -904,15 +934,8 @@ NORET_TYPE void do_exit(long code)
36821 +@@ -895,6 +925,8 @@ NORET_TYPE void do_exit(long code)
36822 struct task_struct *tsk = current;
36823 int group_dead;
36824
36825 -- profile_task_exit(tsk);
36826 --
36827 -- WARN_ON(atomic_read(&tsk->fs_excl));
36828 -- WARN_ON(blk_needs_flush_plug(tsk));
36829 --
36830 - if (unlikely(in_interrupt()))
36831 - panic("Aiee, killing interrupt handler!");
36832 -- if (unlikely(!tsk->pid))
36833 -- panic("Attempted to kill the idle task!");
36834 ++ set_fs(USER_DS);
36835 ++
36836 + profile_task_exit(tsk);
36837
36838 - /*
36839 - * If do_exit is called because this processes oopsed, it's possible
36840 -@@ -923,6 +946,14 @@ NORET_TYPE void do_exit(long code)
36841 + WARN_ON(blk_needs_flush_plug(tsk));
36842 +@@ -911,7 +943,6 @@ NORET_TYPE void do_exit(long code)
36843 + * mm_release()->clear_child_tid() from writing to a user-controlled
36844 + * kernel address.
36845 */
36846 - set_fs(USER_DS);
36847 +- set_fs(USER_DS);
36848
36849 -+ profile_task_exit(tsk);
36850 -+
36851 -+ WARN_ON(atomic_read(&tsk->fs_excl));
36852 -+ WARN_ON(blk_needs_flush_plug(tsk));
36853 -+
36854 -+ if (unlikely(!tsk->pid))
36855 -+ panic("Attempted to kill the idle task!");
36856 -+
36857 - tracehook_report_exit(&code);
36858 + ptrace_event(PTRACE_EVENT_EXIT, code);
36859
36860 - validate_creds_for_do_exit(tsk);
36861 -@@ -983,6 +1014,9 @@ NORET_TYPE void do_exit(long code)
36862 +@@ -973,6 +1004,9 @@ NORET_TYPE void do_exit(long code)
36863 tsk->exit_code = code;
36864 taskstats_exit(tsk, group_dead);
36865
36866 @@ -63067,10 +62899,10 @@ diff -urNp linux-3.0.9/kernel/exit.c linux-3.0.9/kernel/exit.c
36867 exit_mm(tsk);
36868
36869 if (group_dead)
36870 -diff -urNp linux-3.0.9/kernel/fork.c linux-3.0.9/kernel/fork.c
36871 ---- linux-3.0.9/kernel/fork.c 2011-11-11 13:12:24.000000000 -0500
36872 -+++ linux-3.0.9/kernel/fork.c 2011-11-15 20:03:00.000000000 -0500
36873 -@@ -286,7 +286,7 @@ static struct task_struct *dup_task_stru
36874 +diff -urNp linux-3.1.1/kernel/fork.c linux-3.1.1/kernel/fork.c
36875 +--- linux-3.1.1/kernel/fork.c 2011-11-11 15:19:27.000000000 -0500
36876 ++++ linux-3.1.1/kernel/fork.c 2011-11-16 19:36:31.000000000 -0500
36877 +@@ -285,7 +285,7 @@ static struct task_struct *dup_task_stru
36878 *stackend = STACK_END_MAGIC; /* for overflow detection */
36879
36880 #ifdef CONFIG_CC_STACKPROTECTOR
36881 @@ -63078,8 +62910,8 @@ diff -urNp linux-3.0.9/kernel/fork.c linux-3.0.9/kernel/fork.c
36882 + tsk->stack_canary = pax_get_random_long();
36883 #endif
36884
36885 - /* One for us, one for whoever does the "release_task()" (usually parent) */
36886 -@@ -308,13 +308,77 @@ out:
36887 + /*
36888 +@@ -309,13 +309,77 @@ out:
36889 }
36890
36891 #ifdef CONFIG_MMU
36892 @@ -63159,7 +62991,7 @@ diff -urNp linux-3.0.9/kernel/fork.c linux-3.0.9/kernel/fork.c
36893
36894 down_write(&oldmm->mmap_sem);
36895 flush_cache_dup_mm(oldmm);
36896 -@@ -326,8 +390,8 @@ static int dup_mmap(struct mm_struct *mm
36897 +@@ -327,8 +391,8 @@ static int dup_mmap(struct mm_struct *mm
36898 mm->locked_vm = 0;
36899 mm->mmap = NULL;
36900 mm->mmap_cache = NULL;
36901 @@ -63170,7 +63002,7 @@ diff -urNp linux-3.0.9/kernel/fork.c linux-3.0.9/kernel/fork.c
36902 mm->map_count = 0;
36903 cpumask_clear(mm_cpumask(mm));
36904 mm->mm_rb = RB_ROOT;
36905 -@@ -343,8 +407,6 @@ static int dup_mmap(struct mm_struct *mm
36906 +@@ -344,8 +408,6 @@ static int dup_mmap(struct mm_struct *mm
36907
36908 prev = NULL;
36909 for (mpnt = oldmm->mmap; mpnt; mpnt = mpnt->vm_next) {
36910 @@ -63179,7 +63011,7 @@ diff -urNp linux-3.0.9/kernel/fork.c linux-3.0.9/kernel/fork.c
36911 if (mpnt->vm_flags & VM_DONTCOPY) {
36912 long pages = vma_pages(mpnt);
36913 mm->total_vm -= pages;
36914 -@@ -352,55 +414,13 @@ static int dup_mmap(struct mm_struct *mm
36915 +@@ -353,55 +415,13 @@ static int dup_mmap(struct mm_struct *mm
36916 -pages);
36917 continue;
36918 }
36919 @@ -63239,7 +63071,7 @@ diff -urNp linux-3.0.9/kernel/fork.c linux-3.0.9/kernel/fork.c
36920 * Link in the new vma and copy the page table entries.
36921 */
36922 *pprev = tmp;
36923 -@@ -421,6 +441,31 @@ static int dup_mmap(struct mm_struct *mm
36924 +@@ -422,6 +442,31 @@ static int dup_mmap(struct mm_struct *mm
36925 if (retval)
36926 goto out;
36927 }
36928 @@ -63271,7 +63103,7 @@ diff -urNp linux-3.0.9/kernel/fork.c linux-3.0.9/kernel/fork.c
36929 /* a new mm has just been created */
36930 arch_dup_mmap(oldmm, mm);
36931 retval = 0;
36932 -@@ -429,14 +474,6 @@ out:
36933 +@@ -430,14 +475,6 @@ out:
36934 flush_tlb_mm(oldmm);
36935 up_write(&oldmm->mmap_sem);
36936 return retval;
36937 @@ -63285,8 +63117,8 @@ diff -urNp linux-3.0.9/kernel/fork.c linux-3.0.9/kernel/fork.c
36938 - goto out;
36939 }
36940
36941 - static inline int mm_alloc_pgd(struct mm_struct * mm)
36942 -@@ -836,13 +873,14 @@ static int copy_fs(unsigned long clone_f
36943 + static inline int mm_alloc_pgd(struct mm_struct *mm)
36944 +@@ -837,13 +874,14 @@ static int copy_fs(unsigned long clone_f
36945 spin_unlock(&fs->lock);
36946 return -EAGAIN;
36947 }
36948 @@ -63302,7 +63134,7 @@ diff -urNp linux-3.0.9/kernel/fork.c linux-3.0.9/kernel/fork.c
36949 return 0;
36950 }
36951
36952 -@@ -1104,12 +1142,16 @@ static struct task_struct *copy_process(
36953 +@@ -1105,6 +1143,9 @@ static struct task_struct *copy_process(
36954 DEBUG_LOCKS_WARN_ON(!p->softirqs_enabled);
36955 #endif
36956 retval = -EAGAIN;
36957 @@ -63311,17 +63143,8 @@ diff -urNp linux-3.0.9/kernel/fork.c linux-3.0.9/kernel/fork.c
36958 +
36959 if (atomic_read(&p->real_cred->user->processes) >=
36960 task_rlimit(p, RLIMIT_NPROC)) {
36961 -- if (!capable(CAP_SYS_ADMIN) && !capable(CAP_SYS_RESOURCE) &&
36962 -- p->real_cred->user != INIT_USER)
36963 -+ if (p->real_cred->user != INIT_USER &&
36964 -+ !capable(CAP_SYS_ADMIN) && !capable(CAP_SYS_RESOURCE))
36965 - goto bad_fork_free;
36966 - }
36967 -+ current->flags &= ~PF_NPROC_EXCEEDED;
36968 -
36969 - retval = copy_creds(p, clone_flags);
36970 - if (retval < 0)
36971 -@@ -1250,6 +1292,8 @@ static struct task_struct *copy_process(
36972 + if (!capable(CAP_SYS_ADMIN) && !capable(CAP_SYS_RESOURCE) &&
36973 +@@ -1264,6 +1305,8 @@ static struct task_struct *copy_process(
36974 if (clone_flags & CLONE_THREAD)
36975 p->tgid = current->tgid;
36976
36977 @@ -63330,7 +63153,7 @@ diff -urNp linux-3.0.9/kernel/fork.c linux-3.0.9/kernel/fork.c
36978 p->set_child_tid = (clone_flags & CLONE_CHILD_SETTID) ? child_tidptr : NULL;
36979 /*
36980 * Clear TID on mm_release()?
36981 -@@ -1414,6 +1458,8 @@ bad_fork_cleanup_count:
36982 +@@ -1428,6 +1471,8 @@ bad_fork_cleanup_count:
36983 bad_fork_free:
36984 free_task(p);
36985 fork_out:
36986 @@ -63339,7 +63162,7 @@ diff -urNp linux-3.0.9/kernel/fork.c linux-3.0.9/kernel/fork.c
36987 return ERR_PTR(retval);
36988 }
36989
36990 -@@ -1502,6 +1548,8 @@ long do_fork(unsigned long clone_flags,
36991 +@@ -1528,6 +1573,8 @@ long do_fork(unsigned long clone_flags,
36992 if (clone_flags & CLONE_PARENT_SETTID)
36993 put_user(nr, parent_tidptr);
36994
36995 @@ -63348,7 +63171,7 @@ diff -urNp linux-3.0.9/kernel/fork.c linux-3.0.9/kernel/fork.c
36996 if (clone_flags & CLONE_VFORK) {
36997 p->vfork_done = &vfork;
36998 init_completion(&vfork);
36999 -@@ -1610,7 +1658,7 @@ static int unshare_fs(unsigned long unsh
37000 +@@ -1637,7 +1684,7 @@ static int unshare_fs(unsigned long unsh
37001 return 0;
37002
37003 /* don't need lock here; in the worst case we'll do useless copy */
37004 @@ -63357,7 +63180,7 @@ diff -urNp linux-3.0.9/kernel/fork.c linux-3.0.9/kernel/fork.c
37005 return 0;
37006
37007 *new_fsp = copy_fs_struct(fs);
37008 -@@ -1697,7 +1745,8 @@ SYSCALL_DEFINE1(unshare, unsigned long,
37009 +@@ -1726,7 +1773,8 @@ SYSCALL_DEFINE1(unshare, unsigned long,
37010 fs = current->fs;
37011 spin_lock(&fs->lock);
37012 current->fs = new_fs;
37013 @@ -63367,9 +63190,9 @@ diff -urNp linux-3.0.9/kernel/fork.c linux-3.0.9/kernel/fork.c
37014 new_fs = NULL;
37015 else
37016 new_fs = fs;
37017 -diff -urNp linux-3.0.9/kernel/futex.c linux-3.0.9/kernel/futex.c
37018 ---- linux-3.0.9/kernel/futex.c 2011-11-11 13:12:24.000000000 -0500
37019 -+++ linux-3.0.9/kernel/futex.c 2011-11-15 20:03:00.000000000 -0500
37020 +diff -urNp linux-3.1.1/kernel/futex.c linux-3.1.1/kernel/futex.c
37021 +--- linux-3.1.1/kernel/futex.c 2011-11-11 15:19:27.000000000 -0500
37022 ++++ linux-3.1.1/kernel/futex.c 2011-11-16 18:40:44.000000000 -0500
37023 @@ -54,6 +54,7 @@
37024 #include <linux/mount.h>
37025 #include <linux/pagemap.h>
37026 @@ -63456,10 +63279,10 @@ diff -urNp linux-3.0.9/kernel/futex.c linux-3.0.9/kernel/futex.c
37027 + set_fs(oldfs);
37028
37029 for (i = 0; i < ARRAY_SIZE(futex_queues); i++) {
37030 - plist_head_init(&futex_queues[i].chain, &futex_queues[i].lock);
37031 -diff -urNp linux-3.0.9/kernel/futex_compat.c linux-3.0.9/kernel/futex_compat.c
37032 ---- linux-3.0.9/kernel/futex_compat.c 2011-11-11 13:12:24.000000000 -0500
37033 -+++ linux-3.0.9/kernel/futex_compat.c 2011-11-15 20:03:00.000000000 -0500
37034 + plist_head_init(&futex_queues[i].chain);
37035 +diff -urNp linux-3.1.1/kernel/futex_compat.c linux-3.1.1/kernel/futex_compat.c
37036 +--- linux-3.1.1/kernel/futex_compat.c 2011-11-11 15:19:27.000000000 -0500
37037 ++++ linux-3.1.1/kernel/futex_compat.c 2011-11-16 18:40:44.000000000 -0500
37038 @@ -10,6 +10,7 @@
37039 #include <linux/compat.h>
37040 #include <linux/nsproxy.h>
37041 @@ -63499,9 +63322,9 @@ diff -urNp linux-3.0.9/kernel/futex_compat.c linux-3.0.9/kernel/futex_compat.c
37042 head = p->compat_robust_list;
37043 rcu_read_unlock();
37044 }
37045 -diff -urNp linux-3.0.9/kernel/gcov/base.c linux-3.0.9/kernel/gcov/base.c
37046 ---- linux-3.0.9/kernel/gcov/base.c 2011-11-11 13:12:24.000000000 -0500
37047 -+++ linux-3.0.9/kernel/gcov/base.c 2011-11-15 20:03:00.000000000 -0500
37048 +diff -urNp linux-3.1.1/kernel/gcov/base.c linux-3.1.1/kernel/gcov/base.c
37049 +--- linux-3.1.1/kernel/gcov/base.c 2011-11-11 15:19:27.000000000 -0500
37050 ++++ linux-3.1.1/kernel/gcov/base.c 2011-11-16 18:39:08.000000000 -0500
37051 @@ -102,11 +102,6 @@ void gcov_enable_events(void)
37052 }
37053
37054 @@ -63523,9 +63346,9 @@ diff -urNp linux-3.0.9/kernel/gcov/base.c linux-3.0.9/kernel/gcov/base.c
37055 if (prev)
37056 prev->next = info->next;
37057 else
37058 -diff -urNp linux-3.0.9/kernel/hrtimer.c linux-3.0.9/kernel/hrtimer.c
37059 ---- linux-3.0.9/kernel/hrtimer.c 2011-11-11 13:12:24.000000000 -0500
37060 -+++ linux-3.0.9/kernel/hrtimer.c 2011-11-15 20:03:00.000000000 -0500
37061 +diff -urNp linux-3.1.1/kernel/hrtimer.c linux-3.1.1/kernel/hrtimer.c
37062 +--- linux-3.1.1/kernel/hrtimer.c 2011-11-11 15:19:27.000000000 -0500
37063 ++++ linux-3.1.1/kernel/hrtimer.c 2011-11-16 18:39:08.000000000 -0500
37064 @@ -1391,7 +1391,7 @@ void hrtimer_peek_ahead_timers(void)
37065 local_irq_restore(flags);
37066 }
37067 @@ -63535,9 +63358,9 @@ diff -urNp linux-3.0.9/kernel/hrtimer.c linux-3.0.9/kernel/hrtimer.c
37068 {
37069 hrtimer_peek_ahead_timers();
37070 }
37071 -diff -urNp linux-3.0.9/kernel/jump_label.c linux-3.0.9/kernel/jump_label.c
37072 ---- linux-3.0.9/kernel/jump_label.c 2011-11-11 13:12:24.000000000 -0500
37073 -+++ linux-3.0.9/kernel/jump_label.c 2011-11-15 20:03:00.000000000 -0500
37074 +diff -urNp linux-3.1.1/kernel/jump_label.c linux-3.1.1/kernel/jump_label.c
37075 +--- linux-3.1.1/kernel/jump_label.c 2011-11-11 15:19:27.000000000 -0500
37076 ++++ linux-3.1.1/kernel/jump_label.c 2011-11-16 18:39:08.000000000 -0500
37077 @@ -55,7 +55,9 @@ jump_label_sort_entries(struct jump_entr
37078
37079 size = (((unsigned long)stop - (unsigned long)start)
37080 @@ -63561,9 +63384,9 @@ diff -urNp linux-3.0.9/kernel/jump_label.c linux-3.0.9/kernel/jump_label.c
37081 }
37082
37083 static int
37084 -diff -urNp linux-3.0.9/kernel/kallsyms.c linux-3.0.9/kernel/kallsyms.c
37085 ---- linux-3.0.9/kernel/kallsyms.c 2011-11-11 13:12:24.000000000 -0500
37086 -+++ linux-3.0.9/kernel/kallsyms.c 2011-11-15 20:03:00.000000000 -0500
37087 +diff -urNp linux-3.1.1/kernel/kallsyms.c linux-3.1.1/kernel/kallsyms.c
37088 +--- linux-3.1.1/kernel/kallsyms.c 2011-11-11 15:19:27.000000000 -0500
37089 ++++ linux-3.1.1/kernel/kallsyms.c 2011-11-16 18:40:44.000000000 -0500
37090 @@ -11,6 +11,9 @@
37091 * Changed the compression method from stem compression to "table lookup"
37092 * compression (see scripts/kallsyms.c for a more complete description)
37093 @@ -63666,9 +63489,9 @@ diff -urNp linux-3.0.9/kernel/kallsyms.c linux-3.0.9/kernel/kallsyms.c
37094 if (!iter)
37095 return -ENOMEM;
37096 reset_iter(iter, 0);
37097 -diff -urNp linux-3.0.9/kernel/kexec.c linux-3.0.9/kernel/kexec.c
37098 ---- linux-3.0.9/kernel/kexec.c 2011-11-11 13:12:24.000000000 -0500
37099 -+++ linux-3.0.9/kernel/kexec.c 2011-11-15 20:03:00.000000000 -0500
37100 +diff -urNp linux-3.1.1/kernel/kexec.c linux-3.1.1/kernel/kexec.c
37101 +--- linux-3.1.1/kernel/kexec.c 2011-11-11 15:19:27.000000000 -0500
37102 ++++ linux-3.1.1/kernel/kexec.c 2011-11-16 18:39:08.000000000 -0500
37103 @@ -1033,7 +1033,8 @@ asmlinkage long compat_sys_kexec_load(un
37104 unsigned long flags)
37105 {
37106 @@ -63679,9 +63502,9 @@ diff -urNp linux-3.0.9/kernel/kexec.c linux-3.0.9/kernel/kexec.c
37107 unsigned long i, result;
37108
37109 /* Don't allow clients that don't understand the native
37110 -diff -urNp linux-3.0.9/kernel/kmod.c linux-3.0.9/kernel/kmod.c
37111 ---- linux-3.0.9/kernel/kmod.c 2011-11-11 13:12:24.000000000 -0500
37112 -+++ linux-3.0.9/kernel/kmod.c 2011-11-15 20:03:00.000000000 -0500
37113 +diff -urNp linux-3.1.1/kernel/kmod.c linux-3.1.1/kernel/kmod.c
37114 +--- linux-3.1.1/kernel/kmod.c 2011-11-11 15:19:27.000000000 -0500
37115 ++++ linux-3.1.1/kernel/kmod.c 2011-11-16 18:40:44.000000000 -0500
37116 @@ -73,13 +73,12 @@ char modprobe_path[KMOD_PATH_LEN] = "/sb
37117 * If module auto-loading support is disabled then this function
37118 * becomes a no-operation.
37119 @@ -63787,9 +63610,9 @@ diff -urNp linux-3.0.9/kernel/kmod.c linux-3.0.9/kernel/kmod.c
37120
37121 /*
37122 * If ret is 0, either ____call_usermodehelper failed and the
37123 -diff -urNp linux-3.0.9/kernel/kprobes.c linux-3.0.9/kernel/kprobes.c
37124 ---- linux-3.0.9/kernel/kprobes.c 2011-11-11 13:12:24.000000000 -0500
37125 -+++ linux-3.0.9/kernel/kprobes.c 2011-11-15 20:03:00.000000000 -0500
37126 +diff -urNp linux-3.1.1/kernel/kprobes.c linux-3.1.1/kernel/kprobes.c
37127 +--- linux-3.1.1/kernel/kprobes.c 2011-11-11 15:19:27.000000000 -0500
37128 ++++ linux-3.1.1/kernel/kprobes.c 2011-11-16 18:39:08.000000000 -0500
37129 @@ -185,7 +185,7 @@ static kprobe_opcode_t __kprobes *__get_
37130 * kernel image and loaded module images reside. This is required
37131 * so x86_64 can correctly handle the %rip-relative fixups.
37132 @@ -63808,7 +63631,7 @@ diff -urNp linux-3.0.9/kernel/kprobes.c linux-3.0.9/kernel/kprobes.c
37133 kfree(kip);
37134 }
37135 return 1;
37136 -@@ -1936,7 +1936,7 @@ static int __init init_kprobes(void)
37137 +@@ -1949,7 +1949,7 @@ static int __init init_kprobes(void)
37138 {
37139 int i, err = 0;
37140 unsigned long offset = 0, size = 0;
37141 @@ -63817,7 +63640,7 @@ diff -urNp linux-3.0.9/kernel/kprobes.c linux-3.0.9/kernel/kprobes.c
37142 const char *symbol_name;
37143 void *addr;
37144 struct kprobe_blackpoint *kb;
37145 -@@ -2062,7 +2062,7 @@ static int __kprobes show_kprobe_addr(st
37146 +@@ -2075,7 +2075,7 @@ static int __kprobes show_kprobe_addr(st
37147 const char *sym = NULL;
37148 unsigned int i = *(loff_t *) v;
37149 unsigned long offset = 0;
37150 @@ -63826,9 +63649,9 @@ diff -urNp linux-3.0.9/kernel/kprobes.c linux-3.0.9/kernel/kprobes.c
37151
37152 head = &kprobe_table[i];
37153 preempt_disable();
37154 -diff -urNp linux-3.0.9/kernel/lockdep.c linux-3.0.9/kernel/lockdep.c
37155 ---- linux-3.0.9/kernel/lockdep.c 2011-11-11 13:12:24.000000000 -0500
37156 -+++ linux-3.0.9/kernel/lockdep.c 2011-11-15 20:03:00.000000000 -0500
37157 +diff -urNp linux-3.1.1/kernel/lockdep.c linux-3.1.1/kernel/lockdep.c
37158 +--- linux-3.1.1/kernel/lockdep.c 2011-11-11 15:19:27.000000000 -0500
37159 ++++ linux-3.1.1/kernel/lockdep.c 2011-11-16 18:39:08.000000000 -0500
37160 @@ -583,6 +583,10 @@ static int static_obj(void *obj)
37161 end = (unsigned long) &_end,
37162 addr = (unsigned long) obj;
37163 @@ -63848,7 +63671,7 @@ diff -urNp linux-3.0.9/kernel/lockdep.c linux-3.0.9/kernel/lockdep.c
37164 printk("the code is fine but needs lockdep annotation.\n");
37165 printk("turning off the locking correctness validator.\n");
37166 dump_stack();
37167 -@@ -2936,7 +2941,7 @@ static int __lock_acquire(struct lockdep
37168 +@@ -2948,7 +2953,7 @@ static int __lock_acquire(struct lockdep
37169 if (!class)
37170 return 0;
37171 }
37172 @@ -63857,9 +63680,9 @@ diff -urNp linux-3.0.9/kernel/lockdep.c linux-3.0.9/kernel/lockdep.c
37173 if (very_verbose(class)) {
37174 printk("\nacquire class [%p] %s", class->key, class->name);
37175 if (class->name_version > 1)
37176 -diff -urNp linux-3.0.9/kernel/lockdep_proc.c linux-3.0.9/kernel/lockdep_proc.c
37177 ---- linux-3.0.9/kernel/lockdep_proc.c 2011-11-11 13:12:24.000000000 -0500
37178 -+++ linux-3.0.9/kernel/lockdep_proc.c 2011-11-15 20:03:00.000000000 -0500
37179 +diff -urNp linux-3.1.1/kernel/lockdep_proc.c linux-3.1.1/kernel/lockdep_proc.c
37180 +--- linux-3.1.1/kernel/lockdep_proc.c 2011-11-11 15:19:27.000000000 -0500
37181 ++++ linux-3.1.1/kernel/lockdep_proc.c 2011-11-16 18:39:08.000000000 -0500
37182 @@ -39,7 +39,7 @@ static void l_stop(struct seq_file *m, v
37183
37184 static void print_name(struct seq_file *m, struct lock_class *class)
37185 @@ -63869,9 +63692,9 @@ diff -urNp linux-3.0.9/kernel/lockdep_proc.c linux-3.0.9/kernel/lockdep_proc.c
37186 const char *name = class->name;
37187
37188 if (!name) {
37189 -diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37190 ---- linux-3.0.9/kernel/module.c 2011-11-11 13:12:24.000000000 -0500
37191 -+++ linux-3.0.9/kernel/module.c 2011-11-15 20:03:00.000000000 -0500
37192 +diff -urNp linux-3.1.1/kernel/module.c linux-3.1.1/kernel/module.c
37193 +--- linux-3.1.1/kernel/module.c 2011-11-11 15:19:27.000000000 -0500
37194 ++++ linux-3.1.1/kernel/module.c 2011-11-16 18:40:44.000000000 -0500
37195 @@ -58,6 +58,7 @@
37196 #include <linux/jump_label.h>
37197 #include <linux/pfn.h>
37198 @@ -63917,7 +63740,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37199 printk(KERN_WARNING "%s: per-cpu alignment %li > %li\n",
37200 mod->name, align, PAGE_SIZE);
37201 align = PAGE_SIZE;
37202 -@@ -1166,7 +1168,7 @@ resolve_symbol_wait(struct module *mod,
37203 +@@ -1183,7 +1185,7 @@ resolve_symbol_wait(struct module *mod,
37204 */
37205 #ifdef CONFIG_SYSFS
37206
37207 @@ -63926,7 +63749,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37208 static inline bool sect_empty(const Elf_Shdr *sect)
37209 {
37210 return !(sect->sh_flags & SHF_ALLOC) || sect->sh_size == 0;
37211 -@@ -1632,21 +1634,21 @@ static void set_section_ro_nx(void *base
37212 +@@ -1649,21 +1651,21 @@ static void set_section_ro_nx(void *base
37213
37214 static void unset_module_core_ro_nx(struct module *mod)
37215 {
37216 @@ -63956,7 +63779,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37217 set_memory_rw);
37218 }
37219
37220 -@@ -1657,14 +1659,14 @@ void set_all_modules_text_rw(void)
37221 +@@ -1674,14 +1676,14 @@ void set_all_modules_text_rw(void)
37222
37223 mutex_lock(&module_mutex);
37224 list_for_each_entry_rcu(mod, &modules, list) {
37225 @@ -63977,7 +63800,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37226 set_memory_rw);
37227 }
37228 }
37229 -@@ -1678,14 +1680,14 @@ void set_all_modules_text_ro(void)
37230 +@@ -1695,14 +1697,14 @@ void set_all_modules_text_ro(void)
37231
37232 mutex_lock(&module_mutex);
37233 list_for_each_entry_rcu(mod, &modules, list) {
37234 @@ -63998,7 +63821,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37235 set_memory_ro);
37236 }
37237 }
37238 -@@ -1722,16 +1724,19 @@ static void free_module(struct module *m
37239 +@@ -1748,16 +1750,19 @@ static void free_module(struct module *m
37240
37241 /* This may be NULL, but that's OK */
37242 unset_module_init_ro_nx(mod);
37243 @@ -64021,7 +63844,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37244
37245 #ifdef CONFIG_MPU
37246 update_protections(current->mm);
37247 -@@ -1800,10 +1805,31 @@ static int simplify_symbols(struct modul
37248 +@@ -1826,10 +1831,31 @@ static int simplify_symbols(struct modul
37249 unsigned int i;
37250 int ret = 0;
37251 const struct kernel_symbol *ksym;
37252 @@ -64053,7 +63876,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37253 switch (sym[i].st_shndx) {
37254 case SHN_COMMON:
37255 /* We compiled with -fno-common. These are not
37256 -@@ -1824,7 +1850,9 @@ static int simplify_symbols(struct modul
37257 +@@ -1850,7 +1876,9 @@ static int simplify_symbols(struct modul
37258 ksym = resolve_symbol_wait(mod, info, name);
37259 /* Ok if resolved. */
37260 if (ksym && !IS_ERR(ksym)) {
37261 @@ -64063,7 +63886,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37262 break;
37263 }
37264
37265 -@@ -1843,11 +1871,20 @@ static int simplify_symbols(struct modul
37266 +@@ -1869,11 +1897,20 @@ static int simplify_symbols(struct modul
37267 secbase = (unsigned long)mod_percpu(mod);
37268 else
37269 secbase = info->sechdrs[sym[i].st_shndx].sh_addr;
37270 @@ -64084,7 +63907,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37271 return ret;
37272 }
37273
37274 -@@ -1931,22 +1968,12 @@ static void layout_sections(struct modul
37275 +@@ -1977,22 +2014,12 @@ static void layout_sections(struct modul
37276 || s->sh_entsize != ~0UL
37277 || strstarts(sname, ".init"))
37278 continue;
37279 @@ -64111,7 +63934,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37280 }
37281
37282 DEBUGP("Init section allocation order:\n");
37283 -@@ -1960,23 +1987,13 @@ static void layout_sections(struct modul
37284 +@@ -2006,23 +2033,13 @@ static void layout_sections(struct modul
37285 || s->sh_entsize != ~0UL
37286 || !strstarts(sname, ".init"))
37287 continue;
37288 @@ -64140,7 +63963,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37289 }
37290 }
37291
37292 -@@ -2141,7 +2158,7 @@ static void layout_symtab(struct module
37293 +@@ -2187,7 +2204,7 @@ static void layout_symtab(struct module
37294
37295 /* Put symbol section at end of init part of module. */
37296 symsect->sh_flags |= SHF_ALLOC;
37297 @@ -64149,7 +63972,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37298 info->index.sym) | INIT_OFFSET_MASK;
37299 DEBUGP("\t%s\n", info->secstrings + symsect->sh_name);
37300
37301 -@@ -2158,19 +2175,19 @@ static void layout_symtab(struct module
37302 +@@ -2204,19 +2221,19 @@ static void layout_symtab(struct module
37303 }
37304
37305 /* Append room for core symbols at end of core part. */
37306 @@ -64174,7 +63997,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37307 }
37308
37309 static void add_kallsyms(struct module *mod, const struct load_info *info)
37310 -@@ -2186,11 +2203,13 @@ static void add_kallsyms(struct module *
37311 +@@ -2232,11 +2249,13 @@ static void add_kallsyms(struct module *
37312 /* Make sure we get permanent strtab: don't use info->strtab. */
37313 mod->strtab = (void *)info->sechdrs[info->index.str].sh_addr;
37314
37315 @@ -64189,7 +64012,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37316 src = mod->symtab;
37317 *dst = *src;
37318 for (ndst = i = 1; i < mod->num_symtab; ++i, ++src) {
37319 -@@ -2203,10 +2222,12 @@ static void add_kallsyms(struct module *
37320 +@@ -2249,10 +2268,12 @@ static void add_kallsyms(struct module *
37321 }
37322 mod->core_num_syms = ndst;
37323
37324 @@ -64203,8 +64026,8 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37325 }
37326 #else
37327 static inline void layout_symtab(struct module *mod, struct load_info *info)
37328 -@@ -2235,17 +2256,33 @@ static void dynamic_debug_remove(struct
37329 - ddebug_remove_module(debug->modname);
37330 +@@ -2286,17 +2307,33 @@ void * __weak module_alloc(unsigned long
37331 + return size == 0 ? NULL : vmalloc_exec(size);
37332 }
37333
37334 -static void *module_alloc_update_bounds(unsigned long size)
37335 @@ -64242,7 +64065,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37336 mutex_unlock(&module_mutex);
37337 }
37338 return ret;
37339 -@@ -2538,7 +2575,7 @@ static int move_module(struct module *mo
37340 +@@ -2589,7 +2626,7 @@ static int move_module(struct module *mo
37341 void *ptr;
37342
37343 /* Do the allocs. */
37344 @@ -64251,7 +64074,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37345 /*
37346 * The pointer to this block is stored in the module structure
37347 * which is inside the block. Just mark it as not being a
37348 -@@ -2548,23 +2585,50 @@ static int move_module(struct module *mo
37349 +@@ -2599,23 +2636,50 @@ static int move_module(struct module *mo
37350 if (!ptr)
37351 return -ENOMEM;
37352
37353 @@ -64310,7 +64133,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37354
37355 /* Transfer each section which specifies SHF_ALLOC */
37356 DEBUGP("final section addresses:\n");
37357 -@@ -2575,16 +2639,45 @@ static int move_module(struct module *mo
37358 +@@ -2626,16 +2690,45 @@ static int move_module(struct module *mo
37359 if (!(shdr->sh_flags & SHF_ALLOC))
37360 continue;
37361
37362 @@ -64363,7 +64186,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37363 DEBUGP("\t0x%lx %s\n",
37364 shdr->sh_addr, info->secstrings + shdr->sh_name);
37365 }
37366 -@@ -2635,12 +2728,12 @@ static void flush_module_icache(const st
37367 +@@ -2686,12 +2779,12 @@ static void flush_module_icache(const st
37368 * Do it before processing of module parameters, so the module
37369 * can provide parameter accessor functions of its own.
37370 */
37371 @@ -64382,7 +64205,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37372
37373 set_fs(old_fs);
37374 }
37375 -@@ -2712,8 +2805,10 @@ static void module_deallocate(struct mod
37376 +@@ -2771,8 +2864,10 @@ static void module_deallocate(struct mod
37377 {
37378 kfree(info->strmap);
37379 percpu_modfree(mod);
37380 @@ -64394,8 +64217,8 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37381 + module_free(mod, mod->module_core_rw);
37382 }
37383
37384 - static int post_relocation(struct module *mod, const struct load_info *info)
37385 -@@ -2770,9 +2865,38 @@ static struct module *load_module(void _
37386 + int __weak module_finalize(const Elf_Ehdr *hdr,
37387 +@@ -2836,9 +2931,38 @@ static struct module *load_module(void _
37388 if (err)
37389 goto free_unload;
37390
37391 @@ -64434,7 +64257,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37392 /* Fix up syms, so that st_value is a pointer to location. */
37393 err = simplify_symbols(mod, &info);
37394 if (err < 0)
37395 -@@ -2788,13 +2912,6 @@ static struct module *load_module(void _
37396 +@@ -2854,13 +2978,6 @@ static struct module *load_module(void _
37397
37398 flush_module_icache(mod);
37399
37400 @@ -64448,7 +64271,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37401 /* Mark state as coming so strong_try_module_get() ignores us. */
37402 mod->state = MODULE_STATE_COMING;
37403
37404 -@@ -2854,11 +2971,10 @@ static struct module *load_module(void _
37405 +@@ -2920,11 +3037,10 @@ static struct module *load_module(void _
37406 unlock:
37407 mutex_unlock(&module_mutex);
37408 synchronize_sched();
37409 @@ -64461,7 +64284,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37410 free_unload:
37411 module_unload_free(mod);
37412 free_module:
37413 -@@ -2899,16 +3015,16 @@ SYSCALL_DEFINE3(init_module, void __user
37414 +@@ -2965,16 +3081,16 @@ SYSCALL_DEFINE3(init_module, void __user
37415 MODULE_STATE_COMING, mod);
37416
37417 /* Set RO and NX regions for core */
37418 @@ -64486,7 +64309,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37419
37420 do_mod_ctors(mod);
37421 /* Start the module */
37422 -@@ -2954,11 +3070,12 @@ SYSCALL_DEFINE3(init_module, void __user
37423 +@@ -3020,11 +3136,12 @@ SYSCALL_DEFINE3(init_module, void __user
37424 mod->strtab = mod->core_strtab;
37425 #endif
37426 unset_module_init_ro_nx(mod);
37427 @@ -64504,7 +64327,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37428 mutex_unlock(&module_mutex);
37429
37430 return 0;
37431 -@@ -2989,10 +3106,16 @@ static const char *get_ksymbol(struct mo
37432 +@@ -3055,10 +3172,16 @@ static const char *get_ksymbol(struct mo
37433 unsigned long nextval;
37434
37435 /* At worse, next value is at end of module */
37436 @@ -64524,7 +64347,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37437
37438 /* Scan for closest preceding symbol, and next symbol. (ELF
37439 starts real symbols at 1). */
37440 -@@ -3238,7 +3361,7 @@ static int m_show(struct seq_file *m, vo
37441 +@@ -3304,7 +3427,7 @@ static int m_show(struct seq_file *m, vo
37442 char buf[8];
37443
37444 seq_printf(m, "%s %u",
37445 @@ -64533,7 +64356,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37446 print_unload_info(m, mod);
37447
37448 /* Informative for users. */
37449 -@@ -3247,7 +3370,7 @@ static int m_show(struct seq_file *m, vo
37450 +@@ -3313,7 +3436,7 @@ static int m_show(struct seq_file *m, vo
37451 mod->state == MODULE_STATE_COMING ? "Loading":
37452 "Live");
37453 /* Used by oprofile and other similar tools. */
37454 @@ -64542,7 +64365,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37455
37456 /* Taints info */
37457 if (mod->taints)
37458 -@@ -3283,7 +3406,17 @@ static const struct file_operations proc
37459 +@@ -3349,7 +3472,17 @@ static const struct file_operations proc
37460
37461 static int __init proc_modules_init(void)
37462 {
37463 @@ -64560,7 +64383,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37464 return 0;
37465 }
37466 module_init(proc_modules_init);
37467 -@@ -3342,12 +3475,12 @@ struct module *__module_address(unsigned
37468 +@@ -3408,12 +3541,12 @@ struct module *__module_address(unsigned
37469 {
37470 struct module *mod;
37471
37472 @@ -64576,7 +64399,7 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37473 return mod;
37474 return NULL;
37475 }
37476 -@@ -3381,11 +3514,20 @@ bool is_module_text_address(unsigned lon
37477 +@@ -3447,11 +3580,20 @@ bool is_module_text_address(unsigned lon
37478 */
37479 struct module *__module_text_address(unsigned long addr)
37480 {
37481 @@ -64600,9 +64423,9 @@ diff -urNp linux-3.0.9/kernel/module.c linux-3.0.9/kernel/module.c
37482 mod = NULL;
37483 }
37484 return mod;
37485 -diff -urNp linux-3.0.9/kernel/mutex.c linux-3.0.9/kernel/mutex.c
37486 ---- linux-3.0.9/kernel/mutex.c 2011-11-11 13:12:24.000000000 -0500
37487 -+++ linux-3.0.9/kernel/mutex.c 2011-11-15 20:03:00.000000000 -0500
37488 +diff -urNp linux-3.1.1/kernel/mutex.c linux-3.1.1/kernel/mutex.c
37489 +--- linux-3.1.1/kernel/mutex.c 2011-11-11 15:19:27.000000000 -0500
37490 ++++ linux-3.1.1/kernel/mutex.c 2011-11-16 18:39:08.000000000 -0500
37491 @@ -198,7 +198,7 @@ __mutex_lock_common(struct mutex *lock,
37492 spin_lock_mutex(&lock->wait_lock, flags);
37493
37494 @@ -64631,9 +64454,9 @@ diff -urNp linux-3.0.9/kernel/mutex.c linux-3.0.9/kernel/mutex.c
37495 mutex_set_owner(lock);
37496
37497 /* set it to 0 if there are no waiters left: */
37498 -diff -urNp linux-3.0.9/kernel/mutex-debug.c linux-3.0.9/kernel/mutex-debug.c
37499 ---- linux-3.0.9/kernel/mutex-debug.c 2011-11-11 13:12:24.000000000 -0500
37500 -+++ linux-3.0.9/kernel/mutex-debug.c 2011-11-15 20:03:00.000000000 -0500
37501 +diff -urNp linux-3.1.1/kernel/mutex-debug.c linux-3.1.1/kernel/mutex-debug.c
37502 +--- linux-3.1.1/kernel/mutex-debug.c 2011-11-11 15:19:27.000000000 -0500
37503 ++++ linux-3.1.1/kernel/mutex-debug.c 2011-11-16 18:39:08.000000000 -0500
37504 @@ -49,21 +49,21 @@ void debug_mutex_free_waiter(struct mute
37505 }
37506
37507 @@ -64662,9 +64485,9 @@ diff -urNp linux-3.0.9/kernel/mutex-debug.c linux-3.0.9/kernel/mutex-debug.c
37508
37509 list_del_init(&waiter->list);
37510 waiter->task = NULL;
37511 -diff -urNp linux-3.0.9/kernel/mutex-debug.h linux-3.0.9/kernel/mutex-debug.h
37512 ---- linux-3.0.9/kernel/mutex-debug.h 2011-11-11 13:12:24.000000000 -0500
37513 -+++ linux-3.0.9/kernel/mutex-debug.h 2011-11-15 20:03:00.000000000 -0500
37514 +diff -urNp linux-3.1.1/kernel/mutex-debug.h linux-3.1.1/kernel/mutex-debug.h
37515 +--- linux-3.1.1/kernel/mutex-debug.h 2011-11-11 15:19:27.000000000 -0500
37516 ++++ linux-3.1.1/kernel/mutex-debug.h 2011-11-16 18:39:08.000000000 -0500
37517 @@ -20,9 +20,9 @@ extern void debug_mutex_wake_waiter(stru
37518 extern void debug_mutex_free_waiter(struct mutex_waiter *waiter);
37519 extern void debug_mutex_add_waiter(struct mutex *lock,
37520 @@ -64677,9 +64500,9 @@ diff -urNp linux-3.0.9/kernel/mutex-debug.h linux-3.0.9/kernel/mutex-debug.h
37521 extern void debug_mutex_unlock(struct mutex *lock);
37522 extern void debug_mutex_init(struct mutex *lock, const char *name,
37523 struct lock_class_key *key);
37524 -diff -urNp linux-3.0.9/kernel/padata.c linux-3.0.9/kernel/padata.c
37525 ---- linux-3.0.9/kernel/padata.c 2011-11-11 13:12:24.000000000 -0500
37526 -+++ linux-3.0.9/kernel/padata.c 2011-11-15 20:03:00.000000000 -0500
37527 +diff -urNp linux-3.1.1/kernel/padata.c linux-3.1.1/kernel/padata.c
37528 +--- linux-3.1.1/kernel/padata.c 2011-11-11 15:19:27.000000000 -0500
37529 ++++ linux-3.1.1/kernel/padata.c 2011-11-16 18:39:08.000000000 -0500
37530 @@ -132,10 +132,10 @@ int padata_do_parallel(struct padata_ins
37531 padata->pd = pd;
37532 padata->cb_cpu = cb_cpu;
37533 @@ -64703,10 +64526,10 @@ diff -urNp linux-3.0.9/kernel/padata.c linux-3.0.9/kernel/padata.c
37534 atomic_set(&pd->reorder_objects, 0);
37535 atomic_set(&pd->refcnt, 0);
37536 pd->pinst = pinst;
37537 -diff -urNp linux-3.0.9/kernel/panic.c linux-3.0.9/kernel/panic.c
37538 ---- linux-3.0.9/kernel/panic.c 2011-11-11 13:12:24.000000000 -0500
37539 -+++ linux-3.0.9/kernel/panic.c 2011-11-15 20:03:00.000000000 -0500
37540 -@@ -369,7 +369,7 @@ static void warn_slowpath_common(const c
37541 +diff -urNp linux-3.1.1/kernel/panic.c linux-3.1.1/kernel/panic.c
37542 +--- linux-3.1.1/kernel/panic.c 2011-11-11 15:19:27.000000000 -0500
37543 ++++ linux-3.1.1/kernel/panic.c 2011-11-16 18:40:44.000000000 -0500
37544 +@@ -371,7 +371,7 @@ static void warn_slowpath_common(const c
37545 const char *board;
37546
37547 printk(KERN_WARNING "------------[ cut here ]------------\n");
37548 @@ -64715,7 +64538,7 @@ diff -urNp linux-3.0.9/kernel/panic.c linux-3.0.9/kernel/panic.c
37549 board = dmi_get_system_info(DMI_PRODUCT_NAME);
37550 if (board)
37551 printk(KERN_WARNING "Hardware name: %s\n", board);
37552 -@@ -424,7 +424,8 @@ EXPORT_SYMBOL(warn_slowpath_null);
37553 +@@ -426,7 +426,8 @@ EXPORT_SYMBOL(warn_slowpath_null);
37554 */
37555 void __stack_chk_fail(void)
37556 {
37557 @@ -64725,9 +64548,9 @@ diff -urNp linux-3.0.9/kernel/panic.c linux-3.0.9/kernel/panic.c
37558 __builtin_return_address(0));
37559 }
37560 EXPORT_SYMBOL(__stack_chk_fail);
37561 -diff -urNp linux-3.0.9/kernel/pid.c linux-3.0.9/kernel/pid.c
37562 ---- linux-3.0.9/kernel/pid.c 2011-11-11 13:12:24.000000000 -0500
37563 -+++ linux-3.0.9/kernel/pid.c 2011-11-15 20:03:00.000000000 -0500
37564 +diff -urNp linux-3.1.1/kernel/pid.c linux-3.1.1/kernel/pid.c
37565 +--- linux-3.1.1/kernel/pid.c 2011-11-11 15:19:27.000000000 -0500
37566 ++++ linux-3.1.1/kernel/pid.c 2011-11-16 18:40:44.000000000 -0500
37567 @@ -33,6 +33,7 @@
37568 #include <linux/rculist.h>
37569 #include <linux/bootmem.h>
37570 @@ -64745,7 +64568,7 @@ diff -urNp linux-3.0.9/kernel/pid.c linux-3.0.9/kernel/pid.c
37571
37572 int pid_max_min = RESERVED_PIDS + 1;
37573 int pid_max_max = PID_MAX_LIMIT;
37574 -@@ -419,8 +420,15 @@ EXPORT_SYMBOL(pid_task);
37575 +@@ -418,8 +419,15 @@ EXPORT_SYMBOL(pid_task);
37576 */
37577 struct task_struct *find_task_by_pid_ns(pid_t nr, struct pid_namespace *ns)
37578 {
37579 @@ -64762,7 +64585,7 @@ diff -urNp linux-3.0.9/kernel/pid.c linux-3.0.9/kernel/pid.c
37580 }
37581
37582 struct task_struct *find_task_by_vpid(pid_t vnr)
37583 -@@ -428,6 +436,12 @@ struct task_struct *find_task_by_vpid(pi
37584 +@@ -427,6 +435,12 @@ struct task_struct *find_task_by_vpid(pi
37585 return find_task_by_pid_ns(vnr, current->nsproxy->pid_ns);
37586 }
37587
37588 @@ -64775,9 +64598,9 @@ diff -urNp linux-3.0.9/kernel/pid.c linux-3.0.9/kernel/pid.c
37589 struct pid *get_task_pid(struct task_struct *task, enum pid_type type)
37590 {
37591 struct pid *pid;
37592 -diff -urNp linux-3.0.9/kernel/posix-cpu-timers.c linux-3.0.9/kernel/posix-cpu-timers.c
37593 ---- linux-3.0.9/kernel/posix-cpu-timers.c 2011-11-11 13:12:24.000000000 -0500
37594 -+++ linux-3.0.9/kernel/posix-cpu-timers.c 2011-11-15 20:03:00.000000000 -0500
37595 +diff -urNp linux-3.1.1/kernel/posix-cpu-timers.c linux-3.1.1/kernel/posix-cpu-timers.c
37596 +--- linux-3.1.1/kernel/posix-cpu-timers.c 2011-11-11 15:19:27.000000000 -0500
37597 ++++ linux-3.1.1/kernel/posix-cpu-timers.c 2011-11-16 18:40:44.000000000 -0500
37598 @@ -6,6 +6,7 @@
37599 #include <linux/posix-timers.h>
37600 #include <linux/errno.h>
37601 @@ -64803,9 +64626,9 @@ diff -urNp linux-3.0.9/kernel/posix-cpu-timers.c linux-3.0.9/kernel/posix-cpu-ti
37602 .clock_getres = thread_cpu_clock_getres,
37603 .clock_get = thread_cpu_clock_get,
37604 .timer_create = thread_cpu_timer_create,
37605 -diff -urNp linux-3.0.9/kernel/posix-timers.c linux-3.0.9/kernel/posix-timers.c
37606 ---- linux-3.0.9/kernel/posix-timers.c 2011-11-11 13:12:24.000000000 -0500
37607 -+++ linux-3.0.9/kernel/posix-timers.c 2011-11-15 20:03:00.000000000 -0500
37608 +diff -urNp linux-3.1.1/kernel/posix-timers.c linux-3.1.1/kernel/posix-timers.c
37609 +--- linux-3.1.1/kernel/posix-timers.c 2011-11-11 15:19:27.000000000 -0500
37610 ++++ linux-3.1.1/kernel/posix-timers.c 2011-11-16 18:40:44.000000000 -0500
37611 @@ -43,6 +43,7 @@
37612 #include <linux/idr.h>
37613 #include <linux/posix-clock.h>
37614 @@ -64909,9 +64732,9 @@ diff -urNp linux-3.0.9/kernel/posix-timers.c linux-3.0.9/kernel/posix-timers.c
37615 return kc->clock_set(which_clock, &new_tp);
37616 }
37617
37618 -diff -urNp linux-3.0.9/kernel/power/poweroff.c linux-3.0.9/kernel/power/poweroff.c
37619 ---- linux-3.0.9/kernel/power/poweroff.c 2011-11-11 13:12:24.000000000 -0500
37620 -+++ linux-3.0.9/kernel/power/poweroff.c 2011-11-15 20:03:00.000000000 -0500
37621 +diff -urNp linux-3.1.1/kernel/power/poweroff.c linux-3.1.1/kernel/power/poweroff.c
37622 +--- linux-3.1.1/kernel/power/poweroff.c 2011-11-11 15:19:27.000000000 -0500
37623 ++++ linux-3.1.1/kernel/power/poweroff.c 2011-11-16 18:39:08.000000000 -0500
37624 @@ -37,7 +37,7 @@ static struct sysrq_key_op sysrq_powerof
37625 .enable_mask = SYSRQ_ENABLE_BOOT,
37626 };
37627 @@ -64921,9 +64744,9 @@ diff -urNp linux-3.0.9/kernel/power/poweroff.c linux-3.0.9/kernel/power/poweroff
37628 {
37629 register_sysrq_key('o', &sysrq_poweroff_op);
37630 return 0;
37631 -diff -urNp linux-3.0.9/kernel/power/process.c linux-3.0.9/kernel/power/process.c
37632 ---- linux-3.0.9/kernel/power/process.c 2011-11-11 13:12:24.000000000 -0500
37633 -+++ linux-3.0.9/kernel/power/process.c 2011-11-15 20:03:00.000000000 -0500
37634 +diff -urNp linux-3.1.1/kernel/power/process.c linux-3.1.1/kernel/power/process.c
37635 +--- linux-3.1.1/kernel/power/process.c 2011-11-11 15:19:27.000000000 -0500
37636 ++++ linux-3.1.1/kernel/power/process.c 2011-11-16 18:39:08.000000000 -0500
37637 @@ -41,6 +41,7 @@ static int try_to_freeze_tasks(bool sig_
37638 u64 elapsed_csecs64;
37639 unsigned int elapsed_csecs;
37640 @@ -64966,10 +64789,10 @@ diff -urNp linux-3.0.9/kernel/power/process.c linux-3.0.9/kernel/power/process.c
37641 break;
37642
37643 if (pm_wakeup_pending()) {
37644 -diff -urNp linux-3.0.9/kernel/printk.c linux-3.0.9/kernel/printk.c
37645 ---- linux-3.0.9/kernel/printk.c 2011-11-11 13:12:24.000000000 -0500
37646 -+++ linux-3.0.9/kernel/printk.c 2011-11-15 20:03:00.000000000 -0500
37647 -@@ -313,12 +313,17 @@ static int check_syslog_permissions(int
37648 +diff -urNp linux-3.1.1/kernel/printk.c linux-3.1.1/kernel/printk.c
37649 +--- linux-3.1.1/kernel/printk.c 2011-11-11 15:19:27.000000000 -0500
37650 ++++ linux-3.1.1/kernel/printk.c 2011-11-16 19:38:11.000000000 -0500
37651 +@@ -313,6 +313,11 @@ static int check_syslog_permissions(int
37652 if (from_file && type != SYSLOG_ACTION_OPEN)
37653 return 0;
37654
37655 @@ -64981,16 +64804,9 @@ diff -urNp linux-3.0.9/kernel/printk.c linux-3.0.9/kernel/printk.c
37656 if (syslog_action_restricted(type)) {
37657 if (capable(CAP_SYSLOG))
37658 return 0;
37659 - /* For historical reasons, accept CAP_SYS_ADMIN too, with a warning */
37660 - if (capable(CAP_SYS_ADMIN)) {
37661 -- WARN_ONCE(1, "Attempt to access syslog with CAP_SYS_ADMIN "
37662 -+ printk_once(KERN_WARNING "Attempt to access syslog with CAP_SYS_ADMIN "
37663 - "but no CAP_SYSLOG (deprecated).\n");
37664 - return 0;
37665 - }
37666 -diff -urNp linux-3.0.9/kernel/profile.c linux-3.0.9/kernel/profile.c
37667 ---- linux-3.0.9/kernel/profile.c 2011-11-11 13:12:24.000000000 -0500
37668 -+++ linux-3.0.9/kernel/profile.c 2011-11-15 20:03:00.000000000 -0500
37669 +diff -urNp linux-3.1.1/kernel/profile.c linux-3.1.1/kernel/profile.c
37670 +--- linux-3.1.1/kernel/profile.c 2011-11-11 15:19:27.000000000 -0500
37671 ++++ linux-3.1.1/kernel/profile.c 2011-11-16 18:39:08.000000000 -0500
37672 @@ -39,7 +39,7 @@ struct profile_hit {
37673 /* Oprofile timer tick hook */
37674 static int (*timer_hook)(struct pt_regs *) __read_mostly;
37675 @@ -65048,10 +64864,10 @@ diff -urNp linux-3.0.9/kernel/profile.c linux-3.0.9/kernel/profile.c
37676 return count;
37677 }
37678
37679 -diff -urNp linux-3.0.9/kernel/ptrace.c linux-3.0.9/kernel/ptrace.c
37680 ---- linux-3.0.9/kernel/ptrace.c 2011-11-11 13:12:24.000000000 -0500
37681 -+++ linux-3.0.9/kernel/ptrace.c 2011-11-15 20:03:00.000000000 -0500
37682 -@@ -132,7 +132,8 @@ int ptrace_check_attach(struct task_stru
37683 +diff -urNp linux-3.1.1/kernel/ptrace.c linux-3.1.1/kernel/ptrace.c
37684 +--- linux-3.1.1/kernel/ptrace.c 2011-11-11 15:19:27.000000000 -0500
37685 ++++ linux-3.1.1/kernel/ptrace.c 2011-11-16 19:50:22.000000000 -0500
37686 +@@ -161,7 +161,8 @@ int ptrace_check_attach(struct task_stru
37687 return ret;
37688 }
37689
37690 @@ -65061,7 +64877,7 @@ diff -urNp linux-3.0.9/kernel/ptrace.c linux-3.0.9/kernel/ptrace.c
37691 {
37692 const struct cred *cred = current_cred(), *tcred;
37693
37694 -@@ -158,7 +159,8 @@ int __ptrace_may_access(struct task_stru
37695 +@@ -187,7 +188,8 @@ int __ptrace_may_access(struct task_stru
37696 cred->gid == tcred->sgid &&
37697 cred->gid == tcred->gid))
37698 goto ok;
37699 @@ -65071,7 +64887,7 @@ diff -urNp linux-3.0.9/kernel/ptrace.c linux-3.0.9/kernel/ptrace.c
37700 goto ok;
37701 rcu_read_unlock();
37702 return -EPERM;
37703 -@@ -167,7 +169,9 @@ ok:
37704 +@@ -196,7 +198,9 @@ ok:
37705 smp_rmb();
37706 if (task->mm)
37707 dumpable = get_dumpable(task->mm);
37708 @@ -65082,7 +64898,7 @@ diff -urNp linux-3.0.9/kernel/ptrace.c linux-3.0.9/kernel/ptrace.c
37709 return -EPERM;
37710
37711 return security_ptrace_access_check(task, mode);
37712 -@@ -177,7 +181,16 @@ bool ptrace_may_access(struct task_struc
37713 +@@ -206,7 +210,16 @@ bool ptrace_may_access(struct task_struc
37714 {
37715 int err;
37716 task_lock(task);
37717 @@ -65100,7 +64916,7 @@ diff -urNp linux-3.0.9/kernel/ptrace.c linux-3.0.9/kernel/ptrace.c
37718 task_unlock(task);
37719 return !err;
37720 }
37721 -@@ -205,7 +218,7 @@ static int ptrace_attach(struct task_str
37722 +@@ -251,7 +264,7 @@ static int ptrace_attach(struct task_str
37723 goto out;
37724
37725 task_lock(task);
37726 @@ -65109,16 +64925,16 @@ diff -urNp linux-3.0.9/kernel/ptrace.c linux-3.0.9/kernel/ptrace.c
37727 task_unlock(task);
37728 if (retval)
37729 goto unlock_creds;
37730 -@@ -218,7 +231,7 @@ static int ptrace_attach(struct task_str
37731 - goto unlock_tasklist;
37732 -
37733 +@@ -266,7 +279,7 @@ static int ptrace_attach(struct task_str
37734 task->ptrace = PT_PTRACED;
37735 + if (seize)
37736 + task->ptrace |= PT_SEIZED;
37737 - if (task_ns_capable(task, CAP_SYS_PTRACE))
37738 + if (task_ns_capable_nolog(task, CAP_SYS_PTRACE))
37739 task->ptrace |= PT_PTRACE_CAP;
37740
37741 __ptrace_link(task, current);
37742 -@@ -406,6 +419,8 @@ int ptrace_readdata(struct task_struct *
37743 +@@ -461,6 +474,8 @@ int ptrace_readdata(struct task_struct *
37744 {
37745 int copied = 0;
37746
37747 @@ -65127,7 +64943,7 @@ diff -urNp linux-3.0.9/kernel/ptrace.c linux-3.0.9/kernel/ptrace.c
37748 while (len > 0) {
37749 char buf[128];
37750 int this_len, retval;
37751 -@@ -417,7 +432,7 @@ int ptrace_readdata(struct task_struct *
37752 +@@ -472,7 +487,7 @@ int ptrace_readdata(struct task_struct *
37753 break;
37754 return -EIO;
37755 }
37756 @@ -65136,7 +64952,7 @@ diff -urNp linux-3.0.9/kernel/ptrace.c linux-3.0.9/kernel/ptrace.c
37757 return -EFAULT;
37758 copied += retval;
37759 src += retval;
37760 -@@ -431,6 +446,8 @@ int ptrace_writedata(struct task_struct
37761 +@@ -486,6 +501,8 @@ int ptrace_writedata(struct task_struct
37762 {
37763 int copied = 0;
37764
37765 @@ -65145,20 +64961,21 @@ diff -urNp linux-3.0.9/kernel/ptrace.c linux-3.0.9/kernel/ptrace.c
37766 while (len > 0) {
37767 char buf[128];
37768 int this_len, retval;
37769 -@@ -613,9 +630,11 @@ int ptrace_request(struct task_struct *c
37770 - {
37771 +@@ -669,10 +686,12 @@ int ptrace_request(struct task_struct *c
37772 + bool seized = child->ptrace & PT_SEIZED;
37773 int ret = -EIO;
37774 - siginfo_t siginfo;
37775 + siginfo_t siginfo, *si;
37776 - void __user *datavp = (void __user *) data;
37777 + void __user *datavp = (__force void __user *) data;
37778 unsigned long __user *datalp = datavp;
37779 + unsigned long flags;
37780
37781 + pax_track_stack();
37782 +
37783 switch (request) {
37784 case PTRACE_PEEKTEXT:
37785 case PTRACE_PEEKDATA:
37786 -@@ -761,14 +780,21 @@ SYSCALL_DEFINE4(ptrace, long, request, l
37787 +@@ -871,14 +890,21 @@ SYSCALL_DEFINE4(ptrace, long, request, l
37788 goto out;
37789 }
37790
37791 @@ -65167,8 +64984,8 @@ diff -urNp linux-3.0.9/kernel/ptrace.c linux-3.0.9/kernel/ptrace.c
37792 + goto out_put_task_struct;
37793 + }
37794 +
37795 - if (request == PTRACE_ATTACH) {
37796 - ret = ptrace_attach(child);
37797 + if (request == PTRACE_ATTACH || request == PTRACE_SEIZE) {
37798 + ret = ptrace_attach(child, request, data);
37799 /*
37800 * Some architectures need to do book-keeping after
37801 * a ptrace attach.
37802 @@ -65181,7 +64998,7 @@ diff -urNp linux-3.0.9/kernel/ptrace.c linux-3.0.9/kernel/ptrace.c
37803 goto out_put_task_struct;
37804 }
37805
37806 -@@ -793,7 +819,7 @@ int generic_ptrace_peekdata(struct task_
37807 +@@ -904,7 +930,7 @@ int generic_ptrace_peekdata(struct task_
37808 copied = access_process_vm(tsk, addr, &tmp, sizeof(tmp), 0);
37809 if (copied != sizeof(tmp))
37810 return -EIO;
37811 @@ -65190,7 +65007,7 @@ diff -urNp linux-3.0.9/kernel/ptrace.c linux-3.0.9/kernel/ptrace.c
37812 }
37813
37814 int generic_ptrace_pokedata(struct task_struct *tsk, unsigned long addr,
37815 -@@ -816,6 +842,8 @@ int compat_ptrace_request(struct task_st
37816 +@@ -927,6 +953,8 @@ int compat_ptrace_request(struct task_st
37817 siginfo_t siginfo;
37818 int ret;
37819
37820 @@ -65199,7 +65016,7 @@ diff -urNp linux-3.0.9/kernel/ptrace.c linux-3.0.9/kernel/ptrace.c
37821 switch (request) {
37822 case PTRACE_PEEKTEXT:
37823 case PTRACE_PEEKDATA:
37824 -@@ -903,14 +931,21 @@ asmlinkage long compat_sys_ptrace(compat
37825 +@@ -1014,14 +1042,21 @@ asmlinkage long compat_sys_ptrace(compat
37826 goto out;
37827 }
37828
37829 @@ -65208,8 +65025,8 @@ diff -urNp linux-3.0.9/kernel/ptrace.c linux-3.0.9/kernel/ptrace.c
37830 + goto out_put_task_struct;
37831 + }
37832 +
37833 - if (request == PTRACE_ATTACH) {
37834 - ret = ptrace_attach(child);
37835 + if (request == PTRACE_ATTACH || request == PTRACE_SEIZE) {
37836 + ret = ptrace_attach(child, request, data);
37837 /*
37838 * Some architectures need to do book-keeping after
37839 * a ptrace attach.
37840 @@ -65222,9 +65039,9 @@ diff -urNp linux-3.0.9/kernel/ptrace.c linux-3.0.9/kernel/ptrace.c
37841 goto out_put_task_struct;
37842 }
37843
37844 -diff -urNp linux-3.0.9/kernel/rcutorture.c linux-3.0.9/kernel/rcutorture.c
37845 ---- linux-3.0.9/kernel/rcutorture.c 2011-11-11 13:12:24.000000000 -0500
37846 -+++ linux-3.0.9/kernel/rcutorture.c 2011-11-15 20:03:00.000000000 -0500
37847 +diff -urNp linux-3.1.1/kernel/rcutorture.c linux-3.1.1/kernel/rcutorture.c
37848 +--- linux-3.1.1/kernel/rcutorture.c 2011-11-11 15:19:27.000000000 -0500
37849 ++++ linux-3.1.1/kernel/rcutorture.c 2011-11-16 18:39:08.000000000 -0500
37850 @@ -138,12 +138,12 @@ static DEFINE_PER_CPU(long [RCU_TORTURE_
37851 { 0 };
37852 static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1], rcu_torture_batch) =
37853 @@ -65294,7 +65111,7 @@ diff -urNp linux-3.0.9/kernel/rcutorture.c linux-3.0.9/kernel/rcutorture.c
37854 old_rp->rtort_pipe_count++;
37855 cur_ops->deferred_free(old_rp);
37856 }
37857 -@@ -951,7 +951,7 @@ static void rcu_torture_timer(unsigned l
37858 +@@ -950,7 +950,7 @@ static void rcu_torture_timer(unsigned l
37859 return;
37860 }
37861 if (p->rtort_mbtest == 0)
37862 @@ -65303,7 +65120,7 @@ diff -urNp linux-3.0.9/kernel/rcutorture.c linux-3.0.9/kernel/rcutorture.c
37863 spin_lock(&rand_lock);
37864 cur_ops->read_delay(&rand);
37865 n_rcu_torture_timers++;
37866 -@@ -1013,7 +1013,7 @@ rcu_torture_reader(void *arg)
37867 +@@ -1011,7 +1011,7 @@ rcu_torture_reader(void *arg)
37868 continue;
37869 }
37870 if (p->rtort_mbtest == 0)
37871 @@ -65312,7 +65129,7 @@ diff -urNp linux-3.0.9/kernel/rcutorture.c linux-3.0.9/kernel/rcutorture.c
37872 cur_ops->read_delay(&rand);
37873 preempt_disable();
37874 pipe_count = p->rtort_pipe_count;
37875 -@@ -1072,16 +1072,16 @@ rcu_torture_printk(char *page)
37876 +@@ -1070,16 +1070,16 @@ rcu_torture_printk(char *page)
37877 rcu_torture_current,
37878 rcu_torture_current_version,
37879 list_empty(&rcu_torture_freelist),
37880 @@ -65334,7 +65151,7 @@ diff -urNp linux-3.0.9/kernel/rcutorture.c linux-3.0.9/kernel/rcutorture.c
37881 n_rcu_torture_boost_ktrerror != 0 ||
37882 n_rcu_torture_boost_rterror != 0 ||
37883 n_rcu_torture_boost_failure != 0)
37884 -@@ -1089,7 +1089,7 @@ rcu_torture_printk(char *page)
37885 +@@ -1087,7 +1087,7 @@ rcu_torture_printk(char *page)
37886 cnt += sprintf(&page[cnt], "\n%s%s ", torture_type, TORTURE_FLAG);
37887 if (i > 1) {
37888 cnt += sprintf(&page[cnt], "!!! ");
37889 @@ -65343,7 +65160,7 @@ diff -urNp linux-3.0.9/kernel/rcutorture.c linux-3.0.9/kernel/rcutorture.c
37890 WARN_ON_ONCE(1);
37891 }
37892 cnt += sprintf(&page[cnt], "Reader Pipe: ");
37893 -@@ -1103,7 +1103,7 @@ rcu_torture_printk(char *page)
37894 +@@ -1101,7 +1101,7 @@ rcu_torture_printk(char *page)
37895 cnt += sprintf(&page[cnt], "Free-Block Circulation: ");
37896 for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) {
37897 cnt += sprintf(&page[cnt], " %d",
37898 @@ -65352,7 +65169,7 @@ diff -urNp linux-3.0.9/kernel/rcutorture.c linux-3.0.9/kernel/rcutorture.c
37899 }
37900 cnt += sprintf(&page[cnt], "\n");
37901 if (cur_ops->stats)
37902 -@@ -1412,7 +1412,7 @@ rcu_torture_cleanup(void)
37903 +@@ -1410,7 +1410,7 @@ rcu_torture_cleanup(void)
37904
37905 if (cur_ops->cleanup)
37906 cur_ops->cleanup();
37907 @@ -65361,7 +65178,7 @@ diff -urNp linux-3.0.9/kernel/rcutorture.c linux-3.0.9/kernel/rcutorture.c
37908 rcu_torture_print_module_parms(cur_ops, "End of test: FAILURE");
37909 else
37910 rcu_torture_print_module_parms(cur_ops, "End of test: SUCCESS");
37911 -@@ -1476,17 +1476,17 @@ rcu_torture_init(void)
37912 +@@ -1474,17 +1474,17 @@ rcu_torture_init(void)
37913
37914 rcu_torture_current = NULL;
37915 rcu_torture_current_version = 0;
37916 @@ -65385,9 +65202,9 @@ diff -urNp linux-3.0.9/kernel/rcutorture.c linux-3.0.9/kernel/rcutorture.c
37917 for_each_possible_cpu(cpu) {
37918 for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) {
37919 per_cpu(rcu_torture_count, cpu)[i] = 0;
37920 -diff -urNp linux-3.0.9/kernel/rcutree.c linux-3.0.9/kernel/rcutree.c
37921 ---- linux-3.0.9/kernel/rcutree.c 2011-11-11 13:12:24.000000000 -0500
37922 -+++ linux-3.0.9/kernel/rcutree.c 2011-11-15 20:03:00.000000000 -0500
37923 +diff -urNp linux-3.1.1/kernel/rcutree.c linux-3.1.1/kernel/rcutree.c
37924 +--- linux-3.1.1/kernel/rcutree.c 2011-11-11 15:19:27.000000000 -0500
37925 ++++ linux-3.1.1/kernel/rcutree.c 2011-11-16 18:39:08.000000000 -0500
37926 @@ -356,9 +356,9 @@ void rcu_enter_nohz(void)
37927 }
37928 /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */
37929 @@ -65470,9 +65287,9 @@ diff -urNp linux-3.0.9/kernel/rcutree.c linux-3.0.9/kernel/rcutree.c
37930 {
37931 __rcu_process_callbacks(&rcu_sched_state,
37932 &__get_cpu_var(rcu_sched_data));
37933 -diff -urNp linux-3.0.9/kernel/rcutree.h linux-3.0.9/kernel/rcutree.h
37934 ---- linux-3.0.9/kernel/rcutree.h 2011-11-11 13:12:24.000000000 -0500
37935 -+++ linux-3.0.9/kernel/rcutree.h 2011-11-15 20:03:00.000000000 -0500
37936 +diff -urNp linux-3.1.1/kernel/rcutree.h linux-3.1.1/kernel/rcutree.h
37937 +--- linux-3.1.1/kernel/rcutree.h 2011-11-11 15:19:27.000000000 -0500
37938 ++++ linux-3.1.1/kernel/rcutree.h 2011-11-16 18:39:08.000000000 -0500
37939 @@ -86,7 +86,7 @@
37940 struct rcu_dynticks {
37941 int dynticks_nesting; /* Track irq/process nesting level. */
37942 @@ -65482,9 +65299,9 @@ diff -urNp linux-3.0.9/kernel/rcutree.h linux-3.0.9/kernel/rcutree.h
37943 };
37944
37945 /* RCU's kthread states for tracing. */
37946 -diff -urNp linux-3.0.9/kernel/rcutree_plugin.h linux-3.0.9/kernel/rcutree_plugin.h
37947 ---- linux-3.0.9/kernel/rcutree_plugin.h 2011-11-11 13:12:24.000000000 -0500
37948 -+++ linux-3.0.9/kernel/rcutree_plugin.h 2011-11-15 20:03:00.000000000 -0500
37949 +diff -urNp linux-3.1.1/kernel/rcutree_plugin.h linux-3.1.1/kernel/rcutree_plugin.h
37950 +--- linux-3.1.1/kernel/rcutree_plugin.h 2011-11-11 15:19:27.000000000 -0500
37951 ++++ linux-3.1.1/kernel/rcutree_plugin.h 2011-11-16 18:39:08.000000000 -0500
37952 @@ -822,7 +822,7 @@ void synchronize_rcu_expedited(void)
37953
37954 /* Clean up and exit. */
37955 @@ -65547,9 +65364,9 @@ diff -urNp linux-3.0.9/kernel/rcutree_plugin.h linux-3.0.9/kernel/rcutree_plugin
37956
37957 put_online_cpus();
37958 }
37959 -diff -urNp linux-3.0.9/kernel/relay.c linux-3.0.9/kernel/relay.c
37960 ---- linux-3.0.9/kernel/relay.c 2011-11-11 13:12:24.000000000 -0500
37961 -+++ linux-3.0.9/kernel/relay.c 2011-11-15 20:03:00.000000000 -0500
37962 +diff -urNp linux-3.1.1/kernel/relay.c linux-3.1.1/kernel/relay.c
37963 +--- linux-3.1.1/kernel/relay.c 2011-11-11 15:19:27.000000000 -0500
37964 ++++ linux-3.1.1/kernel/relay.c 2011-11-16 18:40:44.000000000 -0500
37965 @@ -1236,6 +1236,8 @@ static ssize_t subbuf_splice_actor(struc
37966 };
37967 ssize_t ret;
37968 @@ -65559,9 +65376,9 @@ diff -urNp linux-3.0.9/kernel/relay.c linux-3.0.9/kernel/relay.c
37969 if (rbuf->subbufs_produced == rbuf->subbufs_consumed)
37970 return 0;
37971 if (splice_grow_spd(pipe, &spd))
37972 -diff -urNp linux-3.0.9/kernel/resource.c linux-3.0.9/kernel/resource.c
37973 ---- linux-3.0.9/kernel/resource.c 2011-11-11 13:12:24.000000000 -0500
37974 -+++ linux-3.0.9/kernel/resource.c 2011-11-15 20:03:00.000000000 -0500
37975 +diff -urNp linux-3.1.1/kernel/resource.c linux-3.1.1/kernel/resource.c
37976 +--- linux-3.1.1/kernel/resource.c 2011-11-11 15:19:27.000000000 -0500
37977 ++++ linux-3.1.1/kernel/resource.c 2011-11-16 18:40:44.000000000 -0500
37978 @@ -141,8 +141,18 @@ static const struct file_operations proc
37979
37980 static int __init ioresources_init(void)
37981 @@ -65581,9 +65398,9 @@ diff -urNp linux-3.0.9/kernel/resource.c linux-3.0.9/kernel/resource.c
37982 return 0;
37983 }
37984 __initcall(ioresources_init);
37985 -diff -urNp linux-3.0.9/kernel/rtmutex-tester.c linux-3.0.9/kernel/rtmutex-tester.c
37986 ---- linux-3.0.9/kernel/rtmutex-tester.c 2011-11-11 13:12:24.000000000 -0500
37987 -+++ linux-3.0.9/kernel/rtmutex-tester.c 2011-11-15 20:03:00.000000000 -0500
37988 +diff -urNp linux-3.1.1/kernel/rtmutex-tester.c linux-3.1.1/kernel/rtmutex-tester.c
37989 +--- linux-3.1.1/kernel/rtmutex-tester.c 2011-11-11 15:19:27.000000000 -0500
37990 ++++ linux-3.1.1/kernel/rtmutex-tester.c 2011-11-16 18:39:08.000000000 -0500
37991 @@ -20,7 +20,7 @@
37992 #define MAX_RT_TEST_MUTEXES 8
37993
37994 @@ -65674,9 +65491,9 @@ diff -urNp linux-3.0.9/kernel/rtmutex-tester.c linux-3.0.9/kernel/rtmutex-tester
37995 return;
37996
37997 default:
37998 -diff -urNp linux-3.0.9/kernel/sched_autogroup.c linux-3.0.9/kernel/sched_autogroup.c
37999 ---- linux-3.0.9/kernel/sched_autogroup.c 2011-11-11 13:12:24.000000000 -0500
38000 -+++ linux-3.0.9/kernel/sched_autogroup.c 2011-11-15 20:03:00.000000000 -0500
38001 +diff -urNp linux-3.1.1/kernel/sched_autogroup.c linux-3.1.1/kernel/sched_autogroup.c
38002 +--- linux-3.1.1/kernel/sched_autogroup.c 2011-11-11 15:19:27.000000000 -0500
38003 ++++ linux-3.1.1/kernel/sched_autogroup.c 2011-11-16 18:39:08.000000000 -0500
38004 @@ -7,7 +7,7 @@
38005
38006 unsigned int __read_mostly sysctl_sched_autogroup_enabled = 1;
38007 @@ -65695,10 +65512,10 @@ diff -urNp linux-3.0.9/kernel/sched_autogroup.c linux-3.0.9/kernel/sched_autogro
38008 ag->tg = tg;
38009 #ifdef CONFIG_RT_GROUP_SCHED
38010 /*
38011 -diff -urNp linux-3.0.9/kernel/sched.c linux-3.0.9/kernel/sched.c
38012 ---- linux-3.0.9/kernel/sched.c 2011-11-11 13:12:24.000000000 -0500
38013 -+++ linux-3.0.9/kernel/sched.c 2011-11-15 20:03:00.000000000 -0500
38014 -@@ -4227,6 +4227,8 @@ static void __sched __schedule(void)
38015 +diff -urNp linux-3.1.1/kernel/sched.c linux-3.1.1/kernel/sched.c
38016 +--- linux-3.1.1/kernel/sched.c 2011-11-11 15:19:27.000000000 -0500
38017 ++++ linux-3.1.1/kernel/sched.c 2011-11-16 18:40:44.000000000 -0500
38018 +@@ -4264,6 +4264,8 @@ static void __sched __schedule(void)
38019 struct rq *rq;
38020 int cpu;
38021
38022 @@ -65707,7 +65524,7 @@ diff -urNp linux-3.0.9/kernel/sched.c linux-3.0.9/kernel/sched.c
38023 need_resched:
38024 preempt_disable();
38025 cpu = smp_processor_id();
38026 -@@ -4920,6 +4922,8 @@ int can_nice(const struct task_struct *p
38027 +@@ -4950,6 +4952,8 @@ int can_nice(const struct task_struct *p
38028 /* convert nice value [19,-20] to rlimit style value [1,40] */
38029 int nice_rlim = 20 - nice;
38030
38031 @@ -65716,7 +65533,7 @@ diff -urNp linux-3.0.9/kernel/sched.c linux-3.0.9/kernel/sched.c
38032 return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) ||
38033 capable(CAP_SYS_NICE));
38034 }
38035 -@@ -4953,7 +4957,8 @@ SYSCALL_DEFINE1(nice, int, increment)
38036 +@@ -4983,7 +4987,8 @@ SYSCALL_DEFINE1(nice, int, increment)
38037 if (nice > 19)
38038 nice = 19;
38039
38040 @@ -65726,7 +65543,7 @@ diff -urNp linux-3.0.9/kernel/sched.c linux-3.0.9/kernel/sched.c
38041 return -EPERM;
38042
38043 retval = security_task_setnice(current, nice);
38044 -@@ -5097,6 +5102,7 @@ recheck:
38045 +@@ -5127,6 +5132,7 @@ recheck:
38046 unsigned long rlim_rtprio =
38047 task_rlimit(p, RLIMIT_RTPRIO);
38048
38049 @@ -65734,10 +65551,10 @@ diff -urNp linux-3.0.9/kernel/sched.c linux-3.0.9/kernel/sched.c
38050 /* can't set/change the rt policy */
38051 if (policy != p->policy && !rlim_rtprio)
38052 return -EPERM;
38053 -diff -urNp linux-3.0.9/kernel/sched_fair.c linux-3.0.9/kernel/sched_fair.c
38054 ---- linux-3.0.9/kernel/sched_fair.c 2011-11-11 13:12:24.000000000 -0500
38055 -+++ linux-3.0.9/kernel/sched_fair.c 2011-11-15 20:03:00.000000000 -0500
38056 -@@ -4050,7 +4050,7 @@ static void nohz_idle_balance(int this_c
38057 +diff -urNp linux-3.1.1/kernel/sched_fair.c linux-3.1.1/kernel/sched_fair.c
38058 +--- linux-3.1.1/kernel/sched_fair.c 2011-11-11 15:19:27.000000000 -0500
38059 ++++ linux-3.1.1/kernel/sched_fair.c 2011-11-16 18:39:08.000000000 -0500
38060 +@@ -4062,7 +4062,7 @@ static void nohz_idle_balance(int this_c
38061 * run_rebalance_domains is triggered when needed from the scheduler tick.
38062 * Also triggered for nohz idle balancing (with nohz_balancing_kick set).
38063 */
38064 @@ -65746,9 +65563,9 @@ diff -urNp linux-3.0.9/kernel/sched_fair.c linux-3.0.9/kernel/sched_fair.c
38065 {
38066 int this_cpu = smp_processor_id();
38067 struct rq *this_rq = cpu_rq(this_cpu);
38068 -diff -urNp linux-3.0.9/kernel/signal.c linux-3.0.9/kernel/signal.c
38069 ---- linux-3.0.9/kernel/signal.c 2011-11-11 13:12:24.000000000 -0500
38070 -+++ linux-3.0.9/kernel/signal.c 2011-11-15 20:03:00.000000000 -0500
38071 +diff -urNp linux-3.1.1/kernel/signal.c linux-3.1.1/kernel/signal.c
38072 +--- linux-3.1.1/kernel/signal.c 2011-11-11 15:19:27.000000000 -0500
38073 ++++ linux-3.1.1/kernel/signal.c 2011-11-16 19:30:04.000000000 -0500
38074 @@ -45,12 +45,12 @@ static struct kmem_cache *sigqueue_cache
38075
38076 int print_fatal_signals __read_mostly;
38077 @@ -65773,7 +65590,7 @@ diff -urNp linux-3.0.9/kernel/signal.c linux-3.0.9/kernel/signal.c
38078
38079 handler = sig_handler(t, sig);
38080
38081 -@@ -320,6 +320,9 @@ __sigqueue_alloc(int sig, struct task_st
38082 +@@ -364,6 +364,9 @@ __sigqueue_alloc(int sig, struct task_st
38083 atomic_inc(&user->sigpending);
38084 rcu_read_unlock();
38085
38086 @@ -65783,7 +65600,7 @@ diff -urNp linux-3.0.9/kernel/signal.c linux-3.0.9/kernel/signal.c
38087 if (override_rlimit ||
38088 atomic_read(&user->sigpending) <=
38089 task_rlimit(t, RLIMIT_SIGPENDING)) {
38090 -@@ -444,7 +447,7 @@ flush_signal_handlers(struct task_struct
38091 +@@ -488,7 +491,7 @@ flush_signal_handlers(struct task_struct
38092
38093 int unhandled_signal(struct task_struct *tsk, int sig)
38094 {
38095 @@ -65792,7 +65609,7 @@ diff -urNp linux-3.0.9/kernel/signal.c linux-3.0.9/kernel/signal.c
38096 if (is_global_init(tsk))
38097 return 1;
38098 if (handler != SIG_IGN && handler != SIG_DFL)
38099 -@@ -770,6 +773,13 @@ static int check_kill_permission(int sig
38100 +@@ -815,6 +818,13 @@ static int check_kill_permission(int sig
38101 }
38102 }
38103
38104 @@ -65806,7 +65623,7 @@ diff -urNp linux-3.0.9/kernel/signal.c linux-3.0.9/kernel/signal.c
38105 return security_task_kill(t, info, sig, 0);
38106 }
38107
38108 -@@ -1092,7 +1102,7 @@ __group_send_sig_info(int sig, struct si
38109 +@@ -1165,7 +1175,7 @@ __group_send_sig_info(int sig, struct si
38110 return send_signal(sig, info, p, 1);
38111 }
38112
38113 @@ -65815,7 +65632,7 @@ diff -urNp linux-3.0.9/kernel/signal.c linux-3.0.9/kernel/signal.c
38114 specific_send_sig_info(int sig, struct siginfo *info, struct task_struct *t)
38115 {
38116 return send_signal(sig, info, t, 0);
38117 -@@ -1129,6 +1139,7 @@ force_sig_info(int sig, struct siginfo *
38118 +@@ -1202,6 +1212,7 @@ force_sig_info(int sig, struct siginfo *
38119 unsigned long int flags;
38120 int ret, blocked, ignored;
38121 struct k_sigaction *action;
38122 @@ -65823,7 +65640,7 @@ diff -urNp linux-3.0.9/kernel/signal.c linux-3.0.9/kernel/signal.c
38123
38124 spin_lock_irqsave(&t->sighand->siglock, flags);
38125 action = &t->sighand->action[sig-1];
38126 -@@ -1143,9 +1154,18 @@ force_sig_info(int sig, struct siginfo *
38127 +@@ -1216,9 +1227,18 @@ force_sig_info(int sig, struct siginfo *
38128 }
38129 if (action->sa.sa_handler == SIG_DFL)
38130 t->signal->flags &= ~SIGNAL_UNKILLABLE;
38131 @@ -65842,7 +65659,7 @@ diff -urNp linux-3.0.9/kernel/signal.c linux-3.0.9/kernel/signal.c
38132 return ret;
38133 }
38134
38135 -@@ -1212,8 +1232,11 @@ int group_send_sig_info(int sig, struct
38136 +@@ -1285,8 +1305,11 @@ int group_send_sig_info(int sig, struct
38137 ret = check_kill_permission(sig, info, p);
38138 rcu_read_unlock();
38139
38140 @@ -65855,16 +65672,16 @@ diff -urNp linux-3.0.9/kernel/signal.c linux-3.0.9/kernel/signal.c
38141
38142 return ret;
38143 }
38144 -@@ -1839,6 +1862,8 @@ void ptrace_notify(int exit_code)
38145 +@@ -1909,6 +1932,8 @@ static void ptrace_do_notify(int signr,
38146 {
38147 siginfo_t info;
38148
38149 + pax_track_stack();
38150 +
38151 - BUG_ON((exit_code & (0x7f | ~0xffff)) != SIGTRAP);
38152 -
38153 memset(&info, 0, sizeof info);
38154 -@@ -2637,7 +2662,15 @@ do_send_specific(pid_t tgid, pid_t pid,
38155 + info.si_signo = signr;
38156 + info.si_code = exit_code;
38157 +@@ -2748,7 +2773,15 @@ do_send_specific(pid_t tgid, pid_t pid,
38158 int error = -ESRCH;
38159
38160 rcu_read_lock();
38161 @@ -65881,9 +65698,9 @@ diff -urNp linux-3.0.9/kernel/signal.c linux-3.0.9/kernel/signal.c
38162 if (p && (tgid <= 0 || task_tgid_vnr(p) == tgid)) {
38163 error = check_kill_permission(sig, info, p);
38164 /*
38165 -diff -urNp linux-3.0.9/kernel/smp.c linux-3.0.9/kernel/smp.c
38166 ---- linux-3.0.9/kernel/smp.c 2011-11-11 13:12:24.000000000 -0500
38167 -+++ linux-3.0.9/kernel/smp.c 2011-11-15 20:03:00.000000000 -0500
38168 +diff -urNp linux-3.1.1/kernel/smp.c linux-3.1.1/kernel/smp.c
38169 +--- linux-3.1.1/kernel/smp.c 2011-11-11 15:19:27.000000000 -0500
38170 ++++ linux-3.1.1/kernel/smp.c 2011-11-16 18:39:08.000000000 -0500
38171 @@ -580,22 +580,22 @@ int smp_call_function(smp_call_func_t fu
38172 }
38173 EXPORT_SYMBOL(smp_call_function);
38174 @@ -65911,9 +65728,9 @@ diff -urNp linux-3.0.9/kernel/smp.c linux-3.0.9/kernel/smp.c
38175 {
38176 raw_spin_unlock_irq(&call_function.lock);
38177 }
38178 -diff -urNp linux-3.0.9/kernel/softirq.c linux-3.0.9/kernel/softirq.c
38179 ---- linux-3.0.9/kernel/softirq.c 2011-11-11 13:12:24.000000000 -0500
38180 -+++ linux-3.0.9/kernel/softirq.c 2011-11-15 20:03:00.000000000 -0500
38181 +diff -urNp linux-3.1.1/kernel/softirq.c linux-3.1.1/kernel/softirq.c
38182 +--- linux-3.1.1/kernel/softirq.c 2011-11-11 15:19:27.000000000 -0500
38183 ++++ linux-3.1.1/kernel/softirq.c 2011-11-16 18:39:08.000000000 -0500
38184 @@ -56,7 +56,7 @@ static struct softirq_action softirq_vec
38185
38186 DEFINE_PER_CPU(struct task_struct *, ksoftirqd);
38187 @@ -65964,10 +65781,10 @@ diff -urNp linux-3.0.9/kernel/softirq.c linux-3.0.9/kernel/softirq.c
38188 {
38189 struct tasklet_struct *list;
38190
38191 -diff -urNp linux-3.0.9/kernel/sys.c linux-3.0.9/kernel/sys.c
38192 ---- linux-3.0.9/kernel/sys.c 2011-11-11 13:12:24.000000000 -0500
38193 -+++ linux-3.0.9/kernel/sys.c 2011-11-15 20:03:00.000000000 -0500
38194 -@@ -158,6 +158,12 @@ static int set_one_prio(struct task_stru
38195 +diff -urNp linux-3.1.1/kernel/sys.c linux-3.1.1/kernel/sys.c
38196 +--- linux-3.1.1/kernel/sys.c 2011-11-11 15:19:27.000000000 -0500
38197 ++++ linux-3.1.1/kernel/sys.c 2011-11-16 18:40:44.000000000 -0500
38198 +@@ -157,6 +157,12 @@ static int set_one_prio(struct task_stru
38199 error = -EACCES;
38200 goto out;
38201 }
38202 @@ -65980,7 +65797,7 @@ diff -urNp linux-3.0.9/kernel/sys.c linux-3.0.9/kernel/sys.c
38203 no_nice = security_task_setnice(p, niceval);
38204 if (no_nice) {
38205 error = no_nice;
38206 -@@ -541,6 +547,9 @@ SYSCALL_DEFINE2(setregid, gid_t, rgid, g
38207 +@@ -571,6 +577,9 @@ SYSCALL_DEFINE2(setregid, gid_t, rgid, g
38208 goto error;
38209 }
38210
38211 @@ -65990,7 +65807,7 @@ diff -urNp linux-3.0.9/kernel/sys.c linux-3.0.9/kernel/sys.c
38212 if (rgid != (gid_t) -1 ||
38213 (egid != (gid_t) -1 && egid != old->gid))
38214 new->sgid = new->egid;
38215 -@@ -570,6 +579,10 @@ SYSCALL_DEFINE1(setgid, gid_t, gid)
38216 +@@ -600,6 +609,10 @@ SYSCALL_DEFINE1(setgid, gid_t, gid)
38217 old = current_cred();
38218
38219 retval = -EPERM;
38220 @@ -66001,30 +65818,7 @@ diff -urNp linux-3.0.9/kernel/sys.c linux-3.0.9/kernel/sys.c
38221 if (nsown_capable(CAP_SETGID))
38222 new->gid = new->egid = new->sgid = new->fsgid = gid;
38223 else if (gid == old->gid || gid == old->sgid)
38224 -@@ -595,11 +608,18 @@ static int set_user(struct cred *new)
38225 - if (!new_user)
38226 - return -EAGAIN;
38227 -
38228 -+ /*
38229 -+ * We don't fail in case of NPROC limit excess here because too many
38230 -+ * poorly written programs don't check set*uid() return code, assuming
38231 -+ * it never fails if called by root. We may still enforce NPROC limit
38232 -+ * for programs doing set*uid()+execve() by harmlessly deferring the
38233 -+ * failure to the execve() stage.
38234 -+ */
38235 - if (atomic_read(&new_user->processes) >= rlimit(RLIMIT_NPROC) &&
38236 -- new_user != INIT_USER) {
38237 -- free_uid(new_user);
38238 -- return -EAGAIN;
38239 -- }
38240 -+ new_user != INIT_USER)
38241 -+ current->flags |= PF_NPROC_EXCEEDED;
38242 -+ else
38243 -+ current->flags &= ~PF_NPROC_EXCEEDED;
38244 -
38245 - free_uid(new->user);
38246 - new->user = new_user;
38247 -@@ -650,6 +670,9 @@ SYSCALL_DEFINE2(setreuid, uid_t, ruid, u
38248 +@@ -687,6 +700,9 @@ SYSCALL_DEFINE2(setreuid, uid_t, ruid, u
38249 goto error;
38250 }
38251
38252 @@ -66034,7 +65828,7 @@ diff -urNp linux-3.0.9/kernel/sys.c linux-3.0.9/kernel/sys.c
38253 if (new->uid != old->uid) {
38254 retval = set_user(new);
38255 if (retval < 0)
38256 -@@ -694,6 +717,12 @@ SYSCALL_DEFINE1(setuid, uid_t, uid)
38257 +@@ -731,6 +747,12 @@ SYSCALL_DEFINE1(setuid, uid_t, uid)
38258 old = current_cred();
38259
38260 retval = -EPERM;
38261 @@ -66047,7 +65841,7 @@ diff -urNp linux-3.0.9/kernel/sys.c linux-3.0.9/kernel/sys.c
38262 if (nsown_capable(CAP_SETUID)) {
38263 new->suid = new->uid = uid;
38264 if (uid != old->uid) {
38265 -@@ -748,6 +777,9 @@ SYSCALL_DEFINE3(setresuid, uid_t, ruid,
38266 +@@ -785,6 +807,9 @@ SYSCALL_DEFINE3(setresuid, uid_t, ruid,
38267 goto error;
38268 }
38269
38270 @@ -66057,7 +65851,7 @@ diff -urNp linux-3.0.9/kernel/sys.c linux-3.0.9/kernel/sys.c
38271 if (ruid != (uid_t) -1) {
38272 new->uid = ruid;
38273 if (ruid != old->uid) {
38274 -@@ -812,6 +844,9 @@ SYSCALL_DEFINE3(setresgid, gid_t, rgid,
38275 +@@ -849,6 +874,9 @@ SYSCALL_DEFINE3(setresgid, gid_t, rgid,
38276 goto error;
38277 }
38278
38279 @@ -66067,7 +65861,7 @@ diff -urNp linux-3.0.9/kernel/sys.c linux-3.0.9/kernel/sys.c
38280 if (rgid != (gid_t) -1)
38281 new->gid = rgid;
38282 if (egid != (gid_t) -1)
38283 -@@ -858,6 +893,9 @@ SYSCALL_DEFINE1(setfsuid, uid_t, uid)
38284 +@@ -895,6 +923,9 @@ SYSCALL_DEFINE1(setfsuid, uid_t, uid)
38285 old = current_cred();
38286 old_fsuid = old->fsuid;
38287
38288 @@ -66077,7 +65871,7 @@ diff -urNp linux-3.0.9/kernel/sys.c linux-3.0.9/kernel/sys.c
38289 if (uid == old->uid || uid == old->euid ||
38290 uid == old->suid || uid == old->fsuid ||
38291 nsown_capable(CAP_SETUID)) {
38292 -@@ -868,6 +906,7 @@ SYSCALL_DEFINE1(setfsuid, uid_t, uid)
38293 +@@ -905,6 +936,7 @@ SYSCALL_DEFINE1(setfsuid, uid_t, uid)
38294 }
38295 }
38296
38297 @@ -66085,7 +65879,7 @@ diff -urNp linux-3.0.9/kernel/sys.c linux-3.0.9/kernel/sys.c
38298 abort_creds(new);
38299 return old_fsuid;
38300
38301 -@@ -894,12 +933,16 @@ SYSCALL_DEFINE1(setfsgid, gid_t, gid)
38302 +@@ -931,12 +963,16 @@ SYSCALL_DEFINE1(setfsgid, gid_t, gid)
38303 if (gid == old->gid || gid == old->egid ||
38304 gid == old->sgid || gid == old->fsgid ||
38305 nsown_capable(CAP_SETGID)) {
38306 @@ -66102,7 +65896,7 @@ diff -urNp linux-3.0.9/kernel/sys.c linux-3.0.9/kernel/sys.c
38307 abort_creds(new);
38308 return old_fsgid;
38309
38310 -@@ -1205,19 +1248,19 @@ SYSCALL_DEFINE1(olduname, struct oldold_
38311 +@@ -1242,19 +1278,19 @@ SYSCALL_DEFINE1(olduname, struct oldold_
38312 return -EFAULT;
38313
38314 down_read(&uts_sem);
38315 @@ -66127,7 +65921,7 @@ diff -urNp linux-3.0.9/kernel/sys.c linux-3.0.9/kernel/sys.c
38316 __OLD_UTS_LEN);
38317 error |= __put_user(0, name->machine + __OLD_UTS_LEN);
38318 up_read(&uts_sem);
38319 -@@ -1680,7 +1723,7 @@ SYSCALL_DEFINE5(prctl, int, option, unsi
38320 +@@ -1717,7 +1753,7 @@ SYSCALL_DEFINE5(prctl, int, option, unsi
38321 error = get_dumpable(me->mm);
38322 break;
38323 case PR_SET_DUMPABLE:
38324 @@ -66136,9 +65930,9 @@ diff -urNp linux-3.0.9/kernel/sys.c linux-3.0.9/kernel/sys.c
38325 error = -EINVAL;
38326 break;
38327 }
38328 -diff -urNp linux-3.0.9/kernel/sysctl_binary.c linux-3.0.9/kernel/sysctl_binary.c
38329 ---- linux-3.0.9/kernel/sysctl_binary.c 2011-11-11 13:12:24.000000000 -0500
38330 -+++ linux-3.0.9/kernel/sysctl_binary.c 2011-11-15 20:03:00.000000000 -0500
38331 +diff -urNp linux-3.1.1/kernel/sysctl_binary.c linux-3.1.1/kernel/sysctl_binary.c
38332 +--- linux-3.1.1/kernel/sysctl_binary.c 2011-11-11 15:19:27.000000000 -0500
38333 ++++ linux-3.1.1/kernel/sysctl_binary.c 2011-11-16 18:39:08.000000000 -0500
38334 @@ -989,7 +989,7 @@ static ssize_t bin_intvec(struct file *f
38335 int i;
38336
38337 @@ -66202,9 +65996,9 @@ diff -urNp linux-3.0.9/kernel/sysctl_binary.c linux-3.0.9/kernel/sysctl_binary.c
38338 set_fs(old_fs);
38339 if (result < 0)
38340 goto out;
38341 -diff -urNp linux-3.0.9/kernel/sysctl.c linux-3.0.9/kernel/sysctl.c
38342 ---- linux-3.0.9/kernel/sysctl.c 2011-11-11 13:12:24.000000000 -0500
38343 -+++ linux-3.0.9/kernel/sysctl.c 2011-11-15 20:03:00.000000000 -0500
38344 +diff -urNp linux-3.1.1/kernel/sysctl.c linux-3.1.1/kernel/sysctl.c
38345 +--- linux-3.1.1/kernel/sysctl.c 2011-11-11 15:19:27.000000000 -0500
38346 ++++ linux-3.1.1/kernel/sysctl.c 2011-11-16 18:40:44.000000000 -0500
38347 @@ -85,6 +85,13 @@
38348
38349
38350 @@ -66316,7 +66110,7 @@ diff -urNp linux-3.0.9/kernel/sysctl.c linux-3.0.9/kernel/sysctl.c
38351 #else
38352 {
38353 .procname = "nr_trim_pages",
38354 -@@ -1714,6 +1763,17 @@ static int test_perm(int mode, int op)
38355 +@@ -1709,6 +1758,17 @@ static int test_perm(int mode, int op)
38356 int sysctl_perm(struct ctl_table_root *root, struct ctl_table *table, int op)
38357 {
38358 int mode;
38359 @@ -66334,7 +66128,7 @@ diff -urNp linux-3.0.9/kernel/sysctl.c linux-3.0.9/kernel/sysctl.c
38360
38361 if (root->permissions)
38362 mode = root->permissions(root, current->nsproxy, table);
38363 -@@ -2118,6 +2178,16 @@ int proc_dostring(struct ctl_table *tabl
38364 +@@ -2113,6 +2173,16 @@ int proc_dostring(struct ctl_table *tabl
38365 buffer, lenp, ppos);
38366 }
38367
38368 @@ -66351,7 +66145,7 @@ diff -urNp linux-3.0.9/kernel/sysctl.c linux-3.0.9/kernel/sysctl.c
38369 static size_t proc_skip_spaces(char **buf)
38370 {
38371 size_t ret;
38372 -@@ -2223,6 +2293,8 @@ static int proc_put_long(void __user **b
38373 +@@ -2218,6 +2288,8 @@ static int proc_put_long(void __user **b
38374 len = strlen(tmp);
38375 if (len > *size)
38376 len = *size;
38377 @@ -66360,7 +66154,7 @@ diff -urNp linux-3.0.9/kernel/sysctl.c linux-3.0.9/kernel/sysctl.c
38378 if (copy_to_user(*buf, tmp, len))
38379 return -EFAULT;
38380 *size -= len;
38381 -@@ -2539,8 +2611,11 @@ static int __do_proc_doulongvec_minmax(v
38382 +@@ -2534,8 +2606,11 @@ static int __do_proc_doulongvec_minmax(v
38383 *i = val;
38384 } else {
38385 val = convdiv * (*i) / convmul;
38386 @@ -66373,7 +66167,7 @@ diff -urNp linux-3.0.9/kernel/sysctl.c linux-3.0.9/kernel/sysctl.c
38387 err = proc_put_long(&buffer, &left, val, false);
38388 if (err)
38389 break;
38390 -@@ -2935,6 +3010,12 @@ int proc_dostring(struct ctl_table *tabl
38391 +@@ -2930,6 +3005,12 @@ int proc_dostring(struct ctl_table *tabl
38392 return -ENOSYS;
38393 }
38394
38395 @@ -66386,7 +66180,7 @@ diff -urNp linux-3.0.9/kernel/sysctl.c linux-3.0.9/kernel/sysctl.c
38396 int proc_dointvec(struct ctl_table *table, int write,
38397 void __user *buffer, size_t *lenp, loff_t *ppos)
38398 {
38399 -@@ -2991,6 +3072,7 @@ EXPORT_SYMBOL(proc_dointvec_minmax);
38400 +@@ -2986,6 +3067,7 @@ EXPORT_SYMBOL(proc_dointvec_minmax);
38401 EXPORT_SYMBOL(proc_dointvec_userhz_jiffies);
38402 EXPORT_SYMBOL(proc_dointvec_ms_jiffies);
38403 EXPORT_SYMBOL(proc_dostring);
38404 @@ -66394,9 +66188,9 @@ diff -urNp linux-3.0.9/kernel/sysctl.c linux-3.0.9/kernel/sysctl.c
38405 EXPORT_SYMBOL(proc_doulongvec_minmax);
38406 EXPORT_SYMBOL(proc_doulongvec_ms_jiffies_minmax);
38407 EXPORT_SYMBOL(register_sysctl_table);
38408 -diff -urNp linux-3.0.9/kernel/sysctl_check.c linux-3.0.9/kernel/sysctl_check.c
38409 ---- linux-3.0.9/kernel/sysctl_check.c 2011-11-11 13:12:24.000000000 -0500
38410 -+++ linux-3.0.9/kernel/sysctl_check.c 2011-11-15 20:03:00.000000000 -0500
38411 +diff -urNp linux-3.1.1/kernel/sysctl_check.c linux-3.1.1/kernel/sysctl_check.c
38412 +--- linux-3.1.1/kernel/sysctl_check.c 2011-11-11 15:19:27.000000000 -0500
38413 ++++ linux-3.1.1/kernel/sysctl_check.c 2011-11-16 18:40:44.000000000 -0500
38414 @@ -129,6 +129,7 @@ int sysctl_check_table(struct nsproxy *n
38415 set_fail(&fail, table, "Directory with extra2");
38416 } else {
38417 @@ -66405,23 +66199,23 @@ diff -urNp linux-3.0.9/kernel/sysctl_check.c linux-3.0.9/kernel/sysctl_check.c
38418 (table->proc_handler == proc_dointvec) ||
38419 (table->proc_handler == proc_dointvec_minmax) ||
38420 (table->proc_handler == proc_dointvec_jiffies) ||
38421 -diff -urNp linux-3.0.9/kernel/taskstats.c linux-3.0.9/kernel/taskstats.c
38422 ---- linux-3.0.9/kernel/taskstats.c 2011-11-11 13:12:24.000000000 -0500
38423 -+++ linux-3.0.9/kernel/taskstats.c 2011-11-15 20:03:00.000000000 -0500
38424 +diff -urNp linux-3.1.1/kernel/taskstats.c linux-3.1.1/kernel/taskstats.c
38425 +--- linux-3.1.1/kernel/taskstats.c 2011-11-11 15:19:27.000000000 -0500
38426 ++++ linux-3.1.1/kernel/taskstats.c 2011-11-16 19:35:09.000000000 -0500
38427 @@ -27,9 +27,12 @@
38428 #include <linux/cgroup.h>
38429 #include <linux/fs.h>
38430 #include <linux/file.h>
38431 +#include <linux/grsecurity.h>
38432 #include <net/genetlink.h>
38433 - #include <asm/atomic.h>
38434 + #include <linux/atomic.h>
38435
38436 +extern int gr_is_taskstats_denied(int pid);
38437 +
38438 /*
38439 * Maximum length of a cpumask that can be specified in
38440 * the TASKSTATS_CMD_ATTR_REGISTER/DEREGISTER_CPUMASK attribute
38441 -@@ -558,6 +561,9 @@ err:
38442 +@@ -556,6 +559,9 @@ err:
38443
38444 static int taskstats_user_cmd(struct sk_buff *skb, struct genl_info *info)
38445 {
38446 @@ -66431,9 +66225,9 @@ diff -urNp linux-3.0.9/kernel/taskstats.c linux-3.0.9/kernel/taskstats.c
38447 if (info->attrs[TASKSTATS_CMD_ATTR_REGISTER_CPUMASK])
38448 return cmd_attr_register_cpumask(info);
38449 else if (info->attrs[TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK])
38450 -diff -urNp linux-3.0.9/kernel/time/alarmtimer.c linux-3.0.9/kernel/time/alarmtimer.c
38451 ---- linux-3.0.9/kernel/time/alarmtimer.c 2011-11-11 13:12:24.000000000 -0500
38452 -+++ linux-3.0.9/kernel/time/alarmtimer.c 2011-11-15 20:03:00.000000000 -0500
38453 +diff -urNp linux-3.1.1/kernel/time/alarmtimer.c linux-3.1.1/kernel/time/alarmtimer.c
38454 +--- linux-3.1.1/kernel/time/alarmtimer.c 2011-11-11 15:19:27.000000000 -0500
38455 ++++ linux-3.1.1/kernel/time/alarmtimer.c 2011-11-16 18:39:08.000000000 -0500
38456 @@ -693,7 +693,7 @@ static int __init alarmtimer_init(void)
38457 {
38458 int error = 0;
38459 @@ -66443,9 +66237,9 @@ diff -urNp linux-3.0.9/kernel/time/alarmtimer.c linux-3.0.9/kernel/time/alarmtim
38460 .clock_getres = alarm_clock_getres,
38461 .clock_get = alarm_clock_get,
38462 .timer_create = alarm_timer_create,
38463 -diff -urNp linux-3.0.9/kernel/time/tick-broadcast.c linux-3.0.9/kernel/time/tick-broadcast.c
38464 ---- linux-3.0.9/kernel/time/tick-broadcast.c 2011-11-11 13:12:24.000000000 -0500
38465 -+++ linux-3.0.9/kernel/time/tick-broadcast.c 2011-11-15 20:03:00.000000000 -0500
38466 +diff -urNp linux-3.1.1/kernel/time/tick-broadcast.c linux-3.1.1/kernel/time/tick-broadcast.c
38467 +--- linux-3.1.1/kernel/time/tick-broadcast.c 2011-11-11 15:19:27.000000000 -0500
38468 ++++ linux-3.1.1/kernel/time/tick-broadcast.c 2011-11-16 18:39:08.000000000 -0500
38469 @@ -115,7 +115,7 @@ int tick_device_uses_broadcast(struct cl
38470 * then clear the broadcast bit.
38471 */
38472 @@ -66455,9 +66249,9 @@ diff -urNp linux-3.0.9/kernel/time/tick-broadcast.c linux-3.0.9/kernel/time/tick
38473
38474 cpumask_clear_cpu(cpu, tick_get_broadcast_mask());
38475 tick_broadcast_clear_oneshot(cpu);
38476 -diff -urNp linux-3.0.9/kernel/time/timekeeping.c linux-3.0.9/kernel/time/timekeeping.c
38477 ---- linux-3.0.9/kernel/time/timekeeping.c 2011-11-11 13:12:24.000000000 -0500
38478 -+++ linux-3.0.9/kernel/time/timekeeping.c 2011-11-15 20:03:00.000000000 -0500
38479 +diff -urNp linux-3.1.1/kernel/time/timekeeping.c linux-3.1.1/kernel/time/timekeeping.c
38480 +--- linux-3.1.1/kernel/time/timekeeping.c 2011-11-11 15:19:27.000000000 -0500
38481 ++++ linux-3.1.1/kernel/time/timekeeping.c 2011-11-16 18:40:44.000000000 -0500
38482 @@ -14,6 +14,7 @@
38483 #include <linux/init.h>
38484 #include <linux/mm.h>
38485 @@ -66475,9 +66269,9 @@ diff -urNp linux-3.0.9/kernel/time/timekeeping.c linux-3.0.9/kernel/time/timekee
38486 write_seqlock_irqsave(&xtime_lock, flags);
38487
38488 timekeeping_forward_now();
38489 -diff -urNp linux-3.0.9/kernel/time/timer_list.c linux-3.0.9/kernel/time/timer_list.c
38490 ---- linux-3.0.9/kernel/time/timer_list.c 2011-11-11 13:12:24.000000000 -0500
38491 -+++ linux-3.0.9/kernel/time/timer_list.c 2011-11-15 20:03:00.000000000 -0500
38492 +diff -urNp linux-3.1.1/kernel/time/timer_list.c linux-3.1.1/kernel/time/timer_list.c
38493 +--- linux-3.1.1/kernel/time/timer_list.c 2011-11-11 15:19:27.000000000 -0500
38494 ++++ linux-3.1.1/kernel/time/timer_list.c 2011-11-16 18:40:44.000000000 -0500
38495 @@ -38,12 +38,16 @@ DECLARE_PER_CPU(struct hrtimer_cpu_base,
38496
38497 static void print_name_offset(struct seq_file *m, void *sym)
38498 @@ -66519,9 +66313,9 @@ diff -urNp linux-3.0.9/kernel/time/timer_list.c linux-3.0.9/kernel/time/timer_li
38499 if (!pe)
38500 return -ENOMEM;
38501 return 0;
38502 -diff -urNp linux-3.0.9/kernel/time/timer_stats.c linux-3.0.9/kernel/time/timer_stats.c
38503 ---- linux-3.0.9/kernel/time/timer_stats.c 2011-11-11 13:12:24.000000000 -0500
38504 -+++ linux-3.0.9/kernel/time/timer_stats.c 2011-11-15 20:03:00.000000000 -0500
38505 +diff -urNp linux-3.1.1/kernel/time/timer_stats.c linux-3.1.1/kernel/time/timer_stats.c
38506 +--- linux-3.1.1/kernel/time/timer_stats.c 2011-11-11 15:19:27.000000000 -0500
38507 ++++ linux-3.1.1/kernel/time/timer_stats.c 2011-11-16 18:40:44.000000000 -0500
38508 @@ -116,7 +116,7 @@ static ktime_t time_start, time_stop;
38509 static unsigned long nr_entries;
38510 static struct entry entries[MAX_ENTRIES];
38511 @@ -66590,9 +66384,9 @@ diff -urNp linux-3.0.9/kernel/time/timer_stats.c linux-3.0.9/kernel/time/timer_s
38512 if (!pe)
38513 return -ENOMEM;
38514 return 0;
38515 -diff -urNp linux-3.0.9/kernel/time.c linux-3.0.9/kernel/time.c
38516 ---- linux-3.0.9/kernel/time.c 2011-11-11 13:12:24.000000000 -0500
38517 -+++ linux-3.0.9/kernel/time.c 2011-11-15 20:03:00.000000000 -0500
38518 +diff -urNp linux-3.1.1/kernel/time.c linux-3.1.1/kernel/time.c
38519 +--- linux-3.1.1/kernel/time.c 2011-11-11 15:19:27.000000000 -0500
38520 ++++ linux-3.1.1/kernel/time.c 2011-11-16 18:40:44.000000000 -0500
38521 @@ -163,6 +163,11 @@ int do_sys_settimeofday(const struct tim
38522 return error;
38523
38524 @@ -66605,9 +66399,9 @@ diff -urNp linux-3.0.9/kernel/time.c linux-3.0.9/kernel/time.c
38525 /* SMP safe, global irq locking makes it work. */
38526 sys_tz = *tz;
38527 update_vsyscall_tz();
38528 -diff -urNp linux-3.0.9/kernel/timer.c linux-3.0.9/kernel/timer.c
38529 ---- linux-3.0.9/kernel/timer.c 2011-11-11 13:12:24.000000000 -0500
38530 -+++ linux-3.0.9/kernel/timer.c 2011-11-15 20:03:00.000000000 -0500
38531 +diff -urNp linux-3.1.1/kernel/timer.c linux-3.1.1/kernel/timer.c
38532 +--- linux-3.1.1/kernel/timer.c 2011-11-11 15:19:27.000000000 -0500
38533 ++++ linux-3.1.1/kernel/timer.c 2011-11-16 18:39:08.000000000 -0500
38534 @@ -1304,7 +1304,7 @@ void update_process_times(int user_tick)
38535 /*
38536 * This function runs timers and the timer-tq in bottom half context.
38537 @@ -66617,10 +66411,10 @@ diff -urNp linux-3.0.9/kernel/timer.c linux-3.0.9/kernel/timer.c
38538 {
38539 struct tvec_base *base = __this_cpu_read(tvec_bases);
38540
38541 -diff -urNp linux-3.0.9/kernel/trace/blktrace.c linux-3.0.9/kernel/trace/blktrace.c
38542 ---- linux-3.0.9/kernel/trace/blktrace.c 2011-11-11 13:12:24.000000000 -0500
38543 -+++ linux-3.0.9/kernel/trace/blktrace.c 2011-11-15 20:03:00.000000000 -0500
38544 -@@ -321,7 +321,7 @@ static ssize_t blk_dropped_read(struct f
38545 +diff -urNp linux-3.1.1/kernel/trace/blktrace.c linux-3.1.1/kernel/trace/blktrace.c
38546 +--- linux-3.1.1/kernel/trace/blktrace.c 2011-11-11 15:19:27.000000000 -0500
38547 ++++ linux-3.1.1/kernel/trace/blktrace.c 2011-11-16 18:39:08.000000000 -0500
38548 +@@ -323,7 +323,7 @@ static ssize_t blk_dropped_read(struct f
38549 struct blk_trace *bt = filp->private_data;
38550 char buf[16];
38551
38552 @@ -66629,7 +66423,7 @@ diff -urNp linux-3.0.9/kernel/trace/blktrace.c linux-3.0.9/kernel/trace/blktrace
38553
38554 return simple_read_from_buffer(buffer, count, ppos, buf, strlen(buf));
38555 }
38556 -@@ -386,7 +386,7 @@ static int blk_subbuf_start_callback(str
38557 +@@ -388,7 +388,7 @@ static int blk_subbuf_start_callback(str
38558 return 1;
38559
38560 bt = buf->chan->private_data;
38561 @@ -66638,7 +66432,7 @@ diff -urNp linux-3.0.9/kernel/trace/blktrace.c linux-3.0.9/kernel/trace/blktrace
38562 return 0;
38563 }
38564
38565 -@@ -487,7 +487,7 @@ int do_blk_trace_setup(struct request_qu
38566 +@@ -489,7 +489,7 @@ int do_blk_trace_setup(struct request_qu
38567
38568 bt->dir = dir;
38569 bt->dev = dev;
38570 @@ -66647,10 +66441,10 @@ diff -urNp linux-3.0.9/kernel/trace/blktrace.c linux-3.0.9/kernel/trace/blktrace
38571
38572 ret = -EIO;
38573 bt->dropped_file = debugfs_create_file("dropped", 0444, dir, bt,
38574 -diff -urNp linux-3.0.9/kernel/trace/ftrace.c linux-3.0.9/kernel/trace/ftrace.c
38575 ---- linux-3.0.9/kernel/trace/ftrace.c 2011-11-11 13:12:24.000000000 -0500
38576 -+++ linux-3.0.9/kernel/trace/ftrace.c 2011-11-15 20:03:00.000000000 -0500
38577 -@@ -1566,12 +1566,17 @@ ftrace_code_disable(struct module *mod,
38578 +diff -urNp linux-3.1.1/kernel/trace/ftrace.c linux-3.1.1/kernel/trace/ftrace.c
38579 +--- linux-3.1.1/kernel/trace/ftrace.c 2011-11-11 15:19:27.000000000 -0500
38580 ++++ linux-3.1.1/kernel/trace/ftrace.c 2011-11-16 18:39:08.000000000 -0500
38581 +@@ -1585,12 +1585,17 @@ ftrace_code_disable(struct module *mod,
38582 if (unlikely(ftrace_disabled))
38583 return 0;
38584
38585 @@ -66670,7 +66464,7 @@ diff -urNp linux-3.0.9/kernel/trace/ftrace.c linux-3.0.9/kernel/trace/ftrace.c
38586 }
38587
38588 /*
38589 -@@ -2570,7 +2575,7 @@ static void ftrace_free_entry_rcu(struct
38590 +@@ -2607,7 +2612,7 @@ static void ftrace_free_entry_rcu(struct
38591
38592 int
38593 register_ftrace_function_probe(char *glob, struct ftrace_probe_ops *ops,
38594 @@ -66679,10 +66473,10 @@ diff -urNp linux-3.0.9/kernel/trace/ftrace.c linux-3.0.9/kernel/trace/ftrace.c
38595 {
38596 struct ftrace_func_probe *entry;
38597 struct ftrace_page *pg;
38598 -diff -urNp linux-3.0.9/kernel/trace/trace.c linux-3.0.9/kernel/trace/trace.c
38599 ---- linux-3.0.9/kernel/trace/trace.c 2011-11-11 13:12:24.000000000 -0500
38600 -+++ linux-3.0.9/kernel/trace/trace.c 2011-11-15 20:03:00.000000000 -0500
38601 -@@ -3339,6 +3339,8 @@ static ssize_t tracing_splice_read_pipe(
38602 +diff -urNp linux-3.1.1/kernel/trace/trace.c linux-3.1.1/kernel/trace/trace.c
38603 +--- linux-3.1.1/kernel/trace/trace.c 2011-11-11 15:19:27.000000000 -0500
38604 ++++ linux-3.1.1/kernel/trace/trace.c 2011-11-16 18:40:44.000000000 -0500
38605 +@@ -3451,6 +3451,8 @@ static ssize_t tracing_splice_read_pipe(
38606 size_t rem;
38607 unsigned int i;
38608
38609 @@ -66691,7 +66485,7 @@ diff -urNp linux-3.0.9/kernel/trace/trace.c linux-3.0.9/kernel/trace/trace.c
38610 if (splice_grow_spd(pipe, &spd))
38611 return -ENOMEM;
38612
38613 -@@ -3822,6 +3824,8 @@ tracing_buffers_splice_read(struct file
38614 +@@ -3926,6 +3928,8 @@ tracing_buffers_splice_read(struct file
38615 int entries, size, i;
38616 size_t ret;
38617
38618 @@ -66700,7 +66494,7 @@ diff -urNp linux-3.0.9/kernel/trace/trace.c linux-3.0.9/kernel/trace/trace.c
38619 if (splice_grow_spd(pipe, &spd))
38620 return -ENOMEM;
38621
38622 -@@ -3990,10 +3994,9 @@ static const struct file_operations trac
38623 +@@ -4093,10 +4097,9 @@ static const struct file_operations trac
38624 };
38625 #endif
38626
38627 @@ -66712,7 +66506,7 @@ diff -urNp linux-3.0.9/kernel/trace/trace.c linux-3.0.9/kernel/trace/trace.c
38628 static int once;
38629
38630 if (d_tracer)
38631 -@@ -4013,10 +4016,9 @@ struct dentry *tracing_init_dentry(void)
38632 +@@ -4116,10 +4119,9 @@ struct dentry *tracing_init_dentry(void)
38633 return d_tracer;
38634 }
38635
38636 @@ -66724,10 +66518,10 @@ diff -urNp linux-3.0.9/kernel/trace/trace.c linux-3.0.9/kernel/trace/trace.c
38637 static int once;
38638 struct dentry *d_tracer;
38639
38640 -diff -urNp linux-3.0.9/kernel/trace/trace_events.c linux-3.0.9/kernel/trace/trace_events.c
38641 ---- linux-3.0.9/kernel/trace/trace_events.c 2011-11-11 13:12:24.000000000 -0500
38642 -+++ linux-3.0.9/kernel/trace/trace_events.c 2011-11-15 20:03:00.000000000 -0500
38643 -@@ -1318,10 +1318,6 @@ static LIST_HEAD(ftrace_module_file_list
38644 +diff -urNp linux-3.1.1/kernel/trace/trace_events.c linux-3.1.1/kernel/trace/trace_events.c
38645 +--- linux-3.1.1/kernel/trace/trace_events.c 2011-11-11 15:19:27.000000000 -0500
38646 ++++ linux-3.1.1/kernel/trace/trace_events.c 2011-11-16 18:39:08.000000000 -0500
38647 +@@ -1300,10 +1300,6 @@ static LIST_HEAD(ftrace_module_file_list
38648 struct ftrace_module_file_ops {
38649 struct list_head list;
38650 struct module *mod;
38651 @@ -66738,7 +66532,7 @@ diff -urNp linux-3.0.9/kernel/trace/trace_events.c linux-3.0.9/kernel/trace/trac
38652 };
38653
38654 static struct ftrace_module_file_ops *
38655 -@@ -1342,17 +1338,12 @@ trace_create_file_ops(struct module *mod
38656 +@@ -1324,17 +1320,12 @@ trace_create_file_ops(struct module *mod
38657
38658 file_ops->mod = mod;
38659
38660 @@ -66762,7 +66556,7 @@ diff -urNp linux-3.0.9/kernel/trace/trace_events.c linux-3.0.9/kernel/trace/trac
38661
38662 list_add(&file_ops->list, &ftrace_module_file_list);
38663
38664 -@@ -1376,8 +1367,8 @@ static void trace_module_add_events(stru
38665 +@@ -1358,8 +1349,8 @@ static void trace_module_add_events(stru
38666
38667 for_each_event(call, start, end) {
38668 __trace_add_event_call(*call, mod,
38669 @@ -66773,9 +66567,9 @@ diff -urNp linux-3.0.9/kernel/trace/trace_events.c linux-3.0.9/kernel/trace/trac
38670 }
38671 }
38672
38673 -diff -urNp linux-3.0.9/kernel/trace/trace_kprobe.c linux-3.0.9/kernel/trace/trace_kprobe.c
38674 ---- linux-3.0.9/kernel/trace/trace_kprobe.c 2011-11-11 13:12:24.000000000 -0500
38675 -+++ linux-3.0.9/kernel/trace/trace_kprobe.c 2011-11-15 20:03:00.000000000 -0500
38676 +diff -urNp linux-3.1.1/kernel/trace/trace_kprobe.c linux-3.1.1/kernel/trace/trace_kprobe.c
38677 +--- linux-3.1.1/kernel/trace/trace_kprobe.c 2011-11-11 15:19:27.000000000 -0500
38678 ++++ linux-3.1.1/kernel/trace/trace_kprobe.c 2011-11-16 18:39:08.000000000 -0500
38679 @@ -217,7 +217,7 @@ static __kprobes void FETCH_FUNC_NAME(me
38680 long ret;
38681 int maxlen = get_rloc_len(*(u32 *)dest);
38682 @@ -66812,9 +66606,9 @@ diff -urNp linux-3.0.9/kernel/trace/trace_kprobe.c linux-3.0.9/kernel/trace/trac
38683 len++;
38684 } while (c && ret == 0 && len < MAX_STRING_SIZE);
38685 pagefault_enable();
38686 -diff -urNp linux-3.0.9/kernel/trace/trace_mmiotrace.c linux-3.0.9/kernel/trace/trace_mmiotrace.c
38687 ---- linux-3.0.9/kernel/trace/trace_mmiotrace.c 2011-11-11 13:12:24.000000000 -0500
38688 -+++ linux-3.0.9/kernel/trace/trace_mmiotrace.c 2011-11-15 20:03:00.000000000 -0500
38689 +diff -urNp linux-3.1.1/kernel/trace/trace_mmiotrace.c linux-3.1.1/kernel/trace/trace_mmiotrace.c
38690 +--- linux-3.1.1/kernel/trace/trace_mmiotrace.c 2011-11-11 15:19:27.000000000 -0500
38691 ++++ linux-3.1.1/kernel/trace/trace_mmiotrace.c 2011-11-16 18:39:08.000000000 -0500
38692 @@ -24,7 +24,7 @@ struct header_iter {
38693 static struct trace_array *mmio_trace_array;
38694 static bool overrun_detected;
38695 @@ -66851,9 +66645,9 @@ diff -urNp linux-3.0.9/kernel/trace/trace_mmiotrace.c linux-3.0.9/kernel/trace/t
38696 return;
38697 }
38698 entry = ring_buffer_event_data(event);
38699 -diff -urNp linux-3.0.9/kernel/trace/trace_output.c linux-3.0.9/kernel/trace/trace_output.c
38700 ---- linux-3.0.9/kernel/trace/trace_output.c 2011-11-11 13:12:24.000000000 -0500
38701 -+++ linux-3.0.9/kernel/trace/trace_output.c 2011-11-15 20:03:00.000000000 -0500
38702 +diff -urNp linux-3.1.1/kernel/trace/trace_output.c linux-3.1.1/kernel/trace/trace_output.c
38703 +--- linux-3.1.1/kernel/trace/trace_output.c 2011-11-11 15:19:27.000000000 -0500
38704 ++++ linux-3.1.1/kernel/trace/trace_output.c 2011-11-16 18:39:08.000000000 -0500
38705 @@ -278,7 +278,7 @@ int trace_seq_path(struct trace_seq *s,
38706
38707 p = d_path(path, s->buffer + s->len, PAGE_SIZE - s->len);
38708 @@ -66863,9 +66657,9 @@ diff -urNp linux-3.0.9/kernel/trace/trace_output.c linux-3.0.9/kernel/trace/trac
38709 if (p) {
38710 s->len = p - s->buffer;
38711 return 1;
38712 -diff -urNp linux-3.0.9/kernel/trace/trace_stack.c linux-3.0.9/kernel/trace/trace_stack.c
38713 ---- linux-3.0.9/kernel/trace/trace_stack.c 2011-11-11 13:12:24.000000000 -0500
38714 -+++ linux-3.0.9/kernel/trace/trace_stack.c 2011-11-15 20:03:00.000000000 -0500
38715 +diff -urNp linux-3.1.1/kernel/trace/trace_stack.c linux-3.1.1/kernel/trace/trace_stack.c
38716 +--- linux-3.1.1/kernel/trace/trace_stack.c 2011-11-11 15:19:27.000000000 -0500
38717 ++++ linux-3.1.1/kernel/trace/trace_stack.c 2011-11-16 18:39:08.000000000 -0500
38718 @@ -50,7 +50,7 @@ static inline void check_stack(void)
38719 return;
38720
38721 @@ -66875,9 +66669,9 @@ diff -urNp linux-3.0.9/kernel/trace/trace_stack.c linux-3.0.9/kernel/trace/trace
38722 return;
38723
38724 local_irq_save(flags);
38725 -diff -urNp linux-3.0.9/kernel/trace/trace_workqueue.c linux-3.0.9/kernel/trace/trace_workqueue.c
38726 ---- linux-3.0.9/kernel/trace/trace_workqueue.c 2011-11-11 13:12:24.000000000 -0500
38727 -+++ linux-3.0.9/kernel/trace/trace_workqueue.c 2011-11-15 20:03:00.000000000 -0500
38728 +diff -urNp linux-3.1.1/kernel/trace/trace_workqueue.c linux-3.1.1/kernel/trace/trace_workqueue.c
38729 +--- linux-3.1.1/kernel/trace/trace_workqueue.c 2011-11-11 15:19:27.000000000 -0500
38730 ++++ linux-3.1.1/kernel/trace/trace_workqueue.c 2011-11-16 18:39:08.000000000 -0500
38731 @@ -22,7 +22,7 @@ struct cpu_workqueue_stats {
38732 int cpu;
38733 pid_t pid;
38734 @@ -66905,10 +66699,10 @@ diff -urNp linux-3.0.9/kernel/trace/trace_workqueue.c linux-3.0.9/kernel/trace/t
38735 tsk->comm);
38736 put_task_struct(tsk);
38737 }
38738 -diff -urNp linux-3.0.9/lib/bitmap.c linux-3.0.9/lib/bitmap.c
38739 ---- linux-3.0.9/lib/bitmap.c 2011-11-11 13:12:24.000000000 -0500
38740 -+++ linux-3.0.9/lib/bitmap.c 2011-11-15 20:03:00.000000000 -0500
38741 -@@ -421,7 +421,7 @@ int __bitmap_parse(const char *buf, unsi
38742 +diff -urNp linux-3.1.1/lib/bitmap.c linux-3.1.1/lib/bitmap.c
38743 +--- linux-3.1.1/lib/bitmap.c 2011-11-11 15:19:27.000000000 -0500
38744 ++++ linux-3.1.1/lib/bitmap.c 2011-11-16 18:39:08.000000000 -0500
38745 +@@ -419,7 +419,7 @@ int __bitmap_parse(const char *buf, unsi
38746 {
38747 int c, old_c, totaldigits, ndigits, nchunks, nbits;
38748 u32 chunk;
38749 @@ -66917,7 +66711,7 @@ diff -urNp linux-3.0.9/lib/bitmap.c linux-3.0.9/lib/bitmap.c
38750
38751 bitmap_zero(maskp, nmaskbits);
38752
38753 -@@ -506,7 +506,7 @@ int bitmap_parse_user(const char __user
38754 +@@ -504,7 +504,7 @@ int bitmap_parse_user(const char __user
38755 {
38756 if (!access_ok(VERIFY_READ, ubuf, ulen))
38757 return -EFAULT;
38758 @@ -66926,7 +66720,7 @@ diff -urNp linux-3.0.9/lib/bitmap.c linux-3.0.9/lib/bitmap.c
38759 }
38760 EXPORT_SYMBOL(bitmap_parse_user);
38761
38762 -@@ -596,7 +596,7 @@ static int __bitmap_parselist(const char
38763 +@@ -594,7 +594,7 @@ static int __bitmap_parselist(const char
38764 {
38765 unsigned a, b;
38766 int c, old_c, totaldigits;
38767 @@ -66935,7 +66729,7 @@ diff -urNp linux-3.0.9/lib/bitmap.c linux-3.0.9/lib/bitmap.c
38768 int exp_digit, in_range;
38769
38770 totaldigits = c = 0;
38771 -@@ -696,7 +696,7 @@ int bitmap_parselist_user(const char __u
38772 +@@ -694,7 +694,7 @@ int bitmap_parselist_user(const char __u
38773 {
38774 if (!access_ok(VERIFY_READ, ubuf, ulen))
38775 return -EFAULT;
38776 @@ -66944,9 +66738,9 @@ diff -urNp linux-3.0.9/lib/bitmap.c linux-3.0.9/lib/bitmap.c
38777 ulen, 1, maskp, nmaskbits);
38778 }
38779 EXPORT_SYMBOL(bitmap_parselist_user);
38780 -diff -urNp linux-3.0.9/lib/bug.c linux-3.0.9/lib/bug.c
38781 ---- linux-3.0.9/lib/bug.c 2011-11-11 13:12:24.000000000 -0500
38782 -+++ linux-3.0.9/lib/bug.c 2011-11-15 20:03:00.000000000 -0500
38783 +diff -urNp linux-3.1.1/lib/bug.c linux-3.1.1/lib/bug.c
38784 +--- linux-3.1.1/lib/bug.c 2011-11-11 15:19:27.000000000 -0500
38785 ++++ linux-3.1.1/lib/bug.c 2011-11-16 18:39:08.000000000 -0500
38786 @@ -133,6 +133,8 @@ enum bug_trap_type report_bug(unsigned l
38787 return BUG_TRAP_TYPE_NONE;
38788
38789 @@ -66956,9 +66750,9 @@ diff -urNp linux-3.0.9/lib/bug.c linux-3.0.9/lib/bug.c
38790
38791 file = NULL;
38792 line = 0;
38793 -diff -urNp linux-3.0.9/lib/debugobjects.c linux-3.0.9/lib/debugobjects.c
38794 ---- linux-3.0.9/lib/debugobjects.c 2011-11-11 13:12:24.000000000 -0500
38795 -+++ linux-3.0.9/lib/debugobjects.c 2011-11-15 20:03:00.000000000 -0500
38796 +diff -urNp linux-3.1.1/lib/debugobjects.c linux-3.1.1/lib/debugobjects.c
38797 +--- linux-3.1.1/lib/debugobjects.c 2011-11-11 15:19:27.000000000 -0500
38798 ++++ linux-3.1.1/lib/debugobjects.c 2011-11-16 18:39:08.000000000 -0500
38799 @@ -284,7 +284,7 @@ static void debug_object_is_on_stack(voi
38800 if (limit > 4)
38801 return;
38802 @@ -66968,18 +66762,18 @@ diff -urNp linux-3.0.9/lib/debugobjects.c linux-3.0.9/lib/debugobjects.c
38803 if (is_on_stack == onstack)
38804 return;
38805
38806 -diff -urNp linux-3.0.9/lib/devres.c linux-3.0.9/lib/devres.c
38807 ---- linux-3.0.9/lib/devres.c 2011-11-11 13:12:24.000000000 -0500
38808 -+++ linux-3.0.9/lib/devres.c 2011-11-15 20:03:00.000000000 -0500
38809 -@@ -81,7 +81,7 @@ void devm_iounmap(struct device *dev, vo
38810 +diff -urNp linux-3.1.1/lib/devres.c linux-3.1.1/lib/devres.c
38811 +--- linux-3.1.1/lib/devres.c 2011-11-11 15:19:27.000000000 -0500
38812 ++++ linux-3.1.1/lib/devres.c 2011-11-16 18:39:08.000000000 -0500
38813 +@@ -80,7 +80,7 @@ EXPORT_SYMBOL(devm_ioremap_nocache);
38814 + void devm_iounmap(struct device *dev, void __iomem *addr)
38815 {
38816 - iounmap(addr);
38817 WARN_ON(devres_destroy(dev, devm_ioremap_release, devm_ioremap_match,
38818 - (void *)addr));
38819 + (void __force *)addr));
38820 + iounmap(addr);
38821 }
38822 EXPORT_SYMBOL(devm_iounmap);
38823 -
38824 @@ -141,7 +141,7 @@ void devm_ioport_unmap(struct device *de
38825 {
38826 ioport_unmap(addr);
38827 @@ -66989,9 +66783,9 @@ diff -urNp linux-3.0.9/lib/devres.c linux-3.0.9/lib/devres.c
38828 }
38829 EXPORT_SYMBOL(devm_ioport_unmap);
38830
38831 -diff -urNp linux-3.0.9/lib/dma-debug.c linux-3.0.9/lib/dma-debug.c
38832 ---- linux-3.0.9/lib/dma-debug.c 2011-11-11 13:12:24.000000000 -0500
38833 -+++ linux-3.0.9/lib/dma-debug.c 2011-11-15 20:03:00.000000000 -0500
38834 +diff -urNp linux-3.1.1/lib/dma-debug.c linux-3.1.1/lib/dma-debug.c
38835 +--- linux-3.1.1/lib/dma-debug.c 2011-11-11 15:19:27.000000000 -0500
38836 ++++ linux-3.1.1/lib/dma-debug.c 2011-11-16 18:39:08.000000000 -0500
38837 @@ -870,7 +870,7 @@ out:
38838
38839 static void check_for_stack(struct device *dev, void *addr)
38840 @@ -67001,9 +66795,9 @@ diff -urNp linux-3.0.9/lib/dma-debug.c linux-3.0.9/lib/dma-debug.c
38841 err_printk(dev, NULL, "DMA-API: device driver maps memory from"
38842 "stack [addr=%p]\n", addr);
38843 }
38844 -diff -urNp linux-3.0.9/lib/extable.c linux-3.0.9/lib/extable.c
38845 ---- linux-3.0.9/lib/extable.c 2011-11-11 13:12:24.000000000 -0500
38846 -+++ linux-3.0.9/lib/extable.c 2011-11-15 20:03:00.000000000 -0500
38847 +diff -urNp linux-3.1.1/lib/extable.c linux-3.1.1/lib/extable.c
38848 +--- linux-3.1.1/lib/extable.c 2011-11-11 15:19:27.000000000 -0500
38849 ++++ linux-3.1.1/lib/extable.c 2011-11-16 18:39:08.000000000 -0500
38850 @@ -13,6 +13,7 @@
38851 #include <linux/init.h>
38852 #include <linux/sort.h>
38853 @@ -67023,9 +66817,9 @@ diff -urNp linux-3.0.9/lib/extable.c linux-3.0.9/lib/extable.c
38854 }
38855
38856 #ifdef CONFIG_MODULES
38857 -diff -urNp linux-3.0.9/lib/inflate.c linux-3.0.9/lib/inflate.c
38858 ---- linux-3.0.9/lib/inflate.c 2011-11-11 13:12:24.000000000 -0500
38859 -+++ linux-3.0.9/lib/inflate.c 2011-11-15 20:03:00.000000000 -0500
38860 +diff -urNp linux-3.1.1/lib/inflate.c linux-3.1.1/lib/inflate.c
38861 +--- linux-3.1.1/lib/inflate.c 2011-11-11 15:19:27.000000000 -0500
38862 ++++ linux-3.1.1/lib/inflate.c 2011-11-16 18:39:08.000000000 -0500
38863 @@ -269,7 +269,7 @@ static void free(void *where)
38864 malloc_ptr = free_mem_ptr;
38865 }
38866 @@ -67035,10 +66829,10 @@ diff -urNp linux-3.0.9/lib/inflate.c linux-3.0.9/lib/inflate.c
38867 #define free(a) kfree(a)
38868 #endif
38869
38870 -diff -urNp linux-3.0.9/lib/Kconfig.debug linux-3.0.9/lib/Kconfig.debug
38871 ---- linux-3.0.9/lib/Kconfig.debug 2011-11-11 13:12:24.000000000 -0500
38872 -+++ linux-3.0.9/lib/Kconfig.debug 2011-11-15 20:03:00.000000000 -0500
38873 -@@ -1088,6 +1088,7 @@ config LATENCYTOP
38874 +diff -urNp linux-3.1.1/lib/Kconfig.debug linux-3.1.1/lib/Kconfig.debug
38875 +--- linux-3.1.1/lib/Kconfig.debug 2011-11-11 15:19:27.000000000 -0500
38876 ++++ linux-3.1.1/lib/Kconfig.debug 2011-11-16 18:40:44.000000000 -0500
38877 +@@ -1091,6 +1091,7 @@ config LATENCYTOP
38878 depends on DEBUG_KERNEL
38879 depends on STACKTRACE_SUPPORT
38880 depends on PROC_FS
38881 @@ -67046,9 +66840,9 @@ diff -urNp linux-3.0.9/lib/Kconfig.debug linux-3.0.9/lib/Kconfig.debug
38882 select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE
38883 select KALLSYMS
38884 select KALLSYMS_ALL
38885 -diff -urNp linux-3.0.9/lib/kref.c linux-3.0.9/lib/kref.c
38886 ---- linux-3.0.9/lib/kref.c 2011-11-11 13:12:24.000000000 -0500
38887 -+++ linux-3.0.9/lib/kref.c 2011-11-15 20:03:00.000000000 -0500
38888 +diff -urNp linux-3.1.1/lib/kref.c linux-3.1.1/lib/kref.c
38889 +--- linux-3.1.1/lib/kref.c 2011-11-11 15:19:27.000000000 -0500
38890 ++++ linux-3.1.1/lib/kref.c 2011-11-16 18:39:08.000000000 -0500
38891 @@ -52,7 +52,7 @@ void kref_get(struct kref *kref)
38892 */
38893 int kref_put(struct kref *kref, void (*release)(struct kref *kref))
38894 @@ -67058,9 +66852,9 @@ diff -urNp linux-3.0.9/lib/kref.c linux-3.0.9/lib/kref.c
38895 WARN_ON(release == (void (*)(struct kref *))kfree);
38896
38897 if (atomic_dec_and_test(&kref->refcount)) {
38898 -diff -urNp linux-3.0.9/lib/radix-tree.c linux-3.0.9/lib/radix-tree.c
38899 ---- linux-3.0.9/lib/radix-tree.c 2011-11-11 13:12:24.000000000 -0500
38900 -+++ linux-3.0.9/lib/radix-tree.c 2011-11-15 20:03:00.000000000 -0500
38901 +diff -urNp linux-3.1.1/lib/radix-tree.c linux-3.1.1/lib/radix-tree.c
38902 +--- linux-3.1.1/lib/radix-tree.c 2011-11-11 15:19:27.000000000 -0500
38903 ++++ linux-3.1.1/lib/radix-tree.c 2011-11-16 18:39:08.000000000 -0500
38904 @@ -80,7 +80,7 @@ struct radix_tree_preload {
38905 int nr;
38906 struct radix_tree_node *nodes[RADIX_TREE_MAX_PATH];
38907 @@ -67070,9 +66864,9 @@ diff -urNp linux-3.0.9/lib/radix-tree.c linux-3.0.9/lib/radix-tree.c
38908
38909 static inline void *ptr_to_indirect(void *ptr)
38910 {
38911 -diff -urNp linux-3.0.9/lib/vsprintf.c linux-3.0.9/lib/vsprintf.c
38912 ---- linux-3.0.9/lib/vsprintf.c 2011-11-11 13:12:24.000000000 -0500
38913 -+++ linux-3.0.9/lib/vsprintf.c 2011-11-15 20:03:00.000000000 -0500
38914 +diff -urNp linux-3.1.1/lib/vsprintf.c linux-3.1.1/lib/vsprintf.c
38915 +--- linux-3.1.1/lib/vsprintf.c 2011-11-11 15:19:27.000000000 -0500
38916 ++++ linux-3.1.1/lib/vsprintf.c 2011-11-16 18:40:44.000000000 -0500
38917 @@ -16,6 +16,9 @@
38918 * - scnprintf and vscnprintf
38919 */
38920 @@ -67083,7 +66877,7 @@ diff -urNp linux-3.0.9/lib/vsprintf.c linux-3.0.9/lib/vsprintf.c
38921 #include <stdarg.h>
38922 #include <linux/module.h>
38923 #include <linux/types.h>
38924 -@@ -435,7 +438,7 @@ char *symbol_string(char *buf, char *end
38925 +@@ -432,7 +435,7 @@ char *symbol_string(char *buf, char *end
38926 char sym[KSYM_SYMBOL_LEN];
38927 if (ext == 'B')
38928 sprint_backtrace(sym, value);
38929 @@ -67092,7 +66886,7 @@ diff -urNp linux-3.0.9/lib/vsprintf.c linux-3.0.9/lib/vsprintf.c
38930 sprint_symbol(sym, value);
38931 else
38932 kallsyms_lookup(value, NULL, NULL, NULL, sym);
38933 -@@ -799,7 +802,11 @@ char *uuid_string(char *buf, char *end,
38934 +@@ -796,7 +799,11 @@ char *uuid_string(char *buf, char *end,
38935 return string(buf, end, uuid, spec);
38936 }
38937
38938 @@ -67104,7 +66898,7 @@ diff -urNp linux-3.0.9/lib/vsprintf.c linux-3.0.9/lib/vsprintf.c
38939
38940 /*
38941 * Show a '%p' thing. A kernel extension is that the '%p' is followed
38942 -@@ -813,6 +820,8 @@ int kptr_restrict __read_mostly;
38943 +@@ -810,6 +817,8 @@ int kptr_restrict __read_mostly;
38944 * - 'S' For symbolic direct pointers with offset
38945 * - 's' For symbolic direct pointers without offset
38946 * - 'B' For backtraced symbolic direct pointers with offset
38947 @@ -67113,7 +66907,7 @@ diff -urNp linux-3.0.9/lib/vsprintf.c linux-3.0.9/lib/vsprintf.c
38948 * - 'R' For decoded struct resource, e.g., [mem 0x0-0x1f 64bit pref]
38949 * - 'r' For raw struct resource, e.g., [mem 0x0-0x1f flags 0x201]
38950 * - 'M' For a 6-byte MAC address, it prints the address in the
38951 -@@ -857,12 +866,12 @@ char *pointer(const char *fmt, char *buf
38952 +@@ -854,12 +863,12 @@ char *pointer(const char *fmt, char *buf
38953 {
38954 if (!ptr && *fmt != 'K') {
38955 /*
38956 @@ -67128,7 +66922,7 @@ diff -urNp linux-3.0.9/lib/vsprintf.c linux-3.0.9/lib/vsprintf.c
38957 }
38958
38959 switch (*fmt) {
38960 -@@ -872,6 +881,13 @@ char *pointer(const char *fmt, char *buf
38961 +@@ -869,6 +878,13 @@ char *pointer(const char *fmt, char *buf
38962 /* Fallthrough */
38963 case 'S':
38964 case 's':
38965 @@ -67142,7 +66936,7 @@ diff -urNp linux-3.0.9/lib/vsprintf.c linux-3.0.9/lib/vsprintf.c
38966 case 'B':
38967 return symbol_string(buf, end, ptr, spec, *fmt);
38968 case 'R':
38969 -@@ -1631,11 +1647,11 @@ int bstr_printf(char *buf, size_t size,
38970 +@@ -1627,11 +1643,11 @@ int bstr_printf(char *buf, size_t size,
38971 typeof(type) value; \
38972 if (sizeof(type) == 8) { \
38973 args = PTR_ALIGN(args, sizeof(u32)); \
38974 @@ -67157,7 +66951,7 @@ diff -urNp linux-3.0.9/lib/vsprintf.c linux-3.0.9/lib/vsprintf.c
38975 } \
38976 args += sizeof(type); \
38977 value; \
38978 -@@ -1698,7 +1714,7 @@ int bstr_printf(char *buf, size_t size,
38979 +@@ -1694,7 +1710,7 @@ int bstr_printf(char *buf, size_t size,
38980 case FORMAT_TYPE_STR: {
38981 const char *str_arg = args;
38982 args += strlen(str_arg) + 1;
38983 @@ -67166,14 +66960,14 @@ diff -urNp linux-3.0.9/lib/vsprintf.c linux-3.0.9/lib/vsprintf.c
38984 break;
38985 }
38986
38987 -diff -urNp linux-3.0.9/localversion-grsec linux-3.0.9/localversion-grsec
38988 ---- linux-3.0.9/localversion-grsec 1969-12-31 19:00:00.000000000 -0500
38989 -+++ linux-3.0.9/localversion-grsec 2011-11-15 20:03:00.000000000 -0500
38990 +diff -urNp linux-3.1.1/localversion-grsec linux-3.1.1/localversion-grsec
38991 +--- linux-3.1.1/localversion-grsec 1969-12-31 19:00:00.000000000 -0500
38992 ++++ linux-3.1.1/localversion-grsec 2011-11-16 18:40:44.000000000 -0500
38993 @@ -0,0 +1 @@
38994 +-grsec
38995 -diff -urNp linux-3.0.9/Makefile linux-3.0.9/Makefile
38996 ---- linux-3.0.9/Makefile 2011-11-11 13:12:24.000000000 -0500
38997 -+++ linux-3.0.9/Makefile 2011-11-15 20:03:00.000000000 -0500
38998 +diff -urNp linux-3.1.1/Makefile linux-3.1.1/Makefile
38999 +--- linux-3.1.1/Makefile 2011-11-11 15:19:27.000000000 -0500
39000 ++++ linux-3.1.1/Makefile 2011-11-16 18:45:38.000000000 -0500
39001 @@ -245,8 +245,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH"
39002
39003 HOSTCC = gcc
39004 @@ -67210,14 +67004,15 @@ diff -urNp linux-3.0.9/Makefile linux-3.0.9/Makefile
39005 $(Q)$(MAKE) $(build)=scripts/basic
39006 $(Q)rm -f .tmp_quiet_recordmcount
39007
39008 -@@ -564,6 +567,36 @@ else
39009 +@@ -564,6 +567,37 @@ else
39010 KBUILD_CFLAGS += -O2
39011 endif
39012
39013 +ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-plugin.sh "$(HOSTCC)" "$(CC)"), y)
39014 +CONSTIFY_PLUGIN := -fplugin=$(objtree)/tools/gcc/constify_plugin.so -DCONSTIFY_PLUGIN
39015 +ifdef CONFIG_PAX_MEMORY_STACKLEAK
39016 -+STACKLEAK_PLUGIN := -fplugin=$(objtree)/tools/gcc/stackleak_plugin.so -fplugin-arg-stackleak_plugin-track-lowest-sp=100
39017 ++STACKLEAK_PLUGIN := -fplugin=$(objtree)/tools/gcc/stackleak_plugin.so -DSTACKLEAK_PLUGIN
39018 ++STACKLEAK_PLUGIN += -fplugin-arg-stackleak_plugin-track-lowest-sp=100
39019 +endif
39020 +ifdef CONFIG_KALLOCSTAT_PLUGIN
39021 +KALLOCSTAT_PLUGIN := -fplugin=$(objtree)/tools/gcc/kallocstat_plugin.so
39022 @@ -67247,7 +67042,7 @@ diff -urNp linux-3.0.9/Makefile linux-3.0.9/Makefile
39023 include $(srctree)/arch/$(SRCARCH)/Makefile
39024
39025 ifneq ($(CONFIG_FRAME_WARN),0)
39026 -@@ -708,7 +741,7 @@ export mod_strip_cmd
39027 +@@ -708,7 +742,7 @@ export mod_strip_cmd
39028
39029
39030 ifeq ($(KBUILD_EXTMOD),)
39031 @@ -67256,7 +67051,7 @@ diff -urNp linux-3.0.9/Makefile linux-3.0.9/Makefile
39032
39033 vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \
39034 $(core-y) $(core-m) $(drivers-y) $(drivers-m) \
39035 -@@ -932,6 +965,7 @@ vmlinux.o: $(modpost-init) $(vmlinux-mai
39036 +@@ -932,6 +966,7 @@ vmlinux.o: $(modpost-init) $(vmlinux-mai
39037
39038 # The actual objects are generated when descending,
39039 # make sure no implicit rule kicks in
39040 @@ -67264,7 +67059,7 @@ diff -urNp linux-3.0.9/Makefile linux-3.0.9/Makefile
39041 $(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): $(vmlinux-dirs) ;
39042
39043 # Handle descending into subdirectories listed in $(vmlinux-dirs)
39044 -@@ -941,7 +975,7 @@ $(sort $(vmlinux-init) $(vmlinux-main))
39045 +@@ -941,7 +976,7 @@ $(sort $(vmlinux-init) $(vmlinux-main))
39046 # Error messages still appears in the original language
39047
39048 PHONY += $(vmlinux-dirs)
39049 @@ -67273,7 +67068,7 @@ diff -urNp linux-3.0.9/Makefile linux-3.0.9/Makefile
39050 $(Q)$(MAKE) $(build)=$@
39051
39052 # Store (new) KERNELRELASE string in include/config/kernel.release
39053 -@@ -986,6 +1020,7 @@ prepare0: archprepare FORCE
39054 +@@ -986,6 +1021,7 @@ prepare0: archprepare FORCE
39055 $(Q)$(MAKE) $(build)=. missing-syscalls
39056
39057 # All the preparing..
39058 @@ -67281,7 +67076,7 @@ diff -urNp linux-3.0.9/Makefile linux-3.0.9/Makefile
39059 prepare: prepare0
39060
39061 # Generate some files
39062 -@@ -1087,6 +1122,7 @@ all: modules
39063 +@@ -1087,6 +1123,7 @@ all: modules
39064 # using awk while concatenating to the final file.
39065
39066 PHONY += modules
39067 @@ -67289,7 +67084,7 @@ diff -urNp linux-3.0.9/Makefile linux-3.0.9/Makefile
39068 modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
39069 $(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order
39070 @$(kecho) ' Building modules, stage 2.';
39071 -@@ -1102,7 +1138,7 @@ modules.builtin: $(vmlinux-dirs:%=%/modu
39072 +@@ -1102,7 +1139,7 @@ modules.builtin: $(vmlinux-dirs:%=%/modu
39073
39074 # Target to prepare building external modules
39075 PHONY += modules_prepare
39076 @@ -67298,7 +67093,7 @@ diff -urNp linux-3.0.9/Makefile linux-3.0.9/Makefile
39077
39078 # Target to install modules
39079 PHONY += modules_install
39080 -@@ -1198,7 +1234,7 @@ distclean: mrproper
39081 +@@ -1198,7 +1235,7 @@ distclean: mrproper
39082 @find $(srctree) $(RCS_FIND_IGNORE) \
39083 \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
39084 -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
39085 @@ -67307,7 +67102,7 @@ diff -urNp linux-3.0.9/Makefile linux-3.0.9/Makefile
39086 -o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \
39087 -type f -print | xargs rm -f
39088
39089 -@@ -1359,6 +1395,7 @@ PHONY += $(module-dirs) modules
39090 +@@ -1360,6 +1397,7 @@ PHONY += $(module-dirs) modules
39091 $(module-dirs): crmodverdir $(objtree)/Module.symvers
39092 $(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@)
39093
39094 @@ -67315,7 +67110,7 @@ diff -urNp linux-3.0.9/Makefile linux-3.0.9/Makefile
39095 modules: $(module-dirs)
39096 @$(kecho) ' Building modules, stage 2.';
39097 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
39098 -@@ -1485,17 +1522,19 @@ else
39099 +@@ -1486,17 +1524,19 @@ else
39100 target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@))
39101 endif
39102
39103 @@ -67339,7 +67134,7 @@ diff -urNp linux-3.0.9/Makefile linux-3.0.9/Makefile
39104 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
39105 %.symtypes: %.c prepare scripts FORCE
39106 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
39107 -@@ -1505,11 +1544,13 @@ endif
39108 +@@ -1506,11 +1546,13 @@ endif
39109 $(cmd_crmodverdir)
39110 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
39111 $(build)=$(build-dir)
39112 @@ -67355,10 +67150,10 @@ diff -urNp linux-3.0.9/Makefile linux-3.0.9/Makefile
39113 $(cmd_crmodverdir)
39114 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
39115 $(build)=$(build-dir) $(@:.ko=.o)
39116 -diff -urNp linux-3.0.9/mm/filemap.c linux-3.0.9/mm/filemap.c
39117 ---- linux-3.0.9/mm/filemap.c 2011-11-11 13:12:24.000000000 -0500
39118 -+++ linux-3.0.9/mm/filemap.c 2011-11-15 20:03:00.000000000 -0500
39119 -@@ -1763,7 +1763,7 @@ int generic_file_mmap(struct file * file
39120 +diff -urNp linux-3.1.1/mm/filemap.c linux-3.1.1/mm/filemap.c
39121 +--- linux-3.1.1/mm/filemap.c 2011-11-11 15:19:27.000000000 -0500
39122 ++++ linux-3.1.1/mm/filemap.c 2011-11-16 18:40:44.000000000 -0500
39123 +@@ -1784,7 +1784,7 @@ int generic_file_mmap(struct file * file
39124 struct address_space *mapping = file->f_mapping;
39125
39126 if (!mapping->a_ops->readpage)
39127 @@ -67367,7 +67162,7 @@ diff -urNp linux-3.0.9/mm/filemap.c linux-3.0.9/mm/filemap.c
39128 file_accessed(file);
39129 vma->vm_ops = &generic_file_vm_ops;
39130 vma->vm_flags |= VM_CAN_NONLINEAR;
39131 -@@ -2169,6 +2169,7 @@ inline int generic_write_checks(struct f
39132 +@@ -2190,6 +2190,7 @@ inline int generic_write_checks(struct f
39133 *pos = i_size_read(inode);
39134
39135 if (limit != RLIM_INFINITY) {
39136 @@ -67375,9 +67170,9 @@ diff -urNp linux-3.0.9/mm/filemap.c linux-3.0.9/mm/filemap.c
39137 if (*pos >= limit) {
39138 send_sig(SIGXFSZ, current, 0);
39139 return -EFBIG;
39140 -diff -urNp linux-3.0.9/mm/fremap.c linux-3.0.9/mm/fremap.c
39141 ---- linux-3.0.9/mm/fremap.c 2011-11-11 13:12:24.000000000 -0500
39142 -+++ linux-3.0.9/mm/fremap.c 2011-11-15 20:03:00.000000000 -0500
39143 +diff -urNp linux-3.1.1/mm/fremap.c linux-3.1.1/mm/fremap.c
39144 +--- linux-3.1.1/mm/fremap.c 2011-11-11 15:19:27.000000000 -0500
39145 ++++ linux-3.1.1/mm/fremap.c 2011-11-16 18:39:08.000000000 -0500
39146 @@ -156,6 +156,11 @@ SYSCALL_DEFINE5(remap_file_pages, unsign
39147 retry:
39148 vma = find_vma(mm, start);
39149 @@ -67390,9 +67185,9 @@ diff -urNp linux-3.0.9/mm/fremap.c linux-3.0.9/mm/fremap.c
39150 /*
39151 * Make sure the vma is shared, that it supports prefaulting,
39152 * and that the remapped range is valid and fully within
39153 -diff -urNp linux-3.0.9/mm/highmem.c linux-3.0.9/mm/highmem.c
39154 ---- linux-3.0.9/mm/highmem.c 2011-11-11 13:12:24.000000000 -0500
39155 -+++ linux-3.0.9/mm/highmem.c 2011-11-15 20:03:00.000000000 -0500
39156 +diff -urNp linux-3.1.1/mm/highmem.c linux-3.1.1/mm/highmem.c
39157 +--- linux-3.1.1/mm/highmem.c 2011-11-11 15:19:27.000000000 -0500
39158 ++++ linux-3.1.1/mm/highmem.c 2011-11-16 18:39:08.000000000 -0500
39159 @@ -125,9 +125,10 @@ static void flush_all_zero_pkmaps(void)
39160 * So no dangers, even with speculative execution.
39161 */
39162 @@ -67418,9 +67213,9 @@ diff -urNp linux-3.0.9/mm/highmem.c linux-3.0.9/mm/highmem.c
39163 pkmap_count[last_pkmap_nr] = 1;
39164 set_page_address(page, (void *)vaddr);
39165
39166 -diff -urNp linux-3.0.9/mm/huge_memory.c linux-3.0.9/mm/huge_memory.c
39167 ---- linux-3.0.9/mm/huge_memory.c 2011-11-11 13:12:24.000000000 -0500
39168 -+++ linux-3.0.9/mm/huge_memory.c 2011-11-15 20:03:00.000000000 -0500
39169 +diff -urNp linux-3.1.1/mm/huge_memory.c linux-3.1.1/mm/huge_memory.c
39170 +--- linux-3.1.1/mm/huge_memory.c 2011-11-11 15:19:27.000000000 -0500
39171 ++++ linux-3.1.1/mm/huge_memory.c 2011-11-16 18:39:08.000000000 -0500
39172 @@ -702,7 +702,7 @@ out:
39173 * run pte_offset_map on the pmd, if an huge pmd could
39174 * materialize from under us from a different thread.
39175 @@ -67430,10 +67225,10 @@ diff -urNp linux-3.0.9/mm/huge_memory.c linux-3.0.9/mm/huge_memory.c
39176 return VM_FAULT_OOM;
39177 /* if an huge pmd materialized from under us just retry later */
39178 if (unlikely(pmd_trans_huge(*pmd)))
39179 -diff -urNp linux-3.0.9/mm/hugetlb.c linux-3.0.9/mm/hugetlb.c
39180 ---- linux-3.0.9/mm/hugetlb.c 2011-11-11 13:12:24.000000000 -0500
39181 -+++ linux-3.0.9/mm/hugetlb.c 2011-11-15 20:03:00.000000000 -0500
39182 -@@ -2339,6 +2339,27 @@ static int unmap_ref_private(struct mm_s
39183 +diff -urNp linux-3.1.1/mm/hugetlb.c linux-3.1.1/mm/hugetlb.c
39184 +--- linux-3.1.1/mm/hugetlb.c 2011-11-11 15:19:27.000000000 -0500
39185 ++++ linux-3.1.1/mm/hugetlb.c 2011-11-16 18:39:08.000000000 -0500
39186 +@@ -2346,6 +2346,27 @@ static int unmap_ref_private(struct mm_s
39187 return 1;
39188 }
39189
39190 @@ -67461,7 +67256,7 @@ diff -urNp linux-3.0.9/mm/hugetlb.c linux-3.0.9/mm/hugetlb.c
39191 /*
39192 * Hugetlb_cow() should be called with page lock of the original hugepage held.
39193 */
39194 -@@ -2440,6 +2461,11 @@ retry_avoidcopy:
39195 +@@ -2447,6 +2468,11 @@ retry_avoidcopy:
39196 make_huge_pte(vma, new_page, 1));
39197 page_remove_rmap(old_page);
39198 hugepage_add_new_anon_rmap(new_page, vma, address);
39199 @@ -67473,7 +67268,7 @@ diff -urNp linux-3.0.9/mm/hugetlb.c linux-3.0.9/mm/hugetlb.c
39200 /* Make the old page be freed below */
39201 new_page = old_page;
39202 mmu_notifier_invalidate_range_end(mm,
39203 -@@ -2591,6 +2617,10 @@ retry:
39204 +@@ -2598,6 +2624,10 @@ retry:
39205 && (vma->vm_flags & VM_SHARED)));
39206 set_huge_pte_at(mm, address, ptep, new_pte);
39207
39208 @@ -67484,7 +67279,7 @@ diff -urNp linux-3.0.9/mm/hugetlb.c linux-3.0.9/mm/hugetlb.c
39209 if ((flags & FAULT_FLAG_WRITE) && !(vma->vm_flags & VM_SHARED)) {
39210 /* Optimization, do the COW without a second fault */
39211 ret = hugetlb_cow(mm, vma, address, ptep, new_pte, page);
39212 -@@ -2620,6 +2650,10 @@ int hugetlb_fault(struct mm_struct *mm,
39213 +@@ -2627,6 +2657,10 @@ int hugetlb_fault(struct mm_struct *mm,
39214 static DEFINE_MUTEX(hugetlb_instantiation_mutex);
39215 struct hstate *h = hstate_vma(vma);
39216
39217 @@ -67495,7 +67290,7 @@ diff -urNp linux-3.0.9/mm/hugetlb.c linux-3.0.9/mm/hugetlb.c
39218 ptep = huge_pte_offset(mm, address);
39219 if (ptep) {
39220 entry = huge_ptep_get(ptep);
39221 -@@ -2631,6 +2665,26 @@ int hugetlb_fault(struct mm_struct *mm,
39222 +@@ -2638,6 +2672,26 @@ int hugetlb_fault(struct mm_struct *mm,
39223 VM_FAULT_SET_HINDEX(h - hstates);
39224 }
39225
39226 @@ -67522,9 +67317,9 @@ diff -urNp linux-3.0.9/mm/hugetlb.c linux-3.0.9/mm/hugetlb.c
39227 ptep = huge_pte_alloc(mm, address, huge_page_size(h));
39228 if (!ptep)
39229 return VM_FAULT_OOM;
39230 -diff -urNp linux-3.0.9/mm/internal.h linux-3.0.9/mm/internal.h
39231 ---- linux-3.0.9/mm/internal.h 2011-11-11 13:12:24.000000000 -0500
39232 -+++ linux-3.0.9/mm/internal.h 2011-11-15 20:03:00.000000000 -0500
39233 +diff -urNp linux-3.1.1/mm/internal.h linux-3.1.1/mm/internal.h
39234 +--- linux-3.1.1/mm/internal.h 2011-11-11 15:19:27.000000000 -0500
39235 ++++ linux-3.1.1/mm/internal.h 2011-11-16 18:39:08.000000000 -0500
39236 @@ -95,6 +95,7 @@ extern void putback_lru_page(struct page
39237 * in mm/page_alloc.c
39238 */
39239 @@ -67533,9 +67328,9 @@ diff -urNp linux-3.0.9/mm/internal.h linux-3.0.9/mm/internal.h
39240 extern void prep_compound_page(struct page *page, unsigned long order);
39241 #ifdef CONFIG_MEMORY_FAILURE
39242 extern bool is_free_buddy_page(struct page *page);
39243 -diff -urNp linux-3.0.9/mm/Kconfig linux-3.0.9/mm/Kconfig
39244 ---- linux-3.0.9/mm/Kconfig 2011-11-11 13:12:24.000000000 -0500
39245 -+++ linux-3.0.9/mm/Kconfig 2011-11-15 20:03:00.000000000 -0500
39246 +diff -urNp linux-3.1.1/mm/Kconfig linux-3.1.1/mm/Kconfig
39247 +--- linux-3.1.1/mm/Kconfig 2011-11-11 15:19:27.000000000 -0500
39248 ++++ linux-3.1.1/mm/Kconfig 2011-11-16 18:40:44.000000000 -0500
39249 @@ -240,7 +240,7 @@ config KSM
39250 config DEFAULT_MMAP_MIN_ADDR
39251 int "Low address space to protect from user allocation"
39252 @@ -67545,9 +67340,9 @@ diff -urNp linux-3.0.9/mm/Kconfig linux-3.0.9/mm/Kconfig
39253 help
39254 This is the portion of low virtual memory which should be protected
39255 from userspace allocation. Keeping a user from writing to low pages
39256 -diff -urNp linux-3.0.9/mm/kmemleak.c linux-3.0.9/mm/kmemleak.c
39257 ---- linux-3.0.9/mm/kmemleak.c 2011-11-11 13:12:24.000000000 -0500
39258 -+++ linux-3.0.9/mm/kmemleak.c 2011-11-15 20:03:00.000000000 -0500
39259 +diff -urNp linux-3.1.1/mm/kmemleak.c linux-3.1.1/mm/kmemleak.c
39260 +--- linux-3.1.1/mm/kmemleak.c 2011-11-11 15:19:27.000000000 -0500
39261 ++++ linux-3.1.1/mm/kmemleak.c 2011-11-16 18:40:44.000000000 -0500
39262 @@ -357,7 +357,7 @@ static void print_unreferenced(struct se
39263
39264 for (i = 0; i < object->trace_len; i++) {
39265 @@ -67557,9 +67352,9 @@ diff -urNp linux-3.0.9/mm/kmemleak.c linux-3.0.9/mm/kmemleak.c
39266 }
39267 }
39268
39269 -diff -urNp linux-3.0.9/mm/maccess.c linux-3.0.9/mm/maccess.c
39270 ---- linux-3.0.9/mm/maccess.c 2011-11-11 13:12:24.000000000 -0500
39271 -+++ linux-3.0.9/mm/maccess.c 2011-11-15 20:03:00.000000000 -0500
39272 +diff -urNp linux-3.1.1/mm/maccess.c linux-3.1.1/mm/maccess.c
39273 +--- linux-3.1.1/mm/maccess.c 2011-11-11 15:19:27.000000000 -0500
39274 ++++ linux-3.1.1/mm/maccess.c 2011-11-16 18:39:08.000000000 -0500
39275 @@ -26,7 +26,7 @@ long __probe_kernel_read(void *dst, cons
39276 set_fs(KERNEL_DS);
39277 pagefault_disable();
39278 @@ -67578,9 +67373,9 @@ diff -urNp linux-3.0.9/mm/maccess.c linux-3.0.9/mm/maccess.c
39279 pagefault_enable();
39280 set_fs(old_fs);
39281
39282 -diff -urNp linux-3.0.9/mm/madvise.c linux-3.0.9/mm/madvise.c
39283 ---- linux-3.0.9/mm/madvise.c 2011-11-11 13:12:24.000000000 -0500
39284 -+++ linux-3.0.9/mm/madvise.c 2011-11-15 20:03:00.000000000 -0500
39285 +diff -urNp linux-3.1.1/mm/madvise.c linux-3.1.1/mm/madvise.c
39286 +--- linux-3.1.1/mm/madvise.c 2011-11-11 15:19:27.000000000 -0500
39287 ++++ linux-3.1.1/mm/madvise.c 2011-11-16 18:39:08.000000000 -0500
39288 @@ -45,6 +45,10 @@ static long madvise_behavior(struct vm_a
39289 pgoff_t pgoff;
39290 unsigned long new_flags = vma->vm_flags;
39291 @@ -67657,9 +67452,9 @@ diff -urNp linux-3.0.9/mm/madvise.c linux-3.0.9/mm/madvise.c
39292 error = 0;
39293 if (end == start)
39294 goto out;
39295 -diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39296 ---- linux-3.0.9/mm/memory.c 2011-11-11 13:12:24.000000000 -0500
39297 -+++ linux-3.0.9/mm/memory.c 2011-11-15 20:03:00.000000000 -0500
39298 +diff -urNp linux-3.1.1/mm/memory.c linux-3.1.1/mm/memory.c
39299 +--- linux-3.1.1/mm/memory.c 2011-11-11 15:19:27.000000000 -0500
39300 ++++ linux-3.1.1/mm/memory.c 2011-11-16 18:39:08.000000000 -0500
39301 @@ -457,8 +457,12 @@ static inline void free_pmd_range(struct
39302 return;
39303
39304 @@ -67686,7 +67481,7 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39305 }
39306
39307 /*
39308 -@@ -1577,12 +1584,6 @@ no_page_table:
39309 +@@ -1566,12 +1573,6 @@ no_page_table:
39310 return page;
39311 }
39312
39313 @@ -67699,7 +67494,7 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39314 /**
39315 * __get_user_pages() - pin user pages in memory
39316 * @tsk: task_struct of target task
39317 -@@ -1655,10 +1656,10 @@ int __get_user_pages(struct task_struct
39318 +@@ -1644,10 +1645,10 @@ int __get_user_pages(struct task_struct
39319 (VM_MAYREAD | VM_MAYWRITE) : (VM_READ | VM_WRITE);
39320 i = 0;
39321
39322 @@ -67712,7 +67507,7 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39323 if (!vma && in_gate_area(mm, start)) {
39324 unsigned long pg = start & PAGE_MASK;
39325 pgd_t *pgd;
39326 -@@ -1706,7 +1707,7 @@ int __get_user_pages(struct task_struct
39327 +@@ -1695,7 +1696,7 @@ int __get_user_pages(struct task_struct
39328 goto next_page;
39329 }
39330
39331 @@ -67721,7 +67516,7 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39332 (vma->vm_flags & (VM_IO | VM_PFNMAP)) ||
39333 !(vm_flags & vma->vm_flags))
39334 return i ? : -EFAULT;
39335 -@@ -1733,11 +1734,6 @@ int __get_user_pages(struct task_struct
39336 +@@ -1722,11 +1723,6 @@ int __get_user_pages(struct task_struct
39337 int ret;
39338 unsigned int fault_flags = 0;
39339
39340 @@ -67733,7 +67528,7 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39341 if (foll_flags & FOLL_WRITE)
39342 fault_flags |= FAULT_FLAG_WRITE;
39343 if (nonblocking)
39344 -@@ -1811,7 +1807,7 @@ next_page:
39345 +@@ -1800,7 +1796,7 @@ next_page:
39346 start += PAGE_SIZE;
39347 nr_pages--;
39348 } while (nr_pages && start < vma->vm_end);
39349 @@ -67742,7 +67537,7 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39350 return i;
39351 }
39352 EXPORT_SYMBOL(__get_user_pages);
39353 -@@ -2018,6 +2014,10 @@ static int insert_page(struct vm_area_st
39354 +@@ -2007,6 +2003,10 @@ static int insert_page(struct vm_area_st
39355 page_add_file_rmap(page);
39356 set_pte_at(mm, addr, pte, mk_pte(page, prot));
39357
39358 @@ -67753,7 +67548,7 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39359 retval = 0;
39360 pte_unmap_unlock(pte, ptl);
39361 return retval;
39362 -@@ -2052,10 +2052,22 @@ out:
39363 +@@ -2041,10 +2041,22 @@ out:
39364 int vm_insert_page(struct vm_area_struct *vma, unsigned long addr,
39365 struct page *page)
39366 {
39367 @@ -67776,7 +67571,7 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39368 vma->vm_flags |= VM_INSERTPAGE;
39369 return insert_page(vma, addr, page, vma->vm_page_prot);
39370 }
39371 -@@ -2141,6 +2153,7 @@ int vm_insert_mixed(struct vm_area_struc
39372 +@@ -2130,6 +2142,7 @@ int vm_insert_mixed(struct vm_area_struc
39373 unsigned long pfn)
39374 {
39375 BUG_ON(!(vma->vm_flags & VM_MIXEDMAP));
39376 @@ -67784,7 +67579,7 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39377
39378 if (addr < vma->vm_start || addr >= vma->vm_end)
39379 return -EFAULT;
39380 -@@ -2456,6 +2469,186 @@ static inline void cow_user_page(struct
39381 +@@ -2445,6 +2458,186 @@ static inline void cow_user_page(struct
39382 copy_user_highpage(dst, src, va, vma);
39383 }
39384
39385 @@ -67971,7 +67766,7 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39386 /*
39387 * This routine handles present pages, when users try to write
39388 * to a shared page. It is done by copying the page to a new address
39389 -@@ -2667,6 +2860,12 @@ gotten:
39390 +@@ -2656,6 +2849,12 @@ gotten:
39391 */
39392 page_table = pte_offset_map_lock(mm, pmd, address, &ptl);
39393 if (likely(pte_same(*page_table, orig_pte))) {
39394 @@ -67984,7 +67779,7 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39395 if (old_page) {
39396 if (!PageAnon(old_page)) {
39397 dec_mm_counter_fast(mm, MM_FILEPAGES);
39398 -@@ -2718,6 +2917,10 @@ gotten:
39399 +@@ -2707,6 +2906,10 @@ gotten:
39400 page_remove_rmap(old_page);
39401 }
39402
39403 @@ -67995,7 +67790,7 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39404 /* Free the old page.. */
39405 new_page = old_page;
39406 ret |= VM_FAULT_WRITE;
39407 -@@ -2997,6 +3200,11 @@ static int do_swap_page(struct mm_struct
39408 +@@ -2986,6 +3189,11 @@ static int do_swap_page(struct mm_struct
39409 swap_free(entry);
39410 if (vm_swap_full() || (vma->vm_flags & VM_LOCKED) || PageMlocked(page))
39411 try_to_free_swap(page);
39412 @@ -68007,7 +67802,7 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39413 unlock_page(page);
39414 if (swapcache) {
39415 /*
39416 -@@ -3020,6 +3228,11 @@ static int do_swap_page(struct mm_struct
39417 +@@ -3009,6 +3217,11 @@ static int do_swap_page(struct mm_struct
39418
39419 /* No need to invalidate - it was non-present before */
39420 update_mmu_cache(vma, address, page_table);
39421 @@ -68019,7 +67814,7 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39422 unlock:
39423 pte_unmap_unlock(page_table, ptl);
39424 out:
39425 -@@ -3039,40 +3252,6 @@ out_release:
39426 +@@ -3028,40 +3241,6 @@ out_release:
39427 }
39428
39429 /*
39430 @@ -68060,7 +67855,7 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39431 * We enter with non-exclusive mmap_sem (to exclude vma changes,
39432 * but allow concurrent faults), and pte mapped but not yet locked.
39433 * We return with mmap_sem still held, but pte unmapped and unlocked.
39434 -@@ -3081,27 +3260,23 @@ static int do_anonymous_page(struct mm_s
39435 +@@ -3070,27 +3249,23 @@ static int do_anonymous_page(struct mm_s
39436 unsigned long address, pte_t *page_table, pmd_t *pmd,
39437 unsigned int flags)
39438 {
39439 @@ -68093,7 +67888,7 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39440 if (unlikely(anon_vma_prepare(vma)))
39441 goto oom;
39442 page = alloc_zeroed_user_highpage_movable(vma, address);
39443 -@@ -3120,6 +3295,11 @@ static int do_anonymous_page(struct mm_s
39444 +@@ -3109,6 +3284,11 @@ static int do_anonymous_page(struct mm_s
39445 if (!pte_none(*page_table))
39446 goto release;
39447
39448 @@ -68105,7 +67900,7 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39449 inc_mm_counter_fast(mm, MM_ANONPAGES);
39450 page_add_new_anon_rmap(page, vma, address);
39451 setpte:
39452 -@@ -3127,6 +3307,12 @@ setpte:
39453 +@@ -3116,6 +3296,12 @@ setpte:
39454
39455 /* No need to invalidate - it was non-present before */
39456 update_mmu_cache(vma, address, page_table);
39457 @@ -68118,7 +67913,7 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39458 unlock:
39459 pte_unmap_unlock(page_table, ptl);
39460 return 0;
39461 -@@ -3264,6 +3450,12 @@ static int __do_fault(struct mm_struct *
39462 +@@ -3259,6 +3445,12 @@ static int __do_fault(struct mm_struct *
39463 */
39464 /* Only go through if we didn't race with anybody else... */
39465 if (likely(pte_same(*page_table, orig_pte))) {
39466 @@ -68131,7 +67926,7 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39467 flush_icache_page(vma, page);
39468 entry = mk_pte(page, vma->vm_page_prot);
39469 if (flags & FAULT_FLAG_WRITE)
39470 -@@ -3283,6 +3475,14 @@ static int __do_fault(struct mm_struct *
39471 +@@ -3278,6 +3470,14 @@ static int __do_fault(struct mm_struct *
39472
39473 /* no need to invalidate: a not-present page won't be cached */
39474 update_mmu_cache(vma, address, page_table);
39475 @@ -68144,9 +67939,9 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39476 +#endif
39477 +
39478 } else {
39479 - if (charged)
39480 - mem_cgroup_uncharge_page(page);
39481 -@@ -3430,6 +3630,12 @@ int handle_pte_fault(struct mm_struct *m
39482 + if (cow_page)
39483 + mem_cgroup_uncharge_page(cow_page);
39484 +@@ -3431,6 +3631,12 @@ int handle_pte_fault(struct mm_struct *m
39485 if (flags & FAULT_FLAG_WRITE)
39486 flush_tlb_fix_spurious_fault(vma, address);
39487 }
39488 @@ -68159,7 +67954,7 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39489 unlock:
39490 pte_unmap_unlock(pte, ptl);
39491 return 0;
39492 -@@ -3446,6 +3652,10 @@ int handle_mm_fault(struct mm_struct *mm
39493 +@@ -3447,6 +3653,10 @@ int handle_mm_fault(struct mm_struct *mm
39494 pmd_t *pmd;
39495 pte_t *pte;
39496
39497 @@ -68170,7 +67965,7 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39498 __set_current_state(TASK_RUNNING);
39499
39500 count_vm_event(PGFAULT);
39501 -@@ -3457,6 +3667,34 @@ int handle_mm_fault(struct mm_struct *mm
39502 +@@ -3458,6 +3668,34 @@ int handle_mm_fault(struct mm_struct *mm
39503 if (unlikely(is_vm_hugetlb_page(vma)))
39504 return hugetlb_fault(mm, vma, address, flags);
39505
39506 @@ -68205,7 +68000,7 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39507 pgd = pgd_offset(mm, address);
39508 pud = pud_alloc(mm, pgd, address);
39509 if (!pud)
39510 -@@ -3486,7 +3724,7 @@ int handle_mm_fault(struct mm_struct *mm
39511 +@@ -3487,7 +3725,7 @@ int handle_mm_fault(struct mm_struct *mm
39512 * run pte_offset_map on the pmd, if an huge pmd could
39513 * materialize from under us from a different thread.
39514 */
39515 @@ -68214,7 +68009,7 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39516 return VM_FAULT_OOM;
39517 /* if an huge pmd materialized from under us just retry later */
39518 if (unlikely(pmd_trans_huge(*pmd)))
39519 -@@ -3590,7 +3828,7 @@ static int __init gate_vma_init(void)
39520 +@@ -3591,7 +3829,7 @@ static int __init gate_vma_init(void)
39521 gate_vma.vm_start = FIXADDR_USER_START;
39522 gate_vma.vm_end = FIXADDR_USER_END;
39523 gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC;
39524 @@ -68223,10 +68018,10 @@ diff -urNp linux-3.0.9/mm/memory.c linux-3.0.9/mm/memory.c
39525 /*
39526 * Make sure the vDSO gets into every core dump.
39527 * Dumping its contents makes post-mortem fully interpretable later
39528 -diff -urNp linux-3.0.9/mm/memory-failure.c linux-3.0.9/mm/memory-failure.c
39529 ---- linux-3.0.9/mm/memory-failure.c 2011-11-11 13:12:24.000000000 -0500
39530 -+++ linux-3.0.9/mm/memory-failure.c 2011-11-15 20:03:00.000000000 -0500
39531 -@@ -59,7 +59,7 @@ int sysctl_memory_failure_early_kill __r
39532 +diff -urNp linux-3.1.1/mm/memory-failure.c linux-3.1.1/mm/memory-failure.c
39533 +--- linux-3.1.1/mm/memory-failure.c 2011-11-11 15:19:27.000000000 -0500
39534 ++++ linux-3.1.1/mm/memory-failure.c 2011-11-16 18:39:08.000000000 -0500
39535 +@@ -60,7 +60,7 @@ int sysctl_memory_failure_early_kill __r
39536
39537 int sysctl_memory_failure_recovery __read_mostly = 1;
39538
39539 @@ -68235,7 +68030,7 @@ diff -urNp linux-3.0.9/mm/memory-failure.c linux-3.0.9/mm/memory-failure.c
39540
39541 #if defined(CONFIG_HWPOISON_INJECT) || defined(CONFIG_HWPOISON_INJECT_MODULE)
39542
39543 -@@ -200,7 +200,7 @@ static int kill_proc_ao(struct task_stru
39544 +@@ -201,7 +201,7 @@ static int kill_proc_ao(struct task_stru
39545 si.si_signo = SIGBUS;
39546 si.si_errno = 0;
39547 si.si_code = BUS_MCEERR_AO;
39548 @@ -68244,7 +68039,7 @@ diff -urNp linux-3.0.9/mm/memory-failure.c linux-3.0.9/mm/memory-failure.c
39549 #ifdef __ARCH_SI_TRAPNO
39550 si.si_trapno = trapno;
39551 #endif
39552 -@@ -1008,7 +1008,7 @@ int __memory_failure(unsigned long pfn,
39553 +@@ -1009,7 +1009,7 @@ int __memory_failure(unsigned long pfn,
39554 }
39555
39556 nr_pages = 1 << compound_trans_order(hpage);
39557 @@ -68253,7 +68048,7 @@ diff -urNp linux-3.0.9/mm/memory-failure.c linux-3.0.9/mm/memory-failure.c
39558
39559 /*
39560 * We need/can do nothing about count=0 pages.
39561 -@@ -1038,7 +1038,7 @@ int __memory_failure(unsigned long pfn,
39562 +@@ -1039,7 +1039,7 @@ int __memory_failure(unsigned long pfn,
39563 if (!PageHWPoison(hpage)
39564 || (hwpoison_filter(p) && TestClearPageHWPoison(p))
39565 || (p != hpage && TestSetPageHWPoison(hpage))) {
39566 @@ -68262,7 +68057,7 @@ diff -urNp linux-3.0.9/mm/memory-failure.c linux-3.0.9/mm/memory-failure.c
39567 return 0;
39568 }
39569 set_page_hwpoison_huge_page(hpage);
39570 -@@ -1096,7 +1096,7 @@ int __memory_failure(unsigned long pfn,
39571 +@@ -1097,7 +1097,7 @@ int __memory_failure(unsigned long pfn,
39572 }
39573 if (hwpoison_filter(p)) {
39574 if (TestClearPageHWPoison(p))
39575 @@ -68271,7 +68066,7 @@ diff -urNp linux-3.0.9/mm/memory-failure.c linux-3.0.9/mm/memory-failure.c
39576 unlock_page(hpage);
39577 put_page(hpage);
39578 return 0;
39579 -@@ -1222,7 +1222,7 @@ int unpoison_memory(unsigned long pfn)
39580 +@@ -1314,7 +1314,7 @@ int unpoison_memory(unsigned long pfn)
39581 return 0;
39582 }
39583 if (TestClearPageHWPoison(p))
39584 @@ -68280,7 +68075,7 @@ diff -urNp linux-3.0.9/mm/memory-failure.c linux-3.0.9/mm/memory-failure.c
39585 pr_info("MCE: Software-unpoisoned free page %#lx\n", pfn);
39586 return 0;
39587 }
39588 -@@ -1236,7 +1236,7 @@ int unpoison_memory(unsigned long pfn)
39589 +@@ -1328,7 +1328,7 @@ int unpoison_memory(unsigned long pfn)
39590 */
39591 if (TestClearPageHWPoison(page)) {
39592 pr_info("MCE: Software-unpoisoned page %#lx\n", pfn);
39593 @@ -68289,7 +68084,7 @@ diff -urNp linux-3.0.9/mm/memory-failure.c linux-3.0.9/mm/memory-failure.c
39594 freeit = 1;
39595 if (PageHuge(page))
39596 clear_page_hwpoison_huge_page(page);
39597 -@@ -1349,7 +1349,7 @@ static int soft_offline_huge_page(struct
39598 +@@ -1441,7 +1441,7 @@ static int soft_offline_huge_page(struct
39599 }
39600 done:
39601 if (!PageHWPoison(hpage))
39602 @@ -68298,7 +68093,7 @@ diff -urNp linux-3.0.9/mm/memory-failure.c linux-3.0.9/mm/memory-failure.c
39603 set_page_hwpoison_huge_page(hpage);
39604 dequeue_hwpoisoned_huge_page(hpage);
39605 /* keep elevated page count for bad page */
39606 -@@ -1480,7 +1480,7 @@ int soft_offline_page(struct page *page,
39607 +@@ -1572,7 +1572,7 @@ int soft_offline_page(struct page *page,
39608 return ret;
39609
39610 done:
39611 @@ -68307,9 +68102,9 @@ diff -urNp linux-3.0.9/mm/memory-failure.c linux-3.0.9/mm/memory-failure.c
39612 SetPageHWPoison(page);
39613 /* keep elevated page count for bad page */
39614 return ret;
39615 -diff -urNp linux-3.0.9/mm/mempolicy.c linux-3.0.9/mm/mempolicy.c
39616 ---- linux-3.0.9/mm/mempolicy.c 2011-11-11 13:12:24.000000000 -0500
39617 -+++ linux-3.0.9/mm/mempolicy.c 2011-11-15 20:03:00.000000000 -0500
39618 +diff -urNp linux-3.1.1/mm/mempolicy.c linux-3.1.1/mm/mempolicy.c
39619 +--- linux-3.1.1/mm/mempolicy.c 2011-11-11 15:19:27.000000000 -0500
39620 ++++ linux-3.1.1/mm/mempolicy.c 2011-11-16 18:40:44.000000000 -0500
39621 @@ -639,6 +639,10 @@ static int mbind_range(struct mm_struct
39622 unsigned long vmstart;
39623 unsigned long vmend;
39624 @@ -68381,9 +68176,9 @@ diff -urNp linux-3.0.9/mm/mempolicy.c linux-3.0.9/mm/mempolicy.c
39625 rcu_read_unlock();
39626 err = -EPERM;
39627 goto out;
39628 -diff -urNp linux-3.0.9/mm/migrate.c linux-3.0.9/mm/migrate.c
39629 ---- linux-3.0.9/mm/migrate.c 2011-11-11 13:12:24.000000000 -0500
39630 -+++ linux-3.0.9/mm/migrate.c 2011-11-15 20:03:00.000000000 -0500
39631 +diff -urNp linux-3.1.1/mm/migrate.c linux-3.1.1/mm/migrate.c
39632 +--- linux-3.1.1/mm/migrate.c 2011-11-11 15:19:27.000000000 -0500
39633 ++++ linux-3.1.1/mm/migrate.c 2011-11-16 18:40:44.000000000 -0500
39634 @@ -1124,6 +1124,8 @@ static int do_pages_move(struct mm_struc
39635 unsigned long chunk_start;
39636 int err;
39637 @@ -68418,9 +68213,9 @@ diff -urNp linux-3.0.9/mm/migrate.c linux-3.0.9/mm/migrate.c
39638 rcu_read_unlock();
39639 err = -EPERM;
39640 goto out;
39641 -diff -urNp linux-3.0.9/mm/mlock.c linux-3.0.9/mm/mlock.c
39642 ---- linux-3.0.9/mm/mlock.c 2011-11-11 13:12:24.000000000 -0500
39643 -+++ linux-3.0.9/mm/mlock.c 2011-11-15 20:03:00.000000000 -0500
39644 +diff -urNp linux-3.1.1/mm/mlock.c linux-3.1.1/mm/mlock.c
39645 +--- linux-3.1.1/mm/mlock.c 2011-11-11 15:19:27.000000000 -0500
39646 ++++ linux-3.1.1/mm/mlock.c 2011-11-16 18:40:44.000000000 -0500
39647 @@ -13,6 +13,7 @@
39648 #include <linux/pagemap.h>
39649 #include <linux/mempolicy.h>
39650 @@ -68494,9 +68289,9 @@ diff -urNp linux-3.0.9/mm/mlock.c linux-3.0.9/mm/mlock.c
39651 if (!(flags & MCL_CURRENT) || (current->mm->total_vm <= lock_limit) ||
39652 capable(CAP_IPC_LOCK))
39653 ret = do_mlockall(flags);
39654 -diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39655 ---- linux-3.0.9/mm/mmap.c 2011-11-11 13:12:24.000000000 -0500
39656 -+++ linux-3.0.9/mm/mmap.c 2011-11-15 20:03:00.000000000 -0500
39657 +diff -urNp linux-3.1.1/mm/mmap.c linux-3.1.1/mm/mmap.c
39658 +--- linux-3.1.1/mm/mmap.c 2011-11-11 15:19:27.000000000 -0500
39659 ++++ linux-3.1.1/mm/mmap.c 2011-11-16 18:40:44.000000000 -0500
39660 @@ -46,6 +46,16 @@
39661 #define arch_rebalance_pgtables(addr, len) (addr)
39662 #endif
39663 @@ -68550,7 +68345,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39664 /*
39665 * Make sure vm_committed_as in one cacheline and not cacheline shared with
39666 * other variables. It can be updated by several CPUs frequently.
39667 -@@ -236,6 +256,7 @@ static struct vm_area_struct *remove_vma
39668 +@@ -228,6 +248,7 @@ static struct vm_area_struct *remove_vma
39669 struct vm_area_struct *next = vma->vm_next;
39670
39671 might_sleep();
39672 @@ -68558,7 +68353,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39673 if (vma->vm_ops && vma->vm_ops->close)
39674 vma->vm_ops->close(vma);
39675 if (vma->vm_file) {
39676 -@@ -280,6 +301,7 @@ SYSCALL_DEFINE1(brk, unsigned long, brk)
39677 +@@ -272,6 +293,7 @@ SYSCALL_DEFINE1(brk, unsigned long, brk)
39678 * not page aligned -Ram Gupta
39679 */
39680 rlim = rlimit(RLIMIT_DATA);
39681 @@ -68566,7 +68361,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39682 if (rlim < RLIM_INFINITY && (brk - mm->start_brk) +
39683 (mm->end_data - mm->start_data) > rlim)
39684 goto out;
39685 -@@ -697,6 +719,12 @@ static int
39686 +@@ -689,6 +711,12 @@ static int
39687 can_vma_merge_before(struct vm_area_struct *vma, unsigned long vm_flags,
39688 struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff)
39689 {
39690 @@ -68579,7 +68374,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39691 if (is_mergeable_vma(vma, file, vm_flags) &&
39692 is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) {
39693 if (vma->vm_pgoff == vm_pgoff)
39694 -@@ -716,6 +744,12 @@ static int
39695 +@@ -708,6 +736,12 @@ static int
39696 can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags,
39697 struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff)
39698 {
39699 @@ -68592,7 +68387,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39700 if (is_mergeable_vma(vma, file, vm_flags) &&
39701 is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) {
39702 pgoff_t vm_pglen;
39703 -@@ -758,13 +792,20 @@ can_vma_merge_after(struct vm_area_struc
39704 +@@ -750,13 +784,20 @@ can_vma_merge_after(struct vm_area_struc
39705 struct vm_area_struct *vma_merge(struct mm_struct *mm,
39706 struct vm_area_struct *prev, unsigned long addr,
39707 unsigned long end, unsigned long vm_flags,
39708 @@ -68614,7 +68409,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39709 /*
39710 * We later require that vma->vm_flags == vm_flags,
39711 * so this tests vma->vm_flags & VM_SPECIAL, too.
39712 -@@ -780,6 +821,15 @@ struct vm_area_struct *vma_merge(struct
39713 +@@ -772,6 +813,15 @@ struct vm_area_struct *vma_merge(struct
39714 if (next && next->vm_end == end) /* cases 6, 7, 8 */
39715 next = next->vm_next;
39716
39717 @@ -68630,7 +68425,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39718 /*
39719 * Can it merge with the predecessor?
39720 */
39721 -@@ -799,9 +849,24 @@ struct vm_area_struct *vma_merge(struct
39722 +@@ -791,9 +841,24 @@ struct vm_area_struct *vma_merge(struct
39723 /* cases 1, 6 */
39724 err = vma_adjust(prev, prev->vm_start,
39725 next->vm_end, prev->vm_pgoff, NULL);
39726 @@ -68656,7 +68451,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39727 if (err)
39728 return NULL;
39729 khugepaged_enter_vma_merge(prev);
39730 -@@ -815,12 +880,27 @@ struct vm_area_struct *vma_merge(struct
39731 +@@ -807,12 +872,27 @@ struct vm_area_struct *vma_merge(struct
39732 mpol_equal(policy, vma_policy(next)) &&
39733 can_vma_merge_before(next, vm_flags,
39734 anon_vma, file, pgoff+pglen)) {
39735 @@ -68686,7 +68481,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39736 if (err)
39737 return NULL;
39738 khugepaged_enter_vma_merge(area);
39739 -@@ -929,14 +1009,11 @@ none:
39740 +@@ -921,14 +1001,11 @@ none:
39741 void vm_stat_account(struct mm_struct *mm, unsigned long flags,
39742 struct file *file, long pages)
39743 {
39744 @@ -68702,7 +68497,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39745 mm->stack_vm += pages;
39746 if (flags & (VM_RESERVED|VM_IO))
39747 mm->reserved_vm += pages;
39748 -@@ -963,7 +1040,7 @@ unsigned long do_mmap_pgoff(struct file
39749 +@@ -955,7 +1032,7 @@ unsigned long do_mmap_pgoff(struct file
39750 * (the exception is when the underlying filesystem is noexec
39751 * mounted, in which case we dont add PROT_EXEC.)
39752 */
39753 @@ -68711,7 +68506,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39754 if (!(file && (file->f_path.mnt->mnt_flags & MNT_NOEXEC)))
39755 prot |= PROT_EXEC;
39756
39757 -@@ -989,7 +1066,7 @@ unsigned long do_mmap_pgoff(struct file
39758 +@@ -981,7 +1058,7 @@ unsigned long do_mmap_pgoff(struct file
39759 /* Obtain the address to map to. we verify (or select) it and ensure
39760 * that it represents a valid section of the address space.
39761 */
39762 @@ -68720,7 +68515,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39763 if (addr & ~PAGE_MASK)
39764 return addr;
39765
39766 -@@ -1000,6 +1077,36 @@ unsigned long do_mmap_pgoff(struct file
39767 +@@ -992,6 +1069,36 @@ unsigned long do_mmap_pgoff(struct file
39768 vm_flags = calc_vm_prot_bits(prot) | calc_vm_flag_bits(flags) |
39769 mm->def_flags | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC;
39770
39771 @@ -68757,7 +68552,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39772 if (flags & MAP_LOCKED)
39773 if (!can_do_mlock())
39774 return -EPERM;
39775 -@@ -1011,6 +1118,7 @@ unsigned long do_mmap_pgoff(struct file
39776 +@@ -1003,6 +1110,7 @@ unsigned long do_mmap_pgoff(struct file
39777 locked += mm->locked_vm;
39778 lock_limit = rlimit(RLIMIT_MEMLOCK);
39779 lock_limit >>= PAGE_SHIFT;
39780 @@ -68765,7 +68560,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39781 if (locked > lock_limit && !capable(CAP_IPC_LOCK))
39782 return -EAGAIN;
39783 }
39784 -@@ -1081,6 +1189,9 @@ unsigned long do_mmap_pgoff(struct file
39785 +@@ -1073,6 +1181,9 @@ unsigned long do_mmap_pgoff(struct file
39786 if (error)
39787 return error;
39788
39789 @@ -68775,7 +68570,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39790 return mmap_region(file, addr, len, flags, vm_flags, pgoff);
39791 }
39792 EXPORT_SYMBOL(do_mmap_pgoff);
39793 -@@ -1161,7 +1272,7 @@ int vma_wants_writenotify(struct vm_area
39794 +@@ -1153,7 +1264,7 @@ int vma_wants_writenotify(struct vm_area
39795 vm_flags_t vm_flags = vma->vm_flags;
39796
39797 /* If it was private or non-writable, the write bit is already clear */
39798 @@ -68784,7 +68579,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39799 return 0;
39800
39801 /* The backer wishes to know when pages are first written to? */
39802 -@@ -1210,14 +1321,24 @@ unsigned long mmap_region(struct file *f
39803 +@@ -1202,14 +1313,24 @@ unsigned long mmap_region(struct file *f
39804 unsigned long charged = 0;
39805 struct inode *inode = file ? file->f_path.dentry->d_inode : NULL;
39806
39807 @@ -68811,7 +68606,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39808 }
39809
39810 /* Check against address space limit. */
39811 -@@ -1266,6 +1387,16 @@ munmap_back:
39812 +@@ -1258,6 +1379,16 @@ munmap_back:
39813 goto unacct_error;
39814 }
39815
39816 @@ -68828,7 +68623,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39817 vma->vm_mm = mm;
39818 vma->vm_start = addr;
39819 vma->vm_end = addr + len;
39820 -@@ -1289,6 +1420,19 @@ munmap_back:
39821 +@@ -1281,6 +1412,19 @@ munmap_back:
39822 error = file->f_op->mmap(file, vma);
39823 if (error)
39824 goto unmap_and_free_vma;
39825 @@ -68848,7 +68643,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39826 if (vm_flags & VM_EXECUTABLE)
39827 added_exe_file_vma(mm);
39828
39829 -@@ -1324,6 +1468,11 @@ munmap_back:
39830 +@@ -1316,6 +1460,11 @@ munmap_back:
39831 vma_link(mm, vma, prev, rb_link, rb_parent);
39832 file = vma->vm_file;
39833
39834 @@ -68860,7 +68655,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39835 /* Once vma denies write, undo our temporary denial count */
39836 if (correct_wcount)
39837 atomic_inc(&inode->i_writecount);
39838 -@@ -1332,6 +1481,7 @@ out:
39839 +@@ -1324,6 +1473,7 @@ out:
39840
39841 mm->total_vm += len >> PAGE_SHIFT;
39842 vm_stat_account(mm, vm_flags, file, len >> PAGE_SHIFT);
39843 @@ -68868,7 +68663,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39844 if (vm_flags & VM_LOCKED) {
39845 if (!mlock_vma_pages_range(vma, addr, addr + len))
39846 mm->locked_vm += (len >> PAGE_SHIFT);
39847 -@@ -1349,6 +1499,12 @@ unmap_and_free_vma:
39848 +@@ -1341,6 +1491,12 @@ unmap_and_free_vma:
39849 unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end);
39850 charged = 0;
39851 free_vma:
39852 @@ -68881,7 +68676,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39853 kmem_cache_free(vm_area_cachep, vma);
39854 unacct_error:
39855 if (charged)
39856 -@@ -1356,6 +1512,44 @@ unacct_error:
39857 +@@ -1348,6 +1504,44 @@ unacct_error:
39858 return error;
39859 }
39860
39861 @@ -68926,7 +68721,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39862 /* Get an address range which is currently unmapped.
39863 * For shmat() with addr=0.
39864 *
39865 -@@ -1382,18 +1576,23 @@ arch_get_unmapped_area(struct file *filp
39866 +@@ -1374,18 +1568,23 @@ arch_get_unmapped_area(struct file *filp
39867 if (flags & MAP_FIXED)
39868 return addr;
39869
39870 @@ -68957,7 +68752,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39871 }
39872
39873 full_search:
39874 -@@ -1404,34 +1603,40 @@ full_search:
39875 +@@ -1396,34 +1595,40 @@ full_search:
39876 * Start a new search - just in case we missed
39877 * some holes.
39878 */
39879 @@ -69009,7 +68804,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39880 mm->free_area_cache = addr;
39881 mm->cached_hole_size = ~0UL;
39882 }
39883 -@@ -1449,7 +1654,7 @@ arch_get_unmapped_area_topdown(struct fi
39884 +@@ -1441,7 +1646,7 @@ arch_get_unmapped_area_topdown(struct fi
39885 {
39886 struct vm_area_struct *vma;
39887 struct mm_struct *mm = current->mm;
39888 @@ -69018,7 +68813,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39889
39890 /* requested length too big for entire address space */
39891 if (len > TASK_SIZE)
39892 -@@ -1458,13 +1663,18 @@ arch_get_unmapped_area_topdown(struct fi
39893 +@@ -1450,13 +1655,18 @@ arch_get_unmapped_area_topdown(struct fi
39894 if (flags & MAP_FIXED)
39895 return addr;
39896
39897 @@ -69041,7 +68836,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39898 }
39899
39900 /* check if free_area_cache is useful for us */
39901 -@@ -1479,7 +1689,7 @@ arch_get_unmapped_area_topdown(struct fi
39902 +@@ -1471,7 +1681,7 @@ arch_get_unmapped_area_topdown(struct fi
39903 /* make sure it can fit in the remaining address space */
39904 if (addr > len) {
39905 vma = find_vma(mm, addr-len);
39906 @@ -69050,7 +68845,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39907 /* remember the address as a hint for next time */
39908 return (mm->free_area_cache = addr-len);
39909 }
39910 -@@ -1496,7 +1706,7 @@ arch_get_unmapped_area_topdown(struct fi
39911 +@@ -1488,7 +1698,7 @@ arch_get_unmapped_area_topdown(struct fi
39912 * return with success:
39913 */
39914 vma = find_vma(mm, addr);
39915 @@ -69059,7 +68854,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39916 /* remember the address as a hint for next time */
39917 return (mm->free_area_cache = addr);
39918
39919 -@@ -1505,8 +1715,8 @@ arch_get_unmapped_area_topdown(struct fi
39920 +@@ -1497,8 +1707,8 @@ arch_get_unmapped_area_topdown(struct fi
39921 mm->cached_hole_size = vma->vm_start - addr;
39922
39923 /* try just below the current vma->vm_start */
39924 @@ -69070,7 +68865,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39925
39926 bottomup:
39927 /*
39928 -@@ -1515,13 +1725,21 @@ bottomup:
39929 +@@ -1507,13 +1717,21 @@ bottomup:
39930 * can happen with large stack limits and large mmap()
39931 * allocations.
39932 */
39933 @@ -69094,7 +68889,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39934 mm->cached_hole_size = ~0UL;
39935
39936 return addr;
39937 -@@ -1530,6 +1748,12 @@ bottomup:
39938 +@@ -1522,6 +1740,12 @@ bottomup:
39939
39940 void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr)
39941 {
39942 @@ -69107,7 +68902,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39943 /*
39944 * Is this a new hole at the highest possible address?
39945 */
39946 -@@ -1537,8 +1761,10 @@ void arch_unmap_area_topdown(struct mm_s
39947 +@@ -1529,8 +1753,10 @@ void arch_unmap_area_topdown(struct mm_s
39948 mm->free_area_cache = addr;
39949
39950 /* dont allow allocations above current base */
39951 @@ -69119,7 +68914,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39952 }
39953
39954 unsigned long
39955 -@@ -1646,6 +1872,28 @@ out:
39956 +@@ -1638,6 +1864,28 @@ out:
39957 return prev ? prev->vm_next : vma;
39958 }
39959
39960 @@ -69148,7 +68943,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39961 /*
39962 * Verify that the stack growth is acceptable and
39963 * update accounting. This is shared with both the
39964 -@@ -1662,6 +1910,7 @@ static int acct_stack_growth(struct vm_a
39965 +@@ -1654,6 +1902,7 @@ static int acct_stack_growth(struct vm_a
39966 return -ENOMEM;
39967
39968 /* Stack limit test */
39969 @@ -69156,7 +68951,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39970 if (size > ACCESS_ONCE(rlim[RLIMIT_STACK].rlim_cur))
39971 return -ENOMEM;
39972
39973 -@@ -1672,6 +1921,7 @@ static int acct_stack_growth(struct vm_a
39974 +@@ -1664,6 +1913,7 @@ static int acct_stack_growth(struct vm_a
39975 locked = mm->locked_vm + grow;
39976 limit = ACCESS_ONCE(rlim[RLIMIT_MEMLOCK].rlim_cur);
39977 limit >>= PAGE_SHIFT;
39978 @@ -69164,7 +68959,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39979 if (locked > limit && !capable(CAP_IPC_LOCK))
39980 return -ENOMEM;
39981 }
39982 -@@ -1702,37 +1952,48 @@ static int acct_stack_growth(struct vm_a
39983 +@@ -1694,37 +1944,48 @@ static int acct_stack_growth(struct vm_a
39984 * PA-RISC uses this for its stack; IA64 for its Register Backing Store.
39985 * vma is the last one with address > vma->vm_end. Have to extend vma.
39986 */
39987 @@ -69222,7 +69017,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39988 unsigned long size, grow;
39989
39990 size = address - vma->vm_start;
39991 -@@ -1747,6 +2008,8 @@ int expand_upwards(struct vm_area_struct
39992 +@@ -1739,6 +2000,8 @@ int expand_upwards(struct vm_area_struct
39993 }
39994 }
39995 }
39996 @@ -69231,7 +69026,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
39997 vma_unlock_anon_vma(vma);
39998 khugepaged_enter_vma_merge(vma);
39999 return error;
40000 -@@ -1760,6 +2023,8 @@ int expand_downwards(struct vm_area_stru
40001 +@@ -1752,6 +2015,8 @@ int expand_downwards(struct vm_area_stru
40002 unsigned long address)
40003 {
40004 int error;
40005 @@ -69240,7 +69035,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40006
40007 /*
40008 * We must make sure the anon_vma is allocated
40009 -@@ -1773,6 +2038,15 @@ int expand_downwards(struct vm_area_stru
40010 +@@ -1765,6 +2030,15 @@ int expand_downwards(struct vm_area_stru
40011 if (error)
40012 return error;
40013
40014 @@ -69256,7 +69051,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40015 vma_lock_anon_vma(vma);
40016
40017 /*
40018 -@@ -1782,9 +2056,17 @@ int expand_downwards(struct vm_area_stru
40019 +@@ -1774,9 +2048,17 @@ int expand_downwards(struct vm_area_stru
40020 */
40021
40022 /* Somebody else might have raced and expanded it already */
40023 @@ -69275,7 +69070,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40024 size = vma->vm_end - address;
40025 grow = (vma->vm_start - address) >> PAGE_SHIFT;
40026
40027 -@@ -1794,11 +2076,22 @@ int expand_downwards(struct vm_area_stru
40028 +@@ -1786,11 +2068,22 @@ int expand_downwards(struct vm_area_stru
40029 if (!error) {
40030 vma->vm_start = address;
40031 vma->vm_pgoff -= grow;
40032 @@ -69298,7 +69093,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40033 khugepaged_enter_vma_merge(vma);
40034 return error;
40035 }
40036 -@@ -1868,6 +2161,13 @@ static void remove_vma_list(struct mm_st
40037 +@@ -1860,6 +2153,13 @@ static void remove_vma_list(struct mm_st
40038 do {
40039 long nrpages = vma_pages(vma);
40040
40041 @@ -69312,7 +69107,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40042 mm->total_vm -= nrpages;
40043 vm_stat_account(mm, vma->vm_flags, vma->vm_file, -nrpages);
40044 vma = remove_vma(vma);
40045 -@@ -1913,6 +2213,16 @@ detach_vmas_to_be_unmapped(struct mm_str
40046 +@@ -1905,6 +2205,16 @@ detach_vmas_to_be_unmapped(struct mm_str
40047 insertion_point = (prev ? &prev->vm_next : &mm->mmap);
40048 vma->vm_prev = NULL;
40049 do {
40050 @@ -69329,7 +69124,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40051 rb_erase(&vma->vm_rb, &mm->mm_rb);
40052 mm->map_count--;
40053 tail_vma = vma;
40054 -@@ -1941,14 +2251,33 @@ static int __split_vma(struct mm_struct
40055 +@@ -1933,14 +2243,33 @@ static int __split_vma(struct mm_struct
40056 struct vm_area_struct *new;
40057 int err = -ENOMEM;
40058
40059 @@ -69363,7 +69158,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40060 /* most fields are the same, copy all, and then fixup */
40061 *new = *vma;
40062
40063 -@@ -1961,6 +2290,22 @@ static int __split_vma(struct mm_struct
40064 +@@ -1953,6 +2282,22 @@ static int __split_vma(struct mm_struct
40065 new->vm_pgoff += ((addr - vma->vm_start) >> PAGE_SHIFT);
40066 }
40067
40068 @@ -69386,7 +69181,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40069 pol = mpol_dup(vma_policy(vma));
40070 if (IS_ERR(pol)) {
40071 err = PTR_ERR(pol);
40072 -@@ -1986,6 +2331,42 @@ static int __split_vma(struct mm_struct
40073 +@@ -1978,6 +2323,42 @@ static int __split_vma(struct mm_struct
40074 else
40075 err = vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new);
40076
40077 @@ -69429,7 +69224,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40078 /* Success. */
40079 if (!err)
40080 return 0;
40081 -@@ -1998,10 +2379,18 @@ static int __split_vma(struct mm_struct
40082 +@@ -1990,10 +2371,18 @@ static int __split_vma(struct mm_struct
40083 removed_exe_file_vma(mm);
40084 fput(new->vm_file);
40085 }
40086 @@ -69449,7 +69244,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40087 kmem_cache_free(vm_area_cachep, new);
40088 out_err:
40089 return err;
40090 -@@ -2014,6 +2403,15 @@ static int __split_vma(struct mm_struct
40091 +@@ -2006,6 +2395,15 @@ static int __split_vma(struct mm_struct
40092 int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
40093 unsigned long addr, int new_below)
40094 {
40095 @@ -69465,7 +69260,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40096 if (mm->map_count >= sysctl_max_map_count)
40097 return -ENOMEM;
40098
40099 -@@ -2025,11 +2423,30 @@ int split_vma(struct mm_struct *mm, stru
40100 +@@ -2017,11 +2415,30 @@ int split_vma(struct mm_struct *mm, stru
40101 * work. This now handles partial unmappings.
40102 * Jeremy Fitzhardinge <jeremy@××××.org>
40103 */
40104 @@ -69496,7 +69291,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40105 if ((start & ~PAGE_MASK) || start > TASK_SIZE || len > TASK_SIZE-start)
40106 return -EINVAL;
40107
40108 -@@ -2104,6 +2521,8 @@ int do_munmap(struct mm_struct *mm, unsi
40109 +@@ -2096,6 +2513,8 @@ int do_munmap(struct mm_struct *mm, unsi
40110 /* Fix up all other VM information */
40111 remove_vma_list(mm, vma);
40112
40113 @@ -69505,7 +69300,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40114 return 0;
40115 }
40116
40117 -@@ -2116,22 +2535,18 @@ SYSCALL_DEFINE2(munmap, unsigned long, a
40118 +@@ -2108,22 +2527,18 @@ SYSCALL_DEFINE2(munmap, unsigned long, a
40119
40120 profile_munmap(addr);
40121
40122 @@ -69534,7 +69329,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40123 /*
40124 * this is really a simplified "do_mmap". it only handles
40125 * anonymous maps. eventually we may be able to do some
40126 -@@ -2145,6 +2560,7 @@ unsigned long do_brk(unsigned long addr,
40127 +@@ -2137,6 +2552,7 @@ unsigned long do_brk(unsigned long addr,
40128 struct rb_node ** rb_link, * rb_parent;
40129 pgoff_t pgoff = addr >> PAGE_SHIFT;
40130 int error;
40131 @@ -69542,7 +69337,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40132
40133 len = PAGE_ALIGN(len);
40134 if (!len)
40135 -@@ -2156,16 +2572,30 @@ unsigned long do_brk(unsigned long addr,
40136 +@@ -2148,16 +2564,30 @@ unsigned long do_brk(unsigned long addr,
40137
40138 flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags;
40139
40140 @@ -69574,7 +69369,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40141 locked += mm->locked_vm;
40142 lock_limit = rlimit(RLIMIT_MEMLOCK);
40143 lock_limit >>= PAGE_SHIFT;
40144 -@@ -2182,22 +2612,22 @@ unsigned long do_brk(unsigned long addr,
40145 +@@ -2174,22 +2604,22 @@ unsigned long do_brk(unsigned long addr,
40146 /*
40147 * Clear old maps. this also does some error checking for us
40148 */
40149 @@ -69601,7 +69396,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40150 return -ENOMEM;
40151
40152 /* Can we just expand an old private anonymous mapping? */
40153 -@@ -2211,7 +2641,7 @@ unsigned long do_brk(unsigned long addr,
40154 +@@ -2203,7 +2633,7 @@ unsigned long do_brk(unsigned long addr,
40155 */
40156 vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
40157 if (!vma) {
40158 @@ -69610,7 +69405,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40159 return -ENOMEM;
40160 }
40161
40162 -@@ -2225,11 +2655,12 @@ unsigned long do_brk(unsigned long addr,
40163 +@@ -2217,11 +2647,12 @@ unsigned long do_brk(unsigned long addr,
40164 vma_link(mm, vma, prev, rb_link, rb_parent);
40165 out:
40166 perf_event_mmap(vma);
40167 @@ -69625,7 +69420,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40168 return addr;
40169 }
40170
40171 -@@ -2276,8 +2707,10 @@ void exit_mmap(struct mm_struct *mm)
40172 +@@ -2268,8 +2699,10 @@ void exit_mmap(struct mm_struct *mm)
40173 * Walk the list again, actually closing and freeing it,
40174 * with preemption enabled, without holding any MM locks.
40175 */
40176 @@ -69637,7 +69432,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40177
40178 BUG_ON(mm->nr_ptes > (FIRST_USER_ADDRESS+PMD_SIZE-1)>>PMD_SHIFT);
40179 }
40180 -@@ -2291,6 +2724,13 @@ int insert_vm_struct(struct mm_struct *
40181 +@@ -2283,6 +2716,13 @@ int insert_vm_struct(struct mm_struct *
40182 struct vm_area_struct * __vma, * prev;
40183 struct rb_node ** rb_link, * rb_parent;
40184
40185 @@ -69651,7 +69446,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40186 /*
40187 * The vm_pgoff of a purely anonymous vma should be irrelevant
40188 * until its first write fault, when page's anon_vma and index
40189 -@@ -2313,7 +2753,22 @@ int insert_vm_struct(struct mm_struct *
40190 +@@ -2305,7 +2745,22 @@ int insert_vm_struct(struct mm_struct *
40191 if ((vma->vm_flags & VM_ACCOUNT) &&
40192 security_vm_enough_memory_mm(mm, vma_pages(vma)))
40193 return -ENOMEM;
40194 @@ -69674,7 +69469,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40195 return 0;
40196 }
40197
40198 -@@ -2331,6 +2786,8 @@ struct vm_area_struct *copy_vma(struct v
40199 +@@ -2323,6 +2778,8 @@ struct vm_area_struct *copy_vma(struct v
40200 struct rb_node **rb_link, *rb_parent;
40201 struct mempolicy *pol;
40202
40203 @@ -69683,7 +69478,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40204 /*
40205 * If anonymous vma has not yet been faulted, update new pgoff
40206 * to match new location, to increase its chance of merging.
40207 -@@ -2381,6 +2838,39 @@ struct vm_area_struct *copy_vma(struct v
40208 +@@ -2373,6 +2830,39 @@ struct vm_area_struct *copy_vma(struct v
40209 return NULL;
40210 }
40211
40212 @@ -69723,7 +69518,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40213 /*
40214 * Return true if the calling process may expand its vm space by the passed
40215 * number of pages
40216 -@@ -2391,7 +2881,7 @@ int may_expand_vm(struct mm_struct *mm,
40217 +@@ -2383,7 +2873,7 @@ int may_expand_vm(struct mm_struct *mm,
40218 unsigned long lim;
40219
40220 lim = rlimit(RLIMIT_AS) >> PAGE_SHIFT;
40221 @@ -69732,7 +69527,7 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40222 if (cur + npages > lim)
40223 return 0;
40224 return 1;
40225 -@@ -2462,6 +2952,22 @@ int install_special_mapping(struct mm_st
40226 +@@ -2454,6 +2944,22 @@ int install_special_mapping(struct mm_st
40227 vma->vm_start = addr;
40228 vma->vm_end = addr + len;
40229
40230 @@ -69755,9 +69550,9 @@ diff -urNp linux-3.0.9/mm/mmap.c linux-3.0.9/mm/mmap.c
40231 vma->vm_flags = vm_flags | mm->def_flags | VM_DONTEXPAND;
40232 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
40233
40234 -diff -urNp linux-3.0.9/mm/mprotect.c linux-3.0.9/mm/mprotect.c
40235 ---- linux-3.0.9/mm/mprotect.c 2011-11-11 13:12:24.000000000 -0500
40236 -+++ linux-3.0.9/mm/mprotect.c 2011-11-15 20:03:00.000000000 -0500
40237 +diff -urNp linux-3.1.1/mm/mprotect.c linux-3.1.1/mm/mprotect.c
40238 +--- linux-3.1.1/mm/mprotect.c 2011-11-11 15:19:27.000000000 -0500
40239 ++++ linux-3.1.1/mm/mprotect.c 2011-11-16 18:40:44.000000000 -0500
40240 @@ -23,10 +23,16 @@
40241 #include <linux/mmu_notifier.h>
40242 #include <linux/migrate.h>
40243 @@ -69984,9 +69779,9 @@ diff -urNp linux-3.0.9/mm/mprotect.c linux-3.0.9/mm/mprotect.c
40244 nstart = tmp;
40245
40246 if (nstart < prev->vm_end)
40247 -diff -urNp linux-3.0.9/mm/mremap.c linux-3.0.9/mm/mremap.c
40248 ---- linux-3.0.9/mm/mremap.c 2011-11-11 13:12:24.000000000 -0500
40249 -+++ linux-3.0.9/mm/mremap.c 2011-11-15 20:03:00.000000000 -0500
40250 +diff -urNp linux-3.1.1/mm/mremap.c linux-3.1.1/mm/mremap.c
40251 +--- linux-3.1.1/mm/mremap.c 2011-11-11 15:19:27.000000000 -0500
40252 ++++ linux-3.1.1/mm/mremap.c 2011-11-16 18:39:08.000000000 -0500
40253 @@ -113,6 +113,12 @@ static void move_ptes(struct vm_area_str
40254 continue;
40255 pte = ptep_clear_flush(vma, old_addr, old_pte);
40256 @@ -70091,9 +69886,9 @@ diff -urNp linux-3.0.9/mm/mremap.c linux-3.0.9/mm/mremap.c
40257 }
40258 out:
40259 if (ret & ~PAGE_MASK)
40260 -diff -urNp linux-3.0.9/mm/nobootmem.c linux-3.0.9/mm/nobootmem.c
40261 ---- linux-3.0.9/mm/nobootmem.c 2011-11-11 13:12:24.000000000 -0500
40262 -+++ linux-3.0.9/mm/nobootmem.c 2011-11-15 20:03:00.000000000 -0500
40263 +diff -urNp linux-3.1.1/mm/nobootmem.c linux-3.1.1/mm/nobootmem.c
40264 +--- linux-3.1.1/mm/nobootmem.c 2011-11-11 15:19:27.000000000 -0500
40265 ++++ linux-3.1.1/mm/nobootmem.c 2011-11-16 18:39:08.000000000 -0500
40266 @@ -110,19 +110,30 @@ static void __init __free_pages_memory(u
40267 unsigned long __init free_all_memory_core_early(int nodeid)
40268 {
40269 @@ -70127,10 +69922,10 @@ diff -urNp linux-3.0.9/mm/nobootmem.c linux-3.0.9/mm/nobootmem.c
40270
40271 return count;
40272 }
40273 -diff -urNp linux-3.0.9/mm/nommu.c linux-3.0.9/mm/nommu.c
40274 ---- linux-3.0.9/mm/nommu.c 2011-11-11 13:12:24.000000000 -0500
40275 -+++ linux-3.0.9/mm/nommu.c 2011-11-15 20:03:00.000000000 -0500
40276 -@@ -63,7 +63,6 @@ int sysctl_overcommit_memory = OVERCOMMI
40277 +diff -urNp linux-3.1.1/mm/nommu.c linux-3.1.1/mm/nommu.c
40278 +--- linux-3.1.1/mm/nommu.c 2011-11-11 15:19:27.000000000 -0500
40279 ++++ linux-3.1.1/mm/nommu.c 2011-11-16 18:39:08.000000000 -0500
40280 +@@ -62,7 +62,6 @@ int sysctl_overcommit_memory = OVERCOMMI
40281 int sysctl_overcommit_ratio = 50; /* default is 50% */
40282 int sysctl_max_map_count = DEFAULT_MAX_MAP_COUNT;
40283 int sysctl_nr_trim_pages = CONFIG_NOMMU_INITIAL_TRIM_EXCESS;
40284 @@ -70138,7 +69933,7 @@ diff -urNp linux-3.0.9/mm/nommu.c linux-3.0.9/mm/nommu.c
40285
40286 atomic_long_t mmap_pages_allocated;
40287
40288 -@@ -826,15 +825,6 @@ struct vm_area_struct *find_vma(struct m
40289 +@@ -825,15 +824,6 @@ struct vm_area_struct *find_vma(struct m
40290 EXPORT_SYMBOL(find_vma);
40291
40292 /*
40293 @@ -70154,7 +69949,7 @@ diff -urNp linux-3.0.9/mm/nommu.c linux-3.0.9/mm/nommu.c
40294 * expand a stack to a given address
40295 * - not supported under NOMMU conditions
40296 */
40297 -@@ -1554,6 +1544,7 @@ int split_vma(struct mm_struct *mm, stru
40298 +@@ -1553,6 +1543,7 @@ int split_vma(struct mm_struct *mm, stru
40299
40300 /* most fields are the same, copy all, and then fixup */
40301 *new = *vma;
40302 @@ -70162,9 +69957,9 @@ diff -urNp linux-3.0.9/mm/nommu.c linux-3.0.9/mm/nommu.c
40303 *region = *vma->vm_region;
40304 new->vm_region = region;
40305
40306 -diff -urNp linux-3.0.9/mm/page_alloc.c linux-3.0.9/mm/page_alloc.c
40307 ---- linux-3.0.9/mm/page_alloc.c 2011-11-11 13:12:24.000000000 -0500
40308 -+++ linux-3.0.9/mm/page_alloc.c 2011-11-15 20:03:00.000000000 -0500
40309 +diff -urNp linux-3.1.1/mm/page_alloc.c linux-3.1.1/mm/page_alloc.c
40310 +--- linux-3.1.1/mm/page_alloc.c 2011-11-11 15:19:27.000000000 -0500
40311 ++++ linux-3.1.1/mm/page_alloc.c 2011-11-16 18:40:44.000000000 -0500
40312 @@ -340,7 +340,7 @@ out:
40313 * This usage means that zero-order pages may not be compound.
40314 */
40315 @@ -70209,7 +70004,7 @@ diff -urNp linux-3.0.9/mm/page_alloc.c linux-3.0.9/mm/page_alloc.c
40316
40317 if (order && (gfp_flags & __GFP_COMP))
40318 prep_compound_page(page, order);
40319 -@@ -2557,6 +2569,8 @@ void show_free_areas(unsigned int filter
40320 +@@ -2539,6 +2551,8 @@ void show_free_areas(unsigned int filter
40321 int cpu;
40322 struct zone *zone;
40323
40324 @@ -70218,7 +70013,7 @@ diff -urNp linux-3.0.9/mm/page_alloc.c linux-3.0.9/mm/page_alloc.c
40325 for_each_populated_zone(zone) {
40326 if (skip_free_areas_node(filter, zone_to_nid(zone)))
40327 continue;
40328 -@@ -3368,7 +3382,13 @@ static int pageblock_is_reserved(unsigne
40329 +@@ -3350,7 +3364,13 @@ static int pageblock_is_reserved(unsigne
40330 unsigned long pfn;
40331
40332 for (pfn = start_pfn; pfn < end_pfn; pfn++) {
40333 @@ -70232,9 +70027,9 @@ diff -urNp linux-3.0.9/mm/page_alloc.c linux-3.0.9/mm/page_alloc.c
40334 return 1;
40335 }
40336 return 0;
40337 -diff -urNp linux-3.0.9/mm/percpu.c linux-3.0.9/mm/percpu.c
40338 ---- linux-3.0.9/mm/percpu.c 2011-11-11 13:12:24.000000000 -0500
40339 -+++ linux-3.0.9/mm/percpu.c 2011-11-15 20:03:00.000000000 -0500
40340 +diff -urNp linux-3.1.1/mm/percpu.c linux-3.1.1/mm/percpu.c
40341 +--- linux-3.1.1/mm/percpu.c 2011-11-11 15:19:27.000000000 -0500
40342 ++++ linux-3.1.1/mm/percpu.c 2011-11-16 18:39:08.000000000 -0500
40343 @@ -121,7 +121,7 @@ static unsigned int pcpu_first_unit_cpu
40344 static unsigned int pcpu_last_unit_cpu __read_mostly;
40345
40346 @@ -70244,10 +70039,10 @@ diff -urNp linux-3.0.9/mm/percpu.c linux-3.0.9/mm/percpu.c
40347 EXPORT_SYMBOL_GPL(pcpu_base_addr);
40348
40349 static const int *pcpu_unit_map __read_mostly; /* cpu -> unit */
40350 -diff -urNp linux-3.0.9/mm/rmap.c linux-3.0.9/mm/rmap.c
40351 ---- linux-3.0.9/mm/rmap.c 2011-11-11 13:12:24.000000000 -0500
40352 -+++ linux-3.0.9/mm/rmap.c 2011-11-15 20:03:00.000000000 -0500
40353 -@@ -153,6 +153,10 @@ int anon_vma_prepare(struct vm_area_stru
40354 +diff -urNp linux-3.1.1/mm/rmap.c linux-3.1.1/mm/rmap.c
40355 +--- linux-3.1.1/mm/rmap.c 2011-11-11 15:19:27.000000000 -0500
40356 ++++ linux-3.1.1/mm/rmap.c 2011-11-16 18:39:08.000000000 -0500
40357 +@@ -152,6 +152,10 @@ int anon_vma_prepare(struct vm_area_stru
40358 struct anon_vma *anon_vma = vma->anon_vma;
40359 struct anon_vma_chain *avc;
40360
40361 @@ -70258,7 +70053,7 @@ diff -urNp linux-3.0.9/mm/rmap.c linux-3.0.9/mm/rmap.c
40362 might_sleep();
40363 if (unlikely(!anon_vma)) {
40364 struct mm_struct *mm = vma->vm_mm;
40365 -@@ -162,6 +166,12 @@ int anon_vma_prepare(struct vm_area_stru
40366 +@@ -161,6 +165,12 @@ int anon_vma_prepare(struct vm_area_stru
40367 if (!avc)
40368 goto out_enomem;
40369
40370 @@ -70271,7 +70066,7 @@ diff -urNp linux-3.0.9/mm/rmap.c linux-3.0.9/mm/rmap.c
40371 anon_vma = find_mergeable_anon_vma(vma);
40372 allocated = NULL;
40373 if (!anon_vma) {
40374 -@@ -175,6 +185,21 @@ int anon_vma_prepare(struct vm_area_stru
40375 +@@ -174,6 +184,21 @@ int anon_vma_prepare(struct vm_area_stru
40376 /* page_table_lock to protect against threads */
40377 spin_lock(&mm->page_table_lock);
40378 if (likely(!vma->anon_vma)) {
40379 @@ -70293,7 +70088,7 @@ diff -urNp linux-3.0.9/mm/rmap.c linux-3.0.9/mm/rmap.c
40380 vma->anon_vma = anon_vma;
40381 avc->anon_vma = anon_vma;
40382 avc->vma = vma;
40383 -@@ -188,12 +213,24 @@ int anon_vma_prepare(struct vm_area_stru
40384 +@@ -187,12 +212,24 @@ int anon_vma_prepare(struct vm_area_stru
40385
40386 if (unlikely(allocated))
40387 put_anon_vma(allocated);
40388 @@ -70318,7 +70113,7 @@ diff -urNp linux-3.0.9/mm/rmap.c linux-3.0.9/mm/rmap.c
40389 anon_vma_chain_free(avc);
40390 out_enomem:
40391 return -ENOMEM;
40392 -@@ -244,7 +281,7 @@ static void anon_vma_chain_link(struct v
40393 +@@ -243,7 +280,7 @@ static void anon_vma_chain_link(struct v
40394 * Attach the anon_vmas from src to dst.
40395 * Returns 0 on success, -ENOMEM on failure.
40396 */
40397 @@ -70327,7 +70122,7 @@ diff -urNp linux-3.0.9/mm/rmap.c linux-3.0.9/mm/rmap.c
40398 {
40399 struct anon_vma_chain *avc, *pavc;
40400 struct anon_vma *root = NULL;
40401 -@@ -277,7 +314,7 @@ int anon_vma_clone(struct vm_area_struct
40402 +@@ -276,7 +313,7 @@ int anon_vma_clone(struct vm_area_struct
40403 * the corresponding VMA in the parent process is attached to.
40404 * Returns 0 on success, non-zero on failure.
40405 */
40406 @@ -70336,11 +70131,11 @@ diff -urNp linux-3.0.9/mm/rmap.c linux-3.0.9/mm/rmap.c
40407 {
40408 struct anon_vma_chain *avc;
40409 struct anon_vma *anon_vma;
40410 -diff -urNp linux-3.0.9/mm/shmem.c linux-3.0.9/mm/shmem.c
40411 ---- linux-3.0.9/mm/shmem.c 2011-11-11 13:12:24.000000000 -0500
40412 -+++ linux-3.0.9/mm/shmem.c 2011-11-15 20:03:00.000000000 -0500
40413 +diff -urNp linux-3.1.1/mm/shmem.c linux-3.1.1/mm/shmem.c
40414 +--- linux-3.1.1/mm/shmem.c 2011-11-11 15:19:27.000000000 -0500
40415 ++++ linux-3.1.1/mm/shmem.c 2011-11-16 19:28:28.000000000 -0500
40416 @@ -31,7 +31,7 @@
40417 - #include <linux/percpu_counter.h>
40418 + #include <linux/module.h>
40419 #include <linux/swap.h>
40420
40421 -static struct vfsmount *shm_mnt;
40422 @@ -70348,25 +70143,25 @@ diff -urNp linux-3.0.9/mm/shmem.c linux-3.0.9/mm/shmem.c
40423
40424 #ifdef CONFIG_SHMEM
40425 /*
40426 -@@ -1101,6 +1101,8 @@ static int shmem_writepage(struct page *
40427 - goto unlock;
40428 - }
40429 - entry = shmem_swp_entry(info, index, NULL);
40430 -+ if (!entry)
40431 -+ goto unlock;
40432 - if (entry->val) {
40433 - /*
40434 - * The more uptodate page coming down from a stacked
40435 -@@ -1172,6 +1174,8 @@ static struct page *shmem_swapin(swp_ent
40436 +@@ -74,7 +74,7 @@ static struct vfsmount *shm_mnt;
40437 + #define BOGO_DIRENT_SIZE 20
40438 +
40439 + /* Symlink up to this size is kmalloc'ed instead of using a swappable page */
40440 +-#define SHORT_SYMLINK_LEN 128
40441 ++#define SHORT_SYMLINK_LEN 64
40442 +
40443 + struct shmem_xattr {
40444 + struct list_head list; /* anchored by shmem_inode_info->xattr_list */
40445 +@@ -769,6 +769,8 @@ static struct page *shmem_swapin(swp_ent
40446 + struct mempolicy mpol, *spol;
40447 struct vm_area_struct pvma;
40448 - struct page *page;
40449
40450 + pax_track_stack();
40451 +
40452 spol = mpol_cond_copy(&mpol,
40453 - mpol_shared_policy_lookup(&info->policy, idx));
40454 + mpol_shared_policy_lookup(&info->policy, index));
40455
40456 -@@ -2568,8 +2572,7 @@ int shmem_fill_super(struct super_block
40457 +@@ -2149,8 +2151,7 @@ int shmem_fill_super(struct super_block
40458 int err = -ENOMEM;
40459
40460 /* Round up to L1_CACHE_BYTES to resist false sharing */
40461 @@ -70376,9 +70171,9 @@ diff -urNp linux-3.0.9/mm/shmem.c linux-3.0.9/mm/shmem.c
40462 if (!sbinfo)
40463 return -ENOMEM;
40464
40465 -diff -urNp linux-3.0.9/mm/slab.c linux-3.0.9/mm/slab.c
40466 ---- linux-3.0.9/mm/slab.c 2011-11-11 13:12:24.000000000 -0500
40467 -+++ linux-3.0.9/mm/slab.c 2011-11-15 20:03:00.000000000 -0500
40468 +diff -urNp linux-3.1.1/mm/slab.c linux-3.1.1/mm/slab.c
40469 +--- linux-3.1.1/mm/slab.c 2011-11-11 15:19:27.000000000 -0500
40470 ++++ linux-3.1.1/mm/slab.c 2011-11-16 18:40:44.000000000 -0500
40471 @@ -151,7 +151,7 @@
40472
40473 /* Legal flag mask for kmem_cache_create(). */
40474 @@ -70439,7 +70234,7 @@ diff -urNp linux-3.0.9/mm/slab.c linux-3.0.9/mm/slab.c
40475 #undef CACHE
40476 };
40477
40478 -@@ -1530,7 +1530,7 @@ void __init kmem_cache_init(void)
40479 +@@ -1571,7 +1571,7 @@ void __init kmem_cache_init(void)
40480 sizes[INDEX_AC].cs_cachep = kmem_cache_create(names[INDEX_AC].name,
40481 sizes[INDEX_AC].cs_size,
40482 ARCH_KMALLOC_MINALIGN,
40483 @@ -70448,7 +70243,7 @@ diff -urNp linux-3.0.9/mm/slab.c linux-3.0.9/mm/slab.c
40484 NULL);
40485
40486 if (INDEX_AC != INDEX_L3) {
40487 -@@ -1538,7 +1538,7 @@ void __init kmem_cache_init(void)
40488 +@@ -1579,7 +1579,7 @@ void __init kmem_cache_init(void)
40489 kmem_cache_create(names[INDEX_L3].name,
40490 sizes[INDEX_L3].cs_size,
40491 ARCH_KMALLOC_MINALIGN,
40492 @@ -70457,7 +70252,7 @@ diff -urNp linux-3.0.9/mm/slab.c linux-3.0.9/mm/slab.c
40493 NULL);
40494 }
40495
40496 -@@ -1556,7 +1556,7 @@ void __init kmem_cache_init(void)
40497 +@@ -1597,7 +1597,7 @@ void __init kmem_cache_init(void)
40498 sizes->cs_cachep = kmem_cache_create(names->name,
40499 sizes->cs_size,
40500 ARCH_KMALLOC_MINALIGN,
40501 @@ -70466,7 +70261,7 @@ diff -urNp linux-3.0.9/mm/slab.c linux-3.0.9/mm/slab.c
40502 NULL);
40503 }
40504 #ifdef CONFIG_ZONE_DMA
40505 -@@ -4272,10 +4272,10 @@ static int s_show(struct seq_file *m, vo
40506 +@@ -4324,10 +4324,10 @@ static int s_show(struct seq_file *m, vo
40507 }
40508 /* cpu stats */
40509 {
40510 @@ -70481,7 +70276,7 @@ diff -urNp linux-3.0.9/mm/slab.c linux-3.0.9/mm/slab.c
40511
40512 seq_printf(m, " : cpustat %6lu %6lu %6lu %6lu",
40513 allochit, allocmiss, freehit, freemiss);
40514 -@@ -4532,15 +4532,66 @@ static const struct file_operations proc
40515 +@@ -4584,15 +4584,70 @@ static const struct file_operations proc
40516
40517 static int __init slab_proc_init(void)
40518 {
40519 @@ -70511,10 +70306,12 @@ diff -urNp linux-3.0.9/mm/slab.c linux-3.0.9/mm/slab.c
40520 + struct slab *slabp;
40521 + unsigned int objnr;
40522 + unsigned long offset;
40523 ++ const char *type;
40524 +
40525 + if (!n)
40526 + return;
40527 +
40528 ++ type = "<null>";
40529 + if (ZERO_OR_NULL_PTR(ptr))
40530 + goto report;
40531 +
40532 @@ -70523,6 +70320,7 @@ diff -urNp linux-3.0.9/mm/slab.c linux-3.0.9/mm/slab.c
40533 +
40534 + page = virt_to_head_page(ptr);
40535 +
40536 ++ type = "<process stack>";
40537 + if (!PageSlab(page)) {
40538 + if (object_is_on_stack(ptr, n) == -1)
40539 + goto report;
40540 @@ -70530,6 +70328,7 @@ diff -urNp linux-3.0.9/mm/slab.c linux-3.0.9/mm/slab.c
40541 + }
40542 +
40543 + cachep = page_get_cache(page);
40544 ++ type = cachep->name;
40545 + if (!(cachep->flags & SLAB_USERCOPY))
40546 + goto report;
40547 +
40548 @@ -70541,7 +70340,7 @@ diff -urNp linux-3.0.9/mm/slab.c linux-3.0.9/mm/slab.c
40549 + return;
40550 +
40551 +report:
40552 -+ pax_report_usercopy(ptr, n, to, cachep ? cachep->name : NULL);
40553 ++ pax_report_usercopy(ptr, n, to, type);
40554 +#endif
40555 +
40556 +}
40557 @@ -70550,9 +70349,9 @@ diff -urNp linux-3.0.9/mm/slab.c linux-3.0.9/mm/slab.c
40558 /**
40559 * ksize - get the actual amount of memory allocated for a given object
40560 * @objp: Pointer to the object
40561 -diff -urNp linux-3.0.9/mm/slob.c linux-3.0.9/mm/slob.c
40562 ---- linux-3.0.9/mm/slob.c 2011-11-11 13:12:24.000000000 -0500
40563 -+++ linux-3.0.9/mm/slob.c 2011-11-15 20:03:00.000000000 -0500
40564 +diff -urNp linux-3.1.1/mm/slob.c linux-3.1.1/mm/slob.c
40565 +--- linux-3.1.1/mm/slob.c 2011-11-11 15:19:27.000000000 -0500
40566 ++++ linux-3.1.1/mm/slob.c 2011-11-16 18:39:08.000000000 -0500
40567 @@ -29,7 +29,7 @@
40568 * If kmalloc is asked for objects of PAGE_SIZE or larger, it calls
40569 * alloc_pages() directly, allocating compound pages so the page order
40570 @@ -70658,8 +70457,8 @@ diff -urNp linux-3.0.9/mm/slob.c linux-3.0.9/mm/slob.c
40571 + slob_t *m;
40572 void *ret;
40573
40574 - lockdep_trace_alloc(gfp);
40575 -@@ -492,7 +494,10 @@ void *__kmalloc_node(size_t size, gfp_t
40576 + gfp &= gfp_allowed_mask;
40577 +@@ -494,7 +496,10 @@ void *__kmalloc_node(size_t size, gfp_t
40578
40579 if (!m)
40580 return NULL;
40581 @@ -70671,7 +70470,7 @@ diff -urNp linux-3.0.9/mm/slob.c linux-3.0.9/mm/slob.c
40582 ret = (void *)m + align;
40583
40584 trace_kmalloc_node(_RET_IP_, ret,
40585 -@@ -504,16 +509,25 @@ void *__kmalloc_node(size_t size, gfp_t
40586 +@@ -506,16 +511,25 @@ void *__kmalloc_node(size_t size, gfp_t
40587 gfp |= __GFP_COMP;
40588 ret = slob_new_pages(gfp, order, node);
40589 if (ret) {
40590 @@ -70701,7 +70500,7 @@ diff -urNp linux-3.0.9/mm/slob.c linux-3.0.9/mm/slob.c
40591 return ret;
40592 }
40593 EXPORT_SYMBOL(__kmalloc_node);
40594 -@@ -531,13 +545,88 @@ void kfree(const void *block)
40595 +@@ -533,13 +547,92 @@ void kfree(const void *block)
40596 sp = slob_page(block);
40597 if (is_slob_page(sp)) {
40598 int align = max(ARCH_KMALLOC_MINALIGN, ARCH_SLAB_MINALIGN);
40599 @@ -70727,16 +70526,19 @@ diff -urNp linux-3.0.9/mm/slob.c linux-3.0.9/mm/slob.c
40600 + const slob_t *free;
40601 + const void *base;
40602 + unsigned long flags;
40603 ++ const char *type;
40604 +
40605 + if (!n)
40606 + return;
40607 +
40608 ++ type = "<null>";
40609 + if (ZERO_OR_NULL_PTR(ptr))
40610 + goto report;
40611 +
40612 + if (!virt_addr_valid(ptr))
40613 + return;
40614 +
40615 ++ type = "<process stack>";
40616 + sp = slob_page(ptr);
40617 + if (!PageSlab((struct page*)sp)) {
40618 + if (object_is_on_stack(ptr, n) == -1)
40619 @@ -70744,6 +70546,7 @@ diff -urNp linux-3.0.9/mm/slob.c linux-3.0.9/mm/slob.c
40620 + return;
40621 + }
40622 +
40623 ++ type = "<slob>";
40624 + if (sp->size) {
40625 + base = page_address(&sp->page);
40626 + if (base <= ptr && n <= sp->size - (ptr - base))
40627 @@ -70784,7 +70587,7 @@ diff -urNp linux-3.0.9/mm/slob.c linux-3.0.9/mm/slob.c
40628 +
40629 + spin_unlock_irqrestore(&slob_lock, flags);
40630 +report:
40631 -+ pax_report_usercopy(ptr, n, to, NULL);
40632 ++ pax_report_usercopy(ptr, n, to, type);
40633 +#endif
40634 +
40635 +}
40636 @@ -70793,7 +70596,7 @@ diff -urNp linux-3.0.9/mm/slob.c linux-3.0.9/mm/slob.c
40637 /* can't use ksize for kmem_cache_alloc memory, only kmalloc */
40638 size_t ksize(const void *block)
40639 {
40640 -@@ -550,10 +639,10 @@ size_t ksize(const void *block)
40641 +@@ -552,10 +645,10 @@ size_t ksize(const void *block)
40642 sp = slob_page(block);
40643 if (is_slob_page(sp)) {
40644 int align = max(ARCH_KMALLOC_MINALIGN, ARCH_SLAB_MINALIGN);
40645 @@ -70807,7 +70610,7 @@ diff -urNp linux-3.0.9/mm/slob.c linux-3.0.9/mm/slob.c
40646 }
40647 EXPORT_SYMBOL(ksize);
40648
40649 -@@ -569,8 +658,13 @@ struct kmem_cache *kmem_cache_create(con
40650 +@@ -571,8 +664,13 @@ struct kmem_cache *kmem_cache_create(con
40651 {
40652 struct kmem_cache *c;
40653
40654 @@ -70821,9 +70624,9 @@ diff -urNp linux-3.0.9/mm/slob.c linux-3.0.9/mm/slob.c
40655
40656 if (c) {
40657 c->name = name;
40658 -@@ -608,17 +702,25 @@ void *kmem_cache_alloc_node(struct kmem_
40659 - {
40660 - void *b;
40661 +@@ -614,17 +712,25 @@ void *kmem_cache_alloc_node(struct kmem_
40662 +
40663 + lockdep_trace_alloc(flags);
40664
40665 +#ifdef CONFIG_PAX_USERCOPY
40666 + b = __kmalloc_node_align(c->size, flags, node, c->align);
40667 @@ -70847,7 +70650,7 @@ diff -urNp linux-3.0.9/mm/slob.c linux-3.0.9/mm/slob.c
40668
40669 if (c->ctor)
40670 c->ctor(b);
40671 -@@ -630,10 +732,16 @@ EXPORT_SYMBOL(kmem_cache_alloc_node);
40672 +@@ -636,10 +742,16 @@ EXPORT_SYMBOL(kmem_cache_alloc_node);
40673
40674 static void __kmem_cache_free(void *b, int size)
40675 {
40676 @@ -70866,7 +70669,7 @@ diff -urNp linux-3.0.9/mm/slob.c linux-3.0.9/mm/slob.c
40677 }
40678
40679 static void kmem_rcu_free(struct rcu_head *head)
40680 -@@ -646,17 +754,31 @@ static void kmem_rcu_free(struct rcu_hea
40681 +@@ -652,17 +764,31 @@ static void kmem_rcu_free(struct rcu_hea
40682
40683 void kmem_cache_free(struct kmem_cache *c, void *b)
40684 {
40685 @@ -70901,10 +70704,10 @@ diff -urNp linux-3.0.9/mm/slob.c linux-3.0.9/mm/slob.c
40686 }
40687 EXPORT_SYMBOL(kmem_cache_free);
40688
40689 -diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40690 ---- linux-3.0.9/mm/slub.c 2011-11-11 13:12:24.000000000 -0500
40691 -+++ linux-3.0.9/mm/slub.c 2011-11-15 20:03:00.000000000 -0500
40692 -@@ -200,7 +200,7 @@ struct track {
40693 +diff -urNp linux-3.1.1/mm/slub.c linux-3.1.1/mm/slub.c
40694 +--- linux-3.1.1/mm/slub.c 2011-11-11 15:19:27.000000000 -0500
40695 ++++ linux-3.1.1/mm/slub.c 2011-11-16 19:27:25.000000000 -0500
40696 +@@ -208,7 +208,7 @@ struct track {
40697
40698 enum track_item { TRACK_ALLOC, TRACK_FREE };
40699
40700 @@ -70913,16 +70716,16 @@ diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40701 static int sysfs_slab_add(struct kmem_cache *);
40702 static int sysfs_slab_alias(struct kmem_cache *, const char *);
40703 static void sysfs_slab_remove(struct kmem_cache *);
40704 -@@ -442,7 +442,7 @@ static void print_track(const char *s, s
40705 +@@ -556,7 +556,7 @@ static void print_track(const char *s, s
40706 if (!t->addr)
40707 return;
40708
40709 - printk(KERN_ERR "INFO: %s in %pS age=%lu cpu=%u pid=%d\n",
40710 + printk(KERN_ERR "INFO: %s in %pA age=%lu cpu=%u pid=%d\n",
40711 s, (void *)t->addr, jiffies - t->when, t->cpu, t->pid);
40712 - }
40713 -
40714 -@@ -2137,6 +2137,8 @@ void kmem_cache_free(struct kmem_cache *
40715 + #ifdef CONFIG_STACKTRACE
40716 + {
40717 +@@ -2456,6 +2456,8 @@ void kmem_cache_free(struct kmem_cache *
40718
40719 page = virt_to_head_page(x);
40720
40721 @@ -70931,7 +70734,7 @@ diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40722 slab_free(s, page, x, _RET_IP_);
40723
40724 trace_kmem_cache_free(_RET_IP_, x);
40725 -@@ -2170,7 +2172,7 @@ static int slub_min_objects;
40726 +@@ -2489,7 +2491,7 @@ static int slub_min_objects;
40727 * Merge control. If this is set then no merging of slab caches will occur.
40728 * (Could be removed. This was introduced to pacify the merge skeptics.)
40729 */
40730 @@ -70940,7 +70743,7 @@ diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40731
40732 /*
40733 * Calculate the order of allocation given an slab object size.
40734 -@@ -2594,7 +2596,7 @@ static int kmem_cache_open(struct kmem_c
40735 +@@ -2912,7 +2914,7 @@ static int kmem_cache_open(struct kmem_c
40736 * list to avoid pounding the page allocator excessively.
40737 */
40738 set_min_partial(s, ilog2(s->size));
40739 @@ -70949,7 +70752,7 @@ diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40740 #ifdef CONFIG_NUMA
40741 s->remote_node_defrag_ratio = 1000;
40742 #endif
40743 -@@ -2699,8 +2701,7 @@ static inline int kmem_cache_close(struc
40744 +@@ -3017,8 +3019,7 @@ static inline int kmem_cache_close(struc
40745 void kmem_cache_destroy(struct kmem_cache *s)
40746 {
40747 down_write(&slub_lock);
40748 @@ -70959,7 +70762,7 @@ diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40749 list_del(&s->list);
40750 if (kmem_cache_close(s)) {
40751 printk(KERN_ERR "SLUB %s: %s called for cache that "
40752 -@@ -2910,6 +2911,46 @@ void *__kmalloc_node(size_t size, gfp_t
40753 +@@ -3228,6 +3229,50 @@ void *__kmalloc_node(size_t size, gfp_t
40754 EXPORT_SYMBOL(__kmalloc_node);
40755 #endif
40756
40757 @@ -70970,10 +70773,12 @@ diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40758 + struct page *page;
40759 + struct kmem_cache *s = NULL;
40760 + unsigned long offset;
40761 ++ const char *type;
40762 +
40763 + if (!n)
40764 + return;
40765 +
40766 ++ type = "<null>";
40767 + if (ZERO_OR_NULL_PTR(ptr))
40768 + goto report;
40769 +
40770 @@ -70982,6 +70787,7 @@ diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40771 +
40772 + page = virt_to_head_page(ptr);
40773 +
40774 ++ type = "<process stack>";
40775 + if (!PageSlab(page)) {
40776 + if (object_is_on_stack(ptr, n) == -1)
40777 + goto report;
40778 @@ -70989,6 +70795,7 @@ diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40779 + }
40780 +
40781 + s = page->slab;
40782 ++ type = s->name;
40783 + if (!(s->flags & SLAB_USERCOPY))
40784 + goto report;
40785 +
40786 @@ -70997,7 +70804,7 @@ diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40787 + return;
40788 +
40789 +report:
40790 -+ pax_report_usercopy(ptr, n, to, s ? s->name : NULL);
40791 ++ pax_report_usercopy(ptr, n, to, type);
40792 +#endif
40793 +
40794 +}
40795 @@ -71006,7 +70813,7 @@ diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40796 size_t ksize(const void *object)
40797 {
40798 struct page *page;
40799 -@@ -3154,7 +3195,7 @@ static void __init kmem_cache_bootstrap_
40800 +@@ -3502,7 +3547,7 @@ static void __init kmem_cache_bootstrap_
40801 int node;
40802
40803 list_add(&s->list, &slab_caches);
40804 @@ -71015,7 +70822,7 @@ diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40805
40806 for_each_node_state(node, N_NORMAL_MEMORY) {
40807 struct kmem_cache_node *n = get_node(s, node);
40808 -@@ -3271,17 +3312,17 @@ void __init kmem_cache_init(void)
40809 +@@ -3619,17 +3664,17 @@ void __init kmem_cache_init(void)
40810
40811 /* Caches that are not of the two-to-the-power-of size */
40812 if (KMALLOC_MIN_SIZE <= 32) {
40813 @@ -71036,7 +70843,7 @@ diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40814 caches++;
40815 }
40816
40817 -@@ -3349,7 +3390,7 @@ static int slab_unmergeable(struct kmem_
40818 +@@ -3697,7 +3742,7 @@ static int slab_unmergeable(struct kmem_
40819 /*
40820 * We may have set a slab to be unmergeable during bootstrap.
40821 */
40822 @@ -71045,7 +70852,7 @@ diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40823 return 1;
40824
40825 return 0;
40826 -@@ -3408,7 +3449,7 @@ struct kmem_cache *kmem_cache_create(con
40827 +@@ -3756,7 +3801,7 @@ struct kmem_cache *kmem_cache_create(con
40828 down_write(&slub_lock);
40829 s = find_mergeable(size, align, flags, name, ctor);
40830 if (s) {
40831 @@ -71054,7 +70861,7 @@ diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40832 /*
40833 * Adjust the object sizes so that we clear
40834 * the complete object on kzalloc.
40835 -@@ -3417,7 +3458,7 @@ struct kmem_cache *kmem_cache_create(con
40836 +@@ -3765,7 +3810,7 @@ struct kmem_cache *kmem_cache_create(con
40837 s->inuse = max_t(int, s->inuse, ALIGN(size, sizeof(void *)));
40838
40839 if (sysfs_slab_alias(s, name)) {
40840 @@ -71063,7 +70870,7 @@ diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40841 goto err;
40842 }
40843 up_write(&slub_lock);
40844 -@@ -3545,7 +3586,7 @@ void *__kmalloc_node_track_caller(size_t
40845 +@@ -3893,7 +3938,7 @@ void *__kmalloc_node_track_caller(size_t
40846 }
40847 #endif
40848
40849 @@ -71072,7 +70879,7 @@ diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40850 static int count_inuse(struct page *page)
40851 {
40852 return page->inuse;
40853 -@@ -3935,12 +3976,12 @@ static void resiliency_test(void)
40854 +@@ -4280,12 +4325,12 @@ static void resiliency_test(void)
40855 validate_slab_cache(kmalloc_caches[9]);
40856 }
40857 #else
40858 @@ -71087,7 +70894,7 @@ diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40859 enum slab_stat_type {
40860 SL_ALL, /* All slabs */
40861 SL_PARTIAL, /* Only partially allocated slabs */
40862 -@@ -4150,7 +4191,7 @@ SLAB_ATTR_RO(ctor);
40863 +@@ -4495,7 +4540,7 @@ SLAB_ATTR_RO(ctor);
40864
40865 static ssize_t aliases_show(struct kmem_cache *s, char *buf)
40866 {
40867 @@ -71096,7 +70903,7 @@ diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40868 }
40869 SLAB_ATTR_RO(aliases);
40870
40871 -@@ -4662,6 +4703,7 @@ static char *create_unique_id(struct kme
40872 +@@ -5025,6 +5070,7 @@ static char *create_unique_id(struct kme
40873 return name;
40874 }
40875
40876 @@ -71104,7 +70911,7 @@ diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40877 static int sysfs_slab_add(struct kmem_cache *s)
40878 {
40879 int err;
40880 -@@ -4724,6 +4766,7 @@ static void sysfs_slab_remove(struct kme
40881 +@@ -5087,6 +5133,7 @@ static void sysfs_slab_remove(struct kme
40882 kobject_del(&s->kobj);
40883 kobject_put(&s->kobj);
40884 }
40885 @@ -71112,7 +70919,7 @@ diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40886
40887 /*
40888 * Need to buffer aliases during bootup until sysfs becomes
40889 -@@ -4737,6 +4780,7 @@ struct saved_alias {
40890 +@@ -5100,6 +5147,7 @@ struct saved_alias {
40891
40892 static struct saved_alias *alias_list;
40893
40894 @@ -71120,7 +70927,7 @@ diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40895 static int sysfs_slab_alias(struct kmem_cache *s, const char *name)
40896 {
40897 struct saved_alias *al;
40898 -@@ -4759,6 +4803,7 @@ static int sysfs_slab_alias(struct kmem_
40899 +@@ -5122,6 +5170,7 @@ static int sysfs_slab_alias(struct kmem_
40900 alias_list = al;
40901 return 0;
40902 }
40903 @@ -71128,7 +70935,7 @@ diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40904
40905 static int __init slab_sysfs_init(void)
40906 {
40907 -@@ -4894,7 +4939,13 @@ static const struct file_operations proc
40908 +@@ -5257,7 +5306,13 @@ static const struct file_operations proc
40909
40910 static int __init slab_proc_init(void)
40911 {
40912 @@ -71143,9 +70950,9 @@ diff -urNp linux-3.0.9/mm/slub.c linux-3.0.9/mm/slub.c
40913 return 0;
40914 }
40915 module_init(slab_proc_init);
40916 -diff -urNp linux-3.0.9/mm/swap.c linux-3.0.9/mm/swap.c
40917 ---- linux-3.0.9/mm/swap.c 2011-11-11 13:12:24.000000000 -0500
40918 -+++ linux-3.0.9/mm/swap.c 2011-11-15 20:03:00.000000000 -0500
40919 +diff -urNp linux-3.1.1/mm/swap.c linux-3.1.1/mm/swap.c
40920 +--- linux-3.1.1/mm/swap.c 2011-11-11 15:19:27.000000000 -0500
40921 ++++ linux-3.1.1/mm/swap.c 2011-11-16 18:39:08.000000000 -0500
40922 @@ -31,6 +31,7 @@
40923 #include <linux/backing-dev.h>
40924 #include <linux/memcontrol.h>
40925 @@ -71163,9 +70970,9 @@ diff -urNp linux-3.0.9/mm/swap.c linux-3.0.9/mm/swap.c
40926 (*dtor)(page);
40927 }
40928
40929 -diff -urNp linux-3.0.9/mm/swapfile.c linux-3.0.9/mm/swapfile.c
40930 ---- linux-3.0.9/mm/swapfile.c 2011-11-11 13:12:24.000000000 -0500
40931 -+++ linux-3.0.9/mm/swapfile.c 2011-11-15 20:03:00.000000000 -0500
40932 +diff -urNp linux-3.1.1/mm/swapfile.c linux-3.1.1/mm/swapfile.c
40933 +--- linux-3.1.1/mm/swapfile.c 2011-11-11 15:19:27.000000000 -0500
40934 ++++ linux-3.1.1/mm/swapfile.c 2011-11-16 18:39:08.000000000 -0500
40935 @@ -62,7 +62,7 @@ static DEFINE_MUTEX(swapon_mutex);
40936
40937 static DECLARE_WAIT_QUEUE_HEAD(proc_poll_wait);
40938 @@ -71184,27 +70991,27 @@ diff -urNp linux-3.0.9/mm/swapfile.c linux-3.0.9/mm/swapfile.c
40939 wake_up_interruptible(&proc_poll_wait);
40940
40941 out_dput:
40942 -@@ -1692,8 +1692,8 @@ static unsigned swaps_poll(struct file *
40943 +@@ -1687,8 +1687,8 @@ static unsigned swaps_poll(struct file *
40944
40945 poll_wait(file, &proc_poll_wait, wait);
40946
40947 -- if (s->event != atomic_read(&proc_poll_event)) {
40948 -- s->event = atomic_read(&proc_poll_event);
40949 -+ if (s->event != atomic_read_unchecked(&proc_poll_event)) {
40950 -+ s->event = atomic_read_unchecked(&proc_poll_event);
40951 +- if (seq->poll_event != atomic_read(&proc_poll_event)) {
40952 +- seq->poll_event = atomic_read(&proc_poll_event);
40953 ++ if (seq->poll_event != atomic_read_unchecked(&proc_poll_event)) {
40954 ++ seq->poll_event = atomic_read_unchecked(&proc_poll_event);
40955 return POLLIN | POLLRDNORM | POLLERR | POLLPRI;
40956 }
40957
40958 -@@ -1799,7 +1799,7 @@ static int swaps_open(struct inode *inod
40959 - }
40960 +@@ -1786,7 +1786,7 @@ static int swaps_open(struct inode *inod
40961 + return ret;
40962
40963 - s->seq.private = s;
40964 -- s->event = atomic_read(&proc_poll_event);
40965 -+ s->event = atomic_read_unchecked(&proc_poll_event);
40966 - return ret;
40967 + seq = file->private_data;
40968 +- seq->poll_event = atomic_read(&proc_poll_event);
40969 ++ seq->poll_event = atomic_read_unchecked(&proc_poll_event);
40970 + return 0;
40971 }
40972
40973 -@@ -2133,7 +2133,7 @@ SYSCALL_DEFINE2(swapon, const char __use
40974 +@@ -2124,7 +2124,7 @@ SYSCALL_DEFINE2(swapon, const char __use
40975 (p->flags & SWP_DISCARDABLE) ? "D" : "");
40976
40977 mutex_unlock(&swapon_mutex);
40978 @@ -71213,9 +71020,9 @@ diff -urNp linux-3.0.9/mm/swapfile.c linux-3.0.9/mm/swapfile.c
40979 wake_up_interruptible(&proc_poll_wait);
40980
40981 if (S_ISREG(inode->i_mode))
40982 -diff -urNp linux-3.0.9/mm/util.c linux-3.0.9/mm/util.c
40983 ---- linux-3.0.9/mm/util.c 2011-11-11 13:12:24.000000000 -0500
40984 -+++ linux-3.0.9/mm/util.c 2011-11-15 20:03:00.000000000 -0500
40985 +diff -urNp linux-3.1.1/mm/util.c linux-3.1.1/mm/util.c
40986 +--- linux-3.1.1/mm/util.c 2011-11-11 15:19:27.000000000 -0500
40987 ++++ linux-3.1.1/mm/util.c 2011-11-16 18:39:08.000000000 -0500
40988 @@ -114,6 +114,7 @@ EXPORT_SYMBOL(memdup_user);
40989 * allocated buffer. Use this if you don't want to free the buffer immediately
40990 * like, for example, with RCU.
40991 @@ -71245,9 +71052,9 @@ diff -urNp linux-3.0.9/mm/util.c linux-3.0.9/mm/util.c
40992 mm->get_unmapped_area = arch_get_unmapped_area;
40993 mm->unmap_area = arch_unmap_area;
40994 }
40995 -diff -urNp linux-3.0.9/mm/vmalloc.c linux-3.0.9/mm/vmalloc.c
40996 ---- linux-3.0.9/mm/vmalloc.c 2011-11-11 13:12:24.000000000 -0500
40997 -+++ linux-3.0.9/mm/vmalloc.c 2011-11-15 20:03:00.000000000 -0500
40998 +diff -urNp linux-3.1.1/mm/vmalloc.c linux-3.1.1/mm/vmalloc.c
40999 +--- linux-3.1.1/mm/vmalloc.c 2011-11-11 15:19:27.000000000 -0500
41000 ++++ linux-3.1.1/mm/vmalloc.c 2011-11-16 18:40:44.000000000 -0500
41001 @@ -39,8 +39,19 @@ static void vunmap_pte_range(pmd_t *pmd,
41002
41003 pte = pte_offset_kernel(pmd, addr);
41004 @@ -71351,7 +71158,7 @@ diff -urNp linux-3.0.9/mm/vmalloc.c linux-3.0.9/mm/vmalloc.c
41005 if (!pmd_none(*pmd)) {
41006 pte_t *ptep, pte;
41007
41008 -@@ -1308,6 +1348,16 @@ static struct vm_struct *__get_vm_area_n
41009 +@@ -1294,6 +1334,16 @@ static struct vm_struct *__get_vm_area_n
41010 struct vm_struct *area;
41011
41012 BUG_ON(in_interrupt());
41013 @@ -71368,7 +71175,7 @@ diff -urNp linux-3.0.9/mm/vmalloc.c linux-3.0.9/mm/vmalloc.c
41014 if (flags & VM_IOREMAP) {
41015 int bit = fls(size);
41016
41017 -@@ -1540,6 +1590,11 @@ void *vmap(struct page **pages, unsigned
41018 +@@ -1526,6 +1576,11 @@ void *vmap(struct page **pages, unsigned
41019 if (count > totalram_pages)
41020 return NULL;
41021
41022 @@ -71380,21 +71187,21 @@ diff -urNp linux-3.0.9/mm/vmalloc.c linux-3.0.9/mm/vmalloc.c
41023 area = get_vm_area_caller((count << PAGE_SHIFT), flags,
41024 __builtin_return_address(0));
41025 if (!area)
41026 -@@ -1641,6 +1696,13 @@ void *__vmalloc_node_range(unsigned long
41027 +@@ -1627,6 +1682,13 @@ void *__vmalloc_node_range(unsigned long
41028 if (!size || (size >> PAGE_SHIFT) > totalram_pages)
41029 return NULL;
41030
41031 +#if defined(CONFIG_MODULES) && defined(CONFIG_X86) && defined(CONFIG_PAX_KERNEXEC)
41032 + if (!(pgprot_val(prot) & _PAGE_NX))
41033 -+ area = __get_vm_area_node(size, align, VM_ALLOC | VM_KERNEXEC, VMALLOC_START, VMALLOC_END,
41034 -+ node, gfp_mask, caller);
41035 ++ area = __get_vm_area_node(size, align, VM_ALLOC | VM_UNLIST | VM_KERNEXEC,
41036 ++ VMALLOC_START, VMALLOC_END, node, gfp_mask, caller);
41037 + else
41038 +#endif
41039 +
41040 area = __get_vm_area_node(size, align, VM_ALLOC | VM_UNLIST,
41041 start, end, node, gfp_mask, caller);
41042
41043 -@@ -1686,6 +1748,7 @@ static void *__vmalloc_node(unsigned lon
41044 +@@ -1672,6 +1734,7 @@ static void *__vmalloc_node(unsigned lon
41045 gfp_mask, prot, node, caller);
41046 }
41047
41048 @@ -71402,7 +71209,7 @@ diff -urNp linux-3.0.9/mm/vmalloc.c linux-3.0.9/mm/vmalloc.c
41049 void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot)
41050 {
41051 return __vmalloc_node(size, 1, gfp_mask, prot, -1,
41052 -@@ -1709,6 +1772,7 @@ static inline void *__vmalloc_node_flags
41053 +@@ -1695,6 +1758,7 @@ static inline void *__vmalloc_node_flags
41054 * For tight control over page level allocator and protection flags
41055 * use __vmalloc() instead.
41056 */
41057 @@ -71410,7 +71217,7 @@ diff -urNp linux-3.0.9/mm/vmalloc.c linux-3.0.9/mm/vmalloc.c
41058 void *vmalloc(unsigned long size)
41059 {
41060 return __vmalloc_node_flags(size, -1, GFP_KERNEL | __GFP_HIGHMEM);
41061 -@@ -1725,6 +1789,7 @@ EXPORT_SYMBOL(vmalloc);
41062 +@@ -1711,6 +1775,7 @@ EXPORT_SYMBOL(vmalloc);
41063 * For tight control over page level allocator and protection flags
41064 * use __vmalloc() instead.
41065 */
41066 @@ -71418,7 +71225,7 @@ diff -urNp linux-3.0.9/mm/vmalloc.c linux-3.0.9/mm/vmalloc.c
41067 void *vzalloc(unsigned long size)
41068 {
41069 return __vmalloc_node_flags(size, -1,
41070 -@@ -1739,6 +1804,7 @@ EXPORT_SYMBOL(vzalloc);
41071 +@@ -1725,6 +1790,7 @@ EXPORT_SYMBOL(vzalloc);
41072 * The resulting memory area is zeroed so it can be mapped to userspace
41073 * without leaking data.
41074 */
41075 @@ -71426,7 +71233,7 @@ diff -urNp linux-3.0.9/mm/vmalloc.c linux-3.0.9/mm/vmalloc.c
41076 void *vmalloc_user(unsigned long size)
41077 {
41078 struct vm_struct *area;
41079 -@@ -1766,6 +1832,7 @@ EXPORT_SYMBOL(vmalloc_user);
41080 +@@ -1752,6 +1818,7 @@ EXPORT_SYMBOL(vmalloc_user);
41081 * For tight control over page level allocator and protection flags
41082 * use __vmalloc() instead.
41083 */
41084 @@ -71434,7 +71241,7 @@ diff -urNp linux-3.0.9/mm/vmalloc.c linux-3.0.9/mm/vmalloc.c
41085 void *vmalloc_node(unsigned long size, int node)
41086 {
41087 return __vmalloc_node(size, 1, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL,
41088 -@@ -1785,6 +1852,7 @@ EXPORT_SYMBOL(vmalloc_node);
41089 +@@ -1771,6 +1838,7 @@ EXPORT_SYMBOL(vmalloc_node);
41090 * For tight control over page level allocator and protection flags
41091 * use __vmalloc_node() instead.
41092 */
41093 @@ -71442,7 +71249,7 @@ diff -urNp linux-3.0.9/mm/vmalloc.c linux-3.0.9/mm/vmalloc.c
41094 void *vzalloc_node(unsigned long size, int node)
41095 {
41096 return __vmalloc_node_flags(size, node,
41097 -@@ -1807,10 +1875,10 @@ EXPORT_SYMBOL(vzalloc_node);
41098 +@@ -1793,10 +1861,10 @@ EXPORT_SYMBOL(vzalloc_node);
41099 * For tight control over page level allocator and protection flags
41100 * use __vmalloc() instead.
41101 */
41102 @@ -71455,7 +71262,7 @@ diff -urNp linux-3.0.9/mm/vmalloc.c linux-3.0.9/mm/vmalloc.c
41103 -1, __builtin_return_address(0));
41104 }
41105
41106 -@@ -1829,6 +1897,7 @@ void *vmalloc_exec(unsigned long size)
41107 +@@ -1815,6 +1883,7 @@ void *vmalloc_exec(unsigned long size)
41108 * Allocate enough 32bit PA addressable pages to cover @size from the
41109 * page level allocator and map them into contiguous kernel virtual space.
41110 */
41111 @@ -71463,7 +71270,7 @@ diff -urNp linux-3.0.9/mm/vmalloc.c linux-3.0.9/mm/vmalloc.c
41112 void *vmalloc_32(unsigned long size)
41113 {
41114 return __vmalloc_node(size, 1, GFP_VMALLOC32, PAGE_KERNEL,
41115 -@@ -1843,6 +1912,7 @@ EXPORT_SYMBOL(vmalloc_32);
41116 +@@ -1829,6 +1898,7 @@ EXPORT_SYMBOL(vmalloc_32);
41117 * The resulting memory area is 32bit addressable and zeroed so it can be
41118 * mapped to userspace without leaking data.
41119 */
41120 @@ -71471,7 +71278,7 @@ diff -urNp linux-3.0.9/mm/vmalloc.c linux-3.0.9/mm/vmalloc.c
41121 void *vmalloc_32_user(unsigned long size)
41122 {
41123 struct vm_struct *area;
41124 -@@ -2105,6 +2175,8 @@ int remap_vmalloc_range(struct vm_area_s
41125 +@@ -2091,6 +2161,8 @@ int remap_vmalloc_range(struct vm_area_s
41126 unsigned long uaddr = vma->vm_start;
41127 unsigned long usize = vma->vm_end - vma->vm_start;
41128
41129 @@ -71480,9 +71287,9 @@ diff -urNp linux-3.0.9/mm/vmalloc.c linux-3.0.9/mm/vmalloc.c
41130 if ((PAGE_SIZE-1) & (unsigned long)addr)
41131 return -EINVAL;
41132
41133 -diff -urNp linux-3.0.9/mm/vmstat.c linux-3.0.9/mm/vmstat.c
41134 ---- linux-3.0.9/mm/vmstat.c 2011-11-11 13:12:24.000000000 -0500
41135 -+++ linux-3.0.9/mm/vmstat.c 2011-11-15 20:03:00.000000000 -0500
41136 +diff -urNp linux-3.1.1/mm/vmstat.c linux-3.1.1/mm/vmstat.c
41137 +--- linux-3.1.1/mm/vmstat.c 2011-11-11 15:19:27.000000000 -0500
41138 ++++ linux-3.1.1/mm/vmstat.c 2011-11-16 18:40:44.000000000 -0500
41139 @@ -78,7 +78,7 @@ void vm_events_fold_cpu(int cpu)
41140 *
41141 * vm_stat contains the global counters
41142 @@ -71535,10 +71342,10 @@ diff -urNp linux-3.0.9/mm/vmstat.c linux-3.0.9/mm/vmstat.c
41143 #endif
41144 return 0;
41145 }
41146 -diff -urNp linux-3.0.9/net/8021q/vlan.c linux-3.0.9/net/8021q/vlan.c
41147 ---- linux-3.0.9/net/8021q/vlan.c 2011-11-11 13:12:24.000000000 -0500
41148 -+++ linux-3.0.9/net/8021q/vlan.c 2011-11-15 20:03:00.000000000 -0500
41149 -@@ -591,8 +591,7 @@ static int vlan_ioctl_handler(struct net
41150 +diff -urNp linux-3.1.1/net/8021q/vlan.c linux-3.1.1/net/8021q/vlan.c
41151 +--- linux-3.1.1/net/8021q/vlan.c 2011-11-11 15:19:27.000000000 -0500
41152 ++++ linux-3.1.1/net/8021q/vlan.c 2011-11-16 18:39:08.000000000 -0500
41153 +@@ -588,8 +588,7 @@ static int vlan_ioctl_handler(struct net
41154 err = -EPERM;
41155 if (!capable(CAP_NET_ADMIN))
41156 break;
41157 @@ -71548,9 +71355,9 @@ diff -urNp linux-3.0.9/net/8021q/vlan.c linux-3.0.9/net/8021q/vlan.c
41158 struct vlan_net *vn;
41159
41160 vn = net_generic(net, vlan_net_id);
41161 -diff -urNp linux-3.0.9/net/9p/trans_fd.c linux-3.0.9/net/9p/trans_fd.c
41162 ---- linux-3.0.9/net/9p/trans_fd.c 2011-11-11 13:12:24.000000000 -0500
41163 -+++ linux-3.0.9/net/9p/trans_fd.c 2011-11-15 20:03:00.000000000 -0500
41164 +diff -urNp linux-3.1.1/net/9p/trans_fd.c linux-3.1.1/net/9p/trans_fd.c
41165 +--- linux-3.1.1/net/9p/trans_fd.c 2011-11-11 15:19:27.000000000 -0500
41166 ++++ linux-3.1.1/net/9p/trans_fd.c 2011-11-16 18:39:08.000000000 -0500
41167 @@ -423,7 +423,7 @@ static int p9_fd_write(struct p9_client
41168 oldfs = get_fs();
41169 set_fs(get_ds());
41170 @@ -71560,9 +71367,9 @@ diff -urNp linux-3.0.9/net/9p/trans_fd.c linux-3.0.9/net/9p/trans_fd.c
41171 set_fs(oldfs);
41172
41173 if (ret <= 0 && ret != -ERESTARTSYS && ret != -EAGAIN)
41174 -diff -urNp linux-3.0.9/net/9p/trans_virtio.c linux-3.0.9/net/9p/trans_virtio.c
41175 ---- linux-3.0.9/net/9p/trans_virtio.c 2011-11-11 13:12:24.000000000 -0500
41176 -+++ linux-3.0.9/net/9p/trans_virtio.c 2011-11-15 20:03:00.000000000 -0500
41177 +diff -urNp linux-3.1.1/net/9p/trans_virtio.c linux-3.1.1/net/9p/trans_virtio.c
41178 +--- linux-3.1.1/net/9p/trans_virtio.c 2011-11-11 15:19:27.000000000 -0500
41179 ++++ linux-3.1.1/net/9p/trans_virtio.c 2011-11-16 18:39:08.000000000 -0500
41180 @@ -327,7 +327,7 @@ req_retry_pinned:
41181 } else {
41182 char *pbuf;
41183 @@ -71581,9 +71388,9 @@ diff -urNp linux-3.0.9/net/9p/trans_virtio.c linux-3.0.9/net/9p/trans_virtio.c
41184 else
41185 pbuf = req->tc->pkbuf;
41186
41187 -diff -urNp linux-3.0.9/net/atm/atm_misc.c linux-3.0.9/net/atm/atm_misc.c
41188 ---- linux-3.0.9/net/atm/atm_misc.c 2011-11-11 13:12:24.000000000 -0500
41189 -+++ linux-3.0.9/net/atm/atm_misc.c 2011-11-15 20:03:00.000000000 -0500
41190 +diff -urNp linux-3.1.1/net/atm/atm_misc.c linux-3.1.1/net/atm/atm_misc.c
41191 +--- linux-3.1.1/net/atm/atm_misc.c 2011-11-11 15:19:27.000000000 -0500
41192 ++++ linux-3.1.1/net/atm/atm_misc.c 2011-11-16 18:39:08.000000000 -0500
41193 @@ -17,7 +17,7 @@ int atm_charge(struct atm_vcc *vcc, int
41194 if (atomic_read(&sk_atm(vcc)->sk_rmem_alloc) <= sk_atm(vcc)->sk_rcvbuf)
41195 return 1;
41196 @@ -71620,9 +71427,9 @@ diff -urNp linux-3.0.9/net/atm/atm_misc.c linux-3.0.9/net/atm/atm_misc.c
41197 __SONET_ITEMS
41198 #undef __HANDLE_ITEM
41199 }
41200 -diff -urNp linux-3.0.9/net/atm/lec.h linux-3.0.9/net/atm/lec.h
41201 ---- linux-3.0.9/net/atm/lec.h 2011-11-11 13:12:24.000000000 -0500
41202 -+++ linux-3.0.9/net/atm/lec.h 2011-11-15 20:03:00.000000000 -0500
41203 +diff -urNp linux-3.1.1/net/atm/lec.h linux-3.1.1/net/atm/lec.h
41204 +--- linux-3.1.1/net/atm/lec.h 2011-11-11 15:19:27.000000000 -0500
41205 ++++ linux-3.1.1/net/atm/lec.h 2011-11-16 18:39:08.000000000 -0500
41206 @@ -48,7 +48,7 @@ struct lane2_ops {
41207 const u8 *tlvs, u32 sizeoftlvs);
41208 void (*associate_indicator) (struct net_device *dev, const u8 *mac_addr,
41209 @@ -71632,9 +71439,9 @@ diff -urNp linux-3.0.9/net/atm/lec.h linux-3.0.9/net/atm/lec.h
41210
41211 /*
41212 * ATM LAN Emulation supports both LLC & Dix Ethernet EtherType
41213 -diff -urNp linux-3.0.9/net/atm/mpc.h linux-3.0.9/net/atm/mpc.h
41214 ---- linux-3.0.9/net/atm/mpc.h 2011-11-11 13:12:24.000000000 -0500
41215 -+++ linux-3.0.9/net/atm/mpc.h 2011-11-15 20:03:00.000000000 -0500
41216 +diff -urNp linux-3.1.1/net/atm/mpc.h linux-3.1.1/net/atm/mpc.h
41217 +--- linux-3.1.1/net/atm/mpc.h 2011-11-11 15:19:27.000000000 -0500
41218 ++++ linux-3.1.1/net/atm/mpc.h 2011-11-16 18:39:08.000000000 -0500
41219 @@ -33,7 +33,7 @@ struct mpoa_client {
41220 struct mpc_parameters parameters; /* parameters for this client */
41221
41222 @@ -71644,9 +71451,9 @@ diff -urNp linux-3.0.9/net/atm/mpc.h linux-3.0.9/net/atm/mpc.h
41223 };
41224
41225
41226 -diff -urNp linux-3.0.9/net/atm/mpoa_caches.c linux-3.0.9/net/atm/mpoa_caches.c
41227 ---- linux-3.0.9/net/atm/mpoa_caches.c 2011-11-11 13:12:24.000000000 -0500
41228 -+++ linux-3.0.9/net/atm/mpoa_caches.c 2011-11-15 20:03:00.000000000 -0500
41229 +diff -urNp linux-3.1.1/net/atm/mpoa_caches.c linux-3.1.1/net/atm/mpoa_caches.c
41230 +--- linux-3.1.1/net/atm/mpoa_caches.c 2011-11-11 15:19:27.000000000 -0500
41231 ++++ linux-3.1.1/net/atm/mpoa_caches.c 2011-11-16 18:40:44.000000000 -0500
41232 @@ -255,6 +255,8 @@ static void check_resolving_entries(stru
41233 struct timeval now;
41234 struct k_message msg;
41235 @@ -71656,9 +71463,9 @@ diff -urNp linux-3.0.9/net/atm/mpoa_caches.c linux-3.0.9/net/atm/mpoa_caches.c
41236 do_gettimeofday(&now);
41237
41238 read_lock_bh(&client->ingress_lock);
41239 -diff -urNp linux-3.0.9/net/atm/proc.c linux-3.0.9/net/atm/proc.c
41240 ---- linux-3.0.9/net/atm/proc.c 2011-11-11 13:12:24.000000000 -0500
41241 -+++ linux-3.0.9/net/atm/proc.c 2011-11-15 20:03:00.000000000 -0500
41242 +diff -urNp linux-3.1.1/net/atm/proc.c linux-3.1.1/net/atm/proc.c
41243 +--- linux-3.1.1/net/atm/proc.c 2011-11-11 15:19:27.000000000 -0500
41244 ++++ linux-3.1.1/net/atm/proc.c 2011-11-16 18:39:08.000000000 -0500
41245 @@ -45,9 +45,9 @@ static void add_stats(struct seq_file *s
41246 const struct k_atm_aal_stats *stats)
41247 {
41248 @@ -71672,9 +71479,9 @@ diff -urNp linux-3.0.9/net/atm/proc.c linux-3.0.9/net/atm/proc.c
41249 }
41250
41251 static void atm_dev_info(struct seq_file *seq, const struct atm_dev *dev)
41252 -diff -urNp linux-3.0.9/net/atm/resources.c linux-3.0.9/net/atm/resources.c
41253 ---- linux-3.0.9/net/atm/resources.c 2011-11-11 13:12:24.000000000 -0500
41254 -+++ linux-3.0.9/net/atm/resources.c 2011-11-15 20:03:00.000000000 -0500
41255 +diff -urNp linux-3.1.1/net/atm/resources.c linux-3.1.1/net/atm/resources.c
41256 +--- linux-3.1.1/net/atm/resources.c 2011-11-11 15:19:27.000000000 -0500
41257 ++++ linux-3.1.1/net/atm/resources.c 2011-11-16 18:39:08.000000000 -0500
41258 @@ -160,7 +160,7 @@ EXPORT_SYMBOL(atm_dev_deregister);
41259 static void copy_aal_stats(struct k_atm_aal_stats *from,
41260 struct atm_aal_stats *to)
41261 @@ -71693,10 +71500,10 @@ diff -urNp linux-3.0.9/net/atm/resources.c linux-3.0.9/net/atm/resources.c
41262 __AAL_STAT_ITEMS
41263 #undef __HANDLE_ITEM
41264 }
41265 -diff -urNp linux-3.0.9/net/batman-adv/hard-interface.c linux-3.0.9/net/batman-adv/hard-interface.c
41266 ---- linux-3.0.9/net/batman-adv/hard-interface.c 2011-11-11 13:12:24.000000000 -0500
41267 -+++ linux-3.0.9/net/batman-adv/hard-interface.c 2011-11-15 20:03:00.000000000 -0500
41268 -@@ -351,8 +351,8 @@ int hardif_enable_interface(struct hard_
41269 +diff -urNp linux-3.1.1/net/batman-adv/hard-interface.c linux-3.1.1/net/batman-adv/hard-interface.c
41270 +--- linux-3.1.1/net/batman-adv/hard-interface.c 2011-11-11 15:19:27.000000000 -0500
41271 ++++ linux-3.1.1/net/batman-adv/hard-interface.c 2011-11-16 18:39:08.000000000 -0500
41272 +@@ -347,8 +347,8 @@ int hardif_enable_interface(struct hard_
41273 hard_iface->batman_adv_ptype.dev = hard_iface->net_dev;
41274 dev_add_pack(&hard_iface->batman_adv_ptype);
41275
41276 @@ -71707,10 +71514,10 @@ diff -urNp linux-3.0.9/net/batman-adv/hard-interface.c linux-3.0.9/net/batman-ad
41277 bat_info(hard_iface->soft_iface, "Adding interface: %s\n",
41278 hard_iface->net_dev->name);
41279
41280 -diff -urNp linux-3.0.9/net/batman-adv/routing.c linux-3.0.9/net/batman-adv/routing.c
41281 ---- linux-3.0.9/net/batman-adv/routing.c 2011-11-11 13:12:24.000000000 -0500
41282 -+++ linux-3.0.9/net/batman-adv/routing.c 2011-11-15 20:03:00.000000000 -0500
41283 -@@ -627,7 +627,7 @@ void receive_bat_packet(struct ethhdr *e
41284 +diff -urNp linux-3.1.1/net/batman-adv/routing.c linux-3.1.1/net/batman-adv/routing.c
41285 +--- linux-3.1.1/net/batman-adv/routing.c 2011-11-11 15:19:27.000000000 -0500
41286 ++++ linux-3.1.1/net/batman-adv/routing.c 2011-11-16 18:39:08.000000000 -0500
41287 +@@ -656,7 +656,7 @@ void receive_bat_packet(const struct eth
41288 return;
41289
41290 /* could be changed by schedule_own_packet() */
41291 @@ -71719,51 +71526,51 @@ diff -urNp linux-3.0.9/net/batman-adv/routing.c linux-3.0.9/net/batman-adv/routi
41292
41293 has_directlink_flag = (batman_packet->flags & DIRECTLINK ? 1 : 0);
41294
41295 -diff -urNp linux-3.0.9/net/batman-adv/send.c linux-3.0.9/net/batman-adv/send.c
41296 ---- linux-3.0.9/net/batman-adv/send.c 2011-11-11 13:12:24.000000000 -0500
41297 -+++ linux-3.0.9/net/batman-adv/send.c 2011-11-15 20:03:00.000000000 -0500
41298 -@@ -279,7 +279,7 @@ void schedule_own_packet(struct hard_ifa
41299 +diff -urNp linux-3.1.1/net/batman-adv/send.c linux-3.1.1/net/batman-adv/send.c
41300 +--- linux-3.1.1/net/batman-adv/send.c 2011-11-11 15:19:27.000000000 -0500
41301 ++++ linux-3.1.1/net/batman-adv/send.c 2011-11-16 18:39:08.000000000 -0500
41302 +@@ -326,7 +326,7 @@ void schedule_own_packet(struct hard_ifa
41303
41304 /* change sequence number to network order */
41305 batman_packet->seqno =
41306 - htonl((uint32_t)atomic_read(&hard_iface->seqno));
41307 + htonl((uint32_t)atomic_read_unchecked(&hard_iface->seqno));
41308
41309 - if (vis_server == VIS_TYPE_SERVER_SYNC)
41310 - batman_packet->flags |= VIS_SERVER;
41311 -@@ -293,7 +293,7 @@ void schedule_own_packet(struct hard_ifa
41312 + batman_packet->ttvn = atomic_read(&bat_priv->ttvn);
41313 + batman_packet->tt_crc = htons((uint16_t)atomic_read(&bat_priv->tt_crc));
41314 +@@ -343,7 +343,7 @@ void schedule_own_packet(struct hard_ifa
41315 else
41316 - batman_packet->gw_flags = 0;
41317 + batman_packet->gw_flags = NO_FLAGS;
41318
41319 - atomic_inc(&hard_iface->seqno);
41320 + atomic_inc_unchecked(&hard_iface->seqno);
41321
41322 slide_own_bcast_window(hard_iface);
41323 send_time = own_send_time(bat_priv);
41324 -diff -urNp linux-3.0.9/net/batman-adv/soft-interface.c linux-3.0.9/net/batman-adv/soft-interface.c
41325 ---- linux-3.0.9/net/batman-adv/soft-interface.c 2011-11-11 13:12:24.000000000 -0500
41326 -+++ linux-3.0.9/net/batman-adv/soft-interface.c 2011-11-15 20:03:00.000000000 -0500
41327 -@@ -628,7 +628,7 @@ int interface_tx(struct sk_buff *skb, st
41328 +diff -urNp linux-3.1.1/net/batman-adv/soft-interface.c linux-3.1.1/net/batman-adv/soft-interface.c
41329 +--- linux-3.1.1/net/batman-adv/soft-interface.c 2011-11-11 15:19:27.000000000 -0500
41330 ++++ linux-3.1.1/net/batman-adv/soft-interface.c 2011-11-16 18:39:08.000000000 -0500
41331 +@@ -632,7 +632,7 @@ static int interface_tx(struct sk_buff *
41332
41333 /* set broadcast sequence number */
41334 bcast_packet->seqno =
41335 - htonl(atomic_inc_return(&bat_priv->bcast_seqno));
41336 + htonl(atomic_inc_return_unchecked(&bat_priv->bcast_seqno));
41337
41338 - add_bcast_packet_to_list(bat_priv, skb);
41339 + add_bcast_packet_to_list(bat_priv, skb, 1);
41340
41341 -@@ -830,7 +830,7 @@ struct net_device *softif_create(char *n
41342 +@@ -824,7 +824,7 @@ struct net_device *softif_create(const c
41343 atomic_set(&bat_priv->batman_queue_left, BATMAN_QUEUE_LEN);
41344
41345 atomic_set(&bat_priv->mesh_state, MESH_INACTIVE);
41346 - atomic_set(&bat_priv->bcast_seqno, 1);
41347 + atomic_set_unchecked(&bat_priv->bcast_seqno, 1);
41348 - atomic_set(&bat_priv->tt_local_changed, 0);
41349 -
41350 - bat_priv->primary_if = NULL;
41351 -diff -urNp linux-3.0.9/net/batman-adv/types.h linux-3.0.9/net/batman-adv/types.h
41352 ---- linux-3.0.9/net/batman-adv/types.h 2011-11-11 13:12:24.000000000 -0500
41353 -+++ linux-3.0.9/net/batman-adv/types.h 2011-11-15 20:03:00.000000000 -0500
41354 + atomic_set(&bat_priv->ttvn, 0);
41355 + atomic_set(&bat_priv->tt_local_changes, 0);
41356 + atomic_set(&bat_priv->tt_ogm_append_cnt, 0);
41357 +diff -urNp linux-3.1.1/net/batman-adv/types.h linux-3.1.1/net/batman-adv/types.h
41358 +--- linux-3.1.1/net/batman-adv/types.h 2011-11-11 15:19:27.000000000 -0500
41359 ++++ linux-3.1.1/net/batman-adv/types.h 2011-11-16 18:39:08.000000000 -0500
41360 @@ -38,8 +38,8 @@ struct hard_iface {
41361 int16_t if_num;
41362 char if_status;
41363 @@ -71775,7 +71582,7 @@ diff -urNp linux-3.0.9/net/batman-adv/types.h linux-3.0.9/net/batman-adv/types.h
41364 unsigned char *packet_buff;
41365 int packet_len;
41366 struct kobject *hardif_obj;
41367 -@@ -142,7 +142,7 @@ struct bat_priv {
41368 +@@ -153,7 +153,7 @@ struct bat_priv {
41369 atomic_t orig_interval; /* uint */
41370 atomic_t hop_penalty; /* uint */
41371 atomic_t log_level; /* uint */
41372 @@ -71783,11 +71590,11 @@ diff -urNp linux-3.0.9/net/batman-adv/types.h linux-3.0.9/net/batman-adv/types.h
41373 + atomic_unchecked_t bcast_seqno;
41374 atomic_t bcast_queue_left;
41375 atomic_t batman_queue_left;
41376 - char num_ifaces;
41377 -diff -urNp linux-3.0.9/net/batman-adv/unicast.c linux-3.0.9/net/batman-adv/unicast.c
41378 ---- linux-3.0.9/net/batman-adv/unicast.c 2011-11-11 13:12:24.000000000 -0500
41379 -+++ linux-3.0.9/net/batman-adv/unicast.c 2011-11-15 20:03:00.000000000 -0500
41380 -@@ -265,7 +265,7 @@ int frag_send_skb(struct sk_buff *skb, s
41381 + atomic_t ttvn; /* tranlation table version number */
41382 +diff -urNp linux-3.1.1/net/batman-adv/unicast.c linux-3.1.1/net/batman-adv/unicast.c
41383 +--- linux-3.1.1/net/batman-adv/unicast.c 2011-11-11 15:19:27.000000000 -0500
41384 ++++ linux-3.1.1/net/batman-adv/unicast.c 2011-11-16 18:39:08.000000000 -0500
41385 +@@ -264,7 +264,7 @@ int frag_send_skb(struct sk_buff *skb, s
41386 frag1->flags = UNI_FRAG_HEAD | large_tail;
41387 frag2->flags = large_tail;
41388
41389 @@ -71796,9 +71603,30 @@ diff -urNp linux-3.0.9/net/batman-adv/unicast.c linux-3.0.9/net/batman-adv/unica
41390 frag1->seqno = htons(seqno - 1);
41391 frag2->seqno = htons(seqno);
41392
41393 -diff -urNp linux-3.0.9/net/bridge/br_multicast.c linux-3.0.9/net/bridge/br_multicast.c
41394 ---- linux-3.0.9/net/bridge/br_multicast.c 2011-11-11 13:12:24.000000000 -0500
41395 -+++ linux-3.0.9/net/bridge/br_multicast.c 2011-11-15 20:03:00.000000000 -0500
41396 +diff -urNp linux-3.1.1/net/bluetooth/hci_conn.c linux-3.1.1/net/bluetooth/hci_conn.c
41397 +--- linux-3.1.1/net/bluetooth/hci_conn.c 2011-11-11 15:19:27.000000000 -0500
41398 ++++ linux-3.1.1/net/bluetooth/hci_conn.c 2011-11-16 18:39:08.000000000 -0500
41399 +@@ -218,7 +218,7 @@ void hci_le_start_enc(struct hci_conn *c
41400 + cp.handle = cpu_to_le16(conn->handle);
41401 + memcpy(cp.ltk, ltk, sizeof(cp.ltk));
41402 + cp.ediv = ediv;
41403 +- memcpy(cp.rand, rand, sizeof(rand));
41404 ++ memcpy(cp.rand, rand, sizeof(cp.rand));
41405 +
41406 + hci_send_cmd(hdev, HCI_OP_LE_START_ENC, sizeof(cp), &cp);
41407 + }
41408 +@@ -234,7 +234,7 @@ void hci_le_ltk_reply(struct hci_conn *c
41409 + memset(&cp, 0, sizeof(cp));
41410 +
41411 + cp.handle = cpu_to_le16(conn->handle);
41412 +- memcpy(cp.ltk, ltk, sizeof(ltk));
41413 ++ memcpy(cp.ltk, ltk, sizeof(cp.ltk));
41414 +
41415 + hci_send_cmd(hdev, HCI_OP_LE_LTK_REPLY, sizeof(cp), &cp);
41416 + }
41417 +diff -urNp linux-3.1.1/net/bridge/br_multicast.c linux-3.1.1/net/bridge/br_multicast.c
41418 +--- linux-3.1.1/net/bridge/br_multicast.c 2011-11-11 15:19:27.000000000 -0500
41419 ++++ linux-3.1.1/net/bridge/br_multicast.c 2011-11-16 18:39:08.000000000 -0500
41420 @@ -1485,7 +1485,7 @@ static int br_multicast_ipv6_rcv(struct
41421 nexthdr = ip6h->nexthdr;
41422 offset = ipv6_skip_exthdr(skb, sizeof(*ip6h), &nexthdr);
41423 @@ -71808,10 +71636,10 @@ diff -urNp linux-3.0.9/net/bridge/br_multicast.c linux-3.0.9/net/bridge/br_multi
41424 return 0;
41425
41426 /* Okay, we found ICMPv6 header */
41427 -diff -urNp linux-3.0.9/net/bridge/netfilter/ebtables.c linux-3.0.9/net/bridge/netfilter/ebtables.c
41428 ---- linux-3.0.9/net/bridge/netfilter/ebtables.c 2011-11-11 13:12:24.000000000 -0500
41429 -+++ linux-3.0.9/net/bridge/netfilter/ebtables.c 2011-11-15 20:03:00.000000000 -0500
41430 -@@ -1512,7 +1512,7 @@ static int do_ebt_get_ctl(struct sock *s
41431 +diff -urNp linux-3.1.1/net/bridge/netfilter/ebtables.c linux-3.1.1/net/bridge/netfilter/ebtables.c
41432 +--- linux-3.1.1/net/bridge/netfilter/ebtables.c 2011-11-11 15:19:27.000000000 -0500
41433 ++++ linux-3.1.1/net/bridge/netfilter/ebtables.c 2011-11-16 18:40:44.000000000 -0500
41434 +@@ -1513,7 +1513,7 @@ static int do_ebt_get_ctl(struct sock *s
41435 tmp.valid_hooks = t->table->valid_hooks;
41436 }
41437 mutex_unlock(&ebt_mutex);
41438 @@ -71820,7 +71648,7 @@ diff -urNp linux-3.0.9/net/bridge/netfilter/ebtables.c linux-3.0.9/net/bridge/ne
41439 BUGPRINT("c2u Didn't work\n");
41440 ret = -EFAULT;
41441 break;
41442 -@@ -1780,6 +1780,8 @@ static int compat_copy_everything_to_use
41443 +@@ -1781,6 +1781,8 @@ static int compat_copy_everything_to_use
41444 int ret;
41445 void __user *pos;
41446
41447 @@ -71829,9 +71657,9 @@ diff -urNp linux-3.0.9/net/bridge/netfilter/ebtables.c linux-3.0.9/net/bridge/ne
41448 memset(&tinfo, 0, sizeof(tinfo));
41449
41450 if (cmd == EBT_SO_GET_ENTRIES) {
41451 -diff -urNp linux-3.0.9/net/caif/caif_socket.c linux-3.0.9/net/caif/caif_socket.c
41452 ---- linux-3.0.9/net/caif/caif_socket.c 2011-11-11 13:12:24.000000000 -0500
41453 -+++ linux-3.0.9/net/caif/caif_socket.c 2011-11-15 20:03:00.000000000 -0500
41454 +diff -urNp linux-3.1.1/net/caif/caif_socket.c linux-3.1.1/net/caif/caif_socket.c
41455 +--- linux-3.1.1/net/caif/caif_socket.c 2011-11-11 15:19:27.000000000 -0500
41456 ++++ linux-3.1.1/net/caif/caif_socket.c 2011-11-16 18:39:08.000000000 -0500
41457 @@ -48,19 +48,20 @@ static struct dentry *debugfsdir;
41458 #ifdef CONFIG_DEBUG_FS
41459 struct debug_fs_counter {
41460 @@ -71961,9 +71789,9 @@ diff -urNp linux-3.0.9/net/caif/caif_socket.c linux-3.0.9/net/caif/caif_socket.c
41461 #ifdef CONFIG_DEBUG_FS
41462 if (!IS_ERR(debugfsdir)) {
41463
41464 -diff -urNp linux-3.0.9/net/caif/cfctrl.c linux-3.0.9/net/caif/cfctrl.c
41465 ---- linux-3.0.9/net/caif/cfctrl.c 2011-11-11 13:12:24.000000000 -0500
41466 -+++ linux-3.0.9/net/caif/cfctrl.c 2011-11-15 20:03:00.000000000 -0500
41467 +diff -urNp linux-3.1.1/net/caif/cfctrl.c linux-3.1.1/net/caif/cfctrl.c
41468 +--- linux-3.1.1/net/caif/cfctrl.c 2011-11-11 15:19:27.000000000 -0500
41469 ++++ linux-3.1.1/net/caif/cfctrl.c 2011-11-16 18:40:44.000000000 -0500
41470 @@ -9,6 +9,7 @@
41471 #include <linux/stddef.h>
41472 #include <linux/spinlock.h>
41473 @@ -72011,9 +71839,9 @@ diff -urNp linux-3.0.9/net/caif/cfctrl.c linux-3.0.9/net/caif/cfctrl.c
41474
41475 cfpkt_extr_head(pkt, &cmdrsp, 1);
41476 cmd = cmdrsp & CFCTRL_CMD_MASK;
41477 -diff -urNp linux-3.0.9/net/compat.c linux-3.0.9/net/compat.c
41478 ---- linux-3.0.9/net/compat.c 2011-11-11 13:12:24.000000000 -0500
41479 -+++ linux-3.0.9/net/compat.c 2011-11-15 20:03:00.000000000 -0500
41480 +diff -urNp linux-3.1.1/net/compat.c linux-3.1.1/net/compat.c
41481 +--- linux-3.1.1/net/compat.c 2011-11-11 15:19:27.000000000 -0500
41482 ++++ linux-3.1.1/net/compat.c 2011-11-16 18:39:08.000000000 -0500
41483 @@ -70,9 +70,9 @@ int get_compat_msghdr(struct msghdr *kms
41484 __get_user(kmsg->msg_controllen, &umsg->msg_controllen) ||
41485 __get_user(kmsg->msg_flags, &umsg->msg_flags))
41486 @@ -72141,9 +71969,9 @@ diff -urNp linux-3.0.9/net/compat.c linux-3.0.9/net/compat.c
41487 struct group_filter __user *kgf;
41488 int __user *koptlen;
41489 u32 interface, fmode, numsrc;
41490 -diff -urNp linux-3.0.9/net/core/datagram.c linux-3.0.9/net/core/datagram.c
41491 ---- linux-3.0.9/net/core/datagram.c 2011-11-11 13:12:24.000000000 -0500
41492 -+++ linux-3.0.9/net/core/datagram.c 2011-11-15 20:03:00.000000000 -0500
41493 +diff -urNp linux-3.1.1/net/core/datagram.c linux-3.1.1/net/core/datagram.c
41494 +--- linux-3.1.1/net/core/datagram.c 2011-11-11 15:19:27.000000000 -0500
41495 ++++ linux-3.1.1/net/core/datagram.c 2011-11-16 18:39:08.000000000 -0500
41496 @@ -285,7 +285,7 @@ int skb_kill_datagram(struct sock *sk, s
41497 }
41498
41499 @@ -72153,10 +71981,10 @@ diff -urNp linux-3.0.9/net/core/datagram.c linux-3.0.9/net/core/datagram.c
41500 sk_mem_reclaim_partial(sk);
41501
41502 return err;
41503 -diff -urNp linux-3.0.9/net/core/dev.c linux-3.0.9/net/core/dev.c
41504 ---- linux-3.0.9/net/core/dev.c 2011-11-11 13:12:24.000000000 -0500
41505 -+++ linux-3.0.9/net/core/dev.c 2011-11-15 20:03:00.000000000 -0500
41506 -@@ -1125,10 +1125,14 @@ void dev_load(struct net *net, const cha
41507 +diff -urNp linux-3.1.1/net/core/dev.c linux-3.1.1/net/core/dev.c
41508 +--- linux-3.1.1/net/core/dev.c 2011-11-11 15:19:27.000000000 -0500
41509 ++++ linux-3.1.1/net/core/dev.c 2011-11-16 18:40:44.000000000 -0500
41510 +@@ -1135,10 +1135,14 @@ void dev_load(struct net *net, const cha
41511 if (no_module && capable(CAP_NET_ADMIN))
41512 no_module = request_module("netdev-%s", name);
41513 if (no_module && capable(CAP_SYS_MODULE)) {
41514 @@ -72171,7 +71999,7 @@ diff -urNp linux-3.0.9/net/core/dev.c linux-3.0.9/net/core/dev.c
41515 }
41516 }
41517 EXPORT_SYMBOL(dev_load);
41518 -@@ -1959,7 +1963,7 @@ static int illegal_highdma(struct net_de
41519 +@@ -1977,7 +1981,7 @@ static int illegal_highdma(struct net_de
41520
41521 struct dev_gso_cb {
41522 void (*destructor)(struct sk_buff *skb);
41523 @@ -72180,7 +72008,7 @@ diff -urNp linux-3.0.9/net/core/dev.c linux-3.0.9/net/core/dev.c
41524
41525 #define DEV_GSO_CB(skb) ((struct dev_gso_cb *)(skb)->cb)
41526
41527 -@@ -2912,7 +2916,7 @@ int netif_rx_ni(struct sk_buff *skb)
41528 +@@ -2930,7 +2934,7 @@ int netif_rx_ni(struct sk_buff *skb)
41529 }
41530 EXPORT_SYMBOL(netif_rx_ni);
41531
41532 @@ -72189,7 +72017,7 @@ diff -urNp linux-3.0.9/net/core/dev.c linux-3.0.9/net/core/dev.c
41533 {
41534 struct softnet_data *sd = &__get_cpu_var(softnet_data);
41535
41536 -@@ -3761,7 +3765,7 @@ void netif_napi_del(struct napi_struct *
41537 +@@ -3779,7 +3783,7 @@ void netif_napi_del(struct napi_struct *
41538 }
41539 EXPORT_SYMBOL(netif_napi_del);
41540
41541 @@ -72198,10 +72026,10 @@ diff -urNp linux-3.0.9/net/core/dev.c linux-3.0.9/net/core/dev.c
41542 {
41543 struct softnet_data *sd = &__get_cpu_var(softnet_data);
41544 unsigned long time_limit = jiffies + 2;
41545 -diff -urNp linux-3.0.9/net/core/flow.c linux-3.0.9/net/core/flow.c
41546 ---- linux-3.0.9/net/core/flow.c 2011-11-11 13:12:24.000000000 -0500
41547 -+++ linux-3.0.9/net/core/flow.c 2011-11-15 20:03:00.000000000 -0500
41548 -@@ -60,7 +60,7 @@ struct flow_cache {
41549 +diff -urNp linux-3.1.1/net/core/flow.c linux-3.1.1/net/core/flow.c
41550 +--- linux-3.1.1/net/core/flow.c 2011-11-11 15:19:27.000000000 -0500
41551 ++++ linux-3.1.1/net/core/flow.c 2011-11-16 18:39:08.000000000 -0500
41552 +@@ -61,7 +61,7 @@ struct flow_cache {
41553 struct timer_list rnd_timer;
41554 };
41555
41556 @@ -72210,7 +72038,7 @@ diff -urNp linux-3.0.9/net/core/flow.c linux-3.0.9/net/core/flow.c
41557 EXPORT_SYMBOL(flow_cache_genid);
41558 static struct flow_cache flow_cache_global;
41559 static struct kmem_cache *flow_cachep __read_mostly;
41560 -@@ -85,7 +85,7 @@ static void flow_cache_new_hashrnd(unsig
41561 +@@ -86,7 +86,7 @@ static void flow_cache_new_hashrnd(unsig
41562
41563 static int flow_entry_valid(struct flow_cache_entry *fle)
41564 {
41565 @@ -72219,7 +72047,7 @@ diff -urNp linux-3.0.9/net/core/flow.c linux-3.0.9/net/core/flow.c
41566 return 0;
41567 if (fle->object && !fle->object->ops->check(fle->object))
41568 return 0;
41569 -@@ -256,7 +256,7 @@ flow_cache_lookup(struct net *net, const
41570 +@@ -259,7 +259,7 @@ flow_cache_lookup(struct net *net, const
41571 hlist_add_head(&fle->u.hlist, &fcp->hash_table[hash]);
41572 fcp->hash_count++;
41573 }
41574 @@ -72228,7 +72056,7 @@ diff -urNp linux-3.0.9/net/core/flow.c linux-3.0.9/net/core/flow.c
41575 flo = fle->object;
41576 if (!flo)
41577 goto ret_object;
41578 -@@ -277,7 +277,7 @@ nocache:
41579 +@@ -280,7 +280,7 @@ nocache:
41580 }
41581 flo = resolver(net, key, family, dir, flo, ctx);
41582 if (fle) {
41583 @@ -72237,9 +72065,9 @@ diff -urNp linux-3.0.9/net/core/flow.c linux-3.0.9/net/core/flow.c
41584 if (!IS_ERR(flo))
41585 fle->object = flo;
41586 else
41587 -diff -urNp linux-3.0.9/net/core/iovec.c linux-3.0.9/net/core/iovec.c
41588 ---- linux-3.0.9/net/core/iovec.c 2011-11-11 13:12:24.000000000 -0500
41589 -+++ linux-3.0.9/net/core/iovec.c 2011-11-15 20:03:00.000000000 -0500
41590 +diff -urNp linux-3.1.1/net/core/iovec.c linux-3.1.1/net/core/iovec.c
41591 +--- linux-3.1.1/net/core/iovec.c 2011-11-11 15:19:27.000000000 -0500
41592 ++++ linux-3.1.1/net/core/iovec.c 2011-11-16 18:39:08.000000000 -0500
41593 @@ -42,7 +42,7 @@ int verify_iovec(struct msghdr *m, struc
41594 if (m->msg_namelen) {
41595 if (mode == VERIFY_READ) {
41596 @@ -72258,21 +72086,21 @@ diff -urNp linux-3.0.9/net/core/iovec.c linux-3.0.9/net/core/iovec.c
41597 return -EFAULT;
41598
41599 m->msg_iov = iov;
41600 -diff -urNp linux-3.0.9/net/core/rtnetlink.c linux-3.0.9/net/core/rtnetlink.c
41601 ---- linux-3.0.9/net/core/rtnetlink.c 2011-11-11 13:12:24.000000000 -0500
41602 -+++ linux-3.0.9/net/core/rtnetlink.c 2011-11-15 20:03:00.000000000 -0500
41603 -@@ -56,7 +56,7 @@
41604 - struct rtnl_link {
41605 +diff -urNp linux-3.1.1/net/core/rtnetlink.c linux-3.1.1/net/core/rtnetlink.c
41606 +--- linux-3.1.1/net/core/rtnetlink.c 2011-11-11 15:19:27.000000000 -0500
41607 ++++ linux-3.1.1/net/core/rtnetlink.c 2011-11-16 18:39:08.000000000 -0500
41608 +@@ -57,7 +57,7 @@ struct rtnl_link {
41609 rtnl_doit_func doit;
41610 rtnl_dumpit_func dumpit;
41611 + rtnl_calcit_func calcit;
41612 -};
41613 +} __no_const;
41614
41615 static DEFINE_MUTEX(rtnl_mutex);
41616 -
41617 -diff -urNp linux-3.0.9/net/core/scm.c linux-3.0.9/net/core/scm.c
41618 ---- linux-3.0.9/net/core/scm.c 2011-11-11 13:12:24.000000000 -0500
41619 -+++ linux-3.0.9/net/core/scm.c 2011-11-15 20:03:00.000000000 -0500
41620 + static u16 min_ifinfo_dump_size;
41621 +diff -urNp linux-3.1.1/net/core/scm.c linux-3.1.1/net/core/scm.c
41622 +--- linux-3.1.1/net/core/scm.c 2011-11-11 15:19:27.000000000 -0500
41623 ++++ linux-3.1.1/net/core/scm.c 2011-11-16 18:39:08.000000000 -0500
41624 @@ -218,7 +218,7 @@ EXPORT_SYMBOL(__scm_send);
41625 int put_cmsg(struct msghdr * msg, int level, int type, int len, void *data)
41626 {
41627 @@ -72309,10 +72137,10 @@ diff -urNp linux-3.0.9/net/core/scm.c linux-3.0.9/net/core/scm.c
41628 i++, cmfptr++)
41629 {
41630 int new_fd;
41631 -diff -urNp linux-3.0.9/net/core/skbuff.c linux-3.0.9/net/core/skbuff.c
41632 ---- linux-3.0.9/net/core/skbuff.c 2011-11-11 13:12:24.000000000 -0500
41633 -+++ linux-3.0.9/net/core/skbuff.c 2011-11-15 20:03:00.000000000 -0500
41634 -@@ -1543,6 +1543,8 @@ int skb_splice_bits(struct sk_buff *skb,
41635 +diff -urNp linux-3.1.1/net/core/skbuff.c linux-3.1.1/net/core/skbuff.c
41636 +--- linux-3.1.1/net/core/skbuff.c 2011-11-11 15:19:27.000000000 -0500
41637 ++++ linux-3.1.1/net/core/skbuff.c 2011-11-16 18:40:44.000000000 -0500
41638 +@@ -1650,6 +1650,8 @@ int skb_splice_bits(struct sk_buff *skb,
41639 struct sock *sk = skb->sk;
41640 int ret = 0;
41641
41642 @@ -72321,19 +72149,19 @@ diff -urNp linux-3.0.9/net/core/skbuff.c linux-3.0.9/net/core/skbuff.c
41643 if (splice_grow_spd(pipe, &spd))
41644 return -ENOMEM;
41645
41646 -diff -urNp linux-3.0.9/net/core/sock.c linux-3.0.9/net/core/sock.c
41647 ---- linux-3.0.9/net/core/sock.c 2011-11-11 13:12:24.000000000 -0500
41648 -+++ linux-3.0.9/net/core/sock.c 2011-11-15 20:03:00.000000000 -0500
41649 -@@ -291,7 +291,7 @@ int sock_queue_rcv_skb(struct sock *sk,
41650 +diff -urNp linux-3.1.1/net/core/sock.c linux-3.1.1/net/core/sock.c
41651 +--- linux-3.1.1/net/core/sock.c 2011-11-11 15:19:27.000000000 -0500
41652 ++++ linux-3.1.1/net/core/sock.c 2011-11-16 18:40:44.000000000 -0500
41653 +@@ -293,7 +293,7 @@ int sock_queue_rcv_skb(struct sock *sk,
41654 */
41655 if (atomic_read(&sk->sk_rmem_alloc) + skb->truesize >=
41656 (unsigned)sk->sk_rcvbuf) {
41657 - atomic_inc(&sk->sk_drops);
41658 + atomic_inc_unchecked(&sk->sk_drops);
41659 + trace_sock_rcvqueue_full(sk, skb);
41660 return -ENOMEM;
41661 }
41662 -
41663 -@@ -300,7 +300,7 @@ int sock_queue_rcv_skb(struct sock *sk,
41664 +@@ -303,7 +303,7 @@ int sock_queue_rcv_skb(struct sock *sk,
41665 return err;
41666
41667 if (!sk_rmem_schedule(sk, skb->truesize)) {
41668 @@ -72342,7 +72170,7 @@ diff -urNp linux-3.0.9/net/core/sock.c linux-3.0.9/net/core/sock.c
41669 return -ENOBUFS;
41670 }
41671
41672 -@@ -320,7 +320,7 @@ int sock_queue_rcv_skb(struct sock *sk,
41673 +@@ -323,7 +323,7 @@ int sock_queue_rcv_skb(struct sock *sk,
41674 skb_dst_force(skb);
41675
41676 spin_lock_irqsave(&list->lock, flags);
41677 @@ -72351,7 +72179,7 @@ diff -urNp linux-3.0.9/net/core/sock.c linux-3.0.9/net/core/sock.c
41678 __skb_queue_tail(list, skb);
41679 spin_unlock_irqrestore(&list->lock, flags);
41680
41681 -@@ -340,7 +340,7 @@ int sk_receive_skb(struct sock *sk, stru
41682 +@@ -343,7 +343,7 @@ int sk_receive_skb(struct sock *sk, stru
41683 skb->dev = NULL;
41684
41685 if (sk_rcvqueues_full(sk, skb)) {
41686 @@ -72360,7 +72188,7 @@ diff -urNp linux-3.0.9/net/core/sock.c linux-3.0.9/net/core/sock.c
41687 goto discard_and_relse;
41688 }
41689 if (nested)
41690 -@@ -358,7 +358,7 @@ int sk_receive_skb(struct sock *sk, stru
41691 +@@ -361,7 +361,7 @@ int sk_receive_skb(struct sock *sk, stru
41692 mutex_release(&sk->sk_lock.dep_map, 1, _RET_IP_);
41693 } else if (sk_add_backlog(sk, skb)) {
41694 bh_unlock_sock(sk);
41695 @@ -72369,7 +72197,7 @@ diff -urNp linux-3.0.9/net/core/sock.c linux-3.0.9/net/core/sock.c
41696 goto discard_and_relse;
41697 }
41698
41699 -@@ -921,7 +921,7 @@ int sock_getsockopt(struct socket *sock,
41700 +@@ -924,7 +924,7 @@ int sock_getsockopt(struct socket *sock,
41701 if (len > sizeof(peercred))
41702 len = sizeof(peercred);
41703 cred_to_ucred(sk->sk_peer_pid, sk->sk_peer_cred, &peercred);
41704 @@ -72378,7 +72206,7 @@ diff -urNp linux-3.0.9/net/core/sock.c linux-3.0.9/net/core/sock.c
41705 return -EFAULT;
41706 goto lenout;
41707 }
41708 -@@ -934,7 +934,7 @@ int sock_getsockopt(struct socket *sock,
41709 +@@ -937,7 +937,7 @@ int sock_getsockopt(struct socket *sock,
41710 return -ENOTCONN;
41711 if (lv < len)
41712 return -EINVAL;
41713 @@ -72387,7 +72215,7 @@ diff -urNp linux-3.0.9/net/core/sock.c linux-3.0.9/net/core/sock.c
41714 return -EFAULT;
41715 goto lenout;
41716 }
41717 -@@ -967,7 +967,7 @@ int sock_getsockopt(struct socket *sock,
41718 +@@ -970,7 +970,7 @@ int sock_getsockopt(struct socket *sock,
41719
41720 if (len > lv)
41721 len = lv;
41722 @@ -72396,7 +72224,7 @@ diff -urNp linux-3.0.9/net/core/sock.c linux-3.0.9/net/core/sock.c
41723 return -EFAULT;
41724 lenout:
41725 if (put_user(len, optlen))
41726 -@@ -2024,7 +2024,7 @@ void sock_init_data(struct socket *sock,
41727 +@@ -2029,7 +2029,7 @@ void sock_init_data(struct socket *sock,
41728 */
41729 smp_wmb();
41730 atomic_set(&sk->sk_refcnt, 1);
41731 @@ -72405,10 +72233,10 @@ diff -urNp linux-3.0.9/net/core/sock.c linux-3.0.9/net/core/sock.c
41732 }
41733 EXPORT_SYMBOL(sock_init_data);
41734
41735 -diff -urNp linux-3.0.9/net/decnet/sysctl_net_decnet.c linux-3.0.9/net/decnet/sysctl_net_decnet.c
41736 ---- linux-3.0.9/net/decnet/sysctl_net_decnet.c 2011-11-11 13:12:24.000000000 -0500
41737 -+++ linux-3.0.9/net/decnet/sysctl_net_decnet.c 2011-11-15 20:03:00.000000000 -0500
41738 -@@ -173,7 +173,7 @@ static int dn_node_address_handler(ctl_t
41739 +diff -urNp linux-3.1.1/net/decnet/sysctl_net_decnet.c linux-3.1.1/net/decnet/sysctl_net_decnet.c
41740 +--- linux-3.1.1/net/decnet/sysctl_net_decnet.c 2011-11-11 15:19:27.000000000 -0500
41741 ++++ linux-3.1.1/net/decnet/sysctl_net_decnet.c 2011-11-16 18:39:08.000000000 -0500
41742 +@@ -174,7 +174,7 @@ static int dn_node_address_handler(ctl_t
41743
41744 if (len > *lenp) len = *lenp;
41745
41746 @@ -72417,7 +72245,7 @@ diff -urNp linux-3.0.9/net/decnet/sysctl_net_decnet.c linux-3.0.9/net/decnet/sys
41747 return -EFAULT;
41748
41749 *lenp = len;
41750 -@@ -236,7 +236,7 @@ static int dn_def_dev_handler(ctl_table
41751 +@@ -237,7 +237,7 @@ static int dn_def_dev_handler(ctl_table
41752
41753 if (len > *lenp) len = *lenp;
41754
41755 @@ -72426,9 +72254,9 @@ diff -urNp linux-3.0.9/net/decnet/sysctl_net_decnet.c linux-3.0.9/net/decnet/sys
41756 return -EFAULT;
41757
41758 *lenp = len;
41759 -diff -urNp linux-3.0.9/net/econet/Kconfig linux-3.0.9/net/econet/Kconfig
41760 ---- linux-3.0.9/net/econet/Kconfig 2011-11-11 13:12:24.000000000 -0500
41761 -+++ linux-3.0.9/net/econet/Kconfig 2011-11-15 20:03:00.000000000 -0500
41762 +diff -urNp linux-3.1.1/net/econet/Kconfig linux-3.1.1/net/econet/Kconfig
41763 +--- linux-3.1.1/net/econet/Kconfig 2011-11-11 15:19:27.000000000 -0500
41764 ++++ linux-3.1.1/net/econet/Kconfig 2011-11-16 18:40:44.000000000 -0500
41765 @@ -4,7 +4,7 @@
41766
41767 config ECONET
41768 @@ -72438,9 +72266,9 @@ diff -urNp linux-3.0.9/net/econet/Kconfig linux-3.0.9/net/econet/Kconfig
41769 ---help---
41770 Econet is a fairly old and slow networking protocol mainly used by
41771 Acorn computers to access file and print servers. It uses native
41772 -diff -urNp linux-3.0.9/net/ipv4/fib_frontend.c linux-3.0.9/net/ipv4/fib_frontend.c
41773 ---- linux-3.0.9/net/ipv4/fib_frontend.c 2011-11-11 13:12:24.000000000 -0500
41774 -+++ linux-3.0.9/net/ipv4/fib_frontend.c 2011-11-15 20:03:00.000000000 -0500
41775 +diff -urNp linux-3.1.1/net/ipv4/fib_frontend.c linux-3.1.1/net/ipv4/fib_frontend.c
41776 +--- linux-3.1.1/net/ipv4/fib_frontend.c 2011-11-11 15:19:27.000000000 -0500
41777 ++++ linux-3.1.1/net/ipv4/fib_frontend.c 2011-11-16 18:39:08.000000000 -0500
41778 @@ -970,12 +970,12 @@ static int fib_inetaddr_event(struct not
41779 #ifdef CONFIG_IP_ROUTE_MULTIPATH
41780 fib_sync_up(dev);
41781 @@ -72465,10 +72293,10 @@ diff -urNp linux-3.0.9/net/ipv4/fib_frontend.c linux-3.0.9/net/ipv4/fib_frontend
41782 rt_cache_flush(dev_net(dev), -1);
41783 break;
41784 case NETDEV_DOWN:
41785 -diff -urNp linux-3.0.9/net/ipv4/fib_semantics.c linux-3.0.9/net/ipv4/fib_semantics.c
41786 ---- linux-3.0.9/net/ipv4/fib_semantics.c 2011-11-11 13:12:24.000000000 -0500
41787 -+++ linux-3.0.9/net/ipv4/fib_semantics.c 2011-11-15 20:03:00.000000000 -0500
41788 -@@ -691,7 +691,7 @@ __be32 fib_info_update_nh_saddr(struct n
41789 +diff -urNp linux-3.1.1/net/ipv4/fib_semantics.c linux-3.1.1/net/ipv4/fib_semantics.c
41790 +--- linux-3.1.1/net/ipv4/fib_semantics.c 2011-11-11 15:19:27.000000000 -0500
41791 ++++ linux-3.1.1/net/ipv4/fib_semantics.c 2011-11-16 18:39:08.000000000 -0500
41792 +@@ -699,7 +699,7 @@ __be32 fib_info_update_nh_saddr(struct n
41793 nh->nh_saddr = inet_select_addr(nh->nh_dev,
41794 nh->nh_gw,
41795 nh->nh_parent->fib_scope);
41796 @@ -72477,9 +72305,9 @@ diff -urNp linux-3.0.9/net/ipv4/fib_semantics.c linux-3.0.9/net/ipv4/fib_semanti
41797
41798 return nh->nh_saddr;
41799 }
41800 -diff -urNp linux-3.0.9/net/ipv4/inet_diag.c linux-3.0.9/net/ipv4/inet_diag.c
41801 ---- linux-3.0.9/net/ipv4/inet_diag.c 2011-11-11 13:12:24.000000000 -0500
41802 -+++ linux-3.0.9/net/ipv4/inet_diag.c 2011-11-15 20:03:00.000000000 -0500
41803 +diff -urNp linux-3.1.1/net/ipv4/inet_diag.c linux-3.1.1/net/ipv4/inet_diag.c
41804 +--- linux-3.1.1/net/ipv4/inet_diag.c 2011-11-11 15:19:27.000000000 -0500
41805 ++++ linux-3.1.1/net/ipv4/inet_diag.c 2011-11-16 18:40:44.000000000 -0500
41806 @@ -114,8 +114,14 @@ static int inet_csk_diag_fill(struct soc
41807 r->idiag_retrans = 0;
41808
41809 @@ -72541,9 +72369,9 @@ diff -urNp linux-3.0.9/net/ipv4/inet_diag.c linux-3.0.9/net/ipv4/inet_diag.c
41810
41811 tmo = req->expires - jiffies;
41812 if (tmo < 0)
41813 -diff -urNp linux-3.0.9/net/ipv4/inet_hashtables.c linux-3.0.9/net/ipv4/inet_hashtables.c
41814 ---- linux-3.0.9/net/ipv4/inet_hashtables.c 2011-11-11 13:12:24.000000000 -0500
41815 -+++ linux-3.0.9/net/ipv4/inet_hashtables.c 2011-11-15 20:03:00.000000000 -0500
41816 +diff -urNp linux-3.1.1/net/ipv4/inet_hashtables.c linux-3.1.1/net/ipv4/inet_hashtables.c
41817 +--- linux-3.1.1/net/ipv4/inet_hashtables.c 2011-11-11 15:19:27.000000000 -0500
41818 ++++ linux-3.1.1/net/ipv4/inet_hashtables.c 2011-11-16 18:40:44.000000000 -0500
41819 @@ -18,12 +18,15 @@
41820 #include <linux/sched.h>
41821 #include <linux/slab.h>
41822 @@ -72569,32 +72397,32 @@ diff -urNp linux-3.0.9/net/ipv4/inet_hashtables.c linux-3.0.9/net/ipv4/inet_hash
41823 if (tw) {
41824 inet_twsk_deschedule(tw, death_row);
41825 while (twrefcnt) {
41826 -diff -urNp linux-3.0.9/net/ipv4/inetpeer.c linux-3.0.9/net/ipv4/inetpeer.c
41827 ---- linux-3.0.9/net/ipv4/inetpeer.c 2011-11-11 13:12:24.000000000 -0500
41828 -+++ linux-3.0.9/net/ipv4/inetpeer.c 2011-11-15 20:03:00.000000000 -0500
41829 -@@ -481,6 +481,8 @@ struct inet_peer *inet_getpeer(struct in
41830 +diff -urNp linux-3.1.1/net/ipv4/inetpeer.c linux-3.1.1/net/ipv4/inetpeer.c
41831 +--- linux-3.1.1/net/ipv4/inetpeer.c 2011-11-11 15:19:27.000000000 -0500
41832 ++++ linux-3.1.1/net/ipv4/inetpeer.c 2011-11-16 19:18:22.000000000 -0500
41833 +@@ -400,6 +400,8 @@ struct inet_peer *inet_getpeer(const str
41834 unsigned int sequence;
41835 - int invalidated, newrefcnt = 0;
41836 + int invalidated, gccnt = 0;
41837
41838 + pax_track_stack();
41839 +
41840 - /* Look up for the address quickly, lockless.
41841 + /* Attempt a lockless lookup first.
41842 * Because of a concurrent writer, we might not find an existing entry.
41843 */
41844 -@@ -517,8 +519,8 @@ found: /* The existing node has been fo
41845 +@@ -436,8 +438,8 @@ relookup:
41846 if (p) {
41847 p->daddr = *daddr;
41848 atomic_set(&p->refcnt, 1);
41849 - atomic_set(&p->rid, 0);
41850 -- atomic_set(&p->ip_id_count, secure_ip_id(daddr->addr.a4));
41851 +- atomic_set(&p->ip_id_count,
41852 + atomic_set_unchecked(&p->rid, 0);
41853 -+ atomic_set_unchecked(&p->ip_id_count, secure_ip_id(daddr->addr.a4));
41854 - p->tcp_ts_stamp = 0;
41855 - p->metrics[RTAX_LOCK-1] = INETPEER_METRICS_NEW;
41856 - p->rate_tokens = 0;
41857 -diff -urNp linux-3.0.9/net/ipv4/ipconfig.c linux-3.0.9/net/ipv4/ipconfig.c
41858 ---- linux-3.0.9/net/ipv4/ipconfig.c 2011-11-11 13:12:24.000000000 -0500
41859 -+++ linux-3.0.9/net/ipv4/ipconfig.c 2011-11-15 20:03:00.000000000 -0500
41860 ++ atomic_set_unchecked(&p->ip_id_count,
41861 + (daddr->family == AF_INET) ?
41862 + secure_ip_id(daddr->addr.a4) :
41863 + secure_ipv6_id(daddr->addr.a6));
41864 +diff -urNp linux-3.1.1/net/ipv4/ipconfig.c linux-3.1.1/net/ipv4/ipconfig.c
41865 +--- linux-3.1.1/net/ipv4/ipconfig.c 2011-11-11 15:19:27.000000000 -0500
41866 ++++ linux-3.1.1/net/ipv4/ipconfig.c 2011-11-16 18:39:08.000000000 -0500
41867 @@ -313,7 +313,7 @@ static int __init ic_devinet_ioctl(unsig
41868
41869 mm_segment_t oldfs = get_fs();
41870 @@ -72622,10 +72450,10 @@ diff -urNp linux-3.0.9/net/ipv4/ipconfig.c linux-3.0.9/net/ipv4/ipconfig.c
41871 set_fs(oldfs);
41872 return res;
41873 }
41874 -diff -urNp linux-3.0.9/net/ipv4/ip_fragment.c linux-3.0.9/net/ipv4/ip_fragment.c
41875 ---- linux-3.0.9/net/ipv4/ip_fragment.c 2011-11-11 13:12:24.000000000 -0500
41876 -+++ linux-3.0.9/net/ipv4/ip_fragment.c 2011-11-15 20:03:00.000000000 -0500
41877 -@@ -315,7 +315,7 @@ static inline int ip_frag_too_far(struct
41878 +diff -urNp linux-3.1.1/net/ipv4/ip_fragment.c linux-3.1.1/net/ipv4/ip_fragment.c
41879 +--- linux-3.1.1/net/ipv4/ip_fragment.c 2011-11-11 15:19:27.000000000 -0500
41880 ++++ linux-3.1.1/net/ipv4/ip_fragment.c 2011-11-16 18:39:08.000000000 -0500
41881 +@@ -316,7 +316,7 @@ static inline int ip_frag_too_far(struct
41882 return 0;
41883
41884 start = qp->rid;
41885 @@ -72634,9 +72462,9 @@ diff -urNp linux-3.0.9/net/ipv4/ip_fragment.c linux-3.0.9/net/ipv4/ip_fragment.c
41886 qp->rid = end;
41887
41888 rc = qp->q.fragments && (end - start) > max;
41889 -diff -urNp linux-3.0.9/net/ipv4/ip_sockglue.c linux-3.0.9/net/ipv4/ip_sockglue.c
41890 ---- linux-3.0.9/net/ipv4/ip_sockglue.c 2011-11-11 13:12:24.000000000 -0500
41891 -+++ linux-3.0.9/net/ipv4/ip_sockglue.c 2011-11-15 20:03:00.000000000 -0500
41892 +diff -urNp linux-3.1.1/net/ipv4/ip_sockglue.c linux-3.1.1/net/ipv4/ip_sockglue.c
41893 +--- linux-3.1.1/net/ipv4/ip_sockglue.c 2011-11-11 15:19:27.000000000 -0500
41894 ++++ linux-3.1.1/net/ipv4/ip_sockglue.c 2011-11-16 18:40:44.000000000 -0500
41895 @@ -1073,6 +1073,8 @@ static int do_ip_getsockopt(struct sock
41896 int val;
41897 int len;
41898 @@ -72663,11 +72491,11 @@ diff -urNp linux-3.0.9/net/ipv4/ip_sockglue.c linux-3.0.9/net/ipv4/ip_sockglue.c
41899 - msg.msg_control = optval;
41900 + msg.msg_control = (void __force_kernel *)optval;
41901 msg.msg_controllen = len;
41902 - msg.msg_flags = 0;
41903 + msg.msg_flags = flags;
41904
41905 -diff -urNp linux-3.0.9/net/ipv4/netfilter/nf_nat_snmp_basic.c linux-3.0.9/net/ipv4/netfilter/nf_nat_snmp_basic.c
41906 ---- linux-3.0.9/net/ipv4/netfilter/nf_nat_snmp_basic.c 2011-11-11 13:12:24.000000000 -0500
41907 -+++ linux-3.0.9/net/ipv4/netfilter/nf_nat_snmp_basic.c 2011-11-15 20:03:00.000000000 -0500
41908 +diff -urNp linux-3.1.1/net/ipv4/netfilter/nf_nat_snmp_basic.c linux-3.1.1/net/ipv4/netfilter/nf_nat_snmp_basic.c
41909 +--- linux-3.1.1/net/ipv4/netfilter/nf_nat_snmp_basic.c 2011-11-11 15:19:27.000000000 -0500
41910 ++++ linux-3.1.1/net/ipv4/netfilter/nf_nat_snmp_basic.c 2011-11-16 18:39:08.000000000 -0500
41911 @@ -399,7 +399,7 @@ static unsigned char asn1_octets_decode(
41912
41913 *len = 0;
41914 @@ -72677,9 +72505,9 @@ diff -urNp linux-3.0.9/net/ipv4/netfilter/nf_nat_snmp_basic.c linux-3.0.9/net/ip
41915 if (*octets == NULL) {
41916 if (net_ratelimit())
41917 pr_notice("OOM in bsalg (%d)\n", __LINE__);
41918 -diff -urNp linux-3.0.9/net/ipv4/ping.c linux-3.0.9/net/ipv4/ping.c
41919 ---- linux-3.0.9/net/ipv4/ping.c 2011-11-11 13:12:24.000000000 -0500
41920 -+++ linux-3.0.9/net/ipv4/ping.c 2011-11-15 20:03:00.000000000 -0500
41921 +diff -urNp linux-3.1.1/net/ipv4/ping.c linux-3.1.1/net/ipv4/ping.c
41922 +--- linux-3.1.1/net/ipv4/ping.c 2011-11-11 15:19:27.000000000 -0500
41923 ++++ linux-3.1.1/net/ipv4/ping.c 2011-11-16 18:39:08.000000000 -0500
41924 @@ -837,7 +837,7 @@ static void ping_format_sock(struct sock
41925 sk_rmem_alloc_get(sp),
41926 0, 0L, 0, sock_i_uid(sp), 0, sock_i_ino(sp),
41927 @@ -72689,9 +72517,9 @@ diff -urNp linux-3.0.9/net/ipv4/ping.c linux-3.0.9/net/ipv4/ping.c
41928 }
41929
41930 static int ping_seq_show(struct seq_file *seq, void *v)
41931 -diff -urNp linux-3.0.9/net/ipv4/raw.c linux-3.0.9/net/ipv4/raw.c
41932 ---- linux-3.0.9/net/ipv4/raw.c 2011-11-11 13:12:24.000000000 -0500
41933 -+++ linux-3.0.9/net/ipv4/raw.c 2011-11-15 20:03:00.000000000 -0500
41934 +diff -urNp linux-3.1.1/net/ipv4/raw.c linux-3.1.1/net/ipv4/raw.c
41935 +--- linux-3.1.1/net/ipv4/raw.c 2011-11-11 15:19:27.000000000 -0500
41936 ++++ linux-3.1.1/net/ipv4/raw.c 2011-11-16 18:40:44.000000000 -0500
41937 @@ -302,7 +302,7 @@ static int raw_rcv_skb(struct sock * sk,
41938 int raw_rcv(struct sock *sk, struct sk_buff *skb)
41939 {
41940 @@ -72701,7 +72529,7 @@ diff -urNp linux-3.0.9/net/ipv4/raw.c linux-3.0.9/net/ipv4/raw.c
41941 kfree_skb(skb);
41942 return NET_RX_DROP;
41943 }
41944 -@@ -736,16 +736,20 @@ static int raw_init(struct sock *sk)
41945 +@@ -737,16 +737,20 @@ static int raw_init(struct sock *sk)
41946
41947 static int raw_seticmpfilter(struct sock *sk, char __user *optval, int optlen)
41948 {
41949 @@ -72723,7 +72551,7 @@ diff -urNp linux-3.0.9/net/ipv4/raw.c linux-3.0.9/net/ipv4/raw.c
41950
41951 if (get_user(len, optlen))
41952 goto out;
41953 -@@ -755,8 +759,9 @@ static int raw_geticmpfilter(struct sock
41954 +@@ -756,8 +760,9 @@ static int raw_geticmpfilter(struct sock
41955 if (len > sizeof(struct icmp_filter))
41956 len = sizeof(struct icmp_filter);
41957 ret = -EFAULT;
41958 @@ -72735,7 +72563,7 @@ diff -urNp linux-3.0.9/net/ipv4/raw.c linux-3.0.9/net/ipv4/raw.c
41959 goto out;
41960 ret = 0;
41961 out: return ret;
41962 -@@ -984,7 +989,13 @@ static void raw_sock_seq_show(struct seq
41963 +@@ -985,7 +990,13 @@ static void raw_sock_seq_show(struct seq
41964 sk_wmem_alloc_get(sp),
41965 sk_rmem_alloc_get(sp),
41966 0, 0L, 0, sock_i_uid(sp), 0, sock_i_ino(sp),
41967 @@ -72750,10 +72578,10 @@ diff -urNp linux-3.0.9/net/ipv4/raw.c linux-3.0.9/net/ipv4/raw.c
41968 }
41969
41970 static int raw_seq_show(struct seq_file *seq, void *v)
41971 -diff -urNp linux-3.0.9/net/ipv4/route.c linux-3.0.9/net/ipv4/route.c
41972 ---- linux-3.0.9/net/ipv4/route.c 2011-11-11 13:12:24.000000000 -0500
41973 -+++ linux-3.0.9/net/ipv4/route.c 2011-11-15 20:03:00.000000000 -0500
41974 -@@ -304,7 +304,7 @@ static inline unsigned int rt_hash(__be3
41975 +diff -urNp linux-3.1.1/net/ipv4/route.c linux-3.1.1/net/ipv4/route.c
41976 +--- linux-3.1.1/net/ipv4/route.c 2011-11-11 15:19:27.000000000 -0500
41977 ++++ linux-3.1.1/net/ipv4/route.c 2011-11-16 18:39:08.000000000 -0500
41978 +@@ -308,7 +308,7 @@ static inline unsigned int rt_hash(__be3
41979
41980 static inline int rt_genid(struct net *net)
41981 {
41982 @@ -72762,7 +72590,7 @@ diff -urNp linux-3.0.9/net/ipv4/route.c linux-3.0.9/net/ipv4/route.c
41983 }
41984
41985 #ifdef CONFIG_PROC_FS
41986 -@@ -832,7 +832,7 @@ static void rt_cache_invalidate(struct n
41987 +@@ -837,7 +837,7 @@ static void rt_cache_invalidate(struct n
41988 unsigned char shuffle;
41989
41990 get_random_bytes(&shuffle, sizeof(shuffle));
41991 @@ -72771,7 +72599,7 @@ diff -urNp linux-3.0.9/net/ipv4/route.c linux-3.0.9/net/ipv4/route.c
41992 }
41993
41994 /*
41995 -@@ -2832,7 +2832,7 @@ static int rt_fill_info(struct net *net,
41996 +@@ -2872,7 +2872,7 @@ static int rt_fill_info(struct net *net,
41997 error = rt->dst.error;
41998 if (peer) {
41999 inet_peer_refcheck(rt->peer);
42000 @@ -72780,9 +72608,9 @@ diff -urNp linux-3.0.9/net/ipv4/route.c linux-3.0.9/net/ipv4/route.c
42001 if (peer->tcp_ts_stamp) {
42002 ts = peer->tcp_ts;
42003 tsage = get_seconds() - peer->tcp_ts_stamp;
42004 -diff -urNp linux-3.0.9/net/ipv4/tcp.c linux-3.0.9/net/ipv4/tcp.c
42005 ---- linux-3.0.9/net/ipv4/tcp.c 2011-11-11 13:12:24.000000000 -0500
42006 -+++ linux-3.0.9/net/ipv4/tcp.c 2011-11-15 20:03:00.000000000 -0500
42007 +diff -urNp linux-3.1.1/net/ipv4/tcp.c linux-3.1.1/net/ipv4/tcp.c
42008 +--- linux-3.1.1/net/ipv4/tcp.c 2011-11-11 15:19:27.000000000 -0500
42009 ++++ linux-3.1.1/net/ipv4/tcp.c 2011-11-16 18:40:44.000000000 -0500
42010 @@ -2122,6 +2122,8 @@ static int do_tcp_setsockopt(struct sock
42011 int val;
42012 int err = 0;
42013 @@ -72801,9 +72629,9 @@ diff -urNp linux-3.0.9/net/ipv4/tcp.c linux-3.0.9/net/ipv4/tcp.c
42014 if (get_user(len, optlen))
42015 return -EFAULT;
42016
42017 -diff -urNp linux-3.0.9/net/ipv4/tcp_ipv4.c linux-3.0.9/net/ipv4/tcp_ipv4.c
42018 ---- linux-3.0.9/net/ipv4/tcp_ipv4.c 2011-11-11 13:12:24.000000000 -0500
42019 -+++ linux-3.0.9/net/ipv4/tcp_ipv4.c 2011-11-15 20:03:00.000000000 -0500
42020 +diff -urNp linux-3.1.1/net/ipv4/tcp_ipv4.c linux-3.1.1/net/ipv4/tcp_ipv4.c
42021 +--- linux-3.1.1/net/ipv4/tcp_ipv4.c 2011-11-11 15:19:27.000000000 -0500
42022 ++++ linux-3.1.1/net/ipv4/tcp_ipv4.c 2011-11-16 18:40:44.000000000 -0500
42023 @@ -87,6 +87,9 @@ int sysctl_tcp_tw_reuse __read_mostly;
42024 int sysctl_tcp_low_latency __read_mostly;
42025 EXPORT_SYMBOL(sysctl_tcp_low_latency);
42026 @@ -72814,7 +72642,7 @@ diff -urNp linux-3.0.9/net/ipv4/tcp_ipv4.c linux-3.0.9/net/ipv4/tcp_ipv4.c
42027
42028 #ifdef CONFIG_TCP_MD5SIG
42029 static struct tcp_md5sig_key *tcp_v4_md5_do_lookup(struct sock *sk,
42030 -@@ -1610,6 +1613,9 @@ int tcp_v4_do_rcv(struct sock *sk, struc
42031 +@@ -1622,6 +1625,9 @@ int tcp_v4_do_rcv(struct sock *sk, struc
42032 return 0;
42033
42034 reset:
42035 @@ -72824,7 +72652,7 @@ diff -urNp linux-3.0.9/net/ipv4/tcp_ipv4.c linux-3.0.9/net/ipv4/tcp_ipv4.c
42036 tcp_v4_send_reset(rsk, skb);
42037 discard:
42038 kfree_skb(skb);
42039 -@@ -1672,12 +1678,19 @@ int tcp_v4_rcv(struct sk_buff *skb)
42040 +@@ -1684,12 +1690,19 @@ int tcp_v4_rcv(struct sk_buff *skb)
42041 TCP_SKB_CB(skb)->sacked = 0;
42042
42043 sk = __inet_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest);
42044 @@ -72847,7 +72675,7 @@ diff -urNp linux-3.0.9/net/ipv4/tcp_ipv4.c linux-3.0.9/net/ipv4/tcp_ipv4.c
42045
42046 if (unlikely(iph->ttl < inet_sk(sk)->min_ttl)) {
42047 NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP);
42048 -@@ -1727,6 +1740,10 @@ no_tcp_socket:
42049 +@@ -1739,6 +1752,10 @@ no_tcp_socket:
42050 bad_packet:
42051 TCP_INC_STATS_BH(net, TCP_MIB_INERRS);
42052 } else {
42053 @@ -72858,7 +72686,7 @@ diff -urNp linux-3.0.9/net/ipv4/tcp_ipv4.c linux-3.0.9/net/ipv4/tcp_ipv4.c
42054 tcp_v4_send_reset(NULL, skb);
42055 }
42056
42057 -@@ -2391,7 +2408,11 @@ static void get_openreq4(struct sock *sk
42058 +@@ -2403,7 +2420,11 @@ static void get_openreq4(struct sock *sk
42059 0, /* non standard timer */
42060 0, /* open_requests have no inode */
42061 atomic_read(&sk->sk_refcnt),
42062 @@ -72870,7 +72698,7 @@ diff -urNp linux-3.0.9/net/ipv4/tcp_ipv4.c linux-3.0.9/net/ipv4/tcp_ipv4.c
42063 len);
42064 }
42065
42066 -@@ -2441,7 +2462,12 @@ static void get_tcp4_sock(struct sock *s
42067 +@@ -2453,7 +2474,12 @@ static void get_tcp4_sock(struct sock *s
42068 sock_i_uid(sk),
42069 icsk->icsk_probes_out,
42070 sock_i_ino(sk),
42071 @@ -72884,7 +72712,7 @@ diff -urNp linux-3.0.9/net/ipv4/tcp_ipv4.c linux-3.0.9/net/ipv4/tcp_ipv4.c
42072 jiffies_to_clock_t(icsk->icsk_rto),
42073 jiffies_to_clock_t(icsk->icsk_ack.ato),
42074 (icsk->icsk_ack.quick << 1) | icsk->icsk_ack.pingpong,
42075 -@@ -2469,7 +2495,13 @@ static void get_timewait4_sock(struct in
42076 +@@ -2481,7 +2507,13 @@ static void get_timewait4_sock(struct in
42077 " %02X %08X:%08X %02X:%08lX %08X %5d %8d %d %d %pK%n",
42078 i, src, srcp, dest, destp, tw->tw_substate, 0, 0,
42079 3, jiffies_to_clock_t(ttd), 0, 0, 0, 0,
42080 @@ -72899,9 +72727,9 @@ diff -urNp linux-3.0.9/net/ipv4/tcp_ipv4.c linux-3.0.9/net/ipv4/tcp_ipv4.c
42081 }
42082
42083 #define TMPSZ 150
42084 -diff -urNp linux-3.0.9/net/ipv4/tcp_minisocks.c linux-3.0.9/net/ipv4/tcp_minisocks.c
42085 ---- linux-3.0.9/net/ipv4/tcp_minisocks.c 2011-11-11 13:12:24.000000000 -0500
42086 -+++ linux-3.0.9/net/ipv4/tcp_minisocks.c 2011-11-15 20:03:00.000000000 -0500
42087 +diff -urNp linux-3.1.1/net/ipv4/tcp_minisocks.c linux-3.1.1/net/ipv4/tcp_minisocks.c
42088 +--- linux-3.1.1/net/ipv4/tcp_minisocks.c 2011-11-11 15:19:27.000000000 -0500
42089 ++++ linux-3.1.1/net/ipv4/tcp_minisocks.c 2011-11-16 18:40:44.000000000 -0500
42090 @@ -27,6 +27,10 @@
42091 #include <net/inet_common.h>
42092 #include <net/xfrm.h>
42093 @@ -72913,7 +72741,7 @@ diff -urNp linux-3.0.9/net/ipv4/tcp_minisocks.c linux-3.0.9/net/ipv4/tcp_minisoc
42094 int sysctl_tcp_syncookies __read_mostly = 1;
42095 EXPORT_SYMBOL(sysctl_tcp_syncookies);
42096
42097 -@@ -745,6 +749,10 @@ listen_overflow:
42098 +@@ -750,6 +754,10 @@ listen_overflow:
42099
42100 embryonic_reset:
42101 NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_EMBRYONICRSTS);
42102 @@ -72924,9 +72752,9 @@ diff -urNp linux-3.0.9/net/ipv4/tcp_minisocks.c linux-3.0.9/net/ipv4/tcp_minisoc
42103 if (!(flg & TCP_FLAG_RST))
42104 req->rsk_ops->send_reset(sk, skb);
42105
42106 -diff -urNp linux-3.0.9/net/ipv4/tcp_output.c linux-3.0.9/net/ipv4/tcp_output.c
42107 ---- linux-3.0.9/net/ipv4/tcp_output.c 2011-11-11 13:12:24.000000000 -0500
42108 -+++ linux-3.0.9/net/ipv4/tcp_output.c 2011-11-15 20:03:00.000000000 -0500
42109 +diff -urNp linux-3.1.1/net/ipv4/tcp_output.c linux-3.1.1/net/ipv4/tcp_output.c
42110 +--- linux-3.1.1/net/ipv4/tcp_output.c 2011-11-11 15:19:27.000000000 -0500
42111 ++++ linux-3.1.1/net/ipv4/tcp_output.c 2011-11-16 18:40:44.000000000 -0500
42112 @@ -2421,6 +2421,8 @@ struct sk_buff *tcp_make_synack(struct s
42113 int mss;
42114 int s_data_desired = 0;
42115 @@ -72936,9 +72764,9 @@ diff -urNp linux-3.0.9/net/ipv4/tcp_output.c linux-3.0.9/net/ipv4/tcp_output.c
42116 if (cvp != NULL && cvp->s_data_constant && cvp->s_data_desired)
42117 s_data_desired = cvp->s_data_desired;
42118 skb = sock_wmalloc(sk, MAX_TCP_HEADER + 15 + s_data_desired, 1, GFP_ATOMIC);
42119 -diff -urNp linux-3.0.9/net/ipv4/tcp_probe.c linux-3.0.9/net/ipv4/tcp_probe.c
42120 ---- linux-3.0.9/net/ipv4/tcp_probe.c 2011-11-11 13:12:24.000000000 -0500
42121 -+++ linux-3.0.9/net/ipv4/tcp_probe.c 2011-11-15 20:03:00.000000000 -0500
42122 +diff -urNp linux-3.1.1/net/ipv4/tcp_probe.c linux-3.1.1/net/ipv4/tcp_probe.c
42123 +--- linux-3.1.1/net/ipv4/tcp_probe.c 2011-11-11 15:19:27.000000000 -0500
42124 ++++ linux-3.1.1/net/ipv4/tcp_probe.c 2011-11-16 18:39:08.000000000 -0500
42125 @@ -202,7 +202,7 @@ static ssize_t tcpprobe_read(struct file
42126 if (cnt + width >= len)
42127 break;
42128 @@ -72948,9 +72776,9 @@ diff -urNp linux-3.0.9/net/ipv4/tcp_probe.c linux-3.0.9/net/ipv4/tcp_probe.c
42129 return -EFAULT;
42130 cnt += width;
42131 }
42132 -diff -urNp linux-3.0.9/net/ipv4/tcp_timer.c linux-3.0.9/net/ipv4/tcp_timer.c
42133 ---- linux-3.0.9/net/ipv4/tcp_timer.c 2011-11-11 13:12:24.000000000 -0500
42134 -+++ linux-3.0.9/net/ipv4/tcp_timer.c 2011-11-15 20:03:00.000000000 -0500
42135 +diff -urNp linux-3.1.1/net/ipv4/tcp_timer.c linux-3.1.1/net/ipv4/tcp_timer.c
42136 +--- linux-3.1.1/net/ipv4/tcp_timer.c 2011-11-11 15:19:27.000000000 -0500
42137 ++++ linux-3.1.1/net/ipv4/tcp_timer.c 2011-11-16 18:40:44.000000000 -0500
42138 @@ -22,6 +22,10 @@
42139 #include <linux/gfp.h>
42140 #include <net/tcp.h>
42141 @@ -72976,9 +72804,9 @@ diff -urNp linux-3.0.9/net/ipv4/tcp_timer.c linux-3.0.9/net/ipv4/tcp_timer.c
42142 if (retransmits_timed_out(sk, retry_until,
42143 syn_set ? 0 : icsk->icsk_user_timeout, syn_set)) {
42144 /* Has it gone just too far? */
42145 -diff -urNp linux-3.0.9/net/ipv4/udp.c linux-3.0.9/net/ipv4/udp.c
42146 ---- linux-3.0.9/net/ipv4/udp.c 2011-11-11 13:12:24.000000000 -0500
42147 -+++ linux-3.0.9/net/ipv4/udp.c 2011-11-15 20:03:00.000000000 -0500
42148 +diff -urNp linux-3.1.1/net/ipv4/udp.c linux-3.1.1/net/ipv4/udp.c
42149 +--- linux-3.1.1/net/ipv4/udp.c 2011-11-11 15:19:27.000000000 -0500
42150 ++++ linux-3.1.1/net/ipv4/udp.c 2011-11-16 19:17:54.000000000 -0500
42151 @@ -86,6 +86,7 @@
42152 #include <linux/types.h>
42153 #include <linux/fcntl.h>
42154 @@ -72987,8 +72815,8 @@ diff -urNp linux-3.0.9/net/ipv4/udp.c linux-3.0.9/net/ipv4/udp.c
42155 #include <linux/socket.h>
42156 #include <linux/sockios.h>
42157 #include <linux/igmp.h>
42158 -@@ -107,6 +108,10 @@
42159 - #include <net/xfrm.h>
42160 +@@ -108,6 +109,10 @@
42161 + #include <trace/events/udp.h>
42162 #include "udp_impl.h"
42163
42164 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
42165 @@ -72998,7 +72826,7 @@ diff -urNp linux-3.0.9/net/ipv4/udp.c linux-3.0.9/net/ipv4/udp.c
42166 struct udp_table udp_table __read_mostly;
42167 EXPORT_SYMBOL(udp_table);
42168
42169 -@@ -564,6 +569,9 @@ found:
42170 +@@ -565,6 +570,9 @@ found:
42171 return s;
42172 }
42173
42174 @@ -73008,7 +72836,7 @@ diff -urNp linux-3.0.9/net/ipv4/udp.c linux-3.0.9/net/ipv4/udp.c
42175 /*
42176 * This routine is called by the ICMP module when it gets some
42177 * sort of error condition. If err < 0 then the socket should
42178 -@@ -855,9 +863,18 @@ int udp_sendmsg(struct kiocb *iocb, stru
42179 +@@ -856,9 +864,18 @@ int udp_sendmsg(struct kiocb *iocb, stru
42180 dport = usin->sin_port;
42181 if (dport == 0)
42182 return -EINVAL;
42183 @@ -73027,7 +72855,7 @@ diff -urNp linux-3.0.9/net/ipv4/udp.c linux-3.0.9/net/ipv4/udp.c
42184 daddr = inet->inet_daddr;
42185 dport = inet->inet_dport;
42186 /* Open fast path for connected socket.
42187 -@@ -1098,7 +1115,7 @@ static unsigned int first_packet_length(
42188 +@@ -1099,7 +1116,7 @@ static unsigned int first_packet_length(
42189 udp_lib_checksum_complete(skb)) {
42190 UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS,
42191 IS_UDPLITE(sk));
42192 @@ -73036,7 +72864,7 @@ diff -urNp linux-3.0.9/net/ipv4/udp.c linux-3.0.9/net/ipv4/udp.c
42193 __skb_unlink(skb, rcvq);
42194 __skb_queue_tail(&list_kill, skb);
42195 }
42196 -@@ -1184,6 +1201,10 @@ try_again:
42197 +@@ -1185,6 +1202,10 @@ try_again:
42198 if (!skb)
42199 goto out;
42200
42201 @@ -73047,7 +72875,7 @@ diff -urNp linux-3.0.9/net/ipv4/udp.c linux-3.0.9/net/ipv4/udp.c
42202 ulen = skb->len - sizeof(struct udphdr);
42203 if (len > ulen)
42204 len = ulen;
42205 -@@ -1483,7 +1504,7 @@ int udp_queue_rcv_skb(struct sock *sk, s
42206 +@@ -1485,7 +1506,7 @@ int udp_queue_rcv_skb(struct sock *sk, s
42207
42208 drop:
42209 UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite);
42210 @@ -73056,7 +72884,7 @@ diff -urNp linux-3.0.9/net/ipv4/udp.c linux-3.0.9/net/ipv4/udp.c
42211 kfree_skb(skb);
42212 return -1;
42213 }
42214 -@@ -1502,7 +1523,7 @@ static void flush_stack(struct sock **st
42215 +@@ -1504,7 +1525,7 @@ static void flush_stack(struct sock **st
42216 skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC);
42217
42218 if (!skb1) {
42219 @@ -73065,7 +72893,7 @@ diff -urNp linux-3.0.9/net/ipv4/udp.c linux-3.0.9/net/ipv4/udp.c
42220 UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS,
42221 IS_UDPLITE(sk));
42222 UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS,
42223 -@@ -1671,6 +1692,9 @@ int __udp4_lib_rcv(struct sk_buff *skb,
42224 +@@ -1673,6 +1694,9 @@ int __udp4_lib_rcv(struct sk_buff *skb,
42225 goto csum_error;
42226
42227 UDP_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE);
42228 @@ -73075,7 +72903,7 @@ diff -urNp linux-3.0.9/net/ipv4/udp.c linux-3.0.9/net/ipv4/udp.c
42229 icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0);
42230
42231 /*
42232 -@@ -2098,8 +2122,13 @@ static void udp4_format_sock(struct sock
42233 +@@ -2100,8 +2124,13 @@ static void udp4_format_sock(struct sock
42234 sk_wmem_alloc_get(sp),
42235 sk_rmem_alloc_get(sp),
42236 0, 0L, 0, sock_i_uid(sp), 0, sock_i_ino(sp),
42237 @@ -73091,10 +72919,10 @@ diff -urNp linux-3.0.9/net/ipv4/udp.c linux-3.0.9/net/ipv4/udp.c
42238 }
42239
42240 int udp4_seq_show(struct seq_file *seq, void *v)
42241 -diff -urNp linux-3.0.9/net/ipv6/addrconf.c linux-3.0.9/net/ipv6/addrconf.c
42242 ---- linux-3.0.9/net/ipv6/addrconf.c 2011-11-11 13:12:24.000000000 -0500
42243 -+++ linux-3.0.9/net/ipv6/addrconf.c 2011-11-15 20:03:00.000000000 -0500
42244 -@@ -2072,7 +2072,7 @@ int addrconf_set_dstaddr(struct net *net
42245 +diff -urNp linux-3.1.1/net/ipv6/addrconf.c linux-3.1.1/net/ipv6/addrconf.c
42246 +--- linux-3.1.1/net/ipv6/addrconf.c 2011-11-11 15:19:27.000000000 -0500
42247 ++++ linux-3.1.1/net/ipv6/addrconf.c 2011-11-16 18:39:08.000000000 -0500
42248 +@@ -2083,7 +2083,7 @@ int addrconf_set_dstaddr(struct net *net
42249 p.iph.ihl = 5;
42250 p.iph.protocol = IPPROTO_IPV6;
42251 p.iph.ttl = 64;
42252 @@ -73103,9 +72931,9 @@ diff -urNp linux-3.0.9/net/ipv6/addrconf.c linux-3.0.9/net/ipv6/addrconf.c
42253
42254 if (ops->ndo_do_ioctl) {
42255 mm_segment_t oldfs = get_fs();
42256 -diff -urNp linux-3.0.9/net/ipv6/inet6_connection_sock.c linux-3.0.9/net/ipv6/inet6_connection_sock.c
42257 ---- linux-3.0.9/net/ipv6/inet6_connection_sock.c 2011-11-11 13:12:24.000000000 -0500
42258 -+++ linux-3.0.9/net/ipv6/inet6_connection_sock.c 2011-11-15 20:03:00.000000000 -0500
42259 +diff -urNp linux-3.1.1/net/ipv6/inet6_connection_sock.c linux-3.1.1/net/ipv6/inet6_connection_sock.c
42260 +--- linux-3.1.1/net/ipv6/inet6_connection_sock.c 2011-11-11 15:19:27.000000000 -0500
42261 ++++ linux-3.1.1/net/ipv6/inet6_connection_sock.c 2011-11-16 18:39:08.000000000 -0500
42262 @@ -178,7 +178,7 @@ void __inet6_csk_dst_store(struct sock *
42263 #ifdef CONFIG_XFRM
42264 {
42265 @@ -73124,9 +72952,9 @@ diff -urNp linux-3.0.9/net/ipv6/inet6_connection_sock.c linux-3.0.9/net/ipv6/ine
42266 __sk_dst_reset(sk);
42267 dst = NULL;
42268 }
42269 -diff -urNp linux-3.0.9/net/ipv6/ipv6_sockglue.c linux-3.0.9/net/ipv6/ipv6_sockglue.c
42270 ---- linux-3.0.9/net/ipv6/ipv6_sockglue.c 2011-11-11 13:12:24.000000000 -0500
42271 -+++ linux-3.0.9/net/ipv6/ipv6_sockglue.c 2011-11-15 20:03:00.000000000 -0500
42272 +diff -urNp linux-3.1.1/net/ipv6/ipv6_sockglue.c linux-3.1.1/net/ipv6/ipv6_sockglue.c
42273 +--- linux-3.1.1/net/ipv6/ipv6_sockglue.c 2011-11-11 15:19:27.000000000 -0500
42274 ++++ linux-3.1.1/net/ipv6/ipv6_sockglue.c 2011-11-16 18:40:44.000000000 -0500
42275 @@ -129,6 +129,8 @@ static int do_ipv6_setsockopt(struct soc
42276 int val, valbool;
42277 int retv = -ENOPROTOOPT;
42278 @@ -73154,9 +72982,9 @@ diff -urNp linux-3.0.9/net/ipv6/ipv6_sockglue.c linux-3.0.9/net/ipv6/ipv6_sockgl
42279 msg.msg_controllen = len;
42280 msg.msg_flags = flags;
42281
42282 -diff -urNp linux-3.0.9/net/ipv6/raw.c linux-3.0.9/net/ipv6/raw.c
42283 ---- linux-3.0.9/net/ipv6/raw.c 2011-11-11 13:12:24.000000000 -0500
42284 -+++ linux-3.0.9/net/ipv6/raw.c 2011-11-15 20:03:00.000000000 -0500
42285 +diff -urNp linux-3.1.1/net/ipv6/raw.c linux-3.1.1/net/ipv6/raw.c
42286 +--- linux-3.1.1/net/ipv6/raw.c 2011-11-11 15:19:27.000000000 -0500
42287 ++++ linux-3.1.1/net/ipv6/raw.c 2011-11-16 18:40:44.000000000 -0500
42288 @@ -376,7 +376,7 @@ static inline int rawv6_rcv_skb(struct s
42289 {
42290 if ((raw6_sk(sk)->checksum || rcu_dereference_raw(sk->sk_filter)) &&
42291 @@ -73237,7 +73065,7 @@ diff -urNp linux-3.0.9/net/ipv6/raw.c linux-3.0.9/net/ipv6/raw.c
42292 return -EFAULT;
42293 return 0;
42294 default:
42295 -@@ -1252,7 +1259,13 @@ static void raw6_sock_seq_show(struct se
42296 +@@ -1245,7 +1252,13 @@ static void raw6_sock_seq_show(struct se
42297 0, 0L, 0,
42298 sock_i_uid(sp), 0,
42299 sock_i_ino(sp),
42300 @@ -73252,9 +73080,9 @@ diff -urNp linux-3.0.9/net/ipv6/raw.c linux-3.0.9/net/ipv6/raw.c
42301 }
42302
42303 static int raw6_seq_show(struct seq_file *seq, void *v)
42304 -diff -urNp linux-3.0.9/net/ipv6/tcp_ipv6.c linux-3.0.9/net/ipv6/tcp_ipv6.c
42305 ---- linux-3.0.9/net/ipv6/tcp_ipv6.c 2011-11-11 13:12:24.000000000 -0500
42306 -+++ linux-3.0.9/net/ipv6/tcp_ipv6.c 2011-11-15 20:03:00.000000000 -0500
42307 +diff -urNp linux-3.1.1/net/ipv6/tcp_ipv6.c linux-3.1.1/net/ipv6/tcp_ipv6.c
42308 +--- linux-3.1.1/net/ipv6/tcp_ipv6.c 2011-11-11 15:19:27.000000000 -0500
42309 ++++ linux-3.1.1/net/ipv6/tcp_ipv6.c 2011-11-16 18:40:44.000000000 -0500
42310 @@ -93,6 +93,10 @@ static struct tcp_md5sig_key *tcp_v6_md5
42311 }
42312 #endif
42313 @@ -73266,7 +73094,7 @@ diff -urNp linux-3.0.9/net/ipv6/tcp_ipv6.c linux-3.0.9/net/ipv6/tcp_ipv6.c
42314 static void tcp_v6_hash(struct sock *sk)
42315 {
42316 if (sk->sk_state != TCP_CLOSE) {
42317 -@@ -1667,6 +1671,9 @@ static int tcp_v6_do_rcv(struct sock *sk
42318 +@@ -1647,6 +1651,9 @@ static int tcp_v6_do_rcv(struct sock *sk
42319 return 0;
42320
42321 reset:
42322 @@ -73276,7 +73104,7 @@ diff -urNp linux-3.0.9/net/ipv6/tcp_ipv6.c linux-3.0.9/net/ipv6/tcp_ipv6.c
42323 tcp_v6_send_reset(sk, skb);
42324 discard:
42325 if (opt_skb)
42326 -@@ -1746,12 +1753,20 @@ static int tcp_v6_rcv(struct sk_buff *sk
42327 +@@ -1726,12 +1733,20 @@ static int tcp_v6_rcv(struct sk_buff *sk
42328 TCP_SKB_CB(skb)->sacked = 0;
42329
42330 sk = __inet6_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest);
42331 @@ -73299,7 +73127,7 @@ diff -urNp linux-3.0.9/net/ipv6/tcp_ipv6.c linux-3.0.9/net/ipv6/tcp_ipv6.c
42332
42333 if (hdr->hop_limit < inet6_sk(sk)->min_hopcount) {
42334 NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP);
42335 -@@ -1799,6 +1814,10 @@ no_tcp_socket:
42336 +@@ -1779,6 +1794,10 @@ no_tcp_socket:
42337 bad_packet:
42338 TCP_INC_STATS_BH(net, TCP_MIB_INERRS);
42339 } else {
42340 @@ -73310,7 +73138,7 @@ diff -urNp linux-3.0.9/net/ipv6/tcp_ipv6.c linux-3.0.9/net/ipv6/tcp_ipv6.c
42341 tcp_v6_send_reset(NULL, skb);
42342 }
42343
42344 -@@ -2059,7 +2078,13 @@ static void get_openreq6(struct seq_file
42345 +@@ -2039,7 +2058,13 @@ static void get_openreq6(struct seq_file
42346 uid,
42347 0, /* non standard timer */
42348 0, /* open_requests have no inode */
42349 @@ -73325,7 +73153,7 @@ diff -urNp linux-3.0.9/net/ipv6/tcp_ipv6.c linux-3.0.9/net/ipv6/tcp_ipv6.c
42350 }
42351
42352 static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i)
42353 -@@ -2109,7 +2134,12 @@ static void get_tcp6_sock(struct seq_fil
42354 +@@ -2089,7 +2114,12 @@ static void get_tcp6_sock(struct seq_fil
42355 sock_i_uid(sp),
42356 icsk->icsk_probes_out,
42357 sock_i_ino(sp),
42358 @@ -73339,7 +73167,7 @@ diff -urNp linux-3.0.9/net/ipv6/tcp_ipv6.c linux-3.0.9/net/ipv6/tcp_ipv6.c
42359 jiffies_to_clock_t(icsk->icsk_rto),
42360 jiffies_to_clock_t(icsk->icsk_ack.ato),
42361 (icsk->icsk_ack.quick << 1 ) | icsk->icsk_ack.pingpong,
42362 -@@ -2144,7 +2174,13 @@ static void get_timewait6_sock(struct se
42363 +@@ -2124,7 +2154,13 @@ static void get_timewait6_sock(struct se
42364 dest->s6_addr32[2], dest->s6_addr32[3], destp,
42365 tw->tw_substate, 0, 0,
42366 3, jiffies_to_clock_t(ttd), 0, 0, 0, 0,
42367 @@ -73354,9 +73182,9 @@ diff -urNp linux-3.0.9/net/ipv6/tcp_ipv6.c linux-3.0.9/net/ipv6/tcp_ipv6.c
42368 }
42369
42370 static int tcp6_seq_show(struct seq_file *seq, void *v)
42371 -diff -urNp linux-3.0.9/net/ipv6/udp.c linux-3.0.9/net/ipv6/udp.c
42372 ---- linux-3.0.9/net/ipv6/udp.c 2011-11-11 13:12:24.000000000 -0500
42373 -+++ linux-3.0.9/net/ipv6/udp.c 2011-11-15 20:03:00.000000000 -0500
42374 +diff -urNp linux-3.1.1/net/ipv6/udp.c linux-3.1.1/net/ipv6/udp.c
42375 +--- linux-3.1.1/net/ipv6/udp.c 2011-11-11 15:19:27.000000000 -0500
42376 ++++ linux-3.1.1/net/ipv6/udp.c 2011-11-16 18:40:44.000000000 -0500
42377 @@ -50,6 +50,10 @@
42378 #include <linux/seq_file.h>
42379 #include "udp_impl.h"
42380 @@ -73405,7 +73233,7 @@ diff -urNp linux-3.0.9/net/ipv6/udp.c linux-3.0.9/net/ipv6/udp.c
42381 bh_unlock_sock(sk);
42382 sock_put(sk);
42383 goto discard;
42384 -@@ -1408,8 +1415,13 @@ static void udp6_sock_seq_show(struct se
42385 +@@ -1406,8 +1413,13 @@ static void udp6_sock_seq_show(struct se
42386 0, 0L, 0,
42387 sock_i_uid(sp), 0,
42388 sock_i_ino(sp),
42389 @@ -73421,9 +73249,9 @@ diff -urNp linux-3.0.9/net/ipv6/udp.c linux-3.0.9/net/ipv6/udp.c
42390 }
42391
42392 int udp6_seq_show(struct seq_file *seq, void *v)
42393 -diff -urNp linux-3.0.9/net/irda/ircomm/ircomm_tty.c linux-3.0.9/net/irda/ircomm/ircomm_tty.c
42394 ---- linux-3.0.9/net/irda/ircomm/ircomm_tty.c 2011-11-11 13:12:24.000000000 -0500
42395 -+++ linux-3.0.9/net/irda/ircomm/ircomm_tty.c 2011-11-15 20:03:00.000000000 -0500
42396 +diff -urNp linux-3.1.1/net/irda/ircomm/ircomm_tty.c linux-3.1.1/net/irda/ircomm/ircomm_tty.c
42397 +--- linux-3.1.1/net/irda/ircomm/ircomm_tty.c 2011-11-11 15:19:27.000000000 -0500
42398 ++++ linux-3.1.1/net/irda/ircomm/ircomm_tty.c 2011-11-16 18:39:08.000000000 -0500
42399 @@ -282,16 +282,16 @@ static int ircomm_tty_block_til_ready(st
42400 add_wait_queue(&self->open_wait, &wait);
42401
42402 @@ -73546,9 +73374,9 @@ diff -urNp linux-3.0.9/net/irda/ircomm/ircomm_tty.c linux-3.0.9/net/irda/ircomm/
42403 seq_printf(m, "Max data size: %d\n", self->max_data_size);
42404 seq_printf(m, "Max header size: %d\n", self->max_header_size);
42405
42406 -diff -urNp linux-3.0.9/net/iucv/af_iucv.c linux-3.0.9/net/iucv/af_iucv.c
42407 ---- linux-3.0.9/net/iucv/af_iucv.c 2011-11-11 13:12:24.000000000 -0500
42408 -+++ linux-3.0.9/net/iucv/af_iucv.c 2011-11-15 20:03:00.000000000 -0500
42409 +diff -urNp linux-3.1.1/net/iucv/af_iucv.c linux-3.1.1/net/iucv/af_iucv.c
42410 +--- linux-3.1.1/net/iucv/af_iucv.c 2011-11-11 15:19:27.000000000 -0500
42411 ++++ linux-3.1.1/net/iucv/af_iucv.c 2011-11-16 18:39:08.000000000 -0500
42412 @@ -648,10 +648,10 @@ static int iucv_sock_autobind(struct soc
42413
42414 write_lock_bh(&iucv_sk_list.lock);
42415 @@ -73562,9 +73390,9 @@ diff -urNp linux-3.0.9/net/iucv/af_iucv.c linux-3.0.9/net/iucv/af_iucv.c
42416 }
42417
42418 write_unlock_bh(&iucv_sk_list.lock);
42419 -diff -urNp linux-3.0.9/net/key/af_key.c linux-3.0.9/net/key/af_key.c
42420 ---- linux-3.0.9/net/key/af_key.c 2011-11-11 13:12:24.000000000 -0500
42421 -+++ linux-3.0.9/net/key/af_key.c 2011-11-15 20:03:00.000000000 -0500
42422 +diff -urNp linux-3.1.1/net/key/af_key.c linux-3.1.1/net/key/af_key.c
42423 +--- linux-3.1.1/net/key/af_key.c 2011-11-11 15:19:27.000000000 -0500
42424 ++++ linux-3.1.1/net/key/af_key.c 2011-11-16 18:40:44.000000000 -0500
42425 @@ -2481,6 +2481,8 @@ static int pfkey_migrate(struct sock *sk
42426 struct xfrm_migrate m[XFRM_MAX_DEPTH];
42427 struct xfrm_kmaddress k;
42428 @@ -73587,9 +73415,9 @@ diff -urNp linux-3.0.9/net/key/af_key.c linux-3.0.9/net/key/af_key.c
42429 } while (!res);
42430 return res;
42431 }
42432 -diff -urNp linux-3.0.9/net/lapb/lapb_iface.c linux-3.0.9/net/lapb/lapb_iface.c
42433 ---- linux-3.0.9/net/lapb/lapb_iface.c 2011-11-11 13:12:24.000000000 -0500
42434 -+++ linux-3.0.9/net/lapb/lapb_iface.c 2011-11-15 20:03:00.000000000 -0500
42435 +diff -urNp linux-3.1.1/net/lapb/lapb_iface.c linux-3.1.1/net/lapb/lapb_iface.c
42436 +--- linux-3.1.1/net/lapb/lapb_iface.c 2011-11-11 15:19:27.000000000 -0500
42437 ++++ linux-3.1.1/net/lapb/lapb_iface.c 2011-11-16 18:39:08.000000000 -0500
42438 @@ -158,7 +158,7 @@ int lapb_register(struct net_device *dev
42439 goto out;
42440
42441 @@ -73653,9 +73481,9 @@ diff -urNp linux-3.0.9/net/lapb/lapb_iface.c linux-3.0.9/net/lapb/lapb_iface.c
42442 used = 1;
42443 }
42444
42445 -diff -urNp linux-3.0.9/net/mac80211/debugfs_sta.c linux-3.0.9/net/mac80211/debugfs_sta.c
42446 ---- linux-3.0.9/net/mac80211/debugfs_sta.c 2011-11-11 13:12:24.000000000 -0500
42447 -+++ linux-3.0.9/net/mac80211/debugfs_sta.c 2011-11-15 20:03:00.000000000 -0500
42448 +diff -urNp linux-3.1.1/net/mac80211/debugfs_sta.c linux-3.1.1/net/mac80211/debugfs_sta.c
42449 +--- linux-3.1.1/net/mac80211/debugfs_sta.c 2011-11-11 15:19:27.000000000 -0500
42450 ++++ linux-3.1.1/net/mac80211/debugfs_sta.c 2011-11-16 18:40:44.000000000 -0500
42451 @@ -140,6 +140,8 @@ static ssize_t sta_agg_status_read(struc
42452 struct tid_ampdu_rx *tid_rx;
42453 struct tid_ampdu_tx *tid_tx;
42454 @@ -73674,9 +73502,9 @@ diff -urNp linux-3.0.9/net/mac80211/debugfs_sta.c linux-3.0.9/net/mac80211/debug
42455 p += scnprintf(p, sizeof(buf) + buf - p, "ht %ssupported\n",
42456 htc->ht_supported ? "" : "not ");
42457 if (htc->ht_supported) {
42458 -diff -urNp linux-3.0.9/net/mac80211/ieee80211_i.h linux-3.0.9/net/mac80211/ieee80211_i.h
42459 ---- linux-3.0.9/net/mac80211/ieee80211_i.h 2011-11-11 13:12:24.000000000 -0500
42460 -+++ linux-3.0.9/net/mac80211/ieee80211_i.h 2011-11-15 20:03:00.000000000 -0500
42461 +diff -urNp linux-3.1.1/net/mac80211/ieee80211_i.h linux-3.1.1/net/mac80211/ieee80211_i.h
42462 +--- linux-3.1.1/net/mac80211/ieee80211_i.h 2011-11-11 15:19:27.000000000 -0500
42463 ++++ linux-3.1.1/net/mac80211/ieee80211_i.h 2011-11-16 18:39:08.000000000 -0500
42464 @@ -27,6 +27,7 @@
42465 #include <net/ieee80211_radiotap.h>
42466 #include <net/cfg80211.h>
42467 @@ -73685,7 +73513,7 @@ diff -urNp linux-3.0.9/net/mac80211/ieee80211_i.h linux-3.0.9/net/mac80211/ieee8
42468 #include "key.h"
42469 #include "sta_info.h"
42470
42471 -@@ -723,7 +724,7 @@ struct ieee80211_local {
42472 +@@ -754,7 +755,7 @@ struct ieee80211_local {
42473 /* also used to protect ampdu_ac_queue and amdpu_ac_stop_refcnt */
42474 spinlock_t queue_stop_reason_lock;
42475
42476 @@ -73694,9 +73522,9 @@ diff -urNp linux-3.0.9/net/mac80211/ieee80211_i.h linux-3.0.9/net/mac80211/ieee8
42477 int monitors, cooked_mntrs;
42478 /* number of interfaces with corresponding FIF_ flags */
42479 int fif_fcsfail, fif_plcpfail, fif_control, fif_other_bss, fif_pspoll,
42480 -diff -urNp linux-3.0.9/net/mac80211/iface.c linux-3.0.9/net/mac80211/iface.c
42481 ---- linux-3.0.9/net/mac80211/iface.c 2011-11-11 13:12:24.000000000 -0500
42482 -+++ linux-3.0.9/net/mac80211/iface.c 2011-11-15 20:03:00.000000000 -0500
42483 +diff -urNp linux-3.1.1/net/mac80211/iface.c linux-3.1.1/net/mac80211/iface.c
42484 +--- linux-3.1.1/net/mac80211/iface.c 2011-11-11 15:19:27.000000000 -0500
42485 ++++ linux-3.1.1/net/mac80211/iface.c 2011-11-16 18:39:08.000000000 -0500
42486 @@ -211,7 +211,7 @@ static int ieee80211_do_open(struct net_
42487 break;
42488 }
42489 @@ -73733,7 +73561,7 @@ diff -urNp linux-3.0.9/net/mac80211/iface.c linux-3.0.9/net/mac80211/iface.c
42490 drv_stop(local);
42491 err_del_bss:
42492 sdata->bss = NULL;
42493 -@@ -475,7 +475,7 @@ static void ieee80211_do_stop(struct iee
42494 +@@ -474,7 +474,7 @@ static void ieee80211_do_stop(struct iee
42495 }
42496
42497 if (going_down)
42498 @@ -73742,7 +73570,7 @@ diff -urNp linux-3.0.9/net/mac80211/iface.c linux-3.0.9/net/mac80211/iface.c
42499
42500 switch (sdata->vif.type) {
42501 case NL80211_IFTYPE_AP_VLAN:
42502 -@@ -534,7 +534,7 @@ static void ieee80211_do_stop(struct iee
42503 +@@ -533,7 +533,7 @@ static void ieee80211_do_stop(struct iee
42504
42505 ieee80211_recalc_ps(local, -1);
42506
42507 @@ -73751,9 +73579,9 @@ diff -urNp linux-3.0.9/net/mac80211/iface.c linux-3.0.9/net/mac80211/iface.c
42508 if (local->ops->napi_poll)
42509 napi_disable(&local->napi);
42510 ieee80211_clear_tx_pending(local);
42511 -diff -urNp linux-3.0.9/net/mac80211/main.c linux-3.0.9/net/mac80211/main.c
42512 ---- linux-3.0.9/net/mac80211/main.c 2011-11-11 13:12:24.000000000 -0500
42513 -+++ linux-3.0.9/net/mac80211/main.c 2011-11-15 20:03:00.000000000 -0500
42514 +diff -urNp linux-3.1.1/net/mac80211/main.c linux-3.1.1/net/mac80211/main.c
42515 +--- linux-3.1.1/net/mac80211/main.c 2011-11-11 15:19:27.000000000 -0500
42516 ++++ linux-3.1.1/net/mac80211/main.c 2011-11-16 18:39:08.000000000 -0500
42517 @@ -209,7 +209,7 @@ int ieee80211_hw_config(struct ieee80211
42518 local->hw.conf.power_level = power;
42519 }
42520 @@ -73763,10 +73591,10 @@ diff -urNp linux-3.0.9/net/mac80211/main.c linux-3.0.9/net/mac80211/main.c
42521 ret = drv_config(local, changed);
42522 /*
42523 * Goal:
42524 -diff -urNp linux-3.0.9/net/mac80211/mlme.c linux-3.0.9/net/mac80211/mlme.c
42525 ---- linux-3.0.9/net/mac80211/mlme.c 2011-11-11 13:12:24.000000000 -0500
42526 -+++ linux-3.0.9/net/mac80211/mlme.c 2011-11-15 20:03:00.000000000 -0500
42527 -@@ -1447,6 +1447,8 @@ static bool ieee80211_assoc_success(stru
42528 +diff -urNp linux-3.1.1/net/mac80211/mlme.c linux-3.1.1/net/mac80211/mlme.c
42529 +--- linux-3.1.1/net/mac80211/mlme.c 2011-11-11 15:19:27.000000000 -0500
42530 ++++ linux-3.1.1/net/mac80211/mlme.c 2011-11-16 18:40:44.000000000 -0500
42531 +@@ -1464,6 +1464,8 @@ static bool ieee80211_assoc_success(stru
42532 bool have_higher_than_11mbit = false;
42533 u16 ap_ht_cap_flags;
42534
42535 @@ -73775,10 +73603,19 @@ diff -urNp linux-3.0.9/net/mac80211/mlme.c linux-3.0.9/net/mac80211/mlme.c
42536 /* AssocResp and ReassocResp have identical structure */
42537
42538 aid = le16_to_cpu(mgmt->u.assoc_resp.aid);
42539 -diff -urNp linux-3.0.9/net/mac80211/pm.c linux-3.0.9/net/mac80211/pm.c
42540 ---- linux-3.0.9/net/mac80211/pm.c 2011-11-11 13:12:24.000000000 -0500
42541 -+++ linux-3.0.9/net/mac80211/pm.c 2011-11-15 20:03:00.000000000 -0500
42542 -@@ -47,7 +47,7 @@ int __ieee80211_suspend(struct ieee80211
42543 +diff -urNp linux-3.1.1/net/mac80211/pm.c linux-3.1.1/net/mac80211/pm.c
42544 +--- linux-3.1.1/net/mac80211/pm.c 2011-11-11 15:19:27.000000000 -0500
42545 ++++ linux-3.1.1/net/mac80211/pm.c 2011-11-16 18:39:08.000000000 -0500
42546 +@@ -34,7 +34,7 @@ int __ieee80211_suspend(struct ieee80211
42547 + struct ieee80211_sub_if_data *sdata;
42548 + struct sta_info *sta;
42549 +
42550 +- if (!local->open_count)
42551 ++ if (!local_read(&local->open_count))
42552 + goto suspend;
42553 +
42554 + ieee80211_scan_cancel(local);
42555 +@@ -72,7 +72,7 @@ int __ieee80211_suspend(struct ieee80211
42556 cancel_work_sync(&local->dynamic_ps_enable_work);
42557 del_timer_sync(&local->dynamic_ps_timer);
42558
42559 @@ -73786,8 +73623,8 @@ diff -urNp linux-3.0.9/net/mac80211/pm.c linux-3.0.9/net/mac80211/pm.c
42560 + local->wowlan = wowlan && local_read(&local->open_count);
42561 if (local->wowlan) {
42562 int err = drv_suspend(local, wowlan);
42563 - if (err) {
42564 -@@ -111,7 +111,7 @@ int __ieee80211_suspend(struct ieee80211
42565 + if (err < 0) {
42566 +@@ -129,7 +129,7 @@ int __ieee80211_suspend(struct ieee80211
42567 }
42568
42569 /* stop hardware - this must stop RX */
42570 @@ -73796,9 +73633,9 @@ diff -urNp linux-3.0.9/net/mac80211/pm.c linux-3.0.9/net/mac80211/pm.c
42571 ieee80211_stop_device(local);
42572
42573 suspend:
42574 -diff -urNp linux-3.0.9/net/mac80211/rate.c linux-3.0.9/net/mac80211/rate.c
42575 ---- linux-3.0.9/net/mac80211/rate.c 2011-11-11 13:12:24.000000000 -0500
42576 -+++ linux-3.0.9/net/mac80211/rate.c 2011-11-15 20:03:00.000000000 -0500
42577 +diff -urNp linux-3.1.1/net/mac80211/rate.c linux-3.1.1/net/mac80211/rate.c
42578 +--- linux-3.1.1/net/mac80211/rate.c 2011-11-11 15:19:27.000000000 -0500
42579 ++++ linux-3.1.1/net/mac80211/rate.c 2011-11-16 18:39:08.000000000 -0500
42580 @@ -371,7 +371,7 @@ int ieee80211_init_rate_ctrl_alg(struct
42581
42582 ASSERT_RTNL();
42583 @@ -73808,9 +73645,9 @@ diff -urNp linux-3.0.9/net/mac80211/rate.c linux-3.0.9/net/mac80211/rate.c
42584 return -EBUSY;
42585
42586 if (local->hw.flags & IEEE80211_HW_HAS_RATE_CONTROL) {
42587 -diff -urNp linux-3.0.9/net/mac80211/rc80211_pid_debugfs.c linux-3.0.9/net/mac80211/rc80211_pid_debugfs.c
42588 ---- linux-3.0.9/net/mac80211/rc80211_pid_debugfs.c 2011-11-11 13:12:24.000000000 -0500
42589 -+++ linux-3.0.9/net/mac80211/rc80211_pid_debugfs.c 2011-11-15 20:03:00.000000000 -0500
42590 +diff -urNp linux-3.1.1/net/mac80211/rc80211_pid_debugfs.c linux-3.1.1/net/mac80211/rc80211_pid_debugfs.c
42591 +--- linux-3.1.1/net/mac80211/rc80211_pid_debugfs.c 2011-11-11 15:19:27.000000000 -0500
42592 ++++ linux-3.1.1/net/mac80211/rc80211_pid_debugfs.c 2011-11-16 18:39:08.000000000 -0500
42593 @@ -192,7 +192,7 @@ static ssize_t rate_control_pid_events_r
42594
42595 spin_unlock_irqrestore(&events->lock, status);
42596 @@ -73820,21 +73657,21 @@ diff -urNp linux-3.0.9/net/mac80211/rc80211_pid_debugfs.c linux-3.0.9/net/mac802
42597 return -EFAULT;
42598
42599 return p;
42600 -diff -urNp linux-3.0.9/net/mac80211/util.c linux-3.0.9/net/mac80211/util.c
42601 ---- linux-3.0.9/net/mac80211/util.c 2011-11-11 13:12:24.000000000 -0500
42602 -+++ linux-3.0.9/net/mac80211/util.c 2011-11-15 20:03:00.000000000 -0500
42603 -@@ -1147,7 +1147,7 @@ int ieee80211_reconfig(struct ieee80211_
42604 - #endif
42605 +diff -urNp linux-3.1.1/net/mac80211/util.c linux-3.1.1/net/mac80211/util.c
42606 +--- linux-3.1.1/net/mac80211/util.c 2011-11-11 15:19:27.000000000 -0500
42607 ++++ linux-3.1.1/net/mac80211/util.c 2011-11-16 18:39:08.000000000 -0500
42608 +@@ -1166,7 +1166,7 @@ int ieee80211_reconfig(struct ieee80211_
42609 + drv_set_coverage_class(local, hw->wiphy->coverage_class);
42610
42611 - /* restart hardware */
42612 -- if (local->open_count) {
42613 -+ if (local_read(&local->open_count)) {
42614 - /*
42615 - * Upon resume hardware can sometimes be goofy due to
42616 - * various platform / driver / bus issues, so restarting
42617 -diff -urNp linux-3.0.9/net/netfilter/ipvs/ip_vs_conn.c linux-3.0.9/net/netfilter/ipvs/ip_vs_conn.c
42618 ---- linux-3.0.9/net/netfilter/ipvs/ip_vs_conn.c 2011-11-11 13:12:24.000000000 -0500
42619 -+++ linux-3.0.9/net/netfilter/ipvs/ip_vs_conn.c 2011-11-15 20:03:00.000000000 -0500
42620 + /* everything else happens only if HW was up & running */
42621 +- if (!local->open_count)
42622 ++ if (!local_read(&local->open_count))
42623 + goto wake_up;
42624 +
42625 + /*
42626 +diff -urNp linux-3.1.1/net/netfilter/ipvs/ip_vs_conn.c linux-3.1.1/net/netfilter/ipvs/ip_vs_conn.c
42627 +--- linux-3.1.1/net/netfilter/ipvs/ip_vs_conn.c 2011-11-11 15:19:27.000000000 -0500
42628 ++++ linux-3.1.1/net/netfilter/ipvs/ip_vs_conn.c 2011-11-16 18:39:08.000000000 -0500
42629 @@ -556,7 +556,7 @@ ip_vs_bind_dest(struct ip_vs_conn *cp, s
42630 /* Increase the refcnt counter of the dest */
42631 atomic_inc(&dest->refcnt);
42632 @@ -73862,9 +73699,9 @@ diff -urNp linux-3.0.9/net/netfilter/ipvs/ip_vs_conn.c linux-3.0.9/net/netfilter
42633 if (i > 8 || i < 0) return 0;
42634
42635 if (!todrop_rate[i]) return 0;
42636 -diff -urNp linux-3.0.9/net/netfilter/ipvs/ip_vs_core.c linux-3.0.9/net/netfilter/ipvs/ip_vs_core.c
42637 ---- linux-3.0.9/net/netfilter/ipvs/ip_vs_core.c 2011-11-11 13:12:24.000000000 -0500
42638 -+++ linux-3.0.9/net/netfilter/ipvs/ip_vs_core.c 2011-11-15 20:03:00.000000000 -0500
42639 +diff -urNp linux-3.1.1/net/netfilter/ipvs/ip_vs_core.c linux-3.1.1/net/netfilter/ipvs/ip_vs_core.c
42640 +--- linux-3.1.1/net/netfilter/ipvs/ip_vs_core.c 2011-11-11 15:19:27.000000000 -0500
42641 ++++ linux-3.1.1/net/netfilter/ipvs/ip_vs_core.c 2011-11-16 18:39:08.000000000 -0500
42642 @@ -563,7 +563,7 @@ int ip_vs_leave(struct ip_vs_service *sv
42643 ret = cp->packet_xmit(skb, cp, pd->pp);
42644 /* do not touch skb anymore */
42645 @@ -73874,7 +73711,7 @@ diff -urNp linux-3.0.9/net/netfilter/ipvs/ip_vs_core.c linux-3.0.9/net/netfilter
42646 ip_vs_conn_put(cp);
42647 return ret;
42648 }
42649 -@@ -1613,7 +1613,7 @@ ip_vs_in(unsigned int hooknum, struct sk
42650 +@@ -1612,7 +1612,7 @@ ip_vs_in(unsigned int hooknum, struct sk
42651 if (cp->flags & IP_VS_CONN_F_ONE_PACKET)
42652 pkts = sysctl_sync_threshold(ipvs);
42653 else
42654 @@ -73883,9 +73720,9 @@ diff -urNp linux-3.0.9/net/netfilter/ipvs/ip_vs_core.c linux-3.0.9/net/netfilter
42655
42656 if ((ipvs->sync_state & IP_VS_STATE_MASTER) &&
42657 cp->protocol == IPPROTO_SCTP) {
42658 -diff -urNp linux-3.0.9/net/netfilter/ipvs/ip_vs_ctl.c linux-3.0.9/net/netfilter/ipvs/ip_vs_ctl.c
42659 ---- linux-3.0.9/net/netfilter/ipvs/ip_vs_ctl.c 2011-11-11 13:12:24.000000000 -0500
42660 -+++ linux-3.0.9/net/netfilter/ipvs/ip_vs_ctl.c 2011-11-15 20:03:00.000000000 -0500
42661 +diff -urNp linux-3.1.1/net/netfilter/ipvs/ip_vs_ctl.c linux-3.1.1/net/netfilter/ipvs/ip_vs_ctl.c
42662 +--- linux-3.1.1/net/netfilter/ipvs/ip_vs_ctl.c 2011-11-11 15:19:27.000000000 -0500
42663 ++++ linux-3.1.1/net/netfilter/ipvs/ip_vs_ctl.c 2011-11-16 19:13:12.000000000 -0500
42664 @@ -782,7 +782,7 @@ __ip_vs_update_dest(struct ip_vs_service
42665 ip_vs_rs_hash(ipvs, dest);
42666 write_unlock_bh(&ipvs->rs_lock);
42667 @@ -73913,16 +73750,16 @@ diff -urNp linux-3.0.9/net/netfilter/ipvs/ip_vs_ctl.c linux-3.0.9/net/netfilter/
42668 atomic_read(&dest->weight),
42669 atomic_read(&dest->activeconns),
42670 atomic_read(&dest->inactconns));
42671 -@@ -2284,6 +2284,8 @@ do_ip_vs_set_ctl(struct sock *sk, int cm
42672 - struct ip_vs_dest_user *udest_compat;
42673 +@@ -2285,6 +2285,8 @@ do_ip_vs_set_ctl(struct sock *sk, int cm
42674 struct ip_vs_dest_user_kern udest;
42675 + struct netns_ipvs *ipvs = net_ipvs(net);
42676
42677 + pax_track_stack();
42678 +
42679 if (!capable(CAP_NET_ADMIN))
42680 return -EPERM;
42681
42682 -@@ -2498,7 +2500,7 @@ __ip_vs_get_dest_entries(struct net *net
42683 +@@ -2508,7 +2510,7 @@ __ip_vs_get_dest_entries(struct net *net
42684
42685 entry.addr = dest->addr.ip;
42686 entry.port = dest->port;
42687 @@ -73931,7 +73768,7 @@ diff -urNp linux-3.0.9/net/netfilter/ipvs/ip_vs_ctl.c linux-3.0.9/net/netfilter/
42688 entry.weight = atomic_read(&dest->weight);
42689 entry.u_threshold = dest->u_threshold;
42690 entry.l_threshold = dest->l_threshold;
42691 -@@ -3026,7 +3028,7 @@ static int ip_vs_genl_fill_dest(struct s
42692 +@@ -3041,7 +3043,7 @@ static int ip_vs_genl_fill_dest(struct s
42693 NLA_PUT_U16(skb, IPVS_DEST_ATTR_PORT, dest->port);
42694
42695 NLA_PUT_U32(skb, IPVS_DEST_ATTR_FWD_METHOD,
42696 @@ -73940,10 +73777,10 @@ diff -urNp linux-3.0.9/net/netfilter/ipvs/ip_vs_ctl.c linux-3.0.9/net/netfilter/
42697 NLA_PUT_U32(skb, IPVS_DEST_ATTR_WEIGHT, atomic_read(&dest->weight));
42698 NLA_PUT_U32(skb, IPVS_DEST_ATTR_U_THRESH, dest->u_threshold);
42699 NLA_PUT_U32(skb, IPVS_DEST_ATTR_L_THRESH, dest->l_threshold);
42700 -diff -urNp linux-3.0.9/net/netfilter/ipvs/ip_vs_sync.c linux-3.0.9/net/netfilter/ipvs/ip_vs_sync.c
42701 ---- linux-3.0.9/net/netfilter/ipvs/ip_vs_sync.c 2011-11-11 13:12:24.000000000 -0500
42702 -+++ linux-3.0.9/net/netfilter/ipvs/ip_vs_sync.c 2011-11-15 20:03:00.000000000 -0500
42703 -@@ -648,7 +648,7 @@ control:
42704 +diff -urNp linux-3.1.1/net/netfilter/ipvs/ip_vs_sync.c linux-3.1.1/net/netfilter/ipvs/ip_vs_sync.c
42705 +--- linux-3.1.1/net/netfilter/ipvs/ip_vs_sync.c 2011-11-11 15:19:27.000000000 -0500
42706 ++++ linux-3.1.1/net/netfilter/ipvs/ip_vs_sync.c 2011-11-16 18:39:08.000000000 -0500
42707 +@@ -649,7 +649,7 @@ control:
42708 * i.e only increment in_pkts for Templates.
42709 */
42710 if (cp->flags & IP_VS_CONN_F_TEMPLATE) {
42711 @@ -73952,7 +73789,7 @@ diff -urNp linux-3.0.9/net/netfilter/ipvs/ip_vs_sync.c linux-3.0.9/net/netfilter
42712
42713 if (pkts % sysctl_sync_period(ipvs) != 1)
42714 return;
42715 -@@ -794,7 +794,7 @@ static void ip_vs_proc_conn(struct net *
42716 +@@ -795,7 +795,7 @@ static void ip_vs_proc_conn(struct net *
42717
42718 if (opt)
42719 memcpy(&cp->in_seq, opt, sizeof(*opt));
42720 @@ -73961,9 +73798,9 @@ diff -urNp linux-3.0.9/net/netfilter/ipvs/ip_vs_sync.c linux-3.0.9/net/netfilter
42721 cp->state = state;
42722 cp->old_state = cp->state;
42723 /*
42724 -diff -urNp linux-3.0.9/net/netfilter/ipvs/ip_vs_xmit.c linux-3.0.9/net/netfilter/ipvs/ip_vs_xmit.c
42725 ---- linux-3.0.9/net/netfilter/ipvs/ip_vs_xmit.c 2011-11-11 13:12:24.000000000 -0500
42726 -+++ linux-3.0.9/net/netfilter/ipvs/ip_vs_xmit.c 2011-11-15 20:03:00.000000000 -0500
42727 +diff -urNp linux-3.1.1/net/netfilter/ipvs/ip_vs_xmit.c linux-3.1.1/net/netfilter/ipvs/ip_vs_xmit.c
42728 +--- linux-3.1.1/net/netfilter/ipvs/ip_vs_xmit.c 2011-11-11 15:19:27.000000000 -0500
42729 ++++ linux-3.1.1/net/netfilter/ipvs/ip_vs_xmit.c 2011-11-16 18:39:08.000000000 -0500
42730 @@ -1151,7 +1151,7 @@ ip_vs_icmp_xmit(struct sk_buff *skb, str
42731 else
42732 rc = NF_ACCEPT;
42733 @@ -73982,9 +73819,9 @@ diff -urNp linux-3.0.9/net/netfilter/ipvs/ip_vs_xmit.c linux-3.0.9/net/netfilter
42734 goto out;
42735 }
42736
42737 -diff -urNp linux-3.0.9/net/netfilter/Kconfig linux-3.0.9/net/netfilter/Kconfig
42738 ---- linux-3.0.9/net/netfilter/Kconfig 2011-11-11 13:12:24.000000000 -0500
42739 -+++ linux-3.0.9/net/netfilter/Kconfig 2011-11-15 20:03:00.000000000 -0500
42740 +diff -urNp linux-3.1.1/net/netfilter/Kconfig linux-3.1.1/net/netfilter/Kconfig
42741 +--- linux-3.1.1/net/netfilter/Kconfig 2011-11-11 15:19:27.000000000 -0500
42742 ++++ linux-3.1.1/net/netfilter/Kconfig 2011-11-16 18:40:44.000000000 -0500
42743 @@ -781,6 +781,16 @@ config NETFILTER_XT_MATCH_ESP
42744
42745 To compile it as a module, choose M here. If unsure, say N.
42746 @@ -74002,9 +73839,9 @@ diff -urNp linux-3.0.9/net/netfilter/Kconfig linux-3.0.9/net/netfilter/Kconfig
42747 config NETFILTER_XT_MATCH_HASHLIMIT
42748 tristate '"hashlimit" match support'
42749 depends on (IP6_NF_IPTABLES || IP6_NF_IPTABLES=n)
42750 -diff -urNp linux-3.0.9/net/netfilter/Makefile linux-3.0.9/net/netfilter/Makefile
42751 ---- linux-3.0.9/net/netfilter/Makefile 2011-11-11 13:12:24.000000000 -0500
42752 -+++ linux-3.0.9/net/netfilter/Makefile 2011-11-15 20:03:00.000000000 -0500
42753 +diff -urNp linux-3.1.1/net/netfilter/Makefile linux-3.1.1/net/netfilter/Makefile
42754 +--- linux-3.1.1/net/netfilter/Makefile 2011-11-11 15:19:27.000000000 -0500
42755 ++++ linux-3.1.1/net/netfilter/Makefile 2011-11-16 18:40:44.000000000 -0500
42756 @@ -81,6 +81,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_DCCP) +=
42757 obj-$(CONFIG_NETFILTER_XT_MATCH_DEVGROUP) += xt_devgroup.o
42758 obj-$(CONFIG_NETFILTER_XT_MATCH_DSCP) += xt_dscp.o
42759 @@ -74013,9 +73850,9 @@ diff -urNp linux-3.0.9/net/netfilter/Makefile linux-3.0.9/net/netfilter/Makefile
42760 obj-$(CONFIG_NETFILTER_XT_MATCH_HASHLIMIT) += xt_hashlimit.o
42761 obj-$(CONFIG_NETFILTER_XT_MATCH_HELPER) += xt_helper.o
42762 obj-$(CONFIG_NETFILTER_XT_MATCH_HL) += xt_hl.o
42763 -diff -urNp linux-3.0.9/net/netfilter/nfnetlink_log.c linux-3.0.9/net/netfilter/nfnetlink_log.c
42764 ---- linux-3.0.9/net/netfilter/nfnetlink_log.c 2011-11-11 13:12:24.000000000 -0500
42765 -+++ linux-3.0.9/net/netfilter/nfnetlink_log.c 2011-11-15 20:03:00.000000000 -0500
42766 +diff -urNp linux-3.1.1/net/netfilter/nfnetlink_log.c linux-3.1.1/net/netfilter/nfnetlink_log.c
42767 +--- linux-3.1.1/net/netfilter/nfnetlink_log.c 2011-11-11 15:19:27.000000000 -0500
42768 ++++ linux-3.1.1/net/netfilter/nfnetlink_log.c 2011-11-16 18:39:08.000000000 -0500
42769 @@ -70,7 +70,7 @@ struct nfulnl_instance {
42770 };
42771
42772 @@ -74034,39 +73871,9 @@ diff -urNp linux-3.0.9/net/netfilter/nfnetlink_log.c linux-3.0.9/net/netfilter/n
42773
42774 if (data_len) {
42775 struct nlattr *nla;
42776 -diff -urNp linux-3.0.9/net/netfilter/nfnetlink_queue.c linux-3.0.9/net/netfilter/nfnetlink_queue.c
42777 ---- linux-3.0.9/net/netfilter/nfnetlink_queue.c 2011-11-11 13:12:24.000000000 -0500
42778 -+++ linux-3.0.9/net/netfilter/nfnetlink_queue.c 2011-11-15 20:03:00.000000000 -0500
42779 -@@ -58,7 +58,7 @@ struct nfqnl_instance {
42780 - */
42781 - spinlock_t lock;
42782 - unsigned int queue_total;
42783 -- atomic_t id_sequence; /* 'sequence' of pkt ids */
42784 -+ atomic_unchecked_t id_sequence; /* 'sequence' of pkt ids */
42785 - struct list_head queue_list; /* packets in queue */
42786 - };
42787 -
42788 -@@ -272,7 +272,7 @@ nfqnl_build_packet_message(struct nfqnl_
42789 - nfmsg->version = NFNETLINK_V0;
42790 - nfmsg->res_id = htons(queue->queue_num);
42791 -
42792 -- entry->id = atomic_inc_return(&queue->id_sequence);
42793 -+ entry->id = atomic_inc_return_unchecked(&queue->id_sequence);
42794 - pmsg.packet_id = htonl(entry->id);
42795 - pmsg.hw_protocol = entskb->protocol;
42796 - pmsg.hook = entry->hook;
42797 -@@ -870,7 +870,7 @@ static int seq_show(struct seq_file *s,
42798 - inst->peer_pid, inst->queue_total,
42799 - inst->copy_mode, inst->copy_range,
42800 - inst->queue_dropped, inst->queue_user_dropped,
42801 -- atomic_read(&inst->id_sequence), 1);
42802 -+ atomic_read_unchecked(&inst->id_sequence), 1);
42803 - }
42804 -
42805 - static const struct seq_operations nfqnl_seq_ops = {
42806 -diff -urNp linux-3.0.9/net/netfilter/xt_gradm.c linux-3.0.9/net/netfilter/xt_gradm.c
42807 ---- linux-3.0.9/net/netfilter/xt_gradm.c 1969-12-31 19:00:00.000000000 -0500
42808 -+++ linux-3.0.9/net/netfilter/xt_gradm.c 2011-11-15 20:03:00.000000000 -0500
42809 +diff -urNp linux-3.1.1/net/netfilter/xt_gradm.c linux-3.1.1/net/netfilter/xt_gradm.c
42810 +--- linux-3.1.1/net/netfilter/xt_gradm.c 1969-12-31 19:00:00.000000000 -0500
42811 ++++ linux-3.1.1/net/netfilter/xt_gradm.c 2011-11-16 18:40:44.000000000 -0500
42812 @@ -0,0 +1,51 @@
42813 +/*
42814 + * gradm match for netfilter
42815 @@ -74119,9 +73926,9 @@ diff -urNp linux-3.0.9/net/netfilter/xt_gradm.c linux-3.0.9/net/netfilter/xt_gra
42816 +MODULE_LICENSE("GPL");
42817 +MODULE_ALIAS("ipt_gradm");
42818 +MODULE_ALIAS("ip6t_gradm");
42819 -diff -urNp linux-3.0.9/net/netfilter/xt_statistic.c linux-3.0.9/net/netfilter/xt_statistic.c
42820 ---- linux-3.0.9/net/netfilter/xt_statistic.c 2011-11-11 13:12:24.000000000 -0500
42821 -+++ linux-3.0.9/net/netfilter/xt_statistic.c 2011-11-15 20:03:00.000000000 -0500
42822 +diff -urNp linux-3.1.1/net/netfilter/xt_statistic.c linux-3.1.1/net/netfilter/xt_statistic.c
42823 +--- linux-3.1.1/net/netfilter/xt_statistic.c 2011-11-11 15:19:27.000000000 -0500
42824 ++++ linux-3.1.1/net/netfilter/xt_statistic.c 2011-11-16 18:39:08.000000000 -0500
42825 @@ -18,7 +18,7 @@
42826 #include <linux/netfilter/x_tables.h>
42827
42828 @@ -74152,9 +73959,9 @@ diff -urNp linux-3.0.9/net/netfilter/xt_statistic.c linux-3.0.9/net/netfilter/xt
42829
42830 return 0;
42831 }
42832 -diff -urNp linux-3.0.9/net/netlink/af_netlink.c linux-3.0.9/net/netlink/af_netlink.c
42833 ---- linux-3.0.9/net/netlink/af_netlink.c 2011-11-11 13:12:24.000000000 -0500
42834 -+++ linux-3.0.9/net/netlink/af_netlink.c 2011-11-15 20:03:00.000000000 -0500
42835 +diff -urNp linux-3.1.1/net/netlink/af_netlink.c linux-3.1.1/net/netlink/af_netlink.c
42836 +--- linux-3.1.1/net/netlink/af_netlink.c 2011-11-11 15:19:27.000000000 -0500
42837 ++++ linux-3.1.1/net/netlink/af_netlink.c 2011-11-16 18:39:08.000000000 -0500
42838 @@ -742,7 +742,7 @@ static void netlink_overrun(struct sock
42839 sk->sk_error_report(sk);
42840 }
42841 @@ -74164,7 +73971,7 @@ diff -urNp linux-3.0.9/net/netlink/af_netlink.c linux-3.0.9/net/netlink/af_netli
42842 }
42843
42844 static struct sock *netlink_getsockbypid(struct sock *ssk, u32 pid)
42845 -@@ -1994,7 +1994,7 @@ static int netlink_seq_show(struct seq_f
42846 +@@ -2000,7 +2000,7 @@ static int netlink_seq_show(struct seq_f
42847 sk_wmem_alloc_get(s),
42848 nlk->cb,
42849 atomic_read(&s->sk_refcnt),
42850 @@ -74173,9 +73980,9 @@ diff -urNp linux-3.0.9/net/netlink/af_netlink.c linux-3.0.9/net/netlink/af_netli
42851 sock_i_ino(s)
42852 );
42853
42854 -diff -urNp linux-3.0.9/net/netrom/af_netrom.c linux-3.0.9/net/netrom/af_netrom.c
42855 ---- linux-3.0.9/net/netrom/af_netrom.c 2011-11-11 13:12:24.000000000 -0500
42856 -+++ linux-3.0.9/net/netrom/af_netrom.c 2011-11-15 20:03:00.000000000 -0500
42857 +diff -urNp linux-3.1.1/net/netrom/af_netrom.c linux-3.1.1/net/netrom/af_netrom.c
42858 +--- linux-3.1.1/net/netrom/af_netrom.c 2011-11-11 15:19:27.000000000 -0500
42859 ++++ linux-3.1.1/net/netrom/af_netrom.c 2011-11-16 18:40:44.000000000 -0500
42860 @@ -839,6 +839,7 @@ static int nr_getname(struct socket *soc
42861 struct sock *sk = sock->sk;
42862 struct nr_sock *nr = nr_sk(sk);
42863 @@ -74192,10 +73999,10 @@ diff -urNp linux-3.0.9/net/netrom/af_netrom.c linux-3.0.9/net/netrom/af_netrom.c
42864 sax->fsa_ax25.sax25_call = nr->source_addr;
42865 *uaddr_len = sizeof(struct sockaddr_ax25);
42866 }
42867 -diff -urNp linux-3.0.9/net/packet/af_packet.c linux-3.0.9/net/packet/af_packet.c
42868 ---- linux-3.0.9/net/packet/af_packet.c 2011-11-11 13:12:24.000000000 -0500
42869 -+++ linux-3.0.9/net/packet/af_packet.c 2011-11-15 20:03:00.000000000 -0500
42870 -@@ -647,7 +647,7 @@ static int packet_rcv(struct sk_buff *sk
42871 +diff -urNp linux-3.1.1/net/packet/af_packet.c linux-3.1.1/net/packet/af_packet.c
42872 +--- linux-3.1.1/net/packet/af_packet.c 2011-11-11 15:19:27.000000000 -0500
42873 ++++ linux-3.1.1/net/packet/af_packet.c 2011-11-16 18:39:08.000000000 -0500
42874 +@@ -954,7 +954,7 @@ static int packet_rcv(struct sk_buff *sk
42875
42876 spin_lock(&sk->sk_receive_queue.lock);
42877 po->stats.tp_packets++;
42878 @@ -74204,7 +74011,7 @@ diff -urNp linux-3.0.9/net/packet/af_packet.c linux-3.0.9/net/packet/af_packet.c
42879 __skb_queue_tail(&sk->sk_receive_queue, skb);
42880 spin_unlock(&sk->sk_receive_queue.lock);
42881 sk->sk_data_ready(sk, skb->len);
42882 -@@ -656,7 +656,7 @@ static int packet_rcv(struct sk_buff *sk
42883 +@@ -963,7 +963,7 @@ static int packet_rcv(struct sk_buff *sk
42884 drop_n_acct:
42885 spin_lock(&sk->sk_receive_queue.lock);
42886 po->stats.tp_drops++;
42887 @@ -74213,7 +74020,7 @@ diff -urNp linux-3.0.9/net/packet/af_packet.c linux-3.0.9/net/packet/af_packet.c
42888 spin_unlock(&sk->sk_receive_queue.lock);
42889
42890 drop_n_restore:
42891 -@@ -2171,7 +2171,7 @@ static int packet_getsockopt(struct sock
42892 +@@ -2479,7 +2479,7 @@ static int packet_getsockopt(struct sock
42893 case PACKET_HDRLEN:
42894 if (len > sizeof(int))
42895 len = sizeof(int);
42896 @@ -74222,7 +74029,7 @@ diff -urNp linux-3.0.9/net/packet/af_packet.c linux-3.0.9/net/packet/af_packet.c
42897 return -EFAULT;
42898 switch (val) {
42899 case TPACKET_V1:
42900 -@@ -2209,7 +2209,7 @@ static int packet_getsockopt(struct sock
42901 +@@ -2526,7 +2526,7 @@ static int packet_getsockopt(struct sock
42902
42903 if (put_user(len, optlen))
42904 return -EFAULT;
42905 @@ -74231,9 +74038,9 @@ diff -urNp linux-3.0.9/net/packet/af_packet.c linux-3.0.9/net/packet/af_packet.c
42906 return -EFAULT;
42907 return 0;
42908 }
42909 -diff -urNp linux-3.0.9/net/phonet/af_phonet.c linux-3.0.9/net/phonet/af_phonet.c
42910 ---- linux-3.0.9/net/phonet/af_phonet.c 2011-11-11 13:12:24.000000000 -0500
42911 -+++ linux-3.0.9/net/phonet/af_phonet.c 2011-11-15 20:03:00.000000000 -0500
42912 +diff -urNp linux-3.1.1/net/phonet/af_phonet.c linux-3.1.1/net/phonet/af_phonet.c
42913 +--- linux-3.1.1/net/phonet/af_phonet.c 2011-11-11 15:19:27.000000000 -0500
42914 ++++ linux-3.1.1/net/phonet/af_phonet.c 2011-11-16 18:40:44.000000000 -0500
42915 @@ -41,7 +41,7 @@ static struct phonet_protocol *phonet_pr
42916 {
42917 struct phonet_protocol *pp;
42918 @@ -74252,9 +74059,9 @@ diff -urNp linux-3.0.9/net/phonet/af_phonet.c linux-3.0.9/net/phonet/af_phonet.c
42919 return -EINVAL;
42920
42921 err = proto_register(pp->prot, 1);
42922 -diff -urNp linux-3.0.9/net/phonet/pep.c linux-3.0.9/net/phonet/pep.c
42923 ---- linux-3.0.9/net/phonet/pep.c 2011-11-11 13:12:24.000000000 -0500
42924 -+++ linux-3.0.9/net/phonet/pep.c 2011-11-15 20:03:00.000000000 -0500
42925 +diff -urNp linux-3.1.1/net/phonet/pep.c linux-3.1.1/net/phonet/pep.c
42926 +--- linux-3.1.1/net/phonet/pep.c 2011-11-11 15:19:27.000000000 -0500
42927 ++++ linux-3.1.1/net/phonet/pep.c 2011-11-16 18:39:08.000000000 -0500
42928 @@ -387,7 +387,7 @@ static int pipe_do_rcv(struct sock *sk,
42929
42930 case PNS_PEP_CTRL_REQ:
42931 @@ -74282,9 +74089,9 @@ diff -urNp linux-3.0.9/net/phonet/pep.c linux-3.0.9/net/phonet/pep.c
42932 err = NET_RX_DROP;
42933 break;
42934 }
42935 -diff -urNp linux-3.0.9/net/phonet/socket.c linux-3.0.9/net/phonet/socket.c
42936 ---- linux-3.0.9/net/phonet/socket.c 2011-11-11 13:12:24.000000000 -0500
42937 -+++ linux-3.0.9/net/phonet/socket.c 2011-11-15 20:03:00.000000000 -0500
42938 +diff -urNp linux-3.1.1/net/phonet/socket.c linux-3.1.1/net/phonet/socket.c
42939 +--- linux-3.1.1/net/phonet/socket.c 2011-11-11 15:19:27.000000000 -0500
42940 ++++ linux-3.1.1/net/phonet/socket.c 2011-11-16 18:40:44.000000000 -0500
42941 @@ -612,8 +612,13 @@ static int pn_sock_seq_show(struct seq_f
42942 pn->resource, sk->sk_state,
42943 sk_wmem_alloc_get(sk), sk_rmem_alloc_get(sk),
42944 @@ -74301,9 +74108,9 @@ diff -urNp linux-3.0.9/net/phonet/socket.c linux-3.0.9/net/phonet/socket.c
42945 }
42946 seq_printf(seq, "%*s\n", 127 - len, "");
42947 return 0;
42948 -diff -urNp linux-3.0.9/net/rds/cong.c linux-3.0.9/net/rds/cong.c
42949 ---- linux-3.0.9/net/rds/cong.c 2011-11-11 13:12:24.000000000 -0500
42950 -+++ linux-3.0.9/net/rds/cong.c 2011-11-15 20:03:00.000000000 -0500
42951 +diff -urNp linux-3.1.1/net/rds/cong.c linux-3.1.1/net/rds/cong.c
42952 +--- linux-3.1.1/net/rds/cong.c 2011-11-11 15:19:27.000000000 -0500
42953 ++++ linux-3.1.1/net/rds/cong.c 2011-11-16 18:39:08.000000000 -0500
42954 @@ -77,7 +77,7 @@
42955 * finds that the saved generation number is smaller than the global generation
42956 * number, it wakes up the process.
42957 @@ -74331,9 +74138,9 @@ diff -urNp linux-3.0.9/net/rds/cong.c linux-3.0.9/net/rds/cong.c
42958
42959 if (likely(*recent == gen))
42960 return 0;
42961 -diff -urNp linux-3.0.9/net/rds/ib_cm.c linux-3.0.9/net/rds/ib_cm.c
42962 ---- linux-3.0.9/net/rds/ib_cm.c 2011-11-11 13:12:24.000000000 -0500
42963 -+++ linux-3.0.9/net/rds/ib_cm.c 2011-11-15 20:03:00.000000000 -0500
42964 +diff -urNp linux-3.1.1/net/rds/ib_cm.c linux-3.1.1/net/rds/ib_cm.c
42965 +--- linux-3.1.1/net/rds/ib_cm.c 2011-11-11 15:19:27.000000000 -0500
42966 ++++ linux-3.1.1/net/rds/ib_cm.c 2011-11-16 18:39:08.000000000 -0500
42967 @@ -720,7 +720,7 @@ void rds_ib_conn_shutdown(struct rds_con
42968 /* Clear the ACK state */
42969 clear_bit(IB_ACK_IN_FLIGHT, &ic->i_ack_flags);
42970 @@ -74343,10 +74150,10 @@ diff -urNp linux-3.0.9/net/rds/ib_cm.c linux-3.0.9/net/rds/ib_cm.c
42971 #else
42972 ic->i_ack_next = 0;
42973 #endif
42974 -diff -urNp linux-3.0.9/net/rds/ib.h linux-3.0.9/net/rds/ib.h
42975 ---- linux-3.0.9/net/rds/ib.h 2011-11-11 13:12:24.000000000 -0500
42976 -+++ linux-3.0.9/net/rds/ib.h 2011-11-15 20:03:00.000000000 -0500
42977 -@@ -127,7 +127,7 @@ struct rds_ib_connection {
42978 +diff -urNp linux-3.1.1/net/rds/ib.h linux-3.1.1/net/rds/ib.h
42979 +--- linux-3.1.1/net/rds/ib.h 2011-11-11 15:19:27.000000000 -0500
42980 ++++ linux-3.1.1/net/rds/ib.h 2011-11-16 18:39:08.000000000 -0500
42981 +@@ -128,7 +128,7 @@ struct rds_ib_connection {
42982 /* sending acks */
42983 unsigned long i_ack_flags;
42984 #ifdef KERNEL_HAS_ATOMIC64
42985 @@ -74355,9 +74162,9 @@ diff -urNp linux-3.0.9/net/rds/ib.h linux-3.0.9/net/rds/ib.h
42986 #else
42987 spinlock_t i_ack_lock; /* protect i_ack_next */
42988 u64 i_ack_next; /* next ACK to send */
42989 -diff -urNp linux-3.0.9/net/rds/ib_recv.c linux-3.0.9/net/rds/ib_recv.c
42990 ---- linux-3.0.9/net/rds/ib_recv.c 2011-11-11 13:12:24.000000000 -0500
42991 -+++ linux-3.0.9/net/rds/ib_recv.c 2011-11-15 20:03:00.000000000 -0500
42992 +diff -urNp linux-3.1.1/net/rds/ib_recv.c linux-3.1.1/net/rds/ib_recv.c
42993 +--- linux-3.1.1/net/rds/ib_recv.c 2011-11-11 15:19:27.000000000 -0500
42994 ++++ linux-3.1.1/net/rds/ib_recv.c 2011-11-16 18:39:08.000000000 -0500
42995 @@ -592,7 +592,7 @@ static u64 rds_ib_get_ack(struct rds_ib_
42996 static void rds_ib_set_ack(struct rds_ib_connection *ic, u64 seq,
42997 int ack_required)
42998 @@ -74376,10 +74183,10 @@ diff -urNp linux-3.0.9/net/rds/ib_recv.c linux-3.0.9/net/rds/ib_recv.c
42999 }
43000 #endif
43001
43002 -diff -urNp linux-3.0.9/net/rds/iw_cm.c linux-3.0.9/net/rds/iw_cm.c
43003 ---- linux-3.0.9/net/rds/iw_cm.c 2011-11-11 13:12:24.000000000 -0500
43004 -+++ linux-3.0.9/net/rds/iw_cm.c 2011-11-15 20:03:00.000000000 -0500
43005 -@@ -664,7 +664,7 @@ void rds_iw_conn_shutdown(struct rds_con
43006 +diff -urNp linux-3.1.1/net/rds/iw_cm.c linux-3.1.1/net/rds/iw_cm.c
43007 +--- linux-3.1.1/net/rds/iw_cm.c 2011-11-11 15:19:27.000000000 -0500
43008 ++++ linux-3.1.1/net/rds/iw_cm.c 2011-11-16 18:39:08.000000000 -0500
43009 +@@ -663,7 +663,7 @@ void rds_iw_conn_shutdown(struct rds_con
43010 /* Clear the ACK state */
43011 clear_bit(IB_ACK_IN_FLIGHT, &ic->i_ack_flags);
43012 #ifdef KERNEL_HAS_ATOMIC64
43013 @@ -74388,10 +74195,10 @@ diff -urNp linux-3.0.9/net/rds/iw_cm.c linux-3.0.9/net/rds/iw_cm.c
43014 #else
43015 ic->i_ack_next = 0;
43016 #endif
43017 -diff -urNp linux-3.0.9/net/rds/iw.h linux-3.0.9/net/rds/iw.h
43018 ---- linux-3.0.9/net/rds/iw.h 2011-11-11 13:12:24.000000000 -0500
43019 -+++ linux-3.0.9/net/rds/iw.h 2011-11-15 20:03:00.000000000 -0500
43020 -@@ -133,7 +133,7 @@ struct rds_iw_connection {
43021 +diff -urNp linux-3.1.1/net/rds/iw.h linux-3.1.1/net/rds/iw.h
43022 +--- linux-3.1.1/net/rds/iw.h 2011-11-11 15:19:27.000000000 -0500
43023 ++++ linux-3.1.1/net/rds/iw.h 2011-11-16 18:39:08.000000000 -0500
43024 +@@ -134,7 +134,7 @@ struct rds_iw_connection {
43025 /* sending acks */
43026 unsigned long i_ack_flags;
43027 #ifdef KERNEL_HAS_ATOMIC64
43028 @@ -74400,10 +74207,10 @@ diff -urNp linux-3.0.9/net/rds/iw.h linux-3.0.9/net/rds/iw.h
43029 #else
43030 spinlock_t i_ack_lock; /* protect i_ack_next */
43031 u64 i_ack_next; /* next ACK to send */
43032 -diff -urNp linux-3.0.9/net/rds/iw_rdma.c linux-3.0.9/net/rds/iw_rdma.c
43033 ---- linux-3.0.9/net/rds/iw_rdma.c 2011-11-11 13:12:24.000000000 -0500
43034 -+++ linux-3.0.9/net/rds/iw_rdma.c 2011-11-15 20:03:00.000000000 -0500
43035 -@@ -182,6 +182,8 @@ int rds_iw_update_cm_id(struct rds_iw_de
43036 +diff -urNp linux-3.1.1/net/rds/iw_rdma.c linux-3.1.1/net/rds/iw_rdma.c
43037 +--- linux-3.1.1/net/rds/iw_rdma.c 2011-11-11 15:19:27.000000000 -0500
43038 ++++ linux-3.1.1/net/rds/iw_rdma.c 2011-11-16 18:40:44.000000000 -0500
43039 +@@ -184,6 +184,8 @@ int rds_iw_update_cm_id(struct rds_iw_de
43040 struct rdma_cm_id *pcm_id;
43041 int rc;
43042
43043 @@ -74412,9 +74219,9 @@ diff -urNp linux-3.0.9/net/rds/iw_rdma.c linux-3.0.9/net/rds/iw_rdma.c
43044 src_addr = (struct sockaddr_in *)&cm_id->route.addr.src_addr;
43045 dst_addr = (struct sockaddr_in *)&cm_id->route.addr.dst_addr;
43046
43047 -diff -urNp linux-3.0.9/net/rds/iw_recv.c linux-3.0.9/net/rds/iw_recv.c
43048 ---- linux-3.0.9/net/rds/iw_recv.c 2011-11-11 13:12:24.000000000 -0500
43049 -+++ linux-3.0.9/net/rds/iw_recv.c 2011-11-15 20:03:00.000000000 -0500
43050 +diff -urNp linux-3.1.1/net/rds/iw_recv.c linux-3.1.1/net/rds/iw_recv.c
43051 +--- linux-3.1.1/net/rds/iw_recv.c 2011-11-11 15:19:27.000000000 -0500
43052 ++++ linux-3.1.1/net/rds/iw_recv.c 2011-11-16 18:39:08.000000000 -0500
43053 @@ -427,7 +427,7 @@ static u64 rds_iw_get_ack(struct rds_iw_
43054 static void rds_iw_set_ack(struct rds_iw_connection *ic, u64 seq,
43055 int ack_required)
43056 @@ -74433,9 +74240,9 @@ diff -urNp linux-3.0.9/net/rds/iw_recv.c linux-3.0.9/net/rds/iw_recv.c
43057 }
43058 #endif
43059
43060 -diff -urNp linux-3.0.9/net/rds/tcp.c linux-3.0.9/net/rds/tcp.c
43061 ---- linux-3.0.9/net/rds/tcp.c 2011-11-11 13:12:24.000000000 -0500
43062 -+++ linux-3.0.9/net/rds/tcp.c 2011-11-15 20:03:00.000000000 -0500
43063 +diff -urNp linux-3.1.1/net/rds/tcp.c linux-3.1.1/net/rds/tcp.c
43064 +--- linux-3.1.1/net/rds/tcp.c 2011-11-11 15:19:27.000000000 -0500
43065 ++++ linux-3.1.1/net/rds/tcp.c 2011-11-16 18:39:08.000000000 -0500
43066 @@ -58,7 +58,7 @@ void rds_tcp_nonagle(struct socket *sock
43067 int val = 1;
43068
43069 @@ -74445,9 +74252,9 @@ diff -urNp linux-3.0.9/net/rds/tcp.c linux-3.0.9/net/rds/tcp.c
43070 sizeof(val));
43071 set_fs(oldfs);
43072 }
43073 -diff -urNp linux-3.0.9/net/rds/tcp_send.c linux-3.0.9/net/rds/tcp_send.c
43074 ---- linux-3.0.9/net/rds/tcp_send.c 2011-11-11 13:12:24.000000000 -0500
43075 -+++ linux-3.0.9/net/rds/tcp_send.c 2011-11-15 20:03:00.000000000 -0500
43076 +diff -urNp linux-3.1.1/net/rds/tcp_send.c linux-3.1.1/net/rds/tcp_send.c
43077 +--- linux-3.1.1/net/rds/tcp_send.c 2011-11-11 15:19:27.000000000 -0500
43078 ++++ linux-3.1.1/net/rds/tcp_send.c 2011-11-16 18:39:08.000000000 -0500
43079 @@ -43,7 +43,7 @@ static void rds_tcp_cork(struct socket *
43080
43081 oldfs = get_fs();
43082 @@ -74457,9 +74264,9 @@ diff -urNp linux-3.0.9/net/rds/tcp_send.c linux-3.0.9/net/rds/tcp_send.c
43083 sizeof(val));
43084 set_fs(oldfs);
43085 }
43086 -diff -urNp linux-3.0.9/net/rxrpc/af_rxrpc.c linux-3.0.9/net/rxrpc/af_rxrpc.c
43087 ---- linux-3.0.9/net/rxrpc/af_rxrpc.c 2011-11-11 13:12:24.000000000 -0500
43088 -+++ linux-3.0.9/net/rxrpc/af_rxrpc.c 2011-11-15 20:03:00.000000000 -0500
43089 +diff -urNp linux-3.1.1/net/rxrpc/af_rxrpc.c linux-3.1.1/net/rxrpc/af_rxrpc.c
43090 +--- linux-3.1.1/net/rxrpc/af_rxrpc.c 2011-11-11 15:19:27.000000000 -0500
43091 ++++ linux-3.1.1/net/rxrpc/af_rxrpc.c 2011-11-16 18:39:08.000000000 -0500
43092 @@ -39,7 +39,7 @@ static const struct proto_ops rxrpc_rpc_
43093 __be32 rxrpc_epoch;
43094
43095 @@ -74469,9 +74276,9 @@ diff -urNp linux-3.0.9/net/rxrpc/af_rxrpc.c linux-3.0.9/net/rxrpc/af_rxrpc.c
43096
43097 /* count of skbs currently in use */
43098 atomic_t rxrpc_n_skbs;
43099 -diff -urNp linux-3.0.9/net/rxrpc/ar-ack.c linux-3.0.9/net/rxrpc/ar-ack.c
43100 ---- linux-3.0.9/net/rxrpc/ar-ack.c 2011-11-11 13:12:24.000000000 -0500
43101 -+++ linux-3.0.9/net/rxrpc/ar-ack.c 2011-11-15 20:03:00.000000000 -0500
43102 +diff -urNp linux-3.1.1/net/rxrpc/ar-ack.c linux-3.1.1/net/rxrpc/ar-ack.c
43103 +--- linux-3.1.1/net/rxrpc/ar-ack.c 2011-11-11 15:19:27.000000000 -0500
43104 ++++ linux-3.1.1/net/rxrpc/ar-ack.c 2011-11-16 18:40:44.000000000 -0500
43105 @@ -175,7 +175,7 @@ static void rxrpc_resend(struct rxrpc_ca
43106
43107 _enter("{%d,%d,%d,%d},",
43108 @@ -74544,9 +74351,9 @@ diff -urNp linux-3.0.9/net/rxrpc/ar-ack.c linux-3.0.9/net/rxrpc/ar-ack.c
43109 _proto("Tx %s %%%u", rxrpc_pkts[hdr.type], ntohl(hdr.serial));
43110 send_message_2:
43111
43112 -diff -urNp linux-3.0.9/net/rxrpc/ar-call.c linux-3.0.9/net/rxrpc/ar-call.c
43113 ---- linux-3.0.9/net/rxrpc/ar-call.c 2011-11-11 13:12:24.000000000 -0500
43114 -+++ linux-3.0.9/net/rxrpc/ar-call.c 2011-11-15 20:03:00.000000000 -0500
43115 +diff -urNp linux-3.1.1/net/rxrpc/ar-call.c linux-3.1.1/net/rxrpc/ar-call.c
43116 +--- linux-3.1.1/net/rxrpc/ar-call.c 2011-11-11 15:19:27.000000000 -0500
43117 ++++ linux-3.1.1/net/rxrpc/ar-call.c 2011-11-16 18:39:08.000000000 -0500
43118 @@ -83,7 +83,7 @@ static struct rxrpc_call *rxrpc_alloc_ca
43119 spin_lock_init(&call->lock);
43120 rwlock_init(&call->state_lock);
43121 @@ -74556,9 +74363,9 @@ diff -urNp linux-3.0.9/net/rxrpc/ar-call.c linux-3.0.9/net/rxrpc/ar-call.c
43122 call->state = RXRPC_CALL_CLIENT_SEND_REQUEST;
43123
43124 memset(&call->sock_node, 0xed, sizeof(call->sock_node));
43125 -diff -urNp linux-3.0.9/net/rxrpc/ar-connection.c linux-3.0.9/net/rxrpc/ar-connection.c
43126 ---- linux-3.0.9/net/rxrpc/ar-connection.c 2011-11-11 13:12:24.000000000 -0500
43127 -+++ linux-3.0.9/net/rxrpc/ar-connection.c 2011-11-15 20:03:00.000000000 -0500
43128 +diff -urNp linux-3.1.1/net/rxrpc/ar-connection.c linux-3.1.1/net/rxrpc/ar-connection.c
43129 +--- linux-3.1.1/net/rxrpc/ar-connection.c 2011-11-11 15:19:27.000000000 -0500
43130 ++++ linux-3.1.1/net/rxrpc/ar-connection.c 2011-11-16 18:39:08.000000000 -0500
43131 @@ -206,7 +206,7 @@ static struct rxrpc_connection *rxrpc_al
43132 rwlock_init(&conn->lock);
43133 spin_lock_init(&conn->state_lock);
43134 @@ -74568,9 +74375,9 @@ diff -urNp linux-3.0.9/net/rxrpc/ar-connection.c linux-3.0.9/net/rxrpc/ar-connec
43135 conn->avail_calls = RXRPC_MAXCALLS;
43136 conn->size_align = 4;
43137 conn->header_size = sizeof(struct rxrpc_header);
43138 -diff -urNp linux-3.0.9/net/rxrpc/ar-connevent.c linux-3.0.9/net/rxrpc/ar-connevent.c
43139 ---- linux-3.0.9/net/rxrpc/ar-connevent.c 2011-11-11 13:12:24.000000000 -0500
43140 -+++ linux-3.0.9/net/rxrpc/ar-connevent.c 2011-11-15 20:03:00.000000000 -0500
43141 +diff -urNp linux-3.1.1/net/rxrpc/ar-connevent.c linux-3.1.1/net/rxrpc/ar-connevent.c
43142 +--- linux-3.1.1/net/rxrpc/ar-connevent.c 2011-11-11 15:19:27.000000000 -0500
43143 ++++ linux-3.1.1/net/rxrpc/ar-connevent.c 2011-11-16 18:39:08.000000000 -0500
43144 @@ -109,7 +109,7 @@ static int rxrpc_abort_connection(struct
43145
43146 len = iov[0].iov_len + iov[1].iov_len;
43147 @@ -74580,9 +74387,9 @@ diff -urNp linux-3.0.9/net/rxrpc/ar-connevent.c linux-3.0.9/net/rxrpc/ar-conneve
43148 _proto("Tx CONN ABORT %%%u { %d }", ntohl(hdr.serial), abort_code);
43149
43150 ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 2, len);
43151 -diff -urNp linux-3.0.9/net/rxrpc/ar-input.c linux-3.0.9/net/rxrpc/ar-input.c
43152 ---- linux-3.0.9/net/rxrpc/ar-input.c 2011-11-11 13:12:24.000000000 -0500
43153 -+++ linux-3.0.9/net/rxrpc/ar-input.c 2011-11-15 20:03:00.000000000 -0500
43154 +diff -urNp linux-3.1.1/net/rxrpc/ar-input.c linux-3.1.1/net/rxrpc/ar-input.c
43155 +--- linux-3.1.1/net/rxrpc/ar-input.c 2011-11-11 15:19:27.000000000 -0500
43156 ++++ linux-3.1.1/net/rxrpc/ar-input.c 2011-11-16 18:39:08.000000000 -0500
43157 @@ -340,9 +340,9 @@ void rxrpc_fast_process_packet(struct rx
43158 /* track the latest serial number on this connection for ACK packet
43159 * information */
43160 @@ -74595,9 +74402,9 @@ diff -urNp linux-3.0.9/net/rxrpc/ar-input.c linux-3.0.9/net/rxrpc/ar-input.c
43161 serial);
43162
43163 /* request ACK generation for any ACK or DATA packet that requests
43164 -diff -urNp linux-3.0.9/net/rxrpc/ar-internal.h linux-3.0.9/net/rxrpc/ar-internal.h
43165 ---- linux-3.0.9/net/rxrpc/ar-internal.h 2011-11-11 13:12:24.000000000 -0500
43166 -+++ linux-3.0.9/net/rxrpc/ar-internal.h 2011-11-15 20:03:00.000000000 -0500
43167 +diff -urNp linux-3.1.1/net/rxrpc/ar-internal.h linux-3.1.1/net/rxrpc/ar-internal.h
43168 +--- linux-3.1.1/net/rxrpc/ar-internal.h 2011-11-11 15:19:27.000000000 -0500
43169 ++++ linux-3.1.1/net/rxrpc/ar-internal.h 2011-11-16 18:39:08.000000000 -0500
43170 @@ -272,8 +272,8 @@ struct rxrpc_connection {
43171 int error; /* error code for local abort */
43172 int debug_id; /* debug ID for printks */
43173 @@ -74627,9 +74434,9 @@ diff -urNp linux-3.0.9/net/rxrpc/ar-internal.h linux-3.0.9/net/rxrpc/ar-internal
43174 extern struct workqueue_struct *rxrpc_workqueue;
43175
43176 /*
43177 -diff -urNp linux-3.0.9/net/rxrpc/ar-local.c linux-3.0.9/net/rxrpc/ar-local.c
43178 ---- linux-3.0.9/net/rxrpc/ar-local.c 2011-11-11 13:12:24.000000000 -0500
43179 -+++ linux-3.0.9/net/rxrpc/ar-local.c 2011-11-15 20:03:00.000000000 -0500
43180 +diff -urNp linux-3.1.1/net/rxrpc/ar-local.c linux-3.1.1/net/rxrpc/ar-local.c
43181 +--- linux-3.1.1/net/rxrpc/ar-local.c 2011-11-11 15:19:27.000000000 -0500
43182 ++++ linux-3.1.1/net/rxrpc/ar-local.c 2011-11-16 18:39:08.000000000 -0500
43183 @@ -45,7 +45,7 @@ struct rxrpc_local *rxrpc_alloc_local(st
43184 spin_lock_init(&local->lock);
43185 rwlock_init(&local->services_lock);
43186 @@ -74639,9 +74446,9 @@ diff -urNp linux-3.0.9/net/rxrpc/ar-local.c linux-3.0.9/net/rxrpc/ar-local.c
43187 memcpy(&local->srx, srx, sizeof(*srx));
43188 }
43189
43190 -diff -urNp linux-3.0.9/net/rxrpc/ar-output.c linux-3.0.9/net/rxrpc/ar-output.c
43191 ---- linux-3.0.9/net/rxrpc/ar-output.c 2011-11-11 13:12:24.000000000 -0500
43192 -+++ linux-3.0.9/net/rxrpc/ar-output.c 2011-11-15 20:03:00.000000000 -0500
43193 +diff -urNp linux-3.1.1/net/rxrpc/ar-output.c linux-3.1.1/net/rxrpc/ar-output.c
43194 +--- linux-3.1.1/net/rxrpc/ar-output.c 2011-11-11 15:19:27.000000000 -0500
43195 ++++ linux-3.1.1/net/rxrpc/ar-output.c 2011-11-16 18:39:08.000000000 -0500
43196 @@ -681,9 +681,9 @@ static int rxrpc_send_data(struct kiocb
43197 sp->hdr.cid = call->cid;
43198 sp->hdr.callNumber = call->call_id;
43199 @@ -74654,9 +74461,9 @@ diff -urNp linux-3.0.9/net/rxrpc/ar-output.c linux-3.0.9/net/rxrpc/ar-output.c
43200 sp->hdr.type = RXRPC_PACKET_TYPE_DATA;
43201 sp->hdr.userStatus = 0;
43202 sp->hdr.securityIndex = conn->security_ix;
43203 -diff -urNp linux-3.0.9/net/rxrpc/ar-peer.c linux-3.0.9/net/rxrpc/ar-peer.c
43204 ---- linux-3.0.9/net/rxrpc/ar-peer.c 2011-11-11 13:12:24.000000000 -0500
43205 -+++ linux-3.0.9/net/rxrpc/ar-peer.c 2011-11-15 20:03:00.000000000 -0500
43206 +diff -urNp linux-3.1.1/net/rxrpc/ar-peer.c linux-3.1.1/net/rxrpc/ar-peer.c
43207 +--- linux-3.1.1/net/rxrpc/ar-peer.c 2011-11-11 15:19:27.000000000 -0500
43208 ++++ linux-3.1.1/net/rxrpc/ar-peer.c 2011-11-16 18:39:08.000000000 -0500
43209 @@ -72,7 +72,7 @@ static struct rxrpc_peer *rxrpc_alloc_pe
43210 INIT_LIST_HEAD(&peer->error_targets);
43211 spin_lock_init(&peer->lock);
43212 @@ -74666,9 +74473,9 @@ diff -urNp linux-3.0.9/net/rxrpc/ar-peer.c linux-3.0.9/net/rxrpc/ar-peer.c
43213 memcpy(&peer->srx, srx, sizeof(*srx));
43214
43215 rxrpc_assess_MTU_size(peer);
43216 -diff -urNp linux-3.0.9/net/rxrpc/ar-proc.c linux-3.0.9/net/rxrpc/ar-proc.c
43217 ---- linux-3.0.9/net/rxrpc/ar-proc.c 2011-11-11 13:12:24.000000000 -0500
43218 -+++ linux-3.0.9/net/rxrpc/ar-proc.c 2011-11-15 20:03:00.000000000 -0500
43219 +diff -urNp linux-3.1.1/net/rxrpc/ar-proc.c linux-3.1.1/net/rxrpc/ar-proc.c
43220 +--- linux-3.1.1/net/rxrpc/ar-proc.c 2011-11-11 15:19:27.000000000 -0500
43221 ++++ linux-3.1.1/net/rxrpc/ar-proc.c 2011-11-16 18:39:08.000000000 -0500
43222 @@ -164,8 +164,8 @@ static int rxrpc_connection_seq_show(str
43223 atomic_read(&conn->usage),
43224 rxrpc_conn_states[conn->state],
43225 @@ -74680,9 +74487,9 @@ diff -urNp linux-3.0.9/net/rxrpc/ar-proc.c linux-3.0.9/net/rxrpc/ar-proc.c
43226
43227 return 0;
43228 }
43229 -diff -urNp linux-3.0.9/net/rxrpc/ar-transport.c linux-3.0.9/net/rxrpc/ar-transport.c
43230 ---- linux-3.0.9/net/rxrpc/ar-transport.c 2011-11-11 13:12:24.000000000 -0500
43231 -+++ linux-3.0.9/net/rxrpc/ar-transport.c 2011-11-15 20:03:00.000000000 -0500
43232 +diff -urNp linux-3.1.1/net/rxrpc/ar-transport.c linux-3.1.1/net/rxrpc/ar-transport.c
43233 +--- linux-3.1.1/net/rxrpc/ar-transport.c 2011-11-11 15:19:27.000000000 -0500
43234 ++++ linux-3.1.1/net/rxrpc/ar-transport.c 2011-11-16 18:39:08.000000000 -0500
43235 @@ -47,7 +47,7 @@ static struct rxrpc_transport *rxrpc_all
43236 spin_lock_init(&trans->client_lock);
43237 rwlock_init(&trans->conn_lock);
43238 @@ -74692,9 +74499,9 @@ diff -urNp linux-3.0.9/net/rxrpc/ar-transport.c linux-3.0.9/net/rxrpc/ar-transpo
43239
43240 if (peer->srx.transport.family == AF_INET) {
43241 switch (peer->srx.transport_type) {
43242 -diff -urNp linux-3.0.9/net/rxrpc/rxkad.c linux-3.0.9/net/rxrpc/rxkad.c
43243 ---- linux-3.0.9/net/rxrpc/rxkad.c 2011-11-11 13:12:24.000000000 -0500
43244 -+++ linux-3.0.9/net/rxrpc/rxkad.c 2011-11-15 20:03:00.000000000 -0500
43245 +diff -urNp linux-3.1.1/net/rxrpc/rxkad.c linux-3.1.1/net/rxrpc/rxkad.c
43246 +--- linux-3.1.1/net/rxrpc/rxkad.c 2011-11-11 15:19:27.000000000 -0500
43247 ++++ linux-3.1.1/net/rxrpc/rxkad.c 2011-11-16 18:40:44.000000000 -0500
43248 @@ -211,6 +211,8 @@ static int rxkad_secure_packet_encrypt(c
43249 u16 check;
43250 int nsg;
43251 @@ -74731,9 +74538,9 @@ diff -urNp linux-3.0.9/net/rxrpc/rxkad.c linux-3.0.9/net/rxrpc/rxkad.c
43252 _proto("Tx RESPONSE %%%u", ntohl(hdr->serial));
43253
43254 ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 3, len);
43255 -diff -urNp linux-3.0.9/net/sctp/proc.c linux-3.0.9/net/sctp/proc.c
43256 ---- linux-3.0.9/net/sctp/proc.c 2011-11-11 13:12:24.000000000 -0500
43257 -+++ linux-3.0.9/net/sctp/proc.c 2011-11-15 20:03:00.000000000 -0500
43258 +diff -urNp linux-3.1.1/net/sctp/proc.c linux-3.1.1/net/sctp/proc.c
43259 +--- linux-3.1.1/net/sctp/proc.c 2011-11-11 15:19:27.000000000 -0500
43260 ++++ linux-3.1.1/net/sctp/proc.c 2011-11-16 18:40:44.000000000 -0500
43261 @@ -318,7 +318,8 @@ static int sctp_assocs_seq_show(struct s
43262 seq_printf(seq,
43263 "%8pK %8pK %-3d %-3d %-2d %-4d "
43264 @@ -74744,10 +74551,10 @@ diff -urNp linux-3.0.9/net/sctp/proc.c linux-3.0.9/net/sctp/proc.c
43265 assoc->state, hash,
43266 assoc->assoc_id,
43267 assoc->sndbuf_used,
43268 -diff -urNp linux-3.0.9/net/sctp/socket.c linux-3.0.9/net/sctp/socket.c
43269 ---- linux-3.0.9/net/sctp/socket.c 2011-11-11 13:12:24.000000000 -0500
43270 -+++ linux-3.0.9/net/sctp/socket.c 2011-11-15 20:03:00.000000000 -0500
43271 -@@ -4452,7 +4452,7 @@ static int sctp_getsockopt_peer_addrs(st
43272 +diff -urNp linux-3.1.1/net/sctp/socket.c linux-3.1.1/net/sctp/socket.c
43273 +--- linux-3.1.1/net/sctp/socket.c 2011-11-11 15:19:27.000000000 -0500
43274 ++++ linux-3.1.1/net/sctp/socket.c 2011-11-16 18:39:08.000000000 -0500
43275 +@@ -4575,7 +4575,7 @@ static int sctp_getsockopt_peer_addrs(st
43276 addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len;
43277 if (space_left < addrlen)
43278 return -ENOMEM;
43279 @@ -74756,9 +74563,9 @@ diff -urNp linux-3.0.9/net/sctp/socket.c linux-3.0.9/net/sctp/socket.c
43280 return -EFAULT;
43281 to += addrlen;
43282 cnt++;
43283 -diff -urNp linux-3.0.9/net/socket.c linux-3.0.9/net/socket.c
43284 ---- linux-3.0.9/net/socket.c 2011-11-11 13:12:24.000000000 -0500
43285 -+++ linux-3.0.9/net/socket.c 2011-11-15 20:03:00.000000000 -0500
43286 +diff -urNp linux-3.1.1/net/socket.c linux-3.1.1/net/socket.c
43287 +--- linux-3.1.1/net/socket.c 2011-11-11 15:19:27.000000000 -0500
43288 ++++ linux-3.1.1/net/socket.c 2011-11-16 18:40:44.000000000 -0500
43289 @@ -88,6 +88,7 @@
43290 #include <linux/nsproxy.h>
43291 #include <linux/magic.h>
43292 @@ -75026,10 +74833,10 @@ diff -urNp linux-3.0.9/net/socket.c linux-3.0.9/net/socket.c
43293
43294 set_fs(KERNEL_DS);
43295 if (level == SOL_SOCKET)
43296 -diff -urNp linux-3.0.9/net/sunrpc/sched.c linux-3.0.9/net/sunrpc/sched.c
43297 ---- linux-3.0.9/net/sunrpc/sched.c 2011-11-11 13:12:24.000000000 -0500
43298 -+++ linux-3.0.9/net/sunrpc/sched.c 2011-11-15 20:03:00.000000000 -0500
43299 -@@ -234,9 +234,9 @@ static int rpc_wait_bit_killable(void *w
43300 +diff -urNp linux-3.1.1/net/sunrpc/sched.c linux-3.1.1/net/sunrpc/sched.c
43301 +--- linux-3.1.1/net/sunrpc/sched.c 2011-11-11 15:19:27.000000000 -0500
43302 ++++ linux-3.1.1/net/sunrpc/sched.c 2011-11-16 18:39:08.000000000 -0500
43303 +@@ -238,9 +238,9 @@ static int rpc_wait_bit_killable(void *w
43304 #ifdef RPC_DEBUG
43305 static void rpc_task_set_debuginfo(struct rpc_task *task)
43306 {
43307 @@ -75041,10 +74848,10 @@ diff -urNp linux-3.0.9/net/sunrpc/sched.c linux-3.0.9/net/sunrpc/sched.c
43308 }
43309 #else
43310 static inline void rpc_task_set_debuginfo(struct rpc_task *task)
43311 -diff -urNp linux-3.0.9/net/sunrpc/svcsock.c linux-3.0.9/net/sunrpc/svcsock.c
43312 ---- linux-3.0.9/net/sunrpc/svcsock.c 2011-11-11 13:12:24.000000000 -0500
43313 -+++ linux-3.0.9/net/sunrpc/svcsock.c 2011-11-15 20:03:00.000000000 -0500
43314 -@@ -392,7 +392,7 @@ static int svc_partial_recvfrom(struct s
43315 +diff -urNp linux-3.1.1/net/sunrpc/svcsock.c linux-3.1.1/net/sunrpc/svcsock.c
43316 +--- linux-3.1.1/net/sunrpc/svcsock.c 2011-11-11 15:19:27.000000000 -0500
43317 ++++ linux-3.1.1/net/sunrpc/svcsock.c 2011-11-16 18:39:08.000000000 -0500
43318 +@@ -394,7 +394,7 @@ static int svc_partial_recvfrom(struct s
43319 int buflen, unsigned int base)
43320 {
43321 size_t save_iovlen;
43322 @@ -75053,9 +74860,9 @@ diff -urNp linux-3.0.9/net/sunrpc/svcsock.c linux-3.0.9/net/sunrpc/svcsock.c
43323 unsigned int i;
43324 int ret;
43325
43326 -diff -urNp linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma.c linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma.c
43327 ---- linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma.c 2011-11-11 13:12:24.000000000 -0500
43328 -+++ linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma.c 2011-11-15 20:03:00.000000000 -0500
43329 +diff -urNp linux-3.1.1/net/sunrpc/xprtrdma/svc_rdma.c linux-3.1.1/net/sunrpc/xprtrdma/svc_rdma.c
43330 +--- linux-3.1.1/net/sunrpc/xprtrdma/svc_rdma.c 2011-11-11 15:19:27.000000000 -0500
43331 ++++ linux-3.1.1/net/sunrpc/xprtrdma/svc_rdma.c 2011-11-16 18:39:08.000000000 -0500
43332 @@ -61,15 +61,15 @@ unsigned int svcrdma_max_req_size = RPCR
43333 static unsigned int min_max_inline = 4096;
43334 static unsigned int max_max_inline = 65536;
43335 @@ -75163,9 +74970,9 @@ diff -urNp linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma.c linux-3.0.9/net/sunrpc/xpr
43336 .mode = 0644,
43337 .proc_handler = read_reset_stat,
43338 },
43339 -diff -urNp linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
43340 ---- linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c 2011-11-11 13:12:24.000000000 -0500
43341 -+++ linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c 2011-11-15 20:03:00.000000000 -0500
43342 +diff -urNp linux-3.1.1/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c linux-3.1.1/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
43343 +--- linux-3.1.1/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c 2011-11-11 15:19:27.000000000 -0500
43344 ++++ linux-3.1.1/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c 2011-11-16 18:39:08.000000000 -0500
43345 @@ -499,7 +499,7 @@ next_sge:
43346 svc_rdma_put_context(ctxt, 0);
43347 goto out;
43348 @@ -75193,9 +75000,9 @@ diff -urNp linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c linux-3.0.9/net/s
43349
43350 /* Build up the XDR from the receive buffers. */
43351 rdma_build_arg_xdr(rqstp, ctxt, ctxt->byte_len);
43352 -diff -urNp linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma_sendto.c linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma_sendto.c
43353 ---- linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma_sendto.c 2011-11-11 13:12:24.000000000 -0500
43354 -+++ linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma_sendto.c 2011-11-15 20:03:00.000000000 -0500
43355 +diff -urNp linux-3.1.1/net/sunrpc/xprtrdma/svc_rdma_sendto.c linux-3.1.1/net/sunrpc/xprtrdma/svc_rdma_sendto.c
43356 +--- linux-3.1.1/net/sunrpc/xprtrdma/svc_rdma_sendto.c 2011-11-11 15:19:27.000000000 -0500
43357 ++++ linux-3.1.1/net/sunrpc/xprtrdma/svc_rdma_sendto.c 2011-11-16 18:39:08.000000000 -0500
43358 @@ -362,7 +362,7 @@ static int send_write(struct svcxprt_rdm
43359 write_wr.wr.rdma.remote_addr = to;
43360
43361 @@ -75205,10 +75012,10 @@ diff -urNp linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma_sendto.c linux-3.0.9/net/sun
43362 if (svc_rdma_send(xprt, &write_wr))
43363 goto err;
43364 return 0;
43365 -diff -urNp linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma_transport.c linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma_transport.c
43366 ---- linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma_transport.c 2011-11-11 13:12:24.000000000 -0500
43367 -+++ linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma_transport.c 2011-11-15 20:03:00.000000000 -0500
43368 -@@ -298,7 +298,7 @@ static void rq_cq_reap(struct svcxprt_rd
43369 +diff -urNp linux-3.1.1/net/sunrpc/xprtrdma/svc_rdma_transport.c linux-3.1.1/net/sunrpc/xprtrdma/svc_rdma_transport.c
43370 +--- linux-3.1.1/net/sunrpc/xprtrdma/svc_rdma_transport.c 2011-11-11 15:19:27.000000000 -0500
43371 ++++ linux-3.1.1/net/sunrpc/xprtrdma/svc_rdma_transport.c 2011-11-16 18:39:08.000000000 -0500
43372 +@@ -299,7 +299,7 @@ static void rq_cq_reap(struct svcxprt_rd
43373 return;
43374
43375 ib_req_notify_cq(xprt->sc_rq_cq, IB_CQ_NEXT_COMP);
43376 @@ -75217,7 +75024,7 @@ diff -urNp linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma_transport.c linux-3.0.9/net/
43377
43378 while ((ret = ib_poll_cq(xprt->sc_rq_cq, 1, &wc)) > 0) {
43379 ctxt = (struct svc_rdma_op_ctxt *)(unsigned long)wc.wr_id;
43380 -@@ -320,7 +320,7 @@ static void rq_cq_reap(struct svcxprt_rd
43381 +@@ -321,7 +321,7 @@ static void rq_cq_reap(struct svcxprt_rd
43382 }
43383
43384 if (ctxt)
43385 @@ -75226,7 +75033,7 @@ diff -urNp linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma_transport.c linux-3.0.9/net/
43386
43387 set_bit(XPT_DATA, &xprt->sc_xprt.xpt_flags);
43388 /*
43389 -@@ -392,7 +392,7 @@ static void sq_cq_reap(struct svcxprt_rd
43390 +@@ -393,7 +393,7 @@ static void sq_cq_reap(struct svcxprt_rd
43391 return;
43392
43393 ib_req_notify_cq(xprt->sc_sq_cq, IB_CQ_NEXT_COMP);
43394 @@ -75235,7 +75042,7 @@ diff -urNp linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma_transport.c linux-3.0.9/net/
43395 while ((ret = ib_poll_cq(cq, 1, &wc)) > 0) {
43396 if (wc.status != IB_WC_SUCCESS)
43397 /* Close the transport */
43398 -@@ -410,7 +410,7 @@ static void sq_cq_reap(struct svcxprt_rd
43399 +@@ -411,7 +411,7 @@ static void sq_cq_reap(struct svcxprt_rd
43400 }
43401
43402 if (ctxt)
43403 @@ -75244,7 +75051,7 @@ diff -urNp linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma_transport.c linux-3.0.9/net/
43404 }
43405
43406 static void sq_comp_handler(struct ib_cq *cq, void *cq_context)
43407 -@@ -1272,7 +1272,7 @@ int svc_rdma_send(struct svcxprt_rdma *x
43408 +@@ -1273,7 +1273,7 @@ int svc_rdma_send(struct svcxprt_rdma *x
43409 spin_lock_bh(&xprt->sc_lock);
43410 if (xprt->sc_sq_depth < atomic_read(&xprt->sc_sq_count) + wr_count) {
43411 spin_unlock_bh(&xprt->sc_lock);
43412 @@ -75253,9 +75060,9 @@ diff -urNp linux-3.0.9/net/sunrpc/xprtrdma/svc_rdma_transport.c linux-3.0.9/net/
43413
43414 /* See if we can opportunistically reap SQ WR to make room */
43415 sq_cq_reap(xprt);
43416 -diff -urNp linux-3.0.9/net/sysctl_net.c linux-3.0.9/net/sysctl_net.c
43417 ---- linux-3.0.9/net/sysctl_net.c 2011-11-11 13:12:24.000000000 -0500
43418 -+++ linux-3.0.9/net/sysctl_net.c 2011-11-15 20:03:00.000000000 -0500
43419 +diff -urNp linux-3.1.1/net/sysctl_net.c linux-3.1.1/net/sysctl_net.c
43420 +--- linux-3.1.1/net/sysctl_net.c 2011-11-11 15:19:27.000000000 -0500
43421 ++++ linux-3.1.1/net/sysctl_net.c 2011-11-16 18:40:44.000000000 -0500
43422 @@ -46,7 +46,7 @@ static int net_ctl_permissions(struct ct
43423 struct ctl_table *table)
43424 {
43425 @@ -75265,9 +75072,9 @@ diff -urNp linux-3.0.9/net/sysctl_net.c linux-3.0.9/net/sysctl_net.c
43426 int mode = (table->mode >> 6) & 7;
43427 return (mode << 6) | (mode << 3) | mode;
43428 }
43429 -diff -urNp linux-3.0.9/net/tipc/link.c linux-3.0.9/net/tipc/link.c
43430 ---- linux-3.0.9/net/tipc/link.c 2011-11-11 13:12:24.000000000 -0500
43431 -+++ linux-3.0.9/net/tipc/link.c 2011-11-15 20:03:00.000000000 -0500
43432 +diff -urNp linux-3.1.1/net/tipc/link.c linux-3.1.1/net/tipc/link.c
43433 +--- linux-3.1.1/net/tipc/link.c 2011-11-11 15:19:27.000000000 -0500
43434 ++++ linux-3.1.1/net/tipc/link.c 2011-11-16 18:39:08.000000000 -0500
43435 @@ -1170,7 +1170,7 @@ static int link_send_sections_long(struc
43436 struct tipc_msg fragm_hdr;
43437 struct sk_buff *buf, *buf_chain, *prev;
43438 @@ -75295,10 +75102,10 @@ diff -urNp linux-3.0.9/net/tipc/link.c linux-3.0.9/net/tipc/link.c
43439 sect_crs += sz;
43440 sect_rest -= sz;
43441 fragm_crs += sz;
43442 -diff -urNp linux-3.0.9/net/tipc/msg.c linux-3.0.9/net/tipc/msg.c
43443 ---- linux-3.0.9/net/tipc/msg.c 2011-11-11 13:12:24.000000000 -0500
43444 -+++ linux-3.0.9/net/tipc/msg.c 2011-11-15 20:03:00.000000000 -0500
43445 -@@ -101,7 +101,7 @@ int tipc_msg_build(struct tipc_msg *hdr,
43446 +diff -urNp linux-3.1.1/net/tipc/msg.c linux-3.1.1/net/tipc/msg.c
43447 +--- linux-3.1.1/net/tipc/msg.c 2011-11-11 15:19:27.000000000 -0500
43448 ++++ linux-3.1.1/net/tipc/msg.c 2011-11-16 18:39:08.000000000 -0500
43449 +@@ -99,7 +99,7 @@ int tipc_msg_build(struct tipc_msg *hdr,
43450 msg_sect[cnt].iov_len);
43451 else
43452 skb_copy_to_linear_data_offset(*buf, pos,
43453 @@ -75307,9 +75114,9 @@ diff -urNp linux-3.0.9/net/tipc/msg.c linux-3.0.9/net/tipc/msg.c
43454 msg_sect[cnt].iov_len);
43455 pos += msg_sect[cnt].iov_len;
43456 }
43457 -diff -urNp linux-3.0.9/net/tipc/subscr.c linux-3.0.9/net/tipc/subscr.c
43458 ---- linux-3.0.9/net/tipc/subscr.c 2011-11-11 13:12:24.000000000 -0500
43459 -+++ linux-3.0.9/net/tipc/subscr.c 2011-11-15 20:03:00.000000000 -0500
43460 +diff -urNp linux-3.1.1/net/tipc/subscr.c linux-3.1.1/net/tipc/subscr.c
43461 +--- linux-3.1.1/net/tipc/subscr.c 2011-11-11 15:19:27.000000000 -0500
43462 ++++ linux-3.1.1/net/tipc/subscr.c 2011-11-16 18:39:08.000000000 -0500
43463 @@ -101,7 +101,7 @@ static void subscr_send_event(struct sub
43464 {
43465 struct iovec msg_sect;
43466 @@ -75319,9 +75126,9 @@ diff -urNp linux-3.0.9/net/tipc/subscr.c linux-3.0.9/net/tipc/subscr.c
43467 msg_sect.iov_len = sizeof(struct tipc_event);
43468
43469 sub->evt.event = htohl(event, sub->swap);
43470 -diff -urNp linux-3.0.9/net/unix/af_unix.c linux-3.0.9/net/unix/af_unix.c
43471 ---- linux-3.0.9/net/unix/af_unix.c 2011-11-11 13:12:24.000000000 -0500
43472 -+++ linux-3.0.9/net/unix/af_unix.c 2011-11-15 20:03:00.000000000 -0500
43473 +diff -urNp linux-3.1.1/net/unix/af_unix.c linux-3.1.1/net/unix/af_unix.c
43474 +--- linux-3.1.1/net/unix/af_unix.c 2011-11-11 15:19:27.000000000 -0500
43475 ++++ linux-3.1.1/net/unix/af_unix.c 2011-11-16 19:17:17.000000000 -0500
43476 @@ -767,6 +767,12 @@ static struct sock *unix_find_other(stru
43477 err = -ECONNREFUSED;
43478 if (!S_ISSOCK(inode->i_mode))
43479 @@ -75349,28 +75156,28 @@ diff -urNp linux-3.0.9/net/unix/af_unix.c linux-3.0.9/net/unix/af_unix.c
43480 if (dentry)
43481 touch_atime(unix_sk(u)->mnt, dentry);
43482 } else
43483 -@@ -872,11 +885,18 @@ static int unix_bind(struct socket *sock
43484 - err = security_path_mknod(&nd.path, dentry, mode, 0);
43485 +@@ -869,11 +882,18 @@ static int unix_bind(struct socket *sock
43486 + err = security_path_mknod(&path, dentry, mode, 0);
43487 if (err)
43488 goto out_mknod_drop_write;
43489 -+ if (!gr_acl_handle_mknod(dentry, nd.path.dentry, nd.path.mnt, mode)) {
43490 ++ if (!gr_acl_handle_mknod(dentry, path.dentry, path.mnt, mode)) {
43491 + err = -EACCES;
43492 + goto out_mknod_drop_write;
43493 + }
43494 - err = vfs_mknod(nd.path.dentry->d_inode, dentry, mode, 0);
43495 + err = vfs_mknod(path.dentry->d_inode, dentry, mode, 0);
43496 out_mknod_drop_write:
43497 - mnt_drop_write(nd.path.mnt);
43498 + mnt_drop_write(path.mnt);
43499 if (err)
43500 goto out_mknod_dput;
43501 +
43502 -+ gr_handle_create(dentry, nd.path.mnt);
43503 ++ gr_handle_create(dentry, path.mnt);
43504 +
43505 - mutex_unlock(&nd.path.dentry->d_inode->i_mutex);
43506 - dput(nd.path.dentry);
43507 - nd.path.dentry = dentry;
43508 -diff -urNp linux-3.0.9/net/wireless/core.h linux-3.0.9/net/wireless/core.h
43509 ---- linux-3.0.9/net/wireless/core.h 2011-11-11 13:12:24.000000000 -0500
43510 -+++ linux-3.0.9/net/wireless/core.h 2011-11-15 20:03:00.000000000 -0500
43511 + mutex_unlock(&path.dentry->d_inode->i_mutex);
43512 + dput(path.dentry);
43513 + path.dentry = dentry;
43514 +diff -urNp linux-3.1.1/net/wireless/core.h linux-3.1.1/net/wireless/core.h
43515 +--- linux-3.1.1/net/wireless/core.h 2011-11-11 15:19:27.000000000 -0500
43516 ++++ linux-3.1.1/net/wireless/core.h 2011-11-16 18:39:08.000000000 -0500
43517 @@ -27,7 +27,7 @@ struct cfg80211_registered_device {
43518 struct mutex mtx;
43519
43520 @@ -75380,9 +75187,9 @@ diff -urNp linux-3.0.9/net/wireless/core.h linux-3.0.9/net/wireless/core.h
43521 struct rfkill *rfkill;
43522 struct work_struct rfkill_sync;
43523
43524 -diff -urNp linux-3.0.9/net/wireless/wext-core.c linux-3.0.9/net/wireless/wext-core.c
43525 ---- linux-3.0.9/net/wireless/wext-core.c 2011-11-11 13:12:24.000000000 -0500
43526 -+++ linux-3.0.9/net/wireless/wext-core.c 2011-11-15 20:03:00.000000000 -0500
43527 +diff -urNp linux-3.1.1/net/wireless/wext-core.c linux-3.1.1/net/wireless/wext-core.c
43528 +--- linux-3.1.1/net/wireless/wext-core.c 2011-11-11 15:19:27.000000000 -0500
43529 ++++ linux-3.1.1/net/wireless/wext-core.c 2011-11-16 18:39:08.000000000 -0500
43530 @@ -746,8 +746,7 @@ static int ioctl_standard_iw_point(struc
43531 */
43532
43533 @@ -75416,9 +75223,9 @@ diff -urNp linux-3.0.9/net/wireless/wext-core.c linux-3.0.9/net/wireless/wext-co
43534 err = handler(dev, info, (union iwreq_data *) iwp, extra);
43535
43536 iwp->length += essid_compat;
43537 -diff -urNp linux-3.0.9/net/xfrm/xfrm_policy.c linux-3.0.9/net/xfrm/xfrm_policy.c
43538 ---- linux-3.0.9/net/xfrm/xfrm_policy.c 2011-11-11 13:12:24.000000000 -0500
43539 -+++ linux-3.0.9/net/xfrm/xfrm_policy.c 2011-11-15 20:03:00.000000000 -0500
43540 +diff -urNp linux-3.1.1/net/xfrm/xfrm_policy.c linux-3.1.1/net/xfrm/xfrm_policy.c
43541 +--- linux-3.1.1/net/xfrm/xfrm_policy.c 2011-11-11 15:19:27.000000000 -0500
43542 ++++ linux-3.1.1/net/xfrm/xfrm_policy.c 2011-11-16 18:39:08.000000000 -0500
43543 @@ -299,7 +299,7 @@ static void xfrm_policy_kill(struct xfrm
43544 {
43545 policy->walk.dead = 1;
43546 @@ -75437,7 +75244,7 @@ diff -urNp linux-3.0.9/net/xfrm/xfrm_policy.c linux-3.0.9/net/xfrm/xfrm_policy.c
43547 if (delpol)
43548 __xfrm_policy_unlink(delpol, dir);
43549 policy->index = delpol ? delpol->index : xfrm_gen_index(net, dir);
43550 -@@ -1528,7 +1528,7 @@ free_dst:
43551 +@@ -1530,7 +1530,7 @@ free_dst:
43552 goto out;
43553 }
43554
43555 @@ -75446,7 +75253,7 @@ diff -urNp linux-3.0.9/net/xfrm/xfrm_policy.c linux-3.0.9/net/xfrm/xfrm_policy.c
43556 xfrm_dst_alloc_copy(void **target, const void *src, int size)
43557 {
43558 if (!*target) {
43559 -@@ -1540,7 +1540,7 @@ xfrm_dst_alloc_copy(void **target, const
43560 +@@ -1542,7 +1542,7 @@ xfrm_dst_alloc_copy(void **target, const
43561 return 0;
43562 }
43563
43564 @@ -75455,7 +75262,7 @@ diff -urNp linux-3.0.9/net/xfrm/xfrm_policy.c linux-3.0.9/net/xfrm/xfrm_policy.c
43565 xfrm_dst_update_parent(struct dst_entry *dst, const struct xfrm_selector *sel)
43566 {
43567 #ifdef CONFIG_XFRM_SUB_POLICY
43568 -@@ -1552,7 +1552,7 @@ xfrm_dst_update_parent(struct dst_entry
43569 +@@ -1554,7 +1554,7 @@ xfrm_dst_update_parent(struct dst_entry
43570 #endif
43571 }
43572
43573 @@ -75464,7 +75271,7 @@ diff -urNp linux-3.0.9/net/xfrm/xfrm_policy.c linux-3.0.9/net/xfrm/xfrm_policy.c
43574 xfrm_dst_update_origin(struct dst_entry *dst, const struct flowi *fl)
43575 {
43576 #ifdef CONFIG_XFRM_SUB_POLICY
43577 -@@ -1646,7 +1646,7 @@ xfrm_resolve_and_create_bundle(struct xf
43578 +@@ -1648,7 +1648,7 @@ xfrm_resolve_and_create_bundle(struct xf
43579
43580 xdst->num_pols = num_pols;
43581 memcpy(xdst->pols, pols, sizeof(struct xfrm_policy*) * num_pols);
43582 @@ -75473,7 +75280,7 @@ diff -urNp linux-3.0.9/net/xfrm/xfrm_policy.c linux-3.0.9/net/xfrm/xfrm_policy.c
43583
43584 return xdst;
43585 }
43586 -@@ -2333,7 +2333,7 @@ static int xfrm_bundle_ok(struct xfrm_ds
43587 +@@ -2335,7 +2335,7 @@ static int xfrm_bundle_ok(struct xfrm_ds
43588 if (xdst->xfrm_genid != dst->xfrm->genid)
43589 return 0;
43590 if (xdst->num_pols > 0 &&
43591 @@ -75482,7 +75289,7 @@ diff -urNp linux-3.0.9/net/xfrm/xfrm_policy.c linux-3.0.9/net/xfrm/xfrm_policy.c
43592 return 0;
43593
43594 mtu = dst_mtu(dst->child);
43595 -@@ -2861,7 +2861,7 @@ static int xfrm_policy_migrate(struct xf
43596 +@@ -2870,7 +2870,7 @@ static int xfrm_policy_migrate(struct xf
43597 sizeof(pol->xfrm_vec[i].saddr));
43598 pol->xfrm_vec[i].encap_family = mp->new_family;
43599 /* flush bundles */
43600 @@ -75491,9 +75298,9 @@ diff -urNp linux-3.0.9/net/xfrm/xfrm_policy.c linux-3.0.9/net/xfrm/xfrm_policy.c
43601 }
43602 }
43603
43604 -diff -urNp linux-3.0.9/net/xfrm/xfrm_user.c linux-3.0.9/net/xfrm/xfrm_user.c
43605 ---- linux-3.0.9/net/xfrm/xfrm_user.c 2011-11-11 13:12:24.000000000 -0500
43606 -+++ linux-3.0.9/net/xfrm/xfrm_user.c 2011-11-15 20:03:00.000000000 -0500
43607 +diff -urNp linux-3.1.1/net/xfrm/xfrm_user.c linux-3.1.1/net/xfrm/xfrm_user.c
43608 +--- linux-3.1.1/net/xfrm/xfrm_user.c 2011-11-11 15:19:27.000000000 -0500
43609 ++++ linux-3.1.1/net/xfrm/xfrm_user.c 2011-11-16 18:40:44.000000000 -0500
43610 @@ -1394,6 +1394,8 @@ static int copy_to_user_tmpl(struct xfrm
43611 struct xfrm_user_tmpl vec[XFRM_MAX_DEPTH];
43612 int i;
43613 @@ -75512,9 +75319,9 @@ diff -urNp linux-3.0.9/net/xfrm/xfrm_user.c linux-3.0.9/net/xfrm/xfrm_user.c
43614 if (attrs[XFRMA_MIGRATE] == NULL)
43615 return -EINVAL;
43616
43617 -diff -urNp linux-3.0.9/scripts/basic/fixdep.c linux-3.0.9/scripts/basic/fixdep.c
43618 ---- linux-3.0.9/scripts/basic/fixdep.c 2011-11-11 13:12:24.000000000 -0500
43619 -+++ linux-3.0.9/scripts/basic/fixdep.c 2011-11-15 20:03:00.000000000 -0500
43620 +diff -urNp linux-3.1.1/scripts/basic/fixdep.c linux-3.1.1/scripts/basic/fixdep.c
43621 +--- linux-3.1.1/scripts/basic/fixdep.c 2011-11-11 15:19:27.000000000 -0500
43622 ++++ linux-3.1.1/scripts/basic/fixdep.c 2011-11-16 18:39:08.000000000 -0500
43623 @@ -161,7 +161,7 @@ static unsigned int strhash(const char *
43624 /*
43625 * Lookup a value in the configuration string.
43626 @@ -75558,15 +75365,15 @@ diff -urNp linux-3.0.9/scripts/basic/fixdep.c linux-3.0.9/scripts/basic/fixdep.c
43627
43628 if (*p != INT_CONF) {
43629 fprintf(stderr, "fixdep: sizeof(int) != 4 or wrong endianess? %#x\n",
43630 -diff -urNp linux-3.0.9/scripts/gcc-plugin.sh linux-3.0.9/scripts/gcc-plugin.sh
43631 ---- linux-3.0.9/scripts/gcc-plugin.sh 1969-12-31 19:00:00.000000000 -0500
43632 -+++ linux-3.0.9/scripts/gcc-plugin.sh 2011-11-15 20:03:00.000000000 -0500
43633 +diff -urNp linux-3.1.1/scripts/gcc-plugin.sh linux-3.1.1/scripts/gcc-plugin.sh
43634 +--- linux-3.1.1/scripts/gcc-plugin.sh 1969-12-31 19:00:00.000000000 -0500
43635 ++++ linux-3.1.1/scripts/gcc-plugin.sh 2011-11-16 18:39:08.000000000 -0500
43636 @@ -0,0 +1,2 @@
43637 +#!/bin/sh
43638 +echo "#include \"gcc-plugin.h\"\n#include \"rtl.h\"" | $1 -x c -shared - -o /dev/null -I`$2 -print-file-name=plugin`/include >/dev/null 2>&1 && echo "y"
43639 -diff -urNp linux-3.0.9/scripts/Makefile.build linux-3.0.9/scripts/Makefile.build
43640 ---- linux-3.0.9/scripts/Makefile.build 2011-11-11 13:12:24.000000000 -0500
43641 -+++ linux-3.0.9/scripts/Makefile.build 2011-11-15 20:03:00.000000000 -0500
43642 +diff -urNp linux-3.1.1/scripts/Makefile.build linux-3.1.1/scripts/Makefile.build
43643 +--- linux-3.1.1/scripts/Makefile.build 2011-11-11 15:19:27.000000000 -0500
43644 ++++ linux-3.1.1/scripts/Makefile.build 2011-11-16 18:40:44.000000000 -0500
43645 @@ -109,7 +109,7 @@ endif
43646 endif
43647
43648 @@ -75576,9 +75383,9 @@ diff -urNp linux-3.0.9/scripts/Makefile.build linux-3.0.9/scripts/Makefile.build
43649 include scripts/Makefile.host
43650 endif
43651
43652 -diff -urNp linux-3.0.9/scripts/Makefile.clean linux-3.0.9/scripts/Makefile.clean
43653 ---- linux-3.0.9/scripts/Makefile.clean 2011-11-11 13:12:24.000000000 -0500
43654 -+++ linux-3.0.9/scripts/Makefile.clean 2011-11-15 20:03:00.000000000 -0500
43655 +diff -urNp linux-3.1.1/scripts/Makefile.clean linux-3.1.1/scripts/Makefile.clean
43656 +--- linux-3.1.1/scripts/Makefile.clean 2011-11-11 15:19:27.000000000 -0500
43657 ++++ linux-3.1.1/scripts/Makefile.clean 2011-11-16 18:39:08.000000000 -0500
43658 @@ -43,7 +43,8 @@ subdir-ymn := $(addprefix $(obj)/,$(subd
43659 __clean-files := $(extra-y) $(always) \
43660 $(targets) $(clean-files) \
43661 @@ -75589,9 +75396,9 @@ diff -urNp linux-3.0.9/scripts/Makefile.clean linux-3.0.9/scripts/Makefile.clean
43662
43663 __clean-files := $(filter-out $(no-clean-files), $(__clean-files))
43664
43665 -diff -urNp linux-3.0.9/scripts/Makefile.host linux-3.0.9/scripts/Makefile.host
43666 ---- linux-3.0.9/scripts/Makefile.host 2011-11-11 13:12:24.000000000 -0500
43667 -+++ linux-3.0.9/scripts/Makefile.host 2011-11-15 20:03:00.000000000 -0500
43668 +diff -urNp linux-3.1.1/scripts/Makefile.host linux-3.1.1/scripts/Makefile.host
43669 +--- linux-3.1.1/scripts/Makefile.host 2011-11-11 15:19:27.000000000 -0500
43670 ++++ linux-3.1.1/scripts/Makefile.host 2011-11-16 18:39:08.000000000 -0500
43671 @@ -31,6 +31,7 @@
43672 # Note: Shared libraries consisting of C++ files are not supported
43673
43674 @@ -75608,9 +75415,9 @@ diff -urNp linux-3.0.9/scripts/Makefile.host linux-3.0.9/scripts/Makefile.host
43675 # Remove .so files from "xxx-objs"
43676 host-cobjs := $(filter-out %.so,$(host-cobjs))
43677
43678 -diff -urNp linux-3.0.9/scripts/mod/file2alias.c linux-3.0.9/scripts/mod/file2alias.c
43679 ---- linux-3.0.9/scripts/mod/file2alias.c 2011-11-11 13:12:24.000000000 -0500
43680 -+++ linux-3.0.9/scripts/mod/file2alias.c 2011-11-15 20:03:00.000000000 -0500
43681 +diff -urNp linux-3.1.1/scripts/mod/file2alias.c linux-3.1.1/scripts/mod/file2alias.c
43682 +--- linux-3.1.1/scripts/mod/file2alias.c 2011-11-11 15:19:27.000000000 -0500
43683 ++++ linux-3.1.1/scripts/mod/file2alias.c 2011-11-16 18:39:08.000000000 -0500
43684 @@ -72,7 +72,7 @@ static void device_id_check(const char *
43685 unsigned long size, unsigned long id_size,
43686 void *symval)
43687 @@ -75674,10 +75481,10 @@ diff -urNp linux-3.0.9/scripts/mod/file2alias.c linux-3.0.9/scripts/mod/file2ali
43688
43689 sprintf(alias, "dmi*");
43690
43691 -diff -urNp linux-3.0.9/scripts/mod/modpost.c linux-3.0.9/scripts/mod/modpost.c
43692 ---- linux-3.0.9/scripts/mod/modpost.c 2011-11-11 13:12:24.000000000 -0500
43693 -+++ linux-3.0.9/scripts/mod/modpost.c 2011-11-15 20:03:00.000000000 -0500
43694 -@@ -892,6 +892,7 @@ enum mismatch {
43695 +diff -urNp linux-3.1.1/scripts/mod/modpost.c linux-3.1.1/scripts/mod/modpost.c
43696 +--- linux-3.1.1/scripts/mod/modpost.c 2011-11-11 15:19:27.000000000 -0500
43697 ++++ linux-3.1.1/scripts/mod/modpost.c 2011-11-16 18:39:08.000000000 -0500
43698 +@@ -919,6 +919,7 @@ enum mismatch {
43699 ANY_INIT_TO_ANY_EXIT,
43700 ANY_EXIT_TO_ANY_INIT,
43701 EXPORT_TO_INIT_EXIT,
43702 @@ -75685,7 +75492,7 @@ diff -urNp linux-3.0.9/scripts/mod/modpost.c linux-3.0.9/scripts/mod/modpost.c
43703 };
43704
43705 struct sectioncheck {
43706 -@@ -1000,6 +1001,12 @@ const struct sectioncheck sectioncheck[]
43707 +@@ -1027,6 +1028,12 @@ const struct sectioncheck sectioncheck[]
43708 .tosec = { INIT_SECTIONS, EXIT_SECTIONS, NULL },
43709 .mismatch = EXPORT_TO_INIT_EXIT,
43710 .symbol_white_list = { DEFAULT_SYMBOL_WHITE_LIST, NULL },
43711 @@ -75698,7 +75505,7 @@ diff -urNp linux-3.0.9/scripts/mod/modpost.c linux-3.0.9/scripts/mod/modpost.c
43712 }
43713 };
43714
43715 -@@ -1122,10 +1129,10 @@ static Elf_Sym *find_elf_symbol(struct e
43716 +@@ -1149,10 +1156,10 @@ static Elf_Sym *find_elf_symbol(struct e
43717 continue;
43718 if (ELF_ST_TYPE(sym->st_info) == STT_SECTION)
43719 continue;
43720 @@ -75711,7 +75518,7 @@ diff -urNp linux-3.0.9/scripts/mod/modpost.c linux-3.0.9/scripts/mod/modpost.c
43721 if (d < 0)
43722 d = addr - sym->st_value;
43723 if (d < distance) {
43724 -@@ -1404,6 +1411,14 @@ static void report_sec_mismatch(const ch
43725 +@@ -1431,6 +1438,14 @@ static void report_sec_mismatch(const ch
43726 tosym, prl_to, prl_to, tosym);
43727 free(prl_to);
43728 break;
43729 @@ -75726,7 +75533,7 @@ diff -urNp linux-3.0.9/scripts/mod/modpost.c linux-3.0.9/scripts/mod/modpost.c
43730 }
43731 fprintf(stderr, "\n");
43732 }
43733 -@@ -1629,7 +1644,7 @@ static void section_rel(const char *modn
43734 +@@ -1656,7 +1671,7 @@ static void section_rel(const char *modn
43735 static void check_sec_ref(struct module *mod, const char *modname,
43736 struct elf_info *elf)
43737 {
43738 @@ -75735,7 +75542,7 @@ diff -urNp linux-3.0.9/scripts/mod/modpost.c linux-3.0.9/scripts/mod/modpost.c
43739 Elf_Shdr *sechdrs = elf->sechdrs;
43740
43741 /* Walk through all sections */
43742 -@@ -1727,7 +1742,7 @@ void __attribute__((format(printf, 2, 3)
43743 +@@ -1754,7 +1769,7 @@ void __attribute__((format(printf, 2, 3)
43744 va_end(ap);
43745 }
43746
43747 @@ -75744,7 +75551,7 @@ diff -urNp linux-3.0.9/scripts/mod/modpost.c linux-3.0.9/scripts/mod/modpost.c
43748 {
43749 if (buf->size - buf->pos < len) {
43750 buf->size += len + SZ;
43751 -@@ -1939,7 +1954,7 @@ static void write_if_changed(struct buff
43752 +@@ -1966,7 +1981,7 @@ static void write_if_changed(struct buff
43753 if (fstat(fileno(file), &st) < 0)
43754 goto close_write;
43755
43756 @@ -75753,9 +75560,9 @@ diff -urNp linux-3.0.9/scripts/mod/modpost.c linux-3.0.9/scripts/mod/modpost.c
43757 goto close_write;
43758
43759 tmp = NOFAIL(malloc(b->pos));
43760 -diff -urNp linux-3.0.9/scripts/mod/modpost.h linux-3.0.9/scripts/mod/modpost.h
43761 ---- linux-3.0.9/scripts/mod/modpost.h 2011-11-11 13:12:24.000000000 -0500
43762 -+++ linux-3.0.9/scripts/mod/modpost.h 2011-11-15 20:03:00.000000000 -0500
43763 +diff -urNp linux-3.1.1/scripts/mod/modpost.h linux-3.1.1/scripts/mod/modpost.h
43764 +--- linux-3.1.1/scripts/mod/modpost.h 2011-11-11 15:19:27.000000000 -0500
43765 ++++ linux-3.1.1/scripts/mod/modpost.h 2011-11-16 18:39:08.000000000 -0500
43766 @@ -92,15 +92,15 @@ void *do_nofail(void *ptr, const char *e
43767
43768 struct buffer {
43769 @@ -75775,9 +75582,9 @@ diff -urNp linux-3.0.9/scripts/mod/modpost.h linux-3.0.9/scripts/mod/modpost.h
43770
43771 struct module {
43772 struct module *next;
43773 -diff -urNp linux-3.0.9/scripts/mod/sumversion.c linux-3.0.9/scripts/mod/sumversion.c
43774 ---- linux-3.0.9/scripts/mod/sumversion.c 2011-11-11 13:12:24.000000000 -0500
43775 -+++ linux-3.0.9/scripts/mod/sumversion.c 2011-11-15 20:03:00.000000000 -0500
43776 +diff -urNp linux-3.1.1/scripts/mod/sumversion.c linux-3.1.1/scripts/mod/sumversion.c
43777 +--- linux-3.1.1/scripts/mod/sumversion.c 2011-11-11 15:19:27.000000000 -0500
43778 ++++ linux-3.1.1/scripts/mod/sumversion.c 2011-11-16 18:39:08.000000000 -0500
43779 @@ -470,7 +470,7 @@ static void write_version(const char *fi
43780 goto out;
43781 }
43782 @@ -75787,9 +75594,9 @@ diff -urNp linux-3.0.9/scripts/mod/sumversion.c linux-3.0.9/scripts/mod/sumversi
43783 warn("writing sum in %s failed: %s\n",
43784 filename, strerror(errno));
43785 goto out;
43786 -diff -urNp linux-3.0.9/scripts/pnmtologo.c linux-3.0.9/scripts/pnmtologo.c
43787 ---- linux-3.0.9/scripts/pnmtologo.c 2011-11-11 13:12:24.000000000 -0500
43788 -+++ linux-3.0.9/scripts/pnmtologo.c 2011-11-15 20:03:00.000000000 -0500
43789 +diff -urNp linux-3.1.1/scripts/pnmtologo.c linux-3.1.1/scripts/pnmtologo.c
43790 +--- linux-3.1.1/scripts/pnmtologo.c 2011-11-11 15:19:27.000000000 -0500
43791 ++++ linux-3.1.1/scripts/pnmtologo.c 2011-11-16 18:39:08.000000000 -0500
43792 @@ -237,14 +237,14 @@ static void write_header(void)
43793 fprintf(out, " * Linux logo %s\n", logoname);
43794 fputs(" */\n\n", out);
43795 @@ -75816,9 +75623,9 @@ diff -urNp linux-3.0.9/scripts/pnmtologo.c linux-3.0.9/scripts/pnmtologo.c
43796 logoname);
43797 write_hex_cnt = 0;
43798 for (i = 0; i < logo_clutsize; i++) {
43799 -diff -urNp linux-3.0.9/security/apparmor/lsm.c linux-3.0.9/security/apparmor/lsm.c
43800 ---- linux-3.0.9/security/apparmor/lsm.c 2011-11-11 13:12:24.000000000 -0500
43801 -+++ linux-3.0.9/security/apparmor/lsm.c 2011-11-15 20:03:00.000000000 -0500
43802 +diff -urNp linux-3.1.1/security/apparmor/lsm.c linux-3.1.1/security/apparmor/lsm.c
43803 +--- linux-3.1.1/security/apparmor/lsm.c 2011-11-11 15:19:27.000000000 -0500
43804 ++++ linux-3.1.1/security/apparmor/lsm.c 2011-11-16 18:40:44.000000000 -0500
43805 @@ -621,7 +621,7 @@ static int apparmor_task_setrlimit(struc
43806 return error;
43807 }
43808 @@ -75828,9 +75635,9 @@ diff -urNp linux-3.0.9/security/apparmor/lsm.c linux-3.0.9/security/apparmor/lsm
43809 .name = "apparmor",
43810
43811 .ptrace_access_check = apparmor_ptrace_access_check,
43812 -diff -urNp linux-3.0.9/security/commoncap.c linux-3.0.9/security/commoncap.c
43813 ---- linux-3.0.9/security/commoncap.c 2011-11-11 13:12:24.000000000 -0500
43814 -+++ linux-3.0.9/security/commoncap.c 2011-11-15 20:03:00.000000000 -0500
43815 +diff -urNp linux-3.1.1/security/commoncap.c linux-3.1.1/security/commoncap.c
43816 +--- linux-3.1.1/security/commoncap.c 2011-11-11 15:19:27.000000000 -0500
43817 ++++ linux-3.1.1/security/commoncap.c 2011-11-16 18:40:44.000000000 -0500
43818 @@ -28,6 +28,7 @@
43819 #include <linux/prctl.h>
43820 #include <linux/securebits.h>
43821 @@ -75858,9 +75665,9 @@ diff -urNp linux-3.0.9/security/commoncap.c linux-3.0.9/security/commoncap.c
43822 if (cred->uid != 0) {
43823 if (bprm->cap_effective)
43824 return 1;
43825 -diff -urNp linux-3.0.9/security/integrity/ima/ima_api.c linux-3.0.9/security/integrity/ima/ima_api.c
43826 ---- linux-3.0.9/security/integrity/ima/ima_api.c 2011-11-11 13:12:24.000000000 -0500
43827 -+++ linux-3.0.9/security/integrity/ima/ima_api.c 2011-11-15 20:03:00.000000000 -0500
43828 +diff -urNp linux-3.1.1/security/integrity/ima/ima_api.c linux-3.1.1/security/integrity/ima/ima_api.c
43829 +--- linux-3.1.1/security/integrity/ima/ima_api.c 2011-11-11 15:19:27.000000000 -0500
43830 ++++ linux-3.1.1/security/integrity/ima/ima_api.c 2011-11-16 18:39:08.000000000 -0500
43831 @@ -75,7 +75,7 @@ void ima_add_violation(struct inode *ino
43832 int result;
43833
43834 @@ -75870,9 +75677,9 @@ diff -urNp linux-3.0.9/security/integrity/ima/ima_api.c linux-3.0.9/security/int
43835
43836 entry = kmalloc(sizeof(*entry), GFP_KERNEL);
43837 if (!entry) {
43838 -diff -urNp linux-3.0.9/security/integrity/ima/ima_fs.c linux-3.0.9/security/integrity/ima/ima_fs.c
43839 ---- linux-3.0.9/security/integrity/ima/ima_fs.c 2011-11-11 13:12:24.000000000 -0500
43840 -+++ linux-3.0.9/security/integrity/ima/ima_fs.c 2011-11-15 20:03:00.000000000 -0500
43841 +diff -urNp linux-3.1.1/security/integrity/ima/ima_fs.c linux-3.1.1/security/integrity/ima/ima_fs.c
43842 +--- linux-3.1.1/security/integrity/ima/ima_fs.c 2011-11-11 15:19:27.000000000 -0500
43843 ++++ linux-3.1.1/security/integrity/ima/ima_fs.c 2011-11-16 18:39:08.000000000 -0500
43844 @@ -28,12 +28,12 @@
43845 static int valid_policy = 1;
43846 #define TMPBUFLEN 12
43847 @@ -75888,9 +75695,9 @@ diff -urNp linux-3.0.9/security/integrity/ima/ima_fs.c linux-3.0.9/security/inte
43848 return simple_read_from_buffer(buf, count, ppos, tmpbuf, len);
43849 }
43850
43851 -diff -urNp linux-3.0.9/security/integrity/ima/ima.h linux-3.0.9/security/integrity/ima/ima.h
43852 ---- linux-3.0.9/security/integrity/ima/ima.h 2011-11-11 13:12:24.000000000 -0500
43853 -+++ linux-3.0.9/security/integrity/ima/ima.h 2011-11-15 20:03:00.000000000 -0500
43854 +diff -urNp linux-3.1.1/security/integrity/ima/ima.h linux-3.1.1/security/integrity/ima/ima.h
43855 +--- linux-3.1.1/security/integrity/ima/ima.h 2011-11-11 15:19:27.000000000 -0500
43856 ++++ linux-3.1.1/security/integrity/ima/ima.h 2011-11-16 18:39:08.000000000 -0500
43857 @@ -85,8 +85,8 @@ void ima_add_violation(struct inode *ino
43858 extern spinlock_t ima_queue_lock;
43859
43860 @@ -75902,9 +75709,9 @@ diff -urNp linux-3.0.9/security/integrity/ima/ima.h linux-3.0.9/security/integri
43861 struct hlist_head queue[IMA_MEASURE_HTABLE_SIZE];
43862 };
43863 extern struct ima_h_table ima_htable;
43864 -diff -urNp linux-3.0.9/security/integrity/ima/ima_queue.c linux-3.0.9/security/integrity/ima/ima_queue.c
43865 ---- linux-3.0.9/security/integrity/ima/ima_queue.c 2011-11-11 13:12:24.000000000 -0500
43866 -+++ linux-3.0.9/security/integrity/ima/ima_queue.c 2011-11-15 20:03:00.000000000 -0500
43867 +diff -urNp linux-3.1.1/security/integrity/ima/ima_queue.c linux-3.1.1/security/integrity/ima/ima_queue.c
43868 +--- linux-3.1.1/security/integrity/ima/ima_queue.c 2011-11-11 15:19:27.000000000 -0500
43869 ++++ linux-3.1.1/security/integrity/ima/ima_queue.c 2011-11-16 18:39:08.000000000 -0500
43870 @@ -79,7 +79,7 @@ static int ima_add_digest_entry(struct i
43871 INIT_LIST_HEAD(&qe->later);
43872 list_add_tail_rcu(&qe->later, &ima_measurements);
43873 @@ -75914,9 +75721,9 @@ diff -urNp linux-3.0.9/security/integrity/ima/ima_queue.c linux-3.0.9/security/i
43874 key = ima_hash_key(entry->digest);
43875 hlist_add_head_rcu(&qe->hnext, &ima_htable.queue[key]);
43876 return 0;
43877 -diff -urNp linux-3.0.9/security/Kconfig linux-3.0.9/security/Kconfig
43878 ---- linux-3.0.9/security/Kconfig 2011-11-11 13:12:24.000000000 -0500
43879 -+++ linux-3.0.9/security/Kconfig 2011-11-15 20:03:00.000000000 -0500
43880 +diff -urNp linux-3.1.1/security/Kconfig linux-3.1.1/security/Kconfig
43881 +--- linux-3.1.1/security/Kconfig 2011-11-11 15:19:27.000000000 -0500
43882 ++++ linux-3.1.1/security/Kconfig 2011-11-16 18:40:44.000000000 -0500
43883 @@ -4,6 +4,558 @@
43884
43885 menu "Security options"
43886 @@ -76485,9 +76292,9 @@ diff -urNp linux-3.0.9/security/Kconfig linux-3.0.9/security/Kconfig
43887 default 65536
43888 help
43889 This is the portion of low virtual memory which should be protected
43890 -diff -urNp linux-3.0.9/security/keys/compat.c linux-3.0.9/security/keys/compat.c
43891 ---- linux-3.0.9/security/keys/compat.c 2011-11-11 13:12:24.000000000 -0500
43892 -+++ linux-3.0.9/security/keys/compat.c 2011-11-15 20:03:00.000000000 -0500
43893 +diff -urNp linux-3.1.1/security/keys/compat.c linux-3.1.1/security/keys/compat.c
43894 +--- linux-3.1.1/security/keys/compat.c 2011-11-11 15:19:27.000000000 -0500
43895 ++++ linux-3.1.1/security/keys/compat.c 2011-11-16 18:39:08.000000000 -0500
43896 @@ -44,7 +44,7 @@ long compat_keyctl_instantiate_key_iov(
43897 if (ret == 0)
43898 goto no_payload_free;
43899 @@ -76497,9 +76304,9 @@ diff -urNp linux-3.0.9/security/keys/compat.c linux-3.0.9/security/keys/compat.c
43900
43901 if (iov != iovstack)
43902 kfree(iov);
43903 -diff -urNp linux-3.0.9/security/keys/keyctl.c linux-3.0.9/security/keys/keyctl.c
43904 ---- linux-3.0.9/security/keys/keyctl.c 2011-11-11 13:12:24.000000000 -0500
43905 -+++ linux-3.0.9/security/keys/keyctl.c 2011-11-15 20:03:00.000000000 -0500
43906 +diff -urNp linux-3.1.1/security/keys/keyctl.c linux-3.1.1/security/keys/keyctl.c
43907 +--- linux-3.1.1/security/keys/keyctl.c 2011-11-11 15:19:27.000000000 -0500
43908 ++++ linux-3.1.1/security/keys/keyctl.c 2011-11-16 18:39:08.000000000 -0500
43909 @@ -921,7 +921,7 @@ static int keyctl_change_reqkey_auth(str
43910 /*
43911 * Copy the iovec data from userspace
43912 @@ -76536,10 +76343,10 @@ diff -urNp linux-3.0.9/security/keys/keyctl.c linux-3.0.9/security/keys/keyctl.c
43913
43914 if (iov != iovstack)
43915 kfree(iov);
43916 -diff -urNp linux-3.0.9/security/keys/keyring.c linux-3.0.9/security/keys/keyring.c
43917 ---- linux-3.0.9/security/keys/keyring.c 2011-11-11 13:12:24.000000000 -0500
43918 -+++ linux-3.0.9/security/keys/keyring.c 2011-11-15 20:03:00.000000000 -0500
43919 -@@ -215,15 +215,15 @@ static long keyring_read(const struct ke
43920 +diff -urNp linux-3.1.1/security/keys/keyring.c linux-3.1.1/security/keys/keyring.c
43921 +--- linux-3.1.1/security/keys/keyring.c 2011-11-11 15:19:27.000000000 -0500
43922 ++++ linux-3.1.1/security/keys/keyring.c 2011-11-16 18:39:08.000000000 -0500
43923 +@@ -214,15 +214,15 @@ static long keyring_read(const struct ke
43924 ret = -EFAULT;
43925
43926 for (loop = 0; loop < klist->nkeys; loop++) {
43927 @@ -76558,9 +76365,9 @@ diff -urNp linux-3.0.9/security/keys/keyring.c linux-3.0.9/security/keys/keyring
43928 goto error;
43929
43930 buflen -= tmp;
43931 -diff -urNp linux-3.0.9/security/min_addr.c linux-3.0.9/security/min_addr.c
43932 ---- linux-3.0.9/security/min_addr.c 2011-11-11 13:12:24.000000000 -0500
43933 -+++ linux-3.0.9/security/min_addr.c 2011-11-15 20:03:00.000000000 -0500
43934 +diff -urNp linux-3.1.1/security/min_addr.c linux-3.1.1/security/min_addr.c
43935 +--- linux-3.1.1/security/min_addr.c 2011-11-11 15:19:27.000000000 -0500
43936 ++++ linux-3.1.1/security/min_addr.c 2011-11-16 18:40:44.000000000 -0500
43937 @@ -14,6 +14,7 @@ unsigned long dac_mmap_min_addr = CONFIG
43938 */
43939 static void update_mmap_min_addr(void)
43940 @@ -76577,9 +76384,9 @@ diff -urNp linux-3.0.9/security/min_addr.c linux-3.0.9/security/min_addr.c
43941 }
43942
43943 /*
43944 -diff -urNp linux-3.0.9/security/security.c linux-3.0.9/security/security.c
43945 ---- linux-3.0.9/security/security.c 2011-11-11 13:12:24.000000000 -0500
43946 -+++ linux-3.0.9/security/security.c 2011-11-15 20:03:00.000000000 -0500
43947 +diff -urNp linux-3.1.1/security/security.c linux-3.1.1/security/security.c
43948 +--- linux-3.1.1/security/security.c 2011-11-11 15:19:27.000000000 -0500
43949 ++++ linux-3.1.1/security/security.c 2011-11-16 18:40:44.000000000 -0500
43950 @@ -25,8 +25,8 @@ static __initdata char chosen_lsm[SECURI
43951 /* things that live in capability.c */
43952 extern void __init security_fixup_ops(struct security_operations *ops);
43953 @@ -76601,9 +76408,9 @@ diff -urNp linux-3.0.9/security/security.c linux-3.0.9/security/security.c
43954 }
43955
43956 /* Save user chosen LSM */
43957 -diff -urNp linux-3.0.9/security/selinux/hooks.c linux-3.0.9/security/selinux/hooks.c
43958 ---- linux-3.0.9/security/selinux/hooks.c 2011-11-11 13:12:24.000000000 -0500
43959 -+++ linux-3.0.9/security/selinux/hooks.c 2011-11-15 20:03:00.000000000 -0500
43960 +diff -urNp linux-3.1.1/security/selinux/hooks.c linux-3.1.1/security/selinux/hooks.c
43961 +--- linux-3.1.1/security/selinux/hooks.c 2011-11-11 15:19:27.000000000 -0500
43962 ++++ linux-3.1.1/security/selinux/hooks.c 2011-11-16 18:40:44.000000000 -0500
43963 @@ -93,7 +93,6 @@
43964 #define NUM_SEL_MNT_OPTS 5
43965
43966 @@ -76612,7 +76419,7 @@ diff -urNp linux-3.0.9/security/selinux/hooks.c linux-3.0.9/security/selinux/hoo
43967
43968 /* SECMARK reference count */
43969 atomic_t selinux_secmark_refcount = ATOMIC_INIT(0);
43970 -@@ -5454,7 +5453,7 @@ static int selinux_key_getsecurity(struc
43971 +@@ -5455,7 +5454,7 @@ static int selinux_key_getsecurity(struc
43972
43973 #endif
43974
43975 @@ -76621,9 +76428,9 @@ diff -urNp linux-3.0.9/security/selinux/hooks.c linux-3.0.9/security/selinux/hoo
43976 .name = "selinux",
43977
43978 .ptrace_access_check = selinux_ptrace_access_check,
43979 -diff -urNp linux-3.0.9/security/selinux/include/xfrm.h linux-3.0.9/security/selinux/include/xfrm.h
43980 ---- linux-3.0.9/security/selinux/include/xfrm.h 2011-11-11 13:12:24.000000000 -0500
43981 -+++ linux-3.0.9/security/selinux/include/xfrm.h 2011-11-15 20:03:00.000000000 -0500
43982 +diff -urNp linux-3.1.1/security/selinux/include/xfrm.h linux-3.1.1/security/selinux/include/xfrm.h
43983 +--- linux-3.1.1/security/selinux/include/xfrm.h 2011-11-11 15:19:27.000000000 -0500
43984 ++++ linux-3.1.1/security/selinux/include/xfrm.h 2011-11-16 18:39:08.000000000 -0500
43985 @@ -48,7 +48,7 @@ int selinux_xfrm_decode_session(struct s
43986
43987 static inline void selinux_xfrm_notify_policyload(void)
43988 @@ -76633,9 +76440,9 @@ diff -urNp linux-3.0.9/security/selinux/include/xfrm.h linux-3.0.9/security/seli
43989 }
43990 #else
43991 static inline int selinux_xfrm_enabled(void)
43992 -diff -urNp linux-3.0.9/security/selinux/ss/services.c linux-3.0.9/security/selinux/ss/services.c
43993 ---- linux-3.0.9/security/selinux/ss/services.c 2011-11-11 13:12:24.000000000 -0500
43994 -+++ linux-3.0.9/security/selinux/ss/services.c 2011-11-15 20:03:00.000000000 -0500
43995 +diff -urNp linux-3.1.1/security/selinux/ss/services.c linux-3.1.1/security/selinux/ss/services.c
43996 +--- linux-3.1.1/security/selinux/ss/services.c 2011-11-11 15:19:27.000000000 -0500
43997 ++++ linux-3.1.1/security/selinux/ss/services.c 2011-11-16 18:40:44.000000000 -0500
43998 @@ -1814,6 +1814,8 @@ int security_load_policy(void *data, siz
43999 int rc = 0;
44000 struct policy_file file = { data, len }, *fp = &file;
44001 @@ -76645,10 +76452,10 @@ diff -urNp linux-3.0.9/security/selinux/ss/services.c linux-3.0.9/security/selin
44002 if (!ss_initialized) {
44003 avtab_cache_init();
44004 rc = policydb_read(&policydb, fp);
44005 -diff -urNp linux-3.0.9/security/smack/smack_lsm.c linux-3.0.9/security/smack/smack_lsm.c
44006 ---- linux-3.0.9/security/smack/smack_lsm.c 2011-11-11 13:12:24.000000000 -0500
44007 -+++ linux-3.0.9/security/smack/smack_lsm.c 2011-11-15 20:03:00.000000000 -0500
44008 -@@ -3392,7 +3392,7 @@ static int smack_inode_getsecctx(struct
44009 +diff -urNp linux-3.1.1/security/smack/smack_lsm.c linux-3.1.1/security/smack/smack_lsm.c
44010 +--- linux-3.1.1/security/smack/smack_lsm.c 2011-11-11 15:19:27.000000000 -0500
44011 ++++ linux-3.1.1/security/smack/smack_lsm.c 2011-11-16 18:39:08.000000000 -0500
44012 +@@ -3393,7 +3393,7 @@ static int smack_inode_getsecctx(struct
44013 return 0;
44014 }
44015
44016 @@ -76657,10 +76464,10 @@ diff -urNp linux-3.0.9/security/smack/smack_lsm.c linux-3.0.9/security/smack/sma
44017 .name = "smack",
44018
44019 .ptrace_access_check = smack_ptrace_access_check,
44020 -diff -urNp linux-3.0.9/security/tomoyo/tomoyo.c linux-3.0.9/security/tomoyo/tomoyo.c
44021 ---- linux-3.0.9/security/tomoyo/tomoyo.c 2011-11-11 13:12:24.000000000 -0500
44022 -+++ linux-3.0.9/security/tomoyo/tomoyo.c 2011-11-15 20:03:00.000000000 -0500
44023 -@@ -240,7 +240,7 @@ static int tomoyo_sb_pivotroot(struct pa
44024 +diff -urNp linux-3.1.1/security/tomoyo/tomoyo.c linux-3.1.1/security/tomoyo/tomoyo.c
44025 +--- linux-3.1.1/security/tomoyo/tomoyo.c 2011-11-11 15:19:27.000000000 -0500
44026 ++++ linux-3.1.1/security/tomoyo/tomoyo.c 2011-11-16 18:39:08.000000000 -0500
44027 +@@ -446,7 +446,7 @@ static int tomoyo_sb_pivotroot(struct pa
44028 * tomoyo_security_ops is a "struct security_operations" which is used for
44029 * registering TOMOYO.
44030 */
44031 @@ -76669,9 +76476,9 @@ diff -urNp linux-3.0.9/security/tomoyo/tomoyo.c linux-3.0.9/security/tomoyo/tomo
44032 .name = "tomoyo",
44033 .cred_alloc_blank = tomoyo_cred_alloc_blank,
44034 .cred_prepare = tomoyo_cred_prepare,
44035 -diff -urNp linux-3.0.9/sound/aoa/codecs/onyx.c linux-3.0.9/sound/aoa/codecs/onyx.c
44036 ---- linux-3.0.9/sound/aoa/codecs/onyx.c 2011-11-11 13:12:24.000000000 -0500
44037 -+++ linux-3.0.9/sound/aoa/codecs/onyx.c 2011-11-15 20:03:00.000000000 -0500
44038 +diff -urNp linux-3.1.1/sound/aoa/codecs/onyx.c linux-3.1.1/sound/aoa/codecs/onyx.c
44039 +--- linux-3.1.1/sound/aoa/codecs/onyx.c 2011-11-11 15:19:27.000000000 -0500
44040 ++++ linux-3.1.1/sound/aoa/codecs/onyx.c 2011-11-16 18:39:08.000000000 -0500
44041 @@ -54,7 +54,7 @@ struct onyx {
44042 spdif_locked:1,
44043 analog_locked:1,
44044 @@ -76700,9 +76507,9 @@ diff -urNp linux-3.0.9/sound/aoa/codecs/onyx.c linux-3.0.9/sound/aoa/codecs/onyx
44045 onyx->spdif_locked = onyx->analog_locked = 0;
44046 mutex_unlock(&onyx->mutex);
44047
44048 -diff -urNp linux-3.0.9/sound/aoa/codecs/onyx.h linux-3.0.9/sound/aoa/codecs/onyx.h
44049 ---- linux-3.0.9/sound/aoa/codecs/onyx.h 2011-11-11 13:12:24.000000000 -0500
44050 -+++ linux-3.0.9/sound/aoa/codecs/onyx.h 2011-11-15 20:03:00.000000000 -0500
44051 +diff -urNp linux-3.1.1/sound/aoa/codecs/onyx.h linux-3.1.1/sound/aoa/codecs/onyx.h
44052 +--- linux-3.1.1/sound/aoa/codecs/onyx.h 2011-11-11 15:19:27.000000000 -0500
44053 ++++ linux-3.1.1/sound/aoa/codecs/onyx.h 2011-11-16 18:39:08.000000000 -0500
44054 @@ -11,6 +11,7 @@
44055 #include <linux/i2c.h>
44056 #include <asm/pmac_low_i2c.h>
44057 @@ -76711,9 +76518,9 @@ diff -urNp linux-3.0.9/sound/aoa/codecs/onyx.h linux-3.0.9/sound/aoa/codecs/onyx
44058
44059 /* PCM3052 register definitions */
44060
44061 -diff -urNp linux-3.0.9/sound/core/oss/pcm_oss.c linux-3.0.9/sound/core/oss/pcm_oss.c
44062 ---- linux-3.0.9/sound/core/oss/pcm_oss.c 2011-11-11 13:12:24.000000000 -0500
44063 -+++ linux-3.0.9/sound/core/oss/pcm_oss.c 2011-11-15 20:03:00.000000000 -0500
44064 +diff -urNp linux-3.1.1/sound/core/oss/pcm_oss.c linux-3.1.1/sound/core/oss/pcm_oss.c
44065 +--- linux-3.1.1/sound/core/oss/pcm_oss.c 2011-11-11 15:19:27.000000000 -0500
44066 ++++ linux-3.1.1/sound/core/oss/pcm_oss.c 2011-11-16 18:39:08.000000000 -0500
44067 @@ -1189,10 +1189,10 @@ snd_pcm_sframes_t snd_pcm_oss_write3(str
44068 if (in_kernel) {
44069 mm_segment_t fs;
44070 @@ -76785,9 +76592,9 @@ diff -urNp linux-3.0.9/sound/core/oss/pcm_oss.c linux-3.0.9/sound/core/oss/pcm_o
44071 snd_leave_user(fs);
44072 }
44073 } else if (runtime->access == SNDRV_PCM_ACCESS_RW_NONINTERLEAVED) {
44074 -diff -urNp linux-3.0.9/sound/core/pcm_compat.c linux-3.0.9/sound/core/pcm_compat.c
44075 ---- linux-3.0.9/sound/core/pcm_compat.c 2011-11-11 13:12:24.000000000 -0500
44076 -+++ linux-3.0.9/sound/core/pcm_compat.c 2011-11-15 20:03:00.000000000 -0500
44077 +diff -urNp linux-3.1.1/sound/core/pcm_compat.c linux-3.1.1/sound/core/pcm_compat.c
44078 +--- linux-3.1.1/sound/core/pcm_compat.c 2011-11-11 15:19:27.000000000 -0500
44079 ++++ linux-3.1.1/sound/core/pcm_compat.c 2011-11-16 18:39:08.000000000 -0500
44080 @@ -31,7 +31,7 @@ static int snd_pcm_ioctl_delay_compat(st
44081 int err;
44082
44083 @@ -76797,9 +76604,9 @@ diff -urNp linux-3.0.9/sound/core/pcm_compat.c linux-3.0.9/sound/core/pcm_compat
44084 snd_leave_user(fs);
44085 if (err < 0)
44086 return err;
44087 -diff -urNp linux-3.0.9/sound/core/pcm_native.c linux-3.0.9/sound/core/pcm_native.c
44088 ---- linux-3.0.9/sound/core/pcm_native.c 2011-11-11 13:12:24.000000000 -0500
44089 -+++ linux-3.0.9/sound/core/pcm_native.c 2011-11-15 20:03:00.000000000 -0500
44090 +diff -urNp linux-3.1.1/sound/core/pcm_native.c linux-3.1.1/sound/core/pcm_native.c
44091 +--- linux-3.1.1/sound/core/pcm_native.c 2011-11-11 15:19:27.000000000 -0500
44092 ++++ linux-3.1.1/sound/core/pcm_native.c 2011-11-16 18:39:08.000000000 -0500
44093 @@ -2770,11 +2770,11 @@ int snd_pcm_kernel_ioctl(struct snd_pcm_
44094 switch (substream->stream) {
44095 case SNDRV_PCM_STREAM_PLAYBACK:
44096 @@ -76814,9 +76621,9 @@ diff -urNp linux-3.0.9/sound/core/pcm_native.c linux-3.0.9/sound/core/pcm_native
44097 break;
44098 default:
44099 result = -EINVAL;
44100 -diff -urNp linux-3.0.9/sound/core/seq/seq_device.c linux-3.0.9/sound/core/seq/seq_device.c
44101 ---- linux-3.0.9/sound/core/seq/seq_device.c 2011-11-11 13:12:24.000000000 -0500
44102 -+++ linux-3.0.9/sound/core/seq/seq_device.c 2011-11-15 20:03:00.000000000 -0500
44103 +diff -urNp linux-3.1.1/sound/core/seq/seq_device.c linux-3.1.1/sound/core/seq/seq_device.c
44104 +--- linux-3.1.1/sound/core/seq/seq_device.c 2011-11-11 15:19:27.000000000 -0500
44105 ++++ linux-3.1.1/sound/core/seq/seq_device.c 2011-11-16 18:39:08.000000000 -0500
44106 @@ -63,7 +63,7 @@ struct ops_list {
44107 int argsize; /* argument size */
44108
44109 @@ -76853,9 +76660,9 @@ diff -urNp linux-3.0.9/sound/core/seq/seq_device.c linux-3.0.9/sound/core/seq/se
44110 dev->status = SNDRV_SEQ_DEVICE_FREE;
44111 dev->driver_data = NULL;
44112 ops->num_init_devices--;
44113 -diff -urNp linux-3.0.9/sound/drivers/mts64.c linux-3.0.9/sound/drivers/mts64.c
44114 ---- linux-3.0.9/sound/drivers/mts64.c 2011-11-11 13:12:24.000000000 -0500
44115 -+++ linux-3.0.9/sound/drivers/mts64.c 2011-11-15 20:03:00.000000000 -0500
44116 +diff -urNp linux-3.1.1/sound/drivers/mts64.c linux-3.1.1/sound/drivers/mts64.c
44117 +--- linux-3.1.1/sound/drivers/mts64.c 2011-11-11 15:19:27.000000000 -0500
44118 ++++ linux-3.1.1/sound/drivers/mts64.c 2011-11-16 18:39:08.000000000 -0500
44119 @@ -28,6 +28,7 @@
44120 #include <sound/initval.h>
44121 #include <sound/rawmidi.h>
44122 @@ -76912,9 +76719,9 @@ diff -urNp linux-3.0.9/sound/drivers/mts64.c linux-3.0.9/sound/drivers/mts64.c
44123
44124 return 0;
44125 }
44126 -diff -urNp linux-3.0.9/sound/drivers/opl4/opl4_lib.c linux-3.0.9/sound/drivers/opl4/opl4_lib.c
44127 ---- linux-3.0.9/sound/drivers/opl4/opl4_lib.c 2011-11-11 13:12:24.000000000 -0500
44128 -+++ linux-3.0.9/sound/drivers/opl4/opl4_lib.c 2011-11-15 20:03:00.000000000 -0500
44129 +diff -urNp linux-3.1.1/sound/drivers/opl4/opl4_lib.c linux-3.1.1/sound/drivers/opl4/opl4_lib.c
44130 +--- linux-3.1.1/sound/drivers/opl4/opl4_lib.c 2011-11-11 15:19:27.000000000 -0500
44131 ++++ linux-3.1.1/sound/drivers/opl4/opl4_lib.c 2011-11-16 18:39:08.000000000 -0500
44132 @@ -28,7 +28,7 @@ MODULE_AUTHOR("Clemens Ladisch <clemens@
44133 MODULE_DESCRIPTION("OPL4 driver");
44134 MODULE_LICENSE("GPL");
44135 @@ -76924,9 +76731,9 @@ diff -urNp linux-3.0.9/sound/drivers/opl4/opl4_lib.c linux-3.0.9/sound/drivers/o
44136 {
44137 int timeout = 10;
44138 while ((inb(opl4->fm_port) & OPL4_STATUS_BUSY) && --timeout > 0)
44139 -diff -urNp linux-3.0.9/sound/drivers/portman2x4.c linux-3.0.9/sound/drivers/portman2x4.c
44140 ---- linux-3.0.9/sound/drivers/portman2x4.c 2011-11-11 13:12:24.000000000 -0500
44141 -+++ linux-3.0.9/sound/drivers/portman2x4.c 2011-11-15 20:03:00.000000000 -0500
44142 +diff -urNp linux-3.1.1/sound/drivers/portman2x4.c linux-3.1.1/sound/drivers/portman2x4.c
44143 +--- linux-3.1.1/sound/drivers/portman2x4.c 2011-11-11 15:19:27.000000000 -0500
44144 ++++ linux-3.1.1/sound/drivers/portman2x4.c 2011-11-16 18:39:08.000000000 -0500
44145 @@ -47,6 +47,7 @@
44146 #include <sound/initval.h>
44147 #include <sound/rawmidi.h>
44148 @@ -76944,9 +76751,9 @@ diff -urNp linux-3.0.9/sound/drivers/portman2x4.c linux-3.0.9/sound/drivers/port
44149 int mode[PORTMAN_NUM_INPUT_PORTS];
44150 struct snd_rawmidi_substream *midi_input[PORTMAN_NUM_INPUT_PORTS];
44151 };
44152 -diff -urNp linux-3.0.9/sound/firewire/amdtp.c linux-3.0.9/sound/firewire/amdtp.c
44153 ---- linux-3.0.9/sound/firewire/amdtp.c 2011-11-11 13:12:24.000000000 -0500
44154 -+++ linux-3.0.9/sound/firewire/amdtp.c 2011-11-15 20:03:00.000000000 -0500
44155 +diff -urNp linux-3.1.1/sound/firewire/amdtp.c linux-3.1.1/sound/firewire/amdtp.c
44156 +--- linux-3.1.1/sound/firewire/amdtp.c 2011-11-11 15:19:27.000000000 -0500
44157 ++++ linux-3.1.1/sound/firewire/amdtp.c 2011-11-16 18:39:08.000000000 -0500
44158 @@ -371,7 +371,7 @@ static void queue_out_packet(struct amdt
44159 ptr = s->pcm_buffer_pointer + data_blocks;
44160 if (ptr >= pcm->runtime->buffer_size)
44161 @@ -76965,9 +76772,9 @@ diff -urNp linux-3.0.9/sound/firewire/amdtp.c linux-3.0.9/sound/firewire/amdtp.c
44162 (fw_parent_device(s->unit)->card->node_id & 0x3f) << 24;
44163 }
44164 EXPORT_SYMBOL(amdtp_out_stream_update);
44165 -diff -urNp linux-3.0.9/sound/firewire/amdtp.h linux-3.0.9/sound/firewire/amdtp.h
44166 ---- linux-3.0.9/sound/firewire/amdtp.h 2011-11-11 13:12:24.000000000 -0500
44167 -+++ linux-3.0.9/sound/firewire/amdtp.h 2011-11-15 20:03:00.000000000 -0500
44168 +diff -urNp linux-3.1.1/sound/firewire/amdtp.h linux-3.1.1/sound/firewire/amdtp.h
44169 +--- linux-3.1.1/sound/firewire/amdtp.h 2011-11-11 15:19:27.000000000 -0500
44170 ++++ linux-3.1.1/sound/firewire/amdtp.h 2011-11-16 18:39:08.000000000 -0500
44171 @@ -146,7 +146,7 @@ static inline void amdtp_out_stream_pcm_
44172 static inline void amdtp_out_stream_pcm_trigger(struct amdtp_out_stream *s,
44173 struct snd_pcm_substream *pcm)
44174 @@ -76977,9 +76784,9 @@ diff -urNp linux-3.0.9/sound/firewire/amdtp.h linux-3.0.9/sound/firewire/amdtp.h
44175 }
44176
44177 /**
44178 -diff -urNp linux-3.0.9/sound/firewire/isight.c linux-3.0.9/sound/firewire/isight.c
44179 ---- linux-3.0.9/sound/firewire/isight.c 2011-11-11 13:12:24.000000000 -0500
44180 -+++ linux-3.0.9/sound/firewire/isight.c 2011-11-15 20:03:00.000000000 -0500
44181 +diff -urNp linux-3.1.1/sound/firewire/isight.c linux-3.1.1/sound/firewire/isight.c
44182 +--- linux-3.1.1/sound/firewire/isight.c 2011-11-11 15:19:27.000000000 -0500
44183 ++++ linux-3.1.1/sound/firewire/isight.c 2011-11-16 18:39:08.000000000 -0500
44184 @@ -97,7 +97,7 @@ static void isight_update_pointers(struc
44185 ptr += count;
44186 if (ptr >= runtime->buffer_size)
44187 @@ -77020,9 +76827,9 @@ diff -urNp linux-3.0.9/sound/firewire/isight.c linux-3.0.9/sound/firewire/isight
44188 break;
44189 default:
44190 return -EINVAL;
44191 -diff -urNp linux-3.0.9/sound/isa/cmi8330.c linux-3.0.9/sound/isa/cmi8330.c
44192 ---- linux-3.0.9/sound/isa/cmi8330.c 2011-11-11 13:12:24.000000000 -0500
44193 -+++ linux-3.0.9/sound/isa/cmi8330.c 2011-11-15 20:03:00.000000000 -0500
44194 +diff -urNp linux-3.1.1/sound/isa/cmi8330.c linux-3.1.1/sound/isa/cmi8330.c
44195 +--- linux-3.1.1/sound/isa/cmi8330.c 2011-11-11 15:19:27.000000000 -0500
44196 ++++ linux-3.1.1/sound/isa/cmi8330.c 2011-11-16 18:39:08.000000000 -0500
44197 @@ -172,7 +172,7 @@ struct snd_cmi8330 {
44198
44199 struct snd_pcm *pcm;
44200 @@ -77032,9 +76839,9 @@ diff -urNp linux-3.0.9/sound/isa/cmi8330.c linux-3.0.9/sound/isa/cmi8330.c
44201 snd_pcm_open_callback_t open;
44202 void *private_data; /* sb or wss */
44203 } streams[2];
44204 -diff -urNp linux-3.0.9/sound/oss/sb_audio.c linux-3.0.9/sound/oss/sb_audio.c
44205 ---- linux-3.0.9/sound/oss/sb_audio.c 2011-11-11 13:12:24.000000000 -0500
44206 -+++ linux-3.0.9/sound/oss/sb_audio.c 2011-11-15 20:03:00.000000000 -0500
44207 +diff -urNp linux-3.1.1/sound/oss/sb_audio.c linux-3.1.1/sound/oss/sb_audio.c
44208 +--- linux-3.1.1/sound/oss/sb_audio.c 2011-11-11 15:19:27.000000000 -0500
44209 ++++ linux-3.1.1/sound/oss/sb_audio.c 2011-11-16 18:39:08.000000000 -0500
44210 @@ -901,7 +901,7 @@ sb16_copy_from_user(int dev,
44211 buf16 = (signed short *)(localbuf + localoffs);
44212 while (c)
44213 @@ -77044,9 +76851,9 @@ diff -urNp linux-3.0.9/sound/oss/sb_audio.c linux-3.0.9/sound/oss/sb_audio.c
44214 if (copy_from_user(lbuf8,
44215 userbuf+useroffs + p,
44216 locallen))
44217 -diff -urNp linux-3.0.9/sound/oss/swarm_cs4297a.c linux-3.0.9/sound/oss/swarm_cs4297a.c
44218 ---- linux-3.0.9/sound/oss/swarm_cs4297a.c 2011-11-11 13:12:24.000000000 -0500
44219 -+++ linux-3.0.9/sound/oss/swarm_cs4297a.c 2011-11-15 20:03:00.000000000 -0500
44220 +diff -urNp linux-3.1.1/sound/oss/swarm_cs4297a.c linux-3.1.1/sound/oss/swarm_cs4297a.c
44221 +--- linux-3.1.1/sound/oss/swarm_cs4297a.c 2011-11-11 15:19:27.000000000 -0500
44222 ++++ linux-3.1.1/sound/oss/swarm_cs4297a.c 2011-11-16 18:39:08.000000000 -0500
44223 @@ -2606,7 +2606,6 @@ static int __init cs4297a_init(void)
44224 {
44225 struct cs4297a_state *s;
44226 @@ -77081,10 +76888,10 @@ diff -urNp linux-3.0.9/sound/oss/swarm_cs4297a.c linux-3.0.9/sound/oss/swarm_cs4
44227
44228 list_add(&s->list, &cs4297a_devs);
44229
44230 -diff -urNp linux-3.0.9/sound/pci/hda/hda_codec.h linux-3.0.9/sound/pci/hda/hda_codec.h
44231 ---- linux-3.0.9/sound/pci/hda/hda_codec.h 2011-11-11 13:12:24.000000000 -0500
44232 -+++ linux-3.0.9/sound/pci/hda/hda_codec.h 2011-11-15 20:03:00.000000000 -0500
44233 -@@ -615,7 +615,7 @@ struct hda_bus_ops {
44234 +diff -urNp linux-3.1.1/sound/pci/hda/hda_codec.h linux-3.1.1/sound/pci/hda/hda_codec.h
44235 +--- linux-3.1.1/sound/pci/hda/hda_codec.h 2011-11-11 15:19:27.000000000 -0500
44236 ++++ linux-3.1.1/sound/pci/hda/hda_codec.h 2011-11-16 18:39:08.000000000 -0500
44237 +@@ -611,7 +611,7 @@ struct hda_bus_ops {
44238 /* notify power-up/down from codec to controller */
44239 void (*pm_notify)(struct hda_bus *bus);
44240 #endif
44241 @@ -77119,9 +76926,9 @@ diff -urNp linux-3.0.9/sound/pci/hda/hda_codec.h linux-3.0.9/sound/pci/hda/hda_c
44242
44243 /* PCM to create, set by patch_ops.build_pcms callback */
44244 unsigned int num_pcms;
44245 -diff -urNp linux-3.0.9/sound/pci/ice1712/ice1712.h linux-3.0.9/sound/pci/ice1712/ice1712.h
44246 ---- linux-3.0.9/sound/pci/ice1712/ice1712.h 2011-11-11 13:12:24.000000000 -0500
44247 -+++ linux-3.0.9/sound/pci/ice1712/ice1712.h 2011-11-15 20:03:00.000000000 -0500
44248 +diff -urNp linux-3.1.1/sound/pci/ice1712/ice1712.h linux-3.1.1/sound/pci/ice1712/ice1712.h
44249 +--- linux-3.1.1/sound/pci/ice1712/ice1712.h 2011-11-11 15:19:27.000000000 -0500
44250 ++++ linux-3.1.1/sound/pci/ice1712/ice1712.h 2011-11-16 18:39:08.000000000 -0500
44251 @@ -269,7 +269,7 @@ struct snd_ak4xxx_private {
44252 unsigned int mask_flags; /* total mask bits */
44253 struct snd_akm4xxx_ops {
44254 @@ -77140,9 +76947,9 @@ diff -urNp linux-3.0.9/sound/pci/ice1712/ice1712.h linux-3.0.9/sound/pci/ice1712
44255 };
44256
44257
44258 -diff -urNp linux-3.0.9/sound/pci/ymfpci/ymfpci_main.c linux-3.0.9/sound/pci/ymfpci/ymfpci_main.c
44259 ---- linux-3.0.9/sound/pci/ymfpci/ymfpci_main.c 2011-11-11 13:12:24.000000000 -0500
44260 -+++ linux-3.0.9/sound/pci/ymfpci/ymfpci_main.c 2011-11-15 20:03:00.000000000 -0500
44261 +diff -urNp linux-3.1.1/sound/pci/ymfpci/ymfpci_main.c linux-3.1.1/sound/pci/ymfpci/ymfpci_main.c
44262 +--- linux-3.1.1/sound/pci/ymfpci/ymfpci_main.c 2011-11-11 15:19:27.000000000 -0500
44263 ++++ linux-3.1.1/sound/pci/ymfpci/ymfpci_main.c 2011-11-16 18:39:08.000000000 -0500
44264 @@ -202,8 +202,8 @@ static void snd_ymfpci_hw_stop(struct sn
44265 if ((snd_ymfpci_readl(chip, YDSXGR_STATUS) & 2) == 0)
44266 break;
44267 @@ -77183,29 +76990,21 @@ diff -urNp linux-3.0.9/sound/pci/ymfpci/ymfpci_main.c linux-3.0.9/sound/pci/ymfp
44268 chip->card = card;
44269 chip->pci = pci;
44270 chip->irq = -1;
44271 -diff -urNp linux-3.0.9/sound/soc/soc-core.c linux-3.0.9/sound/soc/soc-core.c
44272 ---- linux-3.0.9/sound/soc/soc-core.c 2011-11-11 13:12:24.000000000 -0500
44273 -+++ linux-3.0.9/sound/soc/soc-core.c 2011-11-15 20:03:00.000000000 -0500
44274 -@@ -1021,7 +1021,7 @@ static snd_pcm_uframes_t soc_pcm_pointer
44275 +diff -urNp linux-3.1.1/sound/soc/soc-pcm.c linux-3.1.1/sound/soc/soc-pcm.c
44276 +--- linux-3.1.1/sound/soc/soc-pcm.c 2011-11-11 15:19:27.000000000 -0500
44277 ++++ linux-3.1.1/sound/soc/soc-pcm.c 2011-11-16 18:39:08.000000000 -0500
44278 +@@ -568,7 +568,7 @@ static snd_pcm_uframes_t soc_pcm_pointer
44279 }
44280
44281 /* ASoC PCM operations */
44282 -static struct snd_pcm_ops soc_pcm_ops = {
44283 +static snd_pcm_ops_no_const soc_pcm_ops = {
44284 .open = soc_pcm_open,
44285 - .close = soc_codec_close,
44286 + .close = soc_pcm_close,
44287 .hw_params = soc_pcm_hw_params,
44288 -@@ -2128,6 +2128,7 @@ static int soc_new_pcm(struct snd_soc_pc
44289 - rtd->pcm = pcm;
44290 - pcm->private_data = rtd;
44291 - if (platform->driver->ops) {
44292 -+ /* this whole logic is broken... */
44293 - soc_pcm_ops.mmap = platform->driver->ops->mmap;
44294 - soc_pcm_ops.pointer = platform->driver->ops->pointer;
44295 - soc_pcm_ops.ioctl = platform->driver->ops->ioctl;
44296 -diff -urNp linux-3.0.9/sound/usb/card.h linux-3.0.9/sound/usb/card.h
44297 ---- linux-3.0.9/sound/usb/card.h 2011-11-11 13:12:24.000000000 -0500
44298 -+++ linux-3.0.9/sound/usb/card.h 2011-11-15 20:03:00.000000000 -0500
44299 +diff -urNp linux-3.1.1/sound/usb/card.h linux-3.1.1/sound/usb/card.h
44300 +--- linux-3.1.1/sound/usb/card.h 2011-11-11 15:19:27.000000000 -0500
44301 ++++ linux-3.1.1/sound/usb/card.h 2011-11-16 18:39:08.000000000 -0500
44302 @@ -44,6 +44,7 @@ struct snd_urb_ops {
44303 int (*prepare_sync)(struct snd_usb_substream *subs, struct snd_pcm_runtime *runtime, struct urb *u);
44304 int (*retire_sync)(struct snd_usb_substream *subs, struct snd_pcm_runtime *runtime, struct urb *u);
44305 @@ -77223,10 +77022,10 @@ diff -urNp linux-3.0.9/sound/usb/card.h linux-3.0.9/sound/usb/card.h
44306 };
44307
44308 struct snd_usb_stream {
44309 -diff -urNp linux-3.0.9/tools/gcc/checker_plugin.c linux-3.0.9/tools/gcc/checker_plugin.c
44310 ---- linux-3.0.9/tools/gcc/checker_plugin.c 1969-12-31 19:00:00.000000000 -0500
44311 -+++ linux-3.0.9/tools/gcc/checker_plugin.c 2011-11-15 20:03:00.000000000 -0500
44312 -@@ -0,0 +1,169 @@
44313 +diff -urNp linux-3.1.1/tools/gcc/checker_plugin.c linux-3.1.1/tools/gcc/checker_plugin.c
44314 +--- linux-3.1.1/tools/gcc/checker_plugin.c 1969-12-31 19:00:00.000000000 -0500
44315 ++++ linux-3.1.1/tools/gcc/checker_plugin.c 2011-11-16 18:39:08.000000000 -0500
44316 +@@ -0,0 +1,171 @@
44317 +/*
44318 + * Copyright 2011 by the PaX Team <pageexec@××××××××.hu>
44319 + * Licensed under the GPL v2
44320 @@ -77250,17 +77049,19 @@ diff -urNp linux-3.0.9/tools/gcc/checker_plugin.c linux-3.0.9/tools/gcc/checker_
44321 +#include "coretypes.h"
44322 +#include "tree.h"
44323 +#include "tree-pass.h"
44324 ++#include "flags.h"
44325 +#include "intl.h"
44326 ++#include "toplev.h"
44327 ++#include "plugin.h"
44328 ++//#include "expr.h" where are you...
44329 ++#include "diagnostic.h"
44330 +#include "plugin-version.h"
44331 +#include "tm.h"
44332 -+#include "toplev.h"
44333 ++#include "function.h"
44334 +#include "basic-block.h"
44335 +#include "gimple.h"
44336 -+//#include "expr.h" where are you...
44337 -+#include "diagnostic.h"
44338 +#include "rtl.h"
44339 +#include "emit-rtl.h"
44340 -+#include "function.h"
44341 +#include "tree-flow.h"
44342 +#include "target.h"
44343 +
44344 @@ -77277,7 +77078,7 @@ diff -urNp linux-3.0.9/tools/gcc/checker_plugin.c linux-3.0.9/tools/gcc/checker_
44345 +int plugin_is_GPL_compatible;
44346 +
44347 +static struct plugin_info checker_plugin_info = {
44348 -+ .version = "201110031940",
44349 ++ .version = "201111150100",
44350 +};
44351 +
44352 +#define ADDR_SPACE_KERNEL 0
44353 @@ -77396,10 +77197,10 @@ diff -urNp linux-3.0.9/tools/gcc/checker_plugin.c linux-3.0.9/tools/gcc/checker_
44354 +
44355 + return 0;
44356 +}
44357 -diff -urNp linux-3.0.9/tools/gcc/constify_plugin.c linux-3.0.9/tools/gcc/constify_plugin.c
44358 ---- linux-3.0.9/tools/gcc/constify_plugin.c 1969-12-31 19:00:00.000000000 -0500
44359 -+++ linux-3.0.9/tools/gcc/constify_plugin.c 2011-11-15 20:03:00.000000000 -0500
44360 -@@ -0,0 +1,293 @@
44361 +diff -urNp linux-3.1.1/tools/gcc/constify_plugin.c linux-3.1.1/tools/gcc/constify_plugin.c
44362 +--- linux-3.1.1/tools/gcc/constify_plugin.c 1969-12-31 19:00:00.000000000 -0500
44363 ++++ linux-3.1.1/tools/gcc/constify_plugin.c 2011-11-16 18:39:08.000000000 -0500
44364 +@@ -0,0 +1,303 @@
44365 +/*
44366 + * Copyright 2011 by Emese Revfy <re.emese@×××××.com>
44367 + * Copyright 2011 by PaX Team <pageexec@××××××××.hu>
44368 @@ -77421,22 +77222,26 @@ diff -urNp linux-3.0.9/tools/gcc/constify_plugin.c linux-3.0.9/tools/gcc/constif
44369 +#include "coretypes.h"
44370 +#include "tree.h"
44371 +#include "tree-pass.h"
44372 ++#include "flags.h"
44373 +#include "intl.h"
44374 ++#include "toplev.h"
44375 ++#include "plugin.h"
44376 ++#include "diagnostic.h"
44377 +#include "plugin-version.h"
44378 +#include "tm.h"
44379 -+#include "toplev.h"
44380 +#include "function.h"
44381 ++#include "basic-block.h"
44382 ++#include "gimple.h"
44383 ++#include "rtl.h"
44384 ++#include "emit-rtl.h"
44385 +#include "tree-flow.h"
44386 -+#include "plugin.h"
44387 -+#include "diagnostic.h"
44388 -+//#include "c-tree.h"
44389 +
44390 +#define C_TYPE_FIELDS_READONLY(TYPE) TREE_LANG_FLAG_1(TYPE)
44391 +
44392 +int plugin_is_GPL_compatible;
44393 +
44394 +static struct plugin_info const_plugin_info = {
44395 -+ .version = "20110826",
44396 ++ .version = "201111150100",
44397 + .help = "no-constify\tturn off constification\n",
44398 +};
44399 +
44400 @@ -77530,7 +77335,10 @@ diff -urNp linux-3.0.9/tools/gcc/constify_plugin.c linux-3.0.9/tools/gcc/constif
44401 + .decl_required = false,
44402 + .type_required = false,
44403 + .function_type_required = false,
44404 -+ .handler = handle_no_const_attribute
44405 ++ .handler = handle_no_const_attribute,
44406 ++#if __GNUC__ > 4 || __GNUC_MINOR__ >= 7
44407 ++ .affects_type_identity = true
44408 ++#endif
44409 +};
44410 +
44411 +static struct attribute_spec do_const_attr = {
44412 @@ -77540,7 +77348,10 @@ diff -urNp linux-3.0.9/tools/gcc/constify_plugin.c linux-3.0.9/tools/gcc/constif
44413 + .decl_required = false,
44414 + .type_required = false,
44415 + .function_type_required = false,
44416 -+ .handler = handle_do_const_attribute
44417 ++ .handler = handle_do_const_attribute,
44418 ++#if __GNUC__ > 4 || __GNUC_MINOR__ >= 7
44419 ++ .affects_type_identity = true
44420 ++#endif
44421 +};
44422 +
44423 +static void register_attributes(void *event_data, void *data)
44424 @@ -77693,10 +77504,10 @@ diff -urNp linux-3.0.9/tools/gcc/constify_plugin.c linux-3.0.9/tools/gcc/constif
44425 +
44426 + return 0;
44427 +}
44428 -diff -urNp linux-3.0.9/tools/gcc/kallocstat_plugin.c linux-3.0.9/tools/gcc/kallocstat_plugin.c
44429 ---- linux-3.0.9/tools/gcc/kallocstat_plugin.c 1969-12-31 19:00:00.000000000 -0500
44430 -+++ linux-3.0.9/tools/gcc/kallocstat_plugin.c 2011-11-15 20:03:00.000000000 -0500
44431 -@@ -0,0 +1,165 @@
44432 +diff -urNp linux-3.1.1/tools/gcc/kallocstat_plugin.c linux-3.1.1/tools/gcc/kallocstat_plugin.c
44433 +--- linux-3.1.1/tools/gcc/kallocstat_plugin.c 1969-12-31 19:00:00.000000000 -0500
44434 ++++ linux-3.1.1/tools/gcc/kallocstat_plugin.c 2011-11-16 18:39:08.000000000 -0500
44435 +@@ -0,0 +1,167 @@
44436 +/*
44437 + * Copyright 2011 by the PaX Team <pageexec@××××××××.hu>
44438 + * Licensed under the GPL v2
44439 @@ -77719,17 +77530,19 @@ diff -urNp linux-3.0.9/tools/gcc/kallocstat_plugin.c linux-3.0.9/tools/gcc/kallo
44440 +#include "coretypes.h"
44441 +#include "tree.h"
44442 +#include "tree-pass.h"
44443 ++#include "flags.h"
44444 +#include "intl.h"
44445 ++#include "toplev.h"
44446 ++#include "plugin.h"
44447 ++//#include "expr.h" where are you...
44448 ++#include "diagnostic.h"
44449 +#include "plugin-version.h"
44450 +#include "tm.h"
44451 -+#include "toplev.h"
44452 ++#include "function.h"
44453 +#include "basic-block.h"
44454 +#include "gimple.h"
44455 -+//#include "expr.h" where are you...
44456 -+#include "diagnostic.h"
44457 +#include "rtl.h"
44458 +#include "emit-rtl.h"
44459 -+#include "function.h"
44460 +
44461 +extern void print_gimple_stmt(FILE *, gimple, int, int);
44462 +
44463 @@ -77748,7 +77561,7 @@ diff -urNp linux-3.0.9/tools/gcc/kallocstat_plugin.c linux-3.0.9/tools/gcc/kallo
44464 +};
44465 +
44466 +static struct plugin_info kallocstat_plugin_info = {
44467 -+ .version = "201109121100",
44468 ++ .version = "201111150100",
44469 +};
44470 +
44471 +static unsigned int execute_kallocstat(void);
44472 @@ -77862,10 +77675,10 @@ diff -urNp linux-3.0.9/tools/gcc/kallocstat_plugin.c linux-3.0.9/tools/gcc/kallo
44473 +
44474 + return 0;
44475 +}
44476 -diff -urNp linux-3.0.9/tools/gcc/kernexec_plugin.c linux-3.0.9/tools/gcc/kernexec_plugin.c
44477 ---- linux-3.0.9/tools/gcc/kernexec_plugin.c 1969-12-31 19:00:00.000000000 -0500
44478 -+++ linux-3.0.9/tools/gcc/kernexec_plugin.c 2011-11-15 20:03:00.000000000 -0500
44479 -@@ -0,0 +1,273 @@
44480 +diff -urNp linux-3.1.1/tools/gcc/kernexec_plugin.c linux-3.1.1/tools/gcc/kernexec_plugin.c
44481 +--- linux-3.1.1/tools/gcc/kernexec_plugin.c 1969-12-31 19:00:00.000000000 -0500
44482 ++++ linux-3.1.1/tools/gcc/kernexec_plugin.c 2011-11-16 18:39:08.000000000 -0500
44483 +@@ -0,0 +1,275 @@
44484 +/*
44485 + * Copyright 2011 by the PaX Team <pageexec@××××××××.hu>
44486 + * Licensed under the GPL v2
44487 @@ -77888,17 +77701,19 @@ diff -urNp linux-3.0.9/tools/gcc/kernexec_plugin.c linux-3.0.9/tools/gcc/kernexe
44488 +#include "coretypes.h"
44489 +#include "tree.h"
44490 +#include "tree-pass.h"
44491 ++#include "flags.h"
44492 +#include "intl.h"
44493 ++#include "toplev.h"
44494 ++#include "plugin.h"
44495 ++//#include "expr.h" where are you...
44496 ++#include "diagnostic.h"
44497 +#include "plugin-version.h"
44498 +#include "tm.h"
44499 -+#include "toplev.h"
44500 ++#include "function.h"
44501 +#include "basic-block.h"
44502 +#include "gimple.h"
44503 -+//#include "expr.h" where are you...
44504 -+#include "diagnostic.h"
44505 +#include "rtl.h"
44506 +#include "emit-rtl.h"
44507 -+#include "function.h"
44508 +#include "tree-flow.h"
44509 +
44510 +extern void print_gimple_stmt(FILE *, gimple, int, int);
44511 @@ -77907,7 +77722,7 @@ diff -urNp linux-3.0.9/tools/gcc/kernexec_plugin.c linux-3.0.9/tools/gcc/kernexe
44512 +int plugin_is_GPL_compatible;
44513 +
44514 +static struct plugin_info kernexec_plugin_info = {
44515 -+ .version = "201110032145",
44516 ++ .version = "201111150100",
44517 +};
44518 +
44519 +static unsigned int execute_kernexec_fptr(void);
44520 @@ -77957,7 +77772,7 @@ diff -urNp linux-3.0.9/tools/gcc/kernexec_plugin.c linux-3.0.9/tools/gcc/kernexe
44521 + if (ix86_cmodel != CM_KERNEL)
44522 + return false;
44523 +
44524 -+ section = lookup_attribute("__section__", DECL_ATTRIBUTES(current_function_decl));
44525 ++ section = lookup_attribute("section", DECL_ATTRIBUTES(current_function_decl));
44526 + if (!section || !TREE_VALUE(section))
44527 + return true;
44528 +
44529 @@ -78139,14 +77954,14 @@ diff -urNp linux-3.0.9/tools/gcc/kernexec_plugin.c linux-3.0.9/tools/gcc/kernexe
44530 +
44531 + return 0;
44532 +}
44533 -diff -urNp linux-3.0.9/tools/gcc/Makefile linux-3.0.9/tools/gcc/Makefile
44534 ---- linux-3.0.9/tools/gcc/Makefile 1969-12-31 19:00:00.000000000 -0500
44535 -+++ linux-3.0.9/tools/gcc/Makefile 2011-11-15 20:03:00.000000000 -0500
44536 +diff -urNp linux-3.1.1/tools/gcc/Makefile linux-3.1.1/tools/gcc/Makefile
44537 +--- linux-3.1.1/tools/gcc/Makefile 1969-12-31 19:00:00.000000000 -0500
44538 ++++ linux-3.1.1/tools/gcc/Makefile 2011-11-16 20:37:08.000000000 -0500
44539 @@ -0,0 +1,21 @@
44540 +#CC := gcc
44541 +#PLUGIN_SOURCE_FILES := pax_plugin.c
44542 +#PLUGIN_OBJECT_FILES := $(patsubst %.c,%.o,$(PLUGIN_SOURCE_FILES))
44543 -+GCCPLUGINS_DIR := $(shell $(HOSTCC) -print-file-name=plugin)
44544 ++GCCPLUGINS_DIR := $(shell $(CC) -print-file-name=plugin)
44545 +#CFLAGS += -I$(GCCPLUGINS_DIR)/include -fPIC -O2 -Wall -W
44546 +
44547 +HOST_EXTRACFLAGS += -I$(GCCPLUGINS_DIR)/include
44548 @@ -78159,15 +77974,15 @@ diff -urNp linux-3.0.9/tools/gcc/Makefile linux-3.0.9/tools/gcc/Makefile
44549 +
44550 +always := $(hostlibs-y)
44551 +
44552 -+stackleak_plugin-objs := stackleak_plugin.o
44553 +constify_plugin-objs := constify_plugin.o
44554 ++stackleak_plugin-objs := stackleak_plugin.o
44555 +kallocstat_plugin-objs := kallocstat_plugin.o
44556 +kernexec_plugin-objs := kernexec_plugin.o
44557 +checker_plugin-objs := checker_plugin.o
44558 -diff -urNp linux-3.0.9/tools/gcc/stackleak_plugin.c linux-3.0.9/tools/gcc/stackleak_plugin.c
44559 ---- linux-3.0.9/tools/gcc/stackleak_plugin.c 1969-12-31 19:00:00.000000000 -0500
44560 -+++ linux-3.0.9/tools/gcc/stackleak_plugin.c 2011-11-15 20:03:00.000000000 -0500
44561 -@@ -0,0 +1,251 @@
44562 +diff -urNp linux-3.1.1/tools/gcc/stackleak_plugin.c linux-3.1.1/tools/gcc/stackleak_plugin.c
44563 +--- linux-3.1.1/tools/gcc/stackleak_plugin.c 1969-12-31 19:00:00.000000000 -0500
44564 ++++ linux-3.1.1/tools/gcc/stackleak_plugin.c 2011-11-16 18:39:08.000000000 -0500
44565 +@@ -0,0 +1,291 @@
44566 +/*
44567 + * Copyright 2011 by the PaX Team <pageexec@××××××××.hu>
44568 + * Licensed under the GPL v2
44569 @@ -78193,26 +78008,31 @@ diff -urNp linux-3.0.9/tools/gcc/stackleak_plugin.c linux-3.0.9/tools/gcc/stackl
44570 +#include "coretypes.h"
44571 +#include "tree.h"
44572 +#include "tree-pass.h"
44573 ++#include "flags.h"
44574 +#include "intl.h"
44575 ++#include "toplev.h"
44576 ++#include "plugin.h"
44577 ++//#include "expr.h" where are you...
44578 ++#include "diagnostic.h"
44579 +#include "plugin-version.h"
44580 +#include "tm.h"
44581 -+#include "toplev.h"
44582 ++#include "function.h"
44583 +#include "basic-block.h"
44584 +#include "gimple.h"
44585 -+//#include "expr.h" where are you...
44586 -+#include "diagnostic.h"
44587 +#include "rtl.h"
44588 +#include "emit-rtl.h"
44589 -+#include "function.h"
44590 ++
44591 ++extern void print_gimple_stmt(FILE *, gimple, int, int);
44592 +
44593 +int plugin_is_GPL_compatible;
44594 +
44595 +static int track_frame_size = -1;
44596 +static const char track_function[] = "pax_track_stack";
44597 ++static const char check_function[] = "pax_check_alloca";
44598 +static bool init_locals;
44599 +
44600 +static struct plugin_info stackleak_plugin_info = {
44601 -+ .version = "201109112100",
44602 ++ .version = "201111150100",
44603 + .help = "track-lowest-sp=nn\ttrack sp in functions whose frame size is at least nn bytes\n"
44604 +// "initialize-locals\t\tforcibly initialize all stack frames\n"
44605 +};
44606 @@ -78235,7 +78055,7 @@ diff -urNp linux-3.0.9/tools/gcc/stackleak_plugin.c linux-3.0.9/tools/gcc/stackl
44607 + .properties_provided = 0,
44608 + .properties_destroyed = 0,
44609 + .todo_flags_start = 0, //TODO_verify_ssa | TODO_verify_flow | TODO_verify_stmts,
44610 -+ .todo_flags_finish = TODO_verify_stmts | TODO_dump_func
44611 ++ .todo_flags_finish = TODO_verify_ssa | TODO_verify_stmts | TODO_dump_func | TODO_update_ssa
44612 + }
44613 +};
44614 +
44615 @@ -78262,63 +78082,94 @@ diff -urNp linux-3.0.9/tools/gcc/stackleak_plugin.c linux-3.0.9/tools/gcc/stackl
44616 + return track_frame_size >= 0;
44617 +}
44618 +
44619 -+static void stackleak_add_instrumentation(gimple_stmt_iterator *gsi, bool before)
44620 ++static void stackleak_check_alloca(gimple_stmt_iterator gsi)
44621 ++{
44622 ++ gimple check_alloca;
44623 ++ tree fndecl, fntype, alloca_size;
44624 ++
44625 ++ // insert call to void pax_check_alloca(unsigned long size)
44626 ++ fntype = build_function_type_list(void_type_node, long_unsigned_type_node, NULL_TREE);
44627 ++ fndecl = build_fn_decl(check_function, fntype);
44628 ++ DECL_ASSEMBLER_NAME(fndecl); // for LTO
44629 ++ alloca_size = gimple_call_arg(gsi_stmt(gsi), 0);
44630 ++ check_alloca = gimple_build_call(fndecl, 1, alloca_size);
44631 ++ gsi_insert_before(&gsi, check_alloca, GSI_CONTINUE_LINKING);
44632 ++}
44633 ++
44634 ++static void stackleak_add_instrumentation(gimple_stmt_iterator gsi)
44635 +{
44636 -+ gimple call;
44637 -+ tree fndecl, type;
44638 ++ gimple track_stack;
44639 ++ tree fndecl, fntype;
44640 +
44641 + // insert call to void pax_track_stack(void)
44642 -+ type = build_function_type_list(void_type_node, NULL_TREE);
44643 -+ fndecl = build_fn_decl(track_function, type);
44644 ++ fntype = build_function_type_list(void_type_node, NULL_TREE);
44645 ++ fndecl = build_fn_decl(track_function, fntype);
44646 + DECL_ASSEMBLER_NAME(fndecl); // for LTO
44647 -+ call = gimple_build_call(fndecl, 0);
44648 -+ if (before)
44649 -+ gsi_insert_before(gsi, call, GSI_CONTINUE_LINKING);
44650 -+ else
44651 -+ gsi_insert_after(gsi, call, GSI_CONTINUE_LINKING);
44652 ++ track_stack = gimple_build_call(fndecl, 0);
44653 ++ gsi_insert_after(&gsi, track_stack, GSI_CONTINUE_LINKING);
44654 ++}
44655 ++
44656 ++#if __GNUC__ == 4 && __GNUC_MINOR__ == 5
44657 ++static bool gimple_call_builtin_p(gimple stmt, enum built_in_function code)
44658 ++{
44659 ++ tree fndecl;
44660 ++
44661 ++ if (!is_gimple_call(stmt))
44662 ++ return false;
44663 ++ fndecl = gimple_call_fndecl(stmt);
44664 ++ if (!fndecl)
44665 ++ return false;
44666 ++ if (DECL_BUILT_IN_CLASS(fndecl) != BUILT_IN_NORMAL)
44667 ++ return false;
44668 ++// print_node(stderr, "pax", fndecl, 4);
44669 ++ return DECL_FUNCTION_CODE(fndecl) == code;
44670 ++}
44671 ++#endif
44672 ++
44673 ++static bool is_alloca(gimple stmt)
44674 ++{
44675 ++ if (gimple_call_builtin_p(stmt, BUILT_IN_ALLOCA))
44676 ++ return true;
44677 ++
44678 ++#if __GNUC__ > 4 || __GNUC_MINOR__ >= 7
44679 ++ if (gimple_call_builtin_p(stmt, BUILT_IN_ALLOCA_WITH_ALIGN))
44680 ++ return true;
44681 ++#endif
44682 ++
44683 ++ return false;
44684 +}
44685 +
44686 +static unsigned int execute_stackleak_tree_instrument(void)
44687 +{
44688 + basic_block bb, entry_bb;
44689 -+ gimple_stmt_iterator gsi;
44690 + bool prologue_instrumented = false;
44691 +
44692 + entry_bb = ENTRY_BLOCK_PTR_FOR_FUNCTION(cfun)->next_bb;
44693 +
44694 + // 1. loop through BBs and GIMPLE statements
44695 + FOR_EACH_BB(bb) {
44696 ++ gimple_stmt_iterator gsi;
44697 + for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) {
44698 + // gimple match: align 8 built-in BUILT_IN_NORMAL:BUILT_IN_ALLOCA attributes <tree_list 0xb7576450>
44699 -+ tree fndecl;
44700 -+ gimple stmt = gsi_stmt(gsi);
44701 -+
44702 -+ if (!is_gimple_call(stmt))
44703 -+ continue;
44704 -+ fndecl = gimple_call_fndecl(stmt);
44705 -+ if (!fndecl)
44706 -+ continue;
44707 -+ if (TREE_CODE(fndecl) != FUNCTION_DECL)
44708 -+ continue;
44709 -+ if (!DECL_BUILT_IN(fndecl))
44710 -+ continue;
44711 -+ if (DECL_BUILT_IN_CLASS(fndecl) != BUILT_IN_NORMAL)
44712 -+ continue;
44713 -+ if (DECL_FUNCTION_CODE(fndecl) != BUILT_IN_ALLOCA)
44714 ++ if (!is_alloca(gsi_stmt(gsi)))
44715 + continue;
44716 +
44717 -+ // 2. insert track call after each __builtin_alloca call
44718 -+ stackleak_add_instrumentation(&gsi, false);
44719 ++ // 2. insert stack overflow check before each __builtin_alloca call
44720 ++ stackleak_check_alloca(gsi);
44721 ++
44722 ++ // 3. insert track call after each __builtin_alloca call
44723 ++ stackleak_add_instrumentation(gsi);
44724 + if (bb == entry_bb)
44725 + prologue_instrumented = true;
44726 -+// print_node(stderr, "pax", fndecl, 4);
44727 + }
44728 + }
44729 +
44730 -+ // 3. insert track call at the beginning
44731 ++ // 4. insert track call at the beginning
44732 + if (!prologue_instrumented) {
44733 -+ gsi = gsi_start_bb(entry_bb);
44734 -+ stackleak_add_instrumentation(&gsi, true);
44735 ++ bb = split_block_after_labels(ENTRY_BLOCK_PTR)->dest;
44736 ++ if (dom_info_available_p(CDI_DOMINATORS))
44737 ++ set_immediate_dominator(CDI_DOMINATORS, bb, ENTRY_BLOCK_PTR);
44738 ++ stackleak_add_instrumentation(gsi_start_bb(bb));
44739 + }
44740 +
44741 + return 0;
44742 @@ -78355,7 +78206,11 @@ diff -urNp linux-3.0.9/tools/gcc/stackleak_plugin.c linux-3.0.9/tools/gcc/stackl
44743 + continue;
44744 +// warning(0, "track_frame_size: %d %ld %d", cfun->calls_alloca, get_frame_size(), track_frame_size);
44745 + // 2. delete call
44746 -+ delete_insn_and_edges(insn);
44747 ++ insn = delete_insn_and_edges(insn);
44748 ++#if __GNUC__ > 4 || __GNUC_MINOR__ >= 7
44749 ++ if (GET_CODE(insn) == NOTE && NOTE_KIND(insn) == NOTE_INSN_CALL_ARG_LOCATION)
44750 ++ insn = delete_insn_and_edges(insn);
44751 ++#endif
44752 + }
44753 +
44754 +// print_simple_rtl(stderr, get_insns());
44755 @@ -78419,9 +78274,9 @@ diff -urNp linux-3.0.9/tools/gcc/stackleak_plugin.c linux-3.0.9/tools/gcc/stackl
44756 +
44757 + return 0;
44758 +}
44759 -diff -urNp linux-3.0.9/tools/perf/util/include/asm/alternative-asm.h linux-3.0.9/tools/perf/util/include/asm/alternative-asm.h
44760 ---- linux-3.0.9/tools/perf/util/include/asm/alternative-asm.h 2011-11-11 13:12:24.000000000 -0500
44761 -+++ linux-3.0.9/tools/perf/util/include/asm/alternative-asm.h 2011-11-15 20:03:00.000000000 -0500
44762 +diff -urNp linux-3.1.1/tools/perf/util/include/asm/alternative-asm.h linux-3.1.1/tools/perf/util/include/asm/alternative-asm.h
44763 +--- linux-3.1.1/tools/perf/util/include/asm/alternative-asm.h 2011-11-11 15:19:27.000000000 -0500
44764 ++++ linux-3.1.1/tools/perf/util/include/asm/alternative-asm.h 2011-11-16 18:39:08.000000000 -0500
44765 @@ -5,4 +5,7 @@
44766
44767 #define altinstruction_entry #
44768 @@ -78430,9 +78285,9 @@ diff -urNp linux-3.0.9/tools/perf/util/include/asm/alternative-asm.h linux-3.0.9
44769 + .endm
44770 +
44771 #endif
44772 -diff -urNp linux-3.0.9/usr/gen_init_cpio.c linux-3.0.9/usr/gen_init_cpio.c
44773 ---- linux-3.0.9/usr/gen_init_cpio.c 2011-11-11 13:12:24.000000000 -0500
44774 -+++ linux-3.0.9/usr/gen_init_cpio.c 2011-11-15 20:03:00.000000000 -0500
44775 +diff -urNp linux-3.1.1/usr/gen_init_cpio.c linux-3.1.1/usr/gen_init_cpio.c
44776 +--- linux-3.1.1/usr/gen_init_cpio.c 2011-11-11 15:19:27.000000000 -0500
44777 ++++ linux-3.1.1/usr/gen_init_cpio.c 2011-11-16 18:39:08.000000000 -0500
44778 @@ -303,7 +303,7 @@ static int cpio_mkfile(const char *name,
44779 int retval;
44780 int rc = -1;
44781 @@ -78455,9 +78310,9 @@ diff -urNp linux-3.0.9/usr/gen_init_cpio.c linux-3.0.9/usr/gen_init_cpio.c
44782 } else
44783 break;
44784 }
44785 -diff -urNp linux-3.0.9/virt/kvm/kvm_main.c linux-3.0.9/virt/kvm/kvm_main.c
44786 ---- linux-3.0.9/virt/kvm/kvm_main.c 2011-11-11 13:12:24.000000000 -0500
44787 -+++ linux-3.0.9/virt/kvm/kvm_main.c 2011-11-15 20:03:00.000000000 -0500
44788 +diff -urNp linux-3.1.1/virt/kvm/kvm_main.c linux-3.1.1/virt/kvm/kvm_main.c
44789 +--- linux-3.1.1/virt/kvm/kvm_main.c 2011-11-11 15:19:27.000000000 -0500
44790 ++++ linux-3.1.1/virt/kvm/kvm_main.c 2011-11-16 18:39:08.000000000 -0500
44791 @@ -73,7 +73,7 @@ LIST_HEAD(vm_list);
44792
44793 static cpumask_var_t cpus_hardware_enabled;
44794 @@ -78467,7 +78322,7 @@ diff -urNp linux-3.0.9/virt/kvm/kvm_main.c linux-3.0.9/virt/kvm/kvm_main.c
44795
44796 struct kmem_cache *kvm_vcpu_cache;
44797 EXPORT_SYMBOL_GPL(kvm_vcpu_cache);
44798 -@@ -2176,7 +2176,7 @@ static void hardware_enable_nolock(void
44799 +@@ -2266,7 +2266,7 @@ static void hardware_enable_nolock(void
44800
44801 if (r) {
44802 cpumask_clear_cpu(cpu, cpus_hardware_enabled);
44803 @@ -78476,7 +78331,7 @@ diff -urNp linux-3.0.9/virt/kvm/kvm_main.c linux-3.0.9/virt/kvm/kvm_main.c
44804 printk(KERN_INFO "kvm: enabling virtualization on "
44805 "CPU%d failed\n", cpu);
44806 }
44807 -@@ -2230,10 +2230,10 @@ static int hardware_enable_all(void)
44808 +@@ -2320,10 +2320,10 @@ static int hardware_enable_all(void)
44809
44810 kvm_usage_count++;
44811 if (kvm_usage_count == 1) {
44812 @@ -78489,7 +78344,7 @@ diff -urNp linux-3.0.9/virt/kvm/kvm_main.c linux-3.0.9/virt/kvm/kvm_main.c
44813 hardware_disable_all_nolock();
44814 r = -EBUSY;
44815 }
44816 -@@ -2498,7 +2498,7 @@ static void kvm_sched_out(struct preempt
44817 +@@ -2588,7 +2588,7 @@ static void kvm_sched_out(struct preempt
44818 kvm_arch_vcpu_put(vcpu);
44819 }
44820
44821 @@ -78498,7 +78353,7 @@ diff -urNp linux-3.0.9/virt/kvm/kvm_main.c linux-3.0.9/virt/kvm/kvm_main.c
44822 struct module *module)
44823 {
44824 int r;
44825 -@@ -2561,7 +2561,7 @@ int kvm_init(void *opaque, unsigned vcpu
44826 +@@ -2651,7 +2651,7 @@ int kvm_init(void *opaque, unsigned vcpu
44827 if (!vcpu_align)
44828 vcpu_align = __alignof__(struct kvm_vcpu);
44829 kvm_vcpu_cache = kmem_cache_create("kvm_vcpu", vcpu_size, vcpu_align,
44830 @@ -78507,7 +78362,7 @@ diff -urNp linux-3.0.9/virt/kvm/kvm_main.c linux-3.0.9/virt/kvm/kvm_main.c
44831 if (!kvm_vcpu_cache) {
44832 r = -ENOMEM;
44833 goto out_free_3;
44834 -@@ -2571,9 +2571,11 @@ int kvm_init(void *opaque, unsigned vcpu
44835 +@@ -2661,9 +2661,11 @@ int kvm_init(void *opaque, unsigned vcpu
44836 if (r)
44837 goto out_free;
44838
44839
44840 diff --git a/3.0.9/4421_grsec-remove-localversion-grsec.patch b/3.1.1/4421_grsec-remove-localversion-grsec.patch
44841 similarity index 100%
44842 rename from 3.0.9/4421_grsec-remove-localversion-grsec.patch
44843 rename to 3.1.1/4421_grsec-remove-localversion-grsec.patch
44844
44845 diff --git a/3.0.9/4422_grsec-mute-warnings.patch b/3.1.1/4422_grsec-mute-warnings.patch
44846 similarity index 100%
44847 rename from 3.0.9/4422_grsec-mute-warnings.patch
44848 rename to 3.1.1/4422_grsec-mute-warnings.patch
44849
44850 diff --git a/3.0.9/4423_grsec-remove-protected-paths.patch b/3.1.1/4423_grsec-remove-protected-paths.patch
44851 similarity index 100%
44852 rename from 3.0.9/4423_grsec-remove-protected-paths.patch
44853 rename to 3.1.1/4423_grsec-remove-protected-paths.patch
44854
44855 diff --git a/3.0.9/4425_grsec-pax-without-grsec.patch b/3.1.1/4425_grsec-pax-without-grsec.patch
44856 similarity index 97%
44857 rename from 3.0.9/4425_grsec-pax-without-grsec.patch
44858 rename to 3.1.1/4425_grsec-pax-without-grsec.patch
44859 index 41be0d0..8304192 100644
44860 --- a/3.0.9/4425_grsec-pax-without-grsec.patch
44861 +++ b/3.1.1/4425_grsec-pax-without-grsec.patch
44862 @@ -20,7 +20,7 @@ The original version of this patch contained no credits/description.
44863 diff -Naur a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
44864 --- a/arch/x86/mm/fault.c 2011-04-17 19:05:03.000000000 -0400
44865 +++ a/arch/x86/mm/fault.c 2011-04-17 19:20:30.000000000 -0400
44866 -@@ -647,10 +647,12 @@
44867 +@@ -651,10 +651,12 @@
44868
44869 #ifdef CONFIG_PAX_KERNEXEC
44870 if (init_mm.start_code <= address && address < init_mm.end_code) {
44871 @@ -36,7 +36,7 @@ diff -Naur a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
44872 diff -Naur a/fs/exec.c b/fs/exec.c
44873 --- a/fs/exec.c 2011-04-17 19:05:03.000000000 -0400
44874 +++ b/fs/exec.c 2011-04-17 19:20:30.000000000 -0400
44875 -@@ -1958,9 +1958,11 @@
44876 +@@ -1999,9 +1999,11 @@
44877 }
44878 up_read(&mm->mmap_sem);
44879 }
44880 @@ -48,7 +48,7 @@ diff -Naur a/fs/exec.c b/fs/exec.c
44881 printk(KERN_ERR "PAX: execution attempt in: %s, %08lx-%08lx %08lx\n", path_fault, start, end, offset);
44882 printk(KERN_ERR "PAX: terminating task: %s(%s):%d, uid/euid: %u/%u, "
44883 "PC: %p, SP: %p\n", path_exec, tsk->comm, task_pid_nr(tsk),
44884 -@@ -1975,10 +1977,12 @@
44885 +@@ -2016,10 +2018,12 @@
44886 #ifdef CONFIG_PAX_REFCOUNT
44887 void pax_report_refcount_overflow(struct pt_regs *regs)
44888 {
44889 @@ -61,7 +61,7 @@ diff -Naur a/fs/exec.c b/fs/exec.c
44890 printk(KERN_ERR "PAX: refcount overflow detected in: %s:%d, uid/euid: %u/%u\n",
44891 current->comm, task_pid_nr(current), current_uid(), current_euid());
44892 print_symbol(KERN_ERR "PAX: refcount overflow occured at: %s\n", instruction_pointer(regs));
44893 -@@ -2038,10 +2042,12 @@
44894 +@@ -2079,10 +2083,12 @@
44895
44896 NORET_TYPE void pax_report_usercopy(const void *ptr, unsigned long len, bool to, const char *type)
44897 {
44898
44899 diff --git a/3.0.9/4430_grsec-kconfig-default-gids.patch b/3.1.1/4430_grsec-kconfig-default-gids.patch
44900 similarity index 100%
44901 rename from 3.0.9/4430_grsec-kconfig-default-gids.patch
44902 rename to 3.1.1/4430_grsec-kconfig-default-gids.patch
44903
44904 diff --git a/3.0.9/4435_grsec-kconfig-gentoo.patch b/3.1.1/4435_grsec-kconfig-gentoo.patch
44905 similarity index 100%
44906 rename from 3.0.9/4435_grsec-kconfig-gentoo.patch
44907 rename to 3.1.1/4435_grsec-kconfig-gentoo.patch
44908
44909 diff --git a/3.0.9/4437-grsec-kconfig-proc-user.patch b/3.1.1/4437-grsec-kconfig-proc-user.patch
44910 similarity index 100%
44911 rename from 3.0.9/4437-grsec-kconfig-proc-user.patch
44912 rename to 3.1.1/4437-grsec-kconfig-proc-user.patch
44913
44914 diff --git a/3.0.9/4440_selinux-avc_audit-log-curr_ip.patch b/3.1.1/4440_selinux-avc_audit-log-curr_ip.patch
44915 similarity index 100%
44916 rename from 3.0.9/4440_selinux-avc_audit-log-curr_ip.patch
44917 rename to 3.1.1/4440_selinux-avc_audit-log-curr_ip.patch
44918
44919 diff --git a/3.0.9/4445_disable-compat_vdso.patch b/3.1.1/4445_disable-compat_vdso.patch
44920 similarity index 100%
44921 rename from 3.0.9/4445_disable-compat_vdso.patch
44922 rename to 3.1.1/4445_disable-compat_vdso.patch